diff --git a/assets/js/facets.js b/assets/js/facets.js index 2b097a870f..52e3fadc93 100644 --- a/assets/js/facets.js +++ b/assets/js/facets.js @@ -1,12 +1,22 @@ import jQuery from 'jquery'; -import _ from 'underscores'; - -const facetTerms = document.querySelectorAll( '.widget_ep-facet .terms' ); +import { epfacets } from 'window'; +// import _ from 'underscores'; +import { debounce } from './utils/debounce'; +// const facetTerms = document.querySelectorAll( '.widget_ep-facet .terms' ); +const templateItem = document.getElementById( 'ep-facet-sample-result' ).innerHTML; +const loadMoreButton = ` + `; +let currentQuery; /** - * Drill down facet choices + * keyup event callback - Drill down facet choices + * + * @param {*} event */ -jQuery( facetTerms ).on( 'keyup', '.facet-search', _.debounce( ( event ) => { +const handleTermsKeyup = event => { + // enter if ( 13 === event.keyCode ) { return; } @@ -24,4 +34,289 @@ jQuery( facetTerms ).on( 'keyup', '.facet-search', _.debounce( ( event ) => { term.classList.add( 'hide' ); } } ); -}, 200 ) ); +}; + +document.addEventListener( 'keyup', event => { + if( event.target.matches( '.facet-search' ) ) { + debounce( handleTermsKeyup, 200 ); + } +} ); + + +/** + * helper function + * + * @param {node} parentEl + */ +const getCheckboxChild = parentEl => { + return parentEl.querySelector( 'input[type=checkbox]' ); +}; + + +/** + * Facet click callback function + * + * @param {node} termEl + */ +const handleFacetCheckStatus = termEl => { + const selectedClass = 'selected'; + + const checkBox = getCheckboxChild( termEl ); + + if( termEl.classList.contains( selectedClass ) ) { + // uncheck this item + termEl.classList.remove( selectedClass ); + checkBox.checked = false; + } else { + termEl.classList.add( selectedClass ); + checkBox.checked = true; + } +}; + +/** + * build facet query + */ +const buildFacetQuery = () => { + const facetQuery = getFacetQuery(); + const esQuery = epfacets.query; + + // apply conditions to filter query + if ( esQuery.post_filter.bool.must ) { + // esQuery.post_filter.bool.must = jQuery.extend( esQuery.post_filter.bool.must, [facetQuery] ); + esQuery.post_filter.bool.must = Object.assign( esQuery.post_filter.bool.must, [facetQuery] ); + } else { + esQuery.post_filter = { + bool: { + must:[ + facetQuery + ] + } + }; + } + + // apply same conditions to aggs query + if( esQuery.aggs.terms.filter.bool.must ){ + // esQuery.aggs.terms.filter.bool.must = jQuery.extend( esQuery.aggs.terms.filter.bool.must, [facetQuery] ); + esQuery.aggs.terms.filter.bool.must = Object.assign( esQuery.aggs.terms.filter.bool.must, [facetQuery] ); + }else{ + esQuery.aggs = { + terms:{ + filter:{ + bool:{ + must:[ + facetQuery + ] + } + } + } + }; + } + + return esQuery; +}; + +/** + * Helper function to check for more posts + * + * @param {*} startIndex + * @param {*} totalResults + * @param {*} size + * @returns {boolean} + */ +const checkMorePosts = ( startIndex, totalResults, size ) => { + return totalResults - size > startIndex ? true : false; +}; + + +/** + * Fact click callback function + * + * @param {*} event + */ +const handleFacetClick = async ( termEl ) => { + + if( termEl ) { + handleFacetCheckStatus( termEl ); + // reset this, for any new clicks, + // else the check below will retain + // the current query + if( currentQuery ) { + currentQuery.from = 0; + } + } + + if( ! templateItem ) { + return; + } + + const newQuery = buildFacetQuery(); + // for deep object comparison: + currentQuery = JSON.stringify( newQuery ) === JSON.stringify( currentQuery ) ? currentQuery : newQuery; + const response = await esSearch( currentQuery ); + const morePosts = checkMorePosts( currentQuery.from, response.hits.total, currentQuery.size ); + + if ( response && ( 0 < response._shards.successful ) ) { + const htmlResults = response.hits.hits.map( element => { + const { + post_title, + post_content, + post_content_filtered, + post_excerpt, + post_date, + permalink, + terms, + post_id + } = element._source; + + const categories = terms.category && terms.category.map( cat => cat.name ).join( ', ' ); + const tags = terms.post_tag && terms.post_tag.map( tag => tag.name ).join( ', ' ); + + const date = new Date( post_date ); + const dateString = `${date.toLocaleDateString( 'default', { + month: 'long', + weekday: 'long', + year: 'numeric', + day: 'numeric' } ) + }`; + + return templateItem.replace( /{{POST_TITLE}}/g, post_title ) + .replace( /{{POST_EXCERPT}}/g, post_excerpt ) + .replace( /{{POST_CONTENT}}/g, post_content ) + .replace( /{{POST_CONTENT_FILTERED}}/g, post_content_filtered ) + .replace( /{{PERMALINK}}/g, permalink ) + .replace( /{{DATE}}/g, dateString ) + .replace( /{{CATEGORIES}}/g, categories ) + .replace( /{{TAGS}}/g, tags ) + .replace( /http:\/\/PERMALINK/g, permalink ) + .replace( /-99999999999/g, post_id ); + } ).join( '' ); + + render( { + htmlResults, + currentQuery, + morePosts + } ); + } +}; + + +/** + * Render function to display ajax results + * + * @param {*} params + */ +const render = ( { htmlResults, currentQuery, morePosts } ) => { + const results = document.querySelector( epfacets.selector ); + + if( 0 == currentQuery.from ) { + results.innerHTML = htmlResults; + + if( morePosts ) { + console.log( 'adding button!' ); + results.innerHTML += loadMoreButton; + + // bump the starting point of the query; + currentQuery.from = currentQuery.from + currentQuery.size; + } + } else { + const loadMoreButton = document.getElementById( 'ep-load-more' ); + loadMoreButton.insertAdjacentHTML( 'beforebegin', htmlResults ); + + if( !morePosts ) { + loadMoreButton.remove(); + currentQuery = null; + } else { + // bump the starting point of the query; + currentQuery.from = currentQuery.from + currentQuery.size; + } + } +}; + +/** + * Ajaxify facets + */ +if( 1 === parseInt( epfacets.ajax_enabled ) && epfacets.selector && 0 < jQuery( epfacets.selector ).length ){ + + document.addEventListener( 'click', ( event ) => { + const termEl = event.target.closest( '.terms .term' ); + if( termEl ) { + event.preventDefault(); + handleFacetClick( termEl ); + } + + if( 'ep-load-more' == event.target.id ) { + console.log( 'load more posts' ); + handleFacetClick(); + } + } ); +} + +/** + * + * @returns {[]} + */ +function getFacetQuery() { + const terms = document.querySelectorAll( '.term.selected' ); + const filter = { + bool:{ + must:[], + should:[], + } + }; + + terms.forEach( ( term ) => { + const slug = term.dataset.termSlug; + const taxonomy = term.dataset.termTaxonomy; + + const termQuery = { terms:{ [`terms.${taxonomy}.slug`]:[slug] }}; + filter.bool.must.push( termQuery ); + filter.bool.should.push( termQuery ); + } ); + + if( 'all' === epfacets.match_type ){ + delete filter.bool.should; + }else { + delete filter.bool.must; + } + + return filter; +} + + +/** + * Build the ajax request + * + * @param query - json string + * @returns AJAX object request + */ +const esSearch = async ( query ) => { + + const fetchConfig = { + body: JSON.stringify( query ), + method: 'POST', + mode: 'cors', + headers: { + 'Content-Type': 'application/json; charset=utf-8', + } + }; + + // do we need some sort of header to allow CORS for _search endpoint? + // if( epfacets.addFacetsHeader ) { + // ajaxConfig.headers = { + // 'EP-Facets': 'something' + // }; + // } + + try { + const response = await window.fetch( epfacets.endpointUrl, fetchConfig ); + if ( !response.ok ) { + throw Error( response.statusText ); + } + + return await response.json(); + } catch( error ) { + // eslint-disable-next-line no-console + console.error( error ); + return error; + } +}; diff --git a/dist/js/admin-script.min.js b/dist/js/admin-script.min.js index e4ab8f28af..5f79eb4e21 100644 --- a/dist/js/admin-script.min.js +++ b/dist/js/admin-script.min.js @@ -1,2 +1,2 @@ -!function(t){var n={};function r(e){if(n[e])return n[e].exports;var o=n[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=n,r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},r.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,n){if(1&n&&(t=r(t)),8&n)return t;if(4&n&&"object"===typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)r.d(e,o,function(n){return t[n]}.bind(null,o));return e},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r.p="",r(r.s=279)}({10:function(t,n,r){var e=r(9),o=r(18),i=r(26);t.exports=e?function(t,n,r){return o.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},11:function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},12:function(t,n,r){var e=r(2),o=r(31).f,i=r(10),u=r(36),c=r(23),f=r(57),a=r(52);t.exports=function(t,n){var r,s,p,l,v,y=t.target,d=t.global,g=t.stat;if(r=d?e:g?e[y]||c(y,{}):(e[y]||{}).prototype)for(s in n){if(l=n[s],p=t.noTargetGet?(v=o(r,s))&&v.value:r[s],!a(d?s:y+(g?".":"#")+s,t.forced)&&void 0!==p){if(typeof l===typeof p)continue;f(l,p)}(t.sham||p&&p.sham)&&i(l,"sham",!0),u(r,s,l,t)}}},13:function(t,n,r){var e=r(8);t.exports=function(t){if(!e(t))throw TypeError(String(t)+" is not an object");return t}},15:function(t,n,r){var e=r(2),o=r(23),i=r(54),u=e["__core-js_shared__"]||o("__core-js_shared__",{});(t.exports=function(t,n){return u[t]||(u[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.2.1",mode:i?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},16:function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},17:function(t,n,r){var e=r(2),o=r(15),i=r(34),u=r(61),c=e.Symbol,f=o("wks");t.exports=function(t){return f[t]||(f[t]=u&&c[t]||(u?c:i)("Symbol."+t))}},18:function(t,n,r){var e=r(9),o=r(32),i=r(13),u=r(27),c=Object.defineProperty;n.f=e?c:function(t,n,r){if(i(t),n=u(n,!0),i(r),o)try{return c(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},19:function(t,n,r){var e=r(30),o=r(16);t.exports=function(t){return e(o(t))}},2:function(t,n,r){(function(n){var r="object",e=function(t){return t&&t.Math==Math&&t};t.exports=e(typeof globalThis==r&&globalThis)||e(typeof window==r&&window)||e(typeof self==r&&self)||e(typeof n==r&&n)||Function("return this")()}).call(this,r(49))},20:function(t,n,r){var e=r(22),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},22:function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},23:function(t,n,r){var e=r(2),o=r(10);t.exports=function(t,n){try{o(e,t,n)}catch(r){e[t]=n}return n}},24:function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},25:function(t,n,r){var e=r(16);t.exports=function(t){return Object(e(t))}},26:function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},27:function(t,n,r){var e=r(8);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},279:function(t,n,r){"use strict";r.r(n);r(85);var e=r(7),o=r.n(e),i=r(6);o()(".notice").on("click",".notice-dismiss",(function(t){var n=t.delegateTarget.getAttribute("data-ep-notice");n&&o.a.ajax({method:"post",data:{nonce:i.epAdmin.nonce,action:"ep_notice_dismiss",notice:n},url:i.ajaxurl})})),o()(".weighting-settings input[type=range]").change((function(){var t=o()(this);t.prev("label").find(".weighting-value").text(t.val())})),o()(".weighting-settings .searchable input[type=checkbox]").change((function(){var t=o()(this).parent().next(".weighting").find("input[type=range]"),n=t.prev("label").find(".weighting-value");t.prop("disabled",!this.checked);var r=this.checked?t.val():"0";n.text(r)}))},28:function(t,n){t.exports={}},29:function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},30:function(t,n,r){var e=r(4),o=r(24),i="".split;t.exports=e((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},31:function(t,n,r){var e=r(9),o=r(45),i=r(26),u=r(19),c=r(27),f=r(11),a=r(32),s=Object.getOwnPropertyDescriptor;n.f=e?s:function(t,n){if(t=u(t),n=c(n,!0),a)try{return s(t,n)}catch(t){}if(f(t,n))return i(!o.f.call(t,n),t[n])}},32:function(t,n,r){var e=r(9),o=r(4),i=r(38);t.exports=!e&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},33:function(t,n,r){var e=r(15);t.exports=e("native-function-to-string",Function.toString)},34:function(t,n){var r=0,e=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++r+e).toString(36)}},35:function(t,n,r){var e=r(11),o=r(19),i=r(46).indexOf,u=r(28);t.exports=function(t,n){var r,c=o(t),f=0,a=[];for(r in c)!e(u,r)&&e(c,r)&&a.push(r);for(;n.length>f;)e(c,r=n[f++])&&(~i(a,r)||a.push(r));return a}},36:function(t,n,r){var e=r(2),o=r(15),i=r(10),u=r(11),c=r(23),f=r(33),a=r(55),s=a.get,p=a.enforce,l=String(f).split("toString");o("inspectSource",(function(t){return f.call(t)})),(t.exports=function(t,n,r,o){var f=!!o&&!!o.unsafe,a=!!o&&!!o.enumerable,s=!!o&&!!o.noTargetGet;"function"==typeof r&&("string"!=typeof n||u(r,"name")||i(r,"name",n),p(r).source=l.join("string"==typeof n?n:"")),t!==e?(f?!s&&t[n]&&(a=!0):delete t[n],a?t[n]=r:i(t,n,r)):a?t[n]=r:c(n,r)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||f.call(this)}))},37:function(t,n,r){var e=r(59),o=r(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,n){return arguments.length<2?i(e[t])||i(o[t]):e[t]&&e[t][n]||o[t]&&o[t][n]}},38:function(t,n,r){var e=r(2),o=r(8),i=e.document,u=o(i)&&o(i.createElement);t.exports=function(t){return u?i.createElement(t):{}}},39:function(t,n,r){var e=r(15),o=r(34),i=e("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},4:function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},40:function(t,n,r){var e=r(22),o=Math.max,i=Math.min;t.exports=function(t,n){var r=e(t);return r<0?o(r+n,0):i(r,n)}},41:function(t,n,r){var e=r(8),o=r(42),i=r(17)("species");t.exports=function(t,n){var r;return o(t)&&("function"!=typeof(r=t.constructor)||r!==Array&&!o(r.prototype)?e(r)&&null===(r=r[i])&&(r=void 0):r=void 0),new(void 0===r?Array:r)(0===n?0:n)}},42:function(t,n,r){var e=r(24);t.exports=Array.isArray||function(t){return"Array"==e(t)}},44:function(t,n,r){var e=r(60),o=r(30),i=r(25),u=r(20),c=r(41),f=[].push,a=function(t){var n=1==t,r=2==t,a=3==t,s=4==t,p=6==t,l=5==t||p;return function(v,y,d,g){for(var h,x,b=i(v),m=o(b),w=e(y,d,3),O=u(m.length),j=0,S=g||c,P=n?S(v,O):r?S(v,0):void 0;O>j;j++)if((l||j in m)&&(x=w(h=m[j],j,b),t))if(n)P[j]=x;else if(x)switch(t){case 3:return!0;case 5:return h;case 6:return j;case 2:f.call(P,h)}else if(s)return!1;return p?-1:a||s?s:P}};t.exports={forEach:a(0),map:a(1),filter:a(2),some:a(3),every:a(4),find:a(5),findIndex:a(6)}},45:function(t,n,r){"use strict";var e={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!e.call({1:2},1);n.f=i?function(t){var n=o(this,t);return!!n&&n.enumerable}:e},46:function(t,n,r){var e=r(19),o=r(20),i=r(40),u=function(t){return function(n,r,u){var c,f=e(n),a=o(f.length),s=i(u,a);if(t&&r!=r){for(;a>s;)if((c=f[s++])!=c)return!0}else for(;a>s;s++)if((t||s in f)&&f[s]===r)return t||s||0;return!t&&-1}};t.exports={includes:u(!0),indexOf:u(!1)}},47:function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},49:function(t,n){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"===typeof window&&(r=window)}t.exports=r},50:function(t,n,r){var e=r(35),o=r(29).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return e(t,o)}},51:function(t,n){n.f=Object.getOwnPropertySymbols},52:function(t,n,r){var e=r(4),o=/#|\.prototype\./,i=function(t,n){var r=c[u(t)];return r==a||r!=f&&("function"==typeof n?e(n):!!n)},u=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},f=i.NATIVE="N",a=i.POLYFILL="P";t.exports=i},54:function(t,n){t.exports=!1},55:function(t,n,r){var e,o,i,u=r(56),c=r(2),f=r(8),a=r(10),s=r(11),p=r(39),l=r(28),v=c.WeakMap;if(u){var y=new v,d=y.get,g=y.has,h=y.set;e=function(t,n){return h.call(y,t,n),n},o=function(t){return d.call(y,t)||{}},i=function(t){return g.call(y,t)}}else{var x=p("state");l[x]=!0,e=function(t,n){return a(t,x,n),n},o=function(t){return s(t,x)?t[x]:{}},i=function(t){return s(t,x)}}t.exports={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!f(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}}},56:function(t,n,r){var e=r(2),o=r(33),i=e.WeakMap;t.exports="function"===typeof i&&/native code/.test(o.call(i))},57:function(t,n,r){var e=r(11),o=r(58),i=r(31),u=r(18);t.exports=function(t,n){for(var r=o(n),c=u.f,f=i.f,a=0;adocument.F=Object<\/script>"),t.close(),p=t.F;r--;)delete p.prototype[i[r]];return p()};t.exports=Object.create||function(t,n){var r;return null!==t?(s.prototype=e(t),r=new s,s.prototype=null,r[a]=t):r=p(),void 0===n?r:o(r,n)},u[a]=!0},73:function(t,n,r){var e=r(9),o=r(18),i=r(13),u=r(62);t.exports=e?Object.defineProperties:function(t,n){i(t);for(var r,e=u(n),c=e.length,f=0;c>f;)o.f(t,r=e[f++],n[r]);return t}},74:function(t,n,r){var e=r(37);t.exports=e("document","documentElement")},8:function(t,n){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},85:function(t,n,r){"use strict";var e=r(12),o=r(44).find,i=r(71),u=!0;"find"in[]&&Array(1).find((function(){u=!1})),e({target:"Array",proto:!0,forced:u},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("find")},9:function(t,n,r){var e=r(4);t.exports=!e((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))}}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtZ2xvYmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9hZG1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdG8tc3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWZ1bmN0aW9uLmpzIiwid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3duLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BhdGguanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2luZG93XCIiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2JpbmQtY29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwialF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9odG1sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyJdLCJuYW1lcyI6WyJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsIkRFU0NSSVBUT1JTIiwiZGVmaW5lUHJvcGVydHlNb2R1bGUiLCJjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IiLCJmIiwiaXQiLCJnbG9iYWwiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJoaWRlIiwicmVkZWZpbmUiLCJzZXRHbG9iYWwiLCJjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzIiwiaXNGb3JjZWQiLCJvcHRpb25zIiwic291cmNlIiwidGFyZ2V0IiwidGFyZ2V0UHJvcGVydHkiLCJzb3VyY2VQcm9wZXJ0eSIsImRlc2NyaXB0b3IiLCJUQVJHRVQiLCJHTE9CQUwiLCJTVEFUSUMiLCJzdGF0Iiwibm9UYXJnZXRHZXQiLCJmb3JjZWQiLCJ1bmRlZmluZWQiLCJzaGFtIiwiaXNPYmplY3QiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJJU19QVVJFIiwic3RvcmUiLCJwdXNoIiwidmVyc2lvbiIsImNvcHlyaWdodCIsInNoYXJlZCIsInVpZCIsIk5BVElWRV9TWU1CT0wiLCJJRThfRE9NX0RFRklORSIsImFuT2JqZWN0IiwidG9QcmltaXRpdmUiLCJuYXRpdmVEZWZpbmVQcm9wZXJ0eSIsIk8iLCJQIiwiQXR0cmlidXRlcyIsImVycm9yIiwiSW5kZXhlZE9iamVjdCIsInJlcXVpcmVPYmplY3RDb2VyY2libGUiLCJjaGVjayIsIk1hdGgiLCJnbG9iYWxUaGlzIiwid2luZG93Iiwic2VsZiIsIkZ1bmN0aW9uIiwidG9JbnRlZ2VyIiwibWluIiwiYXJndW1lbnQiLCJjZWlsIiwiZmxvb3IiLCJpc05hTiIsInRvU3RyaW5nIiwic2xpY2UiLCJiaXRtYXAiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImlucHV0IiwiUFJFRkVSUkVEX1NUUklORyIsImZuIiwidmFsIiwidmFsdWVPZiIsImpRdWVyeSIsIm9uIiwiZXZlbnQiLCJub3RpY2UiLCJkZWxlZ2F0ZVRhcmdldCIsImdldEF0dHJpYnV0ZSIsImFqYXgiLCJtZXRob2QiLCJkYXRhIiwibm9uY2UiLCJlcEFkbWluIiwiYWN0aW9uIiwidXJsIiwiYWpheHVybCIsImNoYW5nZSIsImVsIiwidGhpcyIsInByZXYiLCJmaW5kIiwidGV4dCIsIiRyYW5nZUlucHV0IiwicGFyZW50IiwibmV4dCIsIiR3ZWlnaHREaXNwbGF5IiwicHJvcCIsImNoZWNrZWQiLCJuZXdXZWlnaHREaXNwbGF5IiwiZmFpbHMiLCJjbGFzc29mIiwic3BsaXQiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlIiwidG9JbmRleGVkT2JqZWN0IiwiaGFzIiwibmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiY3JlYXRlRWxlbWVudCIsImEiLCJpZCIsInBvc3RmaXgiLCJyYW5kb20iLCJpbmRleE9mIiwiaGlkZGVuS2V5cyIsIm5hbWVzIiwicmVzdWx0IiwibGVuZ3RoIiwibmF0aXZlRnVuY3Rpb25Ub1N0cmluZyIsIkludGVybmFsU3RhdGVNb2R1bGUiLCJnZXRJbnRlcm5hbFN0YXRlIiwiZW5mb3JjZUludGVybmFsU3RhdGUiLCJlbmZvcmNlIiwiVEVNUExBVEUiLCJ1bnNhZmUiLCJzaW1wbGUiLCJqb2luIiwicGF0aCIsImFGdW5jdGlvbiIsInZhcmlhYmxlIiwibmFtZXNwYWNlIiwiYXJndW1lbnRzIiwiZG9jdW1lbnQiLCJFWElTVFMiLCJrZXlzIiwiZXhlYyIsIm1heCIsImluZGV4IiwiaW50ZWdlciIsImlzQXJyYXkiLCJTUEVDSUVTIiwid2VsbEtub3duU3ltYm9sIiwib3JpZ2luYWxBcnJheSIsIkMiLCJjb25zdHJ1Y3RvciIsIkFycmF5IiwiYXJnIiwidG9PYmplY3QiLCJ0b0xlbmd0aCIsImFycmF5U3BlY2llc0NyZWF0ZSIsImNyZWF0ZU1ldGhvZCIsIlRZUEUiLCJJU19NQVAiLCJJU19GSUxURVIiLCJJU19TT01FIiwiSVNfRVZFUlkiLCJJU19GSU5EX0lOREVYIiwiTk9fSE9MRVMiLCIkdGhpcyIsImNhbGxiYWNrZm4iLCJ0aGF0Iiwic3BlY2lmaWNDcmVhdGUiLCJib3VuZEZ1bmN0aW9uIiwiZm9yRWFjaCIsIm1hcCIsImZpbHRlciIsInNvbWUiLCJldmVyeSIsImZpbmRJbmRleCIsIm5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTkFTSE9STl9CVUciLCIxIiwiViIsInRvQWJzb2x1dGVJbmRleCIsIklTX0lOQ0xVREVTIiwiZnJvbUluZGV4IiwiaW5jbHVkZXMiLCJnIiwiZSIsImludGVybmFsT2JqZWN0S2V5cyIsImNvbmNhdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJyZXBsYWNlbWVudCIsImZlYXR1cmUiLCJkZXRlY3Rpb24iLCJub3JtYWxpemUiLCJQT0xZRklMTCIsIk5BVElWRSIsInN0cmluZyIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsInNldCIsIk5BVElWRV9XRUFLX01BUCIsIm9iamVjdEhhcyIsInNoYXJlZEtleSIsIldlYWtNYXAiLCJ3bWdldCIsIndtaGFzIiwid21zZXQiLCJtZXRhZGF0YSIsIlNUQVRFIiwiZ2V0dGVyRm9yIiwic3RhdGUiLCJ0eXBlIiwidGVzdCIsIm93bktleXMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUiLCJnZXRCdWlsdEluIiwiZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSIsImdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSIsImIiLCJhcHBseSIsImVudW1CdWdLZXlzIiwiVU5TQ09QQUJMRVMiLCJBcnJheVByb3RvdHlwZSIsImRlZmluZVByb3BlcnRpZXMiLCJodG1sIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50IiwiSUVfUFJPVE8iLCJFbXB0eSIsImNyZWF0ZURpY3QiLCJpZnJhbWVEb2N1bWVudCIsImlmcmFtZSIsInN0eWxlIiwiZGlzcGxheSIsImFwcGVuZENoaWxkIiwic3JjIiwiY29udGVudFdpbmRvdyIsIm9wZW4iLCJ3cml0ZSIsImx0IiwiY2xvc2UiLCJGIiwiUHJvcGVydGllcyIsIm9iamVjdEtleXMiLCIkIiwiJGZpbmQiLCJhZGRUb1Vuc2NvcGFibGVzIiwiU0tJUFNfSE9MRVMiLCJwcm90byJdLCJtYXBwaW5ncyI6ImFBQ0UsSUFBSUEsRUFBbUIsR0FHdkIsU0FBU0MsRUFBb0JDLEdBRzVCLEdBQUdGLEVBQWlCRSxHQUNuQixPQUFPRixFQUFpQkUsR0FBVUMsUUFHbkMsSUFBSUMsRUFBU0osRUFBaUJFLEdBQVksQ0FDekNHLEVBQUdILEVBQ0hJLEdBQUcsRUFDSEgsUUFBUyxJQVVWLE9BTkFJLEVBQVFMLEdBQVVNLEtBQUtKLEVBQU9ELFFBQVNDLEVBQVFBLEVBQU9ELFFBQVNGLEdBRy9ERyxFQUFPRSxHQUFJLEVBR0pGLEVBQU9ELFFBS2ZGLEVBQW9CUSxFQUFJRixFQUd4Qk4sRUFBb0JTLEVBQUlWLEVBR3hCQyxFQUFvQlUsRUFBSSxTQUFTUixFQUFTUyxFQUFNQyxHQUMzQ1osRUFBb0JhLEVBQUVYLEVBQVNTLElBQ2xDRyxPQUFPQyxlQUFlYixFQUFTUyxFQUFNLENBQUVLLFlBQVks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QUk5RixNQUFNLEdBQU8sTUFBRSxXQUFjOEYsR0FBYyxLQUkzREgsRUFBRSxDQUFFMU4sT0FBUSxRQUFTOE4sT0FBTyxFQUFNck4sT0FBUW9OLEdBQWUsQ0FDdkRwSixLQUFNLFNBQWNvRSxHQUNsQixPQUFPOEUsRUFBTXBKLEtBQU1zRSxFQUFZNUIsVUFBVWQsT0FBUyxFQUFJYyxVQUFVLFFBQUt2RyxNQUt6RWtOLEVBZlcsUyxrQkNMWCxJQUFJMUksRUFBUSxFQUFRLEdBR3BCakksRUFBT0QsU0FBV2tJLEdBQU0sV0FDdEIsT0FBK0UsR0FBeEV0SCxPQUFPQyxlQUFlLEdBQUksSUFBSyxDQUFFRSxJQUFLLFdBQWMsT0FBTyxLQUFRNEgiLCJmaWxlIjoianMvYWRtaW4tc2NyaXB0Lm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAyNzkpO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLm5vVGFyZ2V0R2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxbVEFSR0VUXSB8fCBzZXRHbG9iYWwoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gKGdsb2JhbFtUQVJHRVRdIHx8IHt9KS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5ub1RhcmdldEdldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGhpZGUoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIC8vIGV4dGVuZCBnbG9iYWxcbiAgICByZWRlZmluZSh0YXJnZXQsIGtleSwgc291cmNlUHJvcGVydHksIG9wdGlvbnMpO1xuICB9XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkge1xuICAgIHRocm93IFR5cGVFcnJvcihTdHJpbmcoaXQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgc2V0R2xvYmFsKFNIQVJFRCwge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMi4xJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iLCIvLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgc3RvcmUgPSBzaGFyZWQoJ3drcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIFN5bWJvbFtuYW1lXVxuICAgIHx8IChOQVRJVkVfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcblxudmFyIG5hdGl2ZURlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwiLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcbiIsInZhciBPID0gJ29iamVjdCc7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSBPICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gTyAmJiB3aW5kb3cpIHx8XG4gIGNoZWNrKHR5cGVvZiBzZWxmID09IE8gJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSBPICYmIGdsb2JhbCkgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9sZW5ndGhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBhcmd1bWVudCA+IDAgPyBtaW4odG9JbnRlZ2VyKGFyZ3VtZW50KSwgMHgxRkZGRkZGRkZGRkZGRikgOiAwOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwidmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgVG9JbnRlZ2VyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvaW50ZWdlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzTmFOKGFyZ3VtZW50ID0gK2FyZ3VtZW50KSA/IDAgOiAoYXJndW1lbnQgPiAwID8gZmxvb3IgOiBjZWlsKShhcmd1bWVudCk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGhpZGUoZ2xvYmFsLCBrZXksIHZhbHVlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCJ2YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9wcmltaXRpdmVcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIFBSRUZFUlJFRF9TVFJJTkcpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChQUkVGRVJSRURfU1RSSU5HICYmIHR5cGVvZiAoZm4gPSBpbnB1dC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGlucHV0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFQUkVGRVJSRURfU1RSSU5HICYmIHR5cGVvZiAoZm4gPSBpbnB1dC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwiaW1wb3J0IGpRdWVyeSBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHsgZXBBZG1pbiwgYWpheHVybCB9IGZyb20gJ3dpbmRvdyc7XG5cbmpRdWVyeSggJy5ub3RpY2UnICkub24oICdjbGljaycsICcubm90aWNlLWRpc21pc3MnLCAoIGV2ZW50ICkgPT4ge1xuXHRjb25zdCBub3RpY2UgPSBldmVudC5kZWxlZ2F0ZVRhcmdldC5nZXRBdHRyaWJ1dGUoICdkYXRhLWVwLW5vdGljZScgKTtcblxuXHRpZiAoICEgbm90aWNlICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGpRdWVyeS5hamF4KCB7XG5cdFx0bWV0aG9kOiAncG9zdCcsXG5cdFx0ZGF0YToge1xuXHRcdFx0bm9uY2U6IGVwQWRtaW4ubm9uY2UsXG5cdFx0XHRhY3Rpb246ICdlcF9ub3RpY2VfZGlzbWlzcycsXG5cdFx0XHRub3RpY2U6IG5vdGljZVxuXHRcdH0sXG5cdFx0dXJsOiBhamF4dXJsXG5cdH0gKTtcbn0gKTtcblxualF1ZXJ5KCAnLndlaWdodGluZy1zZXR0aW5ncyBpbnB1dFt0eXBlPXJhbmdlXScgKS5jaGFuZ2UoIGZ1bmN0aW9uKCkge1xuXHRjb25zdCBlbCA9IGpRdWVyeSggdGhpcyApO1xuXG5cdGVsLnByZXYoICdsYWJlbCcgKS5maW5kKCAnLndlaWdodGluZy12YWx1ZScgKS50ZXh0KCBlbC52YWwoKSApO1xufSApO1xuXG5qUXVlcnkoICcud2VpZ2h0aW5nLXNldHRpbmdzIC5zZWFyY2hhYmxlIGlucHV0W3R5cGU9Y2hlY2tib3hdJyApLmNoYW5nZSggZnVuY3Rpb24oKSB7XG5cdGNvbnN0ICRjaGVja2JveCA9IGpRdWVyeSggdGhpcyApO1xuXHRjb25zdCAkcmFuZ2VJbnB1dCA9ICRjaGVja2JveC5wYXJlbnQoKS5uZXh0KCAnLndlaWdodGluZycgKS5maW5kKCAnaW5wdXRbdHlwZT1yYW5nZV0nICk7XG5cdGNvbnN0ICR3ZWlnaHREaXNwbGF5ID0gJHJhbmdlSW5wdXQucHJldiggJ2xhYmVsJyApLmZpbmQoICcud2VpZ2h0aW5nLXZhbHVlJyApO1xuXG5cdC8vIHRvZ2dsZSByYW5nZSBpbnB1dFxuXHQkcmFuZ2VJbnB1dC5wcm9wKCAnZGlzYWJsZWQnLCAhIHRoaXMuY2hlY2tlZCApO1xuXG5cdC8vIGdldCBuZXcgd2VpZ2h0IGRpc3BsYXkgdmFsdWUsIGFuZCBzZXQgaXRcblx0Y29uc3QgbmV3V2VpZ2h0RGlzcGxheSA9ICF0aGlzLmNoZWNrZWQgPyAnMCcgOiAkcmFuZ2VJbnB1dC52YWwoKTtcblx0JHdlaWdodERpc3BsYXkudGV4dCggbmV3V2VpZ2h0RGlzcGxheSApO1xufSApO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsIi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdjb25zdHJ1Y3RvcicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ3ZhbHVlT2YnXG5dO1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgc3BsaXQgPSAnJy5zcGxpdDtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgcmV0dXJuICFPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PSAnU3RyaW5nJyA/IHNwbGl0LmNhbGwoaXQsICcnKSA6IE9iamVjdChpdCk7XG59IDogT2JqZWN0O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxudmFyIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLmNhbGwoTywgUCksIE9bUF0pO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNoYXJlZCgnbmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZycsIEZ1bmN0aW9uLnRvU3RyaW5nKTtcbiIsInZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgU3RyaW5nKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArICgrK2lkICsgcG9zdGZpeCkudG9TdHJpbmcoMzYpO1xufTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSAhaGFzKGhpZGRlbktleXMsIGtleSkgJiYgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5pbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgVEVNUExBVEUgPSBTdHJpbmcobmF0aXZlRnVuY3Rpb25Ub1N0cmluZykuc3BsaXQoJ3RvU3RyaW5nJyk7XG5cbnNoYXJlZCgnaW5zcGVjdFNvdXJjZScsIGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gbmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKGl0KTtcbn0pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgdW5zYWZlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy51bnNhZmUgOiBmYWxzZTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMuZW51bWVyYWJsZSA6IGZhbHNlO1xuICB2YXIgbm9UYXJnZXRHZXQgPSBvcHRpb25zID8gISFvcHRpb25zLm5vVGFyZ2V0R2V0IDogZmFsc2U7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmICh0eXBlb2Yga2V5ID09ICdzdHJpbmcnICYmICFoYXModmFsdWUsICduYW1lJykpIGhpZGUodmFsdWUsICduYW1lJywga2V5KTtcbiAgICBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSkuc291cmNlID0gVEVNUExBVEUuam9pbih0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8ga2V5IDogJycpO1xuICB9XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIHNldEdsb2JhbChrZXksIHZhbHVlKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAoIXVuc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gIH0gZWxzZSBpZiAoIW5vVGFyZ2V0R2V0ICYmIE9ba2V5XSkge1xuICAgIHNpbXBsZSA9IHRydWU7XG4gIH1cbiAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gIGVsc2UgaGlkZShPLCBrZXksIHZhbHVlKTtcbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKHRoaXMpO1xufSk7XG4iLCJ2YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKHZhcmlhYmxlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFyaWFibGUgPT0gJ2Z1bmN0aW9uJyA/IHZhcmlhYmxlIDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKHBhdGhbbmFtZXNwYWNlXSkgfHwgYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKVxuICAgIDogcGF0aFtuYW1lc3BhY2VdICYmIHBhdGhbbmFtZXNwYWNlXVttZXRob2RdIHx8IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihsZW5ndGgsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxuLy8gYEFycmF5U3BlY2llc0NyZWF0ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheXNwZWNpZXNjcmVhdGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsQXJyYXksIGxlbmd0aCkge1xuICB2YXIgQztcbiAgaWYgKGlzQXJyYXkob3JpZ2luYWxBcnJheSkpIHtcbiAgICBDID0gb3JpZ2luYWxBcnJheS5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgZWxzZSBpZiAoaXNPYmplY3QoQykpIHtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYgKEMgPT09IG51bGwpIEMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IHJldHVybiBuZXcgKEMgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQykobGVuZ3RoID09PSAwID8gMCA6IGxlbmd0aCk7XG59O1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxuLy8gYElzQXJyYXlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNhcnJheVxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBjbGFzc29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG4iLCJ2YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9iaW5kLWNvbnRleHQnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5cbnZhciBwdXNoID0gW10ucHVzaDtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGZvckVhY2gsIG1hcCwgZmlsdGVyLCBzb21lLCBldmVyeSwgZmluZCwgZmluZEluZGV4IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVFlQRSkge1xuICB2YXIgSVNfTUFQID0gVFlQRSA9PSAxO1xuICB2YXIgSVNfRklMVEVSID0gVFlQRSA9PSAyO1xuICB2YXIgSVNfU09NRSA9IFRZUEUgPT0gMztcbiAgdmFyIElTX0VWRVJZID0gVFlQRSA9PSA0O1xuICB2YXIgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNjtcbiAgdmFyIE5PX0hPTEVTID0gVFlQRSA9PSA1IHx8IElTX0ZJTkRfSU5ERVg7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGNhbGxiYWNrZm4sIHRoYXQsIHNwZWNpZmljQ3JlYXRlKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBJbmRleGVkT2JqZWN0KE8pO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCB0aGF0LCAzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoc2VsZi5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGNyZWF0ZSA9IHNwZWNpZmljQ3JlYXRlIHx8IGFycmF5U3BlY2llc0NyZWF0ZTtcbiAgICB2YXIgdGFyZ2V0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsdWUsIHJlc3VsdDtcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKE5PX0hPTEVTIHx8IGluZGV4IGluIHNlbGYpIHtcbiAgICAgIHZhbHVlID0gc2VsZltpbmRleF07XG4gICAgICByZXN1bHQgPSBib3VuZEZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSB0YXJnZXRbaW5kZXhdID0gcmVzdWx0OyAvLyBtYXBcbiAgICAgICAgZWxzZSBpZiAocmVzdWx0KSBzd2l0Y2ggKFRZUEUpIHtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiB0cnVlOyAgICAgICAgICAgICAgLy8gc29tZVxuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHZhbHVlOyAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgIC8vIGZpbmRJbmRleFxuICAgICAgICAgIGNhc2UgMjogcHVzaC5jYWxsKHRhcmdldCwgdmFsdWUpOyAvLyBmaWx0ZXJcbiAgICAgICAgfSBlbHNlIGlmIChJU19FVkVSWSkgcmV0dXJuIGZhbHNlOyAgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHRhcmdldDtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmZvckVhY2hgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZm9yZWFjaFxuICBmb3JFYWNoOiBjcmVhdGVNZXRob2QoMCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUubWFwYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLm1hcFxuICBtYXA6IGNyZWF0ZU1ldGhvZCgxKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maWx0ZXJgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmlsdGVyXG4gIGZpbHRlcjogY3JlYXRlTWV0aG9kKDIpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLnNvbWVgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc29tZVxuICBzb21lOiBjcmVhdGVNZXRob2QoMyksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZXZlcnlgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZXZlcnlcbiAgZXZlcnk6IGNyZWF0ZU1ldGhvZCg0KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRcbiAgZmluZDogY3JlYXRlTWV0aG9kKDUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhcbiAgZmluZEluZGV4OiBjcmVhdGVNZXRob2QoNilcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgbmF0aXZlUHJvcGVydHlJc0VudW1lcmFibGUgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBOYXNob3JuIH4gSkRLOCBidWdcbnZhciBOQVNIT1JOX0JVRyA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiAhbmF0aXZlUHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUucHJvcGVydHlpc2VudW1lcmFibGVcbmV4cG9ydHMuZiA9IE5BU0hPUk5fQlVHID8gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBWKTtcbiAgcmV0dXJuICEhZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGU7XG59IDogbmF0aXZlUHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCJ2YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBpbmRleE9mLCBpbmNsdWRlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgIGlmICgoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykgJiYgT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKHRydWUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuICBpbmRleE9mOiBjcmVhdGVNZXRob2QoZmFsc2UpXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciBnO1xuXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxuZyA9IChmdW5jdGlvbigpIHtcblx0cmV0dXJuIHRoaXM7XG59KSgpO1xuXG50cnkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcblx0ZyA9IGcgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcbiIsInZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG52YXIgcmVwbGFjZW1lbnQgPSAvI3xcXC5wcm90b3R5cGVcXC4vO1xuXG52YXIgaXNGb3JjZWQgPSBmdW5jdGlvbiAoZmVhdHVyZSwgZGV0ZWN0aW9uKSB7XG4gIHZhciB2YWx1ZSA9IGRhdGFbbm9ybWFsaXplKGZlYXR1cmUpXTtcbiAgcmV0dXJuIHZhbHVlID09IFBPTFlGSUxMID8gdHJ1ZVxuICAgIDogdmFsdWUgPT0gTkFUSVZFID8gZmFsc2VcbiAgICA6IHR5cGVvZiBkZXRlY3Rpb24gPT0gJ2Z1bmN0aW9uJyA/IGZhaWxzKGRldGVjdGlvbilcbiAgICA6ICEhZGV0ZWN0aW9uO1xufTtcblxudmFyIG5vcm1hbGl6ZSA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVwbGFjZW1lbnQsICcuJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBkYXRhID0gaXNGb3JjZWQuZGF0YSA9IHt9O1xudmFyIE5BVElWRSA9IGlzRm9yY2VkLk5BVElWRSA9ICdOJztcbnZhciBQT0xZRklMTCA9IGlzRm9yY2VkLlBPTFlGSUxMID0gJ1AnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRm9yY2VkO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcbiIsInZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXdlYWstbWFwJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xudmFyIG9iamVjdEhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVApIHtcbiAgdmFyIHN0b3JlID0gbmV3IFdlYWtNYXAoKTtcbiAgdmFyIHdtZ2V0ID0gc3RvcmUuZ2V0O1xuICB2YXIgd21oYXMgPSBzdG9yZS5oYXM7XG4gIHZhciB3bXNldCA9IHN0b3JlLnNldDtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIHdtc2V0LmNhbGwoc3RvcmUsIGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21nZXQuY2FsbChzdG9yZSwgaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21oYXMuY2FsbChzdG9yZSwgaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBoaWRlKGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIG9iamVjdEhhcyhpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBuYXRpdmVGdW5jdGlvblRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXRvLXN0cmluZycpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwoV2Vha01hcCkpO1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG4gIHZhciBrZXlzID0gb3duS2V5cyhzb3VyY2UpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmICghaGFzKHRhcmdldCwga2V5KSkgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICB9XG59O1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdzsiLCJ2YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtZnVuY3Rpb24nKTtcblxuLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0KTtcbiAgICB9O1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgcmV0dXJuICFTdHJpbmcoU3ltYm9sKCkpO1xufSk7XG4iLCJ2YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG4vLyBgT2JqZWN0LmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmtleXNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0galF1ZXJ5OyIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xuXG52YXIgVU5TQ09QQUJMRVMgPSB3ZWxsS25vd25TeW1ib2woJ3Vuc2NvcGFibGVzJyk7XG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbi8vIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmlmIChBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU10gPT0gdW5kZWZpbmVkKSB7XG4gIGhpZGUoQXJyYXlQcm90b3R5cGUsIFVOU0NPUEFCTEVTLCBjcmVhdGUobnVsbCkpO1xufVxuXG4vLyBhZGQgYSBrZXkgdG8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b3R5cGVbVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBkZWZpbmVQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgZG9jdW1lbnRDcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gIHZhciBsZW5ndGggPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIHNjcmlwdCA9ICdzY3JpcHQnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBqcyA9ICdqYXZhJyArIHNjcmlwdCArICc6JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgaHRtbC5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gU3RyaW5nKGpzKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArIHNjcmlwdCArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy8nICsgc2NyaXB0ICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGxlbmd0aC0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2xlbmd0aF1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxuLy8gYE9iamVjdC5jcmVhdGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRlZmluZVByb3BlcnRpZXMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cbmhpZGRlbktleXNbSUVfUFJPVE9dID0gdHJ1ZTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaW5kZXgrK10sIFByb3BlcnRpZXNba2V5XSk7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ2RvY3VtZW50JywgJ2RvY3VtZW50RWxlbWVudCcpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maW5kO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbnZhciBGSU5EID0gJ2ZpbmQnO1xudmFyIFNLSVBTX0hPTEVTID0gdHJ1ZTtcblxuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChGSU5EIGluIFtdKSBBcnJheSgxKVtGSU5EXShmdW5jdGlvbiAoKSB7IFNLSVBTX0hPTEVTID0gZmFsc2U7IH0pO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFNLSVBTX0hPTEVTIH0sIHtcbiAgZmluZDogZnVuY3Rpb24gZmluZChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcyhGSU5EKTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +!function(t){var n={};function r(e){if(n[e])return n[e].exports;var o=n[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=n,r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},r.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,n){if(1&n&&(t=r(t)),8&n)return t;if(4&n&&"object"===typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)r.d(e,o,function(n){return t[n]}.bind(null,o));return e},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r.p="",r(r.s=289)}({10:function(t,n,r){var e=r(2),o=r(32).f,i=r(11),u=r(31),c=r(24),f=r(62),a=r(50);t.exports=function(t,n){var r,s,p,l,v,y=t.target,d=t.global,g=t.stat;if(r=d?e:g?e[y]||c(y,{}):(e[y]||{}).prototype)for(s in n){if(l=n[s],p=t.noTargetGet?(v=o(r,s))&&v.value:r[s],!a(d?s:y+(g?".":"#")+s,t.forced)&&void 0!==p){if(typeof l===typeof p)continue;f(l,p)}(t.sham||p&&p.sham)&&i(l,"sham",!0),u(r,s,l,t)}}},11:function(t,n,r){var e=r(9),o=r(16),i=r(26);t.exports=e?function(t,n,r){return o.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},12:function(t,n,r){var e=r(2),o=r(18),i=r(35),u=r(64),c=e.Symbol,f=o("wks");t.exports=function(t){return f[t]||(f[t]=u&&c[t]||(u?c:i)("Symbol."+t))}},13:function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},14:function(t,n,r){var e=r(8);t.exports=function(t){if(!e(t))throw TypeError(String(t)+" is not an object");return t}},16:function(t,n,r){var e=r(9),o=r(33),i=r(14),u=r(27),c=Object.defineProperty;n.f=e?c:function(t,n,r){if(i(t),n=u(n,!0),i(r),o)try{return c(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},17:function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},18:function(t,n,r){var e=r(2),o=r(24),i=r(55),u=e["__core-js_shared__"]||o("__core-js_shared__",{});(t.exports=function(t,n){return u[t]||(u[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.2.1",mode:i?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},19:function(t,n,r){var e=r(29),o=r(17);t.exports=function(t){return e(o(t))}},2:function(t,n,r){(function(n){var r="object",e=function(t){return t&&t.Math==Math&&t};t.exports=e(typeof globalThis==r&&globalThis)||e(typeof window==r&&window)||e(typeof self==r&&self)||e(typeof n==r&&n)||Function("return this")()}).call(this,r(54))},20:function(t,n,r){var e=r(23),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},21:function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},23:function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},24:function(t,n,r){var e=r(2),o=r(11);t.exports=function(t,n){try{o(e,t,n)}catch(r){e[t]=n}return n}},25:function(t,n,r){var e=r(17);t.exports=function(t){return Object(e(t))}},26:function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},27:function(t,n,r){var e=r(8);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},28:function(t,n){t.exports={}},289:function(t,n,r){"use strict";r.r(n);r(89);var e=r(7),o=r.n(e),i=r(3);o()(".notice").on("click",".notice-dismiss",(function(t){var n=t.delegateTarget.getAttribute("data-ep-notice");n&&o.a.ajax({method:"post",data:{nonce:i.epAdmin.nonce,action:"ep_notice_dismiss",notice:n},url:i.ajaxurl})})),o()(".weighting-settings input[type=range]").change((function(){var t=o()(this);t.prev("label").find(".weighting-value").text(t.val())})),o()(".weighting-settings .searchable input[type=checkbox]").change((function(){var t=o()(this).parent().next(".weighting").find("input[type=range]"),n=t.prev("label").find(".weighting-value");t.prop("disabled",!this.checked);var r=this.checked?t.val():"0";n.text(r)}))},29:function(t,n,r){var e=r(4),o=r(21),i="".split;t.exports=e((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},3:function(t,n){t.exports=window},30:function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},31:function(t,n,r){var e=r(2),o=r(18),i=r(11),u=r(13),c=r(24),f=r(34),a=r(56),s=a.get,p=a.enforce,l=String(f).split("toString");o("inspectSource",(function(t){return f.call(t)})),(t.exports=function(t,n,r,o){var f=!!o&&!!o.unsafe,a=!!o&&!!o.enumerable,s=!!o&&!!o.noTargetGet;"function"==typeof r&&("string"!=typeof n||u(r,"name")||i(r,"name",n),p(r).source=l.join("string"==typeof n?n:"")),t!==e?(f?!s&&t[n]&&(a=!0):delete t[n],a?t[n]=r:i(t,n,r)):a?t[n]=r:c(n,r)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||f.call(this)}))},32:function(t,n,r){var e=r(9),o=r(47),i=r(26),u=r(19),c=r(27),f=r(13),a=r(33),s=Object.getOwnPropertyDescriptor;n.f=e?s:function(t,n){if(t=u(t),n=c(n,!0),a)try{return s(t,n)}catch(t){}if(f(t,n))return i(!o.f.call(t,n),t[n])}},33:function(t,n,r){var e=r(9),o=r(4),i=r(38);t.exports=!e&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},34:function(t,n,r){var e=r(18);t.exports=e("native-function-to-string",Function.toString)},35:function(t,n){var r=0,e=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++r+e).toString(36)}},36:function(t,n,r){var e=r(57),o=r(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,n){return arguments.length<2?i(e[t])||i(o[t]):e[t]&&e[t][n]||o[t]&&o[t][n]}},37:function(t,n,r){var e=r(13),o=r(19),i=r(48).indexOf,u=r(28);t.exports=function(t,n){var r,c=o(t),f=0,a=[];for(r in c)!e(u,r)&&e(c,r)&&a.push(r);for(;n.length>f;)e(c,r=n[f++])&&(~i(a,r)||a.push(r));return a}},38:function(t,n,r){var e=r(2),o=r(8),i=e.document,u=o(i)&&o(i.createElement);t.exports=function(t){return u?i.createElement(t):{}}},39:function(t,n,r){var e=r(51),o=r(29),i=r(25),u=r(20),c=r(43),f=[].push,a=function(t){var n=1==t,r=2==t,a=3==t,s=4==t,p=6==t,l=5==t||p;return function(v,y,d,g){for(var h,x,b=i(v),m=o(b),w=e(y,d,3),O=u(m.length),j=0,S=g||c,P=n?S(v,O):r?S(v,0):void 0;O>j;j++)if((l||j in m)&&(x=w(h=m[j],j,b),t))if(n)P[j]=x;else if(x)switch(t){case 3:return!0;case 5:return h;case 6:return j;case 2:f.call(P,h)}else if(s)return!1;return p?-1:a||s?s:P}};t.exports={forEach:a(0),map:a(1),filter:a(2),some:a(3),every:a(4),find:a(5),findIndex:a(6)}},4:function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},40:function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},41:function(t,n,r){var e=r(18),o=r(35),i=e("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},42:function(t,n,r){var e=r(23),o=Math.max,i=Math.min;t.exports=function(t,n){var r=e(t);return r<0?o(r+n,0):i(r,n)}},43:function(t,n,r){var e=r(8),o=r(44),i=r(12)("species");t.exports=function(t,n){var r;return o(t)&&("function"!=typeof(r=t.constructor)||r!==Array&&!o(r.prototype)?e(r)&&null===(r=r[i])&&(r=void 0):r=void 0),new(void 0===r?Array:r)(0===n?0:n)}},44:function(t,n,r){var e=r(21);t.exports=Array.isArray||function(t){return"Array"==e(t)}},47:function(t,n,r){"use strict";var e={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!e.call({1:2},1);n.f=i?function(t){var n=o(this,t);return!!n&&n.enumerable}:e},48:function(t,n,r){var e=r(19),o=r(20),i=r(42),u=function(t){return function(n,r,u){var c,f=e(n),a=o(f.length),s=i(u,a);if(t&&r!=r){for(;a>s;)if((c=f[s++])!=c)return!0}else for(;a>s;s++)if((t||s in f)&&f[s]===r)return t||s||0;return!t&&-1}};t.exports={includes:u(!0),indexOf:u(!1)}},49:function(t,n){n.f=Object.getOwnPropertySymbols},50:function(t,n,r){var e=r(4),o=/#|\.prototype\./,i=function(t,n){var r=c[u(t)];return r==a||r!=f&&("function"==typeof n?e(n):!!n)},u=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},f=i.NATIVE="N",a=i.POLYFILL="P";t.exports=i},51:function(t,n,r){var e=r(40);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 0:return function(){return t.call(n)};case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},54:function(t,n){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"===typeof window&&(r=window)}t.exports=r},55:function(t,n){t.exports=!1},56:function(t,n,r){var e,o,i,u=r(61),c=r(2),f=r(8),a=r(11),s=r(13),p=r(41),l=r(28),v=c.WeakMap;if(u){var y=new v,d=y.get,g=y.has,h=y.set;e=function(t,n){return h.call(y,t,n),n},o=function(t){return d.call(y,t)||{}},i=function(t){return g.call(y,t)}}else{var x=p("state");l[x]=!0,e=function(t,n){return a(t,x,n),n},o=function(t){return s(t,x)?t[x]:{}},i=function(t){return s(t,x)}}t.exports={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!f(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}}},57:function(t,n,r){t.exports=r(2)},58:function(t,n,r){var e=r(37),o=r(30).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return e(t,o)}},59:function(t,n,r){var e=r(37),o=r(30);t.exports=Object.keys||function(t){return e(t,o)}},61:function(t,n,r){var e=r(2),o=r(34),i=e.WeakMap;t.exports="function"===typeof i&&/native code/.test(o.call(i))},62:function(t,n,r){var e=r(13),o=r(63),i=r(32),u=r(16);t.exports=function(t,n){for(var r=o(n),c=u.f,f=i.f,a=0;adocument.F=Object<\/script>"),t.close(),p=t.F;r--;)delete p.prototype[i[r]];return p()};t.exports=Object.create||function(t,n){var r;return null!==t?(s.prototype=e(t),r=new s,s.prototype=null,r[a]=t):r=p(),void 0===n?r:o(r,n)},u[a]=!0},77:function(t,n,r){var e=r(9),o=r(16),i=r(14),u=r(59);t.exports=e?Object.defineProperties:function(t,n){i(t);for(var r,e=u(n),c=e.length,f=0;c>f;)o.f(t,r=e[f++],n[r]);return t}},8:function(t,n){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},89:function(t,n,r){"use strict";var e=r(10),o=r(39).find,i=r(75),u=!0;"find"in[]&&Array(1).find((function(){u=!1})),e({target:"Array",proto:!0,forced:u},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("find")},9:function(t,n,r){var e=r(4);t.exports=!e((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))}}); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvYWRtaW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvd1wiIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2JpbmQtY29udGV4dC5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcGF0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3duLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwialF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyJdLCJuYW1lcyI6WyJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsImdsb2JhbCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImYiLCJoaWRlIiwicmVkZWZpbmUiLCJzZXRHbG9iYWwiLCJjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzIiwiaXNGb3JjZWQiLCJvcHRpb25zIiwic291cmNlIiwidGFyZ2V0IiwidGFyZ2V0UHJvcGVydHkiLCJzb3VyY2VQcm9wZXJ0eSIsImRlc2NyaXB0b3IiLCJUQVJHRVQiLCJHTE9CQUwiLCJTVEFUSUMiLCJzdGF0Iiwibm9UYXJnZXRHZXQiLCJmb3JjZWQiLCJ1bmRlZmluZWQiLCJzaGFtIiwiREVTQ1JJUFRPUlMiLCJkZWZpbmVQcm9wZXJ0eU1vZHVsZSIsImNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciIsInNoYXJlZCIsInVpZCIsIk5BVElWRV9TWU1CT0wiLCJzdG9yZSIsIml0IiwiaXNPYmplY3QiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJJRThfRE9NX0RFRklORSIsImFuT2JqZWN0IiwidG9QcmltaXRpdmUiLCJuYXRpdmVEZWZpbmVQcm9wZXJ0eSIsIk8iLCJQIiwiQXR0cmlidXRlcyIsImVycm9yIiwiSVNfUFVSRSIsInB1c2giLCJ2ZXJzaW9uIiwiY29weXJpZ2h0IiwiSW5kZXhlZE9iamVjdCIsInJlcXVpcmVPYmplY3RDb2VyY2libGUiLCJjaGVjayIsIk1hdGgiLCJnbG9iYWxUaGlzIiwid2luZG93Iiwic2VsZiIsIkZ1bmN0aW9uIiwidG9JbnRlZ2VyIiwibWluIiwiYXJndW1lbnQiLCJ0b1N0cmluZyIsInNsaWNlIiwiY2VpbCIsImZsb29yIiwiaXNOYU4iLCJiaXRtYXAiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImlucHV0IiwiUFJFRkVSUkVEX1NUUklORyIsImZuIiwidmFsIiwidmFsdWVPZiIsImpRdWVyeSIsIm9uIiwiZXZlbnQiLCJub3RpY2UiLCJkZWxlZ2F0ZVRhcmdldCIsImdldEF0dHJpYnV0ZSIsImFqYXgiLCJtZXRob2QiLCJkYXRhIiwibm9uY2UiLCJlcEFkbWluIiwiYWN0aW9uIiwidXJsIiwiYWpheHVybCIsImNoYW5nZSIsImVsIiwidGhpcyIsInByZXYiLCJmaW5kIiwidGV4dCIsIiRyYW5nZUlucHV0IiwicGFyZW50IiwibmV4dCIsIiR3ZWlnaHREaXNwbGF5IiwicHJvcCIsImNoZWNrZWQiLCJuZXdXZWlnaHREaXNwbGF5IiwiZmFpbHMiLCJjbGFzc29mIiwic3BsaXQiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImhhcyIsIm5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmciLCJJbnRlcm5hbFN0YXRlTW9kdWxlIiwiZ2V0SW50ZXJuYWxTdGF0ZSIsImVuZm9yY2VJbnRlcm5hbFN0YXRlIiwiZW5mb3JjZSIsIlRFTVBMQVRFIiwidW5zYWZlIiwic2ltcGxlIiwiam9pbiIsInByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlIiwidG9JbmRleGVkT2JqZWN0IiwibmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiY3JlYXRlRWxlbWVudCIsImEiLCJpZCIsInBvc3RmaXgiLCJyYW5kb20iLCJwYXRoIiwiYUZ1bmN0aW9uIiwidmFyaWFibGUiLCJuYW1lc3BhY2UiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJpbmRleE9mIiwiaGlkZGVuS2V5cyIsIm5hbWVzIiwicmVzdWx0IiwiZG9jdW1lbnQiLCJFWElTVFMiLCJ0b09iamVjdCIsInRvTGVuZ3RoIiwiYXJyYXlTcGVjaWVzQ3JlYXRlIiwiY3JlYXRlTWV0aG9kIiwiVFlQRSIsIklTX01BUCIsIklTX0ZJTFRFUiIsIklTX1NPTUUiLCJJU19FVkVSWSIsIklTX0ZJTkRfSU5ERVgiLCJOT19IT0xFUyIsIiR0aGlzIiwiY2FsbGJhY2tmbiIsInRoYXQiLCJzcGVjaWZpY0NyZWF0ZSIsImJvdW5kRnVuY3Rpb24iLCJpbmRleCIsImZvckVhY2giLCJtYXAiLCJmaWx0ZXIiLCJzb21lIiwiZXZlcnkiLCJmaW5kSW5kZXgiLCJleGVjIiwia2V5cyIsIm1heCIsImludGVnZXIiLCJpc0FycmF5IiwiU1BFQ0lFUyIsIndlbGxLbm93blN5bWJvbCIsIm9yaWdpbmFsQXJyYXkiLCJDIiwiY29uc3RydWN0b3IiLCJBcnJheSIsImFyZyIsIm5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTkFTSE9STl9CVUciLCIxIiwiViIsInRvQWJzb2x1dGVJbmRleCIsIklTX0lOQ0xVREVTIiwiZnJvbUluZGV4IiwiaW5jbHVkZXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJyZXBsYWNlbWVudCIsImZlYXR1cmUiLCJkZXRlY3Rpb24iLCJub3JtYWxpemUiLCJQT0xZRklMTCIsIk5BVElWRSIsInN0cmluZyIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsImIiLCJhcHBseSIsImciLCJlIiwic2V0IiwiTkFUSVZFX1dFQUtfTUFQIiwib2JqZWN0SGFzIiwic2hhcmVkS2V5IiwiV2Vha01hcCIsIndtZ2V0Iiwid21oYXMiLCJ3bXNldCIsIm1ldGFkYXRhIiwiU1RBVEUiLCJnZXR0ZXJGb3IiLCJzdGF0ZSIsInR5cGUiLCJpbnRlcm5hbE9iamVjdEtleXMiLCJjb25jYXQiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZW51bUJ1Z0tleXMiLCJ0ZXN0Iiwib3duS2V5cyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSIsImdldEJ1aWx0SW4iLCJnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlIiwiVU5TQ09QQUJMRVMiLCJBcnJheVByb3RvdHlwZSIsImRlZmluZVByb3BlcnRpZXMiLCJodG1sIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50IiwiSUVfUFJPVE8iLCJFbXB0eSIsImNyZWF0ZURpY3QiLCJpZnJhbWVEb2N1bWVudCIsImlmcmFtZSIsInN0eWxlIiwiZGlzcGxheSIsImFwcGVuZENoaWxkIiwic3JjIiwiY29udGVudFdpbmRvdyIsIm9wZW4iLCJ3cml0ZSIsImx0IiwiY2xvc2UiLCJGIiwiUHJvcGVydGllcyIsIm9iamVjdEtleXMiLCIkIiwiJGZpbmQiLCJhZGRUb1Vuc2NvcGFibGVzIiwiU0tJUFNfSE9MRVMiLCJwcm90byJdLCJtYXBwaW5ncyI6ImFBQ0UsSUFBSUEsRUFBbUIsR0FHdkIsU0FBU0MsRUFBb0JDLEdBRzVCLEdBQUdGLEVBQWlCRSxHQUNuQixPQUFPRixFQUFpQkUsR0FBVUMsUUFHbkMsSUFBSUMsRUFBU0osRUFBaUJFLEdBQVksQ0FDekNHLEVBQUdILEVBQ0hJLEdBQUcsRUFDSEgsUUFBUyxJQVVWLE9BTkFJLEVBQVFMLEdBQVVNLEtBQUtKLEVBQU9ELFFBQVNDLEVBQVFBLEVBQU9ELFFBQVNGLEdBRy9ERyxFQUFPRSxHQUFJLEVBR0pGLEVBQU9ELFFBS2ZGLEVBQW9CUSxFQUFJRixFQUd4Qk4sRUFBb0JTLEVBQUlWLEVBR3hCQyxFQUFvQlUsRUFBSSxTQUFTUixFQUFTUyxFQUFNQyxHQUMzQ1osRUFBb0JhLEVBQUVYLEVBQVNTLElBQ2xDRyxPQUFPQyxlQUFlYixFQUFTUyxFQUFNLENBQUVLLFlBQVks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QUUsV0FBY3dFLEdBQWMsS0FJM0RILEVBQUUsQ0FBRTlOLE9BQVEsUUFBU2tPLE9BQU8sRUFBTXpOLE9BQVF3TixHQUFlLENBQ3ZEcEosS0FBTSxTQUFjdUQsR0FDbEIsT0FBTzJGLEVBQU1wSixLQUFNeUQsRUFBWXBCLFVBQVVDLE9BQVMsRUFBSUQsVUFBVSxRQUFLdEcsTUFLekVzTixFQWZXLFMsa0JDTFgsSUFBSTFJLEVBQVEsRUFBUSxHQUdwQmpJLEVBQU9ELFNBQVdrSSxHQUFNLFdBQ3RCLE9BQStFLEdBQXhFdEgsT0FBT0MsZUFBZSxHQUFJLElBQUssQ0FBRUUsSUFBSyxXQUFjLE9BQU8sS0FBUXFJIiwiZmlsZSI6ImpzL2FkbWluLXNjcmlwdC5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMjg5KTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLm5vVGFyZ2V0R2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxbVEFSR0VUXSB8fCBzZXRHbG9iYWwoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gKGdsb2JhbFtUQVJHRVRdIHx8IHt9KS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5ub1RhcmdldEdldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGhpZGUoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIC8vIGV4dGVuZCBnbG9iYWxcbiAgICByZWRlZmluZSh0YXJnZXQsIGtleSwgc291cmNlUHJvcGVydHksIG9wdGlvbnMpO1xuICB9XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgc3RvcmUgPSBzaGFyZWQoJ3drcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIFN5bWJvbFtuYW1lXVxuICAgIHx8IChOQVRJVkVfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkge1xuICAgIHRocm93IFR5cGVFcnJvcihTdHJpbmcoaXQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG5cbnZhciBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlRGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIi8vIGBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCBzZXRHbG9iYWwoU0hBUkVELCB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4yLjEnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsIi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCJ2YXIgTyA9ICdvYmplY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09IE1hdGggJiYgaXQ7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxubW9kdWxlLmV4cG9ydHMgPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gTyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09IE8gJiYgd2luZG93KSB8fFxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSBPICYmIHNlbGYpIHx8XG4gIGNoZWNrKHR5cGVvZiBnbG9iYWwgPT0gTyAmJiBnbG9iYWwpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG5cbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gYFRvTGVuZ3RoYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvbGVuZ3RoXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gYXJndW1lbnQgPiAwID8gbWluKHRvSW50ZWdlcihhcmd1bWVudCksIDB4MUZGRkZGRkZGRkZGRkYpIDogMDsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcbiIsInZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxuLy8gYFRvSW50ZWdlcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2ludGVnZXJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc05hTihhcmd1bWVudCA9ICthcmd1bWVudCkgPyAwIDogKGFyZ3VtZW50ID4gMCA/IGZsb29yIDogY2VpbCkoYXJndW1lbnQpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBoaWRlKGdsb2JhbCwga2V5LCB2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsW2tleV0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuIiwidmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxuLy8gYFRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBQUkVGRVJSRURfU1RSSU5HKSB7XG4gIGlmICghaXNPYmplY3QoaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUFJFRkVSUkVEX1NUUklORyAmJiB0eXBlb2YgKGZuID0gaW5wdXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpbnB1dC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUFJFRkVSUkVEX1NUUklORyAmJiB0eXBlb2YgKGZuID0gaW5wdXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCJpbXBvcnQgalF1ZXJ5IGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgeyBlcEFkbWluLCBhamF4dXJsIH0gZnJvbSAnd2luZG93JztcblxualF1ZXJ5KCAnLm5vdGljZScgKS5vbiggJ2NsaWNrJywgJy5ub3RpY2UtZGlzbWlzcycsICggZXZlbnQgKSA9PiB7XG5cdGNvbnN0IG5vdGljZSA9IGV2ZW50LmRlbGVnYXRlVGFyZ2V0LmdldEF0dHJpYnV0ZSggJ2RhdGEtZXAtbm90aWNlJyApO1xuXG5cdGlmICggISBub3RpY2UgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0alF1ZXJ5LmFqYXgoIHtcblx0XHRtZXRob2Q6ICdwb3N0Jyxcblx0XHRkYXRhOiB7XG5cdFx0XHRub25jZTogZXBBZG1pbi5ub25jZSxcblx0XHRcdGFjdGlvbjogJ2VwX25vdGljZV9kaXNtaXNzJyxcblx0XHRcdG5vdGljZTogbm90aWNlXG5cdFx0fSxcblx0XHR1cmw6IGFqYXh1cmxcblx0fSApO1xufSApO1xuXG5qUXVlcnkoICcud2VpZ2h0aW5nLXNldHRpbmdzIGlucHV0W3R5cGU9cmFuZ2VdJyApLmNoYW5nZSggZnVuY3Rpb24oKSB7XG5cdGNvbnN0IGVsID0galF1ZXJ5KCB0aGlzICk7XG5cblx0ZWwucHJldiggJ2xhYmVsJyApLmZpbmQoICcud2VpZ2h0aW5nLXZhbHVlJyApLnRleHQoIGVsLnZhbCgpICk7XG59ICk7XG5cbmpRdWVyeSggJy53ZWlnaHRpbmctc2V0dGluZ3MgLnNlYXJjaGFibGUgaW5wdXRbdHlwZT1jaGVja2JveF0nICkuY2hhbmdlKCBmdW5jdGlvbigpIHtcblx0Y29uc3QgJGNoZWNrYm94ID0galF1ZXJ5KCB0aGlzICk7XG5cdGNvbnN0ICRyYW5nZUlucHV0ID0gJGNoZWNrYm94LnBhcmVudCgpLm5leHQoICcud2VpZ2h0aW5nJyApLmZpbmQoICdpbnB1dFt0eXBlPXJhbmdlXScgKTtcblx0Y29uc3QgJHdlaWdodERpc3BsYXkgPSAkcmFuZ2VJbnB1dC5wcmV2KCAnbGFiZWwnICkuZmluZCggJy53ZWlnaHRpbmctdmFsdWUnICk7XG5cblx0Ly8gdG9nZ2xlIHJhbmdlIGlucHV0XG5cdCRyYW5nZUlucHV0LnByb3AoICdkaXNhYmxlZCcsICEgdGhpcy5jaGVja2VkICk7XG5cblx0Ly8gZ2V0IG5ldyB3ZWlnaHQgZGlzcGxheSB2YWx1ZSwgYW5kIHNldCBpdFxuXHRjb25zdCBuZXdXZWlnaHREaXNwbGF5ID0gIXRoaXMuY2hlY2tlZCA/ICcwJyA6ICRyYW5nZUlucHV0LnZhbCgpO1xuXHQkd2VpZ2h0RGlzcGxheS50ZXh0KCBuZXdXZWlnaHREaXNwbGF5ICk7XG59ICk7XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciBzcGxpdCA9ICcnLnNwbGl0O1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICByZXR1cm4gIU9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xufSkgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoaXQpID09ICdTdHJpbmcnID8gc3BsaXQuY2FsbChpdCwgJycpIDogT2JqZWN0KGl0KTtcbn0gOiBPYmplY3Q7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdzsiLCIvLyBJRTgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xudmFyIG5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdG8tc3RyaW5nJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIFRFTVBMQVRFID0gU3RyaW5nKG5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmcpLnNwbGl0KCd0b1N0cmluZycpO1xuXG5zaGFyZWQoJ2luc3BlY3RTb3VyY2UnLCBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIG5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmcuY2FsbChpdCk7XG59KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHVuc2FmZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMudW5zYWZlIDogZmFsc2U7XG4gIHZhciBzaW1wbGUgPSBvcHRpb25zID8gISFvcHRpb25zLmVudW1lcmFibGUgOiBmYWxzZTtcbiAgdmFyIG5vVGFyZ2V0R2V0ID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5ub1RhcmdldEdldCA6IGZhbHNlO1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAodHlwZW9mIGtleSA9PSAnc3RyaW5nJyAmJiAhaGFzKHZhbHVlLCAnbmFtZScpKSBoaWRlKHZhbHVlLCAnbmFtZScsIGtleSk7XG4gICAgZW5mb3JjZUludGVybmFsU3RhdGUodmFsdWUpLnNvdXJjZSA9IFRFTVBMQVRFLmpvaW4odHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/IGtleSA6ICcnKTtcbiAgfVxuICBpZiAoTyA9PT0gZ2xvYmFsKSB7XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBzZXRHbG9iYWwoa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKCF1bnNhZmUpIHtcbiAgICBkZWxldGUgT1trZXldO1xuICB9IGVsc2UgaWYgKCFub1RhcmdldEdldCAmJiBPW2tleV0pIHtcbiAgICBzaW1wbGUgPSB0cnVlO1xuICB9XG4gIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICBlbHNlIGhpZGUoTywga2V5LCB2YWx1ZSk7XG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbn0pKEZ1bmN0aW9uLnByb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nICYmIGdldEludGVybmFsU3RhdGUodGhpcykuc291cmNlIHx8IG5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmcuY2FsbCh0aGlzKTtcbn0pO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxudmFyIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLmNhbGwoTywgUCksIE9bUF0pO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNoYXJlZCgnbmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZycsIEZ1bmN0aW9uLnRvU3RyaW5nKTtcbiIsInZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgU3RyaW5nKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArICgrK2lkICsgcG9zdGZpeCkudG9TdHJpbmcoMzYpO1xufTtcbiIsInZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAodmFyaWFibGUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YXJpYWJsZSA9PSAnZnVuY3Rpb24nID8gdmFyaWFibGUgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24ocGF0aFtuYW1lc3BhY2VdKSB8fCBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pXG4gICAgOiBwYXRoW25hbWVzcGFjZV0gJiYgcGF0aFtuYW1lc3BhY2VdW21ldGhvZF0gfHwgZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCJ2YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmRleE9mO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhcyhoaWRkZW5LZXlzLCBrZXkpICYmIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+aW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwidmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYmluZC1jb250ZXh0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBmb3JFYWNoLCBtYXAsIGZpbHRlciwgc29tZSwgZXZlcnksIGZpbmQsIGZpbmRJbmRleCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0ZJTFRFUiA9IFRZUEUgPT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09IDM7XG4gIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDtcbiAgdmFyIElTX0ZJTkRfSU5ERVggPSBUWVBFID09IDY7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NyZWF0ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgdGhhdCwgMyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKHNlbGYubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjcmVhdGUgPSBzcGVjaWZpY0NyZWF0ZSB8fCBhcnJheVNwZWNpZXNDcmVhdGU7XG4gICAgdmFyIHRhcmdldCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiA/IGNyZWF0ZSgkdGhpcywgMCkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHZhbHVlLCByZXN1bHQ7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWx1ZSA9IHNlbGZbaW5kZXhdO1xuICAgICAgcmVzdWx0ID0gYm91bmRGdW5jdGlvbih2YWx1ZSwgaW5kZXgsIE8pO1xuICAgICAgaWYgKFRZUEUpIHtcbiAgICAgICAgaWYgKElTX01BUCkgdGFyZ2V0W2luZGV4XSA9IHJlc3VsdDsgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWx1ZTsgICAgICAgICAgICAgLy8gZmluZFxuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIGluZGV4OyAgICAgICAgICAgICAvLyBmaW5kSW5kZXhcbiAgICAgICAgICBjYXNlIDI6IHB1c2guY2FsbCh0YXJnZXQsIHZhbHVlKTsgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgIC8vIGV2ZXJ5XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiB0YXJnZXQ7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiAgZm9yRWFjaDogY3JlYXRlTWV0aG9kKDApLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5tYXBcbiAgbWFwOiBjcmVhdGVNZXRob2QoMSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuICBmaWx0ZXI6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5zb21lYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvbWVcbiAgc29tZTogY3JlYXRlTWV0aG9kKDMpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmV2ZXJ5XG4gIGV2ZXJ5OiBjcmVhdGVNZXRob2QoNCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4gIGZpbmQ6IGNyZWF0ZU1ldGhvZCg1KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZEluZGV4XG4gIGZpbmRJbmRleDogY3JlYXRlTWV0aG9kKDYpXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IFR5cGVFcnJvcihTdHJpbmcoaXQpICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBIZWxwZXIgZm9yIGEgcG9wdWxhciByZXBlYXRpbmcgY2FzZSBvZiB0aGUgc3BlYzpcbi8vIExldCBpbnRlZ2VyIGJlID8gVG9JbnRlZ2VyKGluZGV4KS5cbi8vIElmIGludGVnZXIgPCAwLCBsZXQgcmVzdWx0IGJlIG1heCgobGVuZ3RoICsgaW50ZWdlciksIDApOyBlbHNlIGxldCByZXN1bHQgYmUgbWluKGxlbmd0aCwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW50ZWdlciA8IDAgPyBtYXgoaW50ZWdlciArIGxlbmd0aCwgMCkgOiBtaW4oaW50ZWdlciwgbGVuZ3RoKTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG4vLyBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5c3BlY2llc2NyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWxBcnJheSwgbGVuZ3RoKSB7XG4gIHZhciBDO1xuICBpZiAoaXNBcnJheShvcmlnaW5hbEFycmF5KSkge1xuICAgIEMgPSBvcmlnaW5hbEFycmF5LmNvbnN0cnVjdG9yO1xuICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrXG4gICAgaWYgKHR5cGVvZiBDID09ICdmdW5jdGlvbicgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSkgQyA9IHVuZGVmaW5lZDtcbiAgICBlbHNlIGlmIChpc09iamVjdChDKSkge1xuICAgICAgQyA9IENbU1BFQ0lFU107XG4gICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gcmV0dXJuIG5ldyAoQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDKShsZW5ndGggPT09IDAgPyAwIDogbGVuZ3RoKTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG4vLyBgSXNBcnJheWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2FycmF5XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNsYXNzb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICFuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsInZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCJleHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogdHlwZW9mIGRldGVjdGlvbiA9PSAnZnVuY3Rpb24nID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCJ2YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtZnVuY3Rpb24nKTtcblxuLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0KTtcbiAgICB9O1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsInZhciBnO1xuXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxuZyA9IChmdW5jdGlvbigpIHtcblx0cmV0dXJuIHRoaXM7XG59KSgpO1xuXG50cnkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcblx0ZyA9IGcgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcbiIsIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCJ2YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciBvYmplY3RIYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQKSB7XG4gIHZhciBzdG9yZSA9IG5ldyBXZWFrTWFwKCk7XG4gIHZhciB3bWdldCA9IHN0b3JlLmdldDtcbiAgdmFyIHdtaGFzID0gc3RvcmUuaGFzO1xuICB2YXIgd21zZXQgPSBzdG9yZS5zZXQ7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICB3bXNldC5jYWxsKHN0b3JlLCBpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtZ2V0LmNhbGwoc3RvcmUsIGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtaGFzLmNhbGwoc3RvcmUsIGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaGlkZShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gb2JqZWN0SGFzKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuIiwidmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCJ2YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG4vLyBgT2JqZWN0LmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmtleXNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyAmJiAvbmF0aXZlIGNvZGUvLnRlc3QobmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKFdlYWtNYXApKTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhcyh0YXJnZXQsIGtleSkpIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgfVxufTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgcmV0dXJuICFTdHJpbmcoU3ltYm9sKCkpO1xufSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGpRdWVyeTsiLCJ2YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdkb2N1bWVudCcsICdkb2N1bWVudEVsZW1lbnQnKTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xuXG52YXIgVU5TQ09QQUJMRVMgPSB3ZWxsS25vd25TeW1ib2woJ3Vuc2NvcGFibGVzJyk7XG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbi8vIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmlmIChBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU10gPT0gdW5kZWZpbmVkKSB7XG4gIGhpZGUoQXJyYXlQcm90b3R5cGUsIFVOU0NPUEFCTEVTLCBjcmVhdGUobnVsbCkpO1xufVxuXG4vLyBhZGQgYSBrZXkgdG8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b3R5cGVbVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBkZWZpbmVQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgZG9jdW1lbnRDcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gIHZhciBsZW5ndGggPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIHNjcmlwdCA9ICdzY3JpcHQnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBqcyA9ICdqYXZhJyArIHNjcmlwdCArICc6JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgaHRtbC5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gU3RyaW5nKGpzKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArIHNjcmlwdCArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy8nICsgc2NyaXB0ICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGxlbmd0aC0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2xlbmd0aF1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxuLy8gYE9iamVjdC5jcmVhdGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRlZmluZVByb3BlcnRpZXMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cbmhpZGRlbktleXNbSUVfUFJPVE9dID0gdHJ1ZTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaW5kZXgrK10sIFByb3BlcnRpZXNba2V5XSk7XG4gIHJldHVybiBPO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmluZDtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG52YXIgRklORCA9ICdmaW5kJztcbnZhciBTS0lQU19IT0xFUyA9IHRydWU7XG5cbi8vIFNob3VsZG4ndCBza2lwIGhvbGVzXG5pZiAoRklORCBpbiBbXSkgQXJyYXkoMSlbRklORF0oZnVuY3Rpb24gKCkgeyBTS0lQU19IT0xFUyA9IGZhbHNlOyB9KTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5maW5kYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBTS0lQU19IT0xFUyB9LCB7XG4gIGZpbmQ6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICByZXR1cm4gJGZpbmQodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoRklORCk7XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/dist/js/autosuggest-script.min.js b/dist/js/autosuggest-script.min.js index a45d838318..b0994a65d6 100644 --- a/dist/js/autosuggest-script.min.js +++ b/dist/js/autosuggest-script.min.js @@ -1,2 +1,2 @@ -!function(t){var n={};function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:r})},e.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)e.d(r,o,function(n){return t[n]}.bind(null,o));return r},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="",e(e.s=280)}([,,function(t,n,e){(function(n){var e="object",r=function(t){return t&&t.Math==Math&&t};t.exports=r(typeof globalThis==e&&globalThis)||r(typeof window==e&&window)||r(typeof self==e&&self)||r(typeof n==e&&n)||Function("return this")()}).call(this,e(49))},,function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},,function(t,n){t.exports=window},function(t,n){t.exports=jQuery},function(t,n){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},function(t,n,e){var r=e(4);t.exports=!r((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,n,e){var r=e(9),o=e(18),i=e(26);t.exports=r?function(t,n,e){return o.f(t,n,i(1,e))}:function(t,n,e){return t[n]=e,t}},function(t,n){var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},function(t,n,e){var r=e(2),o=e(31).f,i=e(10),c=e(36),u=e(23),a=e(57),s=e(52);t.exports=function(t,n){var e,f,l,p,v,d=t.target,g=t.global,h=t.stat;if(e=g?r:h?r[d]||u(d,{}):(r[d]||{}).prototype)for(f in n){if(p=n[f],l=t.noTargetGet?(v=o(e,f))&&v.value:e[f],!s(g?f:d+(h?".":"#")+f,t.forced)&&void 0!==l){if(typeof p===typeof l)continue;a(p,l)}(t.sham||l&&l.sham)&&i(p,"sham",!0),c(e,f,p,t)}}},function(t,n,e){var r=e(8);t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},,function(t,n,e){var r=e(2),o=e(23),i=e(54),c=r["__core-js_shared__"]||o("__core-js_shared__",{});(t.exports=function(t,n){return c[t]||(c[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.2.1",mode:i?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,e){var r=e(2),o=e(15),i=e(34),c=e(61),u=r.Symbol,a=o("wks");t.exports=function(t){return a[t]||(a[t]=c&&u[t]||(c?u:i)("Symbol."+t))}},function(t,n,e){var r=e(9),o=e(32),i=e(13),c=e(27),u=Object.defineProperty;n.f=r?u:function(t,n,e){if(i(t),n=c(n,!0),i(e),o)try{return u(t,n,e)}catch(t){}if("get"in e||"set"in e)throw TypeError("Accessors not supported");return"value"in e&&(t[n]=e.value),t}},function(t,n,e){var r=e(30),o=e(16);t.exports=function(t){return r(o(t))}},function(t,n,e){var r=e(22),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},,function(t,n){var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},function(t,n,e){var r=e(2),o=e(10);t.exports=function(t,n){try{o(r,t,n)}catch(e){r[t]=n}return n}},function(t,n){var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},function(t,n,e){var r=e(16);t.exports=function(t){return Object(r(t))}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,e){var r=e(8);t.exports=function(t,n){if(!r(t))return t;var e,o;if(n&&"function"==typeof(e=t.toString)&&!r(o=e.call(t)))return o;if("function"==typeof(e=t.valueOf)&&!r(o=e.call(t)))return o;if(!n&&"function"==typeof(e=t.toString)&&!r(o=e.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,n){t.exports={}},function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,n,e){var r=e(4),o=e(24),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,n,e){var r=e(9),o=e(45),i=e(26),c=e(19),u=e(27),a=e(11),s=e(32),f=Object.getOwnPropertyDescriptor;n.f=r?f:function(t,n){if(t=c(t),n=u(n,!0),s)try{return f(t,n)}catch(t){}if(a(t,n))return i(!o.f.call(t,n),t[n])}},function(t,n,e){var r=e(9),o=e(4),i=e(38);t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,n,e){var r=e(15);t.exports=r("native-function-to-string",Function.toString)},function(t,n){var e=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++e+r).toString(36)}},function(t,n,e){var r=e(11),o=e(19),i=e(46).indexOf,c=e(28);t.exports=function(t,n){var e,u=o(t),a=0,s=[];for(e in u)!r(c,e)&&r(u,e)&&s.push(e);for(;n.length>a;)r(u,e=n[a++])&&(~i(s,e)||s.push(e));return s}},function(t,n,e){var r=e(2),o=e(15),i=e(10),c=e(11),u=e(23),a=e(33),s=e(55),f=s.get,l=s.enforce,p=String(a).split("toString");o("inspectSource",(function(t){return a.call(t)})),(t.exports=function(t,n,e,o){var a=!!o&&!!o.unsafe,s=!!o&&!!o.enumerable,f=!!o&&!!o.noTargetGet;"function"==typeof e&&("string"!=typeof n||c(e,"name")||i(e,"name",n),l(e).source=p.join("string"==typeof n?n:"")),t!==r?(a?!f&&t[n]&&(s=!0):delete t[n],s?t[n]=e:i(t,n,e)):s?t[n]=e:u(n,e)})(Function.prototype,"toString",(function(){return"function"==typeof this&&f(this).source||a.call(this)}))},function(t,n,e){var r=e(59),o=e(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,n){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][n]||o[t]&&o[t][n]}},function(t,n,e){var r=e(2),o=e(8),i=r.document,c=o(i)&&o(i.createElement);t.exports=function(t){return c?i.createElement(t):{}}},function(t,n,e){var r=e(15),o=e(34),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,n,e){var r=e(22),o=Math.max,i=Math.min;t.exports=function(t,n){var e=r(t);return e<0?o(e+n,0):i(e,n)}},function(t,n,e){var r=e(8),o=e(42),i=e(17)("species");t.exports=function(t,n){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)?r(e)&&null===(e=e[i])&&(e=void 0):e=void 0),new(void 0===e?Array:e)(0===n?0:n)}},function(t,n,e){var r=e(24);t.exports=Array.isArray||function(t){return"Array"==r(t)}},,function(t,n,e){var r=e(60),o=e(30),i=e(25),c=e(20),u=e(41),a=[].push,s=function(t){var n=1==t,e=2==t,s=3==t,f=4==t,l=6==t,p=5==t||l;return function(v,d,g,h){for(var y,x,m=i(v),b=o(m),w=r(d,g,3),S=c(b.length),j=0,O=h||u,_=n?O(v,S):e?O(v,0):void 0;S>j;j++)if((p||j in b)&&(x=w(y=b[j],j,m),t))if(n)_[j]=x;else if(x)switch(t){case 3:return!0;case 5:return y;case 6:return j;case 2:a.call(_,y)}else if(f)return!1;return l?-1:s||f?f:_}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},function(t,n,e){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);n.f=i?function(t){var n=o(this,t);return!!n&&n.enumerable}:r},function(t,n,e){var r=e(19),o=e(20),i=e(40),c=function(t){return function(n,e,c){var u,a=r(n),s=o(a.length),f=i(c,s);if(t&&e!=e){for(;s>f;)if((u=a[f++])!=u)return!0}else for(;s>f;f++)if((t||f in a)&&a[f]===e)return t||f||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},,function(t,n){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"===typeof window&&(e=window)}t.exports=e},function(t,n,e){var r=e(35),o=e(29).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,e){var r=e(4),o=/#|\.prototype\./,i=function(t,n){var e=u[c(t)];return e==s||e!=a&&("function"==typeof n?r(n):!!n)},c=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},u=i.data={},a=i.NATIVE="N",s=i.POLYFILL="P";t.exports=i},function(t,n,e){var r=e(4),o=e(17)("species");t.exports=function(t){return!r((function(){var n=[];return(n.constructor={})[o]=function(){return{foo:1}},1!==n[t](Boolean).foo}))}},function(t,n){t.exports=!1},function(t,n,e){var r,o,i,c=e(56),u=e(2),a=e(8),s=e(10),f=e(11),l=e(39),p=e(28),v=u.WeakMap;if(c){var d=new v,g=d.get,h=d.has,y=d.set;r=function(t,n){return y.call(d,t,n),n},o=function(t){return g.call(d,t)||{}},i=function(t){return h.call(d,t)}}else{var x=l("state");p[x]=!0,r=function(t,n){return s(t,x,n),n},o=function(t){return f(t,x)?t[x]:{}},i=function(t){return f(t,x)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(n){var e;if(!a(n)||(e=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return e}}}},function(t,n,e){var r=e(2),o=e(33),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o.call(i))},function(t,n,e){var r=e(11),o=e(58),i=e(31),c=e(18);t.exports=function(t,n){for(var e=o(n),u=c.f,a=i.f,s=0;s1&&i.call(c[0],e,(function(){for(s=1;sdocument.F=Object<\/script>"),t.close(),l=t.F;e--;)delete l.prototype[i[e]];return l()};t.exports=Object.create||function(t,n){var e;return null!==t?(f.prototype=r(t),e=new f,f.prototype=null,e[s]=t):e=l(),void 0===n?e:o(e,n)},c[s]=!0},function(t,n,e){var r=e(9),o=e(18),i=e(13),c=e(62);t.exports=r?Object.defineProperties:function(t,n){i(t);for(var e,r=c(n),u=r.length,a=0;u>a;)o.f(t,e=r[a++],n[e]);return t}},function(t,n,e){var r=e(37);t.exports=r("document","documentElement")},function(t,n,e){var r=e(16),o="["+e(64)+"]",i=RegExp("^"+o+o+"*"),c=RegExp(o+o+"*$"),u=function(t){return function(n){var e=String(r(n));return 1&t&&(e=e.replace(i,"")),2&t&&(e=e.replace(c,"")),e}};t.exports={start:u(1),end:u(2),trim:u(3)}},function(t,n,e){"use strict";var r=e(13);t.exports=function(){var t=r(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.dotAll&&(n+="s"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},,,function(t,n,e){"use strict";var r=e(12),o=e(44).map;r({target:"Array",proto:!0,forced:!e(53)("map")},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,n,e){"use strict";var r=e(10),o=e(36),i=e(4),c=e(17),u=e(65),a=c("species"),s=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),f=!i((function(){var t=/(?:)/,n=t.exec;t.exec=function(){return n.apply(this,arguments)};var e="ab".split(t);return 2!==e.length||"a"!==e[0]||"b"!==e[1]}));t.exports=function(t,n,e,l){var p=c(t),v=!i((function(){var n={};return n[p]=function(){return 7},7!=""[t](n)})),d=v&&!i((function(){var n=!1,e=/a/;return e.exec=function(){return n=!0,null},"split"===t&&(e.constructor={},e.constructor[a]=function(){return e}),e[p](""),!n}));if(!v||!d||"replace"===t&&!s||"split"===t&&!f){var g=/./[p],h=e(p,""[t],(function(t,n,e,r,o){return n.exec===u?v&&!o?{done:!0,value:g.call(n,e,r)}:{done:!0,value:t.call(e,n,r)}:{done:!1}})),y=h[0],x=h[1];o(String.prototype,t,y),o(RegExp.prototype,p,2==n?function(t,n){return x.call(t,this,n)}:function(t){return x.call(t,this)}),l&&r(RegExp.prototype[p],"sham",!0)}}},function(t,n,e){var r=e(24),o=e(65);t.exports=function(t,n){var e=t.exec;if("function"===typeof e){var i=e.call(t,n);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,n)}},,,,function(t,n,e){"use strict";var r=e(12),o=e(44).find,i=e(71),c=!0;"find"in[]&&Array(1).find((function(){c=!1})),r({target:"Array",proto:!0,forced:c},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("find")},function(t,n,e){var r=e(12),o=e(87);r({global:!0,forced:parseInt!=o},{parseInt:o})},function(t,n,e){var r=e(2),o=e(75).trim,i=e(64),c=r.parseInt,u=/^[+-]?0[Xx]/,a=8!==c(i+"08")||22!==c(i+"0x16");t.exports=a?function(t,n){var e=o(String(t));return c(e,n>>>0||(u.test(e)?16:10))}:c},function(t,n,e){"use strict";var r=e(12),o=e(65);r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(t,n,e){"use strict";var r=e(80),o=e(13),i=e(25),c=e(20),u=e(22),a=e(16),s=e(90),f=e(81),l=Math.max,p=Math.min,v=Math.floor,d=/\$([$&'`]|\d\d?|<[^>]*>)/g,g=/\$([$&'`]|\d\d?)/g;r("replace",2,(function(t,n,e){return[function(e,r){var o=a(this),i=void 0==e?void 0:e[t];return void 0!==i?i.call(e,o,r):n.call(String(o),e,r)},function(t,i){var a=e(n,t,this,i);if(a.done)return a.value;var v=o(t),d=String(this),g="function"===typeof i;g||(i=String(i));var h=v.global;if(h){var y=v.unicode;v.lastIndex=0}for(var x=[];;){var m=f(v,d);if(null===m)break;if(x.push(m),!h)break;""===String(m[0])&&(v.lastIndex=s(d,c(v.lastIndex),y))}for(var b,w="",S=0,j=0;j=S&&(w+=d.slice(S,_)+C,S=_+O.length)}return w+d.slice(S)}];function r(t,e,r,o,c,u){var a=r+t.length,s=o.length,f=g;return void 0!==c&&(c=i(c),f=d),n.call(u,f,(function(n,i){var u;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(a);case"<":u=c[i.slice(1,-1)];break;default:var f=+i;if(0===f)return n;if(f>s){var l=v(f/10);return 0===l?n:l<=s?void 0===o[l-1]?i.charAt(1):o[l-1]+i.charAt(1):n}u=o[f-1]}return void 0===u?"":u}))}}))},function(t,n,e){"use strict";var r=e(91).charAt;t.exports=function(t,n,e){return n+(e?r(t,n).length:1)}},function(t,n,e){var r=e(22),o=e(16),i=function(t){return function(n,e){var i,c,u=String(o(n)),a=r(e),s=u.length;return a<0||a>=s?t?"":void 0:(i=u.charCodeAt(a))<55296||i>56319||a+1===s||(c=u.charCodeAt(a+1))<56320||c>57343?t?u.charAt(a):i:t?u.slice(a,a+2):c-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},,,,,,,,,,,,,,,,,function(t,n,e){"use strict";var r=e(12),o=e(4),i=e(42),c=e(8),u=e(25),a=e(20),s=e(67),f=e(41),l=e(53),p=e(17)("isConcatSpreadable"),v=!o((function(){var t=[];return t[p]=!1,t.concat()[0]!==t})),d=l("concat"),g=function(t){if(!c(t))return!1;var n=t[p];return void 0!==n?!!n:i(t)};r({target:"Array",proto:!0,forced:!v||!d},{concat:function(t){var n,e,r,o,i,c=u(this),l=f(c,0),p=0;for(n=-1,r=arguments.length;n9007199254740991)throw TypeError("Maximum allowed index exceeded");for(e=0;e=9007199254740991)throw TypeError("Maximum allowed index exceeded");s(l,p++,i)}return l.length=p,l}})},function(t,n,e){"use strict";var r=e(12),o=e(44).filter;r({target:"Array",proto:!0,forced:!e(53)("filter")},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,n,e){"use strict";var r=e(12),o=e(47),i=e(25),c=e(4),u=e(70),a=[].sort,s=[1,2,3],f=c((function(){s.sort(void 0)})),l=c((function(){s.sort(null)})),p=u("sort");r({target:"Array",proto:!0,forced:f||!l||p},{sort:function(t){return void 0===t?a.call(i(this)):a.call(i(this),o(t))}})},function(t,n,e){"use strict";var r=e(12),o=e(40),i=e(22),c=e(20),u=e(25),a=e(41),s=e(67),f=e(53),l=Math.max,p=Math.min;r({target:"Array",proto:!0,forced:!f("splice")},{splice:function(t,n){var e,r,f,v,d,g,h=u(this),y=c(h.length),x=o(t,y),m=arguments.length;if(0===m?e=r=0:1===m?(e=0,r=y-x):(e=m-2,r=p(l(i(n),0),y-x)),y+e-r>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(f=a(h,r),v=0;vy-r+e;v--)delete h[v-1]}else if(e>r)for(v=y-r;v>x;v--)g=v+e-1,(d=v+r-1)in h?h[g]=h[d]:delete h[g];for(v=0;v').concat(f(s),"")}o()(r).appendTo(c),o()(".autosuggest-item").on("click",(function(t){u(n,t.target)})),n.off("keydown"),n.on("keydown",(function(t){if(38===t.keyCode||40===t.keyCode||13===t.keyCode){var e,r=n.closest(".ep-autosuggest-container").find(".autosuggest-list li"),o=r.filter(".selected");switch(t.keyCode){case 38:e=o.prev();break;case 40:r.hasClass("selected")?e=o.next():(r.first().addClass("selected"),e=r.first());break;case 13:return r.hasClass("selected")?(u(n,o.children("span").get(0)),!1):void 0}return e.is("li")?(o.removeClass("selected"),e.addClass("selected")):r.removeClass("selected"),38!==t.keyCode&&void 0}}))}function p(){o()(".autosuggest-list").empty(),o()(".ep-autosuggest").hide()}if(i.epas.endpointUrl&&""!==i.epas.endpointUrl){var v=o()('.ep-autosuggest, input[type="search"], .search-field, '.concat(i.epas.selector)),d=o()('
    ');v.each((function(t,n){var e=o()('
    '),r=o()(n);r.attr("autocomplete","off"),e.insertAfter(r);var i=r.siblings("label");r.closest("form").find(".ep-autosuggest-container").append(i).append(r),d.clone().insertAfter(r),r.trigger("elasticpress.input.moved")})),d.css({top:v.outerHeight()-1,"background-color":v.css("background-color")}),o()(v).each((function(t,n){o()(n).on("keyup keydown keypress",(function(t){38!==t.keyCode&&40!==t.keyCode||t.preventDefault(),27===t.keyCode&&p()}))})),v.each((function(t,n){var e=o()(n);e.on("keyup",function(t,n){var e=this,r=arguments,o=null;return function(){var i=e,c=r;window.clearTimeout(o),o=window.setTimeout((function(){t.apply(i,c)}),n)}}((function(t){if(38!==t.keyCode&&40!==t.keyCode&&13!==t.keyCode&&27!==t.keyCode){var n=e.val(),r=function(){if("undefined"==typeof window.epas){var t="No epas object defined";return console.warn(t),{error:t}}return window.epas}();if(!r.error){i.epas.postTypes,i.epas.postStatus,i.epas.searchFields,Object.assign({},i.epas.weightingDefaults,i.epas.weighting);2<=n.length?s(a(n,"ep_autosuggest_placeholder",r),n).done((function(t){if(0f;)for(var v,d=s(arguments[f++]),g=l?i(d).concat(l(d)):i(d),h=g.length,y=0;h>y;)v=g[y++],r&&!p.call(d,v)||(e[v]=d[v]);return e}:f},function(t,n,e){var r=e(9),o=e(2),i=e(52),c=e(284),u=e(18).f,a=e(50).f,s=e(114),f=e(76),l=e(36),p=e(4),v=e(287),d=e(17)("match"),g=o.RegExp,h=g.prototype,y=/a/g,x=/a/g,m=new g(y)!==y;if(r&&i("RegExp",!m||p((function(){return x[d]=!1,g(y)!=y||g(x)==x||"/a/i"!=g(y,"i")})))){for(var b=function(t,n){var e=this instanceof b,r=s(t),o=void 0===n;return!e&&r&&t.constructor===b&&o?t:c(m?new g(r&&!o?t.source:t,n):g((r=t instanceof b)?t.source:t,r&&o?f.call(t):n),e?this:h,b)},w=function(t){t in b||u(b,t,{configurable:!0,get:function(){return g[t]},set:function(n){g[t]=n}})},S=a(g),j=0;S.length>j;)w(S[j++]);h.constructor=b,b.prototype=h,l(o,"RegExp",b)}v("RegExp")},function(t,n,e){var r=e(8),o=e(285);t.exports=function(t,n,e){var i,c;return o&&"function"==typeof(i=n.constructor)&&i!==e&&r(c=i.prototype)&&c!==e.prototype&&o(t,c),t}},function(t,n,e){var r=e(13),o=e(286);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,n=!1,e={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(e,[]),n=e instanceof Array}catch(t){}return function(e,i){return r(e),o(i),n?t.call(e,i):e.__proto__=i,e}}():void 0)},function(t,n,e){var r=e(8);t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},function(t,n,e){"use strict";var r=e(37),o=e(18),i=e(17),c=e(9),u=i("species");t.exports=function(t){var n=r(t),e=o.f;c&&n&&!n[u]&&e(n,u,{configurable:!0,get:function(){return this}})}},function(t,n,e){"use strict";var r=e(36),o=e(13),i=e(4),c=e(76),u=RegExp.prototype,a=u.toString,s=i((function(){return"/a/b"!=a.call({source:"a",flags:"b"})})),f="toString"!=a.name;(s||f)&&r(RegExp.prototype,"toString",(function(){var t=o(this),n=String(t.source),e=t.flags;return"/"+n+"/"+String(void 0===e&&t instanceof RegExp&&!("flags"in u)?c.call(t):e)}),{unsafe:!0})}]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2luZG93XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwialF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdG8tc3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3duLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BhdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2JpbmQtY29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3doaXRlc3BhY2VzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZXhlYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zbG9wcHktYXJyYXktbWV0aG9kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaHRtbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXRyaW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucGFyc2UtaW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wYXJzZS1pbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNvcnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zcGxpY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXJlZ2V4cC5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvYXV0b3N1Z2dlc3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuYXNzaWduLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtYXNzaWduLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1wb3NzaWJsZS1wcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1zcGVjaWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qcyJdLCJuYW1lcyI6WyJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsImNoZWNrIiwiaXQiLCJNYXRoIiwiZ2xvYmFsVGhpcyIsIk8iLCJ3aW5kb3ciLCJzZWxmIiwiZ2xvYmFsIiwiRnVuY3Rpb24iLCJleGVjIiwiZXJyb3IiLCJqUXVlcnkiLCJmYWlscyIsImEiLCJERVNDUklQVE9SUyIsImRlZmluZVByb3BlcnR5TW9kdWxlIiwiY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yIiwiZiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImhpZGUiLCJyZWRlZmluZSIsInNldEdsb2JhbCIsImNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMiLCJpc0ZvcmNlZCIsIm9wdGlvbnMiLCJzb3VyY2UiLCJ0YXJnZXQiLCJ0YXJnZXRQcm9wZXJ0eSIsInNvdXJjZVByb3BlcnR5IiwiZGVzY3JpcHRvciIsIlRBUkdFVCIsIkdMT0JBTCIsIlNUQVRJQyIsInN0YXQiLCJub1RhcmdldEdldCIsImZvcmNlZCIsInVuZGVmaW5lZCIsInNoYW0iLCJpc09iamVjdCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIklTX1BVUkUiLCJzdG9yZSIsInB1c2giLCJ2ZXJzaW9uIiwiY29weXJpZ2h0Iiwic2hhcmVkIiwidWlkIiwiTkFUSVZFX1NZTUJPTCIsIklFOF9ET01fREVGSU5FIiwiYW5PYmplY3QiLCJ0b1ByaW1pdGl2ZSIsIm5hdGl2ZURlZmluZVByb3BlcnR5IiwiUCIsIkF0dHJpYnV0ZXMiLCJJbmRleGVkT2JqZWN0IiwicmVxdWlyZU9iamVjdENvZXJjaWJsZSIsInRvSW50ZWdlciIsIm1pbiIsImFyZ3VtZW50IiwiY2VpbCIsImZsb29yIiwiaXNOYU4iLCJ0b1N0cmluZyIsInNsaWNlIiwiYml0bWFwIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpbnB1dCIsIlBSRUZFUlJFRF9TVFJJTkciLCJmbiIsInZhbCIsInZhbHVlT2YiLCJjbGFzc29mIiwic3BsaXQiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlIiwidG9JbmRleGVkT2JqZWN0IiwiaGFzIiwibmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiY3JlYXRlRWxlbWVudCIsImlkIiwicG9zdGZpeCIsInJhbmRvbSIsImluZGV4T2YiLCJoaWRkZW5LZXlzIiwibmFtZXMiLCJyZXN1bHQiLCJsZW5ndGgiLCJuYXRpdmVGdW5jdGlvblRvU3RyaW5nIiwiSW50ZXJuYWxTdGF0ZU1vZHVsZSIsImdldEludGVybmFsU3RhdGUiLCJlbmZvcmNlSW50ZXJuYWxTdGF0ZSIsImVuZm9yY2UiLCJURU1QTEFURSIsInVuc2FmZSIsInNpbXBsZSIsImpvaW4iLCJ0aGlzIiwicGF0aCIsImFGdW5jdGlvbiIsInZhcmlhYmxlIiwibmFtZXNwYWNlIiwibWV0aG9kIiwiYXJndW1lbnRzIiwiZG9jdW1lbnQiLCJFWElTVFMiLCJrZXlzIiwibWF4IiwiaW5kZXgiLCJpbnRlZ2VyIiwiaXNBcnJheSIsIlNQRUNJRVMiLCJ3ZWxsS25vd25TeW1ib2wiLCJvcmlnaW5hbEFycmF5IiwiQyIsImNvbnN0cnVjdG9yIiwiQXJyYXkiLCJhcmciLCJ0b09iamVjdCIsInRvTGVuZ3RoIiwiYXJyYXlTcGVjaWVzQ3JlYXRlIiwiY3JlYXRlTWV0aG9kIiwiVFlQRSIsIklTX01BUCIsIklTX0ZJTFRFUiIsIklTX1NPTUUiLCJJU19FVkVSWSIsIklTX0ZJTkRfSU5ERVgiLCJOT19IT0xFUyIsIiR0aGlzIiwiY2FsbGJhY2tmbiIsInRoYXQiLCJzcGVjaWZpY0NyZWF0ZSIsImJvdW5kRnVuY3Rpb24iLCJmb3JFYWNoIiwibWFwIiwiZmlsdGVyIiwic29tZSIsImV2ZXJ5IiwiZmluZCIsImZpbmRJbmRleCIsIm5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTkFTSE9STl9CVUciLCIxIiwiViIsInRvQWJzb2x1dGVJbmRleCIsIklTX0lOQ0xVREVTIiwiZWwiLCJmcm9tSW5kZXgiLCJpbmNsdWRlcyIsImciLCJlIiwiaW50ZXJuYWxPYmplY3RLZXlzIiwiY29uY2F0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInJlcGxhY2VtZW50IiwiZmVhdHVyZSIsImRldGVjdGlvbiIsImRhdGEiLCJub3JtYWxpemUiLCJQT0xZRklMTCIsIk5BVElWRSIsInN0cmluZyIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsIk1FVEhPRF9OQU1FIiwiYXJyYXkiLCJmb28iLCJCb29sZWFuIiwic2V0IiwiTkFUSVZFX1dFQUtfTUFQIiwib2JqZWN0SGFzIiwic2hhcmVkS2V5IiwiV2Vha01hcCIsIndtZ2V0Iiwid21oYXMiLCJ3bXNldCIsIm1ldGFkYXRhIiwiU1RBVEUiLCJnZXR0ZXJGb3IiLCJzdGF0ZSIsInR5cGUiLCJ0ZXN0Iiwib3duS2V5cyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSIsImdldEJ1aWx0SW4iLCJnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlIiwiYiIsImFwcGx5IiwiZW51bUJ1Z0tleXMiLCJyZWdleHBGbGFncyIsIm5hdGl2ZUV4ZWMiLCJSZWdFeHAiLCJuYXRpdmVSZXBsYWNlIiwicGF0Y2hlZEV4ZWMiLCJVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkciLCJyZTEiLCJyZTIiLCJsYXN0SW5kZXgiLCJOUENHX0lOQ0xVREVEIiwic3RyIiwicmVDb3B5IiwibWF0Y2giLCJyZSIsInByb3BlcnR5S2V5IiwiVU5TQ09QQUJMRVMiLCJBcnJheVByb3RvdHlwZSIsImRlZmluZVByb3BlcnRpZXMiLCJodG1sIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50IiwiSUVfUFJPVE8iLCJFbXB0eSIsImNyZWF0ZURpY3QiLCJpZnJhbWVEb2N1bWVudCIsImlmcmFtZSIsInN0eWxlIiwiZGlzcGxheSIsImFwcGVuZENoaWxkIiwic3JjIiwiY29udGVudFdpbmRvdyIsIm9wZW4iLCJ3cml0ZSIsImx0IiwiY2xvc2UiLCJGIiwiUHJvcGVydGllcyIsIm9iamVjdEtleXMiLCJ3aGl0ZXNwYWNlIiwibHRyaW0iLCJydHJpbSIsInN0YXJ0IiwiZW5kIiwidHJpbSIsImlnbm9yZUNhc2UiLCJtdWx0aWxpbmUiLCJkb3RBbGwiLCJ1bmljb2RlIiwic3RpY2t5IiwiJCIsIiRtYXAiLCJwcm90byIsImFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQiLCJyZWdleHBFeGVjIiwiUkVQTEFDRV9TVVBQT1JUU19OQU1FRF9HUk9VUFMiLCJncm91cHMiLCJTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMiLCJvcmlnaW5hbEV4ZWMiLCJLRVkiLCJTWU1CT0wiLCJERUxFR0FURVNfVE9fU1lNQk9MIiwiREVMRUdBVEVTX1RPX0VYRUMiLCJleGVjQ2FsbGVkIiwibmF0aXZlUmVnRXhwTWV0aG9kIiwibWV0aG9kcyIsIm5hdGl2ZU1ldGhvZCIsInJlZ2V4cCIsImFyZzIiLCJmb3JjZVN0cmluZ01ldGhvZCIsImRvbmUiLCJzdHJpbmdNZXRob2QiLCJyZWdleE1ldGhvZCIsIlIiLCJTIiwiJGZpbmQiLCJhZGRUb1Vuc2NvcGFibGVzIiwiU0tJUFNfSE9MRVMiLCJwYXJzZUludEltcGxlbWVudGF0aW9uIiwicGFyc2VJbnQiLCJ3aGl0ZXNwYWNlcyIsIm5hdGl2ZVBhcnNlSW50IiwiaGV4IiwiRk9SQ0VEIiwicmFkaXgiLCJmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyIsImFkdmFuY2VTdHJpbmdJbmRleCIsInJlZ0V4cEV4ZWMiLCJTVUJTVElUVVRJT05fU1lNQk9MUyIsIlNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEIiwiUkVQTEFDRSIsIm1heWJlQ2FsbE5hdGl2ZSIsInNlYXJjaFZhbHVlIiwicmVwbGFjZVZhbHVlIiwicmVwbGFjZXIiLCJyZXMiLCJyeCIsImZ1bmN0aW9uYWxSZXBsYWNlIiwiZnVsbFVuaWNvZGUiLCJyZXN1bHRzIiwiYWNjdW11bGF0ZWRSZXN1bHQiLCJuZXh0U291cmNlUG9zaXRpb24iLCJtYXRjaGVkIiwicG9zaXRpb24iLCJjYXB0dXJlcyIsImoiLCJuYW1lZENhcHR1cmVzIiwicmVwbGFjZXJBcmdzIiwiZ2V0U3Vic3RpdHV0aW9uIiwidGFpbFBvcyIsInN5bWJvbHMiLCJjaCIsImNhcHR1cmUiLCJjaGFyQXQiLCJDT05WRVJUX1RPX1NUUklORyIsInBvcyIsImZpcnN0Iiwic2Vjb25kIiwic2l6ZSIsImNoYXJDb2RlQXQiLCJjb2RlQXQiLCJjcmVhdGVQcm9wZXJ0eSIsIklTX0NPTkNBVF9TUFJFQURBQkxFIiwiSVNfQ09OQ0FUX1NQUkVBREFCTEVfU1VQUE9SVCIsIlNQRUNJRVNfU1VQUE9SVCIsImlzQ29uY2F0U3ByZWFkYWJsZSIsInNwcmVhZGFibGUiLCJrIiwibGVuIiwiRSIsIkEiLCIkZmlsdGVyIiwic2xvcHB5QXJyYXlNZXRob2QiLCJuYXRpdmVTb3J0Iiwic29ydCIsIkZBSUxTX09OX1VOREVGSU5FRCIsIkZBSUxTX09OX05VTEwiLCJTTE9QUFlfTUVUSE9EIiwiY29tcGFyZWZuIiwic3BsaWNlIiwiZGVsZXRlQ291bnQiLCJpbnNlcnRDb3VudCIsImFjdHVhbERlbGV0ZUNvdW50IiwiZnJvbSIsInRvIiwiYWN0dWFsU3RhcnQiLCJhcmd1bWVudHNMZW5ndGgiLCJGdW5jdGlvblByb3RvdHlwZSIsIkZ1bmN0aW9uUHJvdG90eXBlVG9TdHJpbmciLCJuYW1lUkUiLCJuYXRpdmVLZXlzIiwiTUFUQ0giLCJpc1JlZ0V4cCIsImdvVG9BdXRvc3VnZ2VzdEl0ZW0iLCIkbG9jYWxJbnB1dCIsInVybCIsImRldGFpbCIsImV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkaXNwYXRjaEV2ZW50Iiwic2VhcmNoVGVybSIsImVwYXMiLCJ0cmlnZ2VyQW5hbHl0aWNzIiwiZ3RhZyIsImFjdGlvbiIsInRyaWdnZXJFdmVudHMiLCJsb2NhdGlvbiIsImhyZWYiLCJzZWxlY3RJdGVtIiwiZWxlbWVudCIsImRhdGFzZXQiLCJ0ZXh0Iiwic2VsZWN0QXV0b3N1Z2dlc3RJdGVtIiwiaW5uZXJUZXh0IiwiY2xvc2VzdCIsInN1Ym1pdCIsInN1Ym1pdFNlYXJjaEZvcm0iLCJidWlsZFNlYXJjaFF1ZXJ5Iiwic2VhcmNoVGV4dCIsInBsYWNlaG9sZGVyIiwidGVybSIsInF1ZXJ5IiwiZXNjYXBlUmVnRXhwIiwiZXNTZWFyY2giLCJzdXBwb3J0IiwiY29ycyIsImFqYXhDb25maWciLCJlbmRwb2ludFVybCIsImRhdGFUeXBlIiwiY3Jvc3NEb21haW4iLCJjb250ZW50VHlwZSIsImFkZFNlYXJjaFRlcm1IZWFkZXIiLCJoZWFkZXJzIiwiYWpheCIsImVzY2FwZURvdWJsZVF1b3RlcyIsInVwZGF0ZUF1dG9zdWdnZXN0Qm94IiwiaXRlbVN0cmluZyIsIiRsb2NhbEVTQ29udGFpbmVyIiwiJGxvY2FsU3VnZ2VzdExpc3QiLCJlbXB0eSIsIm9mZiIsInNob3ciLCJhcHBlbmRUbyIsIm9uIiwia2V5Q29kZSIsIiRuZXh0IiwiJHJlc3VsdHMiLCIkY3VycmVudCIsInByZXYiLCJoYXNDbGFzcyIsIm5leHQiLCJhZGRDbGFzcyIsImNoaWxkcmVuIiwiaXMiLCJyZW1vdmVDbGFzcyIsImhpZGVBdXRvc3VnZ2VzdEJveCIsIiRlcElucHV0Iiwic2VsZWN0b3IiLCIkZXBBdXRvc3VnZ2VzdCIsImVhY2giLCIkZXBDb250YWluZXIiLCIkaW5wdXQiLCJhdHRyIiwiaW5zZXJ0QWZ0ZXIiLCIkZXBMYWJlbCIsInNpYmxpbmdzIiwiYXBwZW5kIiwiY2xvbmUiLCJ0cmlnZ2VyIiwiY3NzIiwidG9wIiwib3V0ZXJIZWlnaHQiLCJwcmV2ZW50RGVmYXVsdCIsImxvY2FsSW5wdXQiLCJkZWxheSIsInRpbWVyIiwiY29udGV4dCIsImFyZ3MiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiZGVib3VuY2UiLCJxdWVyeUpTT04iLCJjb25zb2xlIiwid2FybiIsImdldEpzb25RdWVyeSIsInBvc3RUeXBlcyIsInBvc3RTdGF0dXMiLCJzZWFyY2hGaWVsZHMiLCJhc3NpZ24iLCJ3ZWlnaHRpbmdEZWZhdWx0cyIsIndlaWdodGluZyIsInJlc3BvbnNlIiwiX3NoYXJkcyIsInN1Y2Nlc3NmdWwiLCJ1c2VkUG9zdHMiLCJmaWx0ZXJlZE9iamVjdHMiLCJoaXRzIiwidG9JbnNlcnQiLCJoaXQiLCJyZXRhaW4iLCJfc291cmNlIiwidGVybXMiLCJjdXJyZW50VGVybSIsInRlcm1fb3JkZXIiLCJvcmRlcmVkSW5zZXJ0cyIsImluc2VydEl0ZW0iLCJjaGVja0Zvck9yZGVyZWRQb3N0cyIsInBvc3RfdGl0bGUiLCJwZXJtYWxpbmsiLCJwb3N0SWQiLCJwb3N0X2lkIiwiZXBhc0FQSSIsIm5hdGl2ZUFzc2lnbiIsIkIiLCJzeW1ib2wiLCJjaHIiLCJUIiwiaW5oZXJpdElmUmVxdWlyZWQiLCJnZXRGbGFncyIsInNldFNwZWNpZXMiLCJOYXRpdmVSZWdFeHAiLCJSZWdFeHBQcm90b3R5cGUiLCJDT1JSRUNUX05FVyIsIlJlZ0V4cFdyYXBwZXIiLCJwYXR0ZXJuIiwiZmxhZ3MiLCJ0aGlzSXNSZWdFeHAiLCJwYXR0ZXJuSXNSZWdFeHAiLCJmbGFnc0FyZVVuZGVmaW5lZCIsInByb3h5Iiwic2V0UHJvdG90eXBlT2YiLCJkdW1teSIsIldyYXBwZXIiLCJOZXdUYXJnZXQiLCJOZXdUYXJnZXRQcm90b3R5cGUiLCJhUG9zc2libGVQcm90b3R5cGUiLCJzZXR0ZXIiLCJDT1JSRUNUX1NFVFRFUiIsIl9fcHJvdG9fXyIsIkNPTlNUUlVDVE9SX05BTUUiLCJDb25zdHJ1Y3RvciIsIm5hdGl2ZVRvU3RyaW5nIiwiTk9UX0dFTkVSSUMiLCJJTkNPUlJFQ1RfTkFNRSIsInJmIl0sIm1hcHBpbmdzIjoiYUFDRSxJQUFJQSxFQUFtQixHQUd2QixTQUFTQyxFQUFvQkMsR0FHNUIsR0FBR0YsRUFBaUJFLEdBQ25CLE9BQU9GLEVBQWlCRSxHQUFVQyxRQUduQyxJQUFJQyxFQUFTSixFQUFpQkUsR0FBWSxDQUN6Q0csRUFBR0gsRUFDSEksR0FBRyxFQUNISCxRQUFTLElBVVYsT0FOQUksRUFBUUwsR0FBVU0sS0FBS0osRUFBT0QsUUFBU0MsRUFBUUEsRUFBT0QsUUFBU0YsR0FHL0RHLEVBQU9FLEdBQUksRUFHSkYsRUFBT0QsUUFLZkYsRUFBb0JRLEVBQUlGLEVBR3hCTixFQUFvQlMsRUFBSVYsRUFHeEJDLEVBQW9CVSxFQUFJLFNBQVNSLEVBQVNTLEVBQU1DLEdBQzNDWixFQUFvQmEsRUFBRVgsRUFBU1MsSUFDbENHLE9BQU9DLGVBQWViLEVBQVNTLEVBQU0sQ0FBRUssWUFBWSxFQUFNQyxJQUFLTCxLQUtoRVosRUFBb0JrQixFQUFJLFNBQVNoQixHQUNYLHFCQUFYaUIsUUFBMEJB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NkJDSlgsSUFBSTBMLEVBQWEsRUFBUSxJQUNyQjVLLEVBQXVCLEVBQVEsSUFDL0JrRyxFQUFrQixFQUFRLElBQzFCbkcsRUFBYyxFQUFRLEdBRXRCa0csRUFBVUMsRUFBZ0IsV0FFOUJsSixFQUFPRCxRQUFVLFNBQVU0Z0IsR0FDekIsSUFBSUMsRUFBY2hULEVBQVcrUyxHQUN6Qi9mLEVBQWlCb0MsRUFBcUJFLEVBRXRDSCxHQUFlNmQsSUFBZ0JBLEVBQVkzWCxJQUM3Q3JJLEVBQWVnZ0IsRUFBYTNYLEVBQVMsQ0FDbkM5QyxjQUFjLEVBQ2RyRixJQUFLLFdBQWMsT0FBT3FILFUsNkJDZGhDLElBQUk5RSxFQUFXLEVBQVEsSUFDbkI4QixFQUFXLEVBQVEsSUFDbkJ0QyxFQUFRLEVBQVEsR0FDaEJnZCxFQUFRLEVBQVEsSUFHaEJKLEVBQWtCclIsT0FBT3ZNLFVBQ3pCZ2YsRUFBaUJwQixFQUF5QixTQUUxQ3FCLEVBQWNqZSxHQUFNLFdBQWMsTUFBMkQsUUFBcERnZSxFQUFlemdCLEtBQUssQ0FBRXNELE9BQVEsSUFBS21jLE1BQU8sU0FFbkZrQixFQU5ZLFlBTUtGLEVBQWVyZ0IsTUFJaENzZ0IsR0FBZUMsSUFDakIxZCxFQUFTK0ssT0FBT3ZNLFVBWEYsWUFXd0IsV0FDcEMsSUFBSTRRLEVBQUl0TixFQUFTZ0QsTUFDYnBHLEVBQUkwQyxPQUFPZ08sRUFBRS9PLFFBQ2JzZCxFQUFLdk8sRUFBRW9OLE1BRVgsTUFBTyxJQUFNOWQsRUFBSSxJQURUMEMsWUFBY0osSUFBUDJjLEdBQW9Cdk8sYUFBYXJFLFVBQVksVUFBV3FSLEdBQW1CSSxFQUFNemYsS0FBS3FTLEdBQUt1TyxLQUV6RyxDQUFFaFosUUFBUSIsImZpbGUiOiJqcy9hdXRvc3VnZ2VzdC1zY3JpcHQubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDI4MCk7XG4iLCJ2YXIgTyA9ICdvYmplY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09IE1hdGggJiYgaXQ7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxubW9kdWxlLmV4cG9ydHMgPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gTyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09IE8gJiYgd2luZG93KSB8fFxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSBPICYmIHNlbGYpIHx8XG4gIGNoZWNrKHR5cGVvZiBnbG9iYWwgPT0gTyAmJiBnbG9iYWwpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gd2luZG93OyIsIm1vZHVsZS5leHBvcnRzID0galF1ZXJ5OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcblxuLypcbiAgb3B0aW9ucy50YXJnZXQgICAgICAtIG5hbWUgb2YgdGhlIHRhcmdldCBvYmplY3RcbiAgb3B0aW9ucy5nbG9iYWwgICAgICAtIHRhcmdldCBpcyB0aGUgZ2xvYmFsIG9iamVjdFxuICBvcHRpb25zLnN0YXQgICAgICAgIC0gZXhwb3J0IGFzIHN0YXRpYyBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnByb3RvICAgICAgIC0gZXhwb3J0IGFzIHByb3RvdHlwZSBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnJlYWwgICAgICAgIC0gcmVhbCBwcm90b3R5cGUgbWV0aG9kIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy5mb3JjZWQgICAgICAtIGV4cG9ydCBldmVuIGlmIHRoZSBuYXRpdmUgZmVhdHVyZSBpcyBhdmFpbGFibGVcbiAgb3B0aW9ucy5iaW5kICAgICAgICAtIGJpbmQgbWV0aG9kcyB0byB0aGUgdGFyZ2V0LCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMud3JhcCAgICAgICAgLSB3cmFwIGNvbnN0cnVjdG9ycyB0byBwcmV2ZW50aW5nIGdsb2JhbCBwb2xsdXRpb24sIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy51bnNhZmUgICAgICAtIHVzZSB0aGUgc2ltcGxlIGFzc2lnbm1lbnQgb2YgcHJvcGVydHkgaW5zdGVhZCBvZiBkZWxldGUgKyBkZWZpbmVQcm9wZXJ0eVxuICBvcHRpb25zLnNoYW0gICAgICAgIC0gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICBvcHRpb25zLmVudW1lcmFibGUgIC0gZXhwb3J0IGFzIGVudW1lcmFibGUgcHJvcGVydHlcbiAgb3B0aW9ucy5ub1RhcmdldEdldCAtIHByZXZlbnQgY2FsbGluZyBhIGdldHRlciBvbiB0YXJnZXRcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRpb25zLCBzb3VyY2UpIHtcbiAgdmFyIFRBUkdFVCA9IG9wdGlvbnMudGFyZ2V0O1xuICB2YXIgR0xPQkFMID0gb3B0aW9ucy5nbG9iYWw7XG4gIHZhciBTVEFUSUMgPSBvcHRpb25zLnN0YXQ7XG4gIHZhciBGT1JDRUQsIHRhcmdldCwga2V5LCB0YXJnZXRQcm9wZXJ0eSwgc291cmNlUHJvcGVydHksIGRlc2NyaXB0b3I7XG4gIGlmIChHTE9CQUwpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWw7XG4gIH0gZWxzZSBpZiAoU1RBVElDKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsW1RBUkdFVF0gfHwgc2V0R2xvYmFsKFRBUkdFVCwge30pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldCA9IChnbG9iYWxbVEFSR0VUXSB8fCB7fSkucHJvdG90eXBlO1xuICB9XG4gIGlmICh0YXJnZXQpIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIHNvdXJjZVByb3BlcnR5ID0gc291cmNlW2tleV07XG4gICAgaWYgKG9wdGlvbnMubm9UYXJnZXRHZXQpIHtcbiAgICAgIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xuICAgICAgdGFyZ2V0UHJvcGVydHkgPSBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG4gICAgfSBlbHNlIHRhcmdldFByb3BlcnR5ID0gdGFyZ2V0W2tleV07XG4gICAgRk9SQ0VEID0gaXNGb3JjZWQoR0xPQkFMID8ga2V5IDogVEFSR0VUICsgKFNUQVRJQyA/ICcuJyA6ICcjJykgKyBrZXksIG9wdGlvbnMuZm9yY2VkKTtcbiAgICAvLyBjb250YWluZWQgaW4gdGFyZ2V0XG4gICAgaWYgKCFGT1JDRUQgJiYgdGFyZ2V0UHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSA9PT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KSBjb250aW51ZTtcbiAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICB9XG4gICAgLy8gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICAgIGlmIChvcHRpb25zLnNoYW0gfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBoaWRlKHNvdXJjZVByb3BlcnR5LCAnc2hhbScsIHRydWUpO1xuICAgIH1cbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGl0KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IHNldEdsb2JhbChTSEFSRUQsIHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246ICczLjIuMScsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuIiwiLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtc3ltYm9sJyk7XG5cbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIHN0b3JlID0gc2hhcmVkKCd3a3MnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID0gTkFUSVZFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV1cbiAgICB8fCAoTkFUSVZFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG5cbnZhciBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlRGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9sZW5ndGhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBhcmd1bWVudCA+IDAgPyBtaW4odG9JbnRlZ2VyKGFyZ3VtZW50KSwgMHgxRkZGRkZGRkZGRkZGRikgOiAwOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwidmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgVG9JbnRlZ2VyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvaW50ZWdlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzTmFOKGFyZ3VtZW50ID0gK2FyZ3VtZW50KSA/IDAgOiAoYXJndW1lbnQgPiAwID8gZmxvb3IgOiBjZWlsKShhcmd1bWVudCk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGhpZGUoZ2xvYmFsLCBrZXksIHZhbHVlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCJ2YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9wcmltaXRpdmVcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIFBSRUZFUlJFRF9TVFJJTkcpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChQUkVGRVJSRURfU1RSSU5HICYmIHR5cGVvZiAoZm4gPSBpbnB1dC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGlucHV0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFQUkVGRVJSRURfU1RSSU5HICYmIHR5cGVvZiAoZm4gPSBpbnB1dC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsIi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdjb25zdHJ1Y3RvcicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ3ZhbHVlT2YnXG5dO1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgc3BsaXQgPSAnJy5zcGxpdDtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgcmV0dXJuICFPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PSAnU3RyaW5nJyA/IHNwbGl0LmNhbGwoaXQsICcnKSA6IE9iamVjdChpdCk7XG59IDogT2JqZWN0O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxudmFyIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLmNhbGwoTywgUCksIE9bUF0pO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNoYXJlZCgnbmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZycsIEZ1bmN0aW9uLnRvU3RyaW5nKTtcbiIsInZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgU3RyaW5nKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArICgrK2lkICsgcG9zdGZpeCkudG9TdHJpbmcoMzYpO1xufTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSAhaGFzKGhpZGRlbktleXMsIGtleSkgJiYgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5pbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgVEVNUExBVEUgPSBTdHJpbmcobmF0aXZlRnVuY3Rpb25Ub1N0cmluZykuc3BsaXQoJ3RvU3RyaW5nJyk7XG5cbnNoYXJlZCgnaW5zcGVjdFNvdXJjZScsIGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gbmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKGl0KTtcbn0pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgdW5zYWZlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy51bnNhZmUgOiBmYWxzZTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMuZW51bWVyYWJsZSA6IGZhbHNlO1xuICB2YXIgbm9UYXJnZXRHZXQgPSBvcHRpb25zID8gISFvcHRpb25zLm5vVGFyZ2V0R2V0IDogZmFsc2U7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmICh0eXBlb2Yga2V5ID09ICdzdHJpbmcnICYmICFoYXModmFsdWUsICduYW1lJykpIGhpZGUodmFsdWUsICduYW1lJywga2V5KTtcbiAgICBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSkuc291cmNlID0gVEVNUExBVEUuam9pbih0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8ga2V5IDogJycpO1xuICB9XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIHNldEdsb2JhbChrZXksIHZhbHVlKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAoIXVuc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gIH0gZWxzZSBpZiAoIW5vVGFyZ2V0R2V0ICYmIE9ba2V5XSkge1xuICAgIHNpbXBsZSA9IHRydWU7XG4gIH1cbiAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gIGVsc2UgaGlkZShPLCBrZXksIHZhbHVlKTtcbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKHRoaXMpO1xufSk7XG4iLCJ2YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKHZhcmlhYmxlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFyaWFibGUgPT0gJ2Z1bmN0aW9uJyA/IHZhcmlhYmxlIDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKHBhdGhbbmFtZXNwYWNlXSkgfHwgYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKVxuICAgIDogcGF0aFtuYW1lc3BhY2VdICYmIHBhdGhbbmFtZXNwYWNlXVttZXRob2RdIHx8IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBIZWxwZXIgZm9yIGEgcG9wdWxhciByZXBlYXRpbmcgY2FzZSBvZiB0aGUgc3BlYzpcbi8vIExldCBpbnRlZ2VyIGJlID8gVG9JbnRlZ2VyKGluZGV4KS5cbi8vIElmIGludGVnZXIgPCAwLCBsZXQgcmVzdWx0IGJlIG1heCgobGVuZ3RoICsgaW50ZWdlciksIDApOyBlbHNlIGxldCByZXN1bHQgYmUgbWluKGxlbmd0aCwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW50ZWdlciA8IDAgPyBtYXgoaW50ZWdlciArIGxlbmd0aCwgMCkgOiBtaW4oaW50ZWdlciwgbGVuZ3RoKTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG4vLyBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5c3BlY2llc2NyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWxBcnJheSwgbGVuZ3RoKSB7XG4gIHZhciBDO1xuICBpZiAoaXNBcnJheShvcmlnaW5hbEFycmF5KSkge1xuICAgIEMgPSBvcmlnaW5hbEFycmF5LmNvbnN0cnVjdG9yO1xuICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrXG4gICAgaWYgKHR5cGVvZiBDID09ICdmdW5jdGlvbicgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSkgQyA9IHVuZGVmaW5lZDtcbiAgICBlbHNlIGlmIChpc09iamVjdChDKSkge1xuICAgICAgQyA9IENbU1BFQ0lFU107XG4gICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gcmV0dXJuIG5ldyAoQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDKShsZW5ndGggPT09IDAgPyAwIDogbGVuZ3RoKTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG4vLyBgSXNBcnJheWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2FycmF5XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNsYXNzb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcbiIsInZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2JpbmQtY29udGV4dCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcblxudmFyIHB1c2ggPSBbXS5wdXNoO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgZm9yRWFjaCwgbWFwLCBmaWx0ZXIsIHNvbWUsIGV2ZXJ5LCBmaW5kLCBmaW5kSW5kZXggfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCwgc3BlY2lmaWNDcmVhdGUpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgc2VsZiA9IEluZGV4ZWRPYmplY3QoTyk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY3JlYXRlID0gc3BlY2lmaWNDcmVhdGUgfHwgYXJyYXlTcGVjaWVzQ3JlYXRlO1xuICAgIHZhciB0YXJnZXQgPSBJU19NQVAgPyBjcmVhdGUoJHRoaXMsIGxlbmd0aCkgOiBJU19GSUxURVIgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkO1xuICAgIHZhciB2YWx1ZSwgcmVzdWx0O1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZikge1xuICAgICAgdmFsdWUgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlc3VsdCA9IGJvdW5kRnVuY3Rpb24odmFsdWUsIGluZGV4LCBPKTtcbiAgICAgIGlmIChUWVBFKSB7XG4gICAgICAgIGlmIChJU19NQVApIHRhcmdldFtpbmRleF0gPSByZXN1bHQ7IC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAvLyBzb21lXG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gdmFsdWU7ICAgICAgICAgICAgIC8vIGZpbmRcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBpbmRleDsgICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiBwdXNoLmNhbGwodGFyZ2V0LCB2YWx1ZSk7IC8vIGZpbHRlclxuICAgICAgICB9IGVsc2UgaWYgKElTX0VWRVJZKSByZXR1cm4gZmFsc2U7ICAvLyBldmVyeVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSVNfRklORF9JTkRFWCA/IC0xIDogSVNfU09NRSB8fCBJU19FVkVSWSA/IElTX0VWRVJZIDogdGFyZ2V0O1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mb3JlYWNoXG4gIGZvckVhY2g6IGNyZWF0ZU1ldGhvZCgwKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5tYXBgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubWFwXG4gIG1hcDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlcmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maWx0ZXJcbiAgZmlsdGVyOiBjcmVhdGVNZXRob2QoMiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuc29tZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zb21lXG4gIHNvbWU6IGNyZWF0ZU1ldGhvZCgzKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5ldmVyeWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5ldmVyeVxuICBldmVyeTogY3JlYXRlTWV0aG9kKDQpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZFxuICBmaW5kOiBjcmVhdGVNZXRob2QoNSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZEluZGV4YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRJbmRleFxuICBmaW5kSW5kZXg6IGNyZWF0ZU1ldGhvZCg2KVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICFuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsInZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGl0KSArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwidmFyIGc7XG5cbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXG5nID0gKGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcztcbn0pKCk7XG5cbnRyeSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxuXHRnID0gZyB8fCBuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xufSBjYXRjaCAoZSkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcbn1cblxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3Ncbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cblxubW9kdWxlLmV4cG9ydHMgPSBnO1xuIiwidmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCJleHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogdHlwZW9mIGRldGVjdGlvbiA9PSAnZnVuY3Rpb24nID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUpIHtcbiAgcmV0dXJuICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG4gICAgdmFyIGNvbnN0cnVjdG9yID0gYXJyYXkuY29uc3RydWN0b3IgPSB7fTtcbiAgICBjb25zdHJ1Y3RvcltTUEVDSUVTXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGZvbzogMSB9O1xuICAgIH07XG4gICAgcmV0dXJuIGFycmF5W01FVEhPRF9OQU1FXShCb29sZWFuKS5mb28gIT09IDE7XG4gIH0pO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCJ2YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciBvYmplY3RIYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQKSB7XG4gIHZhciBzdG9yZSA9IG5ldyBXZWFrTWFwKCk7XG4gIHZhciB3bWdldCA9IHN0b3JlLmdldDtcbiAgdmFyIHdtaGFzID0gc3RvcmUuaGFzO1xuICB2YXIgd21zZXQgPSBzdG9yZS5zZXQ7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICB3bXNldC5jYWxsKHN0b3JlLCBpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtZ2V0LmNhbGwoc3RvcmUsIGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtaGFzLmNhbGwoc3RvcmUsIGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaGlkZShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gb2JqZWN0SGFzKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyAmJiAvbmF0aXZlIGNvZGUvLnRlc3QobmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKFdlYWtNYXApKTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhcyh0YXJnZXQsIGtleSkpIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgfVxufTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuIiwidmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWZ1bmN0aW9uJyk7XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCk7XG4gICAgfTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHJldHVybiAhU3RyaW5nKFN5bWJvbCgpKTtcbn0pO1xuIiwidmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxuLy8gYE9iamVjdC5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5rZXlzXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCIvLyBhIHN0cmluZyBvZiBhbGwgdmFsaWQgdW5pY29kZSB3aGl0ZXNwYWNlc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbm1vZHVsZS5leHBvcnRzID0gJ1xcdTAwMDlcXHUwMDBBXFx1MDAwQlxcdTAwMENcXHUwMDBEXFx1MDAyMFxcdTAwQTBcXHUxNjgwXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHUyMDI4XFx1MjAyOVxcdUZFRkYnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZ2V4cEZsYWdzID0gcmVxdWlyZSgnLi9yZWdleHAtZmxhZ3MnKTtcblxudmFyIG5hdGl2ZUV4ZWMgPSBSZWdFeHAucHJvdG90eXBlLmV4ZWM7XG4vLyBUaGlzIGFsd2F5cyByZWZlcnMgdG8gdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGVcbi8vIFN0cmluZyNyZXBsYWNlIHBvbHlmaWxsIHVzZXMgLi9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzLFxuLy8gd2hpY2ggbG9hZHMgdGhpcyBmaWxlIGJlZm9yZSBwYXRjaGluZyB0aGUgbWV0aG9kLlxudmFyIG5hdGl2ZVJlcGxhY2UgPSBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2U7XG5cbnZhciBwYXRjaGVkRXhlYyA9IG5hdGl2ZUV4ZWM7XG5cbnZhciBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUxID0gL2EvO1xuICB2YXIgcmUyID0gL2IqL2c7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTEsICdhJyk7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTIsICdhJyk7XG4gIHJldHVybiByZTEubGFzdEluZGV4ICE9PSAwIHx8IHJlMi5sYXN0SW5kZXggIT09IDA7XG59KSgpO1xuXG4vLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cCwgY29waWVkIGZyb20gZXM1LXNoaW0ncyBTdHJpbmcjc3BsaXQgcGF0Y2guXG52YXIgTlBDR19JTkNMVURFRCA9IC8oKT8/Ly5leGVjKCcnKVsxXSAhPT0gdW5kZWZpbmVkO1xuXG52YXIgUEFUQ0ggPSBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgfHwgTlBDR19JTkNMVURFRDtcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHIpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBsYXN0SW5kZXgsIHJlQ29weSwgbWF0Y2gsIGk7XG5cbiAgICBpZiAoTlBDR19JTkNMVURFRCkge1xuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXicgKyByZS5zb3VyY2UgKyAnJCg/IVxcXFxzKScsIHJlZ2V4cEZsYWdzLmNhbGwocmUpKTtcbiAgICB9XG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORykgbGFzdEluZGV4ID0gcmUubGFzdEluZGV4O1xuXG4gICAgbWF0Y2ggPSBuYXRpdmVFeGVjLmNhbGwocmUsIHN0cik7XG5cbiAgICBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HICYmIG1hdGNoKSB7XG4gICAgICByZS5sYXN0SW5kZXggPSByZS5nbG9iYWwgPyBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCA6IGxhc3RJbmRleDtcbiAgICB9XG4gICAgaWYgKE5QQ0dfSU5DTFVERUQgJiYgbWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAgIC8vIGZvciBOUENHLCBsaWtlIElFOC4gTk9URTogVGhpcyBkb2Vzbicgd29yayBmb3IgLyguPyk/L1xuICAgICAgbmF0aXZlUmVwbGFjZS5jYWxsKG1hdGNoWzBdLCByZUNvcHksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZmluZWQpIG1hdGNoW2ldID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHByb3BlcnR5S2V5ID0gdG9QcmltaXRpdmUoa2V5KTtcbiAgaWYgKHByb3BlcnR5S2V5IGluIG9iamVjdCkgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIHByb3BlcnR5S2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbcHJvcGVydHlLZXldID0gdmFsdWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FLCBhcmd1bWVudCkge1xuICB2YXIgbWV0aG9kID0gW11bTUVUSE9EX05BTUVdO1xuICByZXR1cm4gIW1ldGhvZCB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNhbGwsbm8tdGhyb3ctbGl0ZXJhbFxuICAgIG1ldGhvZC5jYWxsKG51bGwsIGFyZ3VtZW50IHx8IGZ1bmN0aW9uICgpIHsgdGhyb3cgMTsgfSwgMSk7XG4gIH0pO1xufTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xuXG52YXIgVU5TQ09QQUJMRVMgPSB3ZWxsS25vd25TeW1ib2woJ3Vuc2NvcGFibGVzJyk7XG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbi8vIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmlmIChBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU10gPT0gdW5kZWZpbmVkKSB7XG4gIGhpZGUoQXJyYXlQcm90b3R5cGUsIFVOU0NPUEFCTEVTLCBjcmVhdGUobnVsbCkpO1xufVxuXG4vLyBhZGQgYSBrZXkgdG8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b3R5cGVbVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBkZWZpbmVQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgZG9jdW1lbnRDcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gIHZhciBsZW5ndGggPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIHNjcmlwdCA9ICdzY3JpcHQnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBqcyA9ICdqYXZhJyArIHNjcmlwdCArICc6JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgaHRtbC5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gU3RyaW5nKGpzKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArIHNjcmlwdCArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy8nICsgc2NyaXB0ICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGxlbmd0aC0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2xlbmd0aF1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxuLy8gYE9iamVjdC5jcmVhdGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRlZmluZVByb3BlcnRpZXMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cbmhpZGRlbktleXNbSUVfUFJPVE9dID0gdHJ1ZTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaW5kZXgrK10sIFByb3BlcnRpZXNba2V5XSk7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ2RvY3VtZW50JywgJ2RvY3VtZW50RWxlbWVudCcpO1xuIiwidmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgd2hpdGVzcGFjZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2hpdGVzcGFjZXMnKTtcblxudmFyIHdoaXRlc3BhY2UgPSAnWycgKyB3aGl0ZXNwYWNlcyArICddJztcbnZhciBsdHJpbSA9IFJlZ0V4cCgnXicgKyB3aGl0ZXNwYWNlICsgd2hpdGVzcGFjZSArICcqJyk7XG52YXIgcnRyaW0gPSBSZWdFeHAod2hpdGVzcGFjZSArIHdoaXRlc3BhY2UgKyAnKiQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltLCB0cmltU3RhcnQsIHRyaW1FbmQsIHRyaW1MZWZ0LCB0cmltUmlnaHQgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMpIHtcbiAgICB2YXIgc3RyaW5nID0gU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoJHRoaXMpKTtcbiAgICBpZiAoVFlQRSAmIDEpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGx0cmltLCAnJyk7XG4gICAgaWYgKFRZUEUgJiAyKSBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShydHJpbSwgJycpO1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltTGVmdCwgdHJpbVN0YXJ0IH1gIG1ldGhvZHNcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltc3RhcnRcbiAgc3RhcnQ6IGNyZWF0ZU1ldGhvZCgxKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltUmlnaHQsIHRyaW1FbmQgfWAgbWV0aG9kc1xuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1lbmRcbiAgZW5kOiBjcmVhdGVNZXRob2QoMiksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLnRyaW1gIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1cbiAgdHJpbTogY3JlYXRlTWV0aG9kKDMpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFnc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHRoYXQuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAodGhhdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuICBpZiAodGhhdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmICh0aGF0LmRvdEFsbCkgcmVzdWx0ICs9ICdzJztcbiAgaWYgKHRoYXQudW5pY29kZSkgcmVzdWx0ICs9ICd1JztcbiAgaWYgKHRoYXQuc3RpY2t5KSByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRtYXAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykubWFwO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5tYXBgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLm1hcFxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQHNwZWNpZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdtYXAnKSB9LCB7XG4gIG1hcDogZnVuY3Rpb24gbWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRtYXAodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYycpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG52YXIgUkVQTEFDRV9TVVBQT1JUU19OQU1FRF9HUk9VUFMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyAjcmVwbGFjZSBuZWVkcyBidWlsdC1pbiBzdXBwb3J0IGZvciBuYW1lZCBncm91cHMuXG4gIC8vICNtYXRjaCB3b3JrcyBmaW5lIGJlY2F1c2UgaXQganVzdCByZXR1cm4gdGhlIGV4ZWMgcmVzdWx0cywgZXZlbiBpZiBpdCBoYXNcbiAgLy8gYSBcImdyb3BzXCIgcHJvcGVydHkuXG4gIHZhciByZSA9IC8uLztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgcmVzdWx0Lmdyb3VwcyA9IHsgYTogJzcnIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgcmV0dXJuICcnLnJlcGxhY2UocmUsICckPGE+JykgIT09ICc3Jztcbn0pO1xuXG4vLyBDaHJvbWUgNTEgaGFzIGEgYnVnZ3kgXCJzcGxpdFwiIGltcGxlbWVudGF0aW9uIHdoZW4gUmVnRXhwI2V4ZWMgIT09IG5hdGl2ZUV4ZWNcbi8vIFdlZXggSlMgaGFzIGZyb3plbiBidWlsdC1pbiBwcm90b3R5cGVzLCBzbyB1c2UgdHJ5IC8gY2F0Y2ggd3JhcHBlclxudmFyIFNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciByZSA9IC8oPzopLztcbiAgdmFyIG9yaWdpbmFsRXhlYyA9IHJlLmV4ZWM7XG4gIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvcmlnaW5hbEV4ZWMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfTtcbiAgdmFyIHJlc3VsdCA9ICdhYicuc3BsaXQocmUpO1xuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCAhPT0gMiB8fCByZXN1bHRbMF0gIT09ICdhJyB8fCByZXN1bHRbMV0gIT09ICdiJztcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGxlbmd0aCwgZXhlYywgc2hhbSkge1xuICB2YXIgU1lNQk9MID0gd2VsbEtub3duU3ltYm9sKEtFWSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19TWU1CT0wgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN0cmluZyBtZXRob2RzIGNhbGwgc3ltYm9sLW5hbWVkIFJlZ0VwIG1ldGhvZHNcbiAgICB2YXIgTyA9IHt9O1xuICAgIE9bU1lNQk9MXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH07XG4gICAgcmV0dXJuICcnW0tFWV0oTykgIT0gNztcbiAgfSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19FWEVDID0gREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN5bWJvbC1uYW1lZCBSZWdFeHAgbWV0aG9kcyBjYWxsIC5leGVjXG4gICAgdmFyIGV4ZWNDYWxsZWQgPSBmYWxzZTtcbiAgICB2YXIgcmUgPSAvYS87XG4gICAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgZXhlY0NhbGxlZCA9IHRydWU7IHJldHVybiBudWxsOyB9O1xuXG4gICAgaWYgKEtFWSA9PT0gJ3NwbGl0Jykge1xuICAgICAgLy8gUmVnRXhwW0BAc3BsaXRdIGRvZXNuJ3QgY2FsbCB0aGUgcmVnZXgncyBleGVjIG1ldGhvZCwgYnV0IGZpcnN0IGNyZWF0ZXNcbiAgICAgIC8vIGEgbmV3IG9uZS4gV2UgbmVlZCB0byByZXR1cm4gdGhlIHBhdGNoZWQgcmVnZXggd2hlbiBjcmVhdGluZyB0aGUgbmV3IG9uZS5cbiAgICAgIHJlLmNvbnN0cnVjdG9yID0ge307XG4gICAgICByZS5jb25zdHJ1Y3RvcltTUEVDSUVTXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlOyB9O1xuICAgIH1cblxuICAgIHJlW1NZTUJPTF0oJycpO1xuICAgIHJldHVybiAhZXhlY0NhbGxlZDtcbiAgfSk7XG5cbiAgaWYgKFxuICAgICFERUxFR0FURVNfVE9fU1lNQk9MIHx8XG4gICAgIURFTEVHQVRFU19UT19FWEVDIHx8XG4gICAgKEtFWSA9PT0gJ3JlcGxhY2UnICYmICFSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUykgfHxcbiAgICAoS0VZID09PSAnc3BsaXQnICYmICFTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMpXG4gICkge1xuICAgIHZhciBuYXRpdmVSZWdFeHBNZXRob2QgPSAvLi9bU1lNQk9MXTtcbiAgICB2YXIgbWV0aG9kcyA9IGV4ZWMoU1lNQk9MLCAnJ1tLRVldLCBmdW5jdGlvbiAobmF0aXZlTWV0aG9kLCByZWdleHAsIHN0ciwgYXJnMiwgZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgIGlmIChyZWdleHAuZXhlYyA9PT0gcmVnZXhwRXhlYykge1xuICAgICAgICBpZiAoREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgICAgICAvLyBUaGUgbmF0aXZlIFN0cmluZyBtZXRob2QgYWxyZWFkeSBkZWxlZ2F0ZXMgdG8gQEBtZXRob2QgKHRoaXNcbiAgICAgICAgICAvLyBwb2x5ZmlsbGVkIGZ1bmN0aW9uKSwgbGVhc2luZyB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gICAgICAgICAgLy8gV2UgYXZvaWQgaXQgYnkgZGlyZWN0bHkgY2FsbGluZyB0aGUgbmF0aXZlIEBAbWV0aG9kIG1ldGhvZC5cbiAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlUmVnRXhwTWV0aG9kLmNhbGwocmVnZXhwLCBzdHIsIGFyZzIpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG5hdGl2ZU1ldGhvZC5jYWxsKHN0ciwgcmVnZXhwLCBhcmcyKSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UgfTtcbiAgICB9KTtcbiAgICB2YXIgc3RyaW5nTWV0aG9kID0gbWV0aG9kc1swXTtcbiAgICB2YXIgcmVnZXhNZXRob2QgPSBtZXRob2RzWzFdO1xuXG4gICAgcmVkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBzdHJpbmdNZXRob2QpO1xuICAgIHJlZGVmaW5lKFJlZ0V4cC5wcm90b3R5cGUsIFNZTUJPTCwgbGVuZ3RoID09IDJcbiAgICAgIC8vIDIxLjIuNS44IFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXShzdHJpbmcsIHJlcGxhY2VWYWx1ZSlcbiAgICAgIC8vIDIxLjIuNS4xMSBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdKHN0cmluZywgbGltaXQpXG4gICAgICA/IGZ1bmN0aW9uIChzdHJpbmcsIGFyZykgeyByZXR1cm4gcmVnZXhNZXRob2QuY2FsbChzdHJpbmcsIHRoaXMsIGFyZyk7IH1cbiAgICAgIC8vIDIxLjIuNS42IFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0oc3RyaW5nKVxuICAgICAgLy8gMjEuMi41LjkgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF0oc3RyaW5nKVxuICAgICAgOiBmdW5jdGlvbiAoc3RyaW5nKSB7IHJldHVybiByZWdleE1ldGhvZC5jYWxsKHN0cmluZywgdGhpcyk7IH1cbiAgICApO1xuICAgIGlmIChzaGFtKSBoaWRlKFJlZ0V4cC5wcm90b3R5cGVbU1lNQk9MXSwgJ3NoYW0nLCB0cnVlKTtcbiAgfVxufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9jbGFzc29mLXJhdycpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuL3JlZ2V4cC1leGVjJyk7XG5cbi8vIGBSZWdFeHBFeGVjYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cGV4ZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFIsIFMpIHtcbiAgdmFyIGV4ZWMgPSBSLmV4ZWM7XG4gIGlmICh0eXBlb2YgZXhlYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXN1bHQgPSBleGVjLmNhbGwoUiwgUyk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ1JlZ0V4cCBleGVjIG1ldGhvZCByZXR1cm5lZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBPYmplY3Qgb3IgbnVsbCcpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaWYgKGNsYXNzb2YoUikgIT09ICdSZWdFeHAnKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyJyk7XG4gIH1cblxuICByZXR1cm4gcmVnZXhwRXhlYy5jYWxsKFIsIFMpO1xufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmluZDtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG52YXIgRklORCA9ICdmaW5kJztcbnZhciBTS0lQU19IT0xFUyA9IHRydWU7XG5cbi8vIFNob3VsZG4ndCBza2lwIGhvbGVzXG5pZiAoRklORCBpbiBbXSkgQXJyYXkoMSlbRklORF0oZnVuY3Rpb24gKCkgeyBTS0lQU19IT0xFUyA9IGZhbHNlOyB9KTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5maW5kYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBTS0lQU19IT0xFUyB9LCB7XG4gIGZpbmQ6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICByZXR1cm4gJGZpbmQodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoRklORCk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBwYXJzZUludEltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhcnNlLWludCcpO1xuXG4vLyBgcGFyc2VJbnRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcGFyc2VpbnQtc3RyaW5nLXJhZGl4XG4kKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6IHBhcnNlSW50ICE9IHBhcnNlSW50SW1wbGVtZW50YXRpb24gfSwge1xuICBwYXJzZUludDogcGFyc2VJbnRJbXBsZW1lbnRhdGlvblxufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHRyaW0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0nKS50cmltO1xudmFyIHdoaXRlc3BhY2VzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3doaXRlc3BhY2VzJyk7XG5cbnZhciBuYXRpdmVQYXJzZUludCA9IGdsb2JhbC5wYXJzZUludDtcbnZhciBoZXggPSAvXlsrLV0/MFtYeF0vO1xudmFyIEZPUkNFRCA9IG5hdGl2ZVBhcnNlSW50KHdoaXRlc3BhY2VzICsgJzA4JykgIT09IDggfHwgbmF0aXZlUGFyc2VJbnQod2hpdGVzcGFjZXMgKyAnMHgxNicpICE9PSAyMjtcblxuLy8gYHBhcnNlSW50YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXBhcnNlaW50LXN0cmluZy1yYWRpeFxubW9kdWxlLmV4cG9ydHMgPSBGT1JDRUQgPyBmdW5jdGlvbiBwYXJzZUludChzdHJpbmcsIHJhZGl4KSB7XG4gIHZhciBTID0gdHJpbShTdHJpbmcoc3RyaW5nKSk7XG4gIHJldHVybiBuYXRpdmVQYXJzZUludChTLCAocmFkaXggPj4+IDApIHx8IChoZXgudGVzdChTKSA/IDE2IDogMTApKTtcbn0gOiBuYXRpdmVQYXJzZUludDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMnKTtcblxuJCh7IHRhcmdldDogJ1JlZ0V4cCcsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IC8uLy5leGVjICE9PSBleGVjIH0sIHtcbiAgZXhlYzogZXhlY1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXgnKTtcbnZhciByZWdFeHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjLWFic3RyYWN0Jyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgU1VCU1RJVFVUSU9OX1NZTUJPTFMgPSAvXFwkKFskJidgXXxcXGRcXGQ/fDxbXj5dKj4pL2c7XG52YXIgU1VCU1RJVFVUSU9OX1NZTUJPTFNfTk9fTkFNRUQgPSAvXFwkKFskJidgXXxcXGRcXGQ/KS9nO1xuXG52YXIgbWF5YmVUb1N0cmluZyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/IGl0IDogU3RyaW5nKGl0KTtcbn07XG5cbi8vIEBAcmVwbGFjZSBsb2dpY1xuZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMoJ3JlcGxhY2UnLCAyLCBmdW5jdGlvbiAoUkVQTEFDRSwgbmF0aXZlUmVwbGFjZSwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUucmVwbGFjZWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlXG4gICAgZnVuY3Rpb24gcmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgcmVwbGFjZXIgPSBzZWFyY2hWYWx1ZSA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZWFyY2hWYWx1ZVtSRVBMQUNFXTtcbiAgICAgIHJldHVybiByZXBsYWNlciAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gcmVwbGFjZXIuY2FsbChzZWFyY2hWYWx1ZSwgTywgcmVwbGFjZVZhbHVlKVxuICAgICAgICA6IG5hdGl2ZVJlcGxhY2UuY2FsbChTdHJpbmcoTyksIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHJlcGxhY2VcbiAgICBmdW5jdGlvbiAocmVnZXhwLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUobmF0aXZlUmVwbGFjZSwgcmVnZXhwLCB0aGlzLCByZXBsYWNlVmFsdWUpO1xuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuXG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG5cbiAgICAgIHZhciBmdW5jdGlvbmFsUmVwbGFjZSA9IHR5cGVvZiByZXBsYWNlVmFsdWUgPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoIWZ1bmN0aW9uYWxSZXBsYWNlKSByZXBsYWNlVmFsdWUgPSBTdHJpbmcocmVwbGFjZVZhbHVlKTtcblxuICAgICAgdmFyIGdsb2JhbCA9IHJ4Lmdsb2JhbDtcbiAgICAgIGlmIChnbG9iYWwpIHtcbiAgICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIGJyZWFrO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICBpZiAoIWdsb2JhbCkgYnJlYWs7XG5cbiAgICAgICAgdmFyIG1hdGNoU3RyID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9ICcnO1xuICAgICAgdmFyIG5leHRTb3VyY2VQb3NpdGlvbiA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0c1tpXTtcblxuICAgICAgICB2YXIgbWF0Y2hlZCA9IFN0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICB2YXIgcG9zaXRpb24gPSBtYXgobWluKHRvSW50ZWdlcihyZXN1bHQuaW5kZXgpLCBTLmxlbmd0aCksIDApO1xuICAgICAgICB2YXIgY2FwdHVyZXMgPSBbXTtcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgIC8vICAgY2FwdHVyZXMgPSByZXN1bHQuc2xpY2UoMSkubWFwKG1heWJlVG9TdHJpbmcpXG4gICAgICAgIC8vIGJ1dCBmb3Igc29tZSByZWFzb24gYG5hdGl2ZVNsaWNlLmNhbGwocmVzdWx0LCAxLCByZXN1bHQubGVuZ3RoKWAgKGNhbGxlZCBpblxuICAgICAgICAvLyB0aGUgc2xpY2UgcG9seWZpbGwgd2hlbiBzbGljaW5nIG5hdGl2ZSBhcnJheXMpIFwiZG9lc24ndCB3b3JrXCIgaW4gc2FmYXJpIDkgYW5kXG4gICAgICAgIC8vIGNhdXNlcyBhIGNyYXNoIChodHRwczovL3Bhc3RlYmluLmNvbS9OMjFRemVRQSkgd2hlbiB0cnlpbmcgdG8gZGVidWcgaXQuXG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgcmVzdWx0Lmxlbmd0aDsgaisrKSBjYXB0dXJlcy5wdXNoKG1heWJlVG9TdHJpbmcocmVzdWx0W2pdKSk7XG4gICAgICAgIHZhciBuYW1lZENhcHR1cmVzID0gcmVzdWx0Lmdyb3VwcztcbiAgICAgICAgaWYgKGZ1bmN0aW9uYWxSZXBsYWNlKSB7XG4gICAgICAgICAgdmFyIHJlcGxhY2VyQXJncyA9IFttYXRjaGVkXS5jb25jYXQoY2FwdHVyZXMsIHBvc2l0aW9uLCBTKTtcbiAgICAgICAgICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSByZXBsYWNlckFyZ3MucHVzaChuYW1lZENhcHR1cmVzKTtcbiAgICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBTdHJpbmcocmVwbGFjZVZhbHVlLmFwcGx5KHVuZGVmaW5lZCwgcmVwbGFjZXJBcmdzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVwbGFjZW1lbnQgPSBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgUywgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3NpdGlvbiA+PSBuZXh0U291cmNlUG9zaXRpb24pIHtcbiAgICAgICAgICBhY2N1bXVsYXRlZFJlc3VsdCArPSBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24pICsgcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgbmV4dFNvdXJjZVBvc2l0aW9uID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkUmVzdWx0ICsgUy5zbGljZShuZXh0U291cmNlUG9zaXRpb24pO1xuICAgIH1cbiAgXTtcblxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXRzdWJzdGl0dXRpb25cbiAgZnVuY3Rpb24gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlbWVudCkge1xuICAgIHZhciB0YWlsUG9zID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICB2YXIgbSA9IGNhcHR1cmVzLmxlbmd0aDtcbiAgICB2YXIgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEO1xuICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5hbWVkQ2FwdHVyZXMgPSB0b09iamVjdChuYW1lZENhcHR1cmVzKTtcbiAgICAgIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MUztcbiAgICB9XG4gICAgcmV0dXJuIG5hdGl2ZVJlcGxhY2UuY2FsbChyZXBsYWNlbWVudCwgc3ltYm9scywgZnVuY3Rpb24gKG1hdGNoLCBjaCkge1xuICAgICAgdmFyIGNhcHR1cmU7XG4gICAgICBzd2l0Y2ggKGNoLmNoYXJBdCgwKSkge1xuICAgICAgICBjYXNlICckJzogcmV0dXJuICckJztcbiAgICAgICAgY2FzZSAnJic6IHJldHVybiBtYXRjaGVkO1xuICAgICAgICBjYXNlICdgJzogcmV0dXJuIHN0ci5zbGljZSgwLCBwb3NpdGlvbik7XG4gICAgICAgIGNhc2UgXCInXCI6IHJldHVybiBzdHIuc2xpY2UodGFpbFBvcyk7XG4gICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgIGNhcHR1cmUgPSBuYW1lZENhcHR1cmVzW2NoLnNsaWNlKDEsIC0xKV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6IC8vIFxcZFxcZD9cbiAgICAgICAgICB2YXIgbiA9ICtjaDtcbiAgICAgICAgICBpZiAobiA9PT0gMCkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgIGlmIChuID4gbSkge1xuICAgICAgICAgICAgdmFyIGYgPSBmbG9vcihuIC8gMTApO1xuICAgICAgICAgICAgaWYgKGYgPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIGlmIChmIDw9IG0pIHJldHVybiBjYXB0dXJlc1tmIC0gMV0gPT09IHVuZGVmaW5lZCA/IGNoLmNoYXJBdCgxKSA6IGNhcHR1cmVzW2YgLSAxXSArIGNoLmNoYXJBdCgxKTtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW24gLSAxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYXB0dXJlID09PSB1bmRlZmluZWQgPyAnJyA6IGNhcHR1cmU7XG4gICAgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNoYXJBdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlJykuY2hhckF0O1xuXG4vLyBgQWR2YW5jZVN0cmluZ0luZGV4YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFkdmFuY2VzdHJpbmdpbmRleFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUywgaW5kZXgsIHVuaWNvZGUpIHtcbiAgcmV0dXJuIGluZGV4ICsgKHVuaWNvZGUgPyBjaGFyQXQoUywgaW5kZXgpLmxlbmd0aCA6IDEpO1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnsgY29kZVBvaW50QXQsIGF0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoQ09OVkVSVF9UT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgcG9zKSB7XG4gICAgdmFyIFMgPSBTdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgkdGhpcykpO1xuICAgIHZhciBwb3NpdGlvbiA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBzaXplID0gUy5sZW5ndGg7XG4gICAgdmFyIGZpcnN0LCBzZWNvbmQ7XG4gICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBzaXplKSByZXR1cm4gQ09OVkVSVF9UT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBmaXJzdCA9IFMuY2hhckNvZGVBdChwb3NpdGlvbik7XG4gICAgcmV0dXJuIGZpcnN0IDwgMHhEODAwIHx8IGZpcnN0ID4gMHhEQkZGIHx8IHBvc2l0aW9uICsgMSA9PT0gc2l6ZVxuICAgICAgfHwgKHNlY29uZCA9IFMuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpKSA8IDB4REMwMCB8fCBzZWNvbmQgPiAweERGRkZcbiAgICAgICAgPyBDT05WRVJUX1RPX1NUUklORyA/IFMuY2hhckF0KHBvc2l0aW9uKSA6IGZpcnN0XG4gICAgICAgIDogQ09OVkVSVF9UT19TVFJJTkcgPyBTLnNsaWNlKHBvc2l0aW9uLCBwb3NpdGlvbiArIDIpIDogKGZpcnN0IC0gMHhEODAwIDw8IDEwKSArIChzZWNvbmQgLSAweERDMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXRcbiAgY29kZUF0OiBjcmVhdGVNZXRob2QoZmFsc2UpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5hdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzYnluZW5zL1N0cmluZy5wcm90b3R5cGUuYXRcbiAgY2hhckF0OiBjcmVhdGVNZXRob2QodHJ1ZSlcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcbnZhciBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBJU19DT05DQVRfU1BSRUFEQUJMRSA9IHdlbGxLbm93blN5bWJvbCgnaXNDb25jYXRTcHJlYWRhYmxlJyk7XG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDB4MUZGRkZGRkZGRkZGRkY7XG52YXIgTUFYSU1VTV9BTExPV0VEX0lOREVYX0VYQ0VFREVEID0gJ01heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCc7XG5cbnZhciBJU19DT05DQVRfU1BSRUFEQUJMRV9TVVBQT1JUID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGFycmF5ID0gW107XG4gIGFycmF5W0lTX0NPTkNBVF9TUFJFQURBQkxFXSA9IGZhbHNlO1xuICByZXR1cm4gYXJyYXkuY29uY2F0KClbMF0gIT09IGFycmF5O1xufSk7XG5cbnZhciBTUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdjb25jYXQnKTtcblxudmFyIGlzQ29uY2F0U3ByZWFkYWJsZSA9IGZ1bmN0aW9uIChPKSB7XG4gIGlmICghaXNPYmplY3QoTykpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNwcmVhZGFibGUgPSBPW0lTX0NPTkNBVF9TUFJFQURBQkxFXTtcbiAgcmV0dXJuIHNwcmVhZGFibGUgIT09IHVuZGVmaW5lZCA/ICEhc3ByZWFkYWJsZSA6IGlzQXJyYXkoTyk7XG59O1xuXG52YXIgRk9SQ0VEID0gIUlTX0NPTkNBVF9TUFJFQURBQkxFX1NVUFBPUlQgfHwgIVNQRUNJRVNfU1VQUE9SVDtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5jb25jYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmNvbmNhdFxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQGlzQ29uY2F0U3ByZWFkYWJsZSBhbmQgQEBzcGVjaWVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICBjb25jYXQ6IGZ1bmN0aW9uIGNvbmNhdChhcmcpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIEEgPSBhcnJheVNwZWNpZXNDcmVhdGUoTywgMCk7XG4gICAgdmFyIG4gPSAwO1xuICAgIHZhciBpLCBrLCBsZW5ndGgsIGxlbiwgRTtcbiAgICBmb3IgKGkgPSAtMSwgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBFID0gaSA9PT0gLTEgPyBPIDogYXJndW1lbnRzW2ldO1xuICAgICAgaWYgKGlzQ29uY2F0U3ByZWFkYWJsZShFKSkge1xuICAgICAgICBsZW4gPSB0b0xlbmd0aChFLmxlbmd0aCk7XG4gICAgICAgIGlmIChuICsgbGVuID4gTUFYX1NBRkVfSU5URUdFUikgdGhyb3cgVHlwZUVycm9yKE1BWElNVU1fQUxMT1dFRF9JTkRFWF9FWENFRURFRCk7XG4gICAgICAgIGZvciAoayA9IDA7IGsgPCBsZW47IGsrKywgbisrKSBpZiAoayBpbiBFKSBjcmVhdGVQcm9wZXJ0eShBLCBuLCBFW2tdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuID49IE1BWF9TQUZFX0lOVEVHRVIpIHRocm93IFR5cGVFcnJvcihNQVhJTVVNX0FMTE9XRURfSU5ERVhfRVhDRUVERUQpO1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShBLCBuKyssIEUpO1xuICAgICAgfVxuICAgIH1cbiAgICBBLmxlbmd0aCA9IG47XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGZpbHRlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maWx0ZXI7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmlsdGVyXG4vLyB3aXRoIGFkZGluZyBzdXBwb3J0IG9mIEBAc3BlY2llc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIWFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQoJ2ZpbHRlcicpIH0sIHtcbiAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJGZpbHRlcih0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtZnVuY3Rpb24nKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHNsb3BweUFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Nsb3BweS1hcnJheS1tZXRob2QnKTtcblxudmFyIG5hdGl2ZVNvcnQgPSBbXS5zb3J0O1xudmFyIHRlc3QgPSBbMSwgMiwgM107XG5cbi8vIElFOC1cbnZhciBGQUlMU19PTl9VTkRFRklORUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHRlc3Quc29ydCh1bmRlZmluZWQpO1xufSk7XG4vLyBWOCBidWdcbnZhciBGQUlMU19PTl9OVUxMID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICB0ZXN0LnNvcnQobnVsbCk7XG59KTtcbi8vIE9sZCBXZWJLaXRcbnZhciBTTE9QUFlfTUVUSE9EID0gc2xvcHB5QXJyYXlNZXRob2QoJ3NvcnQnKTtcblxudmFyIEZPUkNFRCA9IEZBSUxTX09OX1VOREVGSU5FRCB8fCAhRkFJTFNfT05fTlVMTCB8fCBTTE9QUFlfTUVUSE9EO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvcnRcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIHNvcnQ6IGZ1bmN0aW9uIHNvcnQoY29tcGFyZWZuKSB7XG4gICAgcmV0dXJuIGNvbXBhcmVmbiA9PT0gdW5kZWZpbmVkXG4gICAgICA/IG5hdGl2ZVNvcnQuY2FsbCh0b09iamVjdCh0aGlzKSlcbiAgICAgIDogbmF0aXZlU29ydC5jYWxsKHRvT2JqZWN0KHRoaXMpLCBhRnVuY3Rpb24oY29tcGFyZWZuKSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcbnZhciBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0Jyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gMHgxRkZGRkZGRkZGRkZGRjtcbnZhciBNQVhJTVVNX0FMTE9XRURfTEVOR1RIX0VYQ0VFREVEID0gJ01heGltdW0gYWxsb3dlZCBsZW5ndGggZXhjZWVkZWQnO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnNwbGljZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc3BsaWNlXG4vLyB3aXRoIGFkZGluZyBzdXBwb3J0IG9mIEBAc3BlY2llc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIWFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQoJ3NwbGljZScpIH0sIHtcbiAgc3BsaWNlOiBmdW5jdGlvbiBzcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50IC8qICwgLi4uaXRlbXMgKi8pIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGFjdHVhbFN0YXJ0ID0gdG9BYnNvbHV0ZUluZGV4KHN0YXJ0LCBsZW4pO1xuICAgIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBpbnNlcnRDb3VudCwgYWN0dWFsRGVsZXRlQ291bnQsIEEsIGssIGZyb20sIHRvO1xuICAgIGlmIChhcmd1bWVudHNMZW5ndGggPT09IDApIHtcbiAgICAgIGluc2VydENvdW50ID0gYWN0dWFsRGVsZXRlQ291bnQgPSAwO1xuICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzTGVuZ3RoID09PSAxKSB7XG4gICAgICBpbnNlcnRDb3VudCA9IDA7XG4gICAgICBhY3R1YWxEZWxldGVDb3VudCA9IGxlbiAtIGFjdHVhbFN0YXJ0O1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnNlcnRDb3VudCA9IGFyZ3VtZW50c0xlbmd0aCAtIDI7XG4gICAgICBhY3R1YWxEZWxldGVDb3VudCA9IG1pbihtYXgodG9JbnRlZ2VyKGRlbGV0ZUNvdW50KSwgMCksIGxlbiAtIGFjdHVhbFN0YXJ0KTtcbiAgICB9XG4gICAgaWYgKGxlbiArIGluc2VydENvdW50IC0gYWN0dWFsRGVsZXRlQ291bnQgPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoTUFYSU1VTV9BTExPV0VEX0xFTkdUSF9FWENFRURFRCk7XG4gICAgfVxuICAgIEEgPSBhcnJheVNwZWNpZXNDcmVhdGUoTywgYWN0dWFsRGVsZXRlQ291bnQpO1xuICAgIGZvciAoayA9IDA7IGsgPCBhY3R1YWxEZWxldGVDb3VudDsgaysrKSB7XG4gICAgICBmcm9tID0gYWN0dWFsU3RhcnQgKyBrO1xuICAgICAgaWYgKGZyb20gaW4gTykgY3JlYXRlUHJvcGVydHkoQSwgaywgT1tmcm9tXSk7XG4gICAgfVxuICAgIEEubGVuZ3RoID0gYWN0dWFsRGVsZXRlQ291bnQ7XG4gICAgaWYgKGluc2VydENvdW50IDwgYWN0dWFsRGVsZXRlQ291bnQpIHtcbiAgICAgIGZvciAoayA9IGFjdHVhbFN0YXJ0OyBrIDwgbGVuIC0gYWN0dWFsRGVsZXRlQ291bnQ7IGsrKykge1xuICAgICAgICBmcm9tID0gayArIGFjdHVhbERlbGV0ZUNvdW50O1xuICAgICAgICB0byA9IGsgKyBpbnNlcnRDb3VudDtcbiAgICAgICAgaWYgKGZyb20gaW4gTykgT1t0b10gPSBPW2Zyb21dO1xuICAgICAgICBlbHNlIGRlbGV0ZSBPW3RvXTtcbiAgICAgIH1cbiAgICAgIGZvciAoayA9IGxlbjsgayA+IGxlbiAtIGFjdHVhbERlbGV0ZUNvdW50ICsgaW5zZXJ0Q291bnQ7IGstLSkgZGVsZXRlIE9bayAtIDFdO1xuICAgIH0gZWxzZSBpZiAoaW5zZXJ0Q291bnQgPiBhY3R1YWxEZWxldGVDb3VudCkge1xuICAgICAgZm9yIChrID0gbGVuIC0gYWN0dWFsRGVsZXRlQ291bnQ7IGsgPiBhY3R1YWxTdGFydDsgay0tKSB7XG4gICAgICAgIGZyb20gPSBrICsgYWN0dWFsRGVsZXRlQ291bnQgLSAxO1xuICAgICAgICB0byA9IGsgKyBpbnNlcnRDb3VudCAtIDE7XG4gICAgICAgIGlmIChmcm9tIGluIE8pIE9bdG9dID0gT1tmcm9tXTtcbiAgICAgICAgZWxzZSBkZWxldGUgT1t0b107XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoayA9IDA7IGsgPCBpbnNlcnRDb3VudDsgaysrKSB7XG4gICAgICBPW2sgKyBhY3R1YWxTdGFydF0gPSBhcmd1bWVudHNbayArIDJdO1xuICAgIH1cbiAgICBPLmxlbmd0aCA9IGxlbiAtIGFjdHVhbERlbGV0ZUNvdW50ICsgaW5zZXJ0Q291bnQ7XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBGdW5jdGlvblByb3RvdHlwZVRvU3RyaW5nID0gRnVuY3Rpb25Qcm90b3R5cGUudG9TdHJpbmc7XG52YXIgbmFtZVJFID0gL15cXHMqZnVuY3Rpb24gKFteIChdKikvO1xudmFyIE5BTUUgPSAnbmFtZSc7XG5cbi8vIEZ1bmN0aW9uIGluc3RhbmNlcyBgLm5hbWVgIHByb3BlcnR5XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1mdW5jdGlvbi1pbnN0YW5jZXMtbmFtZVxuaWYgKERFU0NSSVBUT1JTICYmICEoTkFNRSBpbiBGdW5jdGlvblByb3RvdHlwZSkpIHtcbiAgZGVmaW5lUHJvcGVydHkoRnVuY3Rpb25Qcm90b3R5cGUsIE5BTUUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gRnVuY3Rpb25Qcm90b3R5cGVUb1N0cmluZy5jYWxsKHRoaXMpLm1hdGNoKG5hbWVSRSlbMV07XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIG5hdGl2ZUtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG52YXIgRkFJTFNfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgbmF0aXZlS2V5cygxKTsgfSk7XG5cbi8vIGBPYmplY3Qua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3Qua2V5c1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRkFJTFNfT05fUFJJTUlUSVZFUyB9LCB7XG4gIGtleXM6IGZ1bmN0aW9uIGtleXMoaXQpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyh0b09iamVjdChpdCkpO1xuICB9XG59KTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcblxuLy8gYElzUmVnRXhwYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzcmVnZXhwXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjbGFzc29mKGl0KSA9PSAnUmVnRXhwJyk7XG59O1xuIiwiLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXG5pbXBvcnQgalF1ZXJ5IGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgeyBlcGFzIH0gZnJvbSAnd2luZG93JztcblxuLyoqXG4gKiBTdWJtaXQgdGhlIHNlYXJjaCBmb3JtXG4gKiBAcGFyYW0gb2JqZWN0ICRsb2NhbElucHV0XG4gKi9cbmZ1bmN0aW9uIHN1Ym1pdFNlYXJjaEZvcm0oICRsb2NhbElucHV0ICkge1xuXHQkbG9jYWxJbnB1dC5jbG9zZXN0KCAnZm9ybScgKS5zdWJtaXQoKTtcbn1cblxuLyoqXG4gKiBUYWtlIHNlbGVjdGVkIGl0ZW0gYW5kIGZpbGwgdGhlIHNlYXJjaCBpbnB1dFxuICogQHBhcmFtIGV2ZW50XG4gKi9cbmZ1bmN0aW9uIHNlbGVjdEF1dG9zdWdnZXN0SXRlbSggJGxvY2FsSW5wdXQsIHRleHQgKSB7XG5cdCRsb2NhbElucHV0LnZhbCggdGV4dCApO1xufVxuXG4vKipcbiAqIE5hdmlnYXRlIHRvIHRoZSBzZWxlY3RlZCBpdGVtLCBhbmQgcHJvdmlkZXNcbiAqIGV2ZW50IGhvb2sgZm9yIEpTIGN1c3RvbWl6YXRpb25zLCBsaWtlIEdBXG4gKiBAcGFyYW0gZXZlbnRcbiAqL1xuZnVuY3Rpb24gZ29Ub0F1dG9zdWdnZXN0SXRlbSggJGxvY2FsSW5wdXQsIHVybCApIHtcblxuXHRjb25zdCBkZXRhaWwgPSB7XG5cdFx0c2VhcmNoVGVybTogJGxvY2FsSW5wdXRbMF0udmFsdWUsXG5cdFx0dXJsXG5cdH07XG5cblx0dHJpZ2dlckV2ZW50cyggZGV0YWlsICk7XG5cblx0d2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG59XG5cblxuLyoqXG4gKiBGaXJlcyBldmVudHMgd2hlbiBhdXRvc3VnZ2VzdCByZXN1bHRzIGFyZSBjbGlja2VkLFxuICogYW5kIGlmIEdBIHRyYWNraW5nIGlzIGFjdGl2YXRlZFxuICpcbiAqIEBwYXJhbSBkZXRhaWxcbiAqL1xuZnVuY3Rpb24gdHJpZ2dlckV2ZW50cyggZGV0YWlsICkge1xuXHRjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudCggJ2VwLWF1dG9zdWdnZXN0LWNsaWNrJywgeyBkZXRhaWwgfSApO1xuXHR3aW5kb3cuZGlzcGF0Y2hFdmVudCggZXZlbnQgKTtcblxuXHRpZiggZGV0YWlsLnNlYXJjaFRlcm0gJiYgMSA9PT0gcGFyc2VJbnQoIGVwYXMudHJpZ2dlckFuYWx5dGljcyApICYmICdmdW5jdGlvbicgPT0gdHlwZW9mIGd0YWcgKSB7XG5cdFx0Y29uc3QgYWN0aW9uID0gYGNsaWNrIC0gJHtkZXRhaWwuc2VhcmNoVGVybX1gO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuXHRcdGd0YWcoICdldmVudCcsIGFjdGlvbiwge1xuXHRcdFx0J2V2ZW50X2NhdGVnb3J5JyA6ICdFUCA6OiBBdXRvc3VnZ2VzdCcsXG5cdFx0XHQnZXZlbnRfbGFiZWwnIDogZGV0YWlsLnVybCxcblx0XHRcdCd0cmFuc3BvcnRfdHlwZScgOiAnYmVhY29uJyxcblx0XHR9ICk7XG5cdH1cbn1cblxuLyoqXG4gKiBSZXNwb25kIHRvIGFuIGl0ZW0gc2VsZWN0aW9uIGJhc2VkIG9uIHRoZSBwcmVkZWZpbmVkIGJlaGF2aW9yLlxuICogSWYgZXBhcy5hY3Rpb24gaXMgc2V0IHRvIFwibmF2aWdhdGVcIiAodGhlIGRlZmF1bHQpLCByZWRpcmVjdHMgdGhlIGJyb3dzZXIgdG8gdGhlIFVSTCBvZiB0aGUgc2VsZWN0ZWQgaXRlbVxuICogSWYgZXBhcy5hY3Rpb24gaXMgc2V0IHRvIGFueSBvdGhlciB2YWx1ZSAoc3VjaCBhcyBcInNlYXJjaFwiKSwgZmlsbCBpbiB0aGUgdmFsdWUgYW5kIHBlcmZvcm0gdGhlIHNlYXJjaFxuICpcbiAqIEBwYXJhbSAkbG9jYWxJbnB1dFxuICogQHBhcmFtIGVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gc2VsZWN0SXRlbSggJGxvY2FsSW5wdXQsIGVsZW1lbnQgKSB7XG5cblx0aWYgKCAnbmF2aWdhdGUnID09PSBlcGFzLmFjdGlvbiApIHtcblx0XHRyZXR1cm4gZ29Ub0F1dG9zdWdnZXN0SXRlbSggJGxvY2FsSW5wdXQsIGVsZW1lbnQuZGF0YXNldC51cmwgKTtcblx0fVxuXG5cdHNlbGVjdEF1dG9zdWdnZXN0SXRlbSggJGxvY2FsSW5wdXQsIGVsZW1lbnQuaW5uZXJUZXh0ICk7XG5cdHN1Ym1pdFNlYXJjaEZvcm0oICRsb2NhbElucHV0ICk7XG59XG5cbi8qKlxuICogU2ltcGxlIHRocm90dGxpbmcgZnVuY3Rpb24gZm9yIHdhaXRpbmcgYSBzZXQgYW1vdW50IG9mIHRpbWUgYWZ0ZXIgdGhlIGxhc3Qga2V5cHJlc3NcbiAqIFNvIHdlIGRvbid0IG92ZXJsb2FkIHRoZSBzZXJ2ZXIgd2l0aCB0b28gbWFueSByZXF1ZXN0cyBhdCBvbmNlXG4gKlxuICogQHBhcmFtIGZuXG4gKiBAcGFyYW0gZGVsYXlcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gZGVib3VuY2UoIGZuLCBkZWxheSApIHtcblx0bGV0IHRpbWVyID0gbnVsbDtcblxuXHRyZXR1cm4gKCkgPT4ge1xuXHRcdGNvbnN0IGNvbnRleHQgPSB0aGlzLFxuXHRcdFx0YXJncyA9IGFyZ3VtZW50cztcblxuXHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVyICk7XG5cblx0XHR0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCAoKSA9PiB7XG5cdFx0XHRmbi5hcHBseSggY29udGV4dCwgYXJncyApO1xuXHRcdH0sIGRlbGF5ICk7XG5cdH07XG59XG5cblxuLyoqXG4gKiBCdWlsZCB0aGUgc2VhcmNoIHF1ZXJ5IGZyb20gdGhlIHNlYXJjaCB0ZXh0IC0gdGhlIHF1ZXJ5IGlzIGdlbmVyYXRlZCBpbiBQSFBcbiAqIGFuZCBwYXNzZWQgaW50byB0aGUgZnJvbnQgZW5kIGFzIHdpbmRvdy5lcGFzID0geyBcInF1ZXJ5Li4uXG4gKlxuICogQHJldHVybnMganNvblxuICovXG5mdW5jdGlvbiBnZXRKc29uUXVlcnkoKSB7XG5cblx0aWYoICd1bmRlZmluZWQnID09IHR5cGVvZiB3aW5kb3cuZXBhcyApIHtcblx0XHRjb25zdCBlcnJvciA9ICdObyBlcGFzIG9iamVjdCBkZWZpbmVkJztcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG5cdFx0Y29uc29sZS53YXJuKCBlcnJvciApO1xuXHRcdHJldHVybiB7IGVycm9yIH07XG5cdH1cblxuXHRyZXR1cm4gd2luZG93LmVwYXM7XG59XG5cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZXNjYXBlIGlucHV0IHRvIGJlIHRyZWF0ZWQgYXMgYSBsaXRlcmFsIHN0cmluZyB3aXRoIGEgUmVnRXhcbiAqXG4gKiBAcGFyYW0gc3RyaW5nXG4gKiBAcmV0dXJucyBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKCBzdHJpbmcgKXtcblx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKCAvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnICk7XG59XG5cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZXNjYXBlIGlucHV0IHRvIGJlIHRyZWF0ZWQgYXMgYSBsaXRlcmFsIHN0cmluZyB3aXRoIGEgUmVnRXhcbiAqXG4gKiBAcGFyYW0gc3RyaW5nIC0gc3RyaW5nXG4gKiBAcGFyYW0gdGVybSAtIHN0cmluZ1xuICogQHBhcmFtIHJlcGxhY2VtZW50IC0gc3RyaW5nXG4gKiBAcmV0dXJucyBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUdsb2JhbGx5KCBzdHJpbmcsIHRlcm0sIHJlcGxhY2VtZW50ICkge1xuXHRyZXR1cm4gc3RyaW5nLnJlcGxhY2UoIG5ldyBSZWdFeHAoIGVzY2FwZVJlZ0V4cCggdGVybSApLCAnZycgKSwgcmVwbGFjZW1lbnQgKTtcbn1cblxuXG4vKipcbiAqIEJ1aWxkIHRoZSBzZWFyY2ggcXVlcnkgZnJvbSB0aGUgc2VhcmNoIHRleHRcbiAqXG4gKiBAcGFyYW0gc2VhcmNoVGV4dCAtIHN0cmluZ1xuICogQHBhcmFtIHBsYWNlaG9sZGVyIC0gc3RyaW5nXG4gKiBAcGFyYW0geyBxdWVyeSB9IC0gZGVzcnVjdHVyZWQganNvbiBxdWVyeSBzdHJpbmdcbiAqIEByZXR1cm5zIGpzb24gc3RyaW5nXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkU2VhcmNoUXVlcnkoIHNlYXJjaFRleHQsIHBsYWNlaG9sZGVyLCB7IHF1ZXJ5IH0gKSB7XG5cdGNvbnN0IG5ld1F1ZXJ5ID0gcmVwbGFjZUdsb2JhbGx5KCBxdWVyeSwgcGxhY2Vob2xkZXIsIHNlYXJjaFRleHQgKTtcblx0cmV0dXJuIG5ld1F1ZXJ5O1xufVxuXG5cbi8qKlxuICogQnVpbGQgdGhlIGFqYXggcmVxdWVzdFxuICpcbiAqIEBwYXJhbSBxdWVyeSAtIGpzb24gc3RyaW5nXG4gKiBAcmV0dXJucyBBSkFYIG9iamVjdCByZXF1ZXN0XG4gKi9cbmZ1bmN0aW9uIGVzU2VhcmNoKCBxdWVyeSwgc2VhcmNoVGVybSApIHtcblxuXHQvLyBGaXhlcyA8PUlFOSBqUXVlcnkgQUpBWCBidWcgdGhhdCBwcmV2ZW50cyBhamF4IHJlcXVlc3QgZnJvbSBmaXJpbmdcblx0alF1ZXJ5LnN1cHBvcnQuY29ycyA9IHRydWU7XG5cblx0Y29uc3QgYWpheENvbmZpZyA9IHtcblx0XHR1cmw6IGVwYXMuZW5kcG9pbnRVcmwsXG5cdFx0dHlwZTogJ3Bvc3QnLFxuXHRcdGRhdGFUeXBlOiAnanNvbicsXG5cdFx0Y3Jvc3NEb21haW46IHRydWUsXG5cdFx0Y29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04Jyxcblx0XHRkYXRhOiBxdWVyeSAvLyBubyBsb25nZXIgbmVlZCB0byBKU09OLnN0cmluZ2lmeVxuXHR9O1xuXG5cdC8vIG9ubHkgYXBwbGllcyBoZWFkZXJzIGlmIHVzaW5nIGVwLmlvIGVuZHBvaW50XG5cdGlmKCBlcGFzLmFkZFNlYXJjaFRlcm1IZWFkZXIgKSB7XG5cdFx0YWpheENvbmZpZy5oZWFkZXJzID0ge1xuXHRcdFx0J0VQLVNlYXJjaC1UZXJtJzogc2VhcmNoVGVybVxuXHRcdH07XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5LmFqYXgoIGFqYXhDb25maWcgKTtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIGRvdWJsZSBxdW90ZXMgZm9yIHNwZWNpZmljIGRhdGEtYXR0clxuICpcbiAqIEBwYXJhbSBzdHJcbiAqIEByZXR1cm5zIHN0cmluZyBUaGUgZXNjYXBlZCBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gZXNjYXBlRG91YmxlUXVvdGVzKCBzdHIgKSB7XG5cdHJldHVybiBzdHIucmVwbGFjZSggL1xcXFwoW1xcc1xcU10pfChcIikvZywgJyZxdW90OycgKTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgdGhlIGF1dG8gc3VnZ2VzdCBib3ggd2l0aCBuZXcgb3B0aW9ucyBvciBoaWRlIGlmIG5vbmVcbiAqXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybiB2b2lkXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZUF1dG9zdWdnZXN0Qm94KCBvcHRpb25zLCAkbG9jYWxJbnB1dCApIHtcblx0bGV0IGksXG5cdFx0aXRlbVN0cmluZyA9ICcnO1xuXG5cdGNvbnN0ICRsb2NhbEVTQ29udGFpbmVyID0gJGxvY2FsSW5wdXQuY2xvc2VzdCggJy5lcC1hdXRvc3VnZ2VzdC1jb250YWluZXInICkuZmluZCggJy5lcC1hdXRvc3VnZ2VzdCcgKSxcblx0XHQkbG9jYWxTdWdnZXN0TGlzdCA9ICRsb2NhbEVTQ29udGFpbmVyLmZpbmQoICcuYXV0b3N1Z2dlc3QtbGlzdCcgKTtcblxuXHQkbG9jYWxTdWdnZXN0TGlzdC5lbXB0eSgpO1xuXG5cdC8vIERvbid0IGxpc3RlbiB0byBwb3RlbnRpYWxseSBwcmV2aW91c2x5IHNldCBpdGVtc1xuXHRqUXVlcnkoICcuYXV0b3N1Z2dlc3QtaXRlbScgKS5vZmYoKTtcblxuXHRpZiAoIDAgPCBvcHRpb25zLmxlbmd0aCApIHtcblx0XHQkbG9jYWxFU0NvbnRhaW5lci5zaG93KCk7XG5cdH0gZWxzZSB7XG5cdFx0JGxvY2FsRVNDb250YWluZXIuaGlkZSgpO1xuXHR9XG5cblx0Zm9yICggaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgKytpICkge1xuXHRcdGNvbnN0IHsgdGV4dCwgdXJsIH0gPSBvcHRpb25zW2ldO1xuXHRcdGl0ZW1TdHJpbmcgKz0gYDxsaT48c3BhbiBjbGFzcz1cImF1dG9zdWdnZXN0LWl0ZW1cIiBkYXRhLXNlYXJjaD1cIiR7ICBlc2NhcGVEb3VibGVRdW90ZXMoIHRleHQgKSAgfVwiIGRhdGEtdXJsPVwiJHsgIHVybCAgfVwiPiR7ICBlc2NhcGVEb3VibGVRdW90ZXMoIHRleHQgKSAgfTwvc3Bhbj48L2xpPmA7XG5cdH1cblx0alF1ZXJ5KCBpdGVtU3RyaW5nICkuYXBwZW5kVG8oICRsb2NhbFN1Z2dlc3RMaXN0ICk7XG5cblx0Ly8gTGlzdGVuIHRvIGl0ZW1zIHRvIGF1dG8tZmlsbCBzZWFyY2ggYm94IGFuZCBzdWJtaXQgZm9ybVxuXHRqUXVlcnkoICcuYXV0b3N1Z2dlc3QtaXRlbScgKS5vbiggJ2NsaWNrJywgKCBldmVudCApID0+IHtcblx0XHRzZWxlY3RJdGVtKCAkbG9jYWxJbnB1dCwgZXZlbnQudGFyZ2V0ICk7XG5cdH0gKTtcblxuXHQkbG9jYWxJbnB1dC5vZmYoICdrZXlkb3duJyApO1xuXG5cdC8vIExpc3RlbiB0byB0aGUgaW5wdXQgZm9yIHVwIGFuZCBkb3duIG5hdmlnYXRpb24gYmV0d2VlbiBhdXRvc3VnZ2VzdCBpdGVtc1xuXHQkbG9jYWxJbnB1dC5vbiggJ2tleWRvd24nLCAoIGV2ZW50ICkgPT4ge1xuXHRcdGlmICggMzggPT09IGV2ZW50LmtleUNvZGUgfHwgNDAgPT09IGV2ZW50LmtleUNvZGUgfHwgMTMgPT09IGV2ZW50LmtleUNvZGUgKSB7XG5cdFx0XHRjb25zdCAkcmVzdWx0cyA9ICRsb2NhbElucHV0LmNsb3Nlc3QoICcuZXAtYXV0b3N1Z2dlc3QtY29udGFpbmVyJyApLmZpbmQoICcuYXV0b3N1Z2dlc3QtbGlzdCBsaScgKTtcblx0XHRcdGNvbnN0ICRjdXJyZW50ID0gJHJlc3VsdHMuZmlsdGVyKCAnLnNlbGVjdGVkJyApO1xuXHRcdFx0bGV0ICRuZXh0O1xuXG5cdFx0XHRzd2l0Y2ggKCBldmVudC5rZXlDb2RlICkge1xuXHRcdFx0XHRcdGNhc2UgMzg6IC8vIFVwXG5cdFx0XHRcdFx0XHQkbmV4dCA9ICRjdXJyZW50LnByZXYoKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgNDA6IC8vIERvd25cblx0XHRcdFx0XHRcdGlmICggISAkcmVzdWx0cy5oYXNDbGFzcyggJ3NlbGVjdGVkJyApICkge1xuXHRcdFx0XHRcdFx0XHQkcmVzdWx0cy5maXJzdCgpLmFkZENsYXNzKCAnc2VsZWN0ZWQnICk7XG5cdFx0XHRcdFx0XHRcdCRuZXh0ID0gJHJlc3VsdHMuZmlyc3QoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdCRuZXh0ID0gJGN1cnJlbnQubmV4dCgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAxMzogLy8gRW50ZXJcblx0XHRcdFx0XHRcdGlmICggJHJlc3VsdHMuaGFzQ2xhc3MoICdzZWxlY3RlZCcgKSApIHtcblx0XHRcdFx0XHRcdFx0c2VsZWN0SXRlbSggJGxvY2FsSW5wdXQsICRjdXJyZW50LmNoaWxkcmVuKCAnc3BhbicgKS5nZXQoIDAgKSApO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gTm8gaXRlbSBzZWxlY3RlZFxuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIG9ubHkgY2hlY2sgbmV4dCBlbGVtZW50IGlmIHVwIGFuZCBkb3duIGtleSBwcmVzc2VkXG5cdFx0XHRpZiAoICRuZXh0LmlzKCAnbGknICkgKSB7XG5cdFx0XHRcdCRjdXJyZW50LnJlbW92ZUNsYXNzKCAnc2VsZWN0ZWQnICk7XG5cdFx0XHRcdCRuZXh0LmFkZENsYXNzKCAnc2VsZWN0ZWQnICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQkcmVzdWx0cy5yZW1vdmVDbGFzcyggJ3NlbGVjdGVkJyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBrZWVwIGN1cnNvciBmcm9tIGhlYWRpbmcgYmFjayB0byB0aGUgYmVnaW5uaW5nIGluIHRoZSBpbnB1dFxuXHRcdFx0aWYgKCAzOCA9PT0gZXZlbnQua2V5Q29kZSApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdH0gKTtcbn1cblxuLyoqXG4gKiBIaWRlIHRoZSBhdXRvIHN1Z2dlc3QgYm94XG4gKlxuICogQHJldHVybiB2b2lkXG4gKi9cbmZ1bmN0aW9uIGhpZGVBdXRvc3VnZ2VzdEJveCgpIHtcblx0alF1ZXJ5KCAnLmF1dG9zdWdnZXN0LWxpc3QnICkuZW1wdHkoKTtcblx0alF1ZXJ5KCAnLmVwLWF1dG9zdWdnZXN0JyApLmhpZGUoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgZm9yIGFueSBtYW51YWxseSBvcmRlcmVkIHBvc3RzIGFuZCBwdXRzIHRoZW0gaW4gdGhlIGNvcnJlY3QgcGxhY2VcbiAqXG4gKiBAcGFyYW0gaGl0c1xuICogQHBhcmFtIHNlYXJjaFRlcm1cbiAqL1xuZnVuY3Rpb24gY2hlY2tGb3JPcmRlcmVkUG9zdHMoIGhpdHMsIHNlYXJjaFRlcm0gKSB7XG5cdGNvbnN0IHRheE5hbWUgPSAnZXBfY3VzdG9tX3Jlc3VsdCc7XG5cblx0c2VhcmNoVGVybSA9IHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKTtcblxuXHRjb25zdCB0b0luc2VydCA9IHt9O1xuXG5cdGhpdHMgPSBoaXRzLmZpbHRlciggKCBoaXQgKSA9PiB7XG5cdFx0Ly8gU2hvdWxkIHdlIHJldGFpbiB0aGlzIGhpdCBpbiBpdHMgY3VycmVudCBwb3NpdGlvbj9cblx0XHRsZXQgcmV0YWluID0gdHJ1ZTtcblxuXHRcdGlmICggdW5kZWZpbmVkICE9PSBoaXQuX3NvdXJjZS50ZXJtcyAmJiB1bmRlZmluZWQgIT09IGhpdC5fc291cmNlLnRlcm1zWyB0YXhOYW1lIF0gKSB7XG5cdFx0XHRoaXQuX3NvdXJjZS50ZXJtc1sgdGF4TmFtZSBdLm1hcCggY3VycmVudFRlcm0gPT4ge1xuXHRcdFx0XHRpZiAoIGN1cnJlbnRUZXJtLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gc2VhcmNoVGVybSApIHtcblx0XHRcdFx0XHR0b0luc2VydFsgY3VycmVudFRlcm0udGVybV9vcmRlciBdID0gaGl0O1xuXG5cdFx0XHRcdFx0cmV0YWluID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0YWluO1xuXHR9ICk7XG5cblx0Y29uc3Qgb3JkZXJlZEluc2VydHMgPSB7fTtcblxuXHRPYmplY3Qua2V5cyggdG9JbnNlcnQgKS5zb3J0KCkubWFwKCBrZXkgPT4ge1xuXHRcdG9yZGVyZWRJbnNlcnRzWyBrZXkgXSA9IHRvSW5zZXJ0WyBrZXkgXTtcblx0fSApO1xuXG5cdGlmICggMCA8IE9iamVjdC5rZXlzKCBvcmRlcmVkSW5zZXJ0cyApLmxlbmd0aCApIHtcblx0XHRPYmplY3Qua2V5cyggb3JkZXJlZEluc2VydHMgKS5tYXAoIGtleSA9PiB7XG5cdFx0XHRjb25zdCBpbnNlcnRJdGVtID0gb3JkZXJlZEluc2VydHNbIGtleSBdO1xuXG5cdFx0XHRoaXRzLnNwbGljZSgga2V5IC0gMSwgMCwgaW5zZXJ0SXRlbSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdHJldHVybiBoaXRzO1xufVxuXG4vLyBObyBob3N0L2luZGV4IHNldFxuaWYgKCBlcGFzLmVuZHBvaW50VXJsICYmICcnICE9PSBlcGFzLmVuZHBvaW50VXJsICkge1xuXHRjb25zdCAkZXBJbnB1dCAgICAgICA9IGpRdWVyeSggYC5lcC1hdXRvc3VnZ2VzdCwgaW5wdXRbdHlwZT1cInNlYXJjaFwiXSwgLnNlYXJjaC1maWVsZCwgJHsgIGVwYXMuc2VsZWN0b3J9YCAgKTtcblx0Y29uc3QgJGVwQXV0b3N1Z2dlc3QgPSBqUXVlcnkoICc8ZGl2IGNsYXNzPVwiZXAtYXV0b3N1Z2dlc3RcIj48dWwgY2xhc3M9XCJhdXRvc3VnZ2VzdC1saXN0XCI+PC91bD48L2Rpdj4nICk7XG5cblx0LyoqXG5cdCAqIEJ1aWxkIHRoZSBhdXRvLXN1Z2dlc3QgY29udGFpbmVyXG5cdCAqL1xuXHQkZXBJbnB1dC5lYWNoKCAoIGtleSwgaW5wdXQgKSA9PiB7XG5cdFx0Y29uc3QgJGVwQ29udGFpbmVyID0galF1ZXJ5KCAnPGRpdiBjbGFzcz1cImVwLWF1dG9zdWdnZXN0LWNvbnRhaW5lclwiPjwvZGl2PicgKTtcblx0XHRjb25zdCAkaW5wdXQgPSBqUXVlcnkoIGlucHV0ICk7XG5cblx0XHQvLyBEaXNhYmxlIGF1dG9jb21wbGV0ZVxuXHRcdCRpbnB1dC5hdHRyKCAnYXV0b2NvbXBsZXRlJywgJ29mZicgKTtcblxuXHRcdCRlcENvbnRhaW5lci5pbnNlcnRBZnRlciggJGlucHV0ICk7XG5cdFx0Y29uc3QgJGVwTGFiZWwgPSAkaW5wdXQuc2libGluZ3MoICdsYWJlbCcgKTtcblx0XHQkaW5wdXRcblx0XHRcdC5jbG9zZXN0KCAnZm9ybScgKVxuXHRcdFx0LmZpbmQoICcuZXAtYXV0b3N1Z2dlc3QtY29udGFpbmVyJyApXG5cdFx0XHQuYXBwZW5kKCAkZXBMYWJlbCApXG5cdFx0XHQuYXBwZW5kKCAkaW5wdXQgKTtcblxuXHRcdCRlcEF1dG9zdWdnZXN0LmNsb25lKCkuaW5zZXJ0QWZ0ZXIoICRpbnB1dCApO1xuXG5cdFx0JGlucHV0LnRyaWdnZXIoICdlbGFzdGljcHJlc3MuaW5wdXQubW92ZWQnICk7XG5cdH0gKTtcblxuXHQkZXBBdXRvc3VnZ2VzdC5jc3MoIHtcblx0XHR0b3A6ICRlcElucHV0Lm91dGVySGVpZ2h0KCkgLSAxLFxuXHRcdCdiYWNrZ3JvdW5kLWNvbG9yJzogJGVwSW5wdXQuY3NzKCAnYmFja2dyb3VuZC1jb2xvcicgKVxuXHR9ICk7XG5cblx0LyoqXG5cdCAqIFNpbmd1bGFyIGJpbmRpbmdzIGZvciB1cCBhbmQgZG93biB0byBwcmV2ZW50IG5vcm1hbCBhY3Rpb25zIHNvIHdlIGNhbiB1c2UgdGhlbSB0byBuYXZpZ2F0ZVxuXHQgKiBvdXIgYXV0b3N1Z2dlc3QgbGlzdFxuXHQgKiBMaXN0ZW4gdG8gdGhlIGVzY2FwZSBrZXkgdG8gY2xvc2UgdGhlIGF1dG9zdWdnZXN0IGJveFxuXHQgKi9cblx0alF1ZXJ5KCAkZXBJbnB1dCApLmVhY2goICgga2V5LCB2YWx1ZSApID0+IHtcblx0XHRqUXVlcnkoIHZhbHVlICkub24oICdrZXl1cCBrZXlkb3duIGtleXByZXNzJywgKCBldmVudCApID0+IHtcblx0XHRcdGlmICggMzggPT09IGV2ZW50LmtleUNvZGUgfHwgNDAgPT09IGV2ZW50LmtleUNvZGUgKSB7XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIDI3ID09PSBldmVudC5rZXlDb2RlICkge1xuXHRcdFx0XHRoaWRlQXV0b3N1Z2dlc3RCb3goKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0gKTtcblxuXHQvKipcblx0ICogTGlzdGVuIGZvciBhbnkga2V5dXAgZXZlbnRzLCB0aHJvdHRsZSB0aGVtIHRvIGEgbWluIHRocmVzaG9sZCBvZiB0aW1lXG5cdCAqIGFuZCB0aGVuIHNlbmQgdGhlbSBmb3IgYSBxdWVyeSB0byB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXJcblx0ICpcblx0ICovXG5cdCRlcElucHV0LmVhY2goICgga2V5LCBsb2NhbElucHV0ICkgPT4ge1xuXHRcdGNvbnN0ICRsb2NhbElucHV0ID0galF1ZXJ5KCBsb2NhbElucHV0ICk7XG5cdFx0JGxvY2FsSW5wdXQub24oICdrZXl1cCcsIGRlYm91bmNlKCAoIGV2ZW50ICkgPT4ge1xuXHRcdFx0aWYgKCAzOCA9PT0gZXZlbnQua2V5Q29kZSB8fCA0MCA9PT0gZXZlbnQua2V5Q29kZSB8fCAxMyA9PT0gZXZlbnQua2V5Q29kZSB8fCAyNyA9PT0gZXZlbnQua2V5Q29kZSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBzZWFyY2hUZXh0ID0gJGxvY2FsSW5wdXQudmFsKCk7XG5cdFx0XHRjb25zdCBwbGFjZWhvbGRlciA9ICdlcF9hdXRvc3VnZ2VzdF9wbGFjZWhvbGRlcic7XG5cdFx0XHRjb25zdCBxdWVyeUpTT04gPSBnZXRKc29uUXVlcnkoKTtcblxuXHRcdFx0aWYoIHF1ZXJ5SlNPTi5lcnJvciApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgcXVlcnk7XG5cdFx0XHRsZXQgcmVxdWVzdDtcblx0XHRcdGNvbnN0IHBvc3RUeXBlcyA9IGVwYXMucG9zdFR5cGVzO1xuXHRcdFx0Y29uc3QgcG9zdFN0YXR1cyA9IGVwYXMucG9zdFN0YXR1cztcblx0XHRcdGNvbnN0IHNlYXJjaEZpZWxkcyA9IGVwYXMuc2VhcmNoRmllbGRzO1xuXHRcdFx0Y29uc3Qgd2VpZ2h0aW5nU2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKCB7fSwgZXBhcy53ZWlnaHRpbmdEZWZhdWx0cywgZXBhcy53ZWlnaHRpbmcgKTtcblxuXHRcdFx0aWYgKCAyIDw9IHNlYXJjaFRleHQubGVuZ3RoICkge1xuXHRcdFx0XHRxdWVyeSA9IGJ1aWxkU2VhcmNoUXVlcnkoIHNlYXJjaFRleHQsIHBsYWNlaG9sZGVyLCBxdWVyeUpTT04gKTtcblx0XHRcdFx0cmVxdWVzdCA9IGVzU2VhcmNoKCBxdWVyeSwgc2VhcmNoVGV4dCApO1xuXG5cdFx0XHRcdHJlcXVlc3QuZG9uZSggKCByZXNwb25zZSApID0+IHtcblx0XHRcdFx0XHRpZiAoIDAgPCByZXNwb25zZS5fc2hhcmRzLnN1Y2Nlc3NmdWwgKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB1c2VkUG9zdHMgPSB7fTtcblx0XHRcdFx0XHRcdGNvbnN0IGZpbHRlcmVkT2JqZWN0cyA9IFtdO1xuXG5cdFx0XHRcdFx0XHRjb25zdCBoaXRzID0gY2hlY2tGb3JPcmRlcmVkUG9zdHMoIHJlc3BvbnNlLmhpdHMuaGl0cywgc2VhcmNoVGV4dCApO1xuXG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggaGl0cywgKCBpbmRleCwgZWxlbWVudCApID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGV4dCA9IGVsZW1lbnQuX3NvdXJjZS5wb3N0X3RpdGxlO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB1cmwgPSBlbGVtZW50Ll9zb3VyY2UucGVybWFsaW5rO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBwb3N0SWQgPSBlbGVtZW50Ll9zb3VyY2UucG9zdF9pZDtcblxuXHRcdFx0XHRcdFx0XHRpZiggISB1c2VkUG9zdHNbIHBvc3RJZCBdICkge1xuXHRcdFx0XHRcdFx0XHRcdHVzZWRQb3N0c1sgcG9zdElkIF0gPSB0cnVlO1xuXG5cdFx0XHRcdFx0XHRcdFx0ZmlsdGVyZWRPYmplY3RzLnB1c2goIHtcblx0XHRcdFx0XHRcdFx0XHRcdCd0ZXh0JzogdGV4dCxcblx0XHRcdFx0XHRcdFx0XHRcdCd1cmwnOiB1cmxcblx0XHRcdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gKTtcblxuXHRcdFx0XHRcdFx0aWYgKCAwID09PSBmaWx0ZXJlZE9iamVjdHMubGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0XHRoaWRlQXV0b3N1Z2dlc3RCb3goKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHVwZGF0ZUF1dG9zdWdnZXN0Qm94KCBmaWx0ZXJlZE9iamVjdHMsICRsb2NhbElucHV0ICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGhpZGVBdXRvc3VnZ2VzdEJveCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0fSBlbHNlIGlmICggMCA9PT0gc2VhcmNoVGV4dC5sZW5ndGggKSB7XG5cdFx0XHRcdGhpZGVBdXRvc3VnZ2VzdEJveCgpO1xuXHRcdFx0fVxuXHRcdH0sIDIwMCApICk7XG5cdH0gKTtcblxuXHQvLyBQdWJsaWNhbGx5IGV4cG9zZSBBUElcblx0d2luZG93LmVwYXNBUEkgPSB7XG5cdFx0aGlkZUF1dG9zdWdnZXN0Qm94OiBoaWRlQXV0b3N1Z2dlc3RCb3gsXG5cdFx0dXBkYXRlQXV0b3N1Z2dlc3RCb3g6IHVwZGF0ZUF1dG9zdWdnZXN0Qm94LFxuXHRcdGVzU2VhcmNoOiBlc1NlYXJjaCxcblx0XHRidWlsZFNlYXJjaFF1ZXJ5OiBidWlsZFNlYXJjaFF1ZXJ5XG5cdH07XG59XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWFzc2lnbicpO1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuYXNzaWduXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBPYmplY3QuYXNzaWduICE9PSBhc3NpZ24gfSwge1xuICBhc3NpZ246IGFzc2lnblxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xuXG52YXIgbmF0aXZlQXNzaWduID0gT2JqZWN0LmFzc2lnbjtcblxuLy8gYE9iamVjdC5hc3NpZ25gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmFzc2lnblxuLy8gc2hvdWxkIHdvcmsgd2l0aCBzeW1ib2xzIGFuZCBzaG91bGQgaGF2ZSBkZXRlcm1pbmlzdGljIHByb3BlcnR5IG9yZGVyIChWOCBidWcpXG5tb2R1bGUuZXhwb3J0cyA9ICFuYXRpdmVBc3NpZ24gfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgpO1xuICB2YXIgYWxwaGFiZXQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW3N5bWJvbF0gPSA3O1xuICBhbHBoYWJldC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoY2hyKSB7IEJbY2hyXSA9IGNocjsgfSk7XG4gIHJldHVybiBuYXRpdmVBc3NpZ24oe30sIEEpW3N5bWJvbF0gIT0gNyB8fCBvYmplY3RLZXlzKG5hdGl2ZUFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9IGFscGhhYmV0O1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgVCA9IHRvT2JqZWN0KHRhcmdldCk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmY7XG4gIHdoaWxlIChhcmd1bWVudHNMZW5ndGggPiBpbmRleCkge1xuICAgIHZhciBTID0gSW5kZXhlZE9iamVjdChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gb2JqZWN0S2V5cyhTKS5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKFMpKSA6IG9iamVjdEtleXMoUyk7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBqID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBqKSB7XG4gICAgICBrZXkgPSBrZXlzW2orK107XG4gICAgICBpZiAoIURFU0NSSVBUT1JTIHx8IHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoUywga2V5KSkgVFtrZXldID0gU1trZXldO1xuICAgIH1cbiAgfSByZXR1cm4gVDtcbn0gOiBuYXRpdmVBc3NpZ247XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKS5mO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCcpO1xudmFyIGdldEZsYWdzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncycpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcbnZhciBOYXRpdmVSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IE5hdGl2ZVJlZ0V4cC5wcm90b3R5cGU7XG52YXIgcmUxID0gL2EvZztcbnZhciByZTIgPSAvYS9nO1xuXG4vLyBcIm5ld1wiIHNob3VsZCBjcmVhdGUgYSBuZXcgb2JqZWN0LCBvbGQgd2Via2l0IGJ1Z1xudmFyIENPUlJFQ1RfTkVXID0gbmV3IE5hdGl2ZVJlZ0V4cChyZTEpICE9PSByZTE7XG5cbnZhciBGT1JDRUQgPSBERVNDUklQVE9SUyAmJiBpc0ZvcmNlZCgnUmVnRXhwJywgKCFDT1JSRUNUX05FVyB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJlMltNQVRDSF0gPSBmYWxzZTtcbiAgLy8gUmVnRXhwIGNvbnN0cnVjdG9yIGNhbiBhbHRlciBmbGFncyBhbmQgSXNSZWdFeHAgd29ya3MgY29ycmVjdCB3aXRoIEBAbWF0Y2hcbiAgcmV0dXJuIE5hdGl2ZVJlZ0V4cChyZTEpICE9IHJlMSB8fCBOYXRpdmVSZWdFeHAocmUyKSA9PSByZTIgfHwgTmF0aXZlUmVnRXhwKHJlMSwgJ2knKSAhPSAnL2EvaSc7XG59KSkpO1xuXG4vLyBgUmVnRXhwYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLWNvbnN0cnVjdG9yXG5pZiAoRk9SQ0VEKSB7XG4gIHZhciBSZWdFeHBXcmFwcGVyID0gZnVuY3Rpb24gUmVnRXhwKHBhdHRlcm4sIGZsYWdzKSB7XG4gICAgdmFyIHRoaXNJc1JlZ0V4cCA9IHRoaXMgaW5zdGFuY2VvZiBSZWdFeHBXcmFwcGVyO1xuICAgIHZhciBwYXR0ZXJuSXNSZWdFeHAgPSBpc1JlZ0V4cChwYXR0ZXJuKTtcbiAgICB2YXIgZmxhZ3NBcmVVbmRlZmluZWQgPSBmbGFncyA9PT0gdW5kZWZpbmVkO1xuICAgIHJldHVybiAhdGhpc0lzUmVnRXhwICYmIHBhdHRlcm5Jc1JlZ0V4cCAmJiBwYXR0ZXJuLmNvbnN0cnVjdG9yID09PSBSZWdFeHBXcmFwcGVyICYmIGZsYWdzQXJlVW5kZWZpbmVkID8gcGF0dGVyblxuICAgICAgOiBpbmhlcml0SWZSZXF1aXJlZChDT1JSRUNUX05FV1xuICAgICAgICA/IG5ldyBOYXRpdmVSZWdFeHAocGF0dGVybklzUmVnRXhwICYmICFmbGFnc0FyZVVuZGVmaW5lZCA/IHBhdHRlcm4uc291cmNlIDogcGF0dGVybiwgZmxhZ3MpXG4gICAgICAgIDogTmF0aXZlUmVnRXhwKChwYXR0ZXJuSXNSZWdFeHAgPSBwYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwV3JhcHBlcilcbiAgICAgICAgICA/IHBhdHRlcm4uc291cmNlXG4gICAgICAgICAgOiBwYXR0ZXJuLCBwYXR0ZXJuSXNSZWdFeHAgJiYgZmxhZ3NBcmVVbmRlZmluZWQgPyBnZXRGbGFncy5jYWxsKHBhdHRlcm4pIDogZmxhZ3MpXG4gICAgICAsIHRoaXNJc1JlZ0V4cCA/IHRoaXMgOiBSZWdFeHBQcm90b3R5cGUsIFJlZ0V4cFdyYXBwZXIpO1xuICB9O1xuICB2YXIgcHJveHkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAga2V5IGluIFJlZ0V4cFdyYXBwZXIgfHwgZGVmaW5lUHJvcGVydHkoUmVnRXhwV3JhcHBlciwga2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5hdGl2ZVJlZ0V4cFtrZXldOyB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAoaXQpIHsgTmF0aXZlUmVnRXhwW2tleV0gPSBpdDsgfVxuICAgIH0pO1xuICB9O1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoTmF0aXZlUmVnRXhwKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgd2hpbGUgKGtleXMubGVuZ3RoID4gaW5kZXgpIHByb3h5KGtleXNbaW5kZXgrK10pO1xuICBSZWdFeHBQcm90b3R5cGUuY29uc3RydWN0b3IgPSBSZWdFeHBXcmFwcGVyO1xuICBSZWdFeHBXcmFwcGVyLnByb3RvdHlwZSA9IFJlZ0V4cFByb3RvdHlwZTtcbiAgcmVkZWZpbmUoZ2xvYmFsLCAnUmVnRXhwJywgUmVnRXhwV3JhcHBlcik7XG59XG5cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAtQEBzcGVjaWVzXG5zZXRTcGVjaWVzKCdSZWdFeHAnKTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xuXG4vLyBtYWtlcyBzdWJjbGFzc2luZyB3b3JrIGNvcnJlY3QgZm9yIHdyYXBwZWQgYnVpbHQtaW5zXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgkdGhpcywgZHVtbXksIFdyYXBwZXIpIHtcbiAgdmFyIE5ld1RhcmdldCwgTmV3VGFyZ2V0UHJvdG90eXBlO1xuICBpZiAoXG4gICAgLy8gaXQgY2FuIHdvcmsgb25seSB3aXRoIG5hdGl2ZSBgc2V0UHJvdG90eXBlT2ZgXG4gICAgc2V0UHJvdG90eXBlT2YgJiZcbiAgICAvLyB3ZSBoYXZlbid0IGNvbXBsZXRlbHkgY29ycmVjdCBwcmUtRVM2IHdheSBmb3IgZ2V0dGluZyBgbmV3LnRhcmdldGAsIHNvIHVzZSB0aGlzXG4gICAgdHlwZW9mIChOZXdUYXJnZXQgPSBkdW1teS5jb25zdHJ1Y3RvcikgPT0gJ2Z1bmN0aW9uJyAmJlxuICAgIE5ld1RhcmdldCAhPT0gV3JhcHBlciAmJlxuICAgIGlzT2JqZWN0KE5ld1RhcmdldFByb3RvdHlwZSA9IE5ld1RhcmdldC5wcm90b3R5cGUpICYmXG4gICAgTmV3VGFyZ2V0UHJvdG90eXBlICE9PSBXcmFwcGVyLnByb3RvdHlwZVxuICApIHNldFByb3RvdHlwZU9mKCR0aGlzLCBOZXdUYXJnZXRQcm90b3R5cGUpO1xuICByZXR1cm4gJHRoaXM7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFQb3NzaWJsZVByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LnNldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5zZXRwcm90b3R5cGVvZlxuLy8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gZnVuY3Rpb24gKCkge1xuICB2YXIgQ09SUkVDVF9TRVRURVIgPSBmYWxzZTtcbiAgdmFyIHRlc3QgPSB7fTtcbiAgdmFyIHNldHRlcjtcbiAgdHJ5IHtcbiAgICBzZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nKS5zZXQ7XG4gICAgc2V0dGVyLmNhbGwodGVzdCwgW10pO1xuICAgIENPUlJFQ1RfU0VUVEVSID0gdGVzdCBpbnN0YW5jZW9mIEFycmF5O1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgIGFuT2JqZWN0KE8pO1xuICAgIGFQb3NzaWJsZVByb3RvdHlwZShwcm90byk7XG4gICAgaWYgKENPUlJFQ1RfU0VUVEVSKSBzZXR0ZXIuY2FsbChPLCBwcm90byk7XG4gICAgZWxzZSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgIHJldHVybiBPO1xuICB9O1xufSgpIDogdW5kZWZpbmVkKTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkgJiYgaXQgIT09IG51bGwpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBzZXQgXCIgKyBTdHJpbmcoaXQpICsgJyBhcyBhIHByb3RvdHlwZScpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09OU1RSVUNUT1JfTkFNRSkge1xuICB2YXIgQ29uc3RydWN0b3IgPSBnZXRCdWlsdEluKENPTlNUUlVDVE9SX05BTUUpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiBDb25zdHJ1Y3RvciAmJiAhQ29uc3RydWN0b3JbU1BFQ0lFU10pIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgU1BFQ0lFUywge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gICAgfSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGZsYWdzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncycpO1xuXG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xudmFyIG5hdGl2ZVRvU3RyaW5nID0gUmVnRXhwUHJvdG90eXBlW1RPX1NUUklOR107XG5cbnZhciBOT1RfR0VORVJJQyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5hdGl2ZVRvU3RyaW5nLmNhbGwoeyBzb3VyY2U6ICdhJywgZmxhZ3M6ICdiJyB9KSAhPSAnL2EvYic7IH0pO1xuLy8gRkY0NC0gUmVnRXhwI3RvU3RyaW5nIGhhcyBhIHdyb25nIG5hbWVcbnZhciBJTkNPUlJFQ1RfTkFNRSA9IG5hdGl2ZVRvU3RyaW5nLm5hbWUgIT0gVE9fU1RSSU5HO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG5pZiAoTk9UX0dFTkVSSUMgfHwgSU5DT1JSRUNUX05BTUUpIHtcbiAgcmVkZWZpbmUoUmVnRXhwLnByb3RvdHlwZSwgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgUiA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBwID0gU3RyaW5nKFIuc291cmNlKTtcbiAgICB2YXIgcmYgPSBSLmZsYWdzO1xuICAgIHZhciBmID0gU3RyaW5nKHJmID09PSB1bmRlZmluZWQgJiYgUiBpbnN0YW5jZW9mIFJlZ0V4cCAmJiAhKCdmbGFncycgaW4gUmVnRXhwUHJvdG90eXBlKSA/IGZsYWdzLmNhbGwoUikgOiByZik7XG4gICAgcmV0dXJuICcvJyArIHAgKyAnLycgKyBmO1xuICB9LCB7IHVuc2FmZTogdHJ1ZSB9KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +!function(t){var n={};function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:r})},e.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)e.d(r,o,function(n){return t[n]}.bind(null,o));return r},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="",e(e.s=290)}([,,function(t,n,e){(function(n){var e="object",r=function(t){return t&&t.Math==Math&&t};t.exports=r(typeof globalThis==e&&globalThis)||r(typeof window==e&&window)||r(typeof self==e&&self)||r(typeof n==e&&n)||Function("return this")()}).call(this,e(54))},function(t,n){t.exports=window},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},,,function(t,n){t.exports=jQuery},function(t,n){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},function(t,n,e){var r=e(4);t.exports=!r((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,n,e){var r=e(2),o=e(32).f,i=e(11),c=e(31),u=e(24),a=e(62),s=e(50);t.exports=function(t,n){var e,f,l,p,v,d=t.target,g=t.global,h=t.stat;if(e=g?r:h?r[d]||u(d,{}):(r[d]||{}).prototype)for(f in n){if(p=n[f],l=t.noTargetGet?(v=o(e,f))&&v.value:e[f],!s(g?f:d+(h?".":"#")+f,t.forced)&&void 0!==l){if(typeof p===typeof l)continue;a(p,l)}(t.sham||l&&l.sham)&&i(p,"sham",!0),c(e,f,p,t)}}},function(t,n,e){var r=e(9),o=e(16),i=e(26);t.exports=r?function(t,n,e){return o.f(t,n,i(1,e))}:function(t,n,e){return t[n]=e,t}},function(t,n,e){var r=e(2),o=e(18),i=e(35),c=e(64),u=r.Symbol,a=o("wks");t.exports=function(t){return a[t]||(a[t]=c&&u[t]||(c?u:i)("Symbol."+t))}},function(t,n){var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},function(t,n,e){var r=e(8);t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},,function(t,n,e){var r=e(9),o=e(33),i=e(14),c=e(27),u=Object.defineProperty;n.f=r?u:function(t,n,e){if(i(t),n=c(n,!0),i(e),o)try{return u(t,n,e)}catch(t){}if("get"in e||"set"in e)throw TypeError("Accessors not supported");return"value"in e&&(t[n]=e.value),t}},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,e){var r=e(2),o=e(24),i=e(55),c=r["__core-js_shared__"]||o("__core-js_shared__",{});(t.exports=function(t,n){return c[t]||(c[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.2.1",mode:i?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,n,e){var r=e(29),o=e(17);t.exports=function(t){return r(o(t))}},function(t,n,e){var r=e(23),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,n){var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},,function(t,n){var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},function(t,n,e){var r=e(2),o=e(11);t.exports=function(t,n){try{o(r,t,n)}catch(e){r[t]=n}return n}},function(t,n,e){var r=e(17);t.exports=function(t){return Object(r(t))}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,e){var r=e(8);t.exports=function(t,n){if(!r(t))return t;var e,o;if(n&&"function"==typeof(e=t.toString)&&!r(o=e.call(t)))return o;if("function"==typeof(e=t.valueOf)&&!r(o=e.call(t)))return o;if(!n&&"function"==typeof(e=t.toString)&&!r(o=e.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,n){t.exports={}},function(t,n,e){var r=e(4),o=e(21),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,n,e){var r=e(2),o=e(18),i=e(11),c=e(13),u=e(24),a=e(34),s=e(56),f=s.get,l=s.enforce,p=String(a).split("toString");o("inspectSource",(function(t){return a.call(t)})),(t.exports=function(t,n,e,o){var a=!!o&&!!o.unsafe,s=!!o&&!!o.enumerable,f=!!o&&!!o.noTargetGet;"function"==typeof e&&("string"!=typeof n||c(e,"name")||i(e,"name",n),l(e).source=p.join("string"==typeof n?n:"")),t!==r?(a?!f&&t[n]&&(s=!0):delete t[n],s?t[n]=e:i(t,n,e)):s?t[n]=e:u(n,e)})(Function.prototype,"toString",(function(){return"function"==typeof this&&f(this).source||a.call(this)}))},function(t,n,e){var r=e(9),o=e(47),i=e(26),c=e(19),u=e(27),a=e(13),s=e(33),f=Object.getOwnPropertyDescriptor;n.f=r?f:function(t,n){if(t=c(t),n=u(n,!0),s)try{return f(t,n)}catch(t){}if(a(t,n))return i(!o.f.call(t,n),t[n])}},function(t,n,e){var r=e(9),o=e(4),i=e(38);t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,n,e){var r=e(18);t.exports=r("native-function-to-string",Function.toString)},function(t,n){var e=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++e+r).toString(36)}},function(t,n,e){var r=e(57),o=e(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,n){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][n]||o[t]&&o[t][n]}},function(t,n,e){var r=e(13),o=e(19),i=e(48).indexOf,c=e(28);t.exports=function(t,n){var e,u=o(t),a=0,s=[];for(e in u)!r(c,e)&&r(u,e)&&s.push(e);for(;n.length>a;)r(u,e=n[a++])&&(~i(s,e)||s.push(e));return s}},function(t,n,e){var r=e(2),o=e(8),i=r.document,c=o(i)&&o(i.createElement);t.exports=function(t){return c?i.createElement(t):{}}},function(t,n,e){var r=e(51),o=e(29),i=e(25),c=e(20),u=e(43),a=[].push,s=function(t){var n=1==t,e=2==t,s=3==t,f=4==t,l=6==t,p=5==t||l;return function(v,d,g,h){for(var y,x,m=i(v),b=o(m),w=r(d,g,3),S=c(b.length),j=0,O=h||u,_=n?O(v,S):e?O(v,0):void 0;S>j;j++)if((p||j in b)&&(x=w(y=b[j],j,m),t))if(n)_[j]=x;else if(x)switch(t){case 3:return!0;case 5:return y;case 6:return j;case 2:a.call(_,y)}else if(f)return!1;return l?-1:s||f?f:_}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},function(t,n,e){var r=e(18),o=e(35),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,n,e){var r=e(23),o=Math.max,i=Math.min;t.exports=function(t,n){var e=r(t);return e<0?o(e+n,0):i(e,n)}},function(t,n,e){var r=e(8),o=e(44),i=e(12)("species");t.exports=function(t,n){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)?r(e)&&null===(e=e[i])&&(e=void 0):e=void 0),new(void 0===e?Array:e)(0===n?0:n)}},function(t,n,e){var r=e(21);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,n,e){var r=e(4),o=e(12)("species");t.exports=function(t){return!r((function(){var n=[];return(n.constructor={})[o]=function(){return{foo:1}},1!==n[t](Boolean).foo}))}},,function(t,n,e){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);n.f=i?function(t){var n=o(this,t);return!!n&&n.enumerable}:r},function(t,n,e){var r=e(19),o=e(20),i=e(42),c=function(t){return function(n,e,c){var u,a=r(n),s=o(a.length),f=i(c,s);if(t&&e!=e){for(;s>f;)if((u=a[f++])!=u)return!0}else for(;s>f;f++)if((t||f in a)&&a[f]===e)return t||f||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,e){var r=e(4),o=/#|\.prototype\./,i=function(t,n){var e=u[c(t)];return e==s||e!=a&&("function"==typeof n?r(n):!!n)},c=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},u=i.data={},a=i.NATIVE="N",s=i.POLYFILL="P";t.exports=i},function(t,n,e){var r=e(40);t.exports=function(t,n,e){if(r(t),void 0===n)return t;switch(e){case 0:return function(){return t.call(n)};case 1:return function(e){return t.call(n,e)};case 2:return function(e,r){return t.call(n,e,r)};case 3:return function(e,r,o){return t.call(n,e,r,o)}}return function(){return t.apply(n,arguments)}}},,,function(t,n){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"===typeof window&&(e=window)}t.exports=e},function(t,n){t.exports=!1},function(t,n,e){var r,o,i,c=e(61),u=e(2),a=e(8),s=e(11),f=e(13),l=e(41),p=e(28),v=u.WeakMap;if(c){var d=new v,g=d.get,h=d.has,y=d.set;r=function(t,n){return y.call(d,t,n),n},o=function(t){return g.call(d,t)||{}},i=function(t){return h.call(d,t)}}else{var x=l("state");p[x]=!0,r=function(t,n){return s(t,x,n),n},o=function(t){return f(t,x)?t[x]:{}},i=function(t){return f(t,x)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(n){var e;if(!a(n)||(e=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return e}}}},function(t,n,e){t.exports=e(2)},function(t,n,e){var r=e(37),o=e(30).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,n,e){var r=e(37),o=e(30);t.exports=Object.keys||function(t){return r(t,o)}},function(t,n){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},function(t,n,e){var r=e(2),o=e(34),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o.call(i))},function(t,n,e){var r=e(13),o=e(63),i=e(32),c=e(16);t.exports=function(t,n){for(var e=o(n),u=c.f,a=i.f,s=0;s1&&i.call(c[0],e,(function(){for(s=1;s1?arguments[1]:void 0)}})},function(t,n,e){var r=e(12),o=e(76),i=e(11),c=r("unscopables"),u=Array.prototype;void 0==u[c]&&i(u,c,o(null)),t.exports=function(t){u[c][t]=!0}},function(t,n,e){var r=e(14),o=e(77),i=e(30),c=e(28),u=e(73),a=e(38),s=e(41)("IE_PROTO"),f=function(){},l=function(){var t,n=a("iframe"),e=i.length;for(n.style.display="none",u.appendChild(n),n.src=String("javascript:"),(t=n.contentWindow.document).open(),t.write("