@pinata/sdk 2.1.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -2
- package/README.md +59 -694
- package/index.d.ts +9 -0
- package/index.js +6 -0
- package/index.mjs +4 -0
- package/legacy.js +15 -0
- package/package.json +62 -83
- package/react/index.d.ts +1 -0
- package/react/index.js +3 -0
- package/react/index.mjs +1 -0
- package/.babelrc +0 -5
- package/.editorconfig +0 -12
- package/.eslintrc +0 -173
- package/.husky/pre-commit +0 -6
- package/.nvmrc +0 -1
- package/.travis.yml +0 -5
- package/lib/pinata-sdk.js +0 -24526
- package/lib/pinata-sdk.min.js +0 -22
- package/pinata.png +0 -0
- package/src/commands/data/getFilesByCount/getFilesByCount.ts +0 -66
- package/src/commands/data/index.ts +0 -4
- package/src/commands/data/pinList/pinList.ts +0 -77
- package/src/commands/data/pinList/queryBuilder.ts +0 -239
- package/src/commands/data/testAuthentication.ts +0 -31
- package/src/commands/data/userPinnedDataTotal.ts +0 -24
- package/src/commands/pinning/hashMetadata.ts +0 -56
- package/src/commands/pinning/index.ts +0 -8
- package/src/commands/pinning/pinByHash.ts +0 -65
- package/src/commands/pinning/pinFileToIPFS.ts +0 -118
- package/src/commands/pinning/pinFromFS.ts +0 -60
- package/src/commands/pinning/pinJSONToIPFS.ts +0 -47
- package/src/commands/pinning/pinJobs/pinJobs.ts +0 -50
- package/src/commands/pinning/pinJobs/queryBuilder.ts +0 -75
- package/src/commands/pinning/unpin.ts +0 -32
- package/src/constants.ts +0 -4
- package/src/index.ts +0 -124
- package/src/require-babel-polyfill.ts +0 -5
- package/src/third-party/base-path-converter.d.ts +0 -3
- package/src/third-party/global.d.ts +0 -9
- package/src/third-party/is-ipfs.d.ts +0 -5
- package/src/util/errorResponse.ts +0 -10
- package/src/util/validators.ts +0 -182
- package/test/commands/data/getFilesByCount/getFilesByCount.test.ts +0 -212
- package/test/commands/data/pinList/pinList.test.ts +0 -102
- package/test/commands/data/pinList/queryBuilder.test.ts +0 -439
- package/test/commands/data/pinlist-sample-api.ts +0 -540
- package/test/commands/data/testAuthentication.test.ts +0 -34
- package/test/commands/data/userPinnedDataTotal.test.ts +0 -29
- package/test/commands/pinning/hashMetadata.test.ts +0 -76
- package/test/commands/pinning/pinByHash.test.ts +0 -46
- package/test/commands/pinning/pinFileToIPFS.test.ts +0 -53
- package/test/commands/pinning/pinFromFS.ts +0 -71
- package/test/commands/pinning/pinJSONToIPFS.test.ts +0 -42
- package/test/commands/pinning/pinJobs/pinJobs.test.ts +0 -29
- package/test/commands/pinning/pinJobs/queryBuilder.test.ts +0 -120
- package/test/commands/pinning/unpin.test.ts +0 -46
- package/test/util/validators.test.ts +0 -234
- package/tsconfig.json +0 -23
- package/types/commands/data/getFilesByCount/getFilesByCount.d.ts +0 -14
- package/types/commands/data/index.d.ts +0 -4
- package/types/commands/data/pinList/pinList.d.ts +0 -45
- package/types/commands/data/pinList/queryBuilder.d.ts +0 -1
- package/types/commands/data/testAuthentication.d.ts +0 -5
- package/types/commands/data/userPinnedDataTotal.d.ts +0 -2
- package/types/commands/pinning/hashMetadata.d.ts +0 -3
- package/types/commands/pinning/hashPinPolicy.d.ts +0 -9
- package/types/commands/pinning/index.d.ts +0 -8
- package/types/commands/pinning/pinByHash.d.ts +0 -14
- package/types/commands/pinning/pinFileToIPFS.d.ts +0 -25
- package/types/commands/pinning/pinFromFS.d.ts +0 -4
- package/types/commands/pinning/pinJSONToIPFS.d.ts +0 -3
- package/types/commands/pinning/pinJobs/pinJobs.d.ts +0 -20
- package/types/commands/pinning/pinJobs/queryBuilder.d.ts +0 -1
- package/types/commands/pinning/unpin.d.ts +0 -2
- package/types/commands/pinning/userPinPolicy.d.ts +0 -8
- package/types/constants.d.ts +0 -2
- package/types/index.d.ts +0 -39
- package/types/require-babel-polyfill.d.ts +0 -2
- package/types/util/errorResponse.d.ts +0 -1
- package/types/util/validators.d.ts +0 -37
- package/webpack.config.js +0 -58
package/lib/pinata-sdk.min.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("pinata-sdk",[],n):"object"==typeof exports?exports["pinata-sdk"]=n():e["pinata-sdk"]=n()}("undefined"!=typeof self?self:this,(function(){return function(e){var n={};function t(i){if(n[i])return n[i].exports;var a=n[i]={i:i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,t),a.l=!0,a.exports}return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:i})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var a in e)t.d(i,a,function(n){return e[n]}.bind(null,a));return i},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=209)}([function(e,n,t){var i=t(2),a=t(25),o=t(16),r=t(17),s=t(26),c=function(e,n,t){var u,p,l,f,d=e&c.F,m=e&c.G,h=e&c.S,v=e&c.P,x=e&c.B,b=m?i:h?i[n]||(i[n]={}):(i[n]||{}).prototype,g=m?a:a[n]||(a[n]={}),y=g.prototype||(g.prototype={});for(u in m&&(t=n),t)l=((p=!d&&b&&void 0!==b[u])?b:t)[u],f=x&&p?s(l,i):v&&"function"==typeof l?s(Function.call,l):l,b&&r(b,u,l,e&c.U),g[u]!=l&&o(g,u,f),v&&y[u]!=l&&(y[u]=l)};i.core=a,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,n,t){var i=t(4);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},function(e,n){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n,t){var i=t(65)("wks"),a=t(50),o=t(2).Symbol,r="function"==typeof o;(e.exports=function(e){return i[e]||(i[e]=r&&o[e]||(r?o:a)("Symbol."+e))}).store=i},function(e,n,t){var i=t(28),a=Math.min;e.exports=function(e){return e>0?a(i(e),9007199254740991):0}},function(e,n,t){e.exports=!t(3)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,n,t){var i=t(0);i(i.S+i.F*!t(7),"Object",{defineProperty:t(9).f})},function(e,n,t){var i=t(1),a=t(132),o=t(36),r=Object.defineProperty;n.f=t(7)?Object.defineProperty:function(e,n,t){if(i(e),n=o(n,!0),i(t),a)try{return r(e,n,t)}catch(e){}if("get"in t||"set"in t)throw TypeError("Accessors not supported!");return"value"in t&&(e[n]=t.value),e}},function(e,n,t){var i=t(38);e.exports=function(e){return Object(i(e))}},function(e,n,t){"use strict";var i=t(0),a=t(37)(0),o=t(29)([].forEach,!0);i(i.P+i.F*!o,"Array",{forEach:function(e){return a(this,e,arguments[1])}})},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,n){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n,t){var i=t(10),a=t(51);t(39)("keys",(function(){return function(e){return a(i(e))}}))},function(e,n,t){"use strict";var i=t(175),a=Object.prototype.toString;function o(e){return"[object Array]"===a.call(e)}function r(e){return void 0===e}function s(e){return null!==e&&"object"==typeof e}function c(e){if("[object Object]"!==a.call(e))return!1;var n=Object.getPrototypeOf(e);return null===n||n===Object.prototype}function u(e){return"[object Function]"===a.call(e)}function p(e,n){if(null!=e)if("object"!=typeof e&&(e=[e]),o(e))for(var t=0,i=e.length;t<i;t++)n.call(null,e[t],t,e);else for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&n.call(null,e[a],a,e)}e.exports={isArray:o,isArrayBuffer:function(e){return"[object ArrayBuffer]"===a.call(e)},isBuffer:function(e){return null!==e&&!r(e)&&null!==e.constructor&&!r(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:s,isPlainObject:c,isUndefined:r,isDate:function(e){return"[object Date]"===a.call(e)},isFile:function(e){return"[object File]"===a.call(e)},isBlob:function(e){return"[object Blob]"===a.call(e)},isFunction:u,isStream:function(e){return s(e)&&u(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:p,merge:function e(){var n={};function t(t,i){c(n[i])&&c(t)?n[i]=e(n[i],t):c(t)?n[i]=e({},t):o(t)?n[i]=t.slice():n[i]=t}for(var i=0,a=arguments.length;i<a;i++)p(arguments[i],t);return n},extend:function(e,n,t){return p(n,(function(n,a){e[a]=t&&"function"==typeof n?i(n,t):n})),e},trim:function(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}}},function(e,n,t){var i=t(9),a=t(49);e.exports=t(7)?function(e,n,t){return i.f(e,n,a(1,t))}:function(e,n,t){return e[n]=t,e}},function(e,n,t){var i=t(2),a=t(16),o=t(19),r=t(50)("src"),s=t(211),c=(""+s).split("toString");t(25).inspectSource=function(e){return s.call(e)},(e.exports=function(e,n,t,s){var u="function"==typeof t;u&&(o(t,"name")||a(t,"name",n)),e[n]!==t&&(u&&(o(t,r)||a(t,r,e[n]?""+e[n]:c.join(String(n)))),e===i?e[n]=t:s?e[n]?e[n]=t:a(e,n,t):(delete e[n],a(e,n,t)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[r]||s.call(this)}))},function(e,n,t){var i=t(0),a=t(3),o=t(38),r=/"/g,s=function(e,n,t,i){var a=String(o(e)),s="<"+n;return""!==t&&(s+=" "+t+'="'+String(i).replace(r,""")+'"'),s+">"+a+"</"+n+">"};e.exports=function(e,n){var t={};t[e]=n(s),i(i.P+i.F*a((function(){var n=""[e]('"');return n!==n.toLowerCase()||n.split('"').length>3})),"String",t)}},function(e,n){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},function(e,n,t){var i=t(66),a=t(38);e.exports=function(e){return i(a(e))}},function(e,n,t){var i=t(68),a=t(49),o=t(20),r=t(36),s=t(19),c=t(132),u=Object.getOwnPropertyDescriptor;n.f=t(7)?u:function(e,n){if(e=o(e),n=r(n,!0),c)try{return u(e,n)}catch(e){}if(s(e,n))return a(!i.f.call(e,n),e[n])}},function(e,n,t){var i=t(19),a=t(10),o=t(93)("IE_PROTO"),r=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=a(e),i(e,o)?e[o]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?r:null}},function(e,n,t){"use strict";var i=t(61),a={};a[t(5)("toStringTag")]="z",a+""!="[object z]"&&t(17)(Object.prototype,"toString",(function(){return"[object "+i(this)+"]"}),!0)},function(e,n,t){"use strict";var i=t(0),a=t(37)(2);i(i.P+i.F*!t(29)([].filter,!0),"Array",{filter:function(e){return a(this,e,arguments[1])}})},function(e,n){var t=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=t)},function(e,n,t){var i=t(12);e.exports=function(e,n,t){if(i(e),void 0===n)return e;switch(t){case 1:return function(t){return e.call(n,t)};case 2:return function(t,i){return e.call(n,t,i)};case 3:return function(t,i,a){return e.call(n,t,i,a)}}return function(){return e.apply(n,arguments)}}},function(e,n){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,n){var t=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:t)(e)}},function(e,n,t){"use strict";var i=t(3);e.exports=function(e,n){return!!e&&i((function(){n?e.call(null,(function(){}),1):e.call(null)}))}},function(e,n){e.exports=function(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n,t){"use strict";var i=t(2),a=t(19),o=t(7),r=t(0),s=t(17),c=t(47).KEY,u=t(3),p=t(65),l=t(60),f=t(50),d=t(5),m=t(134),h=t(95),v=t(218),x=t(74),b=t(1),g=t(4),y=t(10),k=t(20),w=t(36),S=t(49),j=t(53),_=t(136),O=t(21),E=t(76),P=t(9),C=t(51),A=O.f,M=P.f,F=_.f,N=i.Symbol,T=i.JSON,R=T&&T.stringify,B=d("_hidden"),I=d("toPrimitive"),L={}.propertyIsEnumerable,z=p("symbol-registry"),D=p("symbols"),q=p("op-symbols"),U=Object.prototype,$="function"==typeof N&&!!E.f,V=i.QObject,W=!V||!V.prototype||!V.prototype.findChild,G=o&&u((function(){return 7!=j(M({},"a",{get:function(){return M(this,"a",{value:7}).a}})).a}))?function(e,n,t){var i=A(U,n);i&&delete U[n],M(e,n,t),i&&e!==U&&M(U,n,i)}:M,H=function(e){var n=D[e]=j(N.prototype);return n._k=e,n},K=$&&"symbol"==typeof N.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof N},J=function(e,n,t){return e===U&&J(q,n,t),b(e),n=w(n,!0),b(t),a(D,n)?(t.enumerable?(a(e,B)&&e[B][n]&&(e[B][n]=!1),t=j(t,{enumerable:S(0,!1)})):(a(e,B)||M(e,B,S(1,{})),e[B][n]=!0),G(e,n,t)):M(e,n,t)},Y=function(e,n){b(e);for(var t,i=v(n=k(n)),a=0,o=i.length;o>a;)J(e,t=i[a++],n[t]);return e},X=function(e){var n=L.call(this,e=w(e,!0));return!(this===U&&a(D,e)&&!a(q,e))&&(!(n||!a(this,e)||!a(D,e)||a(this,B)&&this[B][e])||n)},Z=function(e,n){if(e=k(e),n=w(n,!0),e!==U||!a(D,n)||a(q,n)){var t=A(e,n);return!t||!a(D,n)||a(e,B)&&e[B][n]||(t.enumerable=!0),t}},Q=function(e){for(var n,t=F(k(e)),i=[],o=0;t.length>o;)a(D,n=t[o++])||n==B||n==c||i.push(n);return i},ee=function(e){for(var n,t=e===U,i=F(t?q:k(e)),o=[],r=0;i.length>r;)!a(D,n=i[r++])||t&&!a(U,n)||o.push(D[n]);return o};$||(s((N=function(){if(this instanceof N)throw TypeError("Symbol is not a constructor!");var e=f(arguments.length>0?arguments[0]:void 0),n=function(t){this===U&&n.call(q,t),a(this,B)&&a(this[B],e)&&(this[B][e]=!1),G(this,e,S(1,t))};return o&&W&&G(U,e,{configurable:!0,set:n}),H(e)}).prototype,"toString",(function(){return this._k})),O.f=Z,P.f=J,t(54).f=_.f=Q,t(68).f=X,E.f=ee,o&&!t(46)&&s(U,"propertyIsEnumerable",X,!0),m.f=function(e){return H(d(e))}),r(r.G+r.W+r.F*!$,{Symbol:N});for(var ne="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),te=0;ne.length>te;)d(ne[te++]);for(var ie=C(d.store),ae=0;ie.length>ae;)h(ie[ae++]);r(r.S+r.F*!$,"Symbol",{for:function(e){return a(z,e+="")?z[e]:z[e]=N(e)},keyFor:function(e){if(!K(e))throw TypeError(e+" is not a symbol!");for(var n in z)if(z[n]===e)return n},useSetter:function(){W=!0},useSimple:function(){W=!1}}),r(r.S+r.F*!$,"Object",{create:function(e,n){return void 0===n?j(e):Y(j(e),n)},defineProperty:J,defineProperties:Y,getOwnPropertyDescriptor:Z,getOwnPropertyNames:Q,getOwnPropertySymbols:ee});var oe=u((function(){E.f(1)}));r(r.S+r.F*oe,"Object",{getOwnPropertySymbols:function(e){return E.f(y(e))}}),T&&r(r.S+r.F*(!$||u((function(){var e=N();return"[null]"!=R([e])||"{}"!=R({a:e})||"{}"!=R(Object(e))}))),"JSON",{stringify:function(e){for(var n,t,i=[e],a=1;arguments.length>a;)i.push(arguments[a++]);if(t=n=i[1],(g(n)||void 0!==e)&&!K(e))return x(n)||(n=function(e,n){if("function"==typeof t&&(n=t.call(this,e,n)),!K(n))return n}),i[1]=n,R.apply(T,i)}}),N.prototype[I]||t(16)(N.prototype,I,N.prototype.valueOf),l(N,"Symbol"),l(Math,"Math",!0),l(i.JSON,"JSON",!0)},function(e,n,t){var i=t(0);i(i.S+i.F*!t(7),"Object",{defineProperties:t(135)})},function(e,n,t){var i=t(20),a=t(21).f;t(39)("getOwnPropertyDescriptor",(function(){return function(e,n){return a(i(e),n)}}))},function(e,n,t){"use strict";var i,a,o,r,s=t(46),c=t(2),u=t(26),p=t(61),l=t(0),f=t(4),d=t(12),m=t(56),h=t(57),v=t(71),x=t(116).set,b=t(117)(),g=t(118),y=t(158),k=t(82),w=t(159),S=c.TypeError,j=c.process,_=j&&j.versions,O=_&&_.v8||"",E=c.Promise,P="process"==p(j),C=function(){},A=a=g.f,M=!!function(){try{var e=E.resolve(1),n=(e.constructor={})[t(5)("species")]=function(e){e(C,C)};return(P||"function"==typeof PromiseRejectionEvent)&&e.then(C)instanceof n&&0!==O.indexOf("6.6")&&-1===k.indexOf("Chrome/66")}catch(e){}}(),F=function(e){var n;return!(!f(e)||"function"!=typeof(n=e.then))&&n},N=function(e,n){if(!e._n){e._n=!0;var t=e._c;b((function(){for(var i=e._v,a=1==e._s,o=0,r=function(n){var t,o,r,s=a?n.ok:n.fail,c=n.resolve,u=n.reject,p=n.domain;try{s?(a||(2==e._h&&B(e),e._h=1),!0===s?t=i:(p&&p.enter(),t=s(i),p&&(p.exit(),r=!0)),t===n.promise?u(S("Promise-chain cycle")):(o=F(t))?o.call(t,c,u):c(t)):u(i)}catch(e){p&&!r&&p.exit(),u(e)}};t.length>o;)r(t[o++]);e._c=[],e._n=!1,n&&!e._h&&T(e)}))}},T=function(e){x.call(c,(function(){var n,t,i,a=e._v,o=R(e);if(o&&(n=y((function(){P?j.emit("unhandledRejection",a,e):(t=c.onunhandledrejection)?t({promise:e,reason:a}):(i=c.console)&&i.error&&i.error("Unhandled promise rejection",a)})),e._h=P||R(e)?2:1),e._a=void 0,o&&n.e)throw n.v}))},R=function(e){return 1!==e._h&&0===(e._a||e._c).length},B=function(e){x.call(c,(function(){var n;P?j.emit("rejectionHandled",e):(n=c.onrejectionhandled)&&n({promise:e,reason:e._v})}))},I=function(e){var n=this;n._d||(n._d=!0,(n=n._w||n)._v=e,n._s=2,n._a||(n._a=n._c.slice()),N(n,!0))},L=function(e){var n,t=this;if(!t._d){t._d=!0,t=t._w||t;try{if(t===e)throw S("Promise can't be resolved itself");(n=F(e))?b((function(){var i={_w:t,_d:!1};try{n.call(e,u(L,i,1),u(I,i,1))}catch(e){I.call(i,e)}})):(t._v=e,t._s=1,N(t,!1))}catch(e){I.call({_w:t,_d:!1},e)}}};M||(E=function(e){m(this,E,"Promise","_h"),d(e),i.call(this);try{e(u(L,this,1),u(I,this,1))}catch(e){I.call(this,e)}},(i=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=t(58)(E.prototype,{then:function(e,n){var t=A(v(this,E));return t.ok="function"!=typeof e||e,t.fail="function"==typeof n&&n,t.domain=P?j.domain:void 0,this._c.push(t),this._a&&this._a.push(t),this._s&&N(this,!1),t.promise},catch:function(e){return this.then(void 0,e)}}),o=function(){var e=new i;this.promise=e,this.resolve=u(L,e,1),this.reject=u(I,e,1)},g.f=A=function(e){return e===E||e===r?new o(e):a(e)}),l(l.G+l.W+l.F*!M,{Promise:E}),t(60)(E,"Promise"),t(55)("Promise"),r=t(25).Promise,l(l.S+l.F*!M,"Promise",{reject:function(e){var n=A(this);return(0,n.reject)(e),n.promise}}),l(l.S+l.F*(s||!M),"Promise",{resolve:function(e){return w(s&&this===r?E:this,e)}}),l(l.S+l.F*!(M&&t(79)((function(e){E.all(e).catch(C)}))),"Promise",{all:function(e){var n=this,t=A(n),i=t.resolve,a=t.reject,o=y((function(){var t=[],o=0,r=1;h(e,!1,(function(e){var s=o++,c=!1;t.push(void 0),r++,n.resolve(e).then((function(e){c||(c=!0,t[s]=e,--r||i(t))}),a)})),--r||i(t)}));return o.e&&a(o.v),t.promise},race:function(e){var n=this,t=A(n),i=t.reject,a=y((function(){h(e,!1,(function(e){n.resolve(e).then(t.resolve,i)}))}));return a.e&&i(a.v),t.promise}})},function(e,n,t){var i=t(0),a=t(166),o=t(20),r=t(21),s=t(110);i(i.S,"Object",{getOwnPropertyDescriptors:function(e){for(var n,t,i=o(e),c=r.f,u=a(i),p={},l=0;u.length>l;)void 0!==(t=c(i,n=u[l++]))&&s(p,n,t);return p}})},function(e,n,t){var i=t(4);e.exports=function(e,n){if(!i(e))return e;var t,a;if(n&&"function"==typeof(t=e.toString)&&!i(a=t.call(e)))return a;if("function"==typeof(t=e.valueOf)&&!i(a=t.call(e)))return a;if(!n&&"function"==typeof(t=e.toString)&&!i(a=t.call(e)))return a;throw TypeError("Can't convert object to primitive value")}},function(e,n,t){var i=t(26),a=t(66),o=t(10),r=t(6),s=t(92);e.exports=function(e,n){var t=1==e,c=2==e,u=3==e,p=4==e,l=6==e,f=5==e||l,d=n||s;return function(n,s,m){for(var h,v,x=o(n),b=a(x),g=i(s,m,3),y=r(b.length),k=0,w=t?d(n,y):c?d(n,0):void 0;y>k;k++)if((f||k in b)&&(v=g(h=b[k],k,x),e))if(t)w[k]=v;else if(v)switch(e){case 3:return!0;case 5:return h;case 6:return k;case 2:w.push(h)}else if(p)return!1;return l?-1:u||p?p:w}}},function(e,n){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,n,t){var i=t(0),a=t(25),o=t(3);e.exports=function(e,n){var t=(a.Object||{})[e]||Object[e],r={};r[e]=n(t),i(i.S+i.F*o((function(){t(1)})),"Object",r)}},function(e,n,t){"use strict";t(8),Object.defineProperty(n,"__esModule",{value:!0}),n.baseUrl=n.ERROR_NO_CREDENTIALS_PROVIDED=void 0;n.baseUrl="https://api.pinata.cloud";n.ERROR_NO_CREDENTIALS_PROVIDED="No credentials provided! Please provide your pinata api key and pinata secret api key or your pinata JWT key as an argument when you start this script"},function(e,n,t){"use strict";if(t(7)){var i=t(46),a=t(2),o=t(3),r=t(0),s=t(84),c=t(119),u=t(26),p=t(56),l=t(49),f=t(16),d=t(58),m=t(28),h=t(6),v=t(165),x=t(52),b=t(36),g=t(19),y=t(61),k=t(4),w=t(10),S=t(109),j=t(53),_=t(22),O=t(54).f,E=t(111),P=t(50),C=t(5),A=t(37),M=t(75),F=t(71),N=t(113),T=t(63),R=t(79),B=t(55),I=t(112),L=t(153),z=t(9),D=t(21),q=z.f,U=D.f,$=a.RangeError,V=a.TypeError,W=a.Uint8Array,G=Array.prototype,H=c.ArrayBuffer,K=c.DataView,J=A(0),Y=A(2),X=A(3),Z=A(4),Q=A(5),ee=A(6),ne=M(!0),te=M(!1),ie=N.values,ae=N.keys,oe=N.entries,re=G.lastIndexOf,se=G.reduce,ce=G.reduceRight,ue=G.join,pe=G.sort,le=G.slice,fe=G.toString,de=G.toLocaleString,me=C("iterator"),he=C("toStringTag"),ve=P("typed_constructor"),xe=P("def_constructor"),be=s.CONSTR,ge=s.TYPED,ye=s.VIEW,ke=A(1,(function(e,n){return Oe(F(e,e[xe]),n)})),we=o((function(){return 1===new W(new Uint16Array([1]).buffer)[0]})),Se=!!W&&!!W.prototype.set&&o((function(){new W(1).set({})})),je=function(e,n){var t=m(e);if(t<0||t%n)throw $("Wrong offset!");return t},_e=function(e){if(k(e)&&ge in e)return e;throw V(e+" is not a typed array!")},Oe=function(e,n){if(!(k(e)&&ve in e))throw V("It is not a typed array constructor!");return new e(n)},Ee=function(e,n){return Pe(F(e,e[xe]),n)},Pe=function(e,n){for(var t=0,i=n.length,a=Oe(e,i);i>t;)a[t]=n[t++];return a},Ce=function(e,n,t){q(e,n,{get:function(){return this._d[t]}})},Ae=function(e){var n,t,i,a,o,r,s=w(e),c=arguments.length,p=c>1?arguments[1]:void 0,l=void 0!==p,f=E(s);if(null!=f&&!S(f)){for(r=f.call(s),i=[],n=0;!(o=r.next()).done;n++)i.push(o.value);s=i}for(l&&c>2&&(p=u(p,arguments[2],2)),n=0,t=h(s.length),a=Oe(this,t);t>n;n++)a[n]=l?p(s[n],n):s[n];return a},Me=function(){for(var e=0,n=arguments.length,t=Oe(this,n);n>e;)t[e]=arguments[e++];return t},Fe=!!W&&o((function(){de.call(new W(1))})),Ne=function(){return de.apply(Fe?le.call(_e(this)):_e(this),arguments)},Te={copyWithin:function(e,n){return L.call(_e(this),e,n,arguments.length>2?arguments[2]:void 0)},every:function(e){return Z(_e(this),e,arguments.length>1?arguments[1]:void 0)},fill:function(e){return I.apply(_e(this),arguments)},filter:function(e){return Ee(this,Y(_e(this),e,arguments.length>1?arguments[1]:void 0))},find:function(e){return Q(_e(this),e,arguments.length>1?arguments[1]:void 0)},findIndex:function(e){return ee(_e(this),e,arguments.length>1?arguments[1]:void 0)},forEach:function(e){J(_e(this),e,arguments.length>1?arguments[1]:void 0)},indexOf:function(e){return te(_e(this),e,arguments.length>1?arguments[1]:void 0)},includes:function(e){return ne(_e(this),e,arguments.length>1?arguments[1]:void 0)},join:function(e){return ue.apply(_e(this),arguments)},lastIndexOf:function(e){return re.apply(_e(this),arguments)},map:function(e){return ke(_e(this),e,arguments.length>1?arguments[1]:void 0)},reduce:function(e){return se.apply(_e(this),arguments)},reduceRight:function(e){return ce.apply(_e(this),arguments)},reverse:function(){for(var e,n=_e(this).length,t=Math.floor(n/2),i=0;i<t;)e=this[i],this[i++]=this[--n],this[n]=e;return this},some:function(e){return X(_e(this),e,arguments.length>1?arguments[1]:void 0)},sort:function(e){return pe.call(_e(this),e)},subarray:function(e,n){var t=_e(this),i=t.length,a=x(e,i);return new(F(t,t[xe]))(t.buffer,t.byteOffset+a*t.BYTES_PER_ELEMENT,h((void 0===n?i:x(n,i))-a))}},Re=function(e,n){return Ee(this,le.call(_e(this),e,n))},Be=function(e){_e(this);var n=je(arguments[1],1),t=this.length,i=w(e),a=h(i.length),o=0;if(a+n>t)throw $("Wrong length!");for(;o<a;)this[n+o]=i[o++]},Ie={entries:function(){return oe.call(_e(this))},keys:function(){return ae.call(_e(this))},values:function(){return ie.call(_e(this))}},Le=function(e,n){return k(e)&&e[ge]&&"symbol"!=typeof n&&n in e&&String(+n)==String(n)},ze=function(e,n){return Le(e,n=b(n,!0))?l(2,e[n]):U(e,n)},De=function(e,n,t){return!(Le(e,n=b(n,!0))&&k(t)&&g(t,"value"))||g(t,"get")||g(t,"set")||t.configurable||g(t,"writable")&&!t.writable||g(t,"enumerable")&&!t.enumerable?q(e,n,t):(e[n]=t.value,e)};be||(D.f=ze,z.f=De),r(r.S+r.F*!be,"Object",{getOwnPropertyDescriptor:ze,defineProperty:De}),o((function(){fe.call({})}))&&(fe=de=function(){return ue.call(this)});var qe=d({},Te);d(qe,Ie),f(qe,me,Ie.values),d(qe,{slice:Re,set:Be,constructor:function(){},toString:fe,toLocaleString:Ne}),Ce(qe,"buffer","b"),Ce(qe,"byteOffset","o"),Ce(qe,"byteLength","l"),Ce(qe,"length","e"),q(qe,he,{get:function(){return this[ge]}}),e.exports=function(e,n,t,c){var u=e+((c=!!c)?"Clamped":"")+"Array",l="get"+e,d="set"+e,m=a[u],x=m||{},b=m&&_(m),g=!m||!s.ABV,w={},S=m&&m.prototype,E=function(e,t){q(e,t,{get:function(){return function(e,t){var i=e._d;return i.v[l](t*n+i.o,we)}(this,t)},set:function(e){return function(e,t,i){var a=e._d;c&&(i=(i=Math.round(i))<0?0:i>255?255:255&i),a.v[d](t*n+a.o,i,we)}(this,t,e)},enumerable:!0})};g?(m=t((function(e,t,i,a){p(e,m,u,"_d");var o,r,s,c,l=0,d=0;if(k(t)){if(!(t instanceof H||"ArrayBuffer"==(c=y(t))||"SharedArrayBuffer"==c))return ge in t?Pe(m,t):Ae.call(m,t);o=t,d=je(i,n);var x=t.byteLength;if(void 0===a){if(x%n)throw $("Wrong length!");if((r=x-d)<0)throw $("Wrong length!")}else if((r=h(a)*n)+d>x)throw $("Wrong length!");s=r/n}else s=v(t),o=new H(r=s*n);for(f(e,"_d",{b:o,o:d,l:r,e:s,v:new K(o)});l<s;)E(e,l++)})),S=m.prototype=j(qe),f(S,"constructor",m)):o((function(){m(1)}))&&o((function(){new m(-1)}))&&R((function(e){new m,new m(null),new m(1.5),new m(e)}),!0)||(m=t((function(e,t,i,a){var o;return p(e,m,u),k(t)?t instanceof H||"ArrayBuffer"==(o=y(t))||"SharedArrayBuffer"==o?void 0!==a?new x(t,je(i,n),a):void 0!==i?new x(t,je(i,n)):new x(t):ge in t?Pe(m,t):Ae.call(m,t):new x(v(t))})),J(b!==Function.prototype?O(x).concat(O(b)):O(x),(function(e){e in m||f(m,e,x[e])})),m.prototype=S,i||(S.constructor=m));var P=S[me],C=!!P&&("values"==P.name||null==P.name),A=Ie.values;f(m,ve,!0),f(S,ge,u),f(S,ye,!0),f(S,xe,m),(c?new m(1)[he]==u:he in S)||q(S,he,{get:function(){return u}}),w[u]=m,r(r.G+r.W+r.F*(m!=x),w),r(r.S,u,{BYTES_PER_ELEMENT:n}),r(r.S+r.F*o((function(){x.of.call(m,1)})),u,{from:Ae,of:Me}),"BYTES_PER_ELEMENT"in S||f(S,"BYTES_PER_ELEMENT",n),r(r.P,u,Te),B(u),r(r.P+r.F*Se,u,{set:Be}),r(r.P+r.F*!C,u,Ie),i||S.toString==fe||(S.toString=fe),r(r.P+r.F*o((function(){new m(1).slice()})),u,{slice:Re}),r(r.P+r.F*(o((function(){return[1,2].toLocaleString()!=new m([1,2]).toLocaleString()}))||!o((function(){S.toLocaleString.call([1,2])}))),u,{toLocaleString:Ne}),T[u]=C?P:A,i||C||f(S,me,A)}}else e.exports=function(){}},function(e,n,t){var i=t(160),a=t(0),o=t(65)("metadata"),r=o.store||(o.store=new(t(163))),s=function(e,n,t){var a=r.get(e);if(!a){if(!t)return;r.set(e,a=new i)}var o=a.get(n);if(!o){if(!t)return;a.set(n,o=new i)}return o};e.exports={store:r,map:s,has:function(e,n,t){var i=s(n,t,!1);return void 0!==i&&i.has(e)},get:function(e,n,t){var i=s(n,t,!1);return void 0===i?void 0:i.get(e)},set:function(e,n,t,i){s(t,i,!0).set(e,n)},keys:function(e,n){var t=s(e,n,!1),i=[];return t&&t.forEach((function(e,n){i.push(n)})),i},key:function(e){return void 0===e||"symbol"==typeof e?e:String(e)},exp:function(e){a(a.S,"Reflect",e)}}},function(e,n,t){e.exports=t(396)},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.createConfigForAxiosHeaders=p,n.createConfigForAxiosHeadersWithFormData=function(e,n){var t=u(u({},p(e)),{},{maxContentLength:1/0,maxBodyLength:1/0});return t.headers["Content-type"]="multipart/form-data; boundary=".concat(n),t},n.validateApiKeys=function(e,n){if(!e||""===e)throw new Error("No pinataApiKey provided! Please provide your pinata api key as an argument when you start this script");if(!n||""===n)throw new Error("No pinataSecretApiKey provided! Please provide your pinata secret api key as an argument when you start this script")},n.validateHostNodes=l,n.validateMetadata=function(e){if(e.name&&!("string"==typeof e.name||e.name instanceof String))throw new Error("metadata name must be of type string");if(e.keyvalues){if("object"!==(0,a.default)(e.keyvalues))throw new Error("metatadata keyvalues must be an object");var n=0;Object.entries(e.keyvalues).forEach((function(e){if(n>9)throw new Error("No more than 10 keyvalues can be provided for metadata entries");if("string"!=typeof e[1]&&"boolean"!=typeof e[1]&&isNaN(e[1]))throw new Error("Metadata keyvalue values must be strings, booleans, or numbers");n++}))}},n.validatePinPolicyStructure=f,n.validatePinataOptions=function(e){if("object"!==(0,a.default)(e))throw new Error("options must be an object");if(e.cidVersion&&0!=e.cidVersion&&1!=e.cidVersion)throw new Error("unsupported or invalid cidVersion");if(e.wrapWithDirectory&&!0!==e.wrapWithDirectory&&!1!==e.wrapWithDirectory)throw new Error("wrapWithDirectory must be a boolean value of true or false");e.hostNodes&&l(e.hostNodes);e.customPinPolicy&&f(e.customPinPolicy)},t(148),t(11),t(69),t(120),t(23),t(102),t(99),t(14),t(31),t(24),t(33),t(35),t(32),t(8);var a=i(t(67)),o=i(t(30)),r=i(t(72)),s=t(40);function c(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function u(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?c(Object(t),!0).forEach((function(n){(0,o.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function p(e){if(e.pinataApiKey&&e.pinataApiKey.length>0&&e.pinataSecretApiKey&&e.pinataSecretApiKey.length>0)return{withCredentials:!0,headers:{pinata_api_key:e.pinataApiKey,pinata_secret_api_key:e.pinataSecretApiKey}};if(e.pinataJWTKey&&e.pinataJWTKey.length>0)return{headers:{Authorization:"Bearer ".concat(e.pinataJWTKey)}};throw new Error(s.ERROR_NO_CREDENTIALS_PROVIDED)}function l(e){if(!Array.isArray(e))throw new Error("host_nodes value must be an array");e.forEach((function(e){if(!r.default.peerMultiaddr(e))throw new Error("host_node array entry: ".concat(e," is not a valid peer multiaddr"))}))}function f(e){if(!e)throw new Error("No pin policy provided");if(!e.regions)throw new Error("No regions provided in pin policy");e.regions.length&&e.regions.forEach((function(e){if(!e.id||"[object String]"!==Object.prototype.toString.call(e.id))throw new Error("region id must be a string");if(!e.desiredReplicationCount&&0!==e.desiredReplicationCount||!Number.isInteger(e.desiredReplicationCount))throw new Error("desiredReplicationCount must be an integer")}))}},function(e,n,t){"use strict";t(8),Object.defineProperty(n,"__esModule",{value:!0}),n.handleError=void 0;n.handleError=function(e){return e&&e.response&&e.response&&e.response.data&&e.response.data.error?e.response.data.error:e.data&&e.data.error?e.data.error:e.response&&e.response.error?e.response.error:e}},function(e,n){e.exports=!1},function(e,n,t){var i=t(50)("meta"),a=t(4),o=t(19),r=t(9).f,s=0,c=Object.isExtensible||function(){return!0},u=!t(3)((function(){return c(Object.preventExtensions({}))})),p=function(e){r(e,i,{value:{i:"O"+ ++s,w:{}}})},l=e.exports={KEY:i,NEED:!1,fastKey:function(e,n){if(!a(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!o(e,i)){if(!c(e))return"F";if(!n)return"E";p(e)}return e[i].i},getWeak:function(e,n){if(!o(e,i)){if(!c(e))return!0;if(!n)return!1;p(e)}return e[i].w},onFreeze:function(e){return u&&l.NEED&&c(e)&&!o(e,i)&&p(e),e}}},function(e,n,t){var i=t(5)("unscopables"),a=Array.prototype;null==a[i]&&t(16)(a,i,{}),e.exports=function(e){a[i][e]=!0}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n){var t=0,i=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+i).toString(36))}},function(e,n,t){var i=t(133),a=t(94);e.exports=Object.keys||function(e){return i(e,a)}},function(e,n,t){var i=t(28),a=Math.max,o=Math.min;e.exports=function(e,n){return(e=i(e))<0?a(e+n,0):o(e,n)}},function(e,n,t){var i=t(1),a=t(135),o=t(94),r=t(93)("IE_PROTO"),s=function(){},c=function(){var e,n=t(91)("iframe"),i=o.length;for(n.style.display="none",t(96).appendChild(n),n.src="javascript:",(e=n.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),c=e.F;i--;)delete c.prototype[o[i]];return c()};e.exports=Object.create||function(e,n){var t;return null!==e?(s.prototype=i(e),t=new s,s.prototype=null,t[r]=e):t=c(),void 0===n?t:a(t,n)}},function(e,n,t){var i=t(133),a=t(94).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(e){return i(e,a)}},function(e,n,t){"use strict";var i=t(2),a=t(9),o=t(7),r=t(5)("species");e.exports=function(e){var n=i[e];o&&n&&!n[r]&&a.f(n,r,{configurable:!0,get:function(){return this}})}},function(e,n){e.exports=function(e,n,t,i){if(!(e instanceof n)||void 0!==i&&i in e)throw TypeError(t+": incorrect invocation!");return e}},function(e,n,t){var i=t(26),a=t(149),o=t(109),r=t(1),s=t(6),c=t(111),u={},p={};(n=e.exports=function(e,n,t,l,f){var d,m,h,v,x=f?function(){return e}:c(e),b=i(t,l,n?2:1),g=0;if("function"!=typeof x)throw TypeError(e+" is not iterable!");if(o(x)){for(d=s(e.length);d>g;g++)if((v=n?b(r(m=e[g])[0],m[1]):b(e[g]))===u||v===p)return v}else for(h=x.call(e);!(m=h.next()).done;)if((v=a(h,b,m.value,n))===u||v===p)return v}).BREAK=u,n.RETURN=p},function(e,n,t){var i=t(17);e.exports=function(e,n,t){for(var a in n)i(e,a,n[a],t);return e}},function(e,n,t){var i=t(4);e.exports=function(e,n){if(!i(e)||e._t!==n)throw TypeError("Incompatible receiver, "+n+" required!");return e}},function(e,n,t){var i=t(9).f,a=t(19),o=t(5)("toStringTag");e.exports=function(e,n,t){e&&!a(e=t?e:e.prototype,o)&&i(e,o,{configurable:!0,value:n})}},function(e,n,t){var i=t(27),a=t(5)("toStringTag"),o="Arguments"==i(function(){return arguments}());e.exports=function(e){var n,t,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(t=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),a))?t:o?i(n):"Object"==(r=i(n))&&"function"==typeof n.callee?"Arguments":r}},function(e,n,t){var i=t(0),a=t(38),o=t(3),r=t(98),s="["+r+"]",c=RegExp("^"+s+s+"*"),u=RegExp(s+s+"*$"),p=function(e,n,t){var a={},s=o((function(){return!!r[e]()||"
"!="
"[e]()})),c=a[e]=s?n(l):r[e];t&&(a[t]=c),i(i.P+i.F*s,"String",a)},l=p.trim=function(e,n){return e=String(a(e)),1&n&&(e=e.replace(c,"")),2&n&&(e=e.replace(u,"")),e};e.exports=p},function(e,n){e.exports={}},function(e,n,t){e.exports={encode:t(425),decode:t(426),encodingLength:t(427)}},function(e,n,t){var i=t(25),a=t(2),o=a["__core-js_shared__"]||(a["__core-js_shared__"]={});(e.exports=function(e,n){return o[e]||(o[e]=void 0!==n?n:{})})("versions",[]).push({version:i.version,mode:t(46)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,n,t){var i=t(27);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e,n){function t(n){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n){n.f={}.propertyIsEnumerable},function(e,n,t){var i=t(9).f,a=Function.prototype,o=/^\s*function ([^ (]*)/;"name"in a||t(7)&&i(a,"name",{configurable:!0,get:function(){try{return(""+this).match(o)[1]}catch(e){return""}}})},function(e,n,t){"use strict";var i=t(1);e.exports=function(){var e=i(this),n="";return e.global&&(n+="g"),e.ignoreCase&&(n+="i"),e.multiline&&(n+="m"),e.unicode&&(n+="u"),e.sticky&&(n+="y"),n}},function(e,n,t){var i=t(1),a=t(12),o=t(5)("species");e.exports=function(e,n){var t,r=i(e).constructor;return void 0===r||null==(t=i(r)[o])?n:a(t)}},function(e,n,t){"use strict";const i=t(90),a=t(126),o=t(188),r=t(189),s=t(446),c=t(128),u=/^https?:\/\/[^/]+\/(ip(f|n)s)\/((\w+).*)/,p=/^\/(ip(f|n)s)\/((\w+).*)/,l=/^https?:\/\/([^/]+)\.(ip(?:f|n)s)\.[^/]+/;function f(e){try{return new c(e),!0}catch(e){return!1}}function d(e){if(!e)return!1;if(r.isMultiaddr(e))return!0;try{return new r(e),!0}catch(e){return!1}}function m(e,n,t=1,i=4){const a=x(e);if(!a)return!1;const o=a.match(n);if(!o)return!1;if("ipfs"!==o[t])return!1;let r=o[i];return r&&n===l&&(r=r.toLowerCase()),f(r)}function h(e,n,t=1,i){const a=x(e);if(!a)return!1;const o=a.match(n);if(!o)return!1;if("ipns"!==o[t])return!1;if(i&&n===l){let e=o[i];return e=e.toLowerCase(),f(e)}return!0}function v(e){return"string"==typeof e}function x(e){return Buffer.isBuffer(e)?i.encode(e):!!v(e)&&e}const b=e=>m(e,l,2,1),g=e=>h(e,l,2,1);e.exports={multihash:function(e){const n=x(e);try{const e=Buffer.from(i.decode(n));return a.decode(e),!0}catch(e){return!1}},multiaddr:d,peerMultiaddr:function(e){return d(e)&&s.IPFS.matches(e)},cid:f,base32cid:e=>"base32"===function(e){try{return o.isEncoded(e)}catch(e){return!1}}(e)&&f(e),ipfsSubdomain:b,ipnsSubdomain:g,subdomain:e=>b(e)||g(e),subdomainPattern:l,ipfsUrl:e=>m(e,u),ipnsUrl:e=>h(e,u),url:e=>m(e,u)||h(e,u),urlPattern:u,ipfsPath:e=>m(e,p),ipnsPath:e=>h(e,p),path:e=>m(e,p)||h(e,p),pathPattern:p,urlOrPath:e=>m(e,u)||h(e,u)||m(e,p)||h(e,p),cidPath:e=>v(e)&&!f(e)&&m(`/ipfs/${e}`,p)}},function(e){e.exports=JSON.parse('{"identity":0,"ip4":4,"tcp":6,"sha1":17,"sha2-256":18,"sha2-512":19,"sha3-512":20,"sha3-384":21,"sha3-256":22,"sha3-224":23,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,"dccp":33,"murmur3-128":34,"murmur3-32":35,"ip6":41,"ip6zone":42,"path":47,"multicodec":48,"multihash":49,"multiaddr":50,"multibase":51,"dns":53,"dns4":54,"dns6":55,"dnsaddr":56,"protobuf":80,"cbor":81,"raw":85,"dbl-sha2-256":86,"rlp":96,"bencode":99,"dag-pb":112,"dag-cbor":113,"libp2p-key":114,"git-raw":120,"torrent-info":123,"torrent-file":124,"leofcoin-block":129,"leofcoin-tx":130,"leofcoin-pr":131,"sctp":132,"eth-block":144,"eth-block-list":145,"eth-tx-trie":146,"eth-tx":147,"eth-tx-receipt-trie":148,"eth-tx-receipt":149,"eth-state-trie":150,"eth-account-snapshot":151,"eth-storage-trie":152,"bitcoin-block":176,"bitcoin-tx":177,"zcash-block":192,"zcash-tx":193,"stellar-block":208,"stellar-tx":209,"md4":212,"md5":213,"bmt":214,"decred-block":224,"decred-tx":225,"ipld-ns":226,"ipfs-ns":227,"swarm-ns":228,"ipns-ns":229,"zeronet":230,"ed25519-pub":237,"dash-block":240,"dash-tx":241,"swarm-manifest":250,"swarm-feed":251,"udp":273,"p2p-webrtc-star":275,"p2p-webrtc-direct":276,"p2p-stardust":277,"p2p-circuit":290,"dag-json":297,"udt":301,"utp":302,"unix":400,"p2p":421,"ipfs":421,"https":443,"onion":444,"onion3":445,"garlic64":446,"garlic32":447,"tls":448,"quic":460,"ws":477,"wss":478,"p2p-websocket-star":479,"http":480,"json":512,"messagepack":513,"x11":4352,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"skein256-8":45825,"skein256-16":45826,"skein256-24":45827,"skein256-32":45828,"skein256-40":45829,"skein256-48":45830,"skein256-56":45831,"skein256-64":45832,"skein256-72":45833,"skein256-80":45834,"skein256-88":45835,"skein256-96":45836,"skein256-104":45837,"skein256-112":45838,"skein256-120":45839,"skein256-128":45840,"skein256-136":45841,"skein256-144":45842,"skein256-152":45843,"skein256-160":45844,"skein256-168":45845,"skein256-176":45846,"skein256-184":45847,"skein256-192":45848,"skein256-200":45849,"skein256-208":45850,"skein256-216":45851,"skein256-224":45852,"skein256-232":45853,"skein256-240":45854,"skein256-248":45855,"skein256-256":45856,"skein512-8":45857,"skein512-16":45858,"skein512-24":45859,"skein512-32":45860,"skein512-40":45861,"skein512-48":45862,"skein512-56":45863,"skein512-64":45864,"skein512-72":45865,"skein512-80":45866,"skein512-88":45867,"skein512-96":45868,"skein512-104":45869,"skein512-112":45870,"skein512-120":45871,"skein512-128":45872,"skein512-136":45873,"skein512-144":45874,"skein512-152":45875,"skein512-160":45876,"skein512-168":45877,"skein512-176":45878,"skein512-184":45879,"skein512-192":45880,"skein512-200":45881,"skein512-208":45882,"skein512-216":45883,"skein512-224":45884,"skein512-232":45885,"skein512-240":45886,"skein512-248":45887,"skein512-256":45888,"skein512-264":45889,"skein512-272":45890,"skein512-280":45891,"skein512-288":45892,"skein512-296":45893,"skein512-304":45894,"skein512-312":45895,"skein512-320":45896,"skein512-328":45897,"skein512-336":45898,"skein512-344":45899,"skein512-352":45900,"skein512-360":45901,"skein512-368":45902,"skein512-376":45903,"skein512-384":45904,"skein512-392":45905,"skein512-400":45906,"skein512-408":45907,"skein512-416":45908,"skein512-424":45909,"skein512-432":45910,"skein512-440":45911,"skein512-448":45912,"skein512-456":45913,"skein512-464":45914,"skein512-472":45915,"skein512-480":45916,"skein512-488":45917,"skein512-496":45918,"skein512-504":45919,"skein512-512":45920,"skein1024-8":45921,"skein1024-16":45922,"skein1024-24":45923,"skein1024-32":45924,"skein1024-40":45925,"skein1024-48":45926,"skein1024-56":45927,"skein1024-64":45928,"skein1024-72":45929,"skein1024-80":45930,"skein1024-88":45931,"skein1024-96":45932,"skein1024-104":45933,"skein1024-112":45934,"skein1024-120":45935,"skein1024-128":45936,"skein1024-136":45937,"skein1024-144":45938,"skein1024-152":45939,"skein1024-160":45940,"skein1024-168":45941,"skein1024-176":45942,"skein1024-184":45943,"skein1024-192":45944,"skein1024-200":45945,"skein1024-208":45946,"skein1024-216":45947,"skein1024-224":45948,"skein1024-232":45949,"skein1024-240":45950,"skein1024-248":45951,"skein1024-256":45952,"skein1024-264":45953,"skein1024-272":45954,"skein1024-280":45955,"skein1024-288":45956,"skein1024-296":45957,"skein1024-304":45958,"skein1024-312":45959,"skein1024-320":45960,"skein1024-328":45961,"skein1024-336":45962,"skein1024-344":45963,"skein1024-352":45964,"skein1024-360":45965,"skein1024-368":45966,"skein1024-376":45967,"skein1024-384":45968,"skein1024-392":45969,"skein1024-400":45970,"skein1024-408":45971,"skein1024-416":45972,"skein1024-424":45973,"skein1024-432":45974,"skein1024-440":45975,"skein1024-448":45976,"skein1024-456":45977,"skein1024-464":45978,"skein1024-472":45979,"skein1024-480":45980,"skein1024-488":45981,"skein1024-496":45982,"skein1024-504":45983,"skein1024-512":45984,"skein1024-520":45985,"skein1024-528":45986,"skein1024-536":45987,"skein1024-544":45988,"skein1024-552":45989,"skein1024-560":45990,"skein1024-568":45991,"skein1024-576":45992,"skein1024-584":45993,"skein1024-592":45994,"skein1024-600":45995,"skein1024-608":45996,"skein1024-616":45997,"skein1024-624":45998,"skein1024-632":45999,"skein1024-640":46000,"skein1024-648":46001,"skein1024-656":46002,"skein1024-664":46003,"skein1024-672":46004,"skein1024-680":46005,"skein1024-688":46006,"skein1024-696":46007,"skein1024-704":46008,"skein1024-712":46009,"skein1024-720":46010,"skein1024-728":46011,"skein1024-736":46012,"skein1024-744":46013,"skein1024-752":46014,"skein1024-760":46015,"skein1024-768":46016,"skein1024-776":46017,"skein1024-784":46018,"skein1024-792":46019,"skein1024-800":46020,"skein1024-808":46021,"skein1024-816":46022,"skein1024-824":46023,"skein1024-832":46024,"skein1024-840":46025,"skein1024-848":46026,"skein1024-856":46027,"skein1024-864":46028,"skein1024-872":46029,"skein1024-880":46030,"skein1024-888":46031,"skein1024-896":46032,"skein1024-904":46033,"skein1024-912":46034,"skein1024-920":46035,"skein1024-928":46036,"skein1024-936":46037,"skein1024-944":46038,"skein1024-952":46039,"skein1024-960":46040,"skein1024-968":46041,"skein1024-976":46042,"skein1024-984":46043,"skein1024-992":46044,"skein1024-1000":46045,"skein1024-1008":46046,"skein1024-1016":46047,"skein1024-1024":46048,"holochain-adr-v0":8417572,"holochain-adr-v1":8483108,"holochain-key-v0":9728292,"holochain-key-v1":9793828,"holochain-sig-v0":10645796,"holochain-sig-v1":10711332}')},function(e,n,t){var i=t(27);e.exports=Array.isArray||function(e){return"Array"==i(e)}},function(e,n,t){var i=t(20),a=t(6),o=t(52);e.exports=function(e){return function(n,t,r){var s,c=i(n),u=a(c.length),p=o(r,u);if(e&&t!=t){for(;u>p;)if((s=c[p++])!=s)return!0}else for(;u>p;p++)if((e||p in c)&&c[p]===t)return e||p||0;return!e&&-1}}},function(e,n){n.f=Object.getOwnPropertySymbols},function(e,n,t){var i=t(28),a=t(38);e.exports=function(e){return function(n,t){var o,r,s=String(a(n)),c=i(t),u=s.length;return c<0||c>=u?e?"":void 0:(o=s.charCodeAt(c))<55296||o>56319||c+1===u||(r=s.charCodeAt(c+1))<56320||r>57343?e?s.charAt(c):o:e?s.slice(c,c+2):r-56320+(o-55296<<10)+65536}}},function(e,n,t){var i=t(4),a=t(27),o=t(5)("match");e.exports=function(e){var n;return i(e)&&(void 0!==(n=e[o])?!!n:"RegExp"==a(e))}},function(e,n,t){var i=t(5)("iterator"),a=!1;try{var o=[7][i]();o.return=function(){a=!0},Array.from(o,(function(){throw 2}))}catch(e){}e.exports=function(e,n){if(!n&&!a)return!1;var t=!1;try{var o=[7],r=o[i]();r.next=function(){return{done:t=!0}},o[i]=function(){return r},e(o)}catch(e){}return t}},function(e,n,t){"use strict";var i=t(61),a=RegExp.prototype.exec;e.exports=function(e,n){var t=e.exec;if("function"==typeof t){var o=t.call(e,n);if("object"!=typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==i(e))throw new TypeError("RegExp#exec called on incompatible receiver");return a.call(e,n)}},function(e,n,t){"use strict";t(155);var i=t(17),a=t(16),o=t(3),r=t(38),s=t(5),c=t(114),u=s("species"),p=!o((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),l=function(){var e=/(?:)/,n=e.exec;e.exec=function(){return n.apply(this,arguments)};var t="ab".split(e);return 2===t.length&&"a"===t[0]&&"b"===t[1]}();e.exports=function(e,n,t){var f=s(e),d=!o((function(){var n={};return n[f]=function(){return 7},7!=""[e](n)})),m=d?!o((function(){var n=!1,t=/a/;return t.exec=function(){return n=!0,null},"split"===e&&(t.constructor={},t.constructor[u]=function(){return t}),t[f](""),!n})):void 0;if(!d||!m||"replace"===e&&!p||"split"===e&&!l){var h=/./[f],v=t(r,f,""[e],(function(e,n,t,i,a){return n.exec===c?d&&!a?{done:!0,value:h.call(n,t,i)}:{done:!0,value:e.call(t,n,i)}:{done:!1}})),x=v[0],b=v[1];i(String.prototype,e,x),a(RegExp.prototype,f,2==n?function(e,n){return b.call(e,this,n)}:function(e){return b.call(e,this)})}}},function(e,n,t){var i=t(2).navigator;e.exports=i&&i.userAgent||""},function(e,n,t){"use strict";var i=t(2),a=t(0),o=t(17),r=t(58),s=t(47),c=t(57),u=t(56),p=t(4),l=t(3),f=t(79),d=t(60),m=t(100);e.exports=function(e,n,t,h,v,x){var b=i[e],g=b,y=v?"set":"add",k=g&&g.prototype,w={},S=function(e){var n=k[e];o(k,e,"delete"==e||"has"==e?function(e){return!(x&&!p(e))&&n.call(this,0===e?0:e)}:"get"==e?function(e){return x&&!p(e)?void 0:n.call(this,0===e?0:e)}:"add"==e?function(e){return n.call(this,0===e?0:e),this}:function(e,t){return n.call(this,0===e?0:e,t),this})};if("function"==typeof g&&(x||k.forEach&&!l((function(){(new g).entries().next()})))){var j=new g,_=j[y](x?{}:-0,1)!=j,O=l((function(){j.has(1)})),E=f((function(e){new g(e)})),P=!x&&l((function(){for(var e=new g,n=5;n--;)e[y](n,n);return!e.has(-0)}));E||((g=n((function(n,t){u(n,g,e);var i=m(new b,n,g);return null!=t&&c(t,v,i[y],i),i}))).prototype=k,k.constructor=g),(O||P)&&(S("delete"),S("has"),v&&S("get")),(P||_)&&S(y),x&&k.clear&&delete k.clear}else g=h.getConstructor(n,e,v,y),r(g.prototype,t),s.NEED=!0;return d(g,e),w[e]=g,a(a.G+a.W+a.F*(g!=b),w),x||h.setStrong(g,e,v),g}},function(e,n,t){for(var i,a=t(2),o=t(16),r=t(50),s=r("typed_array"),c=r("view"),u=!(!a.ArrayBuffer||!a.DataView),p=u,l=0,f="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(i=a[f[l++]])?(o(i.prototype,s,!0),o(i.prototype,c,!0)):p=!1;e.exports={ABV:u,CONSTR:p,TYPED:s,VIEW:c}},function(e,n,t){"use strict";e.exports=t(46)||!t(3)((function(){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete t(2)[e]}))},function(e,n,t){"use strict";var i=t(0);e.exports=function(e){i(i.S,e,{of:function(){for(var e=arguments.length,n=new Array(e);e--;)n[e]=arguments[e];return new this(n)}})}},function(e,n,t){"use strict";var i=t(0),a=t(12),o=t(26),r=t(57);e.exports=function(e){i(i.S,e,{from:function(e){var n,t,i,s,c=arguments[1];return a(this),(n=void 0!==c)&&a(c),null==e?new this:(t=[],n?(i=0,s=o(c,arguments[2],2),r(e,!1,(function(e){t.push(s(e,i++))}))):r(e,!1,t.push,t),new this(t))}})}},function(e,n){e.exports=require("stream")},function(e,n){e.exports=require("util")},function(e,n,t){var i=t(186);e.exports=i("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")},function(e,n,t){var i=t(4),a=t(2).document,o=i(a)&&i(a.createElement);e.exports=function(e){return o?a.createElement(e):{}}},function(e,n,t){var i=t(212);e.exports=function(e,n){return new(i(e))(n)}},function(e,n,t){var i=t(65)("keys"),a=t(50);e.exports=function(e){return i[e]||(i[e]=a(e))}},function(e,n){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,n,t){var i=t(2),a=t(25),o=t(46),r=t(134),s=t(9).f;e.exports=function(e){var n=a.Symbol||(a.Symbol=o?{}:i.Symbol||{});"_"==e.charAt(0)||e in n||s(n,e,{value:r.f(e)})}},function(e,n,t){var i=t(2).document;e.exports=i&&i.documentElement},function(e,n,t){var i=t(4),a=t(1),o=function(e,n){if(a(e),!i(n)&&null!==n)throw TypeError(n+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,i){try{(i=t(26)(Function.call,t(21).f(Object.prototype,"__proto__").set,2))(e,[]),n=!(e instanceof Array)}catch(e){n=!0}return function(e,t){return o(e,t),n?e.__proto__=t:i(e,t),e}}({},!1):void 0),check:o}},function(e,n){e.exports="\t\n\v\f\r \u2028\u2029\ufeff"},function(e,n,t){"use strict";var i=t(2),a=t(19),o=t(27),r=t(100),s=t(36),c=t(3),u=t(54).f,p=t(21).f,l=t(9).f,f=t(62).trim,d=i.Number,m=d,h=d.prototype,v="Number"==o(t(53)(h)),x="trim"in String.prototype,b=function(e){var n=s(e,!1);if("string"==typeof n&&n.length>2){var t,i,a,o=(n=x?n.trim():f(n,3)).charCodeAt(0);if(43===o||45===o){if(88===(t=n.charCodeAt(2))||120===t)return NaN}else if(48===o){switch(n.charCodeAt(1)){case 66:case 98:i=2,a=49;break;case 79:case 111:i=8,a=55;break;default:return+n}for(var r,c=n.slice(2),u=0,p=c.length;u<p;u++)if((r=c.charCodeAt(u))<48||r>a)return NaN;return parseInt(c,i)}}return+n};if(!d(" 0o1")||!d("0b1")||d("+0x1")){d=function(e){var n=arguments.length<1?0:e,t=this;return t instanceof d&&(v?c((function(){h.valueOf.call(t)})):"Number"!=o(t))?r(new m(b(n)),t,d):b(n)};for(var g,y=t(7)?u(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),k=0;y.length>k;k++)a(m,g=y[k])&&!a(d,g)&&l(d,g,p(m,g));d.prototype=h,h.constructor=d,t(17)(i,"Number",d)}},function(e,n,t){var i=t(4),a=t(97).set;e.exports=function(e,n,t){var o,r=n.constructor;return r!==t&&"function"==typeof r&&(o=r.prototype)!==t.prototype&&i(o)&&a&&a(e,o),e}},function(e,n,t){"use strict";var i=t(28),a=t(38);e.exports=function(e){var n=String(a(this)),t="",o=i(e);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(n+=n))1&o&&(t+=n);return t}},function(e,n,t){var i=t(0);i(i.S,"Number",{isInteger:t(144)})},function(e,n){e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,n){var t=Math.expm1;e.exports=!t||t(10)>22025.465794806718||t(10)<22025.465794806718||-2e-17!=t(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:Math.exp(e)-1}:t},function(e,n,t){"use strict";var i=t(46),a=t(0),o=t(17),r=t(16),s=t(63),c=t(106),u=t(60),p=t(22),l=t(5)("iterator"),f=!([].keys&&"next"in[].keys()),d=function(){return this};e.exports=function(e,n,t,m,h,v,x){c(t,n,m);var b,g,y,k=function(e){if(!f&&e in _)return _[e];switch(e){case"keys":case"values":return function(){return new t(this,e)}}return function(){return new t(this,e)}},w=n+" Iterator",S="values"==h,j=!1,_=e.prototype,O=_[l]||_["@@iterator"]||h&&_[h],E=O||k(h),P=h?S?k("entries"):E:void 0,C="Array"==n&&_.entries||O;if(C&&(y=p(C.call(new e)))!==Object.prototype&&y.next&&(u(y,w,!0),i||"function"==typeof y[l]||r(y,l,d)),S&&O&&"values"!==O.name&&(j=!0,E=function(){return O.call(this)}),i&&!x||!f&&!j&&_[l]||r(_,l,E),s[n]=E,s[w]=d,h)if(b={values:S?E:k("values"),keys:v?E:k("keys"),entries:P},x)for(g in b)g in _||o(_,g,b[g]);else a(a.P+a.F*(f||j),n,b);return b}},function(e,n,t){"use strict";var i=t(53),a=t(49),o=t(60),r={};t(16)(r,t(5)("iterator"),(function(){return this})),e.exports=function(e,n,t){e.prototype=i(r,{next:a(1,t)}),o(e,n+" Iterator")}},function(e,n,t){var i=t(78),a=t(38);e.exports=function(e,n,t){if(i(n))throw TypeError("String#"+t+" doesn't accept regex!");return String(a(e))}},function(e,n,t){var i=t(5)("match");e.exports=function(e){var n=/./;try{"/./"[e](n)}catch(t){try{return n[i]=!1,!"/./"[e](n)}catch(e){}}return!0}},function(e,n,t){var i=t(63),a=t(5)("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||o[a]===e)}},function(e,n,t){"use strict";var i=t(9),a=t(49);e.exports=function(e,n,t){n in e?i.f(e,n,a(0,t)):e[n]=t}},function(e,n,t){var i=t(61),a=t(5)("iterator"),o=t(63);e.exports=t(25).getIteratorMethod=function(e){if(null!=e)return e[a]||e["@@iterator"]||o[i(e)]}},function(e,n,t){"use strict";var i=t(10),a=t(52),o=t(6);e.exports=function(e){for(var n=i(this),t=o(n.length),r=arguments.length,s=a(r>1?arguments[1]:void 0,t),c=r>2?arguments[2]:void 0,u=void 0===c?t:a(c,t);u>s;)n[s++]=e;return n}},function(e,n,t){"use strict";var i=t(48),a=t(154),o=t(63),r=t(20);e.exports=t(105)(Array,"Array",(function(e,n){this._t=r(e),this._i=0,this._k=n}),(function(){var e=this._t,n=this._k,t=this._i++;return!e||t>=e.length?(this._t=void 0,a(1)):a(0,"keys"==n?t:"values"==n?e[t]:[t,e[t]])}),"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},function(e,n,t){"use strict";var i,a,o=t(70),r=RegExp.prototype.exec,s=String.prototype.replace,c=r,u=(i=/a/,a=/b*/g,r.call(i,"a"),r.call(a,"a"),0!==i.lastIndex||0!==a.lastIndex),p=void 0!==/()??/.exec("")[1];(u||p)&&(c=function(e){var n,t,i,a,c=this;return p&&(t=new RegExp("^"+c.source+"$(?!\\s)",o.call(c))),u&&(n=c.lastIndex),i=r.call(c,e),u&&i&&(c.lastIndex=c.global?i.index+i[0].length:n),p&&i&&i.length>1&&s.call(i[0],t,(function(){for(a=1;a<arguments.length-2;a++)void 0===arguments[a]&&(i[a]=void 0)})),i}),e.exports=c},function(e,n,t){"use strict";var i=t(77)(!0);e.exports=function(e,n,t){return n+(t?i(e,n).length:1)}},function(e,n,t){var i,a,o,r=t(26),s=t(140),c=t(96),u=t(91),p=t(2),l=p.process,f=p.setImmediate,d=p.clearImmediate,m=p.MessageChannel,h=p.Dispatch,v=0,x={},b=function(){var e=+this;if(x.hasOwnProperty(e)){var n=x[e];delete x[e],n()}},g=function(e){b.call(e.data)};f&&d||(f=function(e){for(var n=[],t=1;arguments.length>t;)n.push(arguments[t++]);return x[++v]=function(){s("function"==typeof e?e:Function(e),n)},i(v),v},d=function(e){delete x[e]},"process"==t(27)(l)?i=function(e){l.nextTick(r(b,e,1))}:h&&h.now?i=function(e){h.now(r(b,e,1))}:m?(o=(a=new m).port2,a.port1.onmessage=g,i=r(o.postMessage,o,1)):p.addEventListener&&"function"==typeof postMessage&&!p.importScripts?(i=function(e){p.postMessage(e+"","*")},p.addEventListener("message",g,!1)):i="onreadystatechange"in u("script")?function(e){c.appendChild(u("script")).onreadystatechange=function(){c.removeChild(this),b.call(e)}}:function(e){setTimeout(r(b,e,1),0)}),e.exports={set:f,clear:d}},function(e,n,t){var i=t(2),a=t(116).set,o=i.MutationObserver||i.WebKitMutationObserver,r=i.process,s=i.Promise,c="process"==t(27)(r);e.exports=function(){var e,n,t,u=function(){var i,a;for(c&&(i=r.domain)&&i.exit();e;){a=e.fn,e=e.next;try{a()}catch(i){throw e?t():n=void 0,i}}n=void 0,i&&i.enter()};if(c)t=function(){r.nextTick(u)};else if(!o||i.navigator&&i.navigator.standalone)if(s&&s.resolve){var p=s.resolve(void 0);t=function(){p.then(u)}}else t=function(){a.call(i,u)};else{var l=!0,f=document.createTextNode("");new o(u).observe(f,{characterData:!0}),t=function(){f.data=l=!l}}return function(i){var a={fn:i,next:void 0};n&&(n.next=a),e||(e=a,t()),n=a}}},function(e,n,t){"use strict";var i=t(12);function a(e){var n,t;this.promise=new e((function(e,i){if(void 0!==n||void 0!==t)throw TypeError("Bad Promise constructor");n=e,t=i})),this.resolve=i(n),this.reject=i(t)}e.exports.f=function(e){return new a(e)}},function(e,n,t){"use strict";var i=t(2),a=t(7),o=t(46),r=t(84),s=t(16),c=t(58),u=t(3),p=t(56),l=t(28),f=t(6),d=t(165),m=t(54).f,h=t(9).f,v=t(112),x=t(60),b=i.ArrayBuffer,g=i.DataView,y=i.Math,k=i.RangeError,w=i.Infinity,S=b,j=y.abs,_=y.pow,O=y.floor,E=y.log,P=y.LN2,C=a?"_b":"buffer",A=a?"_l":"byteLength",M=a?"_o":"byteOffset";function F(e,n,t){var i,a,o,r=new Array(t),s=8*t-n-1,c=(1<<s)-1,u=c>>1,p=23===n?_(2,-24)-_(2,-77):0,l=0,f=e<0||0===e&&1/e<0?1:0;for((e=j(e))!=e||e===w?(a=e!=e?1:0,i=c):(i=O(E(e)/P),e*(o=_(2,-i))<1&&(i--,o*=2),(e+=i+u>=1?p/o:p*_(2,1-u))*o>=2&&(i++,o/=2),i+u>=c?(a=0,i=c):i+u>=1?(a=(e*o-1)*_(2,n),i+=u):(a=e*_(2,u-1)*_(2,n),i=0));n>=8;r[l++]=255&a,a/=256,n-=8);for(i=i<<n|a,s+=n;s>0;r[l++]=255&i,i/=256,s-=8);return r[--l]|=128*f,r}function N(e,n,t){var i,a=8*t-n-1,o=(1<<a)-1,r=o>>1,s=a-7,c=t-1,u=e[c--],p=127&u;for(u>>=7;s>0;p=256*p+e[c],c--,s-=8);for(i=p&(1<<-s)-1,p>>=-s,s+=n;s>0;i=256*i+e[c],c--,s-=8);if(0===p)p=1-r;else{if(p===o)return i?NaN:u?-w:w;i+=_(2,n),p-=r}return(u?-1:1)*i*_(2,p-n)}function T(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]}function R(e){return[255&e]}function B(e){return[255&e,e>>8&255]}function I(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function L(e){return F(e,52,8)}function z(e){return F(e,23,4)}function D(e,n,t){h(e.prototype,n,{get:function(){return this[t]}})}function q(e,n,t,i){var a=d(+t);if(a+n>e[A])throw k("Wrong index!");var o=e[C]._b,r=a+e[M],s=o.slice(r,r+n);return i?s:s.reverse()}function U(e,n,t,i,a,o){var r=d(+t);if(r+n>e[A])throw k("Wrong index!");for(var s=e[C]._b,c=r+e[M],u=i(+a),p=0;p<n;p++)s[c+p]=u[o?p:n-p-1]}if(r.ABV){if(!u((function(){b(1)}))||!u((function(){new b(-1)}))||u((function(){return new b,new b(1.5),new b(NaN),"ArrayBuffer"!=b.name}))){for(var $,V=(b=function(e){return p(this,b),new S(d(e))}).prototype=S.prototype,W=m(S),G=0;W.length>G;)($=W[G++])in b||s(b,$,S[$]);o||(V.constructor=b)}var H=new g(new b(2)),K=g.prototype.setInt8;H.setInt8(0,2147483648),H.setInt8(1,2147483649),!H.getInt8(0)&&H.getInt8(1)||c(g.prototype,{setInt8:function(e,n){K.call(this,e,n<<24>>24)},setUint8:function(e,n){K.call(this,e,n<<24>>24)}},!0)}else b=function(e){p(this,b,"ArrayBuffer");var n=d(e);this._b=v.call(new Array(n),0),this[A]=n},g=function(e,n,t){p(this,g,"DataView"),p(e,b,"DataView");var i=e[A],a=l(n);if(a<0||a>i)throw k("Wrong offset!");if(a+(t=void 0===t?i-a:f(t))>i)throw k("Wrong length!");this[C]=e,this[M]=a,this[A]=t},a&&(D(b,"byteLength","_l"),D(g,"buffer","_b"),D(g,"byteLength","_l"),D(g,"byteOffset","_o")),c(g.prototype,{getInt8:function(e){return q(this,1,e)[0]<<24>>24},getUint8:function(e){return q(this,1,e)[0]},getInt16:function(e){var n=q(this,2,e,arguments[1]);return(n[1]<<8|n[0])<<16>>16},getUint16:function(e){var n=q(this,2,e,arguments[1]);return n[1]<<8|n[0]},getInt32:function(e){return T(q(this,4,e,arguments[1]))},getUint32:function(e){return T(q(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return N(q(this,4,e,arguments[1]),23,4)},getFloat64:function(e){return N(q(this,8,e,arguments[1]),52,8)},setInt8:function(e,n){U(this,1,e,R,n)},setUint8:function(e,n){U(this,1,e,R,n)},setInt16:function(e,n){U(this,2,e,B,n,arguments[2])},setUint16:function(e,n){U(this,2,e,B,n,arguments[2])},setInt32:function(e,n){U(this,4,e,I,n,arguments[2])},setUint32:function(e,n){U(this,4,e,I,n,arguments[2])},setFloat32:function(e,n){U(this,4,e,z,n,arguments[2])},setFloat64:function(e,n){U(this,8,e,L,n,arguments[2])}});x(b,"ArrayBuffer"),x(g,"DataView"),s(g.prototype,r.VIEW,!0),n.ArrayBuffer=b,n.DataView=g},function(e,n,t){var i=t(0),a=t(170)(!0);i(i.S,"Object",{entries:function(e){return a(e)}})},function(e,n,t){"use strict";var i=t(15);function a(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,n,t){if(!n)return e;var o;if(t)o=t(n);else if(i.isURLSearchParams(n))o=n.toString();else{var r=[];i.forEach(n,(function(e,n){null!=e&&(i.isArray(e)?n+="[]":e=[e],i.forEach(e,(function(e){i.isDate(e)?e=e.toISOString():i.isObject(e)&&(e=JSON.stringify(e)),r.push(a(n)+"="+a(e))})))})),o=r.join("&")}if(o){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}},function(e,n,t){"use strict";var i=t(179);e.exports=function(e,n,t,a,o){var r=new Error(e);return i(r,n,t,a,o)}},function(e,n){e.exports=require("http")},function(e,n){e.exports=require("https")},function(e,n){e.exports=require("url")},function(e,n,t){"use strict";const i=t(90),a=t(424);n.names=a.names,n.codes=a.codes,n.defaultLengths=a.defaultLengths;const o=t(64);function r(e){n.decode(e)}n.toHexString=function(e){if(!Buffer.isBuffer(e))throw new Error("must be passed a buffer");return e.toString("hex")},n.fromHexString=function(e){return Buffer.from(e,"hex")},n.toB58String=function(e){if(!Buffer.isBuffer(e))throw new Error("must be passed a buffer");return i.encode(e)},n.fromB58String=function(e){let n=e;return Buffer.isBuffer(e)&&(n=e.toString()),Buffer.from(i.decode(n))},n.decode=function(e){if(!Buffer.isBuffer(e))throw new Error("multihash must be a Buffer");if(e.length<3)throw new Error("multihash too short. must be > 3 bytes.");const t=o.decode(e);if(!n.isValidCode(t))throw new Error(`multihash unknown function code: 0x${t.toString(16)}`);e=e.slice(o.decode.bytes);const i=o.decode(e);if(i<1)throw new Error(`multihash invalid length: 0x${i.toString(16)}`);if((e=e.slice(o.decode.bytes)).length!==i)throw new Error(`multihash length inconsistent: 0x${e.toString("hex")}`);return{code:t,name:a.codes[t],length:i,digest:e}},n.encode=function(e,t,i){if(!e||void 0===t)throw new Error("multihash encode requires at least two args: digest, code");const a=n.coerceCode(t);if(!Buffer.isBuffer(e))throw new Error("digest should be a Buffer");if(null==i&&(i=e.length),i&&e.length!==i)throw new Error("digest length should be equal to specified length.");return Buffer.concat([Buffer.from(o.encode(a)),Buffer.from(o.encode(i)),e])},n.coerceCode=function(e){let t=e;if("string"==typeof e){if(void 0===a.names[e])throw new Error(`Unrecognized hash function named: ${e}`);t=a.names[e]}if("number"!=typeof t)throw new Error(`Hash function code should be a number. Got: ${t}`);if(void 0===a.codes[t]&&!n.isAppCode(t))throw new Error(`Unrecognized function code: ${t}`);return t},n.isAppCode=function(e){return e>0&&e<16},n.isValidCode=function(e){return!!n.isAppCode(e)||!!a.codes[e]},n.validate=r,n.prefix=function(e){return r(e),e.slice(0,2)}},function(e,n,t){"use strict";function i(e){if("number"==typeof e){if(i.codes[e])return i.codes[e];throw new Error("no protocol with code: "+e)}if("string"==typeof e||e instanceof String){if(i.names[e])return i.names[e];throw new Error("no protocol with name: "+e)}throw new Error("invalid protocol id type: "+e)}const a=-1;function o(e,n,t,i,a){return{code:e,size:n,name:t,resolvable:Boolean(i),path:Boolean(a)}}i.lengthPrefixedVarSize=a,i.V=a,i.table=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,a,"ip6zone"],[53,a,"dns","resolvable"],[54,a,"dns4","resolvable"],[55,a,"dns6","resolvable"],[56,a,"dnsaddr","resolvable"],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,a,"unix",!1,"path"],[421,a,"ipfs"],[421,a,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,a,"garlic64"],[460,0,"quic"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"]],i.names={},i.codes={},i.table.map(e=>{const n=o.apply(null,e);i.codes[n.code]=n,i.names[n.name]=n}),i.object=o,e.exports=i},function(e,n,t){"use strict";const i=t(126),a=t(188),o=t(438),r=t(73),s=t(443);class c{constructor(e,n,t,r){if(u.isCID(e)){const n=e;return this.version=n.version,this.codec=n.codec,this.multihash=Buffer.from(n.multihash),void(this.multibaseName=n.multibaseName||(0===n.version?"base58btc":"base32"))}if("string"==typeof e){const n=a.isEncoded(e);if(n){const t=a.decode(e);this.version=parseInt(t.slice(0,1).toString("hex"),16),this.codec=o.getCodec(t.slice(1)),this.multihash=o.rmPrefix(t.slice(1)),this.multibaseName=n}else this.version=0,this.codec="dag-pb",this.multihash=i.fromB58String(e),this.multibaseName="base58btc";return c.validateCID(this),void Object.defineProperty(this,"string",{value:e})}if(Buffer.isBuffer(e)){const n=e.slice(0,1),t=parseInt(n.toString("hex"),16);if(1===t){const n=e;this.version=t,this.codec=o.getCodec(n.slice(1)),this.multihash=o.rmPrefix(n.slice(1)),this.multibaseName="base32"}else this.version=0,this.codec="dag-pb",this.multihash=e,this.multibaseName="base58btc";c.validateCID(this)}else this.version=e,this.codec=n,this.multihash=t,this.multibaseName=r||(0===e?"base58btc":"base32"),c.validateCID(this)}get buffer(){let e=this._buffer;if(!e){if(0===this.version)e=this.multihash;else{if(1!==this.version)throw new Error("unsupported version");e=Buffer.concat([Buffer.from("01","hex"),o.getCodeVarint(this.codec),this.multihash])}Object.defineProperty(this,"_buffer",{value:e})}return e}get prefix(){return Buffer.concat([Buffer.from(`0${this.version}`,"hex"),o.getCodeVarint(this.codec),i.prefix(this.multihash)])}toV0(){if("dag-pb"!==this.codec)throw new Error("Cannot convert a non dag-pb CID to CIDv0");const{name:e,length:n}=i.decode(this.multihash);if("sha2-256"!==e)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");if(32!==n)throw new Error("Cannot convert non 32 byte multihash CID to CIDv0");return new u(0,this.codec,this.multihash)}toV1(){return new u(1,this.codec,this.multihash)}toBaseEncodedString(e=this.multibaseName){if(this.string&&e===this.multibaseName)return this.string;let n=null;if(0===this.version){if("base58btc"!==e)throw new Error("not supported with CIDv0, to support different bases, please migrate the instance do CIDv1, you can do that through cid.toV1()");n=i.toB58String(this.multihash)}else{if(1!==this.version)throw new Error("unsupported version");n=a.encode(e,this.buffer).toString()}return e===this.multibaseName&&Object.defineProperty(this,"string",{value:n}),n}toString(e){return this.toBaseEncodedString(e)}toJSON(){return{codec:this.codec,version:this.version,hash:this.multihash}}equals(e){return this.codec===e.codec&&this.version===e.version&&this.multihash.equals(e.multihash)}static validateCID(e){const n=s.checkCIDComponents(e);if(n)throw new Error(n)}}const u=t(191)(c,{className:"CID",symbolName:"@ipld/js-cid/CID"});u.codecs=r,e.exports=u},function(e,n,t){"use strict";t(8);var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n,t){return new Promise((function(i,a){var o,c=new r.default;if(!(null!=t&&null!==(o=t.pinataMetadata)&&void 0!==o&&o.name&&"string"==typeof t.pinataMetadata.name&&t.pinataMetadata.name.length>0))throw Error("filename was not provide, make sure to provide options.pinataMetadata.name");c.append("file",n,{filename:t.pinataMetadata.name}),n instanceof s.default.Readable||n instanceof r.default||a(new Error("readStream is not a readable stream or form data")),i(l(e,c,t))}))},n.uploadToIPFS=l,t(23),t(34),t(69);var a=i(t(43)),o=t(40),r=i(t(193)),s=i(t(88)),c=t(44),u=t(45),p="".concat(o.baseUrl,"/pinning/pinFileToIPFS");function l(e,n,t){return new Promise((function(i,o){t&&t.pinataMetadata&&((0,c.validateMetadata)(t.pinataMetadata),n.append("pinataMetadata",JSON.stringify(t.pinataMetadata))),t&&t.pinataOptions&&((0,c.validatePinataOptions)(t.pinataOptions),n.append("pinataOptions",JSON.stringify(t.pinataOptions))),a.default.post(p,n,(0,c.createConfigForAxiosHeadersWithFormData)(e,n.getBoundary())).then((function(e){200!==e.status&&o(new Error("unknown server response while pinning File to IPFS: ".concat(e))),i(e.data)})).catch((function(e){var n=(0,u.handleError)(e);o(n)}))}))}},function(e,n){e.exports=require("path")},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n=l(l({},n),{includeCount:"false"});var t="".concat(r.baseUrl,"/data/pinList"),i=(0,u.default)(t,n);return new Promise((function(n,t){o.default.get(i,l({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&t(new Error("unknown server response while attempting to retrieve user pin list: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,c.handleError)(e);t(n)}))}))},t(23),t(34),t(14),t(31),t(24),t(33),t(11),t(35),t(32),t(8);var a=i(t(30)),o=i(t(43)),r=t(40),s=t(44),c=t(45),u=i(t(207));function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}e.exports=n.default},function(e,n,t){e.exports=!t(7)&&!t(3)((function(){return 7!=Object.defineProperty(t(91)("div"),"a",{get:function(){return 7}}).a}))},function(e,n,t){var i=t(19),a=t(20),o=t(75)(!1),r=t(93)("IE_PROTO");e.exports=function(e,n){var t,s=a(e),c=0,u=[];for(t in s)t!=r&&i(s,t)&&u.push(t);for(;n.length>c;)i(s,t=n[c++])&&(~o(u,t)||u.push(t));return u}},function(e,n,t){n.f=t(5)},function(e,n,t){var i=t(9),a=t(1),o=t(51);e.exports=t(7)?Object.defineProperties:function(e,n){a(e);for(var t,r=o(n),s=r.length,c=0;s>c;)i.f(e,t=r[c++],n[t]);return e}},function(e,n,t){var i=t(20),a=t(54).f,o={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return r&&"[object Window]"==o.call(e)?function(e){try{return a(e)}catch(e){return r.slice()}}(e):a(i(e))}},function(e,n,t){"use strict";var i=t(7),a=t(51),o=t(76),r=t(68),s=t(10),c=t(66),u=Object.assign;e.exports=!u||t(3)((function(){var e={},n={},t=Symbol(),i="abcdefghijklmnopqrst";return e[t]=7,i.split("").forEach((function(e){n[e]=e})),7!=u({},e)[t]||Object.keys(u({},n)).join("")!=i}))?function(e,n){for(var t=s(e),u=arguments.length,p=1,l=o.f,f=r.f;u>p;)for(var d,m=c(arguments[p++]),h=l?a(m).concat(l(m)):a(m),v=h.length,x=0;v>x;)d=h[x++],i&&!f.call(m,d)||(t[d]=m[d]);return t}:u},function(e,n){e.exports=Object.is||function(e,n){return e===n?0!==e||1/e==1/n:e!=e&&n!=n}},function(e,n,t){"use strict";var i=t(12),a=t(4),o=t(140),r=[].slice,s={},c=function(e,n,t){if(!(n in s)){for(var i=[],a=0;a<n;a++)i[a]="a["+a+"]";s[n]=Function("F,a","return new F("+i.join(",")+")")}return s[n](e,t)};e.exports=Function.bind||function(e){var n=i(this),t=r.call(arguments,1),s=function(){var i=t.concat(r.call(arguments));return this instanceof s?c(n,i.length,i):o(n,i,e)};return a(n.prototype)&&(s.prototype=n.prototype),s}},function(e,n){e.exports=function(e,n,t){var i=void 0===t;switch(n.length){case 0:return i?e():e.call(t);case 1:return i?e(n[0]):e.call(t,n[0]);case 2:return i?e(n[0],n[1]):e.call(t,n[0],n[1]);case 3:return i?e(n[0],n[1],n[2]):e.call(t,n[0],n[1],n[2]);case 4:return i?e(n[0],n[1],n[2],n[3]):e.call(t,n[0],n[1],n[2],n[3])}return e.apply(t,n)}},function(e,n,t){var i=t(2).parseInt,a=t(62).trim,o=t(98),r=/^[-+]?0[xX]/;e.exports=8!==i(o+"08")||22!==i(o+"0x16")?function(e,n){var t=a(String(e),3);return i(t,n>>>0||(r.test(t)?16:10))}:i},function(e,n,t){var i=t(2).parseFloat,a=t(62).trim;e.exports=1/i(t(98)+"-0")!=-1/0?function(e){var n=a(String(e),3),t=i(n);return 0===t&&"-"==n.charAt(0)?-0:t}:i},function(e,n,t){var i=t(27);e.exports=function(e,n){if("number"!=typeof e&&"Number"!=i(e))throw TypeError(n);return+e}},function(e,n,t){var i=t(4),a=Math.floor;e.exports=function(e){return!i(e)&&isFinite(e)&&a(e)===e}},function(e,n){e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:Math.log(1+e)}},function(e,n,t){var i=t(103),a=Math.pow,o=a(2,-52),r=a(2,-23),s=a(2,127)*(2-r),c=a(2,-126);e.exports=Math.fround||function(e){var n,t,a=Math.abs(e),u=i(e);return a<c?u*(a/c/r+1/o-1/o)*c*r:(t=(n=(1+r/o)*a)-(n-a))>s||t!=t?u*(1/0):u*t}},function(e,n,t){var i=t(0),a=t(286);i(i.P+i.F*(Date.prototype.toISOString!==a),"Date",{toISOString:a})},function(e,n,t){var i=t(0);i(i.S,"Array",{isArray:t(74)})},function(e,n,t){var i=t(1);e.exports=function(e,n,t,a){try{return a?n(i(t)[0],t[1]):n(t)}catch(n){var o=e.return;throw void 0!==o&&i(o.call(e)),n}}},function(e,n,t){"use strict";var i=t(0),a=t(96),o=t(27),r=t(52),s=t(6),c=[].slice;i(i.P+i.F*t(3)((function(){a&&c.call(a)})),"Array",{slice:function(e,n){var t=s(this.length),i=o(this);if(n=void 0===n?t:n,"Array"==i)return c.call(this,e,n);for(var a=r(e,t),u=r(n,t),p=s(u-a),l=new Array(p),f=0;f<p;f++)l[f]="String"==i?this.charAt(a+f):this[a+f];return l}})},function(e,n,t){"use strict";var i=t(0),a=t(12),o=t(10),r=t(3),s=[].sort,c=[1,2,3];i(i.P+i.F*(r((function(){c.sort(void 0)}))||!r((function(){c.sort(null)}))||!t(29)(s)),"Array",{sort:function(e){return void 0===e?s.call(o(this)):s.call(o(this),a(e))}})},function(e,n,t){var i=t(12),a=t(10),o=t(66),r=t(6);e.exports=function(e,n,t,s,c){i(n);var u=a(e),p=o(u),l=r(u.length),f=c?l-1:0,d=c?-1:1;if(t<2)for(;;){if(f in p){s=p[f],f+=d;break}if(f+=d,c?f<0:l<=f)throw TypeError("Reduce of empty array with no initial value")}for(;c?f>=0:l>f;f+=d)f in p&&(s=n(s,p[f],f,u));return s}},function(e,n,t){"use strict";var i=t(10),a=t(52),o=t(6);e.exports=[].copyWithin||function(e,n){var t=i(this),r=o(t.length),s=a(e,r),c=a(n,r),u=arguments.length>2?arguments[2]:void 0,p=Math.min((void 0===u?r:a(u,r))-c,r-s),l=1;for(c<s&&s<c+p&&(l=-1,c+=p-1,s+=p-1);p-- >0;)c in t?t[s]=t[c]:delete t[s],s+=l,c+=l;return t}},function(e,n){e.exports=function(e,n){return{value:n,done:!!e}}},function(e,n,t){"use strict";var i=t(114);t(0)({target:"RegExp",proto:!0,forced:i!==/./.exec},{exec:i})},function(e,n,t){t(7)&&"g"!=/./g.flags&&t(9).f(RegExp.prototype,"flags",{configurable:!0,get:t(70)})},function(e,n,t){"use strict";var i=t(78),a=t(1),o=t(71),r=t(115),s=t(6),c=t(80),u=t(114),p=t(3),l=Math.min,f=[].push,d=!p((function(){RegExp(4294967295,"y")}));t(81)("split",2,(function(e,n,t,p){var m;return m="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var a=String(this);if(void 0===e&&0===n)return[];if(!i(e))return t.call(a,e,n);for(var o,r,s,c=[],p=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),l=0,d=void 0===n?4294967295:n>>>0,m=new RegExp(e.source,p+"g");(o=u.call(m,a))&&!((r=m.lastIndex)>l&&(c.push(a.slice(l,o.index)),o.length>1&&o.index<a.length&&f.apply(c,o.slice(1)),s=o[0].length,l=r,c.length>=d));)m.lastIndex===o.index&&m.lastIndex++;return l===a.length?!s&&m.test("")||c.push(""):c.push(a.slice(l)),c.length>d?c.slice(0,d):c}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,i){var a=e(this),o=null==t?void 0:t[n];return void 0!==o?o.call(t,a,i):m.call(String(a),t,i)},function(e,n){var i=p(m,e,this,n,m!==t);if(i.done)return i.value;var u=a(e),f=String(this),h=o(u,RegExp),v=u.unicode,x=(u.ignoreCase?"i":"")+(u.multiline?"m":"")+(u.unicode?"u":"")+(d?"y":"g"),b=new h(d?u:"^(?:"+u.source+")",x),g=void 0===n?4294967295:n>>>0;if(0===g)return[];if(0===f.length)return null===c(b,f)?[f]:[];for(var y=0,k=0,w=[];k<f.length;){b.lastIndex=d?k:0;var S,j=c(b,d?f:f.slice(k));if(null===j||(S=l(s(b.lastIndex+(d?0:k)),f.length))===y)k=r(f,k,v);else{if(w.push(f.slice(y,k)),w.length===g)return w;for(var _=1;_<=j.length-1;_++)if(w.push(j[_]),w.length===g)return w;k=y=S}}return w.push(f.slice(y)),w}]}))},function(e,n){e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},function(e,n,t){var i=t(1),a=t(4),o=t(118);e.exports=function(e,n){if(i(e),a(n)&&n.constructor===e)return n;var t=o.f(e);return(0,t.resolve)(n),t.promise}},function(e,n,t){"use strict";var i=t(161),a=t(59);e.exports=t(83)("Map",(function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}}),{get:function(e){var n=i.getEntry(a(this,"Map"),e);return n&&n.v},set:function(e,n){return i.def(a(this,"Map"),0===e?0:e,n)}},i,!0)},function(e,n,t){"use strict";var i=t(9).f,a=t(53),o=t(58),r=t(26),s=t(56),c=t(57),u=t(105),p=t(154),l=t(55),f=t(7),d=t(47).fastKey,m=t(59),h=f?"_s":"size",v=function(e,n){var t,i=d(n);if("F"!==i)return e._i[i];for(t=e._f;t;t=t.n)if(t.k==n)return t};e.exports={getConstructor:function(e,n,t,u){var p=e((function(e,i){s(e,p,n,"_i"),e._t=n,e._i=a(null),e._f=void 0,e._l=void 0,e[h]=0,null!=i&&c(i,t,e[u],e)}));return o(p.prototype,{clear:function(){for(var e=m(this,n),t=e._i,i=e._f;i;i=i.n)i.r=!0,i.p&&(i.p=i.p.n=void 0),delete t[i.i];e._f=e._l=void 0,e[h]=0},delete:function(e){var t=m(this,n),i=v(t,e);if(i){var a=i.n,o=i.p;delete t._i[i.i],i.r=!0,o&&(o.n=a),a&&(a.p=o),t._f==i&&(t._f=a),t._l==i&&(t._l=o),t[h]--}return!!i},forEach:function(e){m(this,n);for(var t,i=r(e,arguments.length>1?arguments[1]:void 0,3);t=t?t.n:this._f;)for(i(t.v,t.k,this);t&&t.r;)t=t.p},has:function(e){return!!v(m(this,n),e)}}),f&&i(p.prototype,"size",{get:function(){return m(this,n)[h]}}),p},def:function(e,n,t){var i,a,o=v(e,n);return o?o.v=t:(e._l=o={i:a=d(n,!0),k:n,v:t,p:i=e._l,n:void 0,r:!1},e._f||(e._f=o),i&&(i.n=o),e[h]++,"F"!==a&&(e._i[a]=o)),e},getEntry:v,setStrong:function(e,n,t){u(e,n,(function(e,t){this._t=m(e,n),this._k=t,this._l=void 0}),(function(){for(var e=this._k,n=this._l;n&&n.r;)n=n.p;return this._t&&(this._l=n=n?n.n:this._t._f)?p(0,"keys"==e?n.k:"values"==e?n.v:[n.k,n.v]):(this._t=void 0,p(1))}),t?"entries":"values",!t,!0),l(n)}}},function(e,n,t){"use strict";var i=t(161),a=t(59);e.exports=t(83)("Set",(function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(e){return i.def(a(this,"Set"),e=0===e?0:e,e)}},i)},function(e,n,t){"use strict";var i,a=t(2),o=t(37)(0),r=t(17),s=t(47),c=t(137),u=t(164),p=t(4),l=t(59),f=t(59),d=!a.ActiveXObject&&"ActiveXObject"in a,m=s.getWeak,h=Object.isExtensible,v=u.ufstore,x=function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(e){if(p(e)){var n=m(e);return!0===n?v(l(this,"WeakMap")).get(e):n?n[this._i]:void 0}},set:function(e,n){return u.def(l(this,"WeakMap"),e,n)}},g=e.exports=t(83)("WeakMap",x,b,u,!0,!0);f&&d&&(c((i=u.getConstructor(x,"WeakMap")).prototype,b),s.NEED=!0,o(["delete","has","get","set"],(function(e){var n=g.prototype,t=n[e];r(n,e,(function(n,a){if(p(n)&&!h(n)){this._f||(this._f=new i);var o=this._f[e](n,a);return"set"==e?this:o}return t.call(this,n,a)}))})))},function(e,n,t){"use strict";var i=t(58),a=t(47).getWeak,o=t(1),r=t(4),s=t(56),c=t(57),u=t(37),p=t(19),l=t(59),f=u(5),d=u(6),m=0,h=function(e){return e._l||(e._l=new v)},v=function(){this.a=[]},x=function(e,n){return f(e.a,(function(e){return e[0]===n}))};v.prototype={get:function(e){var n=x(this,e);if(n)return n[1]},has:function(e){return!!x(this,e)},set:function(e,n){var t=x(this,e);t?t[1]=n:this.a.push([e,n])},delete:function(e){var n=d(this.a,(function(n){return n[0]===e}));return~n&&this.a.splice(n,1),!!~n}},e.exports={getConstructor:function(e,n,t,o){var u=e((function(e,i){s(e,u,n,"_i"),e._t=n,e._i=m++,e._l=void 0,null!=i&&c(i,t,e[o],e)}));return i(u.prototype,{delete:function(e){if(!r(e))return!1;var t=a(e);return!0===t?h(l(this,n)).delete(e):t&&p(t,this._i)&&delete t[this._i]},has:function(e){if(!r(e))return!1;var t=a(e);return!0===t?h(l(this,n)).has(e):t&&p(t,this._i)}}),u},def:function(e,n,t){var i=a(o(n),!0);return!0===i?h(e).set(n,t):i[e._i]=t,e},ufstore:h}},function(e,n,t){var i=t(28),a=t(6);e.exports=function(e){if(void 0===e)return 0;var n=i(e),t=a(n);if(n!==t)throw RangeError("Wrong length!");return t}},function(e,n,t){var i=t(54),a=t(76),o=t(1),r=t(2).Reflect;e.exports=r&&r.ownKeys||function(e){var n=i.f(o(e)),t=a.f;return t?n.concat(t(e)):n}},function(e,n,t){"use strict";var i=t(74),a=t(4),o=t(6),r=t(26),s=t(5)("isConcatSpreadable");e.exports=function e(n,t,c,u,p,l,f,d){for(var m,h,v=p,x=0,b=!!f&&r(f,d,3);x<u;){if(x in c){if(m=b?b(c[x],x,t):c[x],h=!1,a(m)&&(h=void 0!==(h=m[s])?!!h:i(m)),h&&l>0)v=e(n,t,m,o(m.length),v,l-1)-1;else{if(v>=9007199254740991)throw TypeError();n[v]=m}v++}x++}return v}},function(e,n,t){var i=t(6),a=t(101),o=t(38);e.exports=function(e,n,t,r){var s=String(o(e)),c=s.length,u=void 0===t?" ":String(t),p=i(n);if(p<=c||""==u)return s;var l=p-c,f=a.call(u,Math.ceil(l/u.length));return f.length>l&&(f=f.slice(0,l)),r?f+s:s+f}},function(e,n,t){t(95)("asyncIterator")},function(e,n,t){var i=t(7),a=t(51),o=t(20),r=t(68).f;e.exports=function(e){return function(n){for(var t,s=o(n),c=a(s),u=c.length,p=0,l=[];u>p;)t=c[p++],i&&!r.call(s,t)||l.push(e?[t,s[t]]:s[t]);return l}}},function(e,n,t){var i=t(61),a=t(172);e.exports=function(e){return function(){if(i(this)!=e)throw TypeError(e+"#toJSON isn't generic");return a(this)}}},function(e,n,t){var i=t(57);e.exports=function(e,n){var t=[];return i(e,!1,t.push,t,n),t}},function(e,n){e.exports=Math.scale||function(e,n,t,i,a){return 0===arguments.length||e!=e||n!=n||t!=t||i!=i||a!=a?NaN:e===1/0||e===-1/0?e:(e-n)*(a-i)/(t-n)+i}},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n,t){if(!n)throw new Error("hashToPin value is required for pinning by hash");if(!c.default.cid(n))throw new Error("hashToPin value is an invalid IPFS CID");var i="".concat(r.baseUrl,"/pinning/pinByHash"),l={hashToPin:n,pinataOptions:{}};t&&(t.pinataOptions&&(l.pinataOptions=t.pinataOptions),t.pinataMetadata&&((0,s.validateMetadata)(t.pinataMetadata),l.pinataMetadata=t.pinataMetadata));return new Promise((function(n,t){o.default.post(i,l,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&t(new Error("unknown server response while adding to pin queue: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,u.handleError)(e);t(n)}))}))};var a=i(t(30));t(23),t(34),t(14),t(31),t(24),t(33),t(11),t(35),t(32),t(8);var o=i(t(43)),r=t(40),s=t(44),c=i(t(72)),u=t(45);function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){"use strict";e.exports=function(e,n){return function(){for(var t=new Array(arguments.length),i=0;i<t.length;i++)t[i]=arguments[i];return e.apply(n,t)}}},function(e,n,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,n,t){"use strict";var i=t(15),a=t(401),o={"Content-Type":"application/x-www-form-urlencoded"};function r(e,n){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=n)}var s,c={adapter:("undefined"!=typeof XMLHttpRequest?s=t(402):"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)&&(s=t(408)),s),transformRequest:[function(e,n){return a(n,"Accept"),a(n,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(r(n,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)?(r(n,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};c.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],(function(e){c.headers[e]={}})),i.forEach(["post","put","patch"],(function(e){c.headers[e]=i.merge(o)})),e.exports=c},function(e,n,t){"use strict";var i=t(122);e.exports=function(e,n,t){var a=t.config.validateStatus;t.status&&a&&!a(t.status)?n(i("Request failed with status code "+t.status,t.config,null,t.request,t)):e(t)}},function(e,n,t){"use strict";e.exports=function(e,n,t,i,a){return e.config=n,t&&(e.code=t),e.request=i,e.response=a,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,n,t){"use strict";var i=t(404),a=t(405);e.exports=function(e,n){return e&&!i(n)?a(e,n):n}},function(e,n,t){var i=t(125),a=i.URL,o=t(123),r=t(124),s=t(88).Writable,c=t(409),u=t(410),p=Object.create(null);["abort","aborted","connect","error","socket","timeout"].forEach((function(e){p[e]=function(n,t,i){this._redirectable.emit(e,n,t,i)}}));var l=w("ERR_FR_REDIRECTION_FAILURE",""),f=w("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded"),d=w("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit"),m=w("ERR_STREAM_WRITE_AFTER_END","write after end");function h(e,n){s.call(this),this._sanitizeOptions(e),this._options=e,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],n&&this.on("response",n);var t=this;this._onNativeResponse=function(e){t._processResponse(e)},this._performRequest()}function v(e,n){clearTimeout(e._timeout),e._timeout=setTimeout((function(){e.emit("timeout")}),n)}function x(){clearTimeout(this._timeout)}function b(e){var n={maxRedirects:21,maxBodyLength:10485760},t={};return Object.keys(e).forEach((function(o){var r=o+":",s=t[r]=e[o],p=n[o]=Object.create(s);Object.defineProperties(p,{request:{value:function(e,o,s){if("string"==typeof e){var p=e;try{e=y(new a(p))}catch(n){e=i.parse(p)}}else a&&e instanceof a?e=y(e):(s=o,o=e,e={protocol:r});return"function"==typeof o&&(s=o,o=null),(o=Object.assign({maxRedirects:n.maxRedirects,maxBodyLength:n.maxBodyLength},e,o)).nativeProtocols=t,c.equal(o.protocol,r,"protocol mismatch"),u("options",o),new h(o,s)},configurable:!0,enumerable:!0,writable:!0},get:{value:function(e,n,t){var i=p.request(e,n,t);return i.end(),i},configurable:!0,enumerable:!0,writable:!0}})})),n}function g(){}function y(e){var n={protocol:e.protocol,hostname:e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:e.pathname+e.search,href:e.href};return""!==e.port&&(n.port=Number(e.port)),n}function k(e,n){var t;for(var i in n)e.test(i)&&(t=n[i],delete n[i]);return t}function w(e,n){function t(e){Error.captureStackTrace(this,this.constructor),this.message=e||n}return t.prototype=new Error,t.prototype.constructor=t,t.prototype.name="Error ["+e+"]",t.prototype.code=e,t}h.prototype=Object.create(s.prototype),h.prototype.write=function(e,n,t){if(this._ending)throw new m;if(!("string"==typeof e||"object"==typeof e&&"length"in e))throw new TypeError("data should be a string, Buffer or Uint8Array");"function"==typeof n&&(t=n,n=null),0!==e.length?this._requestBodyLength+e.length<=this._options.maxBodyLength?(this._requestBodyLength+=e.length,this._requestBodyBuffers.push({data:e,encoding:n}),this._currentRequest.write(e,n,t)):(this.emit("error",new d),this.abort()):t&&t()},h.prototype.end=function(e,n,t){if("function"==typeof e?(t=e,e=n=null):"function"==typeof n&&(t=n,n=null),e){var i=this,a=this._currentRequest;this.write(e,n,(function(){i._ended=!0,a.end(null,null,t)})),this._ending=!0}else this._ended=this._ending=!0,this._currentRequest.end(null,null,t)},h.prototype.setHeader=function(e,n){this._options.headers[e]=n,this._currentRequest.setHeader(e,n)},h.prototype.removeHeader=function(e){delete this._options.headers[e],this._currentRequest.removeHeader(e)},h.prototype.setTimeout=function(e,n){if(n&&this.once("timeout",n),this.socket)v(this,e);else{var t=this;this._currentRequest.once("socket",(function(){v(t,e)}))}return this.once("response",x),this.once("error",x),this},["abort","flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach((function(e){h.prototype[e]=function(n,t){return this._currentRequest[e](n,t)}})),["aborted","connection","socket"].forEach((function(e){Object.defineProperty(h.prototype,e,{get:function(){return this._currentRequest[e]}})})),h.prototype._sanitizeOptions=function(e){if(e.headers||(e.headers={}),e.host&&(e.hostname||(e.hostname=e.host),delete e.host),!e.pathname&&e.path){var n=e.path.indexOf("?");n<0?e.pathname=e.path:(e.pathname=e.path.substring(0,n),e.search=e.path.substring(n))}},h.prototype._performRequest=function(){var e=this._options.protocol,n=this._options.nativeProtocols[e];if(n){if(this._options.agents){var t=e.substr(0,e.length-1);this._options.agent=this._options.agents[t]}var a=this._currentRequest=n.request(this._options,this._onNativeResponse);for(var o in this._currentUrl=i.format(this._options),a._redirectable=this,p)o&&a.on(o,p[o]);if(this._isRedirect){var r=0,s=this,c=this._requestBodyBuffers;!function e(n){if(a===s._currentRequest)if(n)s.emit("error",n);else if(r<c.length){var t=c[r++];a.finished||a.write(t.data,t.encoding,e)}else s._ended&&a.end()}()}}else this.emit("error",new TypeError("Unsupported protocol "+e))},h.prototype._processResponse=function(e){var n=e.statusCode;this._options.trackRedirects&&this._redirects.push({url:this._currentUrl,headers:e.headers,statusCode:n});var t=e.headers.location;if(t&&!1!==this._options.followRedirects&&n>=300&&n<400){if(this._currentRequest.removeAllListeners(),this._currentRequest.on("error",g),this._currentRequest.abort(),e.destroy(),++this._redirectCount>this._options.maxRedirects)return void this.emit("error",new f);((301===n||302===n)&&"POST"===this._options.method||303===n&&!/^(?:GET|HEAD)$/.test(this._options.method))&&(this._options.method="GET",this._requestBodyBuffers=[],k(/^content-/i,this._options.headers));var a=k(/^host$/i,this._options.headers)||i.parse(this._currentUrl).hostname,o=i.resolve(this._currentUrl,t);u("redirecting to",o),this._isRedirect=!0;var r=i.parse(o);if(Object.assign(this._options,r),r.hostname!==a&&k(/^authorization$/i,this._options.headers),"function"==typeof this._options.beforeRedirect){var s={headers:e.headers};try{this._options.beforeRedirect.call(null,this._options,s)}catch(e){return void this.emit("error",e)}this._sanitizeOptions(this._options)}try{this._performRequest()}catch(e){var c=new l("Redirected request failed: "+e.message);c.cause=e,this.emit("error",c)}}else e.responseUrl=this._currentUrl,e.redirects=this._redirects,this.emit("response",e),this._requestBodyBuffers=[]},e.exports=b({http:o,https:r}),e.exports.wrap=b},function(e,n,t){e.exports=function(e){function n(e){let t,a=null;function o(...e){if(!o.enabled)return;const i=o,a=Number(new Date),r=a-(t||a);i.diff=r,i.prev=t,i.curr=a,t=a,e[0]=n.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let s=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(t,a)=>{if("%%"===t)return"%";s++;const o=n.formatters[a];if("function"==typeof o){const n=e[s];t=o.call(i,n),e.splice(s,1),s--}return t}),n.formatArgs.call(i,e),(i.log||n.log).apply(i,e)}return o.namespace=e,o.useColors=n.useColors(),o.color=n.selectColor(e),o.extend=i,o.destroy=n.destroy,Object.defineProperty(o,"enabled",{enumerable:!0,configurable:!1,get:()=>null===a?n.enabled(e):a,set:e=>{a=e}}),"function"==typeof n.init&&n.init(o),o}function i(e,t){const i=n(this.namespace+(void 0===t?":":t)+e);return i.log=this.log,i}function a(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return n.debug=n,n.default=n,n.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},n.disable=function(){const e=[...n.names.map(a),...n.skips.map(a).map(e=>"-"+e)].join(",");return n.enable(""),e},n.enable=function(e){let t;n.save(e),n.names=[],n.skips=[];const i=("string"==typeof e?e:"").split(/[\s,]+/),a=i.length;for(t=0;t<a;t++)i[t]&&("-"===(e=i[t].replace(/\*/g,".*?"))[0]?n.skips.push(new RegExp("^"+e.substr(1)+"$")):n.names.push(new RegExp("^"+e+"$")))},n.enabled=function(e){if("*"===e[e.length-1])return!0;let t,i;for(t=0,i=n.skips.length;t<i;t++)if(n.skips[t].test(e))return!1;for(t=0,i=n.names.length;t<i;t++)if(n.names[t].test(e))return!0;return!1},n.humanize=t(413),n.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach(t=>{n[t]=e[t]}),n.names=[],n.skips=[],n.formatters={},n.selectColor=function(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return n.colors[Math.abs(t)%n.colors.length]},n.enable(n.load()),n}},function(e,n){e.exports=require("os")},function(e,n,t){"use strict";var i=t(15);e.exports=function(e,n){n=n||{};var t={},a=["url","method","data"],o=["headers","auth","proxy","params"],r=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],s=["validateStatus"];function c(e,n){return i.isPlainObject(e)&&i.isPlainObject(n)?i.merge(e,n):i.isPlainObject(n)?i.merge({},n):i.isArray(n)?n.slice():n}function u(a){i.isUndefined(n[a])?i.isUndefined(e[a])||(t[a]=c(void 0,e[a])):t[a]=c(e[a],n[a])}i.forEach(a,(function(e){i.isUndefined(n[e])||(t[e]=c(void 0,n[e]))})),i.forEach(o,u),i.forEach(r,(function(a){i.isUndefined(n[a])?i.isUndefined(e[a])||(t[a]=c(void 0,e[a])):t[a]=c(void 0,n[a])})),i.forEach(s,(function(i){i in n?t[i]=c(e[i],n[i]):i in e&&(t[i]=c(void 0,e[i]))}));var p=a.concat(o).concat(r).concat(s),l=Object.keys(e).concat(Object.keys(n)).filter((function(e){return-1===p.indexOf(e)}));return i.forEach(l,u),t}},function(e,n,t){"use strict";function i(e){this.message=e}i.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},i.prototype.__CANCEL__=!0,e.exports=i},function(e,n,t){"use strict";var i=t(423).Buffer;e.exports=function(e){if(e.length>=255)throw new TypeError("Alphabet too long");for(var n=new Uint8Array(256),t=0;t<n.length;t++)n[t]=255;for(var a=0;a<e.length;a++){var o=e.charAt(a),r=o.charCodeAt(0);if(255!==n[r])throw new TypeError(o+" is ambiguous");n[r]=a}var s=e.length,c=e.charAt(0),u=Math.log(s)/Math.log(256),p=Math.log(256)/Math.log(s);function l(e){if("string"!=typeof e)throw new TypeError("Expected String");if(0===e.length)return i.alloc(0);var t=0;if(" "!==e[t]){for(var a=0,o=0;e[t]===c;)a++,t++;for(var r=(e.length-t)*u+1>>>0,p=new Uint8Array(r);e[t];){var l=n[e.charCodeAt(t)];if(255===l)return;for(var f=0,d=r-1;(0!==l||f<o)&&-1!==d;d--,f++)l+=s*p[d]>>>0,p[d]=l%256>>>0,l=l/256>>>0;if(0!==l)throw new Error("Non-zero carry");o=f,t++}if(" "!==e[t]){for(var m=r-o;m!==r&&0===p[m];)m++;var h=i.allocUnsafe(a+(r-m));h.fill(0,0,a);for(var v=a;m!==r;)h[v++]=p[m++];return h}}}return{encode:function(n){if((Array.isArray(n)||n instanceof Uint8Array)&&(n=i.from(n)),!i.isBuffer(n))throw new TypeError("Expected Buffer");if(0===n.length)return"";for(var t=0,a=0,o=0,r=n.length;o!==r&&0===n[o];)o++,t++;for(var u=(r-o)*p+1>>>0,l=new Uint8Array(u);o!==r;){for(var f=n[o],d=0,m=u-1;(0!==f||d<a)&&-1!==m;m--,d++)f+=256*l[m]>>>0,l[m]=f%s>>>0,f=f/s>>>0;if(0!==f)throw new Error("Non-zero carry");a=d,o++}for(var h=u-a;h!==u&&0===l[h];)h++;for(var v=c.repeat(t);h<u;++h)v+=e.charAt(l[h]);return v},decodeUnsafe:l,decode:function(e){var n=l(e);if(n)return n;throw new Error("Non-base"+s+" character")}}}},function(e,n){e.exports=require("buffer")},function(e,n,t){"use strict";const i=t(428);(n=e.exports=o).encode=function(e,n){const t=r(e);return o(t.name,Buffer.from(t.encode(n)))},n.decode=function(e){Buffer.isBuffer(e)&&(e=e.toString());const n=e.substring(0,1);"string"==typeof(e=e.substring(1,e.length))&&(e=Buffer.from(e));const t=r(n);return Buffer.from(t.decode(e.toString()))},n.isEncoded=function(e){Buffer.isBuffer(e)&&(e=e.toString());if("[object String]"!==Object.prototype.toString.call(e))return!1;const n=e.substring(0,1);try{return r(n).name}catch(e){return!1}},n.names=Object.freeze(Object.keys(i.names)),n.codes=Object.freeze(Object.keys(i.codes));const a=new Error("Unsupported encoding");function o(e,n){if(!n)throw new Error("requires an encoded buffer");const t=r(e),i=Buffer.from(t.code);return function(e,n){r(e).decode(n.toString())}(t.name,n),Buffer.concat([i,n])}function r(e){let n;if(i.names[e])n=i.names[e];else{if(!i.codes[e])throw a;n=i.codes[e]}if(!n.isImplemented())throw new Error("Base "+e+" is not implemented yet");return n}},function(e,n,t){"use strict";const i=t(433),a=t(127),o=t(64),r=t(90),s=t(128),c=t(191),u=Symbol.for("nodejs.util.inspect.custom"),p=c.proto((function(e){if(!(this instanceof p))return new p(e);if(null==e&&(e=""),e instanceof Buffer)this.buffer=i.fromBuffer(e);else if("string"==typeof e||e instanceof String){if(e.length>0&&"/"!==e.charAt(0))throw new Error(`multiaddr "${e}" must start with a "/"`);this.buffer=i.fromString(e)}else{if(!(e.buffer&&e.protos&&e.protoCodes))throw new Error("addr must be a string, Buffer, or another Multiaddr");this.buffer=i.fromBuffer(e.buffer)}}),{className:"Multiaddr",symbolName:"@multiformats/js-multiaddr/multiaddr"});p.prototype.toString=function(){return i.bufferToString(this.buffer)},p.prototype.toJSON=p.prototype.toString,p.prototype.toOptions=function(){const e={},n=this.toString().split("/");return e.family="ip4"===n[1]?"ipv4":"ipv6",e.host=n[2],e.transport=n[3],e.port=parseInt(n[4]),e},p.prototype[u]=function(){return"<Multiaddr "+this.buffer.toString("hex")+" - "+i.bufferToString(this.buffer)+">"},p.prototype.inspect=function(){return"<Multiaddr "+this.buffer.toString("hex")+" - "+i.bufferToString(this.buffer)+">"},p.prototype.protos=function(){return this.protoCodes().map(e=>Object.assign({},a(e)))},p.prototype.protoCodes=function(){const e=[],n=this.buffer;let t=0;for(;t<n.length;){const r=o.decode(n,t),s=o.decode.bytes,c=a(r);t+=i.sizeForAddr(c,n.slice(t+s))+s,e.push(r)}return e},p.prototype.protoNames=function(){return this.protos().map(e=>e.name)},p.prototype.tuples=function(){return i.bufferToTuples(this.buffer)},p.prototype.stringTuples=function(){const e=i.bufferToTuples(this.buffer);return i.tuplesToStringTuples(e)},p.prototype.encapsulate=function(e){return e=p(e),p(this.toString()+e.toString())},p.prototype.decapsulate=function(e){e=e.toString();const n=this.toString(),t=n.lastIndexOf(e);if(t<0)throw new Error("Address "+this+" does not contain subaddress: "+e);return p(n.slice(0,t))},p.prototype.decapsulateCode=function(e){const n=this.tuples();for(let t=n.length-1;t>=0;t--)if(n[t][0]===e)return p(i.tuplesToBuffer(n.slice(0,t)));return this},p.prototype.getPeerId=function(){let e=null;try{e=this.stringTuples().filter(e=>{if(e[0]===a.names.ipfs.code)return!0}).pop()[1],e=r.encode(new s(e).multihash)}catch(n){e=null}return e},p.prototype.getPath=function(){let e=null;try{e=this.stringTuples().filter(e=>{if(a(e[0]).path)return!0})[0][1]}catch(n){e=null}return e},p.prototype.equals=function(e){return this.buffer.equals(e.buffer)},p.prototype.nodeAddress=function(){const e=this.protoCodes(),n=this.protoNames(),t=this.toString().split("/").slice(1);if(t.length<4)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6}/{address}/{tcp, udp}/{port}".');if(4!==e[0]&&41!==e[0]&&54!==e[0]&&55!==e[0])throw new Error(`no protocol with name: "'${n[0]}'". Must have a valid family name: "{ip4, ip6, dns4, dns6}".`);if("tcp"!==t[2]&&"udp"!==t[2])throw new Error(`no protocol with name: "'${n[1]}'". Must have a valid transport protocol: "{tcp, udp}".`);return{family:41===e[0]||55===e[0]?6:4,address:t[1],port:parseInt(t[3])}},p.fromNodeAddress=function(e,n){if(!e)throw new Error("requires node address object");if(!n)throw new Error("requires transport protocol");const t="IPv6"===e.family?"ip6":"ip4";return p("/"+[t,e.address,n,e.port].join("/"))},p.prototype.isThinWaistAddress=function(e){const n=(e||this).protos();return 2===n.length&&((4===n[0].code||41===n[0].code)&&(6===n[1].code||273===n[1].code))},p.protocols=a,p.isName=function(e){return!!p.isMultiaddr(e)&&e.protos().some(e=>e.resolvable)},p.resolve=function(e){return p.isMultiaddr(e)&&p.isName(e)?Promise.reject(new Error("not implemented yet")):Promise.reject(Error("not a valid name"))},e.exports=p},function(e,n,t){"use strict";const i=t(64);function a(e){return parseInt(e.toString("hex"),16)}function o(e){let n=e.toString(16);return n.length%2==1&&(n="0"+n),Buffer.from(n,"hex")}e.exports={numberToBuffer:o,bufferToNumber:a,varintBufferEncode:function(e){return Buffer.from(i.encode(a(e)))},varintBufferDecode:function(e){return o(i.decode(e))},varintEncode:function(e){return Buffer.from(i.encode(e))}}},function(e,n,t){"use strict";e.exports=function(e,{className:n,symbolName:t}){const i=Symbol.for(t),a={[n]:class extends e{constructor(...e){super(...e),Object.defineProperty(this,i,{value:!0})}get[Symbol.toStringTag](){return n}}}[n];return a[`is${n}`]=e=>!(!e||!e[i]),a},e.exports.proto=function(e,{className:n,symbolName:t,withoutNew:i}){const a=Symbol.for(t),o={[n]:function(...n){if(i&&!(this instanceof o))return new o(...n);const t=e.call(this,...n)||this;return t&&!t[a]&&Object.defineProperty(t,a,{value:!0}),t}}[n];return o.prototype=Object.create(e.prototype),o.prototype.constructor=o,Object.defineProperty(o.prototype,Symbol.toStringTag,{get:()=>n}),o[`is${n}`]=e=>!(!e||!e[a]),o}},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n,t){if(!n)throw new Error("ipfsPinHash value is required for changing the pin policy of a pin");if(!c.default.cid(n))throw new Error("ipfsPinHash value is an invalid IPFS CID");if(!t)throw new Error("no metadata object provided");(0,s.validateMetadata)(t);var i="".concat(r.baseUrl,"/pinning/hashMetadata"),l={ipfsPinHash:n};t.name&&(l.name=t.name);t.keyvalues&&(l.keyvalues=t.keyvalues);return new Promise((function(n,t){o.default.put(i,l,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&t(new Error("unknown server response while changing metadata for hash: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,u.handleError)(e);t(n)}))}))};var a=i(t(30));t(69),t(23),t(34),t(14),t(31),t(24),t(33),t(11),t(35),t(32),t(8);var o=i(t(43)),r=t(40),s=t(44),c=i(t(72)),u=t(45);function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){var i=t(447),a=t(89),o=t(130),r=t(123),s=t(124),c=t(125).parse,u=t(194),p=t(449),l=t(452),f=t(456);function d(e){if(!(this instanceof d))return new d;for(var n in this._overheadLength=0,this._valueLength=0,this._valuesToMeasure=[],i.call(this),e=e||{})this[n]=e[n]}e.exports=d,a.inherits(d,i),d.LINE_BREAK="\r\n",d.DEFAULT_CONTENT_TYPE="application/octet-stream",d.prototype.append=function(e,n,t){"string"==typeof(t=t||{})&&(t={filename:t});var o=i.prototype.append.bind(this);if("number"==typeof n&&(n=""+n),a.isArray(n))this._error(new Error("Arrays are not supported."));else{var r=this._multiPartHeader(e,n,t),s=this._multiPartFooter();o(r),o(n),o(s),this._trackLength(r,n,t)}},d.prototype._trackLength=function(e,n,t){var i=0;null!=t.knownLength?i+=+t.knownLength:Buffer.isBuffer(n)?i=n.length:"string"==typeof n&&(i=Buffer.byteLength(n)),this._valueLength+=i,this._overheadLength+=Buffer.byteLength(e)+d.LINE_BREAK.length,n&&(n.path||n.readable&&n.hasOwnProperty("httpVersion"))&&(t.knownLength||this._valuesToMeasure.push(n))},d.prototype._lengthRetriever=function(e,n){e.hasOwnProperty("fd")?null!=e.end&&e.end!=1/0&&null!=e.start?n(null,e.end+1-(e.start?e.start:0)):u.stat(e.path,(function(t,i){var a;t?n(t):(a=i.size-(e.start?e.start:0),n(null,a))})):e.hasOwnProperty("httpVersion")?n(null,+e.headers["content-length"]):e.hasOwnProperty("httpModule")?(e.on("response",(function(t){e.pause(),n(null,+t.headers["content-length"])})),e.resume()):n("Unknown stream")},d.prototype._multiPartHeader=function(e,n,t){if("string"==typeof t.header)return t.header;var i,a=this._getContentDisposition(n,t),o=this._getContentType(n,t),r="",s={"Content-Disposition":["form-data",'name="'+e+'"'].concat(a||[]),"Content-Type":[].concat(o||[])};for(var c in"object"==typeof t.header&&f(s,t.header),s)s.hasOwnProperty(c)&&null!=(i=s[c])&&(Array.isArray(i)||(i=[i]),i.length&&(r+=c+": "+i.join("; ")+d.LINE_BREAK));return"--"+this.getBoundary()+d.LINE_BREAK+r+d.LINE_BREAK},d.prototype._getContentDisposition=function(e,n){var t,i;return"string"==typeof n.filepath?t=o.normalize(n.filepath).replace(/\\/g,"/"):n.filename||e.name||e.path?t=o.basename(n.filename||e.name||e.path):e.readable&&e.hasOwnProperty("httpVersion")&&(t=o.basename(e.client._httpMessage.path||"")),t&&(i='filename="'+t+'"'),i},d.prototype._getContentType=function(e,n){var t=n.contentType;return!t&&e.name&&(t=p.lookup(e.name)),!t&&e.path&&(t=p.lookup(e.path)),!t&&e.readable&&e.hasOwnProperty("httpVersion")&&(t=e.headers["content-type"]),t||!n.filepath&&!n.filename||(t=p.lookup(n.filepath||n.filename)),t||"object"!=typeof e||(t=d.DEFAULT_CONTENT_TYPE),t},d.prototype._multiPartFooter=function(){return function(e){var n=d.LINE_BREAK;0===this._streams.length&&(n+=this._lastBoundary()),e(n)}.bind(this)},d.prototype._lastBoundary=function(){return"--"+this.getBoundary()+"--"+d.LINE_BREAK},d.prototype.getHeaders=function(e){var n,t={"content-type":"multipart/form-data; boundary="+this.getBoundary()};for(n in e)e.hasOwnProperty(n)&&(t[n.toLowerCase()]=e[n]);return t},d.prototype.getBoundary=function(){return this._boundary||this._generateBoundary(),this._boundary},d.prototype.getBuffer=function(){for(var e=new Buffer.alloc(0),n=this.getBoundary(),t=0,i=this._streams.length;t<i;t++)"function"!=typeof this._streams[t]&&(e=Buffer.isBuffer(this._streams[t])?Buffer.concat([e,this._streams[t]]):Buffer.concat([e,Buffer.from(this._streams[t])]),"string"==typeof this._streams[t]&&this._streams[t].substring(2,n.length+2)===n||(e=Buffer.concat([e,Buffer.from(d.LINE_BREAK)])));return Buffer.concat([e,Buffer.from(this._lastBoundary())])},d.prototype._generateBoundary=function(){for(var e="--------------------------",n=0;n<24;n++)e+=Math.floor(10*Math.random()).toString(16);this._boundary=e},d.prototype.getLengthSync=function(){var e=this._overheadLength+this._valueLength;return this._streams.length&&(e+=this._lastBoundary().length),this.hasKnownLength()||this._error(new Error("Cannot calculate proper length in synchronous way.")),e},d.prototype.hasKnownLength=function(){var e=!0;return this._valuesToMeasure.length&&(e=!1),e},d.prototype.getLength=function(e){var n=this._overheadLength+this._valueLength;this._streams.length&&(n+=this._lastBoundary().length),this._valuesToMeasure.length?l.parallel(this._valuesToMeasure,this._lengthRetriever,(function(t,i){t?e(t):(i.forEach((function(e){n+=e})),e(null,n))})):process.nextTick(e.bind(this,null,n))},d.prototype.submit=function(e,n){var t,i,a={method:"post"};return"string"==typeof e?(e=c(e),i=f({port:e.port,path:e.pathname,host:e.hostname,protocol:e.protocol},a)):(i=f(e,a)).port||(i.port="https:"==i.protocol?443:80),i.headers=this.getHeaders(e.headers),t="https:"==i.protocol?s.request(i):r.request(i),this.getLength(function(e,i){e?this._error(e):(t.setHeader("Content-Length",i),this.pipe(t),n&&(t.on("error",n),t.on("response",n.bind(this,null))))}.bind(this)),t},d.prototype._error=function(e){this.error||(this.error=e,this.pause(),this.emit("error",e))},d.prototype.toString=function(){return"[object FormData]"}},function(e,n){e.exports=require("fs")},function(e,n,t){var i=t(196),a=t(197);e.exports=function(e,n,t,o){var r=t.keyedList?t.keyedList[t.index]:t.index;t.jobs[r]=function(e,n,t,a){var o;o=2==e.length?e(t,i(a)):e(t,n,i(a));return o}(n,r,e[r],(function(e,n){r in t.jobs&&(delete t.jobs[r],e?a(t):t.results[r]=n,o(e,t.results))}))}},function(e,n,t){var i=t(454);e.exports=function(e){var n=!1;return i((function(){n=!0})),function(t,a){n?e(t,a):i((function(){e(t,a)}))}}},function(e,n){function t(e){"function"==typeof this.jobs[e]&&this.jobs[e]()}e.exports=function(e){Object.keys(e.jobs).forEach(t.bind(e)),e.jobs={}}},function(e,n){e.exports=function(e,n){var t=!Array.isArray(e),i={index:0,keyedList:t||n?Object.keys(e):null,jobs:{},results:t?{}:[],size:t?Object.keys(e).length:e.length};n&&i.keyedList.sort(t?n:function(t,i){return n(e[t],e[i])});return i}},function(e,n,t){var i=t(197),a=t(196);e.exports=function(e){if(!Object.keys(this.jobs).length)return;this.index=this.size,i(this),a(e)(null,this.results)}},function(e,n,t){var i=t(195),a=t(198),o=t(199);function r(e,n){return e<n?-1:e>n?1:0}e.exports=function(e,n,t,r){var s=a(e,t);return i(e,n,s,(function t(a,o){a?r(a,o):(s.index++,s.index<(s.keyedList||e).length?i(e,n,s,t):r(null,s.results))})),o.bind(s,r)},e.exports.ascending=r,e.exports.descending=function(e,n){return-1*r(e,n)}},function(e,n,t){"use strict";t(8);var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n,t){return l.apply(this,arguments)},n.normalizePath=p;var a=i(t(457)),o=i(t(459));t(24),t(157),t(150),t(11);var r=i(t(193)),s=t(129),c=i(t(194)),u=i(t(130));function p(e){var n=u.default.normalize(e).split(u.default.sep).filter((function(e){return e.length>0&&".."!==e})),t=n;return n.length>1&&(t=n.slice(n.length-2)),u.default.join.apply(null,t)}function l(){return(l=(0,o.default)(a.default.mark((function e(n,t,i){var o,l,f,d;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,c.default.promises.stat(t);case 3:if(!e.sent.isFile()){e.next=9;break}return o=c.default.createReadStream(t),(l=new r.default).append("file",o,{filename:u.default.basename(t)}),e.abrupt("return",(0,s.uploadToIPFS)(n,l,i));case 9:return e.next=11,c.default.promises.readdir(t);case 11:return f=e.sent,d=new r.default,f.forEach((function(e){var n=u.default.join(t,e);d.append("file",c.default.createReadStream(n),{filepath:p(n)})})),e.abrupt("return",(0,s.uploadToIPFS)(n,d,i));case 17:throw e.prev=17,e.t0=e.catch(0),console.log(e.t0),e.t0;case 21:case"end":return e.stop()}}),e,null,[[0,17]])})))).apply(this,arguments)}},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n,t){var i=n;if("object"!==(0,o.default)(n))throw new Error("body must be a valid JSON object");t&&(i={pinataContent:n},t.pinataMetadata&&((0,c.validateMetadata)(t.pinataMetadata),i.pinataMetadata=t.pinataMetadata),t.pinataOptions&&((0,c.validatePinataOptions)(t.pinataOptions),i.pinataOptions=t.pinataOptions));var l="".concat(s.baseUrl,"/pinning/pinJSONToIPFS");return new Promise((function(n,t){r.default.post(l,i,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,c.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&t(new Error("unknown server response while pinning JSON to IPFS: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,u.handleError)(e);t(n)}))}))},t(23),t(34),t(14),t(31),t(24),t(33),t(11),t(35),t(32),t(8);var a=i(t(30)),o=i(t(67)),r=i(t(43)),s=t(40),c=t(44),u=t(45);function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){var t="".concat(r.baseUrl,"/pinning/pinJobs");n&&(t=(0,c.default)(t,n));return new Promise((function(n,i){o.default.get(t,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&i(new Error("unknown server response while attempting to retrieve pin jobs: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,u.handleError)(e);i(n)}))}))};var a=i(t(30));t(23),t(34),t(14),t(31),t(24),t(33),t(11),t(35),t(32),t(8);var o=i(t(43)),r=t(40),s=t(44),c=i(t(204)),u=t(45);function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){"use strict";t(8);var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){if(!e)throw new Error("no baseUrl provided");if(!n)return e;var t=e,i=!1;function o(e){i?t="".concat(t,"&").concat(e):(i=!0,t="".concat(t,"?").concat(e))}if(n){if(n.sort){if("ASC"!==n.sort&&"DESC"!==n.sort)throw new Error("Unknown sort value: ".concat(n.sort," provided"));o("sort=".concat(n.sort))}if(n.status){if("searching"!==n.status&&"expired"!==n.status&&"over_free_limit"!==n.status&&"over_max_size"!==n.status&&"invalid_object"!==n.status&&"bad_host_node"!==n.status)throw new Error("Unknown status value: ".concat(n.status," provided"));o("status=".concat(n.status))}if(n.ipfs_pin_hash){if(!a.default.cid(n.ipfs_pin_hash))throw new Error("Invalid IPFS hash: ".concat(n.ipfs_pin_hash));o("ipfs_pin_hash=".concat(n.ipfs_pin_hash))}if(n.limit){if(!(Number.isInteger(n.limit)&&n.limit>0&&n.limit<100))throw new Error("Invalid limit: ".concat(n.limit,". Valid limits are 1-100"));o("limit=".concat(n.limit))}if(n.offset){if(!(Number.isInteger(n.offset)&&n.offset>0))throw new Error("Invalid offset: ".concat(n.offset,". Please provide a positive integer for the offset"));o("offset=".concat(n.offset))}}return t},t(151),t(102),t(99);var a=i(t(72));e.exports=n.default},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){if(!n)throw new Error("hashToUnpin value is required for removing a pin from Pinata");if(!c.default.cid(n))throw new Error("".concat(n," is an invalid IPFS CID"));var t="".concat(r.baseUrl,"/pinning/unpin/").concat(n);return new Promise((function(n,i){o.default.delete(t,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&i(new Error("unknown server response while removing pin from IPFS: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,u.handleError)(e);i(n)}))}))};var a=i(t(30));t(23),t(34),t(14),t(31),t(24),t(33),t(11),t(35),t(32),t(8);var o=i(t(43)),r=t(40),s=t(44),c=i(t(72)),u=t(45);function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){var n="".concat(r.baseUrl,"/data/testAuthentication");return new Promise((function(t,i){o.default.get(n,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?u(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):u(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&i(new Error("unknown server response while authenticating: ".concat(e))),t({authenticated:!0})})).catch((function(e){var n=(0,c.handleError)(e);i(n)}))}))};var a=i(t(30));t(23),t(34),t(14),t(31),t(24),t(33),t(11),t(35),t(32),t(8);var o=i(t(43)),r=t(40),s=t(44),c=t(45);function u(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){"use strict";t(8);var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){if(!e)throw new Error("no baseUrl provided");var t="?",i="";if(n){if(n.includeCount&&(t+="includeCount=".concat(n.includeCount,"&")),n.hashContains){if("string"!=typeof n.hashContains)throw new Error("hashContains value is not a string");t+="hashContains=".concat(n.hashContains,"&")}if(n.pinStart&&(t+="pinStart=".concat(o(n.pinStart),"&")),n.pinEnd&&(t+="pinEnd=".concat(o(n.pinEnd),"&")),n.unpinStart&&(t+="unpinStart=".concat(o(n.unpinStart),"&")),n.unpinEnd&&(t+="unpinEnd=".concat(o(n.unpinEnd),"&")),n.pinSizeMin){if(isNaN(n.pinSizeMin)||n.pinSizeMin<0)throw new Error("Please make sure the pinSizeMin is a valid positive integer");t+="pinSizeMin=".concat(n.pinSizeMin,"&")}if(n.pinSizeMax){if(isNaN(n.pinSizeMax)||n.pinSizeMax<0)throw new Error("Please make sure the pinSizeMax is a valid positive integer");t+="pinSizeMax=".concat(n.pinSizeMax,"&")}if(n.status){if("all"!==n.status&&"pinned"!==n.status&&"unpinned"!==n.status)throw new Error("status value must be either: all, pinned, or unpinned");t+="status=".concat(n.status,"&")}if(n.pageLimit){if(isNaN(n.pageLimit)||n.pageLimit<=0||n.pageLimit>1e3)throw new Error("Please make sure the pageLimit is a valid integer between 1-1000");t+="pageLimit=".concat(parseInt(n.pageLimit),"&")}if(n.pageOffset){if(isNaN(n.pageOffset)||n.pageOffset<=0)throw new Error("Please make sure the pageOffset is a positive integer");t+="pageOffset=".concat(parseInt(n.pageOffset),"&")}if(n.metadata){if("object"!==(0,a.default)(n.metadata))throw new Error("metadata value must be an object");if(n.metadata.name&&(i="metadata[name]=".concat(n.metadata.name,"&")),n.metadata.keyvalues){if(i+="metadata[keyvalues]=","object"!==(0,a.default)(n.metadata.keyvalues))throw new Error("metadata keyvalues must be an object");var r={};Object.entries(n.metadata.keyvalues).forEach((function(e){var n=e[0],t=e[1];if("object"!==(0,a.default)(t))throw new Error("keyValue: ".concat(n," is not an object"));if(!t||!t.value||!t.op)throw new Error("keyValue: ".concat(n," must have both value and op attributes"));if("string"!=typeof t.value&&"boolean"!=typeof t.value&&"number"!=typeof t.value)throw new Error("Metadata keyvalue values must be strings, booleans, or numbers");switch(t.op){case"gt":case"gte":case"lt":case"lte":case"ne":case"eq":r[n]={value:t.value,op:t.op};break;case"between":if(!t.secondValue)throw new Error("Because between op code was passed in, keyValue: ".concat(e[0]," must have both also include a secondValue"));if("string"!=typeof t.secondValue&&"boolean"!=typeof t.secondValue&&"number"!=typeof t.secondValue)throw new Error("Metadata keyvalue secondValue must be a string, boolean, or number");r[n]={value:t.value,op:t.op,secondValue:t.secondValue};break;case"notBetween":if(!t.secondValue)throw new Error("Because notBetween op code was passed in, keyValue: ".concat(e[0]," must have both also include a secondValue"));if("string"!=typeof t.secondValue&&"boolean"!=typeof t.secondValue&&"number"!=typeof t.secondValue)throw new Error("Metadata keyvalue secondValue must be a string, boolean, or number");r[n]={value:t.value,op:t.op,secondValue:t.secondValue};break;case"like":case"notLike":case"iLike":case"notILike":case"regexp":case"iRegexp":r[n]={value:t.value,op:t.op};break;default:throw new Error("keyValue op: ".concat(t.op," is not a valid op code"))}})),i+="".concat(JSON.stringify(r))}}}return"".concat(e).concat(t).concat(i)};var a=i(t(67));function o(e){var n=new Date(Date.parse(e));try{if(n.toISOString()===e)return e;throw new Error("dates must be in valid ISO_8601 format")}catch(e){throw new Error("dates must be in valid ISO_8601 format")}}t(147),t(69),t(11),t(120),e.exports=n.default},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){var n="".concat(r.baseUrl,"/data/userPinnedDataTotal");return new Promise((function(t,i){o.default.get(n,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?u(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):u(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&i(new Error("unknown server response while attempting to retrieve pinned data total: ".concat(e))),t(e.data)})).catch((function(e){var n=(0,c.handleError)(e);i(n)}))}))};var a=i(t(30));t(23),t(34),t(14),t(31),t(24),t(33),t(11),t(35),t(32),t(8);var o=i(t(43)),r=t(40),s=t(44),c=t(45);function u(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){e.exports=t(210)},function(e,n,t){"use strict";t(8),t(11),t(14);var i=t(13);Object.defineProperty(n,"__esModule",{value:!0});var a={};n.default=void 0;var o=i(t(213)),r=i(t(214)),s=i(t(30)),c=i(t(67));t(215);var u=i(t(174)),p=i(t(192)),l=i(t(129)),f=i(t(201)),d=i(t(202)),m=i(t(203)),h=i(t(205)),v=i(t(206)),x=i(t(131)),b=i(t(460)),g=i(t(208)),y=t(461);Object.keys(y).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(a,e)||e in n&&n[e]===y[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return y[e]}}))}));var k=t(462);Object.keys(k).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(a,e)||e in n&&n[e]===k[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return k[e]}}))}));var w=function(){function e(n,t){(0,o.default)(this,e),(0,s.default)(this,"config",void 0),this.config=function(e,n){var t={};return"string"==typeof e&&"string"==typeof n&&(t.pinataApiKey=e,t.pinataSecretApiKey=n),"object"===(0,c.default)(e)&&(t=function(e){var n={};return e.pinataApiKey&&(n.pinataApiKey=e.pinataApiKey),e.pinataSecretApiKey&&(n.pinataSecretApiKey=e.pinataSecretApiKey),e.pinataJWTKey&&(n.pinataJWTKey=e.pinataJWTKey),n}(e)),t}(n,t)}return(0,r.default)(e,[{key:"pinByHash",value:function(e,n){return(0,u.default)(this.config,e,n)}},{key:"hashMetadata",value:function(e,n){return(0,p.default)(this.config,e,n)}},{key:"pinFileToIPFS",value:function(e,n){return(0,l.default)(this.config,e,n)}},{key:"pinFromFS",value:function(e,n){return(0,f.default)(this.config,e,n)}},{key:"pinJSONToIPFS",value:function(e,n){return(0,d.default)(this.config,e,n)}},{key:"pinJobs",value:function(e){return(0,m.default)(this.config,e)}},{key:"unpin",value:function(e){return(0,h.default)(this.config,e)}},{key:"pinList",value:function(e){return(0,x.default)(this.config,e)}},{key:"getFilesByCount",value:function(e,n){return(0,b.default)(this.config,e,n)}},{key:"testAuthentication",value:function(){return(0,v.default)(this.config)}},{key:"userPinnedDataTotal",value:function(){return(0,g.default)(this.config)}}]),e}();e.exports=w;var S=w;n.default=S},function(e,n,t){e.exports=t(65)("native-function-to-string",Function.toString)},function(e,n,t){var i=t(4),a=t(74),o=t(5)("species");e.exports=function(e){var n;return a(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!a(n.prototype)||(n=void 0),i(n)&&null===(n=n[o])&&(n=void 0)),void 0===n?Array:n}},function(e,n){e.exports=function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n){function t(e,n){for(var t=0;t<n.length;t++){var i=n[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}e.exports=function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n,t){"use strict";t(8),Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var i=void(global&&global._babelPolyfill||t(216));n.default=i,e.exports=n.default},function(e,n,t){"use strict";if(t(217),t(392),t(393),global._babelPolyfill)throw new Error("only one instance of babel-polyfill is allowed");global._babelPolyfill=!0;function i(e,n,t){e[n]||Object.defineProperty(e,n,{writable:!0,configurable:!0,value:t})}i(String.prototype,"padLeft","".padStart),i(String.prototype,"padRight","".padEnd),"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach((function(e){[][e]&&i(Array,e,Function.call.bind([][e]))}))},function(e,n,t){t(31),t(219),t(8),t(32),t(33),t(220),t(14),t(221),t(222),t(223),t(224),t(225),t(226),t(227),t(228),t(229),t(230),t(23),t(231),t(69),t(232),t(233),t(234),t(99),t(235),t(236),t(237),t(238),t(102),t(239),t(240),t(241),t(242),t(243),t(244),t(245),t(246),t(247),t(248),t(249),t(250),t(251),t(252),t(253),t(254),t(255),t(256),t(257),t(258),t(259),t(260),t(261),t(262),t(263),t(264),t(265),t(266),t(267),t(268),t(269),t(270),t(271),t(272),t(273),t(274),t(275),t(276),t(277),t(278),t(279),t(280),t(281),t(282),t(283),t(284),t(285),t(147),t(287),t(288),t(148),t(290),t(291),t(292),t(150),t(151),t(11),t(293),t(24),t(294),t(295),t(296),t(297),t(298),t(299),t(300),t(301),t(302),t(303),t(304),t(113),t(305),t(155),t(306),t(156),t(307),t(308),t(309),t(157),t(34),t(160),t(162),t(163),t(310),t(311),t(312),t(313),t(314),t(315),t(316),t(317),t(318),t(319),t(320),t(321),t(322),t(323),t(324),t(325),t(326),t(327),t(328),t(329),t(330),t(331),t(332),t(333),t(334),t(335),t(336),t(337),t(338),t(339),t(340),t(341),t(342),t(343),t(344),t(169),t(345),t(35),t(346),t(120),t(347),t(348),t(349),t(350),t(351),t(352),t(353),t(354),t(355),t(356),t(357),t(358),t(359),t(360),t(361),t(362),t(363),t(364),t(365),t(366),t(367),t(368),t(369),t(370),t(371),t(372),t(373),t(374),t(375),t(376),t(377),t(378),t(379),t(380),t(381),t(382),t(383),t(384),t(385),t(386),t(387),t(388),t(389),t(390),t(391),e.exports=t(25)},function(e,n,t){var i=t(51),a=t(76),o=t(68);e.exports=function(e){var n=i(e),t=a.f;if(t)for(var r,s=t(e),c=o.f,u=0;s.length>u;)c.call(e,r=s[u++])&&n.push(r);return n}},function(e,n,t){var i=t(0);i(i.S,"Object",{create:t(53)})},function(e,n,t){var i=t(10),a=t(22);t(39)("getPrototypeOf",(function(){return function(e){return a(i(e))}}))},function(e,n,t){t(39)("getOwnPropertyNames",(function(){return t(136).f}))},function(e,n,t){var i=t(4),a=t(47).onFreeze;t(39)("freeze",(function(e){return function(n){return e&&i(n)?e(a(n)):n}}))},function(e,n,t){var i=t(4),a=t(47).onFreeze;t(39)("seal",(function(e){return function(n){return e&&i(n)?e(a(n)):n}}))},function(e,n,t){var i=t(4),a=t(47).onFreeze;t(39)("preventExtensions",(function(e){return function(n){return e&&i(n)?e(a(n)):n}}))},function(e,n,t){var i=t(4);t(39)("isFrozen",(function(e){return function(n){return!i(n)||!!e&&e(n)}}))},function(e,n,t){var i=t(4);t(39)("isSealed",(function(e){return function(n){return!i(n)||!!e&&e(n)}}))},function(e,n,t){var i=t(4);t(39)("isExtensible",(function(e){return function(n){return!!i(n)&&(!e||e(n))}}))},function(e,n,t){var i=t(0);i(i.S+i.F,"Object",{assign:t(137)})},function(e,n,t){var i=t(0);i(i.S,"Object",{is:t(138)})},function(e,n,t){var i=t(0);i(i.S,"Object",{setPrototypeOf:t(97).set})},function(e,n,t){var i=t(0);i(i.P,"Function",{bind:t(139)})},function(e,n,t){"use strict";var i=t(4),a=t(22),o=t(5)("hasInstance"),r=Function.prototype;o in r||t(9).f(r,o,{value:function(e){if("function"!=typeof this||!i(e))return!1;if(!i(this.prototype))return e instanceof this;for(;e=a(e);)if(this.prototype===e)return!0;return!1}})},function(e,n,t){var i=t(0),a=t(141);i(i.G+i.F*(parseInt!=a),{parseInt:a})},function(e,n,t){var i=t(0),a=t(142);i(i.G+i.F*(parseFloat!=a),{parseFloat:a})},function(e,n,t){"use strict";var i=t(0),a=t(28),o=t(143),r=t(101),s=1..toFixed,c=Math.floor,u=[0,0,0,0,0,0],p="Number.toFixed: incorrect invocation!",l=function(e,n){for(var t=-1,i=n;++t<6;)i+=e*u[t],u[t]=i%1e7,i=c(i/1e7)},f=function(e){for(var n=6,t=0;--n>=0;)t+=u[n],u[n]=c(t/e),t=t%e*1e7},d=function(){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==u[e]){var t=String(u[e]);n=""===n?t:n+r.call("0",7-t.length)+t}return n},m=function(e,n,t){return 0===n?t:n%2==1?m(e,n-1,t*e):m(e*e,n/2,t)};i(i.P+i.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!t(3)((function(){s.call({})}))),"Number",{toFixed:function(e){var n,t,i,s,c=o(this,p),u=a(e),h="",v="0";if(u<0||u>20)throw RangeError(p);if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(h="-",c=-c),c>1e-21)if(t=(n=function(e){for(var n=0,t=e;t>=4096;)n+=12,t/=4096;for(;t>=2;)n+=1,t/=2;return n}(c*m(2,69,1))-69)<0?c*m(2,-n,1):c/m(2,n,1),t*=4503599627370496,(n=52-n)>0){for(l(0,t),i=u;i>=7;)l(1e7,0),i-=7;for(l(m(10,i,1),0),i=n-1;i>=23;)f(1<<23),i-=23;f(1<<i),l(1,1),f(2),v=d()}else l(0,t),l(1<<-n,0),v=d()+r.call("0",u);return v=u>0?h+((s=v.length)<=u?"0."+r.call("0",u-s)+v:v.slice(0,s-u)+"."+v.slice(s-u)):h+v}})},function(e,n,t){"use strict";var i=t(0),a=t(3),o=t(143),r=1..toPrecision;i(i.P+i.F*(a((function(){return"1"!==r.call(1,void 0)}))||!a((function(){r.call({})}))),"Number",{toPrecision:function(e){var n=o(this,"Number#toPrecision: incorrect invocation!");return void 0===e?r.call(n):r.call(n,e)}})},function(e,n,t){var i=t(0);i(i.S,"Number",{EPSILON:Math.pow(2,-52)})},function(e,n,t){var i=t(0),a=t(2).isFinite;i(i.S,"Number",{isFinite:function(e){return"number"==typeof e&&a(e)}})},function(e,n,t){var i=t(0);i(i.S,"Number",{isNaN:function(e){return e!=e}})},function(e,n,t){var i=t(0),a=t(144),o=Math.abs;i(i.S,"Number",{isSafeInteger:function(e){return a(e)&&o(e)<=9007199254740991}})},function(e,n,t){var i=t(0);i(i.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(e,n,t){var i=t(0);i(i.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(e,n,t){var i=t(0),a=t(142);i(i.S+i.F*(Number.parseFloat!=a),"Number",{parseFloat:a})},function(e,n,t){var i=t(0),a=t(141);i(i.S+i.F*(Number.parseInt!=a),"Number",{parseInt:a})},function(e,n,t){var i=t(0),a=t(145),o=Math.sqrt,r=Math.acosh;i(i.S+i.F*!(r&&710==Math.floor(r(Number.MAX_VALUE))&&r(1/0)==1/0),"Math",{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Math.log(e)+Math.LN2:a(e-1+o(e-1)*o(e+1))}})},function(e,n,t){var i=t(0),a=Math.asinh;i(i.S+i.F*!(a&&1/a(0)>0),"Math",{asinh:function e(n){return isFinite(n=+n)&&0!=n?n<0?-e(-n):Math.log(n+Math.sqrt(n*n+1)):n}})},function(e,n,t){var i=t(0),a=Math.atanh;i(i.S+i.F*!(a&&1/a(-0)<0),"Math",{atanh:function(e){return 0==(e=+e)?e:Math.log((1+e)/(1-e))/2}})},function(e,n,t){var i=t(0),a=t(103);i(i.S,"Math",{cbrt:function(e){return a(e=+e)*Math.pow(Math.abs(e),1/3)}})},function(e,n,t){var i=t(0);i(i.S,"Math",{clz32:function(e){return(e>>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},function(e,n,t){var i=t(0),a=Math.exp;i(i.S,"Math",{cosh:function(e){return(a(e=+e)+a(-e))/2}})},function(e,n,t){var i=t(0),a=t(104);i(i.S+i.F*(a!=Math.expm1),"Math",{expm1:a})},function(e,n,t){var i=t(0);i(i.S,"Math",{fround:t(146)})},function(e,n,t){var i=t(0),a=Math.abs;i(i.S,"Math",{hypot:function(e,n){for(var t,i,o=0,r=0,s=arguments.length,c=0;r<s;)c<(t=a(arguments[r++]))?(o=o*(i=c/t)*i+1,c=t):o+=t>0?(i=t/c)*i:t;return c===1/0?1/0:c*Math.sqrt(o)}})},function(e,n,t){var i=t(0),a=Math.imul;i(i.S+i.F*t(3)((function(){return-5!=a(4294967295,5)||2!=a.length})),"Math",{imul:function(e,n){var t=+e,i=+n,a=65535&t,o=65535&i;return 0|a*o+((65535&t>>>16)*o+a*(65535&i>>>16)<<16>>>0)}})},function(e,n,t){var i=t(0);i(i.S,"Math",{log10:function(e){return Math.log(e)*Math.LOG10E}})},function(e,n,t){var i=t(0);i(i.S,"Math",{log1p:t(145)})},function(e,n,t){var i=t(0);i(i.S,"Math",{log2:function(e){return Math.log(e)/Math.LN2}})},function(e,n,t){var i=t(0);i(i.S,"Math",{sign:t(103)})},function(e,n,t){var i=t(0),a=t(104),o=Math.exp;i(i.S+i.F*t(3)((function(){return-2e-17!=!Math.sinh(-2e-17)})),"Math",{sinh:function(e){return Math.abs(e=+e)<1?(a(e)-a(-e))/2:(o(e-1)-o(-e-1))*(Math.E/2)}})},function(e,n,t){var i=t(0),a=t(104),o=Math.exp;i(i.S,"Math",{tanh:function(e){var n=a(e=+e),t=a(-e);return n==1/0?1:t==1/0?-1:(n-t)/(o(e)+o(-e))}})},function(e,n,t){var i=t(0);i(i.S,"Math",{trunc:function(e){return(e>0?Math.floor:Math.ceil)(e)}})},function(e,n,t){var i=t(0),a=t(52),o=String.fromCharCode,r=String.fromCodePoint;i(i.S+i.F*(!!r&&1!=r.length),"String",{fromCodePoint:function(e){for(var n,t=[],i=arguments.length,r=0;i>r;){if(n=+arguments[r++],a(n,1114111)!==n)throw RangeError(n+" is not a valid code point");t.push(n<65536?o(n):o(55296+((n-=65536)>>10),n%1024+56320))}return t.join("")}})},function(e,n,t){var i=t(0),a=t(20),o=t(6);i(i.S,"String",{raw:function(e){for(var n=a(e.raw),t=o(n.length),i=arguments.length,r=[],s=0;t>s;)r.push(String(n[s++])),s<i&&r.push(String(arguments[s]));return r.join("")}})},function(e,n,t){"use strict";t(62)("trim",(function(e){return function(){return e(this,3)}}))},function(e,n,t){"use strict";var i=t(77)(!0);t(105)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,n=this._t,t=this._i;return t>=n.length?{value:void 0,done:!0}:(e=i(n,t),this._i+=e.length,{value:e,done:!1})}))},function(e,n,t){"use strict";var i=t(0),a=t(77)(!1);i(i.P,"String",{codePointAt:function(e){return a(this,e)}})},function(e,n,t){"use strict";var i=t(0),a=t(6),o=t(107),r="".endsWith;i(i.P+i.F*t(108)("endsWith"),"String",{endsWith:function(e){var n=o(this,e,"endsWith"),t=arguments.length>1?arguments[1]:void 0,i=a(n.length),s=void 0===t?i:Math.min(a(t),i),c=String(e);return r?r.call(n,c,s):n.slice(s-c.length,s)===c}})},function(e,n,t){"use strict";var i=t(0),a=t(107);i(i.P+i.F*t(108)("includes"),"String",{includes:function(e){return!!~a(this,e,"includes").indexOf(e,arguments.length>1?arguments[1]:void 0)}})},function(e,n,t){var i=t(0);i(i.P,"String",{repeat:t(101)})},function(e,n,t){"use strict";var i=t(0),a=t(6),o=t(107),r="".startsWith;i(i.P+i.F*t(108)("startsWith"),"String",{startsWith:function(e){var n=o(this,e,"startsWith"),t=a(Math.min(arguments.length>1?arguments[1]:void 0,n.length)),i=String(e);return r?r.call(n,i,t):n.slice(t,t+i.length)===i}})},function(e,n,t){"use strict";t(18)("anchor",(function(e){return function(n){return e(this,"a","name",n)}}))},function(e,n,t){"use strict";t(18)("big",(function(e){return function(){return e(this,"big","","")}}))},function(e,n,t){"use strict";t(18)("blink",(function(e){return function(){return e(this,"blink","","")}}))},function(e,n,t){"use strict";t(18)("bold",(function(e){return function(){return e(this,"b","","")}}))},function(e,n,t){"use strict";t(18)("fixed",(function(e){return function(){return e(this,"tt","","")}}))},function(e,n,t){"use strict";t(18)("fontcolor",(function(e){return function(n){return e(this,"font","color",n)}}))},function(e,n,t){"use strict";t(18)("fontsize",(function(e){return function(n){return e(this,"font","size",n)}}))},function(e,n,t){"use strict";t(18)("italics",(function(e){return function(){return e(this,"i","","")}}))},function(e,n,t){"use strict";t(18)("link",(function(e){return function(n){return e(this,"a","href",n)}}))},function(e,n,t){"use strict";t(18)("small",(function(e){return function(){return e(this,"small","","")}}))},function(e,n,t){"use strict";t(18)("strike",(function(e){return function(){return e(this,"strike","","")}}))},function(e,n,t){"use strict";t(18)("sub",(function(e){return function(){return e(this,"sub","","")}}))},function(e,n,t){"use strict";t(18)("sup",(function(e){return function(){return e(this,"sup","","")}}))},function(e,n,t){var i=t(0);i(i.S,"Date",{now:function(){return(new Date).getTime()}})},function(e,n,t){"use strict";var i=t(0),a=t(10),o=t(36);i(i.P+i.F*t(3)((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})),"Date",{toJSON:function(e){var n=a(this),t=o(n);return"number"!=typeof t||isFinite(t)?n.toISOString():null}})},function(e,n,t){"use strict";var i=t(3),a=Date.prototype.getTime,o=Date.prototype.toISOString,r=function(e){return e>9?e:"0"+e};e.exports=i((function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))}))||!i((function(){o.call(new Date(NaN))}))?function(){if(!isFinite(a.call(this)))throw RangeError("Invalid time value");var e=this,n=e.getUTCFullYear(),t=e.getUTCMilliseconds(),i=n<0?"-":n>9999?"+":"";return i+("00000"+Math.abs(n)).slice(i?-6:-4)+"-"+r(e.getUTCMonth()+1)+"-"+r(e.getUTCDate())+"T"+r(e.getUTCHours())+":"+r(e.getUTCMinutes())+":"+r(e.getUTCSeconds())+"."+(t>99?t:"0"+r(t))+"Z"}:o},function(e,n,t){var i=Date.prototype,a=i.toString,o=i.getTime;new Date(NaN)+""!="Invalid Date"&&t(17)(i,"toString",(function(){var e=o.call(this);return e==e?a.call(this):"Invalid Date"}))},function(e,n,t){var i=t(5)("toPrimitive"),a=Date.prototype;i in a||t(16)(a,i,t(289))},function(e,n,t){"use strict";var i=t(1),a=t(36);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return a(i(this),"number"!=e)}},function(e,n,t){"use strict";var i=t(26),a=t(0),o=t(10),r=t(149),s=t(109),c=t(6),u=t(110),p=t(111);a(a.S+a.F*!t(79)((function(e){Array.from(e)})),"Array",{from:function(e){var n,t,a,l,f=o(e),d="function"==typeof this?this:Array,m=arguments.length,h=m>1?arguments[1]:void 0,v=void 0!==h,x=0,b=p(f);if(v&&(h=i(h,m>2?arguments[2]:void 0,2)),null==b||d==Array&&s(b))for(t=new d(n=c(f.length));n>x;x++)u(t,x,v?h(f[x],x):f[x]);else for(l=b.call(f),t=new d;!(a=l.next()).done;x++)u(t,x,v?r(l,h,[a.value,x],!0):a.value);return t.length=x,t}})},function(e,n,t){"use strict";var i=t(0),a=t(110);i(i.S+i.F*t(3)((function(){function e(){}return!(Array.of.call(e)instanceof e)})),"Array",{of:function(){for(var e=0,n=arguments.length,t=new("function"==typeof this?this:Array)(n);n>e;)a(t,e,arguments[e++]);return t.length=n,t}})},function(e,n,t){"use strict";var i=t(0),a=t(20),o=[].join;i(i.P+i.F*(t(66)!=Object||!t(29)(o)),"Array",{join:function(e){return o.call(a(this),void 0===e?",":e)}})},function(e,n,t){"use strict";var i=t(0),a=t(37)(1);i(i.P+i.F*!t(29)([].map,!0),"Array",{map:function(e){return a(this,e,arguments[1])}})},function(e,n,t){"use strict";var i=t(0),a=t(37)(3);i(i.P+i.F*!t(29)([].some,!0),"Array",{some:function(e){return a(this,e,arguments[1])}})},function(e,n,t){"use strict";var i=t(0),a=t(37)(4);i(i.P+i.F*!t(29)([].every,!0),"Array",{every:function(e){return a(this,e,arguments[1])}})},function(e,n,t){"use strict";var i=t(0),a=t(152);i(i.P+i.F*!t(29)([].reduce,!0),"Array",{reduce:function(e){return a(this,e,arguments.length,arguments[1],!1)}})},function(e,n,t){"use strict";var i=t(0),a=t(152);i(i.P+i.F*!t(29)([].reduceRight,!0),"Array",{reduceRight:function(e){return a(this,e,arguments.length,arguments[1],!0)}})},function(e,n,t){"use strict";var i=t(0),a=t(75)(!1),o=[].indexOf,r=!!o&&1/[1].indexOf(1,-0)<0;i(i.P+i.F*(r||!t(29)(o)),"Array",{indexOf:function(e){return r?o.apply(this,arguments)||0:a(this,e,arguments[1])}})},function(e,n,t){"use strict";var i=t(0),a=t(20),o=t(28),r=t(6),s=[].lastIndexOf,c=!!s&&1/[1].lastIndexOf(1,-0)<0;i(i.P+i.F*(c||!t(29)(s)),"Array",{lastIndexOf:function(e){if(c)return s.apply(this,arguments)||0;var n=a(this),t=r(n.length),i=t-1;for(arguments.length>1&&(i=Math.min(i,o(arguments[1]))),i<0&&(i=t+i);i>=0;i--)if(i in n&&n[i]===e)return i||0;return-1}})},function(e,n,t){var i=t(0);i(i.P,"Array",{copyWithin:t(153)}),t(48)("copyWithin")},function(e,n,t){var i=t(0);i(i.P,"Array",{fill:t(112)}),t(48)("fill")},function(e,n,t){"use strict";var i=t(0),a=t(37)(5),o=!0;"find"in[]&&Array(1).find((function(){o=!1})),i(i.P+i.F*o,"Array",{find:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),t(48)("find")},function(e,n,t){"use strict";var i=t(0),a=t(37)(6),o="findIndex",r=!0;o in[]&&Array(1)[o]((function(){r=!1})),i(i.P+i.F*r,"Array",{findIndex:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),t(48)(o)},function(e,n,t){t(55)("Array")},function(e,n,t){var i=t(2),a=t(100),o=t(9).f,r=t(54).f,s=t(78),c=t(70),u=i.RegExp,p=u,l=u.prototype,f=/a/g,d=/a/g,m=new u(f)!==f;if(t(7)&&(!m||t(3)((function(){return d[t(5)("match")]=!1,u(f)!=f||u(d)==d||"/a/i"!=u(f,"i")})))){u=function(e,n){var t=this instanceof u,i=s(e),o=void 0===n;return!t&&i&&e.constructor===u&&o?e:a(m?new p(i&&!o?e.source:e,n):p((i=e instanceof u)?e.source:e,i&&o?c.call(e):n),t?this:l,u)};for(var h=function(e){e in u||o(u,e,{configurable:!0,get:function(){return p[e]},set:function(n){p[e]=n}})},v=r(p),x=0;v.length>x;)h(v[x++]);l.constructor=u,u.prototype=l,t(17)(i,"RegExp",u)}t(55)("RegExp")},function(e,n,t){"use strict";t(156);var i=t(1),a=t(70),o=t(7),r=/./.toString,s=function(e){t(17)(RegExp.prototype,"toString",e,!0)};t(3)((function(){return"/a/b"!=r.call({source:"a",flags:"b"})}))?s((function(){var e=i(this);return"/".concat(e.source,"/","flags"in e?e.flags:!o&&e instanceof RegExp?a.call(e):void 0)})):"toString"!=r.name&&s((function(){return r.call(this)}))},function(e,n,t){"use strict";var i=t(1),a=t(6),o=t(115),r=t(80);t(81)("match",1,(function(e,n,t,s){return[function(t){var i=e(this),a=null==t?void 0:t[n];return void 0!==a?a.call(t,i):new RegExp(t)[n](String(i))},function(e){var n=s(t,e,this);if(n.done)return n.value;var c=i(e),u=String(this);if(!c.global)return r(c,u);var p=c.unicode;c.lastIndex=0;for(var l,f=[],d=0;null!==(l=r(c,u));){var m=String(l[0]);f[d]=m,""===m&&(c.lastIndex=o(u,a(c.lastIndex),p)),d++}return 0===d?null:f}]}))},function(e,n,t){"use strict";var i=t(1),a=t(10),o=t(6),r=t(28),s=t(115),c=t(80),u=Math.max,p=Math.min,l=Math.floor,f=/\$([$&`']|\d\d?|<[^>]*>)/g,d=/\$([$&`']|\d\d?)/g;t(81)("replace",2,(function(e,n,t,m){return[function(i,a){var o=e(this),r=null==i?void 0:i[n];return void 0!==r?r.call(i,o,a):t.call(String(o),i,a)},function(e,n){var a=m(t,e,this,n);if(a.done)return a.value;var l=i(e),f=String(this),d="function"==typeof n;d||(n=String(n));var v=l.global;if(v){var x=l.unicode;l.lastIndex=0}for(var b=[];;){var g=c(l,f);if(null===g)break;if(b.push(g),!v)break;""===String(g[0])&&(l.lastIndex=s(f,o(l.lastIndex),x))}for(var y,k="",w=0,S=0;S<b.length;S++){g=b[S];for(var j=String(g[0]),_=u(p(r(g.index),f.length),0),O=[],E=1;E<g.length;E++)O.push(void 0===(y=g[E])?y:String(y));var P=g.groups;if(d){var C=[j].concat(O,_,f);void 0!==P&&C.push(P);var A=String(n.apply(void 0,C))}else A=h(j,f,_,O,P,n);_>=w&&(k+=f.slice(w,_)+A,w=_+j.length)}return k+f.slice(w)}];function h(e,n,i,o,r,s){var c=i+e.length,u=o.length,p=d;return void 0!==r&&(r=a(r),p=f),t.call(s,p,(function(t,a){var s;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,i);case"'":return n.slice(c);case"<":s=r[a.slice(1,-1)];break;default:var p=+a;if(0===p)return t;if(p>u){var f=l(p/10);return 0===f?t:f<=u?void 0===o[f-1]?a.charAt(1):o[f-1]+a.charAt(1):t}s=o[p-1]}return void 0===s?"":s}))}}))},function(e,n,t){"use strict";var i=t(1),a=t(138),o=t(80);t(81)("search",1,(function(e,n,t,r){return[function(t){var i=e(this),a=null==t?void 0:t[n];return void 0!==a?a.call(t,i):new RegExp(t)[n](String(i))},function(e){var n=r(t,e,this);if(n.done)return n.value;var s=i(e),c=String(this),u=s.lastIndex;a(u,0)||(s.lastIndex=0);var p=o(s,c);return a(s.lastIndex,u)||(s.lastIndex=u),null===p?-1:p.index}]}))},function(e,n,t){"use strict";var i=t(164),a=t(59);t(83)("WeakSet",(function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(e){return i.def(a(this,"WeakSet"),e,!0)}},i,!1,!0)},function(e,n,t){"use strict";var i=t(0),a=t(84),o=t(119),r=t(1),s=t(52),c=t(6),u=t(4),p=t(2).ArrayBuffer,l=t(71),f=o.ArrayBuffer,d=o.DataView,m=a.ABV&&p.isView,h=f.prototype.slice,v=a.VIEW;i(i.G+i.W+i.F*(p!==f),{ArrayBuffer:f}),i(i.S+i.F*!a.CONSTR,"ArrayBuffer",{isView:function(e){return m&&m(e)||u(e)&&v in e}}),i(i.P+i.U+i.F*t(3)((function(){return!new f(2).slice(1,void 0).byteLength})),"ArrayBuffer",{slice:function(e,n){if(void 0!==h&&void 0===n)return h.call(r(this),e);for(var t=r(this).byteLength,i=s(e,t),a=s(void 0===n?t:n,t),o=new(l(this,f))(c(a-i)),u=new d(this),p=new d(o),m=0;i<a;)p.setUint8(m++,u.getUint8(i++));return o}}),t(55)("ArrayBuffer")},function(e,n,t){var i=t(0);i(i.G+i.W+i.F*!t(84).ABV,{DataView:t(119).DataView})},function(e,n,t){t(41)("Int8",1,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Uint8",1,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Uint8",1,(function(e){return function(n,t,i){return e(this,n,t,i)}}),!0)},function(e,n,t){t(41)("Int16",2,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Uint16",2,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Int32",4,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Uint32",4,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Float32",4,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Float64",8,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){var i=t(0),a=t(12),o=t(1),r=(t(2).Reflect||{}).apply,s=Function.apply;i(i.S+i.F*!t(3)((function(){r((function(){}))})),"Reflect",{apply:function(e,n,t){var i=a(e),c=o(t);return r?r(i,n,c):s.call(i,n,c)}})},function(e,n,t){var i=t(0),a=t(53),o=t(12),r=t(1),s=t(4),c=t(3),u=t(139),p=(t(2).Reflect||{}).construct,l=c((function(){function e(){}return!(p((function(){}),[],e)instanceof e)})),f=!c((function(){p((function(){}))}));i(i.S+i.F*(l||f),"Reflect",{construct:function(e,n){o(e),r(n);var t=arguments.length<3?e:o(arguments[2]);if(f&&!l)return p(e,n,t);if(e==t){switch(n.length){case 0:return new e;case 1:return new e(n[0]);case 2:return new e(n[0],n[1]);case 3:return new e(n[0],n[1],n[2]);case 4:return new e(n[0],n[1],n[2],n[3])}var i=[null];return i.push.apply(i,n),new(u.apply(e,i))}var c=t.prototype,d=a(s(c)?c:Object.prototype),m=Function.apply.call(e,d,n);return s(m)?m:d}})},function(e,n,t){var i=t(9),a=t(0),o=t(1),r=t(36);a(a.S+a.F*t(3)((function(){Reflect.defineProperty(i.f({},1,{value:1}),1,{value:2})})),"Reflect",{defineProperty:function(e,n,t){o(e),n=r(n,!0),o(t);try{return i.f(e,n,t),!0}catch(e){return!1}}})},function(e,n,t){var i=t(0),a=t(21).f,o=t(1);i(i.S,"Reflect",{deleteProperty:function(e,n){var t=a(o(e),n);return!(t&&!t.configurable)&&delete e[n]}})},function(e,n,t){"use strict";var i=t(0),a=t(1),o=function(e){this._t=a(e),this._i=0;var n,t=this._k=[];for(n in e)t.push(n)};t(106)(o,"Object",(function(){var e,n=this._k;do{if(this._i>=n.length)return{value:void 0,done:!0}}while(!((e=n[this._i++])in this._t));return{value:e,done:!1}})),i(i.S,"Reflect",{enumerate:function(e){return new o(e)}})},function(e,n,t){var i=t(21),a=t(22),o=t(19),r=t(0),s=t(4),c=t(1);r(r.S,"Reflect",{get:function e(n,t){var r,u,p=arguments.length<3?n:arguments[2];return c(n)===p?n[t]:(r=i.f(n,t))?o(r,"value")?r.value:void 0!==r.get?r.get.call(p):void 0:s(u=a(n))?e(u,t,p):void 0}})},function(e,n,t){var i=t(21),a=t(0),o=t(1);a(a.S,"Reflect",{getOwnPropertyDescriptor:function(e,n){return i.f(o(e),n)}})},function(e,n,t){var i=t(0),a=t(22),o=t(1);i(i.S,"Reflect",{getPrototypeOf:function(e){return a(o(e))}})},function(e,n,t){var i=t(0);i(i.S,"Reflect",{has:function(e,n){return n in e}})},function(e,n,t){var i=t(0),a=t(1),o=Object.isExtensible;i(i.S,"Reflect",{isExtensible:function(e){return a(e),!o||o(e)}})},function(e,n,t){var i=t(0);i(i.S,"Reflect",{ownKeys:t(166)})},function(e,n,t){var i=t(0),a=t(1),o=Object.preventExtensions;i(i.S,"Reflect",{preventExtensions:function(e){a(e);try{return o&&o(e),!0}catch(e){return!1}}})},function(e,n,t){var i=t(9),a=t(21),o=t(22),r=t(19),s=t(0),c=t(49),u=t(1),p=t(4);s(s.S,"Reflect",{set:function e(n,t,s){var l,f,d=arguments.length<4?n:arguments[3],m=a.f(u(n),t);if(!m){if(p(f=o(n)))return e(f,t,s,d);m=c(0)}if(r(m,"value")){if(!1===m.writable||!p(d))return!1;if(l=a.f(d,t)){if(l.get||l.set||!1===l.writable)return!1;l.value=s,i.f(d,t,l)}else i.f(d,t,c(0,s));return!0}return void 0!==m.set&&(m.set.call(d,s),!0)}})},function(e,n,t){var i=t(0),a=t(97);a&&i(i.S,"Reflect",{setPrototypeOf:function(e,n){a.check(e,n);try{return a.set(e,n),!0}catch(e){return!1}}})},function(e,n,t){"use strict";var i=t(0),a=t(75)(!0);i(i.P,"Array",{includes:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),t(48)("includes")},function(e,n,t){"use strict";var i=t(0),a=t(167),o=t(10),r=t(6),s=t(12),c=t(92);i(i.P,"Array",{flatMap:function(e){var n,t,i=o(this);return s(e),n=r(i.length),t=c(i,0),a(t,i,i,n,0,1,e,arguments[1]),t}}),t(48)("flatMap")},function(e,n,t){"use strict";var i=t(0),a=t(167),o=t(10),r=t(6),s=t(28),c=t(92);i(i.P,"Array",{flatten:function(){var e=arguments[0],n=o(this),t=r(n.length),i=c(n,0);return a(i,n,n,t,0,void 0===e?1:s(e)),i}}),t(48)("flatten")},function(e,n,t){"use strict";var i=t(0),a=t(77)(!0);i(i.P,"String",{at:function(e){return a(this,e)}})},function(e,n,t){"use strict";var i=t(0),a=t(168),o=t(82),r=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);i(i.P+i.F*r,"String",{padStart:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0,!0)}})},function(e,n,t){"use strict";var i=t(0),a=t(168),o=t(82),r=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);i(i.P+i.F*r,"String",{padEnd:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0,!1)}})},function(e,n,t){"use strict";t(62)("trimLeft",(function(e){return function(){return e(this,1)}}),"trimStart")},function(e,n,t){"use strict";t(62)("trimRight",(function(e){return function(){return e(this,2)}}),"trimEnd")},function(e,n,t){"use strict";var i=t(0),a=t(38),o=t(6),r=t(78),s=t(70),c=RegExp.prototype,u=function(e,n){this._r=e,this._s=n};t(106)(u,"RegExp String",(function(){var e=this._r.exec(this._s);return{value:e,done:null===e}})),i(i.P,"String",{matchAll:function(e){if(a(this),!r(e))throw TypeError(e+" is not a regexp!");var n=String(this),t="flags"in c?String(e.flags):s.call(e),i=new RegExp(e.source,~t.indexOf("g")?t:"g"+t);return i.lastIndex=o(e.lastIndex),new u(i,n)}})},function(e,n,t){t(95)("observable")},function(e,n,t){var i=t(0),a=t(170)(!1);i(i.S,"Object",{values:function(e){return a(e)}})},function(e,n,t){"use strict";var i=t(0),a=t(10),o=t(12),r=t(9);t(7)&&i(i.P+t(85),"Object",{__defineGetter__:function(e,n){r.f(a(this),e,{get:o(n),enumerable:!0,configurable:!0})}})},function(e,n,t){"use strict";var i=t(0),a=t(10),o=t(12),r=t(9);t(7)&&i(i.P+t(85),"Object",{__defineSetter__:function(e,n){r.f(a(this),e,{set:o(n),enumerable:!0,configurable:!0})}})},function(e,n,t){"use strict";var i=t(0),a=t(10),o=t(36),r=t(22),s=t(21).f;t(7)&&i(i.P+t(85),"Object",{__lookupGetter__:function(e){var n,t=a(this),i=o(e,!0);do{if(n=s(t,i))return n.get}while(t=r(t))}})},function(e,n,t){"use strict";var i=t(0),a=t(10),o=t(36),r=t(22),s=t(21).f;t(7)&&i(i.P+t(85),"Object",{__lookupSetter__:function(e){var n,t=a(this),i=o(e,!0);do{if(n=s(t,i))return n.set}while(t=r(t))}})},function(e,n,t){var i=t(0);i(i.P+i.R,"Map",{toJSON:t(171)("Map")})},function(e,n,t){var i=t(0);i(i.P+i.R,"Set",{toJSON:t(171)("Set")})},function(e,n,t){t(86)("Map")},function(e,n,t){t(86)("Set")},function(e,n,t){t(86)("WeakMap")},function(e,n,t){t(86)("WeakSet")},function(e,n,t){t(87)("Map")},function(e,n,t){t(87)("Set")},function(e,n,t){t(87)("WeakMap")},function(e,n,t){t(87)("WeakSet")},function(e,n,t){var i=t(0);i(i.G,{global:t(2)})},function(e,n,t){var i=t(0);i(i.S,"System",{global:t(2)})},function(e,n,t){var i=t(0),a=t(27);i(i.S,"Error",{isError:function(e){return"Error"===a(e)}})},function(e,n,t){var i=t(0);i(i.S,"Math",{clamp:function(e,n,t){return Math.min(t,Math.max(n,e))}})},function(e,n,t){var i=t(0);i(i.S,"Math",{DEG_PER_RAD:Math.PI/180})},function(e,n,t){var i=t(0),a=180/Math.PI;i(i.S,"Math",{degrees:function(e){return e*a}})},function(e,n,t){var i=t(0),a=t(173),o=t(146);i(i.S,"Math",{fscale:function(e,n,t,i,r){return o(a(e,n,t,i,r))}})},function(e,n,t){var i=t(0);i(i.S,"Math",{iaddh:function(e,n,t,i){var a=e>>>0,o=t>>>0;return(n>>>0)+(i>>>0)+((a&o|(a|o)&~(a+o>>>0))>>>31)|0}})},function(e,n,t){var i=t(0);i(i.S,"Math",{isubh:function(e,n,t,i){var a=e>>>0,o=t>>>0;return(n>>>0)-(i>>>0)-((~a&o|~(a^o)&a-o>>>0)>>>31)|0}})},function(e,n,t){var i=t(0);i(i.S,"Math",{imulh:function(e,n){var t=+e,i=+n,a=65535&t,o=65535&i,r=t>>16,s=i>>16,c=(r*o>>>0)+(a*o>>>16);return r*s+(c>>16)+((a*s>>>0)+(65535&c)>>16)}})},function(e,n,t){var i=t(0);i(i.S,"Math",{RAD_PER_DEG:180/Math.PI})},function(e,n,t){var i=t(0),a=Math.PI/180;i(i.S,"Math",{radians:function(e){return e*a}})},function(e,n,t){var i=t(0);i(i.S,"Math",{scale:t(173)})},function(e,n,t){var i=t(0);i(i.S,"Math",{umulh:function(e,n){var t=+e,i=+n,a=65535&t,o=65535&i,r=t>>>16,s=i>>>16,c=(r*o>>>0)+(a*o>>>16);return r*s+(c>>>16)+((a*s>>>0)+(65535&c)>>>16)}})},function(e,n,t){var i=t(0);i(i.S,"Math",{signbit:function(e){return(e=+e)!=e?e:0==e?1/e==1/0:e>0}})},function(e,n,t){"use strict";var i=t(0),a=t(25),o=t(2),r=t(71),s=t(159);i(i.P+i.R,"Promise",{finally:function(e){var n=r(this,a.Promise||o.Promise),t="function"==typeof e;return this.then(t?function(t){return s(n,e()).then((function(){return t}))}:e,t?function(t){return s(n,e()).then((function(){throw t}))}:e)}})},function(e,n,t){"use strict";var i=t(0),a=t(118),o=t(158);i(i.S,"Promise",{try:function(e){var n=a.f(this),t=o(e);return(t.e?n.reject:n.resolve)(t.v),n.promise}})},function(e,n,t){var i=t(42),a=t(1),o=i.key,r=i.set;i.exp({defineMetadata:function(e,n,t,i){r(e,n,a(t),o(i))}})},function(e,n,t){var i=t(42),a=t(1),o=i.key,r=i.map,s=i.store;i.exp({deleteMetadata:function(e,n){var t=arguments.length<3?void 0:o(arguments[2]),i=r(a(n),t,!1);if(void 0===i||!i.delete(e))return!1;if(i.size)return!0;var c=s.get(n);return c.delete(t),!!c.size||s.delete(n)}})},function(e,n,t){var i=t(42),a=t(1),o=t(22),r=i.has,s=i.get,c=i.key,u=function(e,n,t){if(r(e,n,t))return s(e,n,t);var i=o(n);return null!==i?u(e,i,t):void 0};i.exp({getMetadata:function(e,n){return u(e,a(n),arguments.length<3?void 0:c(arguments[2]))}})},function(e,n,t){var i=t(162),a=t(172),o=t(42),r=t(1),s=t(22),c=o.keys,u=o.key,p=function(e,n){var t=c(e,n),o=s(e);if(null===o)return t;var r=p(o,n);return r.length?t.length?a(new i(t.concat(r))):r:t};o.exp({getMetadataKeys:function(e){return p(r(e),arguments.length<2?void 0:u(arguments[1]))}})},function(e,n,t){var i=t(42),a=t(1),o=i.get,r=i.key;i.exp({getOwnMetadata:function(e,n){return o(e,a(n),arguments.length<3?void 0:r(arguments[2]))}})},function(e,n,t){var i=t(42),a=t(1),o=i.keys,r=i.key;i.exp({getOwnMetadataKeys:function(e){return o(a(e),arguments.length<2?void 0:r(arguments[1]))}})},function(e,n,t){var i=t(42),a=t(1),o=t(22),r=i.has,s=i.key,c=function(e,n,t){if(r(e,n,t))return!0;var i=o(n);return null!==i&&c(e,i,t)};i.exp({hasMetadata:function(e,n){return c(e,a(n),arguments.length<3?void 0:s(arguments[2]))}})},function(e,n,t){var i=t(42),a=t(1),o=i.has,r=i.key;i.exp({hasOwnMetadata:function(e,n){return o(e,a(n),arguments.length<3?void 0:r(arguments[2]))}})},function(e,n,t){var i=t(42),a=t(1),o=t(12),r=i.key,s=i.set;i.exp({metadata:function(e,n){return function(t,i){s(e,n,(void 0!==i?a:o)(t),r(i))}}})},function(e,n,t){var i=t(0),a=t(117)(),o=t(2).process,r="process"==t(27)(o);i(i.G,{asap:function(e){var n=r&&o.domain;a(n?n.bind(e):e)}})},function(e,n,t){"use strict";var i=t(0),a=t(2),o=t(25),r=t(117)(),s=t(5)("observable"),c=t(12),u=t(1),p=t(56),l=t(58),f=t(16),d=t(57),m=d.RETURN,h=function(e){return null==e?void 0:c(e)},v=function(e){var n=e._c;n&&(e._c=void 0,n())},x=function(e){return void 0===e._o},b=function(e){x(e)||(e._o=void 0,v(e))},g=function(e,n){u(e),this._c=void 0,this._o=e,e=new y(this);try{var t=n(e),i=t;null!=t&&("function"==typeof t.unsubscribe?t=function(){i.unsubscribe()}:c(t),this._c=t)}catch(n){return void e.error(n)}x(this)&&v(this)};g.prototype=l({},{unsubscribe:function(){b(this)}});var y=function(e){this._s=e};y.prototype=l({},{next:function(e){var n=this._s;if(!x(n)){var t=n._o;try{var i=h(t.next);if(i)return i.call(t,e)}catch(e){try{b(n)}finally{throw e}}}},error:function(e){var n=this._s;if(x(n))throw e;var t=n._o;n._o=void 0;try{var i=h(t.error);if(!i)throw e;e=i.call(t,e)}catch(e){try{v(n)}finally{throw e}}return v(n),e},complete:function(e){var n=this._s;if(!x(n)){var t=n._o;n._o=void 0;try{var i=h(t.complete);e=i?i.call(t,e):void 0}catch(e){try{v(n)}finally{throw e}}return v(n),e}}});var k=function(e){p(this,k,"Observable","_f")._f=c(e)};l(k.prototype,{subscribe:function(e){return new g(e,this._f)},forEach:function(e){var n=this;return new(o.Promise||a.Promise)((function(t,i){c(e);var a=n.subscribe({next:function(n){try{return e(n)}catch(e){i(e),a.unsubscribe()}},error:i,complete:t})}))}}),l(k,{from:function(e){var n="function"==typeof this?this:k,t=h(u(e)[s]);if(t){var i=u(t.call(e));return i.constructor===n?i:new n((function(e){return i.subscribe(e)}))}return new n((function(n){var t=!1;return r((function(){if(!t){try{if(d(e,!1,(function(e){if(n.next(e),t)return m}))===m)return}catch(e){if(t)throw e;return void n.error(e)}n.complete()}})),function(){t=!0}}))},of:function(){for(var e=0,n=arguments.length,t=new Array(n);e<n;)t[e]=arguments[e++];return new("function"==typeof this?this:k)((function(e){var n=!1;return r((function(){if(!n){for(var i=0;i<t.length;++i)if(e.next(t[i]),n)return;e.complete()}})),function(){n=!0}}))}}),f(k.prototype,s,(function(){return this})),i(i.G,{Observable:k}),t(55)("Observable")},function(e,n,t){var i=t(2),a=t(0),o=t(82),r=[].slice,s=/MSIE .\./.test(o),c=function(e){return function(n,t){var i=arguments.length>2,a=!!i&&r.call(arguments,2);return e(i?function(){("function"==typeof n?n:Function(n)).apply(this,a)}:n,t)}};a(a.G+a.B+a.F*s,{setTimeout:c(i.setTimeout),setInterval:c(i.setInterval)})},function(e,n,t){var i=t(0),a=t(116);i(i.G+i.B,{setImmediate:a.set,clearImmediate:a.clear})},function(e,n,t){for(var i=t(113),a=t(51),o=t(17),r=t(2),s=t(16),c=t(63),u=t(5),p=u("iterator"),l=u("toStringTag"),f=c.Array,d={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},m=a(d),h=0;h<m.length;h++){var v,x=m[h],b=d[x],g=r[x],y=g&&g.prototype;if(y&&(y[p]||s(y,p,f),y[l]||s(y,l,x),c[x]=f,b))for(v in i)y[v]||o(y,v,i[v],!0)}},function(e,n){!function(n){"use strict";var t=Object.prototype,i=t.hasOwnProperty,a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",r=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag",c="object"==typeof e,u=n.regeneratorRuntime;if(u)c&&(e.exports=u);else{(u=n.regeneratorRuntime=c?e.exports:{}).wrap=h;var p={},l={};l[o]=function(){return this};var f=Object.getPrototypeOf,d=f&&f(f(O([])));d&&d!==t&&i.call(d,o)&&(l=d);var m=g.prototype=x.prototype=Object.create(l);b.prototype=m.constructor=g,g.constructor=b,g[s]=b.displayName="GeneratorFunction",u.isGeneratorFunction=function(e){var n="function"==typeof e&&e.constructor;return!!n&&(n===b||"GeneratorFunction"===(n.displayName||n.name))},u.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,g):(e.__proto__=g,s in e||(e[s]="GeneratorFunction")),e.prototype=Object.create(m),e},u.awrap=function(e){return{__await:e}},y(k.prototype),k.prototype[r]=function(){return this},u.AsyncIterator=k,u.async=function(e,n,t,i){var a=new k(h(e,n,t,i));return u.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},y(m),m[s]="Generator",m[o]=function(){return this},m.toString=function(){return"[object Generator]"},u.keys=function(e){var n=[];for(var t in e)n.push(t);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},u.values=O,_.prototype={constructor:_,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!e)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function t(t,i){return r.type="throw",r.arg=e,n.next=t,i&&(n.method="next",n.arg=void 0),!!i}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],r=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var s=i.call(o,"catchLoc"),c=i.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return t(o.catchLoc,!0);if(this.prev<o.finallyLoc)return t(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return t(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return t(o.finallyLoc)}}}},abrupt:function(e,n){for(var t=this.tryEntries.length-1;t>=0;--t){var a=this.tryEntries[t];if(a.tryLoc<=this.prev&&i.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=n&&n<=o.finallyLoc&&(o=null);var r=o?o.completion:{};return r.type=e,r.arg=n,o?(this.method="next",this.next=o.finallyLoc,p):this.complete(r)},complete:function(e,n){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&n&&(this.next=n),p},finish:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),j(t),p}},catch:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.tryLoc===e){var i=t.completion;if("throw"===i.type){var a=i.arg;j(t)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,t){return this.delegate={iterator:O(e),resultName:n,nextLoc:t},"next"===this.method&&(this.arg=void 0),p}}}function h(e,n,t,i){var a=n&&n.prototype instanceof x?n:x,o=Object.create(a.prototype),r=new _(i||[]);return o._invoke=function(e,n,t){var i="suspendedStart";return function(a,o){if("executing"===i)throw new Error("Generator is already running");if("completed"===i){if("throw"===a)throw o;return E()}for(t.method=a,t.arg=o;;){var r=t.delegate;if(r){var s=w(r,t);if(s){if(s===p)continue;return s}}if("next"===t.method)t.sent=t._sent=t.arg;else if("throw"===t.method){if("suspendedStart"===i)throw i="completed",t.arg;t.dispatchException(t.arg)}else"return"===t.method&&t.abrupt("return",t.arg);i="executing";var c=v(e,n,t);if("normal"===c.type){if(i=t.done?"completed":"suspendedYield",c.arg===p)continue;return{value:c.arg,done:t.done}}"throw"===c.type&&(i="completed",t.method="throw",t.arg=c.arg)}}}(e,t,r),o}function v(e,n,t){try{return{type:"normal",arg:e.call(n,t)}}catch(e){return{type:"throw",arg:e}}}function x(){}function b(){}function g(){}function y(e){["next","throw","return"].forEach((function(n){e[n]=function(e){return this._invoke(n,e)}}))}function k(e){function t(n,a,o,r){var s=v(e[n],e,a);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&i.call(u,"__await")?Promise.resolve(u.__await).then((function(e){t("next",e,o,r)}),(function(e){t("throw",e,o,r)})):Promise.resolve(u).then((function(e){c.value=e,o(c)}),r)}r(s.arg)}var a;"object"==typeof n.process&&n.process.domain&&(t=n.process.domain.bind(t)),this._invoke=function(e,n){function i(){return new Promise((function(i,a){t(e,n,i,a)}))}return a=a?a.then(i,i):i()}}function w(e,n){var t=e.iterator[n.method];if(void 0===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=void 0,w(e,n),"throw"===n.method))return p;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var i=v(t,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,p;var a=i.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=void 0),n.delegate=null,p):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function S(e){var n={tryLoc:e[0]};1 in e&&(n.catchLoc=e[1]),2 in e&&(n.finallyLoc=e[2],n.afterLoc=e[3]),this.tryEntries.push(n)}function j(e){var n=e.completion||{};n.type="normal",delete n.arg,e.completion=n}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function O(e){if(e){var n=e[o];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var t=-1,a=function n(){for(;++t<e.length;)if(i.call(e,t))return n.value=e[t],n.done=!1,n;return n.value=void 0,n.done=!0,n};return a.next=a}}return{next:E}}function E(){return{value:void 0,done:!0}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this)},function(e,n,t){t(394),e.exports=t(25).RegExp.escape},function(e,n,t){var i=t(0),a=t(395)(/[\\^$*+?.()|[\]{}]/g,"\\$&");i(i.S,"RegExp",{escape:function(e){return a(e)}})},function(e,n){e.exports=function(e,n){var t=n===Object(n)?function(e){return n[e]}:n;return function(n){return String(n).replace(e,t)}}},function(e,n,t){"use strict";var i=t(15),a=t(175),o=t(397),r=t(184);function s(e){var n=new o(e),t=a(o.prototype.request,n);return i.extend(t,o.prototype,n),i.extend(t,n),t}var c=s(t(177));c.Axios=o,c.create=function(e){return s(r(c.defaults,e))},c.Cancel=t(185),c.CancelToken=t(420),c.isCancel=t(176),c.all=function(e){return Promise.all(e)},c.spread=t(421),c.isAxiosError=t(422),e.exports=c,e.exports.default=c},function(e,n,t){"use strict";var i=t(15),a=t(121),o=t(398),r=t(399),s=t(184);function c(e){this.defaults=e,this.interceptors={request:new o,response:new o}}c.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=s(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var n=[r,void 0],t=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){n.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){n.push(e.fulfilled,e.rejected)}));n.length;)t=t.then(n.shift(),n.shift());return t},c.prototype.getUri=function(e){return e=s(this.defaults,e),a(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},i.forEach(["delete","get","head","options"],(function(e){c.prototype[e]=function(n,t){return this.request(s(t||{},{method:e,url:n,data:(t||{}).data}))}})),i.forEach(["post","put","patch"],(function(e){c.prototype[e]=function(n,t,i){return this.request(s(i||{},{method:e,url:n,data:t}))}})),e.exports=c},function(e,n,t){"use strict";var i=t(15);function a(){this.handlers=[]}a.prototype.use=function(e,n){return this.handlers.push({fulfilled:e,rejected:n}),this.handlers.length-1},a.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},a.prototype.forEach=function(e){i.forEach(this.handlers,(function(n){null!==n&&e(n)}))},e.exports=a},function(e,n,t){"use strict";var i=t(15),a=t(400),o=t(176),r=t(177);function s(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return s(e),e.headers=e.headers||{},e.data=a(e.data,e.headers,e.transformRequest),e.headers=i.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),i.forEach(["delete","get","head","post","put","patch","common"],(function(n){delete e.headers[n]})),(e.adapter||r.adapter)(e).then((function(n){return s(e),n.data=a(n.data,n.headers,e.transformResponse),n}),(function(n){return o(n)||(s(e),n&&n.response&&(n.response.data=a(n.response.data,n.response.headers,e.transformResponse))),Promise.reject(n)}))}},function(e,n,t){"use strict";var i=t(15);e.exports=function(e,n,t){return i.forEach(t,(function(t){e=t(e,n)})),e}},function(e,n,t){"use strict";var i=t(15);e.exports=function(e,n){i.forEach(e,(function(t,i){i!==n&&i.toUpperCase()===n.toUpperCase()&&(e[n]=t,delete e[i])}))}},function(e,n,t){"use strict";var i=t(15),a=t(178),o=t(403),r=t(121),s=t(180),c=t(406),u=t(407),p=t(122);e.exports=function(e){return new Promise((function(n,t){var l=e.data,f=e.headers;i.isFormData(l)&&delete f["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var m=e.auth.username||"",h=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";f.Authorization="Basic "+btoa(m+":"+h)}var v=s(e.baseURL,e.url);if(d.open(e.method.toUpperCase(),r(v,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var i="getAllResponseHeaders"in d?c(d.getAllResponseHeaders()):null,o={data:e.responseType&&"text"!==e.responseType?d.response:d.responseText,status:d.status,statusText:d.statusText,headers:i,config:e,request:d};a(n,t,o),d=null}},d.onabort=function(){d&&(t(p("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){t(p("Network Error",e,null,d)),d=null},d.ontimeout=function(){var n="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(n=e.timeoutErrorMessage),t(p(n,e,"ECONNABORTED",d)),d=null},i.isStandardBrowserEnv()){var x=(e.withCredentials||u(v))&&e.xsrfCookieName?o.read(e.xsrfCookieName):void 0;x&&(f[e.xsrfHeaderName]=x)}if("setRequestHeader"in d&&i.forEach(f,(function(e,n){void 0===l&&"content-type"===n.toLowerCase()?delete f[n]:d.setRequestHeader(n,e)})),i.isUndefined(e.withCredentials)||(d.withCredentials=!!e.withCredentials),e.responseType)try{d.responseType=e.responseType}catch(n){if("json"!==e.responseType)throw n}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){d&&(d.abort(),t(e),d=null)})),l||(l=null),d.send(l)}))}},function(e,n,t){"use strict";var i=t(15);e.exports=i.isStandardBrowserEnv()?{write:function(e,n,t,a,o,r){var s=[];s.push(e+"="+encodeURIComponent(n)),i.isNumber(t)&&s.push("expires="+new Date(t).toGMTString()),i.isString(a)&&s.push("path="+a),i.isString(o)&&s.push("domain="+o),!0===r&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var n=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,n,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,n,t){"use strict";e.exports=function(e,n){return n?e.replace(/\/+$/,"")+"/"+n.replace(/^\/+/,""):e}},function(e,n,t){"use strict";var i=t(15),a=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var n,t,o,r={};return e?(i.forEach(e.split("\n"),(function(e){if(o=e.indexOf(":"),n=i.trim(e.substr(0,o)).toLowerCase(),t=i.trim(e.substr(o+1)),n){if(r[n]&&a.indexOf(n)>=0)return;r[n]="set-cookie"===n?(r[n]?r[n]:[]).concat([t]):r[n]?r[n]+", "+t:t}})),r):r}},function(e,n,t){"use strict";var i=t(15);e.exports=i.isStandardBrowserEnv()?function(){var e,n=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");function a(e){var i=e;return n&&(t.setAttribute("href",i),i=t.href),t.setAttribute("href",i),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return e=a(window.location.href),function(n){var t=i.isString(n)?a(n):n;return t.protocol===e.protocol&&t.host===e.host}}():function(){return!0}},function(e,n,t){"use strict";var i=t(15),a=t(178),o=t(180),r=t(121),s=t(123),c=t(124),u=t(181).http,p=t(181).https,l=t(125),f=t(418),d=t(419),m=t(122),h=t(179),v=/https:?/;e.exports=function(e){return new Promise((function(n,t){var x=function(e){n(e)},b=function(e){t(e)},g=e.data,y=e.headers;if(y["User-Agent"]||y["user-agent"]||(y["User-Agent"]="axios/"+d.version),g&&!i.isStream(g)){if(Buffer.isBuffer(g));else if(i.isArrayBuffer(g))g=Buffer.from(new Uint8Array(g));else{if(!i.isString(g))return b(m("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",e));g=Buffer.from(g,"utf-8")}y["Content-Length"]=g.length}var k=void 0;e.auth&&(k=(e.auth.username||"")+":"+(e.auth.password||""));var w=o(e.baseURL,e.url),S=l.parse(w),j=S.protocol||"http:";if(!k&&S.auth){var _=S.auth.split(":");k=(_[0]||"")+":"+(_[1]||"")}k&&delete y.Authorization;var O=v.test(j),E=O?e.httpsAgent:e.httpAgent,P={path:r(S.path,e.params,e.paramsSerializer).replace(/^\?/,""),method:e.method.toUpperCase(),headers:y,agent:E,agents:{http:e.httpAgent,https:e.httpsAgent},auth:k};e.socketPath?P.socketPath=e.socketPath:(P.hostname=S.hostname,P.port=S.port);var C,A=e.proxy;if(!A&&!1!==A){var M=j.slice(0,-1)+"_proxy",F=process.env[M]||process.env[M.toUpperCase()];if(F){var N=l.parse(F),T=process.env.no_proxy||process.env.NO_PROXY,R=!0;if(T)R=!T.split(",").map((function(e){return e.trim()})).some((function(e){return!!e&&("*"===e||("."===e[0]&&S.hostname.substr(S.hostname.length-e.length)===e||S.hostname===e))}));if(R&&(A={host:N.hostname,port:N.port,protocol:N.protocol},N.auth)){var B=N.auth.split(":");A.auth={username:B[0],password:B[1]}}}}A&&(P.headers.host=S.hostname+(S.port?":"+S.port:""),function e(n,t,i){if(n.hostname=t.host,n.host=t.host,n.port=t.port,n.path=i,t.auth){var a=Buffer.from(t.auth.username+":"+t.auth.password,"utf8").toString("base64");n.headers["Proxy-Authorization"]="Basic "+a}n.beforeRedirect=function(n){n.headers.host=n.host,e(n,t,n.href)}}(P,A,j+"//"+S.hostname+(S.port?":"+S.port:"")+P.path));var I=O&&(!A||v.test(A.protocol));e.transport?C=e.transport:0===e.maxRedirects?C=I?c:s:(e.maxRedirects&&(P.maxRedirects=e.maxRedirects),C=I?p:u),e.maxBodyLength>-1&&(P.maxBodyLength=e.maxBodyLength);var L=C.request(P,(function(n){if(!L.aborted){var t=n,o=n.req||L;if(204!==n.statusCode&&"HEAD"!==o.method&&!1!==e.decompress)switch(n.headers["content-encoding"]){case"gzip":case"compress":case"deflate":t=t.pipe(f.createUnzip()),delete n.headers["content-encoding"]}var r={status:n.statusCode,statusText:n.statusMessage,headers:n.headers,config:e,request:o};if("stream"===e.responseType)r.data=t,a(x,b,r);else{var s=[];t.on("data",(function(n){s.push(n),e.maxContentLength>-1&&Buffer.concat(s).length>e.maxContentLength&&(t.destroy(),b(m("maxContentLength size of "+e.maxContentLength+" exceeded",e,null,o)))})),t.on("error",(function(n){L.aborted||b(h(n,e,null,o))})),t.on("end",(function(){var n=Buffer.concat(s);"arraybuffer"!==e.responseType&&(n=n.toString(e.responseEncoding),e.responseEncoding&&"utf8"!==e.responseEncoding||(n=i.stripBOM(n))),r.data=n,a(x,b,r)}))}}}));L.on("error",(function(n){L.aborted&&"ERR_FR_TOO_MANY_REDIRECTS"!==n.code||b(h(n,e,null,L))})),e.timeout&&L.setTimeout(e.timeout,(function(){L.abort(),b(m("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",L))})),e.cancelToken&&e.cancelToken.promise.then((function(e){L.aborted||(L.abort(),b(e))})),i.isStream(g)?g.on("error",(function(n){b(h(n,e,null,L))})).pipe(L):L.end(g)}))}},function(e,n){e.exports=require("assert")},function(e,n,t){var i;try{i=t(411)("follow-redirects")}catch(e){i=function(){}}e.exports=i},function(e,n,t){"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?e.exports=t(412):e.exports=t(414)},function(e,n,t){n.formatArgs=function(n){if(n[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+n[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const t="color: "+this.color;n.splice(1,0,t,"color: inherit");let i=0,a=0;n[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(i++,"%c"===e&&(a=i))}),n.splice(a,0,t)},n.save=function(e){try{e?n.storage.setItem("debug",e):n.storage.removeItem("debug")}catch(e){}},n.load=function(){let e;try{e=n.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},n.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},n.storage=function(){try{return localStorage}catch(e){}}(),n.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),n.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],n.log=console.debug||console.log||(()=>{}),e.exports=t(182)(n);const{formatters:i}=e.exports;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},function(e,n){var t=1e3,i=6e4,a=36e5,o=24*a;function r(e,n,t){if(!(e<n))return e<1.5*n?Math.floor(e/n)+" "+t:Math.ceil(e/n)+" "+t+"s"}e.exports=function(e,n){n=n||{};var s,c=typeof e;if("string"===c&&e.length>0)return function(e){if((e=String(e)).length>100)return;var n=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!n)return;var r=parseFloat(n[1]);switch((n[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*r;case"days":case"day":case"d":return r*o;case"hours":case"hour":case"hrs":case"hr":case"h":return r*a;case"minutes":case"minute":case"mins":case"min":case"m":return r*i;case"seconds":case"second":case"secs":case"sec":case"s":return r*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===c&&!1===isNaN(e))return n.long?r(s=e,o,"day")||r(s,a,"hour")||r(s,i,"minute")||r(s,t,"second")||s+" ms":function(e){if(e>=o)return Math.round(e/o)+"d";if(e>=a)return Math.round(e/a)+"h";if(e>=i)return Math.round(e/i)+"m";if(e>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,n,t){const i=t(415),a=t(89);n.init=function(e){e.inspectOpts={};const t=Object.keys(n.inspectOpts);for(let i=0;i<t.length;i++)e.inspectOpts[t[i]]=n.inspectOpts[t[i]]},n.log=function(...e){return process.stderr.write(a.format(...e)+"\n")},n.formatArgs=function(t){const{namespace:i,useColors:a}=this;if(a){const n=this.color,a="[3"+(n<8?n:"8;5;"+n),o=` ${a};1m${i} [0m`;t[0]=o+t[0].split("\n").join("\n"+o),t.push(a+"m+"+e.exports.humanize(this.diff)+"[0m")}else t[0]=function(){if(n.inspectOpts.hideDate)return"";return(new Date).toISOString()+" "}()+i+" "+t[0]},n.save=function(e){e?process.env.DEBUG=e:delete process.env.DEBUG},n.load=function(){return process.env.DEBUG},n.useColors=function(){return"colors"in n.inspectOpts?Boolean(n.inspectOpts.colors):i.isatty(process.stderr.fd)},n.destroy=a.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),n.colors=[6,2,3,4,5,1];try{const e=t(416);e&&(e.stderr||e).level>=2&&(n.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}n.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,n)=>{const t=n.substring(6).toLowerCase().replace(/_([a-z])/g,(e,n)=>n.toUpperCase());let i=process.env[n];return i=!!/^(yes|on|true|enabled)$/i.test(i)||!/^(no|off|false|disabled)$/i.test(i)&&("null"===i?null:Number(i)),e[t]=i,e},{}),e.exports=t(182)(n);const{formatters:o}=e.exports;o.o=function(e){return this.inspectOpts.colors=this.useColors,a.inspect(e,this.inspectOpts).split("\n").map(e=>e.trim()).join(" ")},o.O=function(e){return this.inspectOpts.colors=this.useColors,a.inspect(e,this.inspectOpts)}},function(e,n){e.exports=require("tty")},function(e,n,t){"use strict";const i=t(183),a=t(417),o=process.env;let r;function s(e){return function(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}(function(e){if(!1===r)return 0;if(a("color=16m")||a("color=full")||a("color=truecolor"))return 3;if(a("color=256"))return 2;if(e&&!e.isTTY&&!0!==r)return 0;const n=r?1:0;if("win32"===process.platform){const e=i.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in o)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(e=>e in o)||"codeship"===o.CI_NAME?1:n;if("TEAMCITY_VERSION"in o)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(o.TEAMCITY_VERSION)?1:0;if("truecolor"===o.COLORTERM)return 3;if("TERM_PROGRAM"in o){const e=parseInt((o.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(o.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(o.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(o.TERM)||"COLORTERM"in o?1:(o.TERM,n)}(e))}a("no-color")||a("no-colors")||a("color=false")?r=!1:(a("color")||a("colors")||a("color=true")||a("color=always"))&&(r=!0),"FORCE_COLOR"in o&&(r=0===o.FORCE_COLOR.length||0!==parseInt(o.FORCE_COLOR,10)),e.exports={supportsColor:s,stdout:s(process.stdout),stderr:s(process.stderr)}},function(e,n,t){"use strict";e.exports=(e,n)=>{n=n||process.argv;const t=e.startsWith("-")?"":1===e.length?"-":"--",i=n.indexOf(t+e),a=n.indexOf("--");return-1!==i&&(-1===a||i<a)}},function(e,n){e.exports=require("zlib")},function(e){e.exports=JSON.parse('{"_args":[["axios@0.21.1","/Users/polluterofminds/Development/pinata/Pinata-SDK"]],"_from":"axios@0.21.1","_id":"axios@0.21.1","_inBundle":false,"_integrity":"sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==","_location":"/axios","_phantomChildren":{},"_requested":{"type":"version","registry":true,"raw":"axios@0.21.1","name":"axios","escapedName":"axios","rawSpec":"0.21.1","saveSpec":null,"fetchSpec":"0.21.1"},"_requiredBy":["/"],"_resolved":"https://registry.npmjs.org/axios/-/axios-0.21.1.tgz","_spec":"0.21.1","_where":"/Users/polluterofminds/Development/pinata/Pinata-SDK","author":{"name":"Matt Zabriskie"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"bugs":{"url":"https://github.com/axios/axios/issues"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}],"dependencies":{"follow-redirects":"^1.10.0"},"description":"Promise based HTTP client for the browser and node.js","devDependencies":{"bundlesize":"^0.17.0","coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.0.2","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^20.1.0","grunt-karma":"^2.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^1.0.18","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-opera-launcher":"^1.0.0","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.7.0","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^5.2.0","sinon":"^4.5.0","typescript":"^2.8.1","url-search-params":"^0.10.0","webpack":"^1.13.1","webpack-dev-server":"^1.14.1"},"homepage":"https://github.com/axios/axios","jsdelivr":"dist/axios.min.js","keywords":["xhr","http","ajax","promise","node"],"license":"MIT","main":"index.js","name":"axios","repository":{"type":"git","url":"git+https://github.com/axios/axios.git"},"scripts":{"build":"NODE_ENV=production grunt build","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","examples":"node ./examples/server.js","fix":"eslint --fix lib/**/*.js","postversion":"git push && git push --tags","preversion":"npm test","start":"node ./sandbox/server.js","test":"grunt test && bundlesize","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json"},"typings":"./index.d.ts","unpkg":"dist/axios.min.js","version":"0.21.1"}')},function(e,n,t){"use strict";var i=t(185);function a(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var n;this.promise=new Promise((function(e){n=e}));var t=this;e((function(e){t.reason||(t.reason=new i(e),n(t.reason))}))}a.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},a.source=function(){var e;return{token:new a((function(n){e=n})),cancel:e}},e.exports=a},function(e,n,t){"use strict";e.exports=function(e){return function(n){return e.apply(null,n)}}},function(e,n,t){"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}},function(e,n,t){var i=t(187),a=i.Buffer;function o(e,n){for(var t in e)n[t]=e[t]}function r(e,n,t){return a(e,n,t)}a.from&&a.alloc&&a.allocUnsafe&&a.allocUnsafeSlow?e.exports=i:(o(i,n),n.Buffer=r),r.prototype=Object.create(a.prototype),o(a,r),r.from=function(e,n,t){if("number"==typeof e)throw new TypeError("Argument must not be a number");return a(e,n,t)},r.alloc=function(e,n,t){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=a(e);return void 0!==n?"string"==typeof t?i.fill(n,t):i.fill(n):i.fill(0),i},r.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return a(e)},r.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},function(e,n,t){"use strict";n.names=Object.freeze({identity:0,sha1:17,"sha2-256":18,"sha2-512":19,"dbl-sha2-256":86,"sha3-224":23,"sha3-256":22,"sha3-384":21,"sha3-512":20,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,"murmur3-128":34,"murmur3-32":35,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"Skein256-8":45825,"Skein256-16":45826,"Skein256-24":45827,"Skein256-32":45828,"Skein256-40":45829,"Skein256-48":45830,"Skein256-56":45831,"Skein256-64":45832,"Skein256-72":45833,"Skein256-80":45834,"Skein256-88":45835,"Skein256-96":45836,"Skein256-104":45837,"Skein256-112":45838,"Skein256-120":45839,"Skein256-128":45840,"Skein256-136":45841,"Skein256-144":45842,"Skein256-152":45843,"Skein256-160":45844,"Skein256-168":45845,"Skein256-176":45846,"Skein256-184":45847,"Skein256-192":45848,"Skein256-200":45849,"Skein256-208":45850,"Skein256-216":45851,"Skein256-224":45852,"Skein256-232":45853,"Skein256-240":45854,"Skein256-248":45855,"Skein256-256":45856,"Skein512-8":45857,"Skein512-16":45858,"Skein512-24":45859,"Skein512-32":45860,"Skein512-40":45861,"Skein512-48":45862,"Skein512-56":45863,"Skein512-64":45864,"Skein512-72":45865,"Skein512-80":45866,"Skein512-88":45867,"Skein512-96":45868,"Skein512-104":45869,"Skein512-112":45870,"Skein512-120":45871,"Skein512-128":45872,"Skein512-136":45873,"Skein512-144":45874,"Skein512-152":45875,"Skein512-160":45876,"Skein512-168":45877,"Skein512-176":45878,"Skein512-184":45879,"Skein512-192":45880,"Skein512-200":45881,"Skein512-208":45882,"Skein512-216":45883,"Skein512-224":45884,"Skein512-232":45885,"Skein512-240":45886,"Skein512-248":45887,"Skein512-256":45888,"Skein512-264":45889,"Skein512-272":45890,"Skein512-280":45891,"Skein512-288":45892,"Skein512-296":45893,"Skein512-304":45894,"Skein512-312":45895,"Skein512-320":45896,"Skein512-328":45897,"Skein512-336":45898,"Skein512-344":45899,"Skein512-352":45900,"Skein512-360":45901,"Skein512-368":45902,"Skein512-376":45903,"Skein512-384":45904,"Skein512-392":45905,"Skein512-400":45906,"Skein512-408":45907,"Skein512-416":45908,"Skein512-424":45909,"Skein512-432":45910,"Skein512-440":45911,"Skein512-448":45912,"Skein512-456":45913,"Skein512-464":45914,"Skein512-472":45915,"Skein512-480":45916,"Skein512-488":45917,"Skein512-496":45918,"Skein512-504":45919,"Skein512-512":45920,"Skein1024-8":45921,"Skein1024-16":45922,"Skein1024-24":45923,"Skein1024-32":45924,"Skein1024-40":45925,"Skein1024-48":45926,"Skein1024-56":45927,"Skein1024-64":45928,"Skein1024-72":45929,"Skein1024-80":45930,"Skein1024-88":45931,"Skein1024-96":45932,"Skein1024-104":45933,"Skein1024-112":45934,"Skein1024-120":45935,"Skein1024-128":45936,"Skein1024-136":45937,"Skein1024-144":45938,"Skein1024-152":45939,"Skein1024-160":45940,"Skein1024-168":45941,"Skein1024-176":45942,"Skein1024-184":45943,"Skein1024-192":45944,"Skein1024-200":45945,"Skein1024-208":45946,"Skein1024-216":45947,"Skein1024-224":45948,"Skein1024-232":45949,"Skein1024-240":45950,"Skein1024-248":45951,"Skein1024-256":45952,"Skein1024-264":45953,"Skein1024-272":45954,"Skein1024-280":45955,"Skein1024-288":45956,"Skein1024-296":45957,"Skein1024-304":45958,"Skein1024-312":45959,"Skein1024-320":45960,"Skein1024-328":45961,"Skein1024-336":45962,"Skein1024-344":45963,"Skein1024-352":45964,"Skein1024-360":45965,"Skein1024-368":45966,"Skein1024-376":45967,"Skein1024-384":45968,"Skein1024-392":45969,"Skein1024-400":45970,"Skein1024-408":45971,"Skein1024-416":45972,"Skein1024-424":45973,"Skein1024-432":45974,"Skein1024-440":45975,"Skein1024-448":45976,"Skein1024-456":45977,"Skein1024-464":45978,"Skein1024-472":45979,"Skein1024-480":45980,"Skein1024-488":45981,"Skein1024-496":45982,"Skein1024-504":45983,"Skein1024-512":45984,"Skein1024-520":45985,"Skein1024-528":45986,"Skein1024-536":45987,"Skein1024-544":45988,"Skein1024-552":45989,"Skein1024-560":45990,"Skein1024-568":45991,"Skein1024-576":45992,"Skein1024-584":45993,"Skein1024-592":45994,"Skein1024-600":45995,"Skein1024-608":45996,"Skein1024-616":45997,"Skein1024-624":45998,"Skein1024-632":45999,"Skein1024-640":46e3,"Skein1024-648":46001,"Skein1024-656":46002,"Skein1024-664":46003,"Skein1024-672":46004,"Skein1024-680":46005,"Skein1024-688":46006,"Skein1024-696":46007,"Skein1024-704":46008,"Skein1024-712":46009,"Skein1024-720":46010,"Skein1024-728":46011,"Skein1024-736":46012,"Skein1024-744":46013,"Skein1024-752":46014,"Skein1024-760":46015,"Skein1024-768":46016,"Skein1024-776":46017,"Skein1024-784":46018,"Skein1024-792":46019,"Skein1024-800":46020,"Skein1024-808":46021,"Skein1024-816":46022,"Skein1024-824":46023,"Skein1024-832":46024,"Skein1024-840":46025,"Skein1024-848":46026,"Skein1024-856":46027,"Skein1024-864":46028,"Skein1024-872":46029,"Skein1024-880":46030,"Skein1024-888":46031,"Skein1024-896":46032,"Skein1024-904":46033,"Skein1024-912":46034,"Skein1024-920":46035,"Skein1024-928":46036,"Skein1024-936":46037,"Skein1024-944":46038,"Skein1024-952":46039,"Skein1024-960":46040,"Skein1024-968":46041,"Skein1024-976":46042,"Skein1024-984":46043,"Skein1024-992":46044,"Skein1024-1000":46045,"Skein1024-1008":46046,"Skein1024-1016":46047,"Skein1024-1024":46048}),n.codes=Object.freeze({0:"identity",17:"sha1",18:"sha2-256",19:"sha2-512",86:"dbl-sha2-256",23:"sha3-224",22:"sha3-256",21:"sha3-384",20:"sha3-512",24:"shake-128",25:"shake-256",26:"keccak-224",27:"keccak-256",28:"keccak-384",29:"keccak-512",34:"murmur3-128",35:"murmur3-32",45569:"blake2b-8",45570:"blake2b-16",45571:"blake2b-24",45572:"blake2b-32",45573:"blake2b-40",45574:"blake2b-48",45575:"blake2b-56",45576:"blake2b-64",45577:"blake2b-72",45578:"blake2b-80",45579:"blake2b-88",45580:"blake2b-96",45581:"blake2b-104",45582:"blake2b-112",45583:"blake2b-120",45584:"blake2b-128",45585:"blake2b-136",45586:"blake2b-144",45587:"blake2b-152",45588:"blake2b-160",45589:"blake2b-168",45590:"blake2b-176",45591:"blake2b-184",45592:"blake2b-192",45593:"blake2b-200",45594:"blake2b-208",45595:"blake2b-216",45596:"blake2b-224",45597:"blake2b-232",45598:"blake2b-240",45599:"blake2b-248",45600:"blake2b-256",45601:"blake2b-264",45602:"blake2b-272",45603:"blake2b-280",45604:"blake2b-288",45605:"blake2b-296",45606:"blake2b-304",45607:"blake2b-312",45608:"blake2b-320",45609:"blake2b-328",45610:"blake2b-336",45611:"blake2b-344",45612:"blake2b-352",45613:"blake2b-360",45614:"blake2b-368",45615:"blake2b-376",45616:"blake2b-384",45617:"blake2b-392",45618:"blake2b-400",45619:"blake2b-408",45620:"blake2b-416",45621:"blake2b-424",45622:"blake2b-432",45623:"blake2b-440",45624:"blake2b-448",45625:"blake2b-456",45626:"blake2b-464",45627:"blake2b-472",45628:"blake2b-480",45629:"blake2b-488",45630:"blake2b-496",45631:"blake2b-504",45632:"blake2b-512",45633:"blake2s-8",45634:"blake2s-16",45635:"blake2s-24",45636:"blake2s-32",45637:"blake2s-40",45638:"blake2s-48",45639:"blake2s-56",45640:"blake2s-64",45641:"blake2s-72",45642:"blake2s-80",45643:"blake2s-88",45644:"blake2s-96",45645:"blake2s-104",45646:"blake2s-112",45647:"blake2s-120",45648:"blake2s-128",45649:"blake2s-136",45650:"blake2s-144",45651:"blake2s-152",45652:"blake2s-160",45653:"blake2s-168",45654:"blake2s-176",45655:"blake2s-184",45656:"blake2s-192",45657:"blake2s-200",45658:"blake2s-208",45659:"blake2s-216",45660:"blake2s-224",45661:"blake2s-232",45662:"blake2s-240",45663:"blake2s-248",45664:"blake2s-256",45825:"Skein256-8",45826:"Skein256-16",45827:"Skein256-24",45828:"Skein256-32",45829:"Skein256-40",45830:"Skein256-48",45831:"Skein256-56",45832:"Skein256-64",45833:"Skein256-72",45834:"Skein256-80",45835:"Skein256-88",45836:"Skein256-96",45837:"Skein256-104",45838:"Skein256-112",45839:"Skein256-120",45840:"Skein256-128",45841:"Skein256-136",45842:"Skein256-144",45843:"Skein256-152",45844:"Skein256-160",45845:"Skein256-168",45846:"Skein256-176",45847:"Skein256-184",45848:"Skein256-192",45849:"Skein256-200",45850:"Skein256-208",45851:"Skein256-216",45852:"Skein256-224",45853:"Skein256-232",45854:"Skein256-240",45855:"Skein256-248",45856:"Skein256-256",45857:"Skein512-8",45858:"Skein512-16",45859:"Skein512-24",45860:"Skein512-32",45861:"Skein512-40",45862:"Skein512-48",45863:"Skein512-56",45864:"Skein512-64",45865:"Skein512-72",45866:"Skein512-80",45867:"Skein512-88",45868:"Skein512-96",45869:"Skein512-104",45870:"Skein512-112",45871:"Skein512-120",45872:"Skein512-128",45873:"Skein512-136",45874:"Skein512-144",45875:"Skein512-152",45876:"Skein512-160",45877:"Skein512-168",45878:"Skein512-176",45879:"Skein512-184",45880:"Skein512-192",45881:"Skein512-200",45882:"Skein512-208",45883:"Skein512-216",45884:"Skein512-224",45885:"Skein512-232",45886:"Skein512-240",45887:"Skein512-248",45888:"Skein512-256",45889:"Skein512-264",45890:"Skein512-272",45891:"Skein512-280",45892:"Skein512-288",45893:"Skein512-296",45894:"Skein512-304",45895:"Skein512-312",45896:"Skein512-320",45897:"Skein512-328",45898:"Skein512-336",45899:"Skein512-344",45900:"Skein512-352",45901:"Skein512-360",45902:"Skein512-368",45903:"Skein512-376",45904:"Skein512-384",45905:"Skein512-392",45906:"Skein512-400",45907:"Skein512-408",45908:"Skein512-416",45909:"Skein512-424",45910:"Skein512-432",45911:"Skein512-440",45912:"Skein512-448",45913:"Skein512-456",45914:"Skein512-464",45915:"Skein512-472",45916:"Skein512-480",45917:"Skein512-488",45918:"Skein512-496",45919:"Skein512-504",45920:"Skein512-512",45921:"Skein1024-8",45922:"Skein1024-16",45923:"Skein1024-24",45924:"Skein1024-32",45925:"Skein1024-40",45926:"Skein1024-48",45927:"Skein1024-56",45928:"Skein1024-64",45929:"Skein1024-72",45930:"Skein1024-80",45931:"Skein1024-88",45932:"Skein1024-96",45933:"Skein1024-104",45934:"Skein1024-112",45935:"Skein1024-120",45936:"Skein1024-128",45937:"Skein1024-136",45938:"Skein1024-144",45939:"Skein1024-152",45940:"Skein1024-160",45941:"Skein1024-168",45942:"Skein1024-176",45943:"Skein1024-184",45944:"Skein1024-192",45945:"Skein1024-200",45946:"Skein1024-208",45947:"Skein1024-216",45948:"Skein1024-224",45949:"Skein1024-232",45950:"Skein1024-240",45951:"Skein1024-248",45952:"Skein1024-256",45953:"Skein1024-264",45954:"Skein1024-272",45955:"Skein1024-280",45956:"Skein1024-288",45957:"Skein1024-296",45958:"Skein1024-304",45959:"Skein1024-312",45960:"Skein1024-320",45961:"Skein1024-328",45962:"Skein1024-336",45963:"Skein1024-344",45964:"Skein1024-352",45965:"Skein1024-360",45966:"Skein1024-368",45967:"Skein1024-376",45968:"Skein1024-384",45969:"Skein1024-392",45970:"Skein1024-400",45971:"Skein1024-408",45972:"Skein1024-416",45973:"Skein1024-424",45974:"Skein1024-432",45975:"Skein1024-440",45976:"Skein1024-448",45977:"Skein1024-456",45978:"Skein1024-464",45979:"Skein1024-472",45980:"Skein1024-480",45981:"Skein1024-488",45982:"Skein1024-496",45983:"Skein1024-504",45984:"Skein1024-512",45985:"Skein1024-520",45986:"Skein1024-528",45987:"Skein1024-536",45988:"Skein1024-544",45989:"Skein1024-552",45990:"Skein1024-560",45991:"Skein1024-568",45992:"Skein1024-576",45993:"Skein1024-584",45994:"Skein1024-592",45995:"Skein1024-600",45996:"Skein1024-608",45997:"Skein1024-616",45998:"Skein1024-624",45999:"Skein1024-632",46e3:"Skein1024-640",46001:"Skein1024-648",46002:"Skein1024-656",46003:"Skein1024-664",46004:"Skein1024-672",46005:"Skein1024-680",46006:"Skein1024-688",46007:"Skein1024-696",46008:"Skein1024-704",46009:"Skein1024-712",46010:"Skein1024-720",46011:"Skein1024-728",46012:"Skein1024-736",46013:"Skein1024-744",46014:"Skein1024-752",46015:"Skein1024-760",46016:"Skein1024-768",46017:"Skein1024-776",46018:"Skein1024-784",46019:"Skein1024-792",46020:"Skein1024-800",46021:"Skein1024-808",46022:"Skein1024-816",46023:"Skein1024-824",46024:"Skein1024-832",46025:"Skein1024-840",46026:"Skein1024-848",46027:"Skein1024-856",46028:"Skein1024-864",46029:"Skein1024-872",46030:"Skein1024-880",46031:"Skein1024-888",46032:"Skein1024-896",46033:"Skein1024-904",46034:"Skein1024-912",46035:"Skein1024-920",46036:"Skein1024-928",46037:"Skein1024-936",46038:"Skein1024-944",46039:"Skein1024-952",46040:"Skein1024-960",46041:"Skein1024-968",46042:"Skein1024-976",46043:"Skein1024-984",46044:"Skein1024-992",46045:"Skein1024-1000",46046:"Skein1024-1008",46047:"Skein1024-1016",46048:"Skein1024-1024"}),n.defaultLengths=Object.freeze({17:20,18:32,19:64,86:32,23:28,22:32,21:48,20:64,24:32,25:64,26:28,27:32,28:48,29:64,34:32,45569:1,45570:2,45571:3,45572:4,45573:5,45574:6,45575:7,45576:8,45577:9,45578:10,45579:11,45580:12,45581:13,45582:14,45583:15,45584:16,45585:17,45586:18,45587:19,45588:20,45589:21,45590:22,45591:23,45592:24,45593:25,45594:26,45595:27,45596:28,45597:29,45598:30,45599:31,45600:32,45601:33,45602:34,45603:35,45604:36,45605:37,45606:38,45607:39,45608:40,45609:41,45610:42,45611:43,45612:44,45613:45,45614:46,45615:47,45616:48,45617:49,45618:50,45619:51,45620:52,45621:53,45622:54,45623:55,45624:56,45625:57,45626:58,45627:59,45628:60,45629:61,45630:62,45631:63,45632:64,45633:1,45634:2,45635:3,45636:4,45637:5,45638:6,45639:7,45640:8,45641:9,45642:10,45643:11,45644:12,45645:13,45646:14,45647:15,45648:16,45649:17,45650:18,45651:19,45652:20,45653:21,45654:22,45655:23,45656:24,45657:25,45658:26,45659:27,45660:28,45661:29,45662:30,45663:31,45664:32,45825:1,45826:2,45827:3,45828:4,45829:5,45830:6,45831:7,45832:8,45833:9,45834:10,45835:11,45836:12,45837:13,45838:14,45839:15,45840:16,45841:17,45842:18,45843:19,45844:20,45845:21,45846:22,45847:23,45848:24,45849:25,45850:26,45851:27,45852:28,45853:29,45854:30,45855:31,45856:32,45857:1,45858:2,45859:3,45860:4,45861:5,45862:6,45863:7,45864:8,45865:9,45866:10,45867:11,45868:12,45869:13,45870:14,45871:15,45872:16,45873:17,45874:18,45875:19,45876:20,45877:21,45878:22,45879:23,45880:24,45881:25,45882:26,45883:27,45884:28,45885:29,45886:30,45887:31,45888:32,45889:33,45890:34,45891:35,45892:36,45893:37,45894:38,45895:39,45896:40,45897:41,45898:42,45899:43,45900:44,45901:45,45902:46,45903:47,45904:48,45905:49,45906:50,45907:51,45908:52,45909:53,45910:54,45911:55,45912:56,45913:57,45914:58,45915:59,45916:60,45917:61,45918:62,45919:63,45920:64,45921:1,45922:2,45923:3,45924:4,45925:5,45926:6,45927:7,45928:8,45929:9,45930:10,45931:11,45932:12,45933:13,45934:14,45935:15,45936:16,45937:17,45938:18,45939:19,45940:20,45941:21,45942:22,45943:23,45944:24,45945:25,45946:26,45947:27,45948:28,45949:29,45950:30,45951:31,45952:32,45953:33,45954:34,45955:35,45956:36,45957:37,45958:38,45959:39,45960:40,45961:41,45962:42,45963:43,45964:44,45965:45,45966:46,45967:47,45968:48,45969:49,45970:50,45971:51,45972:52,45973:53,45974:54,45975:55,45976:56,45977:57,45978:58,45979:59,45980:60,45981:61,45982:62,45983:63,45984:64,45985:65,45986:66,45987:67,45988:68,45989:69,45990:70,45991:71,45992:72,45993:73,45994:74,45995:75,45996:76,45997:77,45998:78,45999:79,46e3:80,46001:81,46002:82,46003:83,46004:84,46005:85,46006:86,46007:87,46008:88,46009:89,46010:90,46011:91,46012:92,46013:93,46014:94,46015:95,46016:96,46017:97,46018:98,46019:99,46020:100,46021:101,46022:102,46023:103,46024:104,46025:105,46026:106,46027:107,46028:108,46029:109,46030:110,46031:111,46032:112,46033:113,46034:114,46035:115,46036:116,46037:117,46038:118,46039:119,46040:120,46041:121,46042:122,46043:123,46044:124,46045:125,46046:126,46047:127,46048:128})},function(e,n){e.exports=function e(n,i,a){i=i||[];var o=a=a||0;for(;n>=t;)i[a++]=255&n|128,n/=128;for(;-128&n;)i[a++]=255&n|128,n>>>=7;return i[a]=0|n,e.bytes=a-o+1,i};var t=Math.pow(2,31)},function(e,n){e.exports=function e(n,t){var i,a=0,o=0,r=t=t||0,s=n.length;do{if(r>=s)throw e.bytes=0,new RangeError("Could not decode varint");i=n[r++],a+=o<28?(127&i)<<o:(127&i)*Math.pow(2,o),o+=7}while(i>=128);return e.bytes=r-t,a}},function(e,n){var t=Math.pow(2,7),i=Math.pow(2,14),a=Math.pow(2,21),o=Math.pow(2,28),r=Math.pow(2,35),s=Math.pow(2,42),c=Math.pow(2,49),u=Math.pow(2,56),p=Math.pow(2,63);e.exports=function(e){return e<t?1:e<i?2:e<a?3:e<o?4:e<r?5:e<s?6:e<c?7:e<u?8:e<p?9:10}},function(e,n,t){"use strict";const i=t(429),a=t(186),o=t(430),r=t(431),s=t(432),c=[["base1","1","","1"],["base2","0",a,"01"],["base8","7",a,"01234567"],["base10","9",a,"0123456789"],["base16","f",o,"0123456789abcdef"],["base32","b",r,"abcdefghijklmnopqrstuvwxyz234567"],["base32pad","c",r,"abcdefghijklmnopqrstuvwxyz234567="],["base32hex","v",r,"0123456789abcdefghijklmnopqrstuv"],["base32hexpad","t",r,"0123456789abcdefghijklmnopqrstuv="],["base32z","h",r,"ybndrfg8ejkmcpqxot1uwisza345h769"],["base58flickr","Z",a,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base58btc","z",a,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base64","m",s,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",s,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",s,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",s,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],u=c.reduce((e,n)=>(e[n[0]]=new i(n[0],n[1],n[2],n[3]),e),{}),p=c.reduce((e,n)=>(e[n[1]]=u[n[0]],e),{});e.exports={names:u,codes:p}},function(e,n,t){"use strict";e.exports=class{constructor(e,n,t,i){this.name=e,this.code=n,this.alphabet=i,t&&i&&(this.engine=t(i))}encode(e){return this.engine.encode(e)}decode(e){return this.engine.decode(e)}isImplemented(){return this.engine}}},function(e,n,t){"use strict";e.exports=function(e){return{encode:e=>"string"==typeof e?Buffer.from(e).toString("hex"):e.toString("hex"),decode(n){for(let t of n)if(e.indexOf(t)<0)throw new Error("invalid base16 character");return Buffer.from(n,"hex")}}}},function(e,n,t){"use strict";function i(e,n){let t=e.byteLength,i=new Uint8Array(e),a=n.indexOf("=")===n.length-1;a&&(n=n.substring(0,n.length-2));let o=0,r=0,s="";for(let e=0;e<t;e++)for(r=r<<8|i[e],o+=8;o>=5;)s+=n[r>>>o-5&31],o-=5;if(o>0&&(s+=n[r<<5-o&31]),a)for(;s.length%8!=0;)s+="=";return s}e.exports=function(e){return{encode:n=>i("string"==typeof n?Buffer.from(n):n,e),decode(n){for(let t of n)if(e.indexOf(t)<0)throw new Error("invalid base32 character");return function(e,n){let t=(e=e.replace(new RegExp("=","g"),"")).length,i=0,a=0,o=0,r=new Uint8Array(5*t/8|0);for(let s=0;s<t;s++)a=a<<5|n.indexOf(e[s]),i+=5,i>=8&&(r[o++]=a>>>i-8&255,i-=8);return r.buffer}(n,e)}}}},function(e,n,t){"use strict";e.exports=function(e){const n=e.indexOf("=")>-1,t=e.indexOf("-")>-1&&e.indexOf("_")>-1;return{encode(e){let i="";i="string"==typeof e?Buffer.from(e).toString("base64"):e.toString("base64"),t&&(i=i.replace(/\+/g,"-").replace(/\//g,"_"));const a=i.indexOf("=");return a>0&&!n&&(i=i.substring(0,a)),i},decode(n){for(let t of n)if(e.indexOf(t)<0)throw new Error("invalid base64 character");return Buffer.from(n,"base64")}}}},function(e,n,t){"use strict";const i=t(434),a=t(127),o=t(64);function r(e){const n=[],t=e.split("/").slice(1);if(1===t.length&&""===t[0])return[];for(let i=0;i<t.length;i++){const o=t[i],r=a(o);if(0!==r.size){if(i++,i>=t.length)throw x("invalid address: "+e);if(r.path){n.push([o,v(t.slice(i).join("/"))]);break}n.push([o,t[i]])}else n.push([o])}return n}function s(e){const n=[];return e.map(e=>{const t=b(e);n.push(t.name),e.length>1&&n.push(e[1])}),v(n.join("/"))}function c(e){return e.map(e=>{Array.isArray(e)||(e=[e]);const n=b(e);return e.length>1?[n.code,i.toBuffer(n.code,e[1])]:[n.code]})}function u(e){return e.map(e=>{const n=b(e);return e.length>1?[n.code,i.toString(n.code,e[1])]:[n.code]})}function p(e){return m(Buffer.concat(e.map(e=>{const n=b(e);let t=Buffer.from(o.encode(n.code));return e.length>1&&(t=Buffer.concat([t,e[1]])),t})))}function l(e,n){if(e.size>0)return e.size/8;if(0===e.size)return 0;return o.decode(n)+o.decode.bytes}function f(e){const n=[];let t=0;for(;t<e.length;){const i=o.decode(e,t),r=o.decode.bytes,s=l(a(i),e.slice(t+r));if(0===s){n.push([i]),t+=r;continue}const c=e.slice(t+r,t+r+s);if(t+=s+r,t>e.length)throw x("Invalid address buffer: "+e.toString("hex"));n.push([i,c])}return n}function d(e){return p(c(r(e=v(e))))}function m(e){const n=h(e);if(n)throw n;return Buffer.from(e)}function h(e){try{f(e)}catch(e){return e}}function v(e){return"/"+e.trim().split("/").filter(e=>e).join("/")}function x(e){return new Error("Error parsing address: "+e)}function b(e){return a(e[0])}e.exports={stringToStringTuples:r,stringTuplesToString:s,tuplesToStringTuples:u,stringTuplesToTuples:c,bufferToTuples:f,tuplesToBuffer:p,bufferToString:function(e){return s(u(f(e)))},stringToBuffer:d,fromString:function(e){return d(e)},fromBuffer:m,validateBuffer:h,isValidBuffer:function(e){return void 0===h(e)},cleanPath:v,ParseError:x,protoFromTuple:b,sizeForAddr:l}},function(e,n,t){"use strict";const i=t(435),a=t(436),o=t(127),r=t(90),s=t(128),c=t(444),u=t(64);function p(e,n){return n instanceof Buffer?p.toString(e,n):p.toBuffer(e,n)}function l(e){if(!a(e))throw new Error("invalid ip address");return i.toBuffer(e)}function f(e){const n=Buffer.alloc(2);return n.writeUInt16BE(e,0),n}function d(e){return e.readUInt16BE(0)}function m(e){const n=e.slice(0,e.length-2),t=e.slice(e.length-2);return c.encode(n).toLowerCase()+":"+d(t)}e.exports=p,p.toString=function(e,n){switch((e=o(e)).code){case 4:case 41:return function(e){const n=i.toString(e);if(!a(n))throw new Error("invalid ip address");return n}(n);case 6:case 273:case 33:case 132:return d(n);case 53:case 54:case 55:case 56:case 400:return function(e){const n=u.decode(e);if((e=e.slice(u.decode.bytes)).length!==n)throw new Error("inconsistent lengths");return e.toString()}(n);case 421:return function(e){const n=u.decode(e),t=e.slice(u.decode.bytes);if(t.length!==n)throw new Error("inconsistent lengths");return r.encode(t)}(n);case 444:case 445:return m(n);default:return n.toString("hex")}},p.toBuffer=function(e,n){switch((e=o(e)).code){case 4:case 41:return l(n);case 6:case 273:case 33:case 132:return f(parseInt(n,10));case 53:case 54:case 55:case 56:case 400:return function(e){const n=Buffer.from(e),t=Buffer.from(u.encode(n.length));return Buffer.concat([t,n])}(n);case 421:return function(e){const n=new s(e).multihash,t=Buffer.from(u.encode(n.length));return Buffer.concat([t,n])}(n);case 444:return function(e){const n=e.split(":");if(2!==n.length)throw new Error("failed to parse onion addr: "+n+" does not contain a port number");if(16!==n[0].length)throw new Error("failed to parse onion addr: "+n[0]+" not a Tor onion address.");const t=Buffer.from(c.decode.asBytes(n[0].toUpperCase())),i=parseInt(n[1],10);if(i<1||i>65536)throw new Error("Port number is not in range(1, 65536)");const a=f(i);return Buffer.concat([t,a])}(n);case 445:return function(e){const n=e.split(":");if(2!==n.length)throw new Error("failed to parse onion addr: "+n+" does not contain a port number");if(56!==n[0].length)throw new Error("failed to parse onion addr: "+n[0]+" not a Tor onion3 address.");const t=Buffer.from(c.decode.asBytes(n[0].toUpperCase())),i=parseInt(n[1],10);if(i<1||i>65536)throw new Error("Port number is not in range(1, 65536)");const a=f(i);return Buffer.concat([t,a])}(n);default:return Buffer.from(n,"hex")}}},function(e,n,t){"use strict";var i=n,a=t(187).Buffer,o=t(183);i.toBuffer=function(e,n,t){var i;if(t=~~t,this.isV4Format(e))i=n||new a(t+4),e.split(/\./g).map((function(e){i[t++]=255&parseInt(e,10)}));else if(this.isV6Format(e)){var o,r=e.split(":",8);for(o=0;o<r.length;o++){var s;this.isV4Format(r[o])&&(s=this.toBuffer(r[o]),r[o]=s.slice(0,2).toString("hex")),s&&++o<8&&r.splice(o,0,s.slice(2,4).toString("hex"))}if(""===r[0])for(;r.length<8;)r.unshift("0");else if(""===r[r.length-1])for(;r.length<8;)r.push("0");else if(r.length<8){for(o=0;o<r.length&&""!==r[o];o++);var c=[o,1];for(o=9-r.length;o>0;o--)c.push("0");r.splice.apply(r,c)}for(i=n||new a(t+16),o=0;o<r.length;o++){var u=parseInt(r[o],16);i[t++]=u>>8&255,i[t++]=255&u}}if(!i)throw Error("Invalid ip address: "+e);return i},i.toString=function(e,n,t){n=~~n;var i=[];if(4===(t=t||e.length-n)){for(var a=0;a<t;a++)i.push(e[n+a]);i=i.join(".")}else if(16===t){for(a=0;a<t;a+=2)i.push(e.readUInt16BE(n+a).toString(16));i=(i=(i=i.join(":")).replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3")).replace(/:{3,4}/,"::")}return i};var r=/^(\d{1,3}\.){3,3}\d{1,3}$/,s=/^(::)?(((\d{1,3}\.){3}(\d{1,3}){1})?([0-9a-f]){0,4}:{0,2}){1,8}(::)?$/i;function c(e){return e?e.toLowerCase():"ipv4"}i.isV4Format=function(e){return r.test(e)},i.isV6Format=function(e){return s.test(e)},i.fromPrefixLen=function(e,n){var t=4;"ipv6"===(n=e>32?"ipv6":c(n))&&(t=16);for(var o=new a(t),r=0,s=o.length;r<s;++r){var u=8;e<8&&(u=e),e-=u,o[r]=255&~(255>>u)}return i.toString(o)},i.mask=function(e,n){e=i.toBuffer(e),n=i.toBuffer(n);var t=new a(Math.max(e.length,n.length)),o=0;if(e.length===n.length)for(o=0;o<e.length;o++)t[o]=e[o]&n[o];else if(4===n.length)for(o=0;o<n.length;o++)t[o]=e[e.length-4+o]&n[o];else{for(o=0;o<t.length-6;o++)t[o]=0;for(t[10]=255,t[11]=255,o=0;o<e.length;o++)t[o+12]=e[o]&n[o+12];o+=12}for(;o<t.length;o++)t[o]=0;return i.toString(t)},i.cidr=function(e){var n=e.split("/"),t=n[0];if(2!==n.length)throw new Error("invalid CIDR subnet: "+t);var a=i.fromPrefixLen(parseInt(n[1],10));return i.mask(t,a)},i.subnet=function(e,n){for(var t=i.toLong(i.mask(e,n)),a=i.toBuffer(n),o=0,r=0;r<a.length;r++)if(255===a[r])o+=8;else for(var s=255&a[r];s;)s=s<<1&255,o++;var c=Math.pow(2,32-o);return{networkAddress:i.fromLong(t),firstAddress:c<=2?i.fromLong(t):i.fromLong(t+1),lastAddress:c<=2?i.fromLong(t+c-1):i.fromLong(t+c-2),broadcastAddress:i.fromLong(t+c-1),subnetMask:n,subnetMaskLength:o,numHosts:c<=2?c:c-2,length:c,contains:function(e){return t===i.toLong(i.mask(e,n))}}},i.cidrSubnet=function(e){var n=e.split("/"),t=n[0];if(2!==n.length)throw new Error("invalid CIDR subnet: "+t);var a=i.fromPrefixLen(parseInt(n[1],10));return i.subnet(t,a)},i.not=function(e){for(var n=i.toBuffer(e),t=0;t<n.length;t++)n[t]=255^n[t];return i.toString(n)},i.or=function(e,n){if(e=i.toBuffer(e),n=i.toBuffer(n),e.length===n.length){for(var t=0;t<e.length;++t)e[t]|=n[t];return i.toString(e)}var a=e,o=n;n.length>e.length&&(a=n,o=e);var r=a.length-o.length;for(t=r;t<a.length;++t)a[t]|=o[t-r];return i.toString(a)},i.isEqual=function(e,n){if(e=i.toBuffer(e),n=i.toBuffer(n),e.length===n.length){for(var t=0;t<e.length;t++)if(e[t]!==n[t])return!1;return!0}if(4===n.length){var a=n;n=e,e=a}for(t=0;t<10;t++)if(0!==n[t])return!1;var o=n.readUInt16BE(10);if(0!==o&&65535!==o)return!1;for(t=0;t<4;t++)if(e[t]!==n[t+12])return!1;return!0},i.isPrivate=function(e){return/^(::f{4}:)?10\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(e)||/^(::f{4}:)?192\.168\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(e)||/^(::f{4}:)?172\.(1[6-9]|2\d|30|31)\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(e)||/^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(e)||/^(::f{4}:)?169\.254\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(e)||/^f[cd][0-9a-f]{2}:/i.test(e)||/^fe80:/i.test(e)||/^::1$/.test(e)||/^::$/.test(e)},i.isPublic=function(e){return!i.isPrivate(e)},i.isLoopback=function(e){return/^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/.test(e)||/^fe80::1$/.test(e)||/^::1$/.test(e)||/^::$/.test(e)},i.loopback=function(e){if("ipv4"!==(e=c(e))&&"ipv6"!==e)throw new Error("family must be ipv4 or ipv6");return"ipv4"===e?"127.0.0.1":"fe80::1"},i.address=function(e,n){var t,a=o.networkInterfaces();if(n=c(n),e&&"private"!==e&&"public"!==e){var r=a[e].filter((function(e){return e.family.toLowerCase()===n}));if(0===r.length)return;return r[0].address}return(t=Object.keys(a).map((function(t){var o=a[t].filter((function(t){return t.family=t.family.toLowerCase(),t.family===n&&!i.isLoopback(t.address)&&(!e||("public"===e?i.isPrivate(t.address):i.isPublic(t.address)))}));return o.length?o[0].address:void 0})).filter(Boolean)).length?t[0]:i.loopback(n)},i.toLong=function(e){var n=0;return e.split(".").forEach((function(e){n<<=8,n+=parseInt(e)})),n>>>0},i.fromLong=function(e){return(e>>>24)+"."+(e>>16&255)+"."+(e>>8&255)+"."+(255&e)}},function(e,n,t){"use strict";const i=t(437),a=e=>i({exact:!0}).test(e);a.v4=e=>i.v4({exact:!0}).test(e),a.v6=e=>i.v6({exact:!0}).test(e),a.version=e=>a(e)?a.v4(e)?4:6:void 0,e.exports=a},function(e,n,t){"use strict";const i=e=>e&&e.includeBoundaries?"(?:(?<=\\s|^)(?=[a-fA-F\\d:])|(?<=[a-fA-F\\d:])(?=\\s|$))":"",a="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",o="[a-fA-F\\d]{1,4}",r=`\n(\n(?:${o}:){7}(?:${o}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${o}:){6}(?:${a}|:${o}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${o}:){5}(?::${a}|(:${o}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${o}:){4}(?:(:${o}){0,1}:${a}|(:${o}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${o}:){3}(?:(:${o}){0,2}:${a}|(:${o}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${o}:){2}(?:(:${o}){0,3}:${a}|(:${o}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${o}:){1}(?:(:${o}){0,4}:${a}|(:${o}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::((?::${o}){0,5}:${a}|(?::${o}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),s=e=>e&&e.exact?new RegExp(`(?:^${a}$)|(?:^${r}$)`):new RegExp(`(?:${i(e)}${a}${i(e)})|(?:${i(e)}${r}${i(e)})`,"g");s.v4=e=>e&&e.exact?new RegExp(`^${a}$`):new RegExp(`${i(e)}${a}${i(e)}`,"g"),s.v6=e=>e&&e.exact?new RegExp(`^${r}$`):new RegExp(`${i(e)}${r}${i(e)}`,"g"),e.exports=s},function(e,n,t){"use strict";const i=t(64),a=t(439),o=t(440),r=t(190);(n=e.exports).addPrefix=(e,n)=>{let t;if(Buffer.isBuffer(e))t=r.varintBufferEncode(e);else{if(!o[e])throw new Error("multicodec not recognized");t=o[e]}return Buffer.concat([t,n])},n.rmPrefix=e=>(i.decode(e),e.slice(i.decode.bytes)),n.getCodec=e=>{const n=i.decode(e),t=a.get(n);if(void 0===t)throw new Error(`Code ${n} not found`);return t},n.getName=e=>a.get(e),n.getNumber=e=>{const n=o[e];if(void 0===n)throw new Error("Codec `"+e+"` not found");return r.varintBufferDecode(n)[0]},n.getCode=e=>i.decode(e),n.getCodeVarint=e=>{const n=o[e];if(void 0===n)throw new Error("Codec `"+e+"` not found");return n},n.getVarint=e=>i.encode(e);const s=t(441);Object.assign(n,s),n.print=t(442)},function(e,n,t){"use strict";const i=t(73),a=new Map;for(const e in i){const n=i[e];a.set(n,e)}e.exports=Object.freeze(a)},function(e,n,t){"use strict";const i=t(73),a=t(190).varintEncode,o={};for(const e in i){const n=i[e];o[e]=a(n)}e.exports=Object.freeze(o)},function(e,n,t){"use strict";const i=t(73),a={};for(const[e,n]of Object.entries(i))a[e.toUpperCase().replace(/-/g,"_")]=n;e.exports=Object.freeze(a)},function(e,n,t){"use strict";const i=t(73),a={};for(const[e,n]of Object.entries(i))void 0===a[n]&&(a[n]=e);e.exports=Object.freeze(a)},function(e,n,t){"use strict";const i=t(126);var a={checkCIDComponents:function(e){if(null==e)return"null values are not valid CIDs";if(0!==e.version&&1!==e.version)return"Invalid version, must be a number equal to 1 or 0";if("string"!=typeof e.codec)return"codec must be string";if(0===e.version){if("dag-pb"!==e.codec)return"codec must be 'dag-pb' for CIDv0";if("base58btc"!==e.multibaseName)return"multibaseName must be 'base58btc' for CIDv0"}if(!Buffer.isBuffer(e.multihash))return"multihash must be a Buffer";try{i.validate(e.multihash)}catch(e){let n=e.message;return n||(n="Multihash validation failed"),n}}};e.exports=a},function(e,n,t){var i;
|
|
2
|
-
/*
|
|
3
|
-
* [hi-base32]{@link https://github.com/emn178/hi-base32}
|
|
4
|
-
*
|
|
5
|
-
* @version 0.5.0
|
|
6
|
-
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
|
7
|
-
* @copyright Chen, Yi-Cyuan 2015-2018
|
|
8
|
-
* @license MIT
|
|
9
|
-
*/!function(){"use strict";var n="object"==typeof window?window:{};!n.HI_BASE32_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node&&(n=global);var a=!n.HI_BASE32_NO_COMMON_JS&&"object"==typeof e&&e.exports,o=t(445),r="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".split(""),s={A:0,B:1,C:2,D:3,E:4,F:5,G:6,H:7,I:8,J:9,K:10,L:11,M:12,N:13,O:14,P:15,Q:16,R:17,S:18,T:19,U:20,V:21,W:22,X:23,Y:24,Z:25,2:26,3:27,4:28,5:29,6:30,7:31},c=[0,0,0,0,0,0,0,0],u=function(e,n){n.length>10&&(n="..."+n.substr(-10));var t=new Error("Decoded data is not valid UTF-8. Maybe try base32.decode.asBytes()? Partial data after reading "+e+" bytes: "+n+" <-");throw t.position=e,t},p=function(e){if(!/^[A-Z2-7=]+$/.test(e))throw new Error("Invalid base32 characters");for(var n,t,i,a,o,r,c,u,p=[],l=0,f=(e=e.replace(/=/g,"")).length,d=0,m=f>>3<<3;d<m;)n=s[e.charAt(d++)],t=s[e.charAt(d++)],i=s[e.charAt(d++)],a=s[e.charAt(d++)],o=s[e.charAt(d++)],r=s[e.charAt(d++)],c=s[e.charAt(d++)],u=s[e.charAt(d++)],p[l++]=255&(n<<3|t>>>2),p[l++]=255&(t<<6|i<<1|a>>>4),p[l++]=255&(a<<4|o>>>1),p[l++]=255&(o<<7|r<<2|c>>>3),p[l++]=255&(c<<5|u);var h=f-m;return 2===h?(n=s[e.charAt(d++)],t=s[e.charAt(d++)],p[l++]=255&(n<<3|t>>>2)):4===h?(n=s[e.charAt(d++)],t=s[e.charAt(d++)],i=s[e.charAt(d++)],a=s[e.charAt(d++)],p[l++]=255&(n<<3|t>>>2),p[l++]=255&(t<<6|i<<1|a>>>4)):5===h?(n=s[e.charAt(d++)],t=s[e.charAt(d++)],i=s[e.charAt(d++)],a=s[e.charAt(d++)],o=s[e.charAt(d++)],p[l++]=255&(n<<3|t>>>2),p[l++]=255&(t<<6|i<<1|a>>>4),p[l++]=255&(a<<4|o>>>1)):7===h&&(n=s[e.charAt(d++)],t=s[e.charAt(d++)],i=s[e.charAt(d++)],a=s[e.charAt(d++)],o=s[e.charAt(d++)],r=s[e.charAt(d++)],c=s[e.charAt(d++)],p[l++]=255&(n<<3|t>>>2),p[l++]=255&(t<<6|i<<1|a>>>4),p[l++]=255&(a<<4|o>>>1),p[l++]=255&(o<<7|r<<2|c>>>3)),p},l=function(e,n){if(!n)return function(e){for(var n,t,i="",a=e.length,o=0,r=0;o<a;)if((n=e[o++])<=127)i+=String.fromCharCode(n);else{n>191&&n<=223?(t=31&n,r=1):n<=239?(t=15&n,r=2):n<=247?(t=7&n,r=3):u(o,i);for(var s=0;s<r;++s)((n=e[o++])<128||n>191)&&u(o,i),t<<=6,t+=63&n;t>=55296&&t<=57343&&u(o,i),t>1114111&&u(o,i),t<=65535?i+=String.fromCharCode(t):(t-=65536,i+=String.fromCharCode(55296+(t>>10)),i+=String.fromCharCode(56320+(1023&t)))}return i}(p(e));if(!/^[A-Z2-7=]+$/.test(e))throw new Error("Invalid base32 characters");var t,i,a,o,r,c,l,f,d="",m=e.indexOf("=");-1===m&&(m=e.length);for(var h=0,v=m>>3<<3;h<v;)t=s[e.charAt(h++)],i=s[e.charAt(h++)],a=s[e.charAt(h++)],o=s[e.charAt(h++)],r=s[e.charAt(h++)],c=s[e.charAt(h++)],l=s[e.charAt(h++)],f=s[e.charAt(h++)],d+=String.fromCharCode(255&(t<<3|i>>>2))+String.fromCharCode(255&(i<<6|a<<1|o>>>4))+String.fromCharCode(255&(o<<4|r>>>1))+String.fromCharCode(255&(r<<7|c<<2|l>>>3))+String.fromCharCode(255&(l<<5|f));var x=m-v;return 2===x?(t=s[e.charAt(h++)],i=s[e.charAt(h++)],d+=String.fromCharCode(255&(t<<3|i>>>2))):4===x?(t=s[e.charAt(h++)],i=s[e.charAt(h++)],a=s[e.charAt(h++)],o=s[e.charAt(h++)],d+=String.fromCharCode(255&(t<<3|i>>>2))+String.fromCharCode(255&(i<<6|a<<1|o>>>4))):5===x?(t=s[e.charAt(h++)],i=s[e.charAt(h++)],a=s[e.charAt(h++)],o=s[e.charAt(h++)],r=s[e.charAt(h++)],d+=String.fromCharCode(255&(t<<3|i>>>2))+String.fromCharCode(255&(i<<6|a<<1|o>>>4))+String.fromCharCode(255&(o<<4|r>>>1))):7===x&&(t=s[e.charAt(h++)],i=s[e.charAt(h++)],a=s[e.charAt(h++)],o=s[e.charAt(h++)],r=s[e.charAt(h++)],c=s[e.charAt(h++)],l=s[e.charAt(h++)],d+=String.fromCharCode(255&(t<<3|i>>>2))+String.fromCharCode(255&(i<<6|a<<1|o>>>4))+String.fromCharCode(255&(o<<4|r>>>1))+String.fromCharCode(255&(r<<7|c<<2|l>>>3))),d},f={encode:function(e,n){var t="string"!=typeof e;return t&&e.constructor===ArrayBuffer&&(e=new Uint8Array(e)),t?function(e){for(var n,t,i,a,o,s="",c=e.length,u=0,p=5*parseInt(c/5);u<p;)n=e[u++],t=e[u++],i=e[u++],a=e[u++],o=e[u++],s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[31&(a<<3|o>>>5)]+r[31&o];var l=c-p;return 1===l?(n=e[u],s+=r[n>>>3]+r[n<<2&31]+"======"):2===l?(n=e[u++],t=e[u],s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[t<<4&31]+"===="):3===l?(n=e[u++],t=e[u++],i=e[u],s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[i<<1&31]+"==="):4===l&&(n=e[u++],t=e[u++],i=e[u++],a=e[u],s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[a<<3&31]+"="),s}(e):n?function(e){for(var n,t,i,a,o,s="",c=e.length,u=0,p=5*parseInt(c/5);u<p;)n=e.charCodeAt(u++),t=e.charCodeAt(u++),i=e.charCodeAt(u++),a=e.charCodeAt(u++),o=e.charCodeAt(u++),s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[31&(a<<3|o>>>5)]+r[31&o];var l=c-p;return 1===l?(n=e.charCodeAt(u),s+=r[n>>>3]+r[n<<2&31]+"======"):2===l?(n=e.charCodeAt(u++),t=e.charCodeAt(u),s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[t<<4&31]+"===="):3===l?(n=e.charCodeAt(u++),t=e.charCodeAt(u++),i=e.charCodeAt(u),s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[i<<1&31]+"==="):4===l&&(n=e.charCodeAt(u++),t=e.charCodeAt(u++),i=e.charCodeAt(u++),a=e.charCodeAt(u),s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[a<<3&31]+"="),s}(e):function(e){var n,t,i,a,o,s,u,p=!1,l="",f=0,d=0,m=e.length;do{for(c[0]=c[5],c[1]=c[6],c[2]=c[7],u=d;f<m&&u<5;++f)(s=e.charCodeAt(f))<128?c[u++]=s:s<2048?(c[u++]=192|s>>6,c[u++]=128|63&s):s<55296||s>=57344?(c[u++]=224|s>>12,c[u++]=128|s>>6&63,c[u++]=128|63&s):(s=65536+((1023&s)<<10|1023&e.charCodeAt(++f)),c[u++]=240|s>>18,c[u++]=128|s>>12&63,c[u++]=128|s>>6&63,c[u++]=128|63&s);u-d,d=u-5,f===m&&++f,f>m&&u<6&&(p=!0),n=c[0],u>4?(t=c[1],i=c[2],a=c[3],o=c[4],l+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[31&(a<<3|o>>>5)]+r[31&o]):1===u?l+=r[n>>>3]+r[n<<2&31]+"======":2===u?(t=c[1],l+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[t<<4&31]+"===="):3===u?(t=c[1],i=c[2],l+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[i<<1&31]+"==="):(t=c[1],i=c[2],a=c[3],l+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[a<<3&31]+"=")}while(!p);return l}(e)},decode:l};l.asBytes=p,a?e.exports=f:(n.base32=f,o&&(void 0===(i=function(){return f}.call(f,t,f,e))||(e.exports=i)))}()},function(e,n){(function(n){e.exports=n}).call(this,{})},function(e,n,t){"use strict";const i=t(189),a=P("dns4"),o=P("dns6"),r=E(P("dns"),P("dnsaddr"),a,o),s=E(P("ip4"),P("ip6")),c=E(O(s,P("tcp")),O(r,P("tcp"))),u=O(s,P("udp")),p=O(u,P("utp")),l=E(O(c,P("ws")),O(r,P("ws"))),f=E(O(c,P("wss")),O(r,P("wss"))),d=E(O(c,P("http")),O(s,P("http")),O(r,P("http"))),m=E(O(c,P("https")),O(s,P("https")),O(r,P("https"))),h=E(O(l,P("p2p-webrtc-star"),P("p2p")),O(f,P("p2p-webrtc-star"),P("p2p")),O(l,P("p2p-webrtc-star")),O(f,P("p2p-webrtc-star"))),v=E(O(l,P("p2p-websocket-star"),P("p2p")),O(f,P("p2p-websocket-star"),P("p2p")),O(l,P("p2p-websocket-star")),O(f,P("p2p-websocket-star"))),x=E(O(d,P("p2p-webrtc-direct")),O(m,P("p2p-webrtc-direct"))),b=E(l,f,d,m,h,x,c,p),g=E(O(b,P("p2p-stardust"),P("p2p")),O(b,P("p2p-stardust"))),y=E(O(b,P("p2p")),h,P("p2p")),k=E(O(y,P("p2p-circuit"),y),O(y,P("p2p-circuit")),O(P("p2p-circuit"),y),O(b,P("p2p-circuit")),O(P("p2p-circuit"),b),P("p2p-circuit")),w=()=>E(O(k,w),k),S=w(),j=E(O(S,y,S),O(y,S),O(S,y),S,y);function _(e){return function(n){if(!i.isMultiaddr(n))try{n=i(n)}catch(e){return!1}const t=e(n.protoNames());return null!==t&&0===t.length}}function O(){const e=Array.from(arguments);function n(n){return n.length<e.length?null:(e.some(e=>{if(null===(n="function"==typeof e?e().partialMatch(n):e.partialMatch(n)))return!0}),n)}return{toString:function(){return"{ "+e.join(" ")+" }"},input:e,matches:_(n),partialMatch:n}}function E(){const e=Array.from(arguments);function n(n){let t=null;return e.some(e=>{const i="function"==typeof e?e().partialMatch(n):e.partialMatch(n);if(i)return t=i,!0}),t}const t={toString:function(){return"{ "+e.join(" ")+" }"},input:e,matches:_(n),partialMatch:n};return t}function P(e){const n=e;return{toString:function(){return n},matches:function(e){if("string"==typeof e)try{e=i(e)}catch(e){return!1}const t=e.protoNames();return 1===t.length&&t[0]===n},partialMatch:function(e){return 0===e.length?null:e[0]===n?e.slice(1):null}}}n.DNS=r,n.DNS4=a,n.DNS6=o,n.IP=s,n.TCP=c,n.UDP=u,n.UTP=p,n.HTTP=d,n.HTTPS=m,n.WebSockets=l,n.WebSocketsSecure=f,n.WebSocketStar=v,n.WebRTCStar=h,n.WebRTCDirect=x,n.Reliable=b,n.Stardust=g,n.Circuit=S,n.P2P=j,n.IPFS=j},function(e,n,t){var i=t(89),a=t(88).Stream,o=t(448);function r(){this.writable=!1,this.readable=!0,this.dataSize=0,this.maxDataSize=2097152,this.pauseStreams=!0,this._released=!1,this._streams=[],this._currentStream=null,this._insideLoop=!1,this._pendingNext=!1}e.exports=r,i.inherits(r,a),r.create=function(e){var n=new this;for(var t in e=e||{})n[t]=e[t];return n},r.isStreamLike=function(e){return"function"!=typeof e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e&&!Buffer.isBuffer(e)},r.prototype.append=function(e){if(r.isStreamLike(e)){if(!(e instanceof o)){var n=o.create(e,{maxDataSize:1/0,pauseStream:this.pauseStreams});e.on("data",this._checkDataSize.bind(this)),e=n}this._handleErrors(e),this.pauseStreams&&e.pause()}return this._streams.push(e),this},r.prototype.pipe=function(e,n){return a.prototype.pipe.call(this,e,n),this.resume(),e},r.prototype._getNext=function(){if(this._currentStream=null,this._insideLoop)this._pendingNext=!0;else{this._insideLoop=!0;try{do{this._pendingNext=!1,this._realGetNext()}while(this._pendingNext)}finally{this._insideLoop=!1}}},r.prototype._realGetNext=function(){var e=this._streams.shift();void 0!==e?"function"==typeof e?e(function(e){r.isStreamLike(e)&&(e.on("data",this._checkDataSize.bind(this)),this._handleErrors(e)),this._pipeNext(e)}.bind(this)):this._pipeNext(e):this.end()},r.prototype._pipeNext=function(e){if(this._currentStream=e,r.isStreamLike(e))return e.on("end",this._getNext.bind(this)),void e.pipe(this,{end:!1});var n=e;this.write(n),this._getNext()},r.prototype._handleErrors=function(e){var n=this;e.on("error",(function(e){n._emitError(e)}))},r.prototype.write=function(e){this.emit("data",e)},r.prototype.pause=function(){this.pauseStreams&&(this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.pause&&this._currentStream.pause(),this.emit("pause"))},r.prototype.resume=function(){this._released||(this._released=!0,this.writable=!0,this._getNext()),this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.resume&&this._currentStream.resume(),this.emit("resume")},r.prototype.end=function(){this._reset(),this.emit("end")},r.prototype.destroy=function(){this._reset(),this.emit("close")},r.prototype._reset=function(){this.writable=!1,this._streams=[],this._currentStream=null},r.prototype._checkDataSize=function(){if(this._updateDataSize(),!(this.dataSize<=this.maxDataSize)){var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this._emitError(new Error(e))}},r.prototype._updateDataSize=function(){this.dataSize=0;var e=this;this._streams.forEach((function(n){n.dataSize&&(e.dataSize+=n.dataSize)})),this._currentStream&&this._currentStream.dataSize&&(this.dataSize+=this._currentStream.dataSize)},r.prototype._emitError=function(e){this._reset(),this.emit("error",e)}},function(e,n,t){var i=t(88).Stream,a=t(89);function o(){this.source=null,this.dataSize=0,this.maxDataSize=1048576,this.pauseStream=!0,this._maxDataSizeExceeded=!1,this._released=!1,this._bufferedEvents=[]}e.exports=o,a.inherits(o,i),o.create=function(e,n){var t=new this;for(var i in n=n||{})t[i]=n[i];t.source=e;var a=e.emit;return e.emit=function(){return t._handleEmit(arguments),a.apply(e,arguments)},e.on("error",(function(){})),t.pauseStream&&e.pause(),t},Object.defineProperty(o.prototype,"readable",{configurable:!0,enumerable:!0,get:function(){return this.source.readable}}),o.prototype.setEncoding=function(){return this.source.setEncoding.apply(this.source,arguments)},o.prototype.resume=function(){this._released||this.release(),this.source.resume()},o.prototype.pause=function(){this.source.pause()},o.prototype.release=function(){this._released=!0,this._bufferedEvents.forEach(function(e){this.emit.apply(this,e)}.bind(this)),this._bufferedEvents=[]},o.prototype.pipe=function(){var e=i.prototype.pipe.apply(this,arguments);return this.resume(),e},o.prototype._handleEmit=function(e){this._released?this.emit.apply(this,e):("data"===e[0]&&(this.dataSize+=e[1].length,this._checkIfMaxDataSizeExceeded()),this._bufferedEvents.push(e))},o.prototype._checkIfMaxDataSizeExceeded=function(){if(!(this._maxDataSizeExceeded||this.dataSize<=this.maxDataSize)){this._maxDataSizeExceeded=!0;var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this.emit("error",new Error(e))}}},function(e,n,t){"use strict";
|
|
10
|
-
/*!
|
|
11
|
-
* mime-types
|
|
12
|
-
* Copyright(c) 2014 Jonathan Ong
|
|
13
|
-
* Copyright(c) 2015 Douglas Christopher Wilson
|
|
14
|
-
* MIT Licensed
|
|
15
|
-
*/var i,a,o,r=t(450),s=t(130).extname,c=/^\s*([^;\s]*)(?:;|\s|$)/,u=/^text\//i;function p(e){if(!e||"string"!=typeof e)return!1;var n=c.exec(e),t=n&&r[n[1].toLowerCase()];return t&&t.charset?t.charset:!(!n||!u.test(n[1]))&&"UTF-8"}n.charset=p,n.charsets={lookup:p},n.contentType=function(e){if(!e||"string"!=typeof e)return!1;var t=-1===e.indexOf("/")?n.lookup(e):e;if(!t)return!1;if(-1===t.indexOf("charset")){var i=n.charset(t);i&&(t+="; charset="+i.toLowerCase())}return t},n.extension=function(e){if(!e||"string"!=typeof e)return!1;var t=c.exec(e),i=t&&n.extensions[t[1].toLowerCase()];if(!i||!i.length)return!1;return i[0]},n.extensions=Object.create(null),n.lookup=function(e){if(!e||"string"!=typeof e)return!1;var t=s("x."+e).toLowerCase().substr(1);if(!t)return!1;return n.types[t]||!1},n.types=Object.create(null),i=n.extensions,a=n.types,o=["nginx","apache",void 0,"iana"],Object.keys(r).forEach((function(e){var n=r[e],t=n.extensions;if(t&&t.length){i[e]=t;for(var s=0;s<t.length;s++){var c=t[s];if(a[c]){var u=o.indexOf(r[a[c]].source),p=o.indexOf(n.source);if("application/octet-stream"!==a[c]&&(u>p||u===p&&"application/"===a[c].substr(0,12)))continue}a[c]=e}}}))},function(e,n,t){
|
|
16
|
-
/*!
|
|
17
|
-
* mime-db
|
|
18
|
-
* Copyright(c) 2014 Jonathan Ong
|
|
19
|
-
* MIT Licensed
|
|
20
|
-
*/
|
|
21
|
-
e.exports=t(451)},function(e){e.exports=JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["ecma","es"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","compressible":true},"application/fhir+xml":{"source":"iana","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/mrb-publish+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/msc-ivr+xml":{"source":"iana","compressible":true},"application/msc-mixer+xml":{"source":"iana","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana"},"application/news-groupinfo":{"source":"iana"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana"},"application/nss":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana"},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","compressible":true},"application/pidf-diff+xml":{"source":"iana","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana"},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["keynote"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana"},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana"},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"apache","extensions":["der","crt","pem"]},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana"},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana"},"image/avcs":{"source":"iana"},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shex":{"extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana"},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana"},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}')},function(e,n,t){e.exports={parallel:t(453),serial:t(455),serialOrdered:t(200)}},function(e,n,t){var i=t(195),a=t(198),o=t(199);e.exports=function(e,n,t){var r=a(e);for(;r.index<(r.keyedList||e).length;)i(e,n,r,(function(e,n){e?t(e,n):0!==Object.keys(r.jobs).length||t(null,r.results)})),r.index++;return o.bind(r,t)}},function(e,n){e.exports=function(e){var n="function"==typeof setImmediate?setImmediate:"object"==typeof process&&"function"==typeof process.nextTick?process.nextTick:null;n?n(e):setTimeout(e,0)}},function(e,n,t){var i=t(200);e.exports=function(e,n,t){return i(e,n,null,t)}},function(e,n){e.exports=function(e,n){return Object.keys(n).forEach((function(t){e[t]=e[t]||n[t]})),e}},function(e,n,t){var i=t(458)();e.exports=i;try{regeneratorRuntime=i}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=i:Function("r","regeneratorRuntime = r")(i)}},function(e,n,t){var i=t(67).default;function a(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */e.exports=a=function(){return n},e.exports.__esModule=!0,e.exports.default=e.exports;var n={},t=Object.prototype,o=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",c=r.asyncIterator||"@@asyncIterator",u=r.toStringTag||"@@toStringTag";function p(e,n,t){return Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}),e[n]}try{p({},"")}catch(e){p=function(e,n,t){return e[n]=t}}function l(e,n,t,i){var a=n&&n.prototype instanceof m?n:m,o=Object.create(a.prototype),r=new O(i||[]);return o._invoke=function(e,n,t){var i="suspendedStart";return function(a,o){if("executing"===i)throw new Error("Generator is already running");if("completed"===i){if("throw"===a)throw o;return P()}for(t.method=a,t.arg=o;;){var r=t.delegate;if(r){var s=S(r,t);if(s){if(s===d)continue;return s}}if("next"===t.method)t.sent=t._sent=t.arg;else if("throw"===t.method){if("suspendedStart"===i)throw i="completed",t.arg;t.dispatchException(t.arg)}else"return"===t.method&&t.abrupt("return",t.arg);i="executing";var c=f(e,n,t);if("normal"===c.type){if(i=t.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:t.done}}"throw"===c.type&&(i="completed",t.method="throw",t.arg=c.arg)}}}(e,t,r),o}function f(e,n,t){try{return{type:"normal",arg:e.call(n,t)}}catch(e){return{type:"throw",arg:e}}}n.wrap=l;var d={};function m(){}function h(){}function v(){}var x={};p(x,s,(function(){return this}));var b=Object.getPrototypeOf,g=b&&b(b(E([])));g&&g!==t&&o.call(g,s)&&(x=g);var y=v.prototype=m.prototype=Object.create(x);function k(e){["next","throw","return"].forEach((function(n){p(e,n,(function(e){return this._invoke(n,e)}))}))}function w(e,n){var t;this._invoke=function(a,r){function s(){return new n((function(t,s){!function t(a,r,s,c){var u=f(e[a],e,r);if("throw"!==u.type){var p=u.arg,l=p.value;return l&&"object"==i(l)&&o.call(l,"__await")?n.resolve(l.__await).then((function(e){t("next",e,s,c)}),(function(e){t("throw",e,s,c)})):n.resolve(l).then((function(e){p.value=e,s(p)}),(function(e){return t("throw",e,s,c)}))}c(u.arg)}(a,r,t,s)}))}return t=t?t.then(s,s):s()}}function S(e,n){var t=e.iterator[n.method];if(void 0===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=void 0,S(e,n),"throw"===n.method))return d;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var i=f(t,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,d;var a=i.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=void 0),n.delegate=null,d):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,d)}function j(e){var n={tryLoc:e[0]};1 in e&&(n.catchLoc=e[1]),2 in e&&(n.finallyLoc=e[2],n.afterLoc=e[3]),this.tryEntries.push(n)}function _(e){var n=e.completion||{};n.type="normal",delete n.arg,e.completion=n}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(j,this),this.reset(!0)}function E(e){if(e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var t=-1,i=function n(){for(;++t<e.length;)if(o.call(e,t))return n.value=e[t],n.done=!1,n;return n.value=void 0,n.done=!0,n};return i.next=i}}return{next:P}}function P(){return{value:void 0,done:!0}}return h.prototype=v,p(y,"constructor",v),p(v,"constructor",h),h.displayName=p(v,u,"GeneratorFunction"),n.isGeneratorFunction=function(e){var n="function"==typeof e&&e.constructor;return!!n&&(n===h||"GeneratorFunction"===(n.displayName||n.name))},n.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,v):(e.__proto__=v,p(e,u,"GeneratorFunction")),e.prototype=Object.create(y),e},n.awrap=function(e){return{__await:e}},k(w.prototype),p(w.prototype,c,(function(){return this})),n.AsyncIterator=w,n.async=function(e,t,i,a,o){void 0===o&&(o=Promise);var r=new w(l(e,t,i,a),o);return n.isGeneratorFunction(t)?r:r.next().then((function(e){return e.done?e.value:r.next()}))},k(y),p(y,u,"Generator"),p(y,s,(function(){return this})),p(y,"toString",(function(){return"[object Generator]"})),n.keys=function(e){var n=[];for(var t in e)n.push(t);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=E,O.prototype={constructor:O,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(_),!e)for(var n in this)"t"===n.charAt(0)&&o.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function t(t,i){return r.type="throw",r.arg=e,n.next=t,i&&(n.method="next",n.arg=void 0),!!i}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],r=a.completion;if("root"===a.tryLoc)return t("end");if(a.tryLoc<=this.prev){var s=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(s&&c){if(this.prev<a.catchLoc)return t(a.catchLoc,!0);if(this.prev<a.finallyLoc)return t(a.finallyLoc)}else if(s){if(this.prev<a.catchLoc)return t(a.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return t(a.finallyLoc)}}}},abrupt:function(e,n){for(var t=this.tryEntries.length-1;t>=0;--t){var i=this.tryEntries[t];if(i.tryLoc<=this.prev&&o.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=n&&n<=a.finallyLoc&&(a=null);var r=a?a.completion:{};return r.type=e,r.arg=n,a?(this.method="next",this.next=a.finallyLoc,d):this.complete(r)},complete:function(e,n){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&n&&(this.next=n),d},finish:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),_(t),d}},catch:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.tryLoc===e){var i=t.completion;if("throw"===i.type){var a=i.arg;_(t)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,t){return this.delegate={iterator:E(e),resultName:n,nextLoc:t},"next"===this.method&&(this.arg=void 0),d}},n}e.exports=a,e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n){function t(e,n,t,i,a,o,r){try{var s=e[o](r),c=s.value}catch(e){return void t(e)}s.done?n(c):Promise.resolve(c).then(i,a)}e.exports=function(e){return function(){var n=this,i=arguments;return new Promise((function(a,o){var r=e.apply(n,i);function s(e){t(r,a,o,s,c,"next",e)}function c(e){t(r,a,o,s,c,"throw",e)}s(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1;if(0===t)throw Error("Max count can't be 0");var i=(0,a.default)({},Symbol.asyncIterator,(function(){var i=0,a=0,r=[],c=!1;return{next:function(){return new Promise((function(u,p){(0===i||i%10==0&&c)&&u((0,o.default)(e,s(s({},n),{pageOffset:a,pageLimit:10})).then((function(e){r=e.rows,a+=r.length,c=0!==r.length&&(-1===t?10===r.length:i<t)}))),u(0)})).then((function(){var e=r[i%10],n=!((-1===t?i<a:i<t)&&c);return i++,Promise.resolve({value:e,done:n})}))},return:function(){return Promise.resolve({value:i,done:!0})}}}));return i};var a=i(t(30));t(31),t(169),t(23),t(34),t(14),t(24),t(33),t(11),t(35),t(32),t(8);var o=i(t(131));function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}e.exports=n.default},function(e,n,t){"use strict";t(8),t(11),t(14),Object.defineProperty(n,"__esModule",{value:!0});var i=t(131);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===i[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return i[e]}}))}));var a=t(207);Object.keys(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===a[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return a[e]}}))}));var o=t(206);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===o[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return o[e]}}))}));var r=t(208);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===r[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}}))}))},function(e,n,t){"use strict";t(8),t(11),t(14),Object.defineProperty(n,"__esModule",{value:!0});var i=t(203);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===i[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return i[e]}}))}));var a=t(204);Object.keys(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===a[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return a[e]}}))}));var o=t(192);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===o[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return o[e]}}))}));var r=t(174);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===r[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}}))}));var s=t(129);Object.keys(s).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===s[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return s[e]}}))}));var c=t(201);Object.keys(c).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===c[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return c[e]}}))}));var u=t(202);Object.keys(u).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===u[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return u[e]}}))}));var p=t(205);Object.keys(p).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===p[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return p[e]}}))}))}])}));
|
|
22
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9waW5hdGEtc2RrL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9waW5hdGEtc2RrL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19leHBvcnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FuLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZ2xvYmFsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtb2JqZWN0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL193a3MuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1kcC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tb2JqZWN0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi91dGlscy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faGlkZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVkZWZpbmUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1odG1sLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oYXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BkLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ3BvLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvcmUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pbnRlZ2VyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpY3QtbWV0aG9kLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3ltYm9sLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnByb21pc2UuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LW1ldGhvZHMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RlZmluZWQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1zYXAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb25zdGFudHMudHMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9zcmMvdXRpbC92YWxpZGF0b3JzLnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9zcmMvdXRpbC9lcnJvclJlc3BvbnNlLnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19saWJyYXJ5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3VpZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWtleXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FuLWluc3RhbmNlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mb3Itb2YuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdmFsaWRhdGUtY29sbGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NsYXNzb2YuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy10cmltLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyYXRvcnMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy92YXJpbnQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NoYXJlZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW9iamVjdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtcGllLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5mdW5jdGlvbi5uYW1lLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mbGFncy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2lzLWlwZnMvc3JjL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctYXQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLXJlZ2V4cC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1kZXRlY3QuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZ2V4cC1leGVjLWFic3RyYWN0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19maXgtcmUtd2tzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL191c2VyLWFnZW50LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2xsZWN0aW9uLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190eXBlZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWZvcmNlZC1wYW0uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC1jb2xsZWN0aW9uLW9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtY29sbGVjdGlvbi1mcm9tLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJzdHJlYW1cIiIsIndlYnBhY2s6Ly9waW5hdGEtc2RrL2V4dGVybmFsIFwidXRpbFwiIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYnM1OC9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktc3BlY2llcy1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2h0bWwuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC1wcm90by5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXdzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2luaGVyaXQtaWYtcmVxdWlyZWQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1yZXBlYXQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5pcy1pbnRlZ2VyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLXNpZ24uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX21hdGgtZXhwbTEuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZhaWxzLWlzLXJlZ2V4cC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktZmlsbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZ2V4cC1leGVjLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZHZhbmNlLXN0cmluZy1pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdGFzay5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWljcm90YXNrLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190eXBlZC1idWZmZXIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5lbnRyaWVzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9jcmVhdGVFcnJvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrL2V4dGVybmFsIFwiaHR0cFwiIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJodHRwc1wiIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJ1cmxcIiIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpaGFzaGVzL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpYWRkci9zcmMvcHJvdG9jb2xzLXRhYmxlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY2lkcy9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9waW5uaW5nL3BpbkZpbGVUb0lQRlMudHMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay9leHRlcm5hbCBcInBhdGhcIiIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL2RhdGEvcGluTGlzdC9waW5MaXN0LnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy1leHQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1kcHMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2FtZS12YWx1ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYmluZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW52b2tlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wYXJzZS1pbnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BhcnNlLWZsb2F0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLW51bWJlci12YWx1ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1sb2cxcC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1mcm91bmQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8taXNvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXMtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY2FsbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc2xpY2UuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnNvcnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LXJlZHVjZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktY29weS13aXRoaW4uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItc3RlcC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLmV4ZWMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5mbGFncy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnNwbGl0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wZXJmb3JtLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wcm9taXNlLXJlc29sdmUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hcC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi1zdHJvbmcuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnNldC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1tYXAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24td2Vhay5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX293bi1rZXlzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mbGF0dGVuLWludG8tYXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1wYWQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXRvLWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2xsZWN0aW9uLXRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWZyb20taXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX21hdGgtc2NhbGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9waW5uaW5nL3BpbkJ5SGFzaC50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2JpbmQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL2lzQ2FuY2VsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2RlZmF1bHRzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZW5oYW5jZUVycm9yLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2ZvbGxvdy1yZWRpcmVjdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvY29tbW9uLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJvc1wiIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvbWVyZ2VDb25maWcuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2Jhc2UteC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay9leHRlcm5hbCBcImJ1ZmZlclwiIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXVsdGliYXNlL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpYWRkci9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWNvZGVjL3NyYy91dGlsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY2xhc3MtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9waW5uaW5nL2hhc2hNZXRhZGF0YS50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2Zvcm0tZGF0YS9saWIvZm9ybV9kYXRhLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJmc1wiIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXN5bmNraXQvbGliL2l0ZXJhdGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvYXN5bmMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvYWJvcnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvc3RhdGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvdGVybWluYXRvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2FzeW5ja2l0L3NlcmlhbE9yZGVyZWQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9waW5uaW5nL3BpbkZyb21GUy50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL3Bpbm5pbmcvcGluSlNPTlRvSVBGUy50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL3Bpbm5pbmcvcGluSm9icy9waW5Kb2JzLnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9zcmMvY29tbWFuZHMvcGlubmluZy9waW5Kb2JzL3F1ZXJ5QnVpbGRlci50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL3Bpbm5pbmcvdW5waW4udHMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9kYXRhL3Rlc3RBdXRoZW50aWNhdGlvbi50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL2RhdGEvcGluTGlzdC9xdWVyeUJ1aWxkZXIudHMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9kYXRhL3VzZXJQaW5uZWREYXRhVG90YWwudHMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZnVuY3Rpb24tdG8tc3RyaW5nLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9yZXF1aXJlLWJhYmVsLXBvbHlmaWxsLnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYmFiZWwtcG9seWZpbGwvbGliL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9zaGltLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19lbnVtLWtleXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmZyZWV6ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnNlYWwuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1mcm96ZW4uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1zZWFsZWQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1leHRlbnNpYmxlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuYXNzaWduLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5mdW5jdGlvbi5iaW5kLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5mdW5jdGlvbi5oYXMtaW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnBhcnNlLWludC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucGFyc2UtZmxvYXQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci50by1maXhlZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnRvLXByZWNpc2lvbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmVwc2lsb24uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5pcy1maW5pdGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5pcy1uYW4uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5pcy1zYWZlLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5tYXgtc2FmZS1pbnRlZ2VyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIubWluLXNhZmUtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWZsb2F0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIucGFyc2UtaW50LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmFjb3NoLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmFzaW5oLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmF0YW5oLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmNicnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguY2x6MzIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguY29zaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5leHBtMS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5mcm91bmQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguaHlwb3QuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguaW11bC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cxMC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cxcC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLnNpZ24uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguc2luaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC50YW5oLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLnRydW5jLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuZnJvbS1jb2RlLXBvaW50LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcucmF3LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcudHJpbS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuY29kZS1wb2ludC1hdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmVuZHMtd2l0aC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmluY2x1ZGVzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcucmVwZWF0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuc3RhcnRzLXdpdGguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5hbmNob3IuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5iaWcuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5ibGluay5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJvbGQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5maXhlZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRjb2xvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRzaXplLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuaXRhbGljcy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmxpbmsuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5zbWFsbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0cmlrZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1Yi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1cC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS5ub3cuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8tanNvbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGF0ZS10by1pc28tc3RyaW5nLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5kYXRlLnRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RhdGUtdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5mcm9tLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5vZi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuam9pbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkubWFwLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5zb21lLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5ldmVyeS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UtcmlnaHQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5sYXN0LWluZGV4LW9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5jb3B5LXdpdGhpbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmlsbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC1pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLmNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAudG8tc3RyaW5nLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAubWF0Y2guanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuc2VhcmNoLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi53ZWFrLXNldC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuYXJyYXktYnVmZmVyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5kYXRhLXZpZXcuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmludDgtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLnVpbnQ4LWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC51aW50OC1jbGFtcGVkLWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5pbnQxNi1hcnJheS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDE2LWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5pbnQzMi1hcnJheS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDMyLWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5mbG9hdDMyLWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5mbG9hdDY0LWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmFwcGx5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmNvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVsZXRlLXByb3BlcnR5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmVudW1lcmF0ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuaGFzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmlzLWV4dGVuc2libGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3Qub3duLWtleXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QucHJldmVudC1leHRlbnNpb25zLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5hcnJheS5pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXJyYXkuZmxhdC1tYXAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmZsYXR0ZW4uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy5hdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1zdGFydC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1lbmQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy50cmltLWxlZnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy50cmltLXJpZ2h0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcubWF0Y2gtYWxsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LnZhbHVlcy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1nZXR0ZXIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5kZWZpbmUtc2V0dGVyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QubG9va3VwLWdldHRlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1zZXR0ZXIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hcC50by1qc29uLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zZXQudG8tanNvbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLm9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zZXQub2YuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstbWFwLm9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy53ZWFrLXNldC5vZi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLmZyb20uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnNldC5mcm9tLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy53ZWFrLW1hcC5mcm9tLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy53ZWFrLXNldC5mcm9tLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5c3RlbS5nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmVycm9yLmlzLWVycm9yLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLmNsYW1wLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLmRlZy1wZXItcmFkLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLmRlZ3JlZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguZnNjYWxlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLmlhZGRoLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLmlzdWJoLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLmltdWxoLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnJhZC1wZXItZGVnLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnJhZGlhbnMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguc2NhbGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGgudW11bGguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguc2lnbmJpdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5kZWZpbmUtbWV0YWRhdGEuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZGVsZXRlLW1ldGFkYXRhLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtbWV0YWRhdGEta2V5cy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEta2V5cy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5oYXMtbWV0YWRhdGEuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuaGFzLW93bi1tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXNhcC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JzZXJ2YWJsZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudGltZXJzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5pbW1lZGlhdGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vcmVnZXhwL2VzY2FwZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9jb3JlLnJlZ2V4cC5lc2NhcGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlcGxhY2VyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2F4aW9zLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9JbnRlcmNlcHRvck1hbmFnZXIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9kaXNwYXRjaFJlcXVlc3QuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS90cmFuc2Zvcm1EYXRhLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9hZGFwdGVycy94aHIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL2h0dHAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay9leHRlcm5hbCBcImFzc2VydFwiIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvZm9sbG93LXJlZGlyZWN0cy9kZWJ1Zy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9icm93c2VyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvbm9kZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrL2V4dGVybmFsIFwidHR5XCIiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9zdXBwb3J0cy1jb2xvci9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2hhcy1mbGFnL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJ6bGliXCIiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvc3ByZWFkLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvc2FmZS1idWZmZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWhhc2hlcy9zcmMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvdmFyaW50L2VuY29kZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL3ZhcmludC9kZWNvZGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy92YXJpbnQvbGVuZ3RoLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXVsdGliYXNlL3NyYy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWJhc2Uvc3JjL2Jhc2UuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWJhc2Uvc3JjL2Jhc2UxNi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpYmFzZS9zcmMvYmFzZTMyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXVsdGliYXNlL3NyYy9iYXNlNjQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWFkZHIvc3JjL2NvZGVjLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXVsdGlhZGRyL3NyYy9jb252ZXJ0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvaXAvbGliL2lwLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvaXMtaXAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9pcC1yZWdleC9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpY29kZWMvc3JjL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXVsdGljb2RlYy9zcmMvaW50LXRhYmxlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXVsdGljb2RlYy9zcmMvdmFyaW50LXRhYmxlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXVsdGljb2RlYy9zcmMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXVsdGljb2RlYy9zcmMvcHJpbnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jaWRzL3NyYy9jaWQtdXRpbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2hpLWJhc2UzMi9zcmMvYmFzZTMyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvKHdlYnBhY2spL2J1aWxkaW4vYW1kLW9wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tYWZtdC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb21iaW5lZC1zdHJlYW0vbGliL2NvbWJpbmVkX3N0cmVhbS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2RlbGF5ZWQtc3RyZWFtL2xpYi9kZWxheWVkX3N0cmVhbS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL21pbWUtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9taW1lLWRiL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXN5bmNraXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9wYXJhbGxlbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2FzeW5ja2l0L2xpYi9kZWZlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2FzeW5ja2l0L3NlcmlhbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2Zvcm0tZGF0YS9saWIvcG9wdWxhdGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvci9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcmVnZW5lcmF0b3JSdW50aW1lLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9zcmMvY29tbWFuZHMvZGF0YS9nZXRGaWxlc0J5Q291bnQvZ2V0RmlsZXNCeUNvdW50LnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9zcmMvY29tbWFuZHMvZGF0YS9pbmRleC50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL3Bpbm5pbmcvaW5kZXgudHMiXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsInRoaXMiLCJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwiZ2xvYmFsIiwiY29yZSIsImhpZGUiLCJyZWRlZmluZSIsImN0eCIsIiRleHBvcnQiLCJ0eXBlIiwic291cmNlIiwib3duIiwib3V0IiwiZXhwIiwiSVNfRk9SQ0VEIiwiRiIsIklTX0dMT0JBTCIsIkciLCJJU19TVEFUSUMiLCJTIiwiSVNfUFJPVE8iLCJQIiwiSVNfQklORCIsIkIiLCJ0YXJnZXQiLCJleHBQcm90byIsInVuZGVmaW5lZCIsIkZ1bmN0aW9uIiwiVSIsIlciLCJSIiwiaXNPYmplY3QiLCJpdCIsIlR5cGVFcnJvciIsIndpbmRvdyIsIk1hdGgiLCJfX2ciLCJleGVjIiwiZSIsInN0b3JlIiwidWlkIiwiVVNFX1NZTUJPTCIsInRvSW50ZWdlciIsIm1pbiIsImEiLCJmIiwiYW5PYmplY3QiLCJJRThfRE9NX0RFRklORSIsInRvUHJpbWl0aXZlIiwiZFAiLCJPIiwiQXR0cmlidXRlcyIsImRlZmluZWQiLCIkZm9yRWFjaCIsIlNUUklDVCIsImZvckVhY2giLCJjYWxsYmFja2ZuIiwiYXJndW1lbnRzIiwib2JqIiwidG9PYmplY3QiLCIka2V5cyIsInRvU3RyaW5nIiwiaXNBcnJheSIsInZhbCIsImlzVW5kZWZpbmVkIiwiaXNQbGFpbk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwiaXNGdW5jdGlvbiIsImZuIiwibGVuZ3RoIiwiaXNBcnJheUJ1ZmZlciIsImlzQnVmZmVyIiwiY29uc3RydWN0b3IiLCJpc0Zvcm1EYXRhIiwiRm9ybURhdGEiLCJpc0FycmF5QnVmZmVyVmlldyIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwiYnVmZmVyIiwiaXNTdHJpbmciLCJpc051bWJlciIsImlzRGF0ZSIsImlzRmlsZSIsImlzQmxvYiIsImlzU3RyZWFtIiwicGlwZSIsImlzVVJMU2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiaXNTdGFuZGFyZEJyb3dzZXJFbnYiLCJuYXZpZ2F0b3IiLCJwcm9kdWN0IiwiZG9jdW1lbnQiLCJtZXJnZSIsInJlc3VsdCIsImFzc2lnblZhbHVlIiwic2xpY2UiLCJleHRlbmQiLCJiIiwidGhpc0FyZyIsInRyaW0iLCJzdHIiLCJyZXBsYWNlIiwic3RyaXBCT00iLCJjb250ZW50IiwiY2hhckNvZGVBdCIsImNyZWF0ZURlc2MiLCJoYXMiLCJTUkMiLCIkdG9TdHJpbmciLCJUUEwiLCJzcGxpdCIsImluc3BlY3RTb3VyY2UiLCJzYWZlIiwiam9pbiIsIlN0cmluZyIsImZhaWxzIiwicXVvdCIsImNyZWF0ZUhUTUwiLCJzdHJpbmciLCJ0YWciLCJhdHRyaWJ1dGUiLCJwMSIsIk5BTUUiLCJ0ZXN0IiwidG9Mb3dlckNhc2UiLCJJT2JqZWN0IiwicElFIiwidG9JT2JqZWN0IiwiZ09QRCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIklFX1BST1RPIiwiT2JqZWN0UHJvdG8iLCJjbGFzc29mIiwiJGZpbHRlciIsImZpbHRlciIsInZlcnNpb24iLCJfX2UiLCJhRnVuY3Rpb24iLCJ0aGF0IiwiYXBwbHkiLCJjZWlsIiwiZmxvb3IiLCJpc05hTiIsIm1ldGhvZCIsImFyZyIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiREVTQ1JJUFRPUlMiLCJNRVRBIiwiS0VZIiwiJGZhaWxzIiwic2hhcmVkIiwic2V0VG9TdHJpbmdUYWciLCJ3a3MiLCJ3a3NFeHQiLCJ3a3NEZWZpbmUiLCJlbnVtS2V5cyIsIl9jcmVhdGUiLCJnT1BORXh0IiwiJEdPUEQiLCIkR09QUyIsIiREUCIsImdPUE4iLCIkU3ltYm9sIiwiJEpTT04iLCJKU09OIiwiX3N0cmluZ2lmeSIsInN0cmluZ2lmeSIsIkhJRERFTiIsIlRPX1BSSU1JVElWRSIsImlzRW51bSIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiU3ltYm9sUmVnaXN0cnkiLCJBbGxTeW1ib2xzIiwiT1BTeW1ib2xzIiwiVVNFX05BVElWRSIsIlFPYmplY3QiLCJzZXR0ZXIiLCJmaW5kQ2hpbGQiLCJzZXRTeW1ib2xEZXNjIiwiRCIsInByb3RvRGVzYyIsIndyYXAiLCJzeW0iLCJfayIsImlzU3ltYm9sIiwiaXRlcmF0b3IiLCIkZGVmaW5lUHJvcGVydHkiLCIkZGVmaW5lUHJvcGVydGllcyIsImtleXMiLCIkcHJvcGVydHlJc0VudW1lcmFibGUiLCJFIiwiJGdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIiRnZXRPd25Qcm9wZXJ0eU5hbWVzIiwibmFtZXMiLCJwdXNoIiwiJGdldE93blByb3BlcnR5U3ltYm9scyIsIklTX09QIiwiJHNldCIsInNldCIsImVzNlN5bWJvbHMiLCJqIiwid2VsbEtub3duU3ltYm9scyIsImsiLCJrZXlGb3IiLCJ1c2VTZXR0ZXIiLCJ1c2VTaW1wbGUiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIkZBSUxTX09OX1BSSU1JVElWRVMiLCJyZXBsYWNlciIsIiRyZXBsYWNlciIsImFyZ3MiLCJ2YWx1ZU9mIiwiSW50ZXJuYWwiLCJuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkiLCJPd25Qcm9taXNlQ2FwYWJpbGl0eSIsIldyYXBwZXIiLCJMSUJSQVJZIiwiYW5JbnN0YW5jZSIsImZvck9mIiwic3BlY2llc0NvbnN0cnVjdG9yIiwidGFzayIsIm1pY3JvdGFzayIsIm5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlIiwicGVyZm9ybSIsInVzZXJBZ2VudCIsInByb21pc2VSZXNvbHZlIiwicHJvY2VzcyIsInZlcnNpb25zIiwidjgiLCIkUHJvbWlzZSIsImlzTm9kZSIsImVtcHR5IiwibmV3UHJvbWlzZUNhcGFiaWxpdHkiLCJwcm9taXNlIiwicmVzb2x2ZSIsIkZha2VQcm9taXNlIiwiUHJvbWlzZVJlamVjdGlvbkV2ZW50IiwidGhlbiIsImluZGV4T2YiLCJpc1RoZW5hYmxlIiwibm90aWZ5IiwiaXNSZWplY3QiLCJfbiIsImNoYWluIiwiX2MiLCJfdiIsIm9rIiwiX3MiLCJydW4iLCJyZWFjdGlvbiIsImV4aXRlZCIsImhhbmRsZXIiLCJmYWlsIiwicmVqZWN0IiwiZG9tYWluIiwiX2giLCJvbkhhbmRsZVVuaGFuZGxlZCIsImVudGVyIiwiZXhpdCIsIm9uVW5oYW5kbGVkIiwiY29uc29sZSIsInVuaGFuZGxlZCIsImlzVW5oYW5kbGVkIiwiZW1pdCIsIm9udW5oYW5kbGVkcmVqZWN0aW9uIiwicmVhc29uIiwiZXJyb3IiLCJfYSIsInYiLCJvbnJlamVjdGlvbmhhbmRsZWQiLCIkcmVqZWN0IiwiX2QiLCJfdyIsIiRyZXNvbHZlIiwid3JhcHBlciIsImV4ZWN1dG9yIiwiZXJyIiwib25GdWxmaWxsZWQiLCJvblJlamVjdGVkIiwiQyIsIlByb21pc2UiLCJjYXBhYmlsaXR5IiwiJCRyZWplY3QiLCJ4IiwiaXRlciIsImFsbCIsIml0ZXJhYmxlIiwidmFsdWVzIiwiaW5kZXgiLCJyZW1haW5pbmciLCIkaW5kZXgiLCJhbHJlYWR5Q2FsbGVkIiwicmFjZSIsIm93bktleXMiLCJjcmVhdGVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZXNjIiwiZ2V0RGVzYyIsInRvTGVuZ3RoIiwiYXNjIiwiVFlQRSIsIiRjcmVhdGUiLCJJU19NQVAiLCJJU19GSUxURVIiLCJJU19TT01FIiwiSVNfRVZFUlkiLCJJU19GSU5EX0lOREVYIiwiTk9fSE9MRVMiLCIkdGhpcyIsInJlcyIsIiR0eXBlZCIsIiRidWZmZXIiLCJwcm9wZXJ0eURlc2MiLCJyZWRlZmluZUFsbCIsInRvSW5kZXgiLCJ0b0Fic29sdXRlSW5kZXgiLCJpc0FycmF5SXRlciIsImdldEl0ZXJGbiIsImNyZWF0ZUFycmF5TWV0aG9kIiwiY3JlYXRlQXJyYXlJbmNsdWRlcyIsIkFycmF5SXRlcmF0b3JzIiwiSXRlcmF0b3JzIiwiJGl0ZXJEZXRlY3QiLCJzZXRTcGVjaWVzIiwiYXJyYXlGaWxsIiwiYXJyYXlDb3B5V2l0aGluIiwiUmFuZ2VFcnJvciIsIlVpbnQ4QXJyYXkiLCJBcnJheVByb3RvIiwiQXJyYXkiLCIkQXJyYXlCdWZmZXIiLCIkRGF0YVZpZXciLCJEYXRhVmlldyIsImFycmF5Rm9yRWFjaCIsImFycmF5RmlsdGVyIiwiYXJyYXlTb21lIiwiYXJyYXlFdmVyeSIsImFycmF5RmluZCIsImFycmF5RmluZEluZGV4IiwiYXJyYXlJbmNsdWRlcyIsImFycmF5SW5kZXhPZiIsImFycmF5VmFsdWVzIiwiYXJyYXlLZXlzIiwiYXJyYXlFbnRyaWVzIiwiZW50cmllcyIsImFycmF5TGFzdEluZGV4T2YiLCJsYXN0SW5kZXhPZiIsImFycmF5UmVkdWNlIiwicmVkdWNlIiwiYXJyYXlSZWR1Y2VSaWdodCIsInJlZHVjZVJpZ2h0IiwiYXJyYXlKb2luIiwiYXJyYXlTb3J0Iiwic29ydCIsImFycmF5U2xpY2UiLCJhcnJheVRvU3RyaW5nIiwiYXJyYXlUb0xvY2FsZVN0cmluZyIsInRvTG9jYWxlU3RyaW5nIiwiSVRFUkFUT1IiLCJUQUciLCJUWVBFRF9DT05TVFJVQ1RPUiIsIkRFRl9DT05TVFJVQ1RPUiIsIkFMTF9DT05TVFJVQ1RPUlMiLCJDT05TVFIiLCJUWVBFRF9BUlJBWSIsIlRZUEVEIiwiVklFVyIsIiRtYXAiLCJhbGxvY2F0ZSIsIkxJVFRMRV9FTkRJQU4iLCJVaW50MTZBcnJheSIsIkZPUkNFRF9TRVQiLCJ0b09mZnNldCIsIkJZVEVTIiwib2Zmc2V0IiwidmFsaWRhdGUiLCJzcGVjaWVzRnJvbUxpc3QiLCJsaXN0IiwiZnJvbUxpc3QiLCJhZGRHZXR0ZXIiLCJpbnRlcm5hbCIsIiRmcm9tIiwic3RlcCIsImFMZW4iLCJtYXBmbiIsIm1hcHBpbmciLCJpdGVyRm4iLCJuZXh0IiwiZG9uZSIsIiRvZiIsIlRPX0xPQ0FMRV9CVUciLCIkdG9Mb2NhbGVTdHJpbmciLCJwcm90byIsImNvcHlXaXRoaW4iLCJzdGFydCIsImV2ZXJ5IiwiZmlsbCIsImZpbmQiLCJwcmVkaWNhdGUiLCJmaW5kSW5kZXgiLCJzZWFyY2hFbGVtZW50IiwiaW5jbHVkZXMiLCJzZXBhcmF0b3IiLCJtYXAiLCJyZXZlcnNlIiwibWlkZGxlIiwic29tZSIsImNvbXBhcmVmbiIsInN1YmFycmF5IiwiYmVnaW4iLCJlbmQiLCIkYmVnaW4iLCJieXRlT2Zmc2V0IiwiQllURVNfUEVSX0VMRU1FTlQiLCIkc2xpY2UiLCJhcnJheUxpa2UiLCJzcmMiLCJsZW4iLCIkaXRlcmF0b3JzIiwiaXNUQUluZGV4IiwiJGdldERlc2MiLCIkc2V0RGVzYyIsIiRUeXBlZEFycmF5UHJvdG90eXBlJCIsIkNMQU1QRUQiLCJHRVRURVIiLCJTRVRURVIiLCJUeXBlZEFycmF5IiwiQmFzZSIsIlRBQyIsIkZPUkNFRCIsIkFCViIsIlR5cGVkQXJyYXlQcm90b3R5cGUiLCJhZGRFbGVtZW50IiwiZGF0YSIsInJvdW5kIiwiJG9mZnNldCIsIiRsZW5ndGgiLCJieXRlTGVuZ3RoIiwia2xhc3MiLCIkbGVuIiwiY29uY2F0IiwiJG5hdGl2ZUl0ZXJhdG9yIiwiQ09SUkVDVF9JVEVSX05BTUUiLCIkaXRlcmF0b3IiLCJvZiIsImZyb20iLCJNYXAiLCJnZXRPckNyZWF0ZU1ldGFkYXRhTWFwIiwidGFyZ2V0S2V5IiwidGFyZ2V0TWV0YWRhdGEiLCJrZXlNZXRhZGF0YSIsIk1ldGFkYXRhS2V5IiwibWV0YWRhdGFNYXAiLCJNZXRhZGF0YVZhbHVlIiwiXyIsImNvbmZpZyIsImJvdW5kYXJ5VmFsdWUiLCJyZXF1ZXN0T3B0aW9ucyIsImNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyIsIm1heENvbnRlbnRMZW5ndGgiLCJJbmZpbml0eSIsIm1heEJvZHlMZW5ndGgiLCJoZWFkZXJzIiwicGluYXRhQXBpS2V5IiwicGluYXRhU2VjcmV0QXBpS2V5IiwiRXJyb3IiLCJtZXRhZGF0YSIsImtleXZhbHVlcyIsImtleVZhbHVlIiwib3B0aW9ucyIsImNpZFZlcnNpb24iLCJ3cmFwV2l0aERpcmVjdG9yeSIsImhvc3ROb2RlcyIsInZhbGlkYXRlSG9zdE5vZGVzIiwiY3VzdG9tUGluUG9saWN5IiwidmFsaWRhdGVQaW5Qb2xpY3lTdHJ1Y3R1cmUiLCJ3aXRoQ3JlZGVudGlhbHMiLCJwaW5hdGFfYXBpX2tleSIsInBpbmF0YV9zZWNyZXRfYXBpX2tleSIsInBpbmF0YUpXVEtleSIsIkF1dGhvcml6YXRpb24iLCJFUlJPUl9OT19DUkVERU5USUFMU19QUk9WSURFRCIsIm5vZGUiLCJpc0lQRlMiLCJwZWVyTXVsdGlhZGRyIiwicGluUG9saWN5IiwicmVnaW9ucyIsInJlZ2lvbiIsImlkIiwiZGVzaXJlZFJlcGxpY2F0aW9uQ291bnQiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJyZXNwb25zZSIsInNldERlc2MiLCJpc0V4dGVuc2libGUiLCJGUkVFWkUiLCJwcmV2ZW50RXh0ZW5zaW9ucyIsInNldE1ldGEiLCJ3IiwibWV0YSIsIk5FRUQiLCJmYXN0S2V5IiwiZ2V0V2VhayIsIm9uRnJlZXplIiwiVU5TQ09QQUJMRVMiLCJiaXRtYXAiLCJweCIsInJhbmRvbSIsImVudW1CdWdLZXlzIiwibWF4IiwiZFBzIiwiRW1wdHkiLCJjcmVhdGVEaWN0IiwiaWZyYW1lRG9jdW1lbnQiLCJpZnJhbWUiLCJzdHlsZSIsImRpc3BsYXkiLCJhcHBlbmRDaGlsZCIsImNvbnRlbnRXaW5kb3ciLCJvcGVuIiwid3JpdGUiLCJsdCIsImNsb3NlIiwiUHJvcGVydGllcyIsImhpZGRlbktleXMiLCJTUEVDSUVTIiwiQ29uc3RydWN0b3IiLCJmb3JiaWRkZW5GaWVsZCIsIkJSRUFLIiwiUkVUVVJOIiwiX3QiLCJkZWYiLCJzdGF0IiwiY29mIiwiQVJHIiwiVCIsInRyeUdldCIsImNhbGxlZSIsInNwYWNlcyIsInNwYWNlIiwibHRyaW0iLCJSZWdFeHAiLCJydHJpbSIsImV4cG9ydGVyIiwiQUxJQVMiLCJGT1JDRSIsImVuY29kZSIsImRlY29kZSIsImVuY29kaW5nTGVuZ3RoIiwiY29weXJpZ2h0IiwiX3R5cGVvZiIsIkZQcm90byIsIm5hbWVSRSIsIm1hdGNoIiwiaWdub3JlQ2FzZSIsIm11bHRpbGluZSIsInVuaWNvZGUiLCJzdGlja3kiLCJiYXNlNTgiLCJtdWx0aWhhc2giLCJtdWx0aWJhc2UiLCJNdWx0aWFkZHIiLCJtYWZtdCIsIkNJRCIsInVybFBhdHRlcm4iLCJwYXRoUGF0dGVybiIsImZxZG5QYXR0ZXJuIiwiaXNDSUQiLCJoYXNoIiwiaXNNdWx0aWFkZHIiLCJpbnB1dCIsImlzSXBmcyIsInBhdHRlcm4iLCJwcm90b2NvbE1hdGNoIiwiaGFzaE1hdGNoIiwiZm9ybWF0dGVkIiwiY29udmVydFRvU3RyaW5nIiwiaXNJcG5zIiwiQnVmZmVyIiwiaXBmc1N1YmRvbWFpbiIsInVybCIsImlwbnNTdWJkb21haW4iLCJtdWx0aWFkZHIiLCJJUEZTIiwibWF0Y2hlcyIsImNpZCIsImJhc2UzMmNpZCIsImlzRW5jb2RlZCIsImlzTXVsdGliYXNlIiwic3ViZG9tYWluIiwic3ViZG9tYWluUGF0dGVybiIsImlwZnNVcmwiLCJpcG5zVXJsIiwiaXBmc1BhdGgiLCJwYXRoIiwiaXBuc1BhdGgiLCJ1cmxPclBhdGgiLCJjaWRQYXRoIiwiSVNfSU5DTFVERVMiLCJlbCIsImZyb21JbmRleCIsIlRPX1NUUklORyIsInBvcyIsImNoYXJBdCIsIk1BVENIIiwiaXNSZWdFeHAiLCJTQUZFX0NMT1NJTkciLCJyaXRlciIsInNraXBDbG9zaW5nIiwiYXJyIiwiYnVpbHRpbkV4ZWMiLCJyZWdleHBFeGVjIiwiUkVQTEFDRV9TVVBQT1JUU19OQU1FRF9HUk9VUFMiLCJyZSIsImdyb3VwcyIsIlNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQyIsIm9yaWdpbmFsRXhlYyIsIlNZTUJPTCIsIkRFTEVHQVRFU19UT19TWU1CT0wiLCJERUxFR0FURVNfVE9fRVhFQyIsImV4ZWNDYWxsZWQiLCJuYXRpdmVSZWdFeHBNZXRob2QiLCJmbnMiLCJuYXRpdmVNZXRob2QiLCJyZWdleHAiLCJhcmcyIiwiZm9yY2VTdHJpbmdNZXRob2QiLCJzdHJmbiIsInJ4Zm4iLCJpbmhlcml0SWZSZXF1aXJlZCIsIm1ldGhvZHMiLCJjb21tb24iLCJJU19XRUFLIiwiQURERVIiLCJmaXhNZXRob2QiLCJpbnN0YW5jZSIsIkhBU05UX0NIQUlOSU5HIiwiVEhST1dTX09OX1BSSU1JVElWRVMiLCJBQ0NFUFRfSVRFUkFCTEVTIiwiQlVHR1lfWkVSTyIsIiRpbnN0YW5jZSIsImNsZWFyIiwiZ2V0Q29uc3RydWN0b3IiLCJzZXRTdHJvbmciLCJUeXBlZCIsIlR5cGVkQXJyYXlDb25zdHJ1Y3RvcnMiLCJLIiwiX19kZWZpbmVTZXR0ZXJfXyIsIkNPTExFQ1RJT04iLCJBIiwiY2IiLCJtYXBGbiIsIm5leHRJdGVtIiwicmVxdWlyZSIsImJhc2V4IiwiaXMiLCJjcmVhdGVFbGVtZW50Iiwib3JpZ2luYWwiLCJkb2N1bWVudEVsZW1lbnQiLCJjaGVjayIsInNldFByb3RvdHlwZU9mIiwiYnVnZ3kiLCJfX3Byb3RvX18iLCIkdHJpbSIsIiROdW1iZXIiLCJCUk9LRU5fQ09GIiwiVFJJTSIsInRvTnVtYmVyIiwiYXJndW1lbnQiLCJ0aGlyZCIsInJhZGl4IiwibWF4Q29kZSIsImZpcnN0IiwiTmFOIiwiY29kZSIsImRpZ2l0cyIsInBhcnNlSW50IiwiY291bnQiLCJzaWduIiwiJGV4cG0xIiwiZXhwbTEiLCIkaXRlckNyZWF0ZSIsIkJVR0dZIiwicmV0dXJuVGhpcyIsIkRFRkFVTFQiLCJJU19TRVQiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldE1ldGhvZCIsImtpbmQiLCJERUZfVkFMVUVTIiwiVkFMVUVTX0JVRyIsIiRuYXRpdmUiLCIkZGVmYXVsdCIsIiRlbnRyaWVzIiwiJGFueU5hdGl2ZSIsImRlc2NyaXB0b3IiLCJzZWFyY2hTdHJpbmciLCJnZXRJdGVyYXRvck1ldGhvZCIsImVuZFBvcyIsImFkZFRvVW5zY29wYWJsZXMiLCJpdGVyYXRlZCIsIl9pIiwiQXJndW1lbnRzIiwicmUxIiwicmUyIiwicmVnZXhwRmxhZ3MiLCJuYXRpdmVFeGVjIiwibmF0aXZlUmVwbGFjZSIsInBhdGNoZWRFeGVjIiwiVVBEQVRFU19MQVNUX0lOREVYX1dST05HIiwiTlBDR19JTkNMVURFRCIsImxhc3RJbmRleCIsInJlQ29weSIsImF0IiwiZGVmZXIiLCJjaGFubmVsIiwicG9ydCIsImludm9rZSIsImh0bWwiLCJjZWwiLCJzZXRUYXNrIiwic2V0SW1tZWRpYXRlIiwiY2xlYXJUYXNrIiwiY2xlYXJJbW1lZGlhdGUiLCJNZXNzYWdlQ2hhbm5lbCIsIkRpc3BhdGNoIiwiY291bnRlciIsInF1ZXVlIiwibGlzdGVuZXIiLCJldmVudCIsIm5leHRUaWNrIiwibm93IiwicG9ydDIiLCJwb3J0MSIsIm9ubWVzc2FnZSIsInBvc3RNZXNzYWdlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImltcG9ydFNjcmlwdHMiLCJyZW1vdmVDaGlsZCIsInNldFRpbWVvdXQiLCJtYWNyb3Rhc2siLCJPYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiwiaGVhZCIsImxhc3QiLCJmbHVzaCIsInBhcmVudCIsInN0YW5kYWxvbmUiLCJ0b2dnbGUiLCJjcmVhdGVUZXh0Tm9kZSIsIm9ic2VydmUiLCJjaGFyYWN0ZXJEYXRhIiwiUHJvbWlzZUNhcGFiaWxpdHkiLCIkJHJlc29sdmUiLCJCYXNlQnVmZmVyIiwiYWJzIiwicG93IiwibG9nIiwiTE4yIiwiJEJVRkZFUiIsIiRMRU5HVEgiLCIkT0ZGU0VUIiwicGFja0lFRUU3NTQiLCJtTGVuIiwibkJ5dGVzIiwiZUxlbiIsImVNYXgiLCJlQmlhcyIsInJ0IiwidW5wYWNrSUVFRTc1NCIsIm5CaXRzIiwidW5wYWNrSTMyIiwiYnl0ZXMiLCJwYWNrSTgiLCJwYWNrSTE2IiwicGFja0kzMiIsInBhY2tGNjQiLCJwYWNrRjMyIiwidmlldyIsImlzTGl0dGxlRW5kaWFuIiwiaW50SW5kZXgiLCJfYiIsInBhY2siLCJjb252ZXJzaW9uIiwiQXJyYXlCdWZmZXJQcm90byIsIiRzZXRJbnQ4Iiwic2V0SW50OCIsImdldEludDgiLCJzZXRVaW50OCIsImJ1ZmZlckxlbmd0aCIsImdldFVpbnQ4IiwiZ2V0SW50MTYiLCJnZXRVaW50MTYiLCJnZXRJbnQzMiIsImdldFVpbnQzMiIsImdldEZsb2F0MzIiLCJnZXRGbG9hdDY0Iiwic2V0SW50MTYiLCJzZXRVaW50MTYiLCJzZXRJbnQzMiIsInNldFVpbnQzMiIsInNldEZsb2F0MzIiLCJzZXRGbG9hdDY0IiwidXRpbHMiLCJlbmNvZGVVUklDb21wb25lbnQiLCJwYXJhbXMiLCJwYXJhbXNTZXJpYWxpemVyIiwic2VyaWFsaXplZFBhcmFtcyIsInBhcnRzIiwidG9JU09TdHJpbmciLCJoYXNobWFya0luZGV4IiwiZW5oYW5jZUVycm9yIiwibWVzc2FnZSIsInJlcXVlc3QiLCJiczU4IiwiY3MiLCJjb2RlcyIsImRlZmF1bHRMZW5ndGhzIiwidmFyaW50IiwidG9IZXhTdHJpbmciLCJmcm9tSGV4U3RyaW5nIiwidG9CNThTdHJpbmciLCJmcm9tQjU4U3RyaW5nIiwiZW5jb2RlZCIsImJ1ZiIsImlzVmFsaWRDb2RlIiwiZGlnZXN0IiwiaGFzaGZuIiwiY29lcmNlQ29kZSIsImlzQXBwQ29kZSIsInByZWZpeCIsIlByb3RvY29scyIsIlYiLCJzaXplIiwicmVzb2x2YWJsZSIsIkJvb2xlYW4iLCJsZW5ndGhQcmVmaXhlZFZhclNpemUiLCJ0YWJsZSIsInJvdyIsIm1oIiwibXVsdGljb2RlYyIsImNvZGVjcyIsIkNJRFV0aWwiLCJjb2RlYyIsIm11bHRpYmFzZU5hbWUiLCJfQ0lEIiwiYmFzZU5hbWUiLCJnZXRDb2RlYyIsInJtUHJlZml4IiwidmFsaWRhdGVDSUQiLCJmaXJzdEJ5dGUiLCJfYnVmZmVyIiwiZ2V0Q29kZVZhcmludCIsImJhc2UiLCJ0b0Jhc2VFbmNvZGVkU3RyaW5nIiwib3RoZXIiLCJlcXVhbHMiLCJlcnJvck1zZyIsImNoZWNrQ0lEQ29tcG9uZW50cyIsIndpdGhJcyIsImNsYXNzTmFtZSIsInN5bWJvbE5hbWUiLCJyZWFkU3RyZWFtIiwiTm9kZUZvcm1EYXRhIiwicGluYXRhTWV0YWRhdGEiLCJhcHBlbmQiLCJmaWxlbmFtZSIsInN0cmVhbSIsIlJlYWRhYmxlIiwidXBsb2FkVG9JUEZTIiwiZW5kcG9pbnQiLCJiYXNlVXJsIiwidmFsaWRhdGVNZXRhZGF0YSIsInBpbmF0YU9wdGlvbnMiLCJ2YWxpZGF0ZVBpbmF0YU9wdGlvbnMiLCJheGlvcyIsInBvc3QiLCJjcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnNXaXRoRm9ybURhdGEiLCJnZXRCb3VuZGFyeSIsInN0YXR1cyIsImZvcm1hdHRlZEVycm9yIiwiaGFuZGxlRXJyb3IiLCJmaWx0ZXJzIiwiaW5jbHVkZUNvdW50IiwiYmFzZUVuZHBvaW50IiwiZ2V0S2V5cyIsIndpbmRvd05hbWVzIiwiZ2V0V2luZG93TmFtZXMiLCJnT1BTIiwiJGFzc2lnbiIsImFzc2lnbiIsImdldFN5bWJvbHMiLCJ5IiwiZmFjdG9yaWVzIiwiY29uc3RydWN0IiwicGFydEFyZ3MiLCJib3VuZCIsInVuIiwiJHBhcnNlSW50Iiwid3MiLCJoZXgiLCIkcGFyc2VGbG9hdCIsInBhcnNlRmxvYXQiLCJtc2ciLCJpc0Zpbml0ZSIsImxvZzFwIiwiRVBTSUxPTiIsIkVQU0lMT04zMiIsIk1BWDMyIiwiTUlOMzIiLCJmcm91bmQiLCIkYWJzIiwiJHNpZ24iLCJEYXRlIiwicmV0IiwidXBUbyIsImNsb25lZCIsIiRzb3J0IiwibWVtbyIsImlzUmlnaHQiLCJ0byIsImluYyIsImZvcmNlZCIsImZsYWdzIiwiYWR2YW5jZVN0cmluZ0luZGV4IiwiY2FsbFJlZ0V4cEV4ZWMiLCIkbWluIiwiJHB1c2giLCJTVVBQT1JUU19ZIiwiU1BMSVQiLCIkc3BsaXQiLCJtYXliZUNhbGxOYXRpdmUiLCJpbnRlcm5hbFNwbGl0IiwibGltaXQiLCJsYXN0TGVuZ3RoIiwib3V0cHV0IiwibGFzdExhc3RJbmRleCIsInNwbGl0TGltaXQiLCJzZXBhcmF0b3JDb3B5Iiwic3BsaXR0ZXIiLCJyeCIsInVuaWNvZGVNYXRjaGluZyIsImxpbSIsInEiLCJ6IiwicHJvbWlzZUNhcGFiaWxpdHkiLCJzdHJvbmciLCJlbnRyeSIsImdldEVudHJ5IiwiJGl0ZXJEZWZpbmUiLCJTSVpFIiwiX2YiLCJfbCIsInByZXYiLCJhZGQiLCJJbnRlcm5hbE1hcCIsImVhY2giLCJ3ZWFrIiwiTkFUSVZFX1dFQUtfTUFQIiwiSVNfSUUxMSIsIkFjdGl2ZVhPYmplY3QiLCJ1bmNhdWdodEZyb3plblN0b3JlIiwidWZzdG9yZSIsIiRXZWFrTWFwIiwiJGhhcyIsIlVuY2F1Z2h0RnJvemVuU3RvcmUiLCJmaW5kVW5jYXVnaHRGcm96ZW4iLCJzcGxpY2UiLCJudW1iZXIiLCJSZWZsZWN0IiwiSVNfQ09OQ0FUX1NQUkVBREFCTEUiLCJmbGF0dGVuSW50b0FycmF5Iiwic291cmNlTGVuIiwiZGVwdGgiLCJtYXBwZXIiLCJlbGVtZW50Iiwic3ByZWFkYWJsZSIsInRhcmdldEluZGV4Iiwic291cmNlSW5kZXgiLCJyZXBlYXQiLCJtYXhMZW5ndGgiLCJmaWxsU3RyaW5nIiwibGVmdCIsInN0cmluZ0xlbmd0aCIsImZpbGxTdHIiLCJpbnRNYXhMZW5ndGgiLCJmaWxsTGVuIiwic3RyaW5nRmlsbGVyIiwiaXNFbnRyaWVzIiwic2NhbGUiLCJpbkxvdyIsImluSGlnaCIsIm91dExvdyIsIm91dEhpZ2giLCJoYXNoVG9QaW4iLCJib2R5IiwiX19DQU5DRUxfXyIsIm5vcm1hbGl6ZUhlYWRlck5hbWUiLCJERUZBVUxUX0NPTlRFTlRfVFlQRSIsInNldENvbnRlbnRUeXBlSWZVbnNldCIsImFkYXB0ZXIiLCJkZWZhdWx0cyIsIlhNTEh0dHBSZXF1ZXN0IiwidHJhbnNmb3JtUmVxdWVzdCIsInRyYW5zZm9ybVJlc3BvbnNlIiwicGFyc2UiLCJ0aW1lb3V0IiwieHNyZkNvb2tpZU5hbWUiLCJ4c3JmSGVhZGVyTmFtZSIsInZhbGlkYXRlU3RhdHVzIiwiY3JlYXRlRXJyb3IiLCJpc0F4aW9zRXJyb3IiLCJ0b0pTT04iLCJkZXNjcmlwdGlvbiIsImZpbGVOYW1lIiwibGluZU51bWJlciIsImNvbHVtbk51bWJlciIsInN0YWNrIiwiaXNBYnNvbHV0ZVVSTCIsImNvbWJpbmVVUkxzIiwiYmFzZVVSTCIsInJlcXVlc3RlZFVSTCIsIlVSTCIsImh0dHAiLCJodHRwcyIsIldyaXRhYmxlIiwiYXNzZXJ0IiwiZGVidWciLCJldmVudEhhbmRsZXJzIiwiYXJnMSIsImFyZzMiLCJfcmVkaXJlY3RhYmxlIiwiUmVkaXJlY3Rpb25FcnJvciIsImNyZWF0ZUVycm9yVHlwZSIsIlRvb01hbnlSZWRpcmVjdHNFcnJvciIsIk1heEJvZHlMZW5ndGhFeGNlZWRlZEVycm9yIiwiV3JpdGVBZnRlckVuZEVycm9yIiwiUmVkaXJlY3RhYmxlUmVxdWVzdCIsInJlc3BvbnNlQ2FsbGJhY2siLCJfc2FuaXRpemVPcHRpb25zIiwiX29wdGlvbnMiLCJfZW5kZWQiLCJfZW5kaW5nIiwiX3JlZGlyZWN0Q291bnQiLCJfcmVkaXJlY3RzIiwiX3JlcXVlc3RCb2R5TGVuZ3RoIiwiX3JlcXVlc3RCb2R5QnVmZmVycyIsIm9uIiwiX29uTmF0aXZlUmVzcG9uc2UiLCJfcHJvY2Vzc1Jlc3BvbnNlIiwiX3BlcmZvcm1SZXF1ZXN0Iiwic3RhcnRUaW1lciIsIm1zZWNzIiwiY2xlYXJUaW1lb3V0IiwiX3RpbWVvdXQiLCJjbGVhclRpbWVyIiwicHJvdG9jb2xzIiwibWF4UmVkaXJlY3RzIiwibmF0aXZlUHJvdG9jb2xzIiwic2NoZW1lIiwicHJvdG9jb2wiLCJuYXRpdmVQcm90b2NvbCIsIndyYXBwZWRQcm90b2NvbCIsImNhbGxiYWNrIiwidXJsU3RyIiwidXJsVG9PcHRpb25zIiwiZXF1YWwiLCJ3cmFwcGVkUmVxdWVzdCIsIm5vb3AiLCJ1cmxPYmplY3QiLCJob3N0bmFtZSIsInN0YXJ0c1dpdGgiLCJzZWFyY2giLCJwYXRobmFtZSIsImhyZWYiLCJyZW1vdmVNYXRjaGluZ0hlYWRlcnMiLCJyZWdleCIsImxhc3RWYWx1ZSIsImhlYWRlciIsImRlZmF1bHRNZXNzYWdlIiwiQ3VzdG9tRXJyb3IiLCJjYXB0dXJlU3RhY2tUcmFjZSIsImVuY29kaW5nIiwiX2N1cnJlbnRSZXF1ZXN0IiwiYWJvcnQiLCJjdXJyZW50UmVxdWVzdCIsInNldEhlYWRlciIsInJlbW92ZUhlYWRlciIsIm9uY2UiLCJzb2NrZXQiLCJob3N0Iiwic2VhcmNoUG9zIiwic3Vic3RyaW5nIiwiYWdlbnRzIiwic3Vic3RyIiwiYWdlbnQiLCJfY3VycmVudFVybCIsImZvcm1hdCIsIl9pc1JlZGlyZWN0IiwiYnVmZmVycyIsIndyaXRlTmV4dCIsImZpbmlzaGVkIiwic3RhdHVzQ29kZSIsInRyYWNrUmVkaXJlY3RzIiwibG9jYXRpb24iLCJmb2xsb3dSZWRpcmVjdHMiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJkZXN0cm95IiwicHJldmlvdXNIb3N0TmFtZSIsInJlZGlyZWN0VXJsIiwicmVkaXJlY3RVcmxQYXJ0cyIsImJlZm9yZVJlZGlyZWN0IiwicmVzcG9uc2VEZXRhaWxzIiwiY2F1c2UiLCJyZXNwb25zZVVybCIsInJlZGlyZWN0cyIsImVudiIsImNyZWF0ZURlYnVnIiwibmFtZXNwYWNlIiwicHJldlRpbWUiLCJlbmFibGVPdmVycmlkZSIsImVuYWJsZWQiLCJjdXJyIiwibXMiLCJkaWZmIiwiY29lcmNlIiwidW5zaGlmdCIsImZvcm1hdHRlciIsImZvcm1hdHRlcnMiLCJmb3JtYXRBcmdzIiwidXNlQ29sb3JzIiwiY29sb3IiLCJzZWxlY3RDb2xvciIsImluaXQiLCJkZWxpbWl0ZXIiLCJuZXdEZWJ1ZyIsInRvTmFtZXNwYWNlIiwiZGVmYXVsdCIsImRpc2FibGUiLCJuYW1lc3BhY2VzIiwic2tpcHMiLCJlbmFibGUiLCJzYXZlIiwiaHVtYW5pemUiLCJ3YXJuIiwiY29sb3JzIiwibG9hZCIsImNvbmZpZzEiLCJjb25maWcyIiwidmFsdWVGcm9tQ29uZmlnMktleXMiLCJtZXJnZURlZXBQcm9wZXJ0aWVzS2V5cyIsImRlZmF1bHRUb0NvbmZpZzJLZXlzIiwiZGlyZWN0TWVyZ2VLZXlzIiwiZ2V0TWVyZ2VkVmFsdWUiLCJtZXJnZURlZXBQcm9wZXJ0aWVzIiwicHJvcCIsImF4aW9zS2V5cyIsIm90aGVyS2V5cyIsIkNhbmNlbCIsIl9CdWZmZXIiLCJBTFBIQUJFVCIsIkJBU0VfTUFQIiwieGMiLCJCQVNFIiwiTEVBREVSIiwiRkFDVE9SIiwiaUZBQ1RPUiIsImRlY29kZVVuc2FmZSIsImFsbG9jIiwicHN6IiwiemVyb2VzIiwiYjI1NiIsImNhcnJ5IiwiaXQzIiwiaXQ0IiwidmNoIiwiYWxsb2NVbnNhZmUiLCJwYmVnaW4iLCJwZW5kIiwiYjU4IiwiaXQxIiwiaXQyIiwiY29uc3RhbnRzIiwibmFtZU9yQ29kZSIsImdldEJhc2UiLCJidWZPclN0cmluZyIsImZyZWV6ZSIsImVyck5vdFN1cHBvcnRlZCIsImNvZGVCdWYiLCJ2YWxpZEVuY29kZSIsImlzSW1wbGVtZW50ZWQiLCJpbnNwZWN0IiwiZm9yIiwiYWRkciIsImZyb21CdWZmZXIiLCJmcm9tU3RyaW5nIiwicHJvdG9zIiwicHJvdG9Db2RlcyIsImJ1ZmZlclRvU3RyaW5nIiwidG9PcHRpb25zIiwib3B0cyIsInBhcnNlZCIsImZhbWlseSIsInRyYW5zcG9ydCIsInNpemVGb3JBZGRyIiwicHJvdG9OYW1lcyIsInR1cGxlcyIsImJ1ZmZlclRvVHVwbGVzIiwic3RyaW5nVHVwbGVzIiwidHVwbGVzVG9TdHJpbmdUdXBsZXMiLCJlbmNhcHN1bGF0ZSIsImRlY2Fwc3VsYXRlIiwiZGVjYXBzdWxhdGVDb2RlIiwidHVwbGVzVG9CdWZmZXIiLCJnZXRQZWVySWQiLCJiNThzdHIiLCJ0dXBsZSIsImlwZnMiLCJwb3AiLCJnZXRQYXRoIiwibm9kZUFkZHJlc3MiLCJhZGRyZXNzIiwiZnJvbU5vZGVBZGRyZXNzIiwiaXAiLCJpc1RoaW5XYWlzdEFkZHJlc3MiLCJpc05hbWUiLCJidWZmZXJUb051bWJlciIsIm51bWJlclRvQnVmZmVyIiwibnVtIiwiaGV4U3RyaW5nIiwidmFyaW50QnVmZmVyRW5jb2RlIiwidmFyaW50QnVmZmVyRGVjb2RlIiwidmFyaW50RW5jb2RlIiwiQ2xhc3MiLCJzeW1ib2wiLCJDbGFzc0lzV3JhcHBlciIsInN1cGVyIiwid2l0aG91dE5ldyIsIl90aGlzIiwiaXBmc1Bpbkhhc2giLCJwdXQiLCJDb21iaW5lZFN0cmVhbSIsInV0aWwiLCJwYXJzZVVybCIsImZzIiwibWltZSIsImFzeW5ja2l0IiwicG9wdWxhdGUiLCJvcHRpb24iLCJfb3ZlcmhlYWRMZW5ndGgiLCJfdmFsdWVMZW5ndGgiLCJfdmFsdWVzVG9NZWFzdXJlIiwiaW5oZXJpdHMiLCJMSU5FX0JSRUFLIiwiZmllbGQiLCJfZXJyb3IiLCJfbXVsdGlQYXJ0SGVhZGVyIiwiZm9vdGVyIiwiX211bHRpUGFydEZvb3RlciIsIl90cmFja0xlbmd0aCIsInZhbHVlTGVuZ3RoIiwia25vd25MZW5ndGgiLCJyZWFkYWJsZSIsIl9sZW5ndGhSZXRyaWV2ZXIiLCJmaWxlU2l6ZSIsInBhdXNlIiwicmVzdW1lIiwiY29udGVudERpc3Bvc2l0aW9uIiwiX2dldENvbnRlbnREaXNwb3NpdGlvbiIsImNvbnRlbnRUeXBlIiwiX2dldENvbnRlbnRUeXBlIiwiY29udGVudHMiLCJmaWxlcGF0aCIsIm5vcm1hbGl6ZSIsImJhc2VuYW1lIiwiY2xpZW50IiwiX2h0dHBNZXNzYWdlIiwibG9va3VwIiwiX3N0cmVhbXMiLCJfbGFzdEJvdW5kYXJ5IiwiZ2V0SGVhZGVycyIsInVzZXJIZWFkZXJzIiwiZm9ybUhlYWRlcnMiLCJfYm91bmRhcnkiLCJfZ2VuZXJhdGVCb3VuZGFyeSIsImdldEJ1ZmZlciIsImRhdGFCdWZmZXIiLCJib3VuZGFyeSIsImdldExlbmd0aFN5bmMiLCJoYXNLbm93bkxlbmd0aCIsImdldExlbmd0aCIsInBhcmFsbGVsIiwic3VibWl0IiwiYXN5bmMiLCJzdGF0ZSIsImpvYnMiLCJpdGVtIiwiYWJvcnRlciIsInJ1bkpvYiIsInJlc3VsdHMiLCJpc0FzeW5jIiwiY2xlYW4iLCJzb3J0TWV0aG9kIiwiaXNOYW1lZExpc3QiLCJpbml0U3RhdGUiLCJrZXllZExpc3QiLCJpdGVyYXRlIiwidGVybWluYXRvciIsImFzY2VuZGluZyIsIml0ZXJhdG9ySGFuZGxlciIsImRlc2NlbmRpbmciLCJub3JtYWxpemVQYXRoIiwic3BsaXRQYXRoIiwic2VwIiwiZmlsZSIsImZvbGRlckZpbGUiLCJzb3VyY2VQYXRoIiwicHJvbWlzZXMiLCJjcmVhdGVSZWFkU3RyZWFtIiwicmVhZGRpciIsImZpbGVzIiwicmVxdWVzdEJvZHkiLCJwaW5hdGFDb250ZW50IiwibmV3VXJsIiwiZmlyc3RGaWx0ZXJBcHBsaWVkIiwiYWRkRmlsdGVyIiwibmV3RmlsdGVyIiwiaXBmc19waW5faGFzaCIsImhhc2hUb1VucGluIiwiYXV0aGVudGljYXRlZCIsImZpbHRlclF1ZXJ5IiwibWV0YWRhdGFRdWVyeSIsImhhc2hDb250YWlucyIsInBpblN0YXJ0IiwidmFsaWRhdGVBbmRSZXR1cm5EYXRlIiwicGluRW5kIiwidW5waW5TdGFydCIsInVucGluRW5kIiwicGluU2l6ZU1pbiIsInBpblNpemVNYXgiLCJwYWdlTGltaXQiLCJwYWdlT2Zmc2V0IiwicHJ1bmVkS2V5VmFsdWVzIiwib3AiLCJzZWNvbmRWYWx1ZSIsImRhdGVUb1ZhbGlkYXRlIiwiZGF0ZVBhcnNlZCIsIlBpbmF0YUNsaWVudCIsInBpbmF0YUNvbmZpZ1BhcmFtIiwicmVmYWN0b3JDb25maWciLCJzYW5pdGl6ZUNvbmZpZyIsInJlYWRhYmxlU3RyZWFtIiwibWF4Q291bnQiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2JhYmVsUG9seWZpbGwiLCJwYWRTdGFydCIsInBhZEVuZCIsInN5bWJvbHMiLCIkZ2V0UHJvdG90eXBlT2YiLCIkZnJlZXplIiwiJHNlYWwiLCIkcHJldmVudEV4dGVuc2lvbnMiLCIkaXNGcm96ZW4iLCIkaXNTZWFsZWQiLCIkaXNFeHRlbnNpYmxlIiwiSEFTX0lOU1RBTkNFIiwiRnVuY3Rpb25Qcm90byIsImFOdW1iZXJWYWx1ZSIsIiR0b0ZpeGVkIiwidG9GaXhlZCIsIkVSUk9SIiwibXVsdGlwbHkiLCJjMiIsImRpdmlkZSIsIm51bVRvU3RyaW5nIiwiYWNjIiwiZnJhY3Rpb25EaWdpdHMiLCJ4MiIsIiR0b1ByZWNpc2lvbiIsInRvUHJlY2lzaW9uIiwicHJlY2lzaW9uIiwiX2lzRmluaXRlIiwiaXNTYWZlSW50ZWdlciIsIk1BWF9TQUZFX0lOVEVHRVIiLCJNSU5fU0FGRV9JTlRFR0VSIiwic3FydCIsIiRhY29zaCIsImFjb3NoIiwiTUFYX1ZBTFVFIiwiJGFzaW5oIiwiYXNpbmgiLCIkYXRhbmgiLCJhdGFuaCIsImNicnQiLCJjbHozMiIsIkxPRzJFIiwiY29zaCIsImh5cG90IiwidmFsdWUxIiwidmFsdWUyIiwiZGl2Iiwic3VtIiwibGFyZyIsIiRpbXVsIiwiaW11bCIsInhuIiwieW4iLCJ4bCIsInlsIiwibG9nMTAiLCJMT0cxMEUiLCJsb2cyIiwic2luaCIsInRhbmgiLCJ0cnVuYyIsImZyb21DaGFyQ29kZSIsIiRmcm9tQ29kZVBvaW50IiwiZnJvbUNvZGVQb2ludCIsInJhdyIsImNhbGxTaXRlIiwidHBsIiwiJGF0IiwicG9pbnQiLCJjb2RlUG9pbnRBdCIsImNvbnRleHQiLCIkZW5kc1dpdGgiLCJlbmRzV2l0aCIsImVuZFBvc2l0aW9uIiwiJHN0YXJ0c1dpdGgiLCJnZXRUaW1lIiwicHYiLCIkdG9JU09TdHJpbmciLCJseiIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTWlsbGlzZWNvbmRzIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsIkRhdGVQcm90byIsImhpbnQiLCIkc29tZSIsIiRldmVyeSIsIiRyZWR1Y2UiLCIkaW5kZXhPZiIsIk5FR0FUSVZFX1pFUk8iLCIkZmluZCIsIiRmbGFncyIsIiRSZWdFeHAiLCJDT1JSRUNUX05FVyIsInRpUkUiLCJwaVJFIiwiZmlVIiwicHJveHkiLCJyZWdFeHBFeGVjIiwiJG1hdGNoIiwiZnVsbFVuaWNvZGUiLCJtYXRjaFN0ciIsIlNVQlNUSVRVVElPTl9TWU1CT0xTIiwiU1VCU1RJVFVUSU9OX1NZTUJPTFNfTk9fTkFNRUQiLCJSRVBMQUNFIiwiJHJlcGxhY2UiLCJzZWFyY2hWYWx1ZSIsInJlcGxhY2VWYWx1ZSIsImZ1bmN0aW9uYWxSZXBsYWNlIiwiYWNjdW11bGF0ZWRSZXN1bHQiLCJuZXh0U291cmNlUG9zaXRpb24iLCJtYXRjaGVkIiwicG9zaXRpb24iLCJjYXB0dXJlcyIsIm5hbWVkQ2FwdHVyZXMiLCJyZXBsYWNlckFyZ3MiLCJyZXBsYWNlbWVudCIsImdldFN1YnN0aXR1dGlvbiIsInRhaWxQb3MiLCJjaCIsImNhcHR1cmUiLCJzYW1lVmFsdWUiLCJTRUFSQ0giLCIkc2VhcmNoIiwicHJldmlvdXNMYXN0SW5kZXgiLCIkaXNWaWV3IiwiZmluIiwidmlld1MiLCJ2aWV3VCIsInJBcHBseSIsImZBcHBseSIsInRoaXNBcmd1bWVudCIsImFyZ3VtZW50c0xpc3QiLCJMIiwickNvbnN0cnVjdCIsIk5FV19UQVJHRVRfQlVHIiwiQVJHU19CVUciLCJUYXJnZXQiLCJuZXdUYXJnZXQiLCIkYXJncyIsInByb3BlcnR5S2V5IiwiYXR0cmlidXRlcyIsImRlbGV0ZVByb3BlcnR5IiwiRW51bWVyYXRlIiwiZW51bWVyYXRlIiwicmVjZWl2ZXIiLCJnZXRQcm90byIsImV4aXN0aW5nRGVzY3JpcHRvciIsIm93bkRlc2MiLCJzZXRQcm90byIsIiRpbmNsdWRlcyIsImFycmF5U3BlY2llc0NyZWF0ZSIsImZsYXRNYXAiLCJmbGF0dGVuIiwiZGVwdGhBcmciLCIkcGFkIiwiV0VCS0lUX0JVRyIsImdldEZsYWdzIiwiUmVnRXhwUHJvdG8iLCIkUmVnRXhwU3RyaW5nSXRlcmF0b3IiLCJfciIsIm1hdGNoQWxsIiwiJHZhbHVlcyIsIl9fZGVmaW5lR2V0dGVyX18iLCJfX2xvb2t1cEdldHRlcl9fIiwiX19sb29rdXBTZXR0ZXJfXyIsImlzRXJyb3IiLCJjbGFtcCIsImxvd2VyIiwidXBwZXIiLCJERUdfUEVSX1JBRCIsIlBJIiwiUkFEX1BFUl9ERUciLCJkZWdyZWVzIiwicmFkaWFucyIsImZzY2FsZSIsImlhZGRoIiwieDAiLCJ4MSIsInkwIiwieTEiLCIkeDAiLCIkeTAiLCJpc3ViaCIsImltdWxoIiwidSIsIiR1IiwiJHYiLCJ1MCIsInYwIiwidTEiLCJ2MSIsInVtdWxoIiwic2lnbmJpdCIsIm9uRmluYWxseSIsInRvTWV0YUtleSIsIm9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEiLCJkZWZpbmVNZXRhZGF0YSIsIm1ldGFkYXRhS2V5IiwibWV0YWRhdGFWYWx1ZSIsImRlbGV0ZU1ldGFkYXRhIiwib3JkaW5hcnlIYXNPd25NZXRhZGF0YSIsIm9yZGluYXJ5R2V0T3duTWV0YWRhdGEiLCJvcmRpbmFyeUdldE1ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJTZXQiLCJvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyIsIm9yZGluYXJ5TWV0YWRhdGFLZXlzIiwib0tleXMiLCJwS2V5cyIsImdldE1ldGFkYXRhS2V5cyIsImdldE93bk1ldGFkYXRhIiwiZ2V0T3duTWV0YWRhdGFLZXlzIiwib3JkaW5hcnlIYXNNZXRhZGF0YSIsImhhc01ldGFkYXRhIiwiaGFzT3duTWV0YWRhdGEiLCIkbWV0YWRhdGEiLCJhc2FwIiwiT0JTRVJWQUJMRSIsImNsZWFudXBTdWJzY3JpcHRpb24iLCJzdWJzY3JpcHRpb24iLCJjbGVhbnVwIiwic3Vic2NyaXB0aW9uQ2xvc2VkIiwiX28iLCJjbG9zZVN1YnNjcmlwdGlvbiIsIlN1YnNjcmlwdGlvbiIsIm9ic2VydmVyIiwic3Vic2NyaWJlciIsIlN1YnNjcmlwdGlvbk9ic2VydmVyIiwidW5zdWJzY3JpYmUiLCJjb21wbGV0ZSIsIiRPYnNlcnZhYmxlIiwic3Vic2NyaWJlIiwib2JzZXJ2YWJsZSIsIml0ZW1zIiwiT2JzZXJ2YWJsZSIsIk1TSUUiLCJ0aW1lIiwiYm91bmRBcmdzIiwic2V0SW50ZXJ2YWwiLCIkdGFzayIsIlRPX1NUUklOR19UQUciLCJBcnJheVZhbHVlcyIsIkRPTUl0ZXJhYmxlcyIsIkNTU1J1bGVMaXN0IiwiQ1NTU3R5bGVEZWNsYXJhdGlvbiIsIkNTU1ZhbHVlTGlzdCIsIkNsaWVudFJlY3RMaXN0IiwiRE9NUmVjdExpc3QiLCJET01TdHJpbmdMaXN0IiwiRE9NVG9rZW5MaXN0IiwiRGF0YVRyYW5zZmVySXRlbUxpc3QiLCJGaWxlTGlzdCIsIkhUTUxBbGxDb2xsZWN0aW9uIiwiSFRNTENvbGxlY3Rpb24iLCJIVE1MRm9ybUVsZW1lbnQiLCJIVE1MU2VsZWN0RWxlbWVudCIsIk1lZGlhTGlzdCIsIk1pbWVUeXBlQXJyYXkiLCJOYW1lZE5vZGVNYXAiLCJOb2RlTGlzdCIsIlBhaW50UmVxdWVzdExpc3QiLCJQbHVnaW4iLCJQbHVnaW5BcnJheSIsIlNWR0xlbmd0aExpc3QiLCJTVkdOdW1iZXJMaXN0IiwiU1ZHUGF0aFNlZ0xpc3QiLCJTVkdQb2ludExpc3QiLCJTVkdTdHJpbmdMaXN0IiwiU1ZHVHJhbnNmb3JtTGlzdCIsIlNvdXJjZUJ1ZmZlckxpc3QiLCJTdHlsZVNoZWV0TGlzdCIsIlRleHRUcmFja0N1ZUxpc3QiLCJUZXh0VHJhY2tMaXN0IiwiVG91Y2hMaXN0IiwiY29sbGVjdGlvbnMiLCJleHBsaWNpdCIsIkNvbGxlY3Rpb24iLCJPcCIsImhhc093biIsIml0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsImluTW9kdWxlIiwicnVudGltZSIsInJlZ2VuZXJhdG9yUnVudGltZSIsIkNvbnRpbnVlU2VudGluZWwiLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsIkdwIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJHZW5lcmF0b3IiLCJHZW5lcmF0b3JGdW5jdGlvbiIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJtYXJrIiwiYXdyYXAiLCJfX2F3YWl0IiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiQXN5bmNJdGVyYXRvciIsImlubmVyRm4iLCJvdXRlckZuIiwidHJ5TG9jc0xpc3QiLCJDb250ZXh0IiwicmVzZXQiLCJza2lwVGVtcFJlc2V0Iiwic2VudCIsIl9zZW50IiwiZGVsZWdhdGUiLCJ0cnlFbnRyaWVzIiwicmVzZXRUcnlFbnRyeSIsInN0b3AiLCJyb290UmVjb3JkIiwiY29tcGxldGlvbiIsInJ2YWwiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsInJlY29yZCIsInRyeUxvYyIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFicnVwdCIsImZpbmFsbHlFbnRyeSIsImFmdGVyTG9jIiwiZmluaXNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsInJlc3VsdE5hbWUiLCJuZXh0TG9jIiwicHJvdG9HZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJfaW52b2tlIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInRyeUNhdGNoIiwibWFrZUludm9rZU1ldGhvZCIsInVud3JhcHBlZCIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwicmV0dXJuIiwiaW5mbyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJpdGVyYXRvck1ldGhvZCIsImVzY2FwZSIsIiRyZSIsInJlZ0V4cCIsInBhcnQiLCJBeGlvcyIsIm1lcmdlQ29uZmlnIiwiY3JlYXRlSW5zdGFuY2UiLCJkZWZhdWx0Q29uZmlnIiwiaW5zdGFuY2VDb25maWciLCJDYW5jZWxUb2tlbiIsImlzQ2FuY2VsIiwic3ByZWFkIiwiYnVpbGRVUkwiLCJJbnRlcmNlcHRvck1hbmFnZXIiLCJkaXNwYXRjaFJlcXVlc3QiLCJpbnRlcmNlcHRvcnMiLCJpbnRlcmNlcHRvciIsImZ1bGZpbGxlZCIsInJlamVjdGVkIiwic2hpZnQiLCJnZXRVcmkiLCJoYW5kbGVycyIsInVzZSIsImVqZWN0IiwiaCIsInRyYW5zZm9ybURhdGEiLCJ0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkIiwiY2FuY2VsVG9rZW4iLCJ0aHJvd0lmUmVxdWVzdGVkIiwibm9ybWFsaXplZE5hbWUiLCJ0b1VwcGVyQ2FzZSIsInNldHRsZSIsImNvb2tpZXMiLCJidWlsZEZ1bGxQYXRoIiwicGFyc2VIZWFkZXJzIiwiaXNVUkxTYW1lT3JpZ2luIiwicmVxdWVzdERhdGEiLCJyZXF1ZXN0SGVhZGVycyIsImF1dGgiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwidW5lc2NhcGUiLCJidG9hIiwiZnVsbFBhdGgiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwicmVzcG9uc2VVUkwiLCJyZXNwb25zZUhlYWRlcnMiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJyZXNwb25zZVR5cGUiLCJyZXNwb25zZVRleHQiLCJzdGF0dXNUZXh0Iiwib25hYm9ydCIsIm9uZXJyb3IiLCJvbnRpbWVvdXQiLCJ0aW1lb3V0RXJyb3JNZXNzYWdlIiwieHNyZlZhbHVlIiwicmVhZCIsInNldFJlcXVlc3RIZWFkZXIiLCJvbkRvd25sb2FkUHJvZ3Jlc3MiLCJvblVwbG9hZFByb2dyZXNzIiwidXBsb2FkIiwiY2FuY2VsIiwic2VuZCIsImV4cGlyZXMiLCJzZWN1cmUiLCJjb29raWUiLCJ0b0dNVFN0cmluZyIsImRlY29kZVVSSUNvbXBvbmVudCIsInJlbW92ZSIsInJlbGF0aXZlVVJMIiwiaWdub3JlRHVwbGljYXRlT2YiLCJsaW5lIiwib3JpZ2luVVJMIiwibXNpZSIsInVybFBhcnNpbmdOb2RlIiwicmVzb2x2ZVVSTCIsInNldEF0dHJpYnV0ZSIsInJlcXVlc3RVUkwiLCJodHRwRm9sbG93IiwiaHR0cHNGb2xsb3ciLCJ6bGliIiwicGtnIiwiaXNIdHRwcyIsInJlc29sdmVQcm9taXNlIiwicmVqZWN0UHJvbWlzZSIsInVybEF1dGgiLCJpc0h0dHBzUmVxdWVzdCIsImh0dHBzQWdlbnQiLCJodHRwQWdlbnQiLCJzb2NrZXRQYXRoIiwicHJveHlFbnYiLCJwcm94eVVybCIsInBhcnNlZFByb3h5VXJsIiwibm9Qcm94eUVudiIsIm5vX3Byb3h5IiwiTk9fUFJPWFkiLCJzaG91bGRQcm94eSIsInByb3h5RWxlbWVudCIsInByb3h5VXJsQXV0aCIsInNldFByb3h5IiwiYmFzZTY0IiwicmVkaXJlY3Rpb24iLCJpc0h0dHBzUHJveHkiLCJyZXEiLCJhYm9ydGVkIiwibGFzdFJlcXVlc3QiLCJkZWNvbXByZXNzIiwiY3JlYXRlVW56aXAiLCJzdGF0dXNNZXNzYWdlIiwicmVzcG9uc2VCdWZmZXIiLCJjaHVuayIsInJlc3BvbnNlRGF0YSIsInJlc3BvbnNlRW5jb2RpbmciLCJicm93c2VyIiwiX19ud2pzIiwibGFzdEMiLCJzdG9yYWdlIiwic2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJnZXRJdGVtIiwiREVCVUciLCJXZWJraXRBcHBlYXJhbmNlIiwiZmlyZWJ1ZyIsIiQxIiwibG9jYWxTdG9yYWdlIiwibG9jYWxzdG9yYWdlIiwid2FybmVkIiwicGx1cmFsIiwibG9uZyIsImZtdFNob3J0IiwidHR5IiwiaW5zcGVjdE9wdHMiLCJzdGRlcnIiLCJjb2xvckNvZGUiLCJoaWRlRGF0ZSIsImdldERhdGUiLCJpc2F0dHkiLCJmZCIsImRlcHJlY2F0ZSIsInN1cHBvcnRzQ29sb3IiLCJsZXZlbCIsIm9zIiwiaGFzRmxhZyIsImZvcmNlQ29sb3IiLCJnZXRTdXBwb3J0TGV2ZWwiLCJoYXNCYXNpYyIsImhhczI1NiIsImhhczE2bSIsInRyYW5zbGF0ZUxldmVsIiwiaXNUVFkiLCJwbGF0Zm9ybSIsIm9zUmVsZWFzZSIsInJlbGVhc2UiLCJDSV9OQU1FIiwiVEVBTUNJVFlfVkVSU0lPTiIsIkNPTE9SVEVSTSIsIlRFUk1fUFJPR1JBTV9WRVJTSU9OIiwiVEVSTV9QUk9HUkFNIiwiVEVSTSIsIkZPUkNFX0NPTE9SIiwic3Rkb3V0IiwiZmxhZyIsImFyZ3YiLCJ0ZXJtaW5hdG9yUG9zIiwidG9rZW4iLCJwYXlsb2FkIiwiY29weVByb3BzIiwiZHN0IiwiU2FmZUJ1ZmZlciIsImVuY29kaW5nT3JPZmZzZXQiLCJhbGxvY1Vuc2FmZVNsb3ciLCJTbG93QnVmZmVyIiwiMCIsIm9sZE9mZnNldCIsIklOVCIsIk4xIiwiTjIiLCJOMyIsIk40IiwiTjUiLCJONiIsIk43IiwiTjgiLCJOOSIsImJhc2VYIiwiYmFzZTE2IiwiYmFzZTMyIiwidHVwcGxlIiwiaW1wbGVtZW50YXRpb24iLCJhbHBoYWJldCIsImVuZ2luZSIsInN0cmluZ09yQnVmZmVyIiwiY2hhciIsInBhZGRpbmciLCJiaXRzIiwicGFkIiwiY29udmVydCIsInN0cmluZ1RvU3RyaW5nVHVwbGVzIiwiUGFyc2VFcnJvciIsImNsZWFuUGF0aCIsInN0cmluZ1R1cGxlc1RvU3RyaW5nIiwidHVwIiwicHJvdG9Gcm9tVHVwbGUiLCJzdHJpbmdUdXBsZXNUb1R1cGxlcyIsInRvQnVmZmVyIiwic3RyaW5nVG9CdWZmZXIiLCJ2YWxpZGF0ZUJ1ZmZlciIsImlzVmFsaWRCdWZmZXIiLCJpc0lwIiwiQ29udmVydCIsImlwMmJ1ZiIsImlwU3RyaW5nIiwicG9ydDJidWYiLCJ3cml0ZVVJbnQxNkJFIiwiYnVmMnBvcnQiLCJyZWFkVUludDE2QkUiLCJidWYyb25pb24iLCJhZGRyQnl0ZXMiLCJwb3J0Qnl0ZXMiLCJpcEJ1ZmYiLCJidWYyaXAiLCJidWYyc3RyIiwiYnVmMm1oIiwic3RyMmJ1ZiIsIm1oMmJ1ZiIsImFzQnl0ZXMiLCJwb3J0QnVmIiwib25pb24yYnVmIiwib25pb24zMmJ1ZiIsImJ1ZmYiLCJpc1Y0Rm9ybWF0IiwiYnl0ZSIsImlzVjZGb3JtYXQiLCJzZWN0aW9ucyIsInY0QnVmZmVyIiwid29yZCIsImlwdjRSZWdleCIsImlwdjZSZWdleCIsIl9ub3JtYWxpemVGYW1pbHkiLCJmcm9tUHJlZml4TGVuIiwicHJlZml4bGVuIiwibWFzayIsImNpZHIiLCJjaWRyU3RyaW5nIiwiY2lkclBhcnRzIiwic3VibmV0IiwibmV0d29ya0FkZHJlc3MiLCJ0b0xvbmciLCJtYXNrQnVmZmVyIiwibWFza0xlbmd0aCIsIm9jdGV0IiwibnVtYmVyT2ZBZGRyZXNzZXMiLCJmcm9tTG9uZyIsImZpcnN0QWRkcmVzcyIsImxhc3RBZGRyZXNzIiwiYnJvYWRjYXN0QWRkcmVzcyIsInN1Ym5ldE1hc2siLCJzdWJuZXRNYXNrTGVuZ3RoIiwibnVtSG9zdHMiLCJjb250YWlucyIsImNpZHJTdWJuZXQiLCJub3QiLCJvciIsImlzRXF1YWwiLCJpc1ByaXZhdGUiLCJpc1B1YmxpYyIsImlzTG9vcGJhY2siLCJsb29wYmFjayIsImludGVyZmFjZXMiLCJuZXR3b3JrSW50ZXJmYWNlcyIsImRldGFpbHMiLCJuaWMiLCJhZGRyZXNzZXMiLCJpcGwiLCJpcFJlZ2V4IiwiZXhhY3QiLCJ2NCIsInY2IiwiaW5jbHVkZUJvdW5kYXJpZXMiLCJ2NnNlZyIsImludFRhYmxlIiwiY29kZWNOYW1lVG9Db2RlVmFyaW50IiwiYWRkUHJlZml4IiwibXVsdGljb2RlY1N0ck9yQ29kZSIsInByZWZpeGVkRGF0YSIsImNvZGVjTmFtZSIsImdldE5hbWUiLCJnZXROdW1iZXIiLCJnZXRDb2RlIiwiZ2V0VmFyaW50IiwicHJpbnQiLCJiYXNlVGFibGUiLCJuYW1lVGFibGUiLCJlbmNvZGluZ05hbWUiLCJ2YXJpbnRUYWJsZSIsInRhYmxlQnlDb2RlIiwiSElfQkFTRTMyX05PX05PREVfSlMiLCJDT01NT05fSlMiLCJISV9CQVNFMzJfTk9fQ09NTU9OX0pTIiwiQU1EIiwiQkFTRTMyX0VOQ09ERV9DSEFSIiwiQkFTRTMyX0RFQ09ERV9DSEFSIiwiYmxvY2tzIiwidGhyb3dJbnZhbGlkVXRmOCIsInBhcnRpYWwiLCJkZWNvZGVBc0J5dGVzIiwiYmFzZTMyU3RyIiwidjIiLCJ2MyIsInY1IiwidjciLCJyZW1haW4iLCJhc2NpaU9ubHkiLCJmb2xsb3dpbmdDaGFycyIsInRvVXRmOFN0cmluZyIsIm5vdFN0cmluZyIsImVuY29kZUJ5dGVzIiwiZW5jb2RlQXNjaWkiLCJlbmNvZGVVdGY4IiwiX193ZWJwYWNrX2FtZF9vcHRpb25zX18iLCJETlM0IiwiRE5TNiIsIkROUyIsIklQIiwiVENQIiwiYW5kIiwiVURQIiwiVVRQIiwiV2ViU29ja2V0cyIsIldlYlNvY2tldHNTZWN1cmUiLCJIVFRQIiwiSFRUUFMiLCJXZWJSVENTdGFyIiwiV2ViU29ja2V0U3RhciIsIldlYlJUQ0RpcmVjdCIsIlJlbGlhYmxlIiwiU3RhcmR1c3QiLCJfUDJQIiwiX0NpcmN1aXQiLCJDaXJjdWl0UmVjdXJzaXZlIiwiQ2lyY3VpdCIsIlAyUCIsIm1ha2VNYXRjaGVzRnVuY3Rpb24iLCJwYXJ0aWFsTWF0Y2giLCJwbmFtZXMiLCJTdHJlYW0iLCJEZWxheWVkU3RyZWFtIiwiZGF0YVNpemUiLCJtYXhEYXRhU2l6ZSIsInBhdXNlU3RyZWFtcyIsIl9yZWxlYXNlZCIsIl9jdXJyZW50U3RyZWFtIiwiX2luc2lkZUxvb3AiLCJfcGVuZGluZ05leHQiLCJjb21iaW5lZFN0cmVhbSIsImlzU3RyZWFtTGlrZSIsIm5ld1N0cmVhbSIsInBhdXNlU3RyZWFtIiwiX2NoZWNrRGF0YVNpemUiLCJfaGFuZGxlRXJyb3JzIiwiZGVzdCIsIl9nZXROZXh0IiwiX3JlYWxHZXROZXh0IiwiX3BpcGVOZXh0IiwiX2VtaXRFcnJvciIsIl9yZXNldCIsIl91cGRhdGVEYXRhU2l6ZSIsIl9tYXhEYXRhU2l6ZUV4Y2VlZGVkIiwiX2J1ZmZlcmVkRXZlbnRzIiwiZGVsYXllZFN0cmVhbSIsInJlYWxFbWl0IiwiX2hhbmRsZUVtaXQiLCJzZXRFbmNvZGluZyIsIl9jaGVja0lmTWF4RGF0YVNpemVFeGNlZWRlZCIsImV4dGVuc2lvbnMiLCJ0eXBlcyIsInByZWZlcmVuY2UiLCJkYiIsImV4dG5hbWUiLCJFWFRSQUNUX1RZUEVfUkVHRVhQIiwiVEVYVF9UWVBFX1JFR0VYUCIsImNoYXJzZXQiLCJjaGFyc2V0cyIsImV4dGVuc2lvbiIsImV4dHMiLCJzZXJpYWwiLCJzZXJpYWxPcmRlcmVkIiwiYWNjaWRlbnRhbFN0cmljdE1vZGUiLCJnbG9iYWxUaGlzIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIlByb21pc2VJbXBsIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwiX25leHQiLCJfdGhyb3ciLCJhc3luY0l0ZXJhYmxlIiwiY2FjaGUiLCJrZWVwTG9vcGluZyIsInJlc3AiLCJyb3dzIiwidmFsdWVUb1JldHVybiJdLCJtYXBwaW5ncyI6IkNBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELElBQ1EsbUJBQVhHLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTyxhQUFjLEdBQUlILEdBQ0MsaUJBQVpDLFFBQ2RBLFFBQVEsY0FBZ0JELElBRXhCRCxFQUFLLGNBQWdCQyxJQVJ2QixDQVNtQixvQkFBVEssS0FBdUJBLEtBQU9DLE1BQU0sV0FDOUMsTyxZQ1RFLElBQUlDLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVSLFFBR25DLElBQUlDLEVBQVNLLEVBQWlCRSxHQUFZLENBQ3pDQyxFQUFHRCxFQUNIRSxHQUFHLEVBQ0hWLFFBQVMsSUFVVixPQU5BVyxFQUFRSCxHQUFVSSxLQUFLWCxFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTTyxHQUcvRE4sRUFBT1MsR0FBSSxFQUdKVCxFQUFPRCxRQTBEZixPQXJEQU8sRUFBb0JNLEVBQUlGLEVBR3hCSixFQUFvQk8sRUFBSVIsRUFHeEJDLEVBQW9CUSxFQUFJLFNBQVNmLEVBQVNnQixFQUFNQyxHQUMzQ1YsRUFBb0JXLEVBQUVsQixFQUFTZ0IsSUFDbENHLE9BQU9DLGVBQWVwQixFQUFTZ0IsRUFBTSxDQUFFSyxZQUFZLEVBQU1DLElBQUtMLEtBS2hFVixFQUFvQmdCLEVBQUksU0FBU3ZCLEdBQ1gsb0JBQVh3QixRQUEwQkEsT0FBT0MsYUFDMUNOLE9BQU9DLGVB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QVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxJQUNSLEVBQVEsS0FDUixFQUFRLElBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLElBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVB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LGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixZQUFlLE1BQ2YsYUFBZSxNQUNmLGFBQWUsTUFDZixhQUFlLE1BQ2YsYUFBZSxNQUNmLGFBQWUsTUFDZixhQUFlLE1BQ2YsYUFBZSxNQUNmLGFBQWUsTUFDZixhQUFlLE1BQ2YsYUFBZSxNQUNmLGFBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGFBQWMsTUFDZCxjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGFBQWMsTUFDZCxjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGNBQWUsTUFDZixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLEtBQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsaUJBQWtCLE1BQ2xCLGlCQUFrQixNQUNsQixpQkFBa0IsTUFDbEIsaUJBQWtCLFFBR3BCNXNDLEVBQVEwMUIsTUFBUXYwQixPQUFPeXJDLE9BQU8sQ0FDNUIyckIsRUFBSyxXQUdMLEdBQU0sT0FDTixHQUFNLFdBQ04sR0FBTSxXQUNOLEdBQU0sZUFDTixHQUFNLFdBQ04sR0FBTSxXQUNOLEdBQU0sV0FDTixHQUFNLFdBQ04sR0FBTSxZQUNOLEdBQU0sWUFDTixHQUFNLGFBQ04sR0FBTSxhQUNOLEdBQU0sYUFDTixHQUFNLGFBRU4sR0FBTSxjQUNOLEdBQU0sYUFHTixNQUFRLFlBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxZQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FHUixNQUFRLGFBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsYUFDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGNBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLEtBQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsaUJBQ1IsTUFBUSxpQkFDUixNQUFRLGlCQUNSLE1BQVEsbUJBR1Z2NEQsRUFBUTIxQixlQUFpQngwQixPQUFPeXJDLE9BQU8sQ0FDckMsR0FBTSxHQUNOLEdBQU0sR0FDTixHQUFNLEdBQ04sR0FBTSxHQUNOLEdBQU0sR0FDTixHQUFNLEdBQ04sR0FBTSxHQUNOLEdBQU0sR0FDTixHQUFNLEdBQ04sR0FBTSxHQUNOLEdBQU0sR0FDTixHQUFNLEdBQ04sR0FBTSxHQUNOLEdBQU0sR0FDTixHQUFNLEdBRU4sTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLEtBQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxJQUNSLE1BQVEsSUFDUixNQUFRLElBQ1IsTUFBUSxJQUNSLE1BQVEsSUFDUixNQUFRLElBQ1IsTUFBUSxJQUNSLE1BQVEsSUFDUixNQUFRLElBQ1IsTUFBUSxJQUNS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NGEsRUFFRix1REFGd0MsR0FDdENzZCxFQUNGLHdEQURjLEVBRVosR0FBaUIsSUFBYkEsRUFDQSxNQUFNeDNCLE1BQU0sd0JBR2hCLElBQU00bUQsR0FBZ0IsRUFBSCxjQUNkOWtFLE9BQU80bkQsZUFBZ0IsV0FDcEIsSUFBSTNvRCxFQUFJLEVBRUo4MUMsRUFBYSxFQUNiZ3dCLEVBQXFCLEdBQ3JCQyxHQUFjLEVBRWxCLE1BQU8sQ0FDSDVyRCxLQURHLFdBRUMsT0FBTyxJQUFJM0csU0FBUSxTQUFDOUMsRUFBU21CLElBQ2YsSUFBTjdSLEdBQVlBLEVBUlYsSUFRNEIsR0FBSytsRSxJQUNuQ3IxRCxHQUNJLGFBQVE2TixFQUFSLE9BQ080YSxHQUNBLENBQUUyYyxhQUFZRCxVQVp2QixNQWFLaGxDLE1BQUssU0FBQ20xRCxHQUNMRixFQUFRRSxFQUFLQyxLQUNibndCLEdBQTBCZ3dCLEVBQU01L0QsT0FHaEM2L0QsRUFDcUIsSUFBakJELEVBQU01L0QsVUFDUyxJQUFkdXdDLEVBcEJYLEtBb0I2QnF2QixFQUFNNS9ELE9BQXVCbEcsRUFBSXkyQyxPQUlwRS9sQyxFQUFRLE1BQ1RHLE1BQUssV0FDSixJQUFNcTFELEVBQWdCSixFQUFNOWxFLEVBMUJ0QixJQTRCQW9hLE1BQ2EsSUFBZHE4QixFQUFrQnoyQyxFQUFJODFDLEVBQWE5MUMsRUFBSXkyQyxJQUN4Q3N2QixHQUlKLE9BREEvbEUsSUFDT3dULFFBQVE5QyxRQUFRLENBQ25CelAsTUFBT2lsRSxFQUNQOXJELGFBL0JULGtCQXFDQyxPQUFPNUcsUUFBUTlDLFFBQVEsQ0FBRXpQLE1BQU9qQixFQUFHb2EsTUFBTSxTQU16RCxPQUFPeXJELEcsaUZBL0RYLGdCLCtyQkNEQSxtTEFDQSxtTEFDQSxtTEFDQSxvTCwrRkNIQSxtTEFDQSxtTEFDQSxtTEFDQSxtTEFDQSxtTEFDQSxtTEFDQSxtTEFDQSIsImZpbGUiOiJwaW5hdGEtc2RrLm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwicGluYXRhLXNka1wiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJwaW5hdGEtc2RrXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInBpbmF0YS1zZGtcIl0gPSBmYWN0b3J5KCk7XG59KSh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDIwOSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIHRhcmdldCA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSB8fCAoZ2xvYmFsW25hbWVdID0ge30pIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdIHx8IChleHBvcnRzW1BST1RPVFlQRV0gPSB7fSk7XG4gIHZhciBrZXksIG93biwgb3V0LCBleHA7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSAob3duID8gdGFyZ2V0IDogc291cmNlKVtrZXldO1xuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgZXhwID0gSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIGlmICh0YXJnZXQpIHJlZGVmaW5lKHRhcmdldCwga2V5LCBvdXQsIHR5cGUgJiAkZXhwb3J0LlUpO1xuICAgIC8vIGV4cG9ydFxuICAgIGlmIChleHBvcnRzW2tleV0gIT0gb3V0KSBoaWRlKGV4cG9ydHMsIGtleSwgZXhwKTtcbiAgICBpZiAoSVNfUFJPVE8gJiYgZXhwUHJvdG9ba2V5XSAhPSBvdXQpIGV4cFByb3RvW2tleV0gPSBvdXQ7XG4gIH1cbn07XG5nbG9iYWwuY29yZSA9IGNvcmU7XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5pZiAodHlwZW9mIF9fZyA9PSAnbnVtYmVyJykgX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcbiIsInZhciBzdG9yZSA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCd3a3MnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcbiIsIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgwKTtcbnZhciBTVFJJQ1QgPSByZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZm9yRWFjaCwgdHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIVNUUklDVCwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTAgLyAxNS40LjQuMTggQXJyYXkucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZm9yRWFjaCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsImZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7XG4gIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgXCJkZWZhdWx0XCI6IG9ialxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiLy8gMTkuMS4yLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgna2V5cycsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGtleXMoaXQpIHtcbiAgICByZXR1cm4gJGtleXModG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG5cbi8qZ2xvYmFsIHRvU3RyaW5nOnRydWUqL1xuXG4vLyB1dGlscyBpcyBhIGxpYnJhcnkgb2YgZ2VuZXJpYyBoZWxwZXIgZnVuY3Rpb25zIG5vbi1zcGVjaWZpYyB0byBheGlvc1xuXG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXksIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5KHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBBcnJheV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIHVuZGVmaW5lZFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0J1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsKSAmJiB2YWwuY29uc3RydWN0b3IgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbC5jb25zdHJ1Y3RvcilcbiAgICAmJiB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcih2YWwpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBGb3JtRGF0YSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRm9ybURhdGEodmFsKSB7XG4gIHJldHVybiAodHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJykgJiYgKHZhbCBpbnN0YW5jZW9mIEZvcm1EYXRhKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVmlldyh2YWwpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnKSAmJiAoQXJyYXlCdWZmZXIuaXNWaWV3KSkge1xuICAgIHJlc3VsdCA9IEFycmF5QnVmZmVyLmlzVmlldyh2YWwpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9ICh2YWwpICYmICh2YWwuYnVmZmVyKSAmJiAodmFsLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyaW5nXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJpbmcsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgTnVtYmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsKSB7XG4gIGlmICh0b1N0cmluZy5jYWxsKHZhbCkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWwpO1xuICByZXR1cm4gcHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIERhdGVcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIERhdGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0RhdGUodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZpbGVcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0ZpbGUodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZpbGVdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJsb2JcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJsb2IsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Jsb2IodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEJsb2JdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGdW5jdGlvbiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJlYW1cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmVhbSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyZWFtKHZhbCkge1xuICByZXR1cm4gaXNPYmplY3QodmFsKSAmJiBpc0Z1bmN0aW9uKHZhbC5waXBlKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VSTFNlYXJjaFBhcmFtcyh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMgIT09ICd1bmRlZmluZWQnICYmIHZhbCBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcztcbn1cblxuLyoqXG4gKiBUcmltIGV4Y2VzcyB3aGl0ZXNwYWNlIG9mZiB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBTdHJpbmcgdG8gdHJpbVxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFN0cmluZyBmcmVlZCBvZiBleGNlc3Mgd2hpdGVzcGFjZVxuICovXG5mdW5jdGlvbiB0cmltKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMqLywgJycpLnJlcGxhY2UoL1xccyokLywgJycpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB3ZSdyZSBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudFxuICpcbiAqIFRoaXMgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXIsIGFuZCByZWFjdC1uYXRpdmUuXG4gKiBCb3RoIGVudmlyb25tZW50cyBzdXBwb3J0IFhNTEh0dHBSZXF1ZXN0LCBidXQgbm90IGZ1bGx5IHN0YW5kYXJkIGdsb2JhbHMuXG4gKlxuICogd2ViIHdvcmtlcnM6XG4gKiAgdHlwZW9mIHdpbmRvdyAtPiB1bmRlZmluZWRcbiAqICB0eXBlb2YgZG9jdW1lbnQgLT4gdW5kZWZpbmVkXG4gKlxuICogcmVhY3QtbmF0aXZlOlxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdSZWFjdE5hdGl2ZSdcbiAqIG5hdGl2ZXNjcmlwdFxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdOYXRpdmVTY3JpcHQnIG9yICdOUydcbiAqL1xuZnVuY3Rpb24gaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAobmF2aWdhdG9yLnByb2R1Y3QgPT09ICdSZWFjdE5hdGl2ZScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05hdGl2ZVNjcmlwdCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05TJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcbiAgKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0IGludm9raW5nIGEgZnVuY3Rpb24gZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiBgb2JqYCBpcyBhbiBBcnJheSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGluZGV4LCBhbmQgY29tcGxldGUgYXJyYXkgZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiAnb2JqJyBpcyBhbiBPYmplY3QgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBrZXksIGFuZCBjb21wbGV0ZSBvYmplY3QgZm9yIGVhY2ggcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG9iaiBUaGUgb2JqZWN0IHRvIGl0ZXJhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBjYWxsYmFjayB0byBpbnZva2UgZm9yIGVhY2ggaXRlbVxuICovXG5mdW5jdGlvbiBmb3JFYWNoKG9iaiwgZm4pIHtcbiAgLy8gRG9uJ3QgYm90aGVyIGlmIG5vIHZhbHVlIHByb3ZpZGVkXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBGb3JjZSBhbiBhcnJheSBpZiBub3QgYWxyZWFkeSBzb21ldGhpbmcgaXRlcmFibGVcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgb2JqID0gW29ial07XG4gIH1cblxuICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIGFycmF5IHZhbHVlc1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgZm4uY2FsbChudWxsLCBvYmpbaV0sIGksIG9iaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBvYmplY3Qga2V5c1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2tleV0sIGtleSwgb2JqKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBY2NlcHRzIHZhcmFyZ3MgZXhwZWN0aW5nIGVhY2ggYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0LCB0aGVuXG4gKiBpbW11dGFibHkgbWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2ggb2JqZWN0IGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBXaGVuIG11bHRpcGxlIG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBrZXkgdGhlIGxhdGVyIG9iamVjdCBpblxuICogdGhlIGFyZ3VtZW50cyBsaXN0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIHZhciByZXN1bHQgPSBtZXJnZSh7Zm9vOiAxMjN9LCB7Zm9vOiA0NTZ9KTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdC5mb28pOyAvLyBvdXRwdXRzIDQ1NlxuICogYGBgXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iajEgT2JqZWN0IHRvIG1lcmdlXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXN1bHQgb2YgYWxsIG1lcmdlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gbWVyZ2UoLyogb2JqMSwgb2JqMiwgb2JqMywgLi4uICovKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChyZXN1bHRba2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHJlc3VsdFtrZXldLCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHt9LCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbC5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0ZW5kcyBvYmplY3QgYSBieSBtdXRhYmx5IGFkZGluZyB0byBpdCB0aGUgcHJvcGVydGllcyBvZiBvYmplY3QgYi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYSBUaGUgb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gKiBAcGFyYW0ge09iamVjdH0gYiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgb2JqZWN0IHRvIGJpbmQgZnVuY3Rpb24gdG9cbiAqIEByZXR1cm4ge09iamVjdH0gVGhlIHJlc3VsdGluZyB2YWx1ZSBvZiBvYmplY3QgYVxuICovXG5mdW5jdGlvbiBleHRlbmQoYSwgYiwgdGhpc0FyZykge1xuICBmb3JFYWNoKGIsIGZ1bmN0aW9uIGFzc2lnblZhbHVlKHZhbCwga2V5KSB7XG4gICAgaWYgKHRoaXNBcmcgJiYgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYVtrZXldID0gYmluZCh2YWwsIHRoaXNBcmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhW2tleV0gPSB2YWw7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGE7XG59XG5cbi8qKlxuICogUmVtb3ZlIGJ5dGUgb3JkZXIgbWFya2VyLiBUaGlzIGNhdGNoZXMgRUYgQkIgQkYgKHRoZSBVVEYtOCBCT00pXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgd2l0aCBCT01cbiAqIEByZXR1cm4ge3N0cmluZ30gY29udGVudCB2YWx1ZSB3aXRob3V0IEJPTVxuICovXG5mdW5jdGlvbiBzdHJpcEJPTShjb250ZW50KSB7XG4gIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNBcnJheTogaXNBcnJheSxcbiAgaXNBcnJheUJ1ZmZlcjogaXNBcnJheUJ1ZmZlcixcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICBpc0Zvcm1EYXRhOiBpc0Zvcm1EYXRhLFxuICBpc0FycmF5QnVmZmVyVmlldzogaXNBcnJheUJ1ZmZlclZpZXcsXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICBpc09iamVjdDogaXNPYmplY3QsXG4gIGlzUGxhaW5PYmplY3Q6IGlzUGxhaW5PYmplY3QsXG4gIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgaXNEYXRlOiBpc0RhdGUsXG4gIGlzRmlsZTogaXNGaWxlLFxuICBpc0Jsb2I6IGlzQmxvYixcbiAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcbiAgaXNTdHJlYW06IGlzU3RyZWFtLFxuICBpc1VSTFNlYXJjaFBhcmFtczogaXNVUkxTZWFyY2hQYXJhbXMsXG4gIGlzU3RhbmRhcmRCcm93c2VyRW52OiBpc1N0YW5kYXJkQnJvd3NlckVudixcbiAgZm9yRWFjaDogZm9yRWFjaCxcbiAgbWVyZ2U6IG1lcmdlLFxuICBleHRlbmQ6IGV4dGVuZCxcbiAgdHJpbTogdHJpbSxcbiAgc3RyaXBCT006IHN0cmlwQk9NXG59O1xuIiwidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRQLmYob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgU1JDID0gcmVxdWlyZSgnLi9fdWlkJykoJ3NyYycpO1xudmFyICR0b1N0cmluZyA9IHJlcXVpcmUoJy4vX2Z1bmN0aW9uLXRvLXN0cmluZycpO1xudmFyIFRPX1NUUklORyA9ICd0b1N0cmluZyc7XG52YXIgVFBMID0gKCcnICsgJHRvU3RyaW5nKS5zcGxpdChUT19TVFJJTkcpO1xuXG5yZXF1aXJlKCcuL19jb3JlJykuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gJHRvU3RyaW5nLmNhbGwoaXQpO1xufTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsLCBzYWZlKSB7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIHZhbCA9PSAnZnVuY3Rpb24nO1xuICBpZiAoaXNGdW5jdGlvbikgaGFzKHZhbCwgJ25hbWUnKSB8fCBoaWRlKHZhbCwgJ25hbWUnLCBrZXkpO1xuICBpZiAoT1trZXldID09PSB2YWwpIHJldHVybjtcbiAgaWYgKGlzRnVuY3Rpb24pIGhhcyh2YWwsIFNSQykgfHwgaGlkZSh2YWwsIFNSQywgT1trZXldID8gJycgKyBPW2tleV0gOiBUUEwuam9pbihTdHJpbmcoa2V5KSkpO1xuICBpZiAoTyA9PT0gZ2xvYmFsKSB7XG4gICAgT1trZXldID0gdmFsO1xuICB9IGVsc2UgaWYgKCFzYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgICBoaWRlKE8sIGtleSwgdmFsKTtcbiAgfSBlbHNlIGlmIChPW2tleV0pIHtcbiAgICBPW2tleV0gPSB2YWw7XG4gIH0gZWxzZSB7XG4gICAgaGlkZShPLCBrZXksIHZhbCk7XG4gIH1cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiB0aGlzW1NSQ10gfHwgJHRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG52YXIgcXVvdCA9IC9cIi9nO1xuLy8gQi4yLjMuMi4xIENyZWF0ZUhUTUwoc3RyaW5nLCB0YWcsIGF0dHJpYnV0ZSwgdmFsdWUpXG52YXIgY3JlYXRlSFRNTCA9IGZ1bmN0aW9uIChzdHJpbmcsIHRhZywgYXR0cmlidXRlLCB2YWx1ZSkge1xuICB2YXIgUyA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpO1xuICB2YXIgcDEgPSAnPCcgKyB0YWc7XG4gIGlmIChhdHRyaWJ1dGUgIT09ICcnKSBwMSArPSAnICcgKyBhdHRyaWJ1dGUgKyAnPVwiJyArIFN0cmluZyh2YWx1ZSkucmVwbGFjZShxdW90LCAnJnF1b3Q7JykgKyAnXCInO1xuICByZXR1cm4gcDEgKyAnPicgKyBTICsgJzwvJyArIHRhZyArICc+Jztcbn07XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChOQU1FLCBleGVjKSB7XG4gIHZhciBPID0ge307XG4gIE9bTkFNRV0gPSBleGVjKGNyZWF0ZUhUTUwpO1xuICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGVzdCA9ICcnW05BTUVdKCdcIicpO1xuICAgIHJldHVybiB0ZXN0ICE9PSB0ZXN0LnRvTG93ZXJDYXNlKCkgfHwgdGVzdC5zcGxpdCgnXCInKS5sZW5ndGggPiAzO1xuICB9KSwgJ1N0cmluZycsIE8pO1xufTtcbiIsInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG4iLCIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgdGVzdCA9IHt9O1xudGVzdFtyZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKV0gPSAneic7XG5pZiAodGVzdCArICcnICE9ICdbb2JqZWN0IHpdJykge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKE9iamVjdC5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnW29iamVjdCAnICsgY2xhc3NvZih0aGlzKSArICddJztcbiAgfSwgdHJ1ZSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmaWx0ZXIgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMik7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5maWx0ZXIsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy43IC8gMTUuNC40LjIwIEFycmF5LnByb3RvdHlwZS5maWx0ZXIoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJGZpbHRlcih0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuMTEnIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIiwiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtZXRob2QsIGFyZykge1xuICByZXR1cm4gISFtZXRob2QgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNhbGxcbiAgICBhcmcgPyBtZXRob2QuY2FsbChudWxsLCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sIDEpIDogbWV0aG9kLmNhbGwobnVsbCk7XG4gIH0pO1xufTtcbiIsImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gRUNNQVNjcmlwdCA2IHN5bWJvbHMgc2hpbVxudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIE1FVEEgPSByZXF1aXJlKCcuL19tZXRhJykuS0VZO1xudmFyICRmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciB3a3NEZWZpbmUgPSByZXF1aXJlKCcuL193a3MtZGVmaW5lJyk7XG52YXIgZW51bUtleXMgPSByZXF1aXJlKCcuL19lbnVtLWtleXMnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIF9jcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZ09QTkV4dCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuLWV4dCcpO1xudmFyICRHT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciAkR09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgJERQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUEQgPSAkR09QRC5mO1xudmFyIGRQID0gJERQLmY7XG52YXIgZ09QTiA9IGdPUE5FeHQuZjtcbnZhciAkU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciAkSlNPTiA9IGdsb2JhbC5KU09OO1xudmFyIF9zdHJpbmdpZnkgPSAkSlNPTiAmJiAkSlNPTi5zdHJpbmdpZnk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgSElEREVOID0gd2tzKCdfaGlkZGVuJyk7XG52YXIgVE9fUFJJTUlUSVZFID0gd2tzKCd0b1ByaW1pdGl2ZScpO1xudmFyIGlzRW51bSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKTtcbnZhciBBbGxTeW1ib2xzID0gc2hhcmVkKCdzeW1ib2xzJyk7XG52YXIgT1BTeW1ib2xzID0gc2hhcmVkKCdvcC1zeW1ib2xzJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3RbUFJPVE9UWVBFXTtcbnZhciBVU0VfTkFUSVZFID0gdHlwZW9mICRTeW1ib2wgPT0gJ2Z1bmN0aW9uJyAmJiAhISRHT1BTLmY7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRQKHRoaXMsICdhJywgeyB2YWx1ZTogNyB9KS5hOyB9XG4gIH0pKS5hICE9IDc7XG59KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZiAocHJvdG9EZXNjKSBkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgZFAoaXQsIGtleSwgRCk7XG4gIGlmIChwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKSBkUChPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xufSA6IGRQO1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpIHtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90bykgJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcbiAgYW5PYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBhbk9iamVjdChEKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFELmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKGl0LCBISURERU4pKSBkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG4gICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkgaXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIGRQKGl0LCBrZXksIEQpO1xufTtcbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApIHtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0ga2V5cy5sZW5ndGg7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsID4gaSkgJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCkge1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSkge1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgaXQgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBEID0gZ09QRChpdCwga2V5KTtcbiAgaWYgKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkgRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOICYmIGtleSAhPSBNRVRBKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvO1xuICB2YXIgbmFtZXMgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKSB0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEnKTtcbiAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvKSAkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfTtcbiAgICBpZiAoREVTQ1JJUFRPUlMgJiYgc2V0dGVyKSBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXQgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mID0gJGRlZmluZVByb3BlcnR5O1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gICRHT1BTLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiAhcmVxdWlyZSgnLi9fbGlicmFyeScpKSB7XG4gICAgcmVkZWZpbmUoT2JqZWN0UHJvdG8sICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICRwcm9wZXJ0eUlzRW51bWVyYWJsZSwgdHJ1ZSk7XG4gIH1cblxuICB3a3NFeHQuZiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIHdyYXAod2tzKG5hbWUpKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBTeW1ib2w6ICRTeW1ib2wgfSk7XG5cbmZvciAodmFyIGVzNlN5bWJvbHMgPSAoXG4gIC8vIDE5LjQuMi4yLCAxOS40LjIuMywgMTkuNC4yLjQsIDE5LjQuMi42LCAxOS40LjIuOCwgMTkuNC4yLjksIDE5LjQuMi4xMCwgMTkuNC4yLjExLCAxOS40LjIuMTIsIDE5LjQuMi4xMywgMTkuNC4yLjE0XG4gICdoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcbikuc3BsaXQoJywnKSwgaiA9IDA7IGVzNlN5bWJvbHMubGVuZ3RoID4gajspd2tzKGVzNlN5bWJvbHNbaisrXSk7XG5cbmZvciAodmFyIHdlbGxLbm93blN5bWJvbHMgPSAka2V5cyh3a3Muc3RvcmUpLCBrID0gMDsgd2VsbEtub3duU3ltYm9scy5sZW5ndGggPiBrOykgd2tzRGVmaW5lKHdlbGxLbm93blN5bWJvbHNbaysrXSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdTeW1ib2wnLCB7XG4gIC8vIDE5LjQuMi4xIFN5bWJvbC5mb3Ioa2V5KVxuICAnZm9yJzogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJylcbiAgICAgID8gU3ltYm9sUmVnaXN0cnlba2V5XVxuICAgICAgOiBTeW1ib2xSZWdpc3RyeVtrZXldID0gJFN5bWJvbChrZXkpO1xuICB9LFxuICAvLyAxOS40LjIuNSBTeW1ib2wua2V5Rm9yKHN5bSlcbiAga2V5Rm9yOiBmdW5jdGlvbiBrZXlGb3Ioc3ltKSB7XG4gICAgaWYgKCFpc1N5bWJvbChzeW0pKSB0aHJvdyBUeXBlRXJyb3Ioc3ltICsgJyBpcyBub3QgYSBzeW1ib2whJyk7XG4gICAgZm9yICh2YXIga2V5IGluIFN5bWJvbFJlZ2lzdHJ5KSBpZiAoU3ltYm9sUmVnaXN0cnlba2V5XSA9PT0gc3ltKSByZXR1cm4ga2V5O1xuICB9LFxuICB1c2VTZXR0ZXI6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gdHJ1ZTsgfSxcbiAgdXNlU2ltcGxlOiBmdW5jdGlvbiAoKSB7IHNldHRlciA9IGZhbHNlOyB9XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ09iamVjdCcsIHtcbiAgLy8gMTkuMS4yLjIgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuICBjcmVhdGU6ICRjcmVhdGUsXG4gIC8vIDE5LjEuMi40IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuICBkZWZpbmVQcm9wZXJ0eTogJGRlZmluZVByb3BlcnR5LFxuICAvLyAxOS4xLjIuMyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuICBkZWZpbmVQcm9wZXJ0aWVzOiAkZGVmaW5lUHJvcGVydGllcyxcbiAgLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gIC8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG4gIGdldE93blByb3BlcnR5TmFtZXM6ICRnZXRPd25Qcm9wZXJ0eU5hbWVzLFxuICAvLyAxOS4xLjIuOCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pXG4gIGdldE93blByb3BlcnR5U3ltYm9sczogJGdldE93blByb3BlcnR5U3ltYm9sc1xufSk7XG5cbi8vIENocm9tZSAzOCBhbmQgMzkgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgIGZhaWxzIG9uIHByaW1pdGl2ZXNcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTM0NDNcbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gJGZhaWxzKGZ1bmN0aW9uICgpIHsgJEdPUFMuZigxKTsgfSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogRkFJTFNfT05fUFJJTUlUSVZFUywgJ09iamVjdCcsIHtcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgICByZXR1cm4gJEdPUFMuZih0b09iamVjdChpdCkpO1xuICB9XG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgUyA9ICRTeW1ib2woKTtcbiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pKSwgJ0pTT04nLCB7XG4gIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7XG4gICAgdmFyIGFyZ3MgPSBbaXRdO1xuICAgIHZhciBpID0gMTtcbiAgICB2YXIgcmVwbGFjZXIsICRyZXBsYWNlcjtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgJHJlcGxhY2VyID0gcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mICRyZXBsYWNlciA9PSAnZnVuY3Rpb24nKSB2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcbiAgICByZXR1cm4gX3N0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJncyk7XG4gIH1cbn0pO1xuXG4vLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpXG4kU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCByZXF1aXJlKCcuL19oaWRlJykoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mKTtcbi8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcbi8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4vLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjMgLyAxNS4yLjMuNyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydGllczogcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpIH0pO1xuIiwiLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodG9JT2JqZWN0KGl0KSwga2V5KTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4vX3VzZXItYWdlbnQnKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnM7XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52OCB8fCAnJztcbnZhciAkUHJvbWlzZSA9IGdsb2JhbFtQUk9NSVNFXTtcbnZhciBpc05vZGUgPSBjbGFzc29mKHByb2Nlc3MpID09ICdwcm9jZXNzJztcbnZhciBlbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBJbnRlcm5hbCwgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5LCBPd25Qcm9taXNlQ2FwYWJpbGl0eSwgV3JhcHBlcjtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG5cbnZhciBVU0VfTkFUSVZFID0gISFmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLy8gY29ycmVjdCBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgPSAkUHJvbWlzZS5yZXNvbHZlKDEpO1xuICAgIHZhciBGYWtlUHJvbWlzZSA9IChwcm9taXNlLmNvbnN0cnVjdG9yID0ge30pW3JlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyldID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgICAgIGV4ZWMoZW1wdHksIGVtcHR5KTtcbiAgICB9O1xuICAgIC8vIHVuaGFuZGxlZCByZWplY3Rpb25zIHRyYWNraW5nIHN1cHBvcnQsIE5vZGVKUyBQcm9taXNlIHdpdGhvdXQgaXQgZmFpbHMgQEBzcGVjaWVzIHRlc3RcbiAgICByZXR1cm4gKGlzTm9kZSB8fCB0eXBlb2YgUHJvbWlzZVJlamVjdGlvbkV2ZW50ID09ICdmdW5jdGlvbicpXG4gICAgICAmJiBwcm9taXNlLnRoZW4oZW1wdHkpIGluc3RhbmNlb2YgRmFrZVByb21pc2VcbiAgICAgIC8vIHY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTgzMDU2NVxuICAgICAgLy8gd2UgY2FuJ3QgZGV0ZWN0IGl0IHN5bmNocm9ub3VzbHksIHNvIGp1c3QgY2hlY2sgdmVyc2lvbnNcbiAgICAgICYmIHY4LmluZGV4T2YoJzYuNicpICE9PSAwXG4gICAgICAmJiB1c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lLzY2JykgPT09IC0xO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn0oKTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHByb21pc2UsIGlzUmVqZWN0KSB7XG4gIGlmIChwcm9taXNlLl9uKSByZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIG9rID0gcHJvbWlzZS5fcyA9PSAxO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24gKHJlYWN0aW9uKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICAgICAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICAgICAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgICAgIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gICAgICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIGlmIChwcm9taXNlLl9oID09IDIpIG9uSGFuZGxlVW5oYW5kbGVkKHByb21pc2UpO1xuICAgICAgICAgICAgcHJvbWlzZS5faCA9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkb21haW4pIGRvbWFpbi5lbnRlcigpO1xuICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7IC8vIG1heSB0aHJvd1xuICAgICAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgICBkb21haW4uZXhpdCgpO1xuICAgICAgICAgICAgICBleGl0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgICAgICByZWplY3QoVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhlbi5jYWxsKHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2UgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGRvbWFpbiAmJiAhZXhpdGVkKSBkb21haW4uZXhpdCgpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoID4gaSkgcnVuKGNoYWluW2krK10pOyAvLyB2YXJpYWJsZSBsZW5ndGggLSBjYW4ndCB1c2UgZm9yRWFjaFxuICAgIHByb21pc2UuX2MgPSBbXTtcbiAgICBwcm9taXNlLl9uID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFwcm9taXNlLl9oKSBvblVuaGFuZGxlZChwcm9taXNlKTtcbiAgfSk7XG59O1xudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIHVuaGFuZGxlZCA9IGlzVW5oYW5kbGVkKHByb21pc2UpO1xuICAgIHZhciByZXN1bHQsIGhhbmRsZXIsIGNvbnNvbGU7XG4gICAgaWYgKHVuaGFuZGxlZCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChpc05vZGUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVyID0gZ2xvYmFsLm9udW5oYW5kbGVkcmVqZWN0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlcih7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogdmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZSkgJiYgY29uc29sZS5lcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBCcm93c2VycyBzaG91bGQgbm90IHRyaWdnZXIgYHJlamVjdGlvbkhhbmRsZWRgIGV2ZW50IGlmIGl0IHdhcyBoYW5kbGVkIGhlcmUsIE5vZGVKUyAtIHNob3VsZFxuICAgICAgcHJvbWlzZS5faCA9IGlzTm9kZSB8fCBpc1VuaGFuZGxlZChwcm9taXNlKSA/IDIgOiAxO1xuICAgIH0gcHJvbWlzZS5fYSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodW5oYW5kbGVkICYmIHJlc3VsdC5lKSB0aHJvdyByZXN1bHQudjtcbiAgfSk7XG59O1xudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgcmV0dXJuIHByb21pc2UuX2ggIT09IDEgJiYgKHByb21pc2UuX2EgfHwgcHJvbWlzZS5fYykubGVuZ3RoID09PSAwO1xufTtcbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaGFuZGxlcjtcbiAgICBpZiAoaXNOb2RlKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub25yZWplY3Rpb25oYW5kbGVkKSB7XG4gICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiBwcm9taXNlLl92IH0pO1xuICAgIH1cbiAgfSk7XG59O1xudmFyICRyZWplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHByb21pc2UgPSB0aGlzO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgcHJvbWlzZS5fcyA9IDI7XG4gIGlmICghcHJvbWlzZS5fYSkgcHJvbWlzZS5fYSA9IHByb21pc2UuX2Muc2xpY2UoKTtcbiAgbm90aWZ5KHByb21pc2UsIHRydWUpO1xufTtcbnZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIHZhciB0aGVuO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHRyeSB7XG4gICAgaWYgKHByb21pc2UgPT09IHZhbHVlKSB0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICBpZiAodGhlbiA9IGlzVGhlbmFibGUodmFsdWUpKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9OyAvLyB3cmFwXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBjdHgoJHJlc29sdmUsIHdyYXBwZXIsIDEpLCBjdHgoJHJlamVjdCwgd3JhcHBlciwgMSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICAgICAgcHJvbWlzZS5fcyA9IDE7XG4gICAgICBub3RpZnkocHJvbWlzZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgICRyZWplY3QuY2FsbCh7IF93OiBwcm9taXNlLCBfZDogZmFsc2UgfSwgZSk7IC8vIHdyYXBcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmICghVVNFX05BVElWRSkge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICAkUHJvbWlzZSA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRQcm9taXNlLCBQUk9NSVNFLCAnX2gnKTtcbiAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgdGhpcywgMSksIGN0eCgkcmVqZWN0LCB0aGlzLCAxKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAkcmVqZWN0LmNhbGwodGhpcywgZXJyKTtcbiAgICB9XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICB0aGlzLl9jID0gW107ICAgICAgICAgICAgIC8vIDwtIGF3YWl0aW5nIHJlYWN0aW9uc1xuICAgIHRoaXMuX2EgPSB1bmRlZmluZWQ7ICAgICAgLy8gPC0gY2hlY2tlZCBpbiBpc1VuaGFuZGxlZCByZWFjdGlvbnNcbiAgICB0aGlzLl9zID0gMDsgICAgICAgICAgICAgIC8vIDwtIHN0YXRlXG4gICAgdGhpcy5fZCA9IGZhbHNlOyAgICAgICAgICAvLyA8LSBkb25lXG4gICAgdGhpcy5fdiA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSB2YWx1ZVxuICAgIHRoaXMuX2ggPSAwOyAgICAgICAgICAgICAgLy8gPC0gcmVqZWN0aW9uIHN0YXRlLCAwIC0gZGVmYXVsdCwgMSAtIGhhbmRsZWQsIDIgLSB1bmhhbmRsZWRcbiAgICB0aGlzLl9uID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIG5vdGlmeVxuICB9O1xuICBJbnRlcm5hbC5wcm90b3R5cGUgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKSgkUHJvbWlzZS5wcm90b3R5cGUsIHtcbiAgICAvLyAyNS40LjUuMyBQcm9taXNlLnByb3RvdHlwZS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkUHJvbWlzZSkpO1xuICAgICAgcmVhY3Rpb24ub2sgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICAgIHJlYWN0aW9uLmZhaWwgPSB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBpc05vZGUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2MucHVzaChyZWFjdGlvbik7XG4gICAgICBpZiAodGhpcy5fYSkgdGhpcy5fYS5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9zKSBub3RpZnkodGhpcywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuICAgICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfVxuICB9KTtcbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGN0eCgkcmVzb2x2ZSwgcHJvbWlzZSwgMSk7XG4gICAgdGhpcy5yZWplY3QgPSBjdHgoJHJlamVjdCwgcHJvbWlzZSwgMSk7XG4gIH07XG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09ICRQcm9taXNlIHx8IEMgPT09IFdyYXBwZXJcbiAgICAgID8gbmV3IE93blByb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICA6IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBQcm9taXNlOiAkUHJvbWlzZSB9KTtcbnJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJykoJFByb21pc2UsIFBST01JU0UpO1xucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKShQUk9NSVNFKTtcbldyYXBwZXIgPSByZXF1aXJlKCcuL19jb3JlJylbUFJPTUlTRV07XG5cbi8vIHN0YXRpY3NcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjUgUHJvbWlzZS5yZWplY3QocilcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcyk7XG4gICAgdmFyICQkcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgJCRyZWplY3Qocik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChMSUJSQVJZIHx8ICFVU0VfTkFUSVZFKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNiBQcm9taXNlLnJlc29sdmUoeClcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKExJQlJBUlkgJiYgdGhpcyA9PT0gV3JhcHBlciA/ICRQcm9taXNlIDogdGhpcywgeCk7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKFVTRV9OQVRJVkUgJiYgcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikge1xuICAkUHJvbWlzZS5hbGwoaXRlcilbJ2NhdGNoJ10oZW1wdHkpO1xufSkpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC4xIFByb21pc2UuYWxsKGl0ZXJhYmxlKVxuICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciAkaW5kZXggPSBpbmRleCsrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbJGluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmUpIHJlamVjdChyZXN1bHQudik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi9fb3duLWtleXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgICB2YXIgZ2V0RGVzYyA9IGdPUEQuZjtcbiAgICB2YXIga2V5cyA9IG93bktleXMoTyk7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5LCBkZXNjO1xuICAgIHdoaWxlIChrZXlzLmxlbmd0aCA+IGkpIHtcbiAgICAgIGRlc2MgPSBnZXREZXNjKE8sIGtleSA9IGtleXNbaSsrXSk7XG4gICAgICBpZiAoZGVzYyAhPT0gdW5kZWZpbmVkKSBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGtleSwgZGVzYyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwiLy8gMCAtPiBBcnJheSNmb3JFYWNoXG4vLyAxIC0+IEFycmF5I21hcFxuLy8gMiAtPiBBcnJheSNmaWx0ZXJcbi8vIDMgLT4gQXJyYXkjc29tZVxuLy8gNCAtPiBBcnJheSNldmVyeVxuLy8gNSAtPiBBcnJheSNmaW5kXG4vLyA2IC0+IEFycmF5I2ZpbmRJbmRleFxudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFzYyA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUWVBFLCAkY3JlYXRlKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgdmFyIGNyZWF0ZSA9ICRjcmVhdGUgfHwgYXNjO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsLCByZXM7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSByZXN1bHRbaW5kZXhdID0gcmVzOyAgIC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXMpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWw7ICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiByZXN1bHQucHVzaCh2YWwpOyAgICAgICAgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07XG4iLCIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjKSB7XG4gIHZhciBmbiA9IChjb3JlLk9iamVjdCB8fCB7fSlbS0VZXSB8fCBPYmplY3RbS0VZXTtcbiAgdmFyIGV4cCA9IHt9O1xuICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcbn07XG4iLCJleHBvcnQgY29uc3QgYmFzZVVybCA9ICdodHRwczovL2FwaS5waW5hdGEuY2xvdWQnO1xuXG5leHBvcnQgY29uc3QgRVJST1JfTk9fQ1JFREVOVElBTFNfUFJPVklERUQgPVxuICAgICdObyBjcmVkZW50aWFscyBwcm92aWRlZCEgUGxlYXNlIHByb3ZpZGUgeW91ciBwaW5hdGEgYXBpIGtleSBhbmQgcGluYXRhIHNlY3JldCBhcGkga2V5IG9yIHlvdXIgcGluYXRhIEpXVCBrZXkgYXMgYW4gYXJndW1lbnQgd2hlbiB5b3Ugc3RhcnQgdGhpcyBzY3JpcHQnO1xuIiwiJ3VzZSBzdHJpY3QnO1xuaWYgKHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykpIHtcbiAgdmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG4gIHZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbiAgdmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbiAgdmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiAgdmFyICR0eXBlZCA9IHJlcXVpcmUoJy4vX3R5cGVkJyk7XG4gIHZhciAkYnVmZmVyID0gcmVxdWlyZSgnLi9fdHlwZWQtYnVmZmVyJyk7XG4gIHZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbiAgdmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xuICB2YXIgcHJvcGVydHlEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xuICB2YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbiAgdmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG4gIHZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG4gIHZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xuICB2YXIgdG9JbmRleCA9IHJlcXVpcmUoJy4vX3RvLWluZGV4Jyk7XG4gIHZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xuICB2YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbiAgdmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xuICB2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbiAgdmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4gIHZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xuICB2YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG4gIHZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG4gIHZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbiAgdmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG4gIHZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuICB2YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG4gIHZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbiAgdmFyIGNyZWF0ZUFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpO1xuICB2YXIgY3JlYXRlQXJyYXlJbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJyk7XG4gIHZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG4gIHZhciBBcnJheUl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG4gIHZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbiAgdmFyICRpdGVyRGV0ZWN0ID0gcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKTtcbiAgdmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuL19zZXQtc3BlY2llcycpO1xuICB2YXIgYXJyYXlGaWxsID0gcmVxdWlyZSgnLi9fYXJyYXktZmlsbCcpO1xuICB2YXIgYXJyYXlDb3B5V2l0aGluID0gcmVxdWlyZSgnLi9fYXJyYXktY29weS13aXRoaW4nKTtcbiAgdmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xuICB2YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xuICB2YXIgZFAgPSAkRFAuZjtcbiAgdmFyIGdPUEQgPSAkR09QRC5mO1xuICB2YXIgUmFuZ2VFcnJvciA9IGdsb2JhbC5SYW5nZUVycm9yO1xuICB2YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbiAgdmFyIFVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheTtcbiAgdmFyIEFSUkFZX0JVRkZFUiA9ICdBcnJheUJ1ZmZlcic7XG4gIHZhciBTSEFSRURfQlVGRkVSID0gJ1NoYXJlZCcgKyBBUlJBWV9CVUZGRVI7XG4gIHZhciBCWVRFU19QRVJfRUxFTUVOVCA9ICdCWVRFU19QRVJfRUxFTUVOVCc7XG4gIHZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbiAgdmFyIEFycmF5UHJvdG8gPSBBcnJheVtQUk9UT1RZUEVdO1xuICB2YXIgJEFycmF5QnVmZmVyID0gJGJ1ZmZlci5BcnJheUJ1ZmZlcjtcbiAgdmFyICREYXRhVmlldyA9ICRidWZmZXIuRGF0YVZpZXc7XG4gIHZhciBhcnJheUZvckVhY2ggPSBjcmVhdGVBcnJheU1ldGhvZCgwKTtcbiAgdmFyIGFycmF5RmlsdGVyID0gY3JlYXRlQXJyYXlNZXRob2QoMik7XG4gIHZhciBhcnJheVNvbWUgPSBjcmVhdGVBcnJheU1ldGhvZCgzKTtcbiAgdmFyIGFycmF5RXZlcnkgPSBjcmVhdGVBcnJheU1ldGhvZCg0KTtcbiAgdmFyIGFycmF5RmluZCA9IGNyZWF0ZUFycmF5TWV0aG9kKDUpO1xuICB2YXIgYXJyYXlGaW5kSW5kZXggPSBjcmVhdGVBcnJheU1ldGhvZCg2KTtcbiAgdmFyIGFycmF5SW5jbHVkZXMgPSBjcmVhdGVBcnJheUluY2x1ZGVzKHRydWUpO1xuICB2YXIgYXJyYXlJbmRleE9mID0gY3JlYXRlQXJyYXlJbmNsdWRlcyhmYWxzZSk7XG4gIHZhciBhcnJheVZhbHVlcyA9IEFycmF5SXRlcmF0b3JzLnZhbHVlcztcbiAgdmFyIGFycmF5S2V5cyA9IEFycmF5SXRlcmF0b3JzLmtleXM7XG4gIHZhciBhcnJheUVudHJpZXMgPSBBcnJheUl0ZXJhdG9ycy5lbnRyaWVzO1xuICB2YXIgYXJyYXlMYXN0SW5kZXhPZiA9IEFycmF5UHJvdG8ubGFzdEluZGV4T2Y7XG4gIHZhciBhcnJheVJlZHVjZSA9IEFycmF5UHJvdG8ucmVkdWNlO1xuICB2YXIgYXJyYXlSZWR1Y2VSaWdodCA9IEFycmF5UHJvdG8ucmVkdWNlUmlnaHQ7XG4gIHZhciBhcnJheUpvaW4gPSBBcnJheVByb3RvLmpvaW47XG4gIHZhciBhcnJheVNvcnQgPSBBcnJheVByb3RvLnNvcnQ7XG4gIHZhciBhcnJheVNsaWNlID0gQXJyYXlQcm90by5zbGljZTtcbiAgdmFyIGFycmF5VG9TdHJpbmcgPSBBcnJheVByb3RvLnRvU3RyaW5nO1xuICB2YXIgYXJyYXlUb0xvY2FsZVN0cmluZyA9IEFycmF5UHJvdG8udG9Mb2NhbGVTdHJpbmc7XG4gIHZhciBJVEVSQVRPUiA9IHdrcygnaXRlcmF0b3InKTtcbiAgdmFyIFRBRyA9IHdrcygndG9TdHJpbmdUYWcnKTtcbiAgdmFyIFRZUEVEX0NPTlNUUlVDVE9SID0gdWlkKCd0eXBlZF9jb25zdHJ1Y3RvcicpO1xuICB2YXIgREVGX0NPTlNUUlVDVE9SID0gdWlkKCdkZWZfY29uc3RydWN0b3InKTtcbiAgdmFyIEFMTF9DT05TVFJVQ1RPUlMgPSAkdHlwZWQuQ09OU1RSO1xuICB2YXIgVFlQRURfQVJSQVkgPSAkdHlwZWQuVFlQRUQ7XG4gIHZhciBWSUVXID0gJHR5cGVkLlZJRVc7XG4gIHZhciBXUk9OR19MRU5HVEggPSAnV3JvbmcgbGVuZ3RoISc7XG5cbiAgdmFyICRtYXAgPSBjcmVhdGVBcnJheU1ldGhvZCgxLCBmdW5jdGlvbiAoTywgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGFsbG9jYXRlKHNwZWNpZXNDb25zdHJ1Y3RvcihPLCBPW0RFRl9DT05TVFJVQ1RPUl0pLCBsZW5ndGgpO1xuICB9KTtcblxuICB2YXIgTElUVExFX0VORElBTiA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkobmV3IFVpbnQxNkFycmF5KFsxXSkuYnVmZmVyKVswXSA9PT0gMTtcbiAgfSk7XG5cbiAgdmFyIEZPUkNFRF9TRVQgPSAhIVVpbnQ4QXJyYXkgJiYgISFVaW50OEFycmF5W1BST1RPVFlQRV0uc2V0ICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgVWludDhBcnJheSgxKS5zZXQoe30pO1xuICB9KTtcblxuICB2YXIgdG9PZmZzZXQgPSBmdW5jdGlvbiAoaXQsIEJZVEVTKSB7XG4gICAgdmFyIG9mZnNldCA9IHRvSW50ZWdlcihpdCk7XG4gICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICUgQllURVMpIHRocm93IFJhbmdlRXJyb3IoJ1dyb25nIG9mZnNldCEnKTtcbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9O1xuXG4gIHZhciB2YWxpZGF0ZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIGlmIChpc09iamVjdChpdCkgJiYgVFlQRURfQVJSQVkgaW4gaXQpIHJldHVybiBpdDtcbiAgICB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIHR5cGVkIGFycmF5IScpO1xuICB9O1xuXG4gIHZhciBhbGxvY2F0ZSA9IGZ1bmN0aW9uIChDLCBsZW5ndGgpIHtcbiAgICBpZiAoIShpc09iamVjdChDKSAmJiBUWVBFRF9DT05TVFJVQ1RPUiBpbiBDKSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJdCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciEnKTtcbiAgICB9IHJldHVybiBuZXcgQyhsZW5ndGgpO1xuICB9O1xuXG4gIHZhciBzcGVjaWVzRnJvbUxpc3QgPSBmdW5jdGlvbiAoTywgbGlzdCkge1xuICAgIHJldHVybiBmcm9tTGlzdChzcGVjaWVzQ29uc3RydWN0b3IoTywgT1tERUZfQ09OU1RSVUNUT1JdKSwgbGlzdCk7XG4gIH07XG5cbiAgdmFyIGZyb21MaXN0ID0gZnVuY3Rpb24gKEMsIGxpc3QpIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBsZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gYWxsb2NhdGUoQywgbGVuZ3RoKTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHJlc3VsdFtpbmRleF0gPSBsaXN0W2luZGV4KytdO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgdmFyIGFkZEdldHRlciA9IGZ1bmN0aW9uIChpdCwga2V5LCBpbnRlcm5hbCkge1xuICAgIGRQKGl0LCBrZXksIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9kW2ludGVybmFsXTsgfSB9KTtcbiAgfTtcblxuICB2YXIgJGZyb20gPSBmdW5jdGlvbiBmcm9tKHNvdXJjZSAvKiAsIG1hcGZuLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChzb3VyY2UpO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgbWFwZm4gPSBhTGVuID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgaSwgbGVuZ3RoLCB2YWx1ZXMsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG4gICAgaWYgKGl0ZXJGbiAhPSB1bmRlZmluZWQgJiYgIWlzQXJyYXlJdGVyKGl0ZXJGbikpIHtcbiAgICAgIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgdmFsdWVzID0gW10sIGkgPSAwOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGkrKykge1xuICAgICAgICB2YWx1ZXMucHVzaChzdGVwLnZhbHVlKTtcbiAgICAgIH0gTyA9IHZhbHVlcztcbiAgICB9XG4gICAgaWYgKG1hcHBpbmcgJiYgYUxlbiA+IDIpIG1hcGZuID0gY3R4KG1hcGZuLCBhcmd1bWVudHNbMl0sIDIpO1xuICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKSwgcmVzdWx0ID0gYWxsb2NhdGUodGhpcywgbGVuZ3RoKTsgbGVuZ3RoID4gaTsgaSsrKSB7XG4gICAgICByZXN1bHRbaV0gPSBtYXBwaW5nID8gbWFwZm4oT1tpXSwgaSkgOiBPW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHZhciAkb2YgPSBmdW5jdGlvbiBvZigvKiAuLi5pdGVtcyAqLykge1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdCA9IGFsbG9jYXRlKHRoaXMsIGxlbmd0aCk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSByZXN1bHRbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4KytdO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gaU9TIFNhZmFyaSA2LnggZmFpbHMgaGVyZVxuICB2YXIgVE9fTE9DQUxFX0JVRyA9ICEhVWludDhBcnJheSAmJiBmYWlscyhmdW5jdGlvbiAoKSB7IGFycmF5VG9Mb2NhbGVTdHJpbmcuY2FsbChuZXcgVWludDhBcnJheSgxKSk7IH0pO1xuXG4gIHZhciAkdG9Mb2NhbGVTdHJpbmcgPSBmdW5jdGlvbiB0b0xvY2FsZVN0cmluZygpIHtcbiAgICByZXR1cm4gYXJyYXlUb0xvY2FsZVN0cmluZy5hcHBseShUT19MT0NBTEVfQlVHID8gYXJyYXlTbGljZS5jYWxsKHZhbGlkYXRlKHRoaXMpKSA6IHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICB9O1xuXG4gIHZhciBwcm90byA9IHtcbiAgICBjb3B5V2l0aGluOiBmdW5jdGlvbiBjb3B5V2l0aGluKHRhcmdldCwgc3RhcnQgLyogLCBlbmQgKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUNvcHlXaXRoaW4uY2FsbCh2YWxpZGF0ZSh0aGlzKSwgdGFyZ2V0LCBzdGFydCwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZXZlcnk6IGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlFdmVyeSh2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZmlsbDogZnVuY3Rpb24gZmlsbCh2YWx1ZSAvKiAsIHN0YXJ0LCBlbmQgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5RmlsbC5hcHBseSh2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gc3BlY2llc0Zyb21MaXN0KHRoaXMsIGFycmF5RmlsdGVyKHZhbGlkYXRlKHRoaXMpLCBjYWxsYmFja2ZuLFxuICAgICAgICBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCkpO1xuICAgIH0sXG4gICAgZmluZDogZnVuY3Rpb24gZmluZChwcmVkaWNhdGUgLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlGaW5kKHZhbGlkYXRlKHRoaXMpLCBwcmVkaWNhdGUsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGZpbmRJbmRleDogZnVuY3Rpb24gZmluZEluZGV4KHByZWRpY2F0ZSAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUZpbmRJbmRleCh2YWxpZGF0ZSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICBhcnJheUZvckVhY2godmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGluZGV4T2Y6IGZ1bmN0aW9uIGluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCAqLykge1xuICAgICAgcmV0dXJuIGFycmF5SW5kZXhPZih2YWxpZGF0ZSh0aGlzKSwgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUluY2x1ZGVzKHZhbGlkYXRlKHRoaXMpLCBzZWFyY2hFbGVtZW50LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBqb2luOiBmdW5jdGlvbiBqb2luKHNlcGFyYXRvcikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlKb2luLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgbGFzdEluZGV4T2Y6IGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5TGFzdEluZGV4T2YuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBtYXA6IGZ1bmN0aW9uIG1hcChtYXBmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiAkbWFwKHZhbGlkYXRlKHRoaXMpLCBtYXBmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2UuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICByZWR1Y2VSaWdodDogZnVuY3Rpb24gcmVkdWNlUmlnaHQoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2VSaWdodC5hcHBseSh2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIHJldmVyc2U6IGZ1bmN0aW9uIHJldmVyc2UoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICB2YXIgbGVuZ3RoID0gdmFsaWRhdGUodGhhdCkubGVuZ3RoO1xuICAgICAgdmFyIG1pZGRsZSA9IE1hdGguZmxvb3IobGVuZ3RoIC8gMik7XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIHZhbHVlO1xuICAgICAgd2hpbGUgKGluZGV4IDwgbWlkZGxlKSB7XG4gICAgICAgIHZhbHVlID0gdGhhdFtpbmRleF07XG4gICAgICAgIHRoYXRbaW5kZXgrK10gPSB0aGF0Wy0tbGVuZ3RoXTtcbiAgICAgICAgdGhhdFtsZW5ndGhdID0gdmFsdWU7XG4gICAgICB9IHJldHVybiB0aGF0O1xuICAgIH0sXG4gICAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIGFycmF5U29tZSh2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgc29ydDogZnVuY3Rpb24gc29ydChjb21wYXJlZm4pIHtcbiAgICAgIHJldHVybiBhcnJheVNvcnQuY2FsbCh2YWxpZGF0ZSh0aGlzKSwgY29tcGFyZWZuKTtcbiAgICB9LFxuICAgIHN1YmFycmF5OiBmdW5jdGlvbiBzdWJhcnJheShiZWdpbiwgZW5kKSB7XG4gICAgICB2YXIgTyA9IHZhbGlkYXRlKHRoaXMpO1xuICAgICAgdmFyIGxlbmd0aCA9IE8ubGVuZ3RoO1xuICAgICAgdmFyICRiZWdpbiA9IHRvQWJzb2x1dGVJbmRleChiZWdpbiwgbGVuZ3RoKTtcbiAgICAgIHJldHVybiBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihPLCBPW0RFRl9DT05TVFJVQ1RPUl0pKShcbiAgICAgICAgTy5idWZmZXIsXG4gICAgICAgIE8uYnl0ZU9mZnNldCArICRiZWdpbiAqIE8uQllURVNfUEVSX0VMRU1FTlQsXG4gICAgICAgIHRvTGVuZ3RoKChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbmd0aCkpIC0gJGJlZ2luKVxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyICRzbGljZSA9IGZ1bmN0aW9uIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gc3BlY2llc0Zyb21MaXN0KHRoaXMsIGFycmF5U2xpY2UuY2FsbCh2YWxpZGF0ZSh0aGlzKSwgc3RhcnQsIGVuZCkpO1xuICB9O1xuXG4gIHZhciAkc2V0ID0gZnVuY3Rpb24gc2V0KGFycmF5TGlrZSAvKiAsIG9mZnNldCAqLykge1xuICAgIHZhbGlkYXRlKHRoaXMpO1xuICAgIHZhciBvZmZzZXQgPSB0b09mZnNldChhcmd1bWVudHNbMV0sIDEpO1xuICAgIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICB2YXIgc3JjID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgoc3JjLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBpZiAobGVuICsgb2Zmc2V0ID4gbGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuKSB0aGlzW29mZnNldCArIGluZGV4XSA9IHNyY1tpbmRleCsrXTtcbiAgfTtcblxuICB2YXIgJGl0ZXJhdG9ycyA9IHtcbiAgICBlbnRyaWVzOiBmdW5jdGlvbiBlbnRyaWVzKCkge1xuICAgICAgcmV0dXJuIGFycmF5RW50cmllcy5jYWxsKHZhbGlkYXRlKHRoaXMpKTtcbiAgICB9LFxuICAgIGtleXM6IGZ1bmN0aW9uIGtleXMoKSB7XG4gICAgICByZXR1cm4gYXJyYXlLZXlzLmNhbGwodmFsaWRhdGUodGhpcykpO1xuICAgIH0sXG4gICAgdmFsdWVzOiBmdW5jdGlvbiB2YWx1ZXMoKSB7XG4gICAgICByZXR1cm4gYXJyYXlWYWx1ZXMuY2FsbCh2YWxpZGF0ZSh0aGlzKSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpc1RBSW5kZXggPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgICByZXR1cm4gaXNPYmplY3QodGFyZ2V0KVxuICAgICAgJiYgdGFyZ2V0W1RZUEVEX0FSUkFZXVxuICAgICAgJiYgdHlwZW9mIGtleSAhPSAnc3ltYm9sJ1xuICAgICAgJiYga2V5IGluIHRhcmdldFxuICAgICAgJiYgU3RyaW5nKCtrZXkpID09IFN0cmluZyhrZXkpO1xuICB9O1xuICB2YXIgJGdldERlc2MgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIHtcbiAgICByZXR1cm4gaXNUQUluZGV4KHRhcmdldCwga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSlcbiAgICAgID8gcHJvcGVydHlEZXNjKDIsIHRhcmdldFtrZXldKVxuICAgICAgOiBnT1BEKHRhcmdldCwga2V5KTtcbiAgfTtcbiAgdmFyICRzZXREZXNjID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICBpZiAoaXNUQUluZGV4KHRhcmdldCwga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSlcbiAgICAgICYmIGlzT2JqZWN0KGRlc2MpXG4gICAgICAmJiBoYXMoZGVzYywgJ3ZhbHVlJylcbiAgICAgICYmICFoYXMoZGVzYywgJ2dldCcpXG4gICAgICAmJiAhaGFzKGRlc2MsICdzZXQnKVxuICAgICAgLy8gVE9ETzogYWRkIHZhbGlkYXRpb24gZGVzY3JpcHRvciB3L28gY2FsbGluZyBhY2Nlc3NvcnNcbiAgICAgICYmICFkZXNjLmNvbmZpZ3VyYWJsZVxuICAgICAgJiYgKCFoYXMoZGVzYywgJ3dyaXRhYmxlJykgfHwgZGVzYy53cml0YWJsZSlcbiAgICAgICYmICghaGFzKGRlc2MsICdlbnVtZXJhYmxlJykgfHwgZGVzYy5lbnVtZXJhYmxlKVxuICAgICkge1xuICAgICAgdGFyZ2V0W2tleV0gPSBkZXNjLnZhbHVlO1xuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9IHJldHVybiBkUCh0YXJnZXQsIGtleSwgZGVzYyk7XG4gIH07XG5cbiAgaWYgKCFBTExfQ09OU1RSVUNUT1JTKSB7XG4gICAgJEdPUEQuZiA9ICRnZXREZXNjO1xuICAgICREUC5mID0gJHNldERlc2M7XG4gIH1cblxuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFBTExfQ09OU1RSVUNUT1JTLCAnT2JqZWN0Jywge1xuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldERlc2MsXG4gICAgZGVmaW5lUHJvcGVydHk6ICRzZXREZXNjXG4gIH0pO1xuXG4gIGlmIChmYWlscyhmdW5jdGlvbiAoKSB7IGFycmF5VG9TdHJpbmcuY2FsbCh7fSk7IH0pKSB7XG4gICAgYXJyYXlUb1N0cmluZyA9IGFycmF5VG9Mb2NhbGVTdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBhcnJheUpvaW4uY2FsbCh0aGlzKTtcbiAgICB9O1xuICB9XG5cbiAgdmFyICRUeXBlZEFycmF5UHJvdG90eXBlJCA9IHJlZGVmaW5lQWxsKHt9LCBwcm90byk7XG4gIHJlZGVmaW5lQWxsKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJGl0ZXJhdG9ycyk7XG4gIGhpZGUoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCBJVEVSQVRPUiwgJGl0ZXJhdG9ycy52YWx1ZXMpO1xuICByZWRlZmluZUFsbCgkVHlwZWRBcnJheVByb3RvdHlwZSQsIHtcbiAgICBzbGljZTogJHNsaWNlLFxuICAgIHNldDogJHNldCxcbiAgICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24gKCkgeyAvKiBub29wICovIH0sXG4gICAgdG9TdHJpbmc6IGFycmF5VG9TdHJpbmcsXG4gICAgdG9Mb2NhbGVTdHJpbmc6ICR0b0xvY2FsZVN0cmluZ1xuICB9KTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2J1ZmZlcicsICdiJyk7XG4gIGFkZEdldHRlcigkVHlwZWRBcnJheVByb3RvdHlwZSQsICdieXRlT2Zmc2V0JywgJ28nKTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2J5dGVMZW5ndGgnLCAnbCcpO1xuICBhZGRHZXR0ZXIoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCAnbGVuZ3RoJywgJ2UnKTtcbiAgZFAoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCBUQUcsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXNbVFlQRURfQVJSQVldOyB9XG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtc3RhdGVtZW50c1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIEJZVEVTLCB3cmFwcGVyLCBDTEFNUEVEKSB7XG4gICAgQ0xBTVBFRCA9ICEhQ0xBTVBFRDtcbiAgICB2YXIgTkFNRSA9IEtFWSArIChDTEFNUEVEID8gJ0NsYW1wZWQnIDogJycpICsgJ0FycmF5JztcbiAgICB2YXIgR0VUVEVSID0gJ2dldCcgKyBLRVk7XG4gICAgdmFyIFNFVFRFUiA9ICdzZXQnICsgS0VZO1xuICAgIHZhciBUeXBlZEFycmF5ID0gZ2xvYmFsW05BTUVdO1xuICAgIHZhciBCYXNlID0gVHlwZWRBcnJheSB8fCB7fTtcbiAgICB2YXIgVEFDID0gVHlwZWRBcnJheSAmJiBnZXRQcm90b3R5cGVPZihUeXBlZEFycmF5KTtcbiAgICB2YXIgRk9SQ0VEID0gIVR5cGVkQXJyYXkgfHwgISR0eXBlZC5BQlY7XG4gICAgdmFyIE8gPSB7fTtcbiAgICB2YXIgVHlwZWRBcnJheVByb3RvdHlwZSA9IFR5cGVkQXJyYXkgJiYgVHlwZWRBcnJheVtQUk9UT1RZUEVdO1xuICAgIHZhciBnZXR0ZXIgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgpIHtcbiAgICAgIHZhciBkYXRhID0gdGhhdC5fZDtcbiAgICAgIHJldHVybiBkYXRhLnZbR0VUVEVSXShpbmRleCAqIEJZVEVTICsgZGF0YS5vLCBMSVRUTEVfRU5ESUFOKTtcbiAgICB9O1xuICAgIHZhciBzZXR0ZXIgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgsIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoYXQuX2Q7XG4gICAgICBpZiAoQ0xBTVBFRCkgdmFsdWUgPSAodmFsdWUgPSBNYXRoLnJvdW5kKHZhbHVlKSkgPCAwID8gMCA6IHZhbHVlID4gMHhmZiA/IDB4ZmYgOiB2YWx1ZSAmIDB4ZmY7XG4gICAgICBkYXRhLnZbU0VUVEVSXShpbmRleCAqIEJZVEVTICsgZGF0YS5vLCB2YWx1ZSwgTElUVExFX0VORElBTik7XG4gICAgfTtcbiAgICB2YXIgYWRkRWxlbWVudCA9IGZ1bmN0aW9uICh0aGF0LCBpbmRleCkge1xuICAgICAgZFAodGhhdCwgaW5kZXgsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGdldHRlcih0aGlzLCBpbmRleCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHNldHRlcih0aGlzLCBpbmRleCwgdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIHtcbiAgICAgIFR5cGVkQXJyYXkgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBkYXRhLCAkb2Zmc2V0LCAkbGVuZ3RoKSB7XG4gICAgICAgIGFuSW5zdGFuY2UodGhhdCwgVHlwZWRBcnJheSwgTkFNRSwgJ19kJyk7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHZhciBvZmZzZXQgPSAwO1xuICAgICAgICB2YXIgYnVmZmVyLCBieXRlTGVuZ3RoLCBsZW5ndGgsIGtsYXNzO1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgICAgbGVuZ3RoID0gdG9JbmRleChkYXRhKTtcbiAgICAgICAgICBieXRlTGVuZ3RoID0gbGVuZ3RoICogQllURVM7XG4gICAgICAgICAgYnVmZmVyID0gbmV3ICRBcnJheUJ1ZmZlcihieXRlTGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgJEFycmF5QnVmZmVyIHx8IChrbGFzcyA9IGNsYXNzb2YoZGF0YSkpID09IEFSUkFZX0JVRkZFUiB8fCBrbGFzcyA9PSBTSEFSRURfQlVGRkVSKSB7XG4gICAgICAgICAgYnVmZmVyID0gZGF0YTtcbiAgICAgICAgICBvZmZzZXQgPSB0b09mZnNldCgkb2Zmc2V0LCBCWVRFUyk7XG4gICAgICAgICAgdmFyICRsZW4gPSBkYXRhLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgaWYgKCRsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKCRsZW4gJSBCWVRFUykgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9ICRsZW4gLSBvZmZzZXQ7XG4gICAgICAgICAgICBpZiAoYnl0ZUxlbmd0aCA8IDApIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9IHRvTGVuZ3RoKCRsZW5ndGgpICogQllURVM7XG4gICAgICAgICAgICBpZiAoYnl0ZUxlbmd0aCArIG9mZnNldCA+ICRsZW4pIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGVuZ3RoID0gYnl0ZUxlbmd0aCAvIEJZVEVTO1xuICAgICAgICB9IGVsc2UgaWYgKFRZUEVEX0FSUkFZIGluIGRhdGEpIHtcbiAgICAgICAgICByZXR1cm4gZnJvbUxpc3QoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICRmcm9tLmNhbGwoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaGlkZSh0aGF0LCAnX2QnLCB7XG4gICAgICAgICAgYjogYnVmZmVyLFxuICAgICAgICAgIG86IG9mZnNldCxcbiAgICAgICAgICBsOiBieXRlTGVuZ3RoLFxuICAgICAgICAgIGU6IGxlbmd0aCxcbiAgICAgICAgICB2OiBuZXcgJERhdGFWaWV3KGJ1ZmZlcilcbiAgICAgICAgfSk7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgYWRkRWxlbWVudCh0aGF0LCBpbmRleCsrKTtcbiAgICAgIH0pO1xuICAgICAgVHlwZWRBcnJheVByb3RvdHlwZSA9IFR5cGVkQXJyYXlbUFJPVE9UWVBFXSA9IGNyZWF0ZSgkVHlwZWRBcnJheVByb3RvdHlwZSQpO1xuICAgICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCAnY29uc3RydWN0b3InLCBUeXBlZEFycmF5KTtcbiAgICB9IGVsc2UgaWYgKCFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBUeXBlZEFycmF5KDEpO1xuICAgIH0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBuZXcgVHlwZWRBcnJheSgtMSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgfSkgfHwgISRpdGVyRGV0ZWN0KGZ1bmN0aW9uIChpdGVyKSB7XG4gICAgICBuZXcgVHlwZWRBcnJheSgpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgICAgbmV3IFR5cGVkQXJyYXkobnVsbCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgICBuZXcgVHlwZWRBcnJheSgxLjUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgICAgbmV3IFR5cGVkQXJyYXkoaXRlcik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgfSwgdHJ1ZSkpIHtcbiAgICAgIFR5cGVkQXJyYXkgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBkYXRhLCAkb2Zmc2V0LCAkbGVuZ3RoKSB7XG4gICAgICAgIGFuSW5zdGFuY2UodGhhdCwgVHlwZWRBcnJheSwgTkFNRSk7XG4gICAgICAgIHZhciBrbGFzcztcbiAgICAgICAgLy8gYHdzYCBtb2R1bGUgYnVnLCB0ZW1wb3JhcmlseSByZW1vdmUgdmFsaWRhdGlvbiBsZW5ndGggZm9yIFVpbnQ4QXJyYXlcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3MvcHVsbC82NDVcbiAgICAgICAgaWYgKCFpc09iamVjdChkYXRhKSkgcmV0dXJuIG5ldyBCYXNlKHRvSW5kZXgoZGF0YSkpO1xuICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mICRBcnJheUJ1ZmZlciB8fCAoa2xhc3MgPSBjbGFzc29mKGRhdGEpKSA9PSBBUlJBWV9CVUZGRVIgfHwga2xhc3MgPT0gU0hBUkVEX0JVRkZFUikge1xuICAgICAgICAgIHJldHVybiAkbGVuZ3RoICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gbmV3IEJhc2UoZGF0YSwgdG9PZmZzZXQoJG9mZnNldCwgQllURVMpLCAkbGVuZ3RoKVxuICAgICAgICAgICAgOiAkb2Zmc2V0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyBuZXcgQmFzZShkYXRhLCB0b09mZnNldCgkb2Zmc2V0LCBCWVRFUykpXG4gICAgICAgICAgICAgIDogbmV3IEJhc2UoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFRZUEVEX0FSUkFZIGluIGRhdGEpIHJldHVybiBmcm9tTGlzdChUeXBlZEFycmF5LCBkYXRhKTtcbiAgICAgICAgcmV0dXJuICRmcm9tLmNhbGwoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICB9KTtcbiAgICAgIGFycmF5Rm9yRWFjaChUQUMgIT09IEZ1bmN0aW9uLnByb3RvdHlwZSA/IGdPUE4oQmFzZSkuY29uY2F0KGdPUE4oVEFDKSkgOiBnT1BOKEJhc2UpLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmICghKGtleSBpbiBUeXBlZEFycmF5KSkgaGlkZShUeXBlZEFycmF5LCBrZXksIEJhc2Vba2V5XSk7XG4gICAgICB9KTtcbiAgICAgIFR5cGVkQXJyYXlbUFJPVE9UWVBFXSA9IFR5cGVkQXJyYXlQcm90b3R5cGU7XG4gICAgICBpZiAoIUxJQlJBUlkpIFR5cGVkQXJyYXlQcm90b3R5cGUuY29uc3RydWN0b3IgPSBUeXBlZEFycmF5O1xuICAgIH1cbiAgICB2YXIgJG5hdGl2ZUl0ZXJhdG9yID0gVHlwZWRBcnJheVByb3RvdHlwZVtJVEVSQVRPUl07XG4gICAgdmFyIENPUlJFQ1RfSVRFUl9OQU1FID0gISEkbmF0aXZlSXRlcmF0b3JcbiAgICAgICYmICgkbmF0aXZlSXRlcmF0b3IubmFtZSA9PSAndmFsdWVzJyB8fCAkbmF0aXZlSXRlcmF0b3IubmFtZSA9PSB1bmRlZmluZWQpO1xuICAgIHZhciAkaXRlcmF0b3IgPSAkaXRlcmF0b3JzLnZhbHVlcztcbiAgICBoaWRlKFR5cGVkQXJyYXksIFRZUEVEX0NPTlNUUlVDVE9SLCB0cnVlKTtcbiAgICBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIFRZUEVEX0FSUkFZLCBOQU1FKTtcbiAgICBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIFZJRVcsIHRydWUpO1xuICAgIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgREVGX0NPTlNUUlVDVE9SLCBUeXBlZEFycmF5KTtcblxuICAgIGlmIChDTEFNUEVEID8gbmV3IFR5cGVkQXJyYXkoMSlbVEFHXSAhPSBOQU1FIDogIShUQUcgaW4gVHlwZWRBcnJheVByb3RvdHlwZSkpIHtcbiAgICAgIGRQKFR5cGVkQXJyYXlQcm90b3R5cGUsIFRBRywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5BTUU7IH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIE9bTkFNRV0gPSBUeXBlZEFycmF5O1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAoVHlwZWRBcnJheSAhPSBCYXNlKSwgTyk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUywgTkFNRSwge1xuICAgICAgQllURVNfUEVSX0VMRU1FTlQ6IEJZVEVTXG4gICAgfSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHsgQmFzZS5vZi5jYWxsKFR5cGVkQXJyYXksIDEpOyB9KSwgTkFNRSwge1xuICAgICAgZnJvbTogJGZyb20sXG4gICAgICBvZjogJG9mXG4gICAgfSk7XG5cbiAgICBpZiAoIShCWVRFU19QRVJfRUxFTUVOVCBpbiBUeXBlZEFycmF5UHJvdG90eXBlKSkgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBCWVRFU19QRVJfRUxFTUVOVCwgQllURVMpO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAsIE5BTUUsIHByb3RvKTtcblxuICAgIHNldFNwZWNpZXMoTkFNRSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIEZPUkNFRF9TRVQsIE5BTUUsIHsgc2V0OiAkc2V0IH0pO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhQ09SUkVDVF9JVEVSX05BTUUsIE5BTUUsICRpdGVyYXRvcnMpO1xuXG4gICAgaWYgKCFMSUJSQVJZICYmIFR5cGVkQXJyYXlQcm90b3R5cGUudG9TdHJpbmcgIT0gYXJyYXlUb1N0cmluZykgVHlwZWRBcnJheVByb3RvdHlwZS50b1N0cmluZyA9IGFycmF5VG9TdHJpbmc7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIG5ldyBUeXBlZEFycmF5KDEpLnNsaWNlKCk7XG4gICAgfSksIE5BTUUsIHsgc2xpY2U6ICRzbGljZSB9KTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBbMSwgMl0udG9Mb2NhbGVTdHJpbmcoKSAhPSBuZXcgVHlwZWRBcnJheShbMSwgMl0pLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgfSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIFR5cGVkQXJyYXlQcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcuY2FsbChbMSwgMl0pO1xuICAgIH0pKSwgTkFNRSwgeyB0b0xvY2FsZVN0cmluZzogJHRvTG9jYWxlU3RyaW5nIH0pO1xuXG4gICAgSXRlcmF0b3JzW05BTUVdID0gQ09SUkVDVF9JVEVSX05BTUUgPyAkbmF0aXZlSXRlcmF0b3IgOiAkaXRlcmF0b3I7XG4gICAgaWYgKCFMSUJSQVJZICYmICFDT1JSRUNUX0lURVJfTkFNRSkgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBJVEVSQVRPUiwgJGl0ZXJhdG9yKTtcbiAgfTtcbn0gZWxzZSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbiIsInZhciBNYXAgPSByZXF1aXJlKCcuL2VzNi5tYXAnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ21ldGFkYXRhJyk7XG52YXIgc3RvcmUgPSBzaGFyZWQuc3RvcmUgfHwgKHNoYXJlZC5zdG9yZSA9IG5ldyAocmVxdWlyZSgnLi9lczYud2Vhay1tYXAnKSkoKSk7XG5cbnZhciBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwID0gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5LCBjcmVhdGUpIHtcbiAgdmFyIHRhcmdldE1ldGFkYXRhID0gc3RvcmUuZ2V0KHRhcmdldCk7XG4gIGlmICghdGFyZ2V0TWV0YWRhdGEpIHtcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBzdG9yZS5zZXQodGFyZ2V0LCB0YXJnZXRNZXRhZGF0YSA9IG5ldyBNYXAoKSk7XG4gIH1cbiAgdmFyIGtleU1ldGFkYXRhID0gdGFyZ2V0TWV0YWRhdGEuZ2V0KHRhcmdldEtleSk7XG4gIGlmICgha2V5TWV0YWRhdGEpIHtcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB0YXJnZXRNZXRhZGF0YS5zZXQodGFyZ2V0S2V5LCBrZXlNZXRhZGF0YSA9IG5ldyBNYXAoKSk7XG4gIH0gcmV0dXJuIGtleU1ldGFkYXRhO1xufTtcbnZhciBvcmRpbmFyeUhhc093bk1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgZmFsc2UpO1xuICByZXR1cm4gbWV0YWRhdGFNYXAgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogbWV0YWRhdGFNYXAuaGFzKE1ldGFkYXRhS2V5KTtcbn07XG52YXIgb3JkaW5hcnlHZXRPd25NZXRhZGF0YSA9IGZ1bmN0aW9uIChNZXRhZGF0YUtleSwgTywgUCkge1xuICB2YXIgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIGZhbHNlKTtcbiAgcmV0dXJuIG1ldGFkYXRhTWFwID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBtZXRhZGF0YU1hcC5nZXQoTWV0YWRhdGFLZXkpO1xufTtcbnZhciBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlLCBPLCBQKSB7XG4gIGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgdHJ1ZSkuc2V0KE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlKTtcbn07XG52YXIgb3JkaW5hcnlPd25NZXRhZGF0YUtleXMgPSBmdW5jdGlvbiAodGFyZ2V0LCB0YXJnZXRLZXkpIHtcbiAgdmFyIG1ldGFkYXRhTWFwID0gZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCh0YXJnZXQsIHRhcmdldEtleSwgZmFsc2UpO1xuICB2YXIga2V5cyA9IFtdO1xuICBpZiAobWV0YWRhdGFNYXApIG1ldGFkYXRhTWFwLmZvckVhY2goZnVuY3Rpb24gKF8sIGtleSkgeyBrZXlzLnB1c2goa2V5KTsgfSk7XG4gIHJldHVybiBrZXlzO1xufTtcbnZhciB0b01ldGFLZXkgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGl0ID09ICdzeW1ib2wnID8gaXQgOiBTdHJpbmcoaXQpO1xufTtcbnZhciBleHAgPSBmdW5jdGlvbiAoTykge1xuICAkZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCBPKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzdG9yZTogc3RvcmUsXG4gIG1hcDogZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCxcbiAgaGFzOiBvcmRpbmFyeUhhc093bk1ldGFkYXRhLFxuICBnZXQ6IG9yZGluYXJ5R2V0T3duTWV0YWRhdGEsXG4gIHNldDogb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSxcbiAga2V5czogb3JkaW5hcnlPd25NZXRhZGF0YUtleXMsXG4gIGtleTogdG9NZXRhS2V5LFxuICBleHA6IGV4cFxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvYXhpb3MnKTsiLCJpbXBvcnQgaXNJUEZTIGZyb20gJ2lzLWlwZnMnO1xuaW1wb3J0IHsgUGluYXRhQ29uZmlnIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgRVJST1JfTk9fQ1JFREVOVElBTFNfUFJPVklERUR9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgYXhpb3NIZWFkZXJzXG4gICAgeyBtYXhDb250ZW50TGVuZ3RoOiBudW1iZXI7XG4gICAgICAgIG1heEJvZHlMZW5ndGg6IG51bWJlcjtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55XG4gICAgICAgIH07XG4gICAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBcGlLZXlzKHBpbmF0YUFwaUtleT86IHN0cmluZywgcGluYXRhU2VjcmV0QXBpS2V5Pzogc3RyaW5nKSB7XG4gICAgaWYgKCFwaW5hdGFBcGlLZXkgfHwgcGluYXRhQXBpS2V5ID09PSAnJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnTm8gcGluYXRhQXBpS2V5IHByb3ZpZGVkISBQbGVhc2UgcHJvdmlkZSB5b3VyIHBpbmF0YSBhcGkga2V5IGFzIGFuIGFyZ3VtZW50IHdoZW4geW91IHN0YXJ0IHRoaXMgc2NyaXB0J1xuICAgICAgICApO1xuICAgIH1cbiAgICBpZiAoIXBpbmF0YVNlY3JldEFwaUtleSB8fCBwaW5hdGFTZWNyZXRBcGlLZXkgPT09ICcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdObyBwaW5hdGFTZWNyZXRBcGlLZXkgcHJvdmlkZWQhIFBsZWFzZSBwcm92aWRlIHlvdXIgcGluYXRhIHNlY3JldCBhcGkga2V5IGFzIGFuIGFyZ3VtZW50IHdoZW4geW91IHN0YXJ0IHRoaXMgc2NyaXB0J1xuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyhjb25maWc6IFBpbmF0YUNvbmZpZykge1xuICAgIGlmIChcbiAgICAgICAgY29uZmlnLnBpbmF0YUFwaUtleSAmJiBjb25maWcucGluYXRhQXBpS2V5Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgY29uZmlnLnBpbmF0YVNlY3JldEFwaUtleSAmJiBjb25maWcucGluYXRhU2VjcmV0QXBpS2V5Lmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBwaW5hdGFfYXBpX2tleTogY29uZmlnLnBpbmF0YUFwaUtleSxcbiAgICAgICAgICAgICAgICBwaW5hdGFfc2VjcmV0X2FwaV9rZXk6IGNvbmZpZy5waW5hdGFTZWNyZXRBcGlLZXlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLnBpbmF0YUpXVEtleSAmJiBjb25maWcucGluYXRhSldUS2V5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7Y29uZmlnLnBpbmF0YUpXVEtleX1gXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX05PX0NSRURFTlRJQUxTX1BST1ZJREVEKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVyc1dpdGhGb3JtRGF0YShjb25maWc6IFBpbmF0YUNvbmZpZywgYm91bmRhcnlWYWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IGF4aW9zSGVhZGVycyA9IHtcbiAgICAgICAgLi4uY3JlYXRlQ29uZmlnRm9yQXhpb3NIZWFkZXJzKGNvbmZpZyksXG4gICAgICAgIG1heENvbnRlbnRMZW5ndGg6IEluZmluaXR5LCAvL3RoaXMgaXMgbmVlZGVkIHRvIHByZXZlbnQgYXhpb3MgZnJvbSBlcnJvcmluZyBvdXQgd2l0aCBsYXJnZSBmaWxlc1xuICAgICAgICBtYXhCb2R5TGVuZ3RoOiBJbmZpbml0eVxuICAgIH07XG5cbiAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzWydDb250ZW50LXR5cGUnXSA9IGBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0ke2JvdW5kYXJ5VmFsdWV9YDtcbiAgICByZXR1cm4gcmVxdWVzdE9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUhvc3ROb2Rlcyhob3N0Tm9kZXM6IGFueSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShob3N0Tm9kZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaG9zdF9ub2RlcyB2YWx1ZSBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgfVxuICAgIGhvc3ROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIGlmICghaXNJUEZTLnBlZXJNdWx0aWFkZHIobm9kZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgaG9zdF9ub2RlIGFycmF5IGVudHJ5OiAke25vZGV9IGlzIG5vdCBhIHZhbGlkIHBlZXIgbXVsdGlhZGRyYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVNZXRhZGF0YShtZXRhZGF0YTogYW55KSB7XG4gICAgaWYgKG1ldGFkYXRhLm5hbWUpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICB0eXBlb2YgbWV0YWRhdGEubmFtZSA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgICAgICBtZXRhZGF0YS5uYW1lIGluc3RhbmNlb2YgU3RyaW5nXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtZXRhZGF0YSBuYW1lIG11c3QgYmUgb2YgdHlwZSBzdHJpbmcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtZXRhZGF0YS5rZXl2YWx1ZXMpIHtcbiAgICAgICAgaWYgKCEodHlwZW9mIG1ldGFkYXRhLmtleXZhbHVlcyA9PT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGF0YWRhdGEga2V5dmFsdWVzIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaSA9IDA7XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMobWV0YWRhdGEua2V5dmFsdWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlWYWx1ZTogYW55KSB7XG4gICAgICAgICAgICBpZiAoaSA+IDkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICdObyBtb3JlIHRoYW4gMTAga2V5dmFsdWVzIGNhbiBiZSBwcm92aWRlZCBmb3IgbWV0YWRhdGEgZW50cmllcydcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGlucHV0IGlzIGEgc3RyaW5nLCBhIGJvb2xlYW4sIG9yIGEgbnVtYmVyLCBzbyB3ZSBkb24ndCBnZXQgYW4gb2JqZWN0IHBhc3NlZCBpbiBieSBhY2NpZGVudFxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBrZXlWYWx1ZVsxXSA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGtleVZhbHVlWzFdID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgICAgICAgICAgICAgIWlzTmFOKGtleVZhbHVlWzFdKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgJ01ldGFkYXRhIGtleXZhbHVlIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MsIGJvb2xlYW5zLCBvciBudW1iZXJzJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUGluUG9saWN5U3RydWN0dXJlKHBpblBvbGljeTogeyByZWdpb25zOiBhbnlbXTsgfSkge1xuICAgIC8vdGhpcyBmdW5jdGlvbiB0YWtlcyBpbiBhIHBpbiBwb2xpY3kgYW5kIGNoZWNrcyB0aGUgSlNPTiBzdHJ1Y3R1cmUgdG8gbWFrZSBzdXJlIGl0J3MgdmFsaWRcbiAgICBpZiAoIXBpblBvbGljeSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHBpbiBwb2xpY3kgcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXBpblBvbGljeS5yZWdpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVnaW9ucyBwcm92aWRlZCBpbiBwaW4gcG9saWN5Jyk7XG4gICAgfVxuICAgIGlmIChwaW5Qb2xpY3kucmVnaW9ucy5sZW5ndGgpIHtcbiAgICAgICAgcGluUG9saWN5LnJlZ2lvbnMuZm9yRWFjaCgocmVnaW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXJlZ2lvbi5pZCB8fFxuICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZWdpb24uaWQpID09PVxuICAgICAgICAgICAgICAgICAgICAnW29iamVjdCBTdHJpbmddJ1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncmVnaW9uIGlkIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lvbi5kZXNpcmVkUmVwbGljYXRpb25Db3VudCB8fFxuICAgICAgICAgICAgICAgICAgICByZWdpb24uZGVzaXJlZFJlcGxpY2F0aW9uQ291bnQgPT09IDBcbiAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgIU51bWJlci5pc0ludGVnZXIocmVnaW9uLmRlc2lyZWRSZXBsaWNhdGlvbkNvdW50KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZXNpcmVkUmVwbGljYXRpb25Db3VudCBtdXN0IGJlIGFuIGludGVnZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQaW5hdGFPcHRpb25zKG9wdGlvbnM6IHsgY2lkVmVyc2lvbj86IG51bWJlcjsgd3JhcFdpdGhEaXJlY3Rvcnk/OiBib29sZWFuOyBob3N0Tm9kZXM/OiBhbnk7IGN1c3RvbVBpblBvbGljeT86IGFueTsgfSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuY2lkVmVyc2lvbikge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgIGlmIChvcHRpb25zLmNpZFZlcnNpb24gIT0gMCAmJiBvcHRpb25zLmNpZFZlcnNpb24gIT0gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCBvciBpbnZhbGlkIGNpZFZlcnNpb24nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy53cmFwV2l0aERpcmVjdG9yeSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIG9wdGlvbnMud3JhcFdpdGhEaXJlY3RvcnkgIT09IHRydWUgJiZcbiAgICAgICAgICAgIG9wdGlvbnMud3JhcFdpdGhEaXJlY3RvcnkgIT09IGZhbHNlXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICd3cmFwV2l0aERpcmVjdG9yeSBtdXN0IGJlIGEgYm9vbGVhbiB2YWx1ZSBvZiB0cnVlIG9yIGZhbHNlJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmhvc3ROb2Rlcykge1xuICAgICAgICB2YWxpZGF0ZUhvc3ROb2RlcyhvcHRpb25zLmhvc3ROb2Rlcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuY3VzdG9tUGluUG9saWN5KSB7XG4gICAgICAgIHZhbGlkYXRlUGluUG9saWN5U3RydWN0dXJlKG9wdGlvbnMuY3VzdG9tUGluUG9saWN5KTtcbiAgICB9XG59XG4iLCJleHBvcnQgY29uc3QgaGFuZGxlRXJyb3IgPSAoZXJyb3IgOiBhbnkpID0+IHtcbiAgaWYgKGVycm9yICYmIGVycm9yLnJlc3BvbnNlICYmIGVycm9yLnJlc3BvbnNlICYmIGVycm9yLnJlc3BvbnNlLmRhdGEgJiYgZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcikge1xuICAgIHJldHVybiBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yO1xuICB9IGVsc2UgaWYgKGVycm9yLmRhdGEgJiYgZXJyb3IuZGF0YS5lcnJvcikge1xuICAgIHJldHVybiBlcnJvci5kYXRhLmVycm9yO1xuICB9IGVsc2UgaWYgKGVycm9yLnJlc3BvbnNlICYmIGVycm9yLnJlc3BvbnNlLmVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yLnJlc3BvbnNlLmVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZhbHNlO1xuIiwidmFyIE1FVEEgPSByZXF1aXJlKCcuL191aWQnKSgnbWV0YScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgc2V0RGVzYyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaWQgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgRlJFRVpFID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xufSk7XG52YXIgc2V0TWV0YSA9IGZ1bmN0aW9uIChpdCkge1xuICBzZXREZXNjKGl0LCBNRVRBLCB7IHZhbHVlOiB7XG4gICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElEXG4gICAgdzoge30gICAgICAgICAgLy8gd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSB9KTtcbn07XG52YXIgZmFzdEtleSA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmICghaGFzKGl0LCBNRVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gaGFzaCB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IHJldHVybiBpdFtNRVRBXS53O1xufTtcbi8vIGFkZCBtZXRhZGF0YSBvbiBmcmVlemUtZmFtaWx5IG1ldGhvZHMgY2FsbGluZ1xudmFyIG9uRnJlZXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChGUkVFWkUgJiYgbWV0YS5ORUVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhcyhpdCwgTUVUQSkpIHNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiBNRVRBLFxuICBORUVEOiBmYWxzZSxcbiAgZmFzdEtleTogZmFzdEtleSxcbiAgZ2V0V2VhazogZ2V0V2VhayxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuIiwiLy8gMjIuMS4zLjMxIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxudmFyIFVOU0NPUEFCTEVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3Vuc2NvcGFibGVzJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbmlmIChBcnJheVByb3RvW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIHJlcXVpcmUoJy4vX2hpZGUnKShBcnJheVByb3RvLCBVTlNDT1BBQkxFUywge30pO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcbiIsIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcbiIsIi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZFBzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgcmVxdWlyZSgnLi9faHRtbCcpLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcbiAgLy8gY3JlYXRlRGljdCA9IGlmcmFtZS5jb250ZW50V2luZG93Lk9iamVjdDtcbiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiIsIi8vIDE5LjEuMi43IC8gMTUuMi4zLjQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKS5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgQyA9IGdsb2JhbFtLRVldO1xuICBpZiAoREVTQ1JJUFRPUlMgJiYgQyAmJiAhQ1tTUEVDSUVTXSkgZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICB9KTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgQ29uc3RydWN0b3IsIG5hbWUsIGZvcmJpZGRlbkZpZWxkKSB7XG4gIGlmICghKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpIHx8IChmb3JiaWRkZW5GaWVsZCAhPT0gdW5kZWZpbmVkICYmIGZvcmJpZGRlbkZpZWxkIGluIGl0KSkge1xuICAgIHRocm93IFR5cGVFcnJvcihuYW1lICsgJzogaW5jb3JyZWN0IGludm9jYXRpb24hJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgQlJFQUsgPSB7fTtcbnZhciBSRVRVUk4gPSB7fTtcbnZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUikge1xuICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7XG4gIHZhciBmID0gY3R4KGZuLCB0aGF0LCBlbnRyaWVzID8gMiA6IDEpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgLy8gZmFzdCBjYXNlIGZvciBhcnJheXMgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yXG4gIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykge1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuZXhwb3J0cy5CUkVBSyA9IEJSRUFLO1xuZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47XG4iLCJ2YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNyY1trZXldLCBzYWZlKTtcbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBUWVBFKSB7XG4gIGlmICghaXNPYmplY3QoaXQpIHx8IGl0Ll90ICE9PSBUWVBFKSB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkIScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG4iLCIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNwYWNlcyA9IHJlcXVpcmUoJy4vX3N0cmluZy13cycpO1xudmFyIHNwYWNlID0gJ1snICsgc3BhY2VzICsgJ10nO1xudmFyIG5vbiA9ICdcXHUyMDBiXFx1MDA4NSc7XG52YXIgbHRyaW0gPSBSZWdFeHAoJ14nICsgc3BhY2UgKyBzcGFjZSArICcqJyk7XG52YXIgcnRyaW0gPSBSZWdFeHAoc3BhY2UgKyBzcGFjZSArICcqJCcpO1xuXG52YXIgZXhwb3J0ZXIgPSBmdW5jdGlvbiAoS0VZLCBleGVjLCBBTElBUykge1xuICB2YXIgZXhwID0ge307XG4gIHZhciBGT1JDRSA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gISFzcGFjZXNbS0VZXSgpIHx8IG5vbltLRVldKCkgIT0gbm9uO1xuICB9KTtcbiAgdmFyIGZuID0gZXhwW0tFWV0gPSBGT1JDRSA/IGV4ZWModHJpbSkgOiBzcGFjZXNbS0VZXTtcbiAgaWYgKEFMSUFTKSBleHBbQUxJQVNdID0gZm47XG4gICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogRk9SQ0UsICdTdHJpbmcnLCBleHApO1xufTtcblxuLy8gMSAtPiBTdHJpbmcjdHJpbUxlZnRcbi8vIDIgLT4gU3RyaW5nI3RyaW1SaWdodFxuLy8gMyAtPiBTdHJpbmcjdHJpbVxudmFyIHRyaW0gPSBleHBvcnRlci50cmltID0gZnVuY3Rpb24gKHN0cmluZywgVFlQRSkge1xuICBzdHJpbmcgPSBTdHJpbmcoZGVmaW5lZChzdHJpbmcpKTtcbiAgaWYgKFRZUEUgJiAxKSBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShsdHJpbSwgJycpO1xuICBpZiAoVFlQRSAmIDIpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJ0cmltLCAnJyk7XG4gIHJldHVybiBzdHJpbmc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydGVyO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGVuY29kZTogcmVxdWlyZSgnLi9lbmNvZGUuanMnKVxuICAsIGRlY29kZTogcmVxdWlyZSgnLi9kZWNvZGUuanMnKVxuICAsIGVuY29kaW5nTGVuZ3RoOiByZXF1aXJlKCcuL2xlbmd0aC5qcycpXG59XG4iLCJ2YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogcmVxdWlyZSgnLi9fbGlicmFyeScpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG4iLCJmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gIH0gOiBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3R5cGVvZihvYmopO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIEZQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBuYW1lUkUgPSAvXlxccypmdW5jdGlvbiAoW14gKF0qKS87XG52YXIgTkFNRSA9ICduYW1lJztcblxuLy8gMTkuMi40LjIgbmFtZVxuTkFNRSBpbiBGUHJvdG8gfHwgcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiBkUChGUHJvdG8sIE5BTUUsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuICgnJyArIHRoaXMpLm1hdGNoKG5hbWVSRSlbMV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyMS4yLjUuMyBnZXQgUmVnRXhwLnByb3RvdHlwZS5mbGFnc1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAodGhhdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmICh0aGF0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG4gIGlmICh0aGF0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKHRoYXQudW5pY29kZSkgcmVzdWx0ICs9ICd1JztcbiAgaWYgKHRoYXQuc3RpY2t5KSByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIDcuMy4yMCBTcGVjaWVzQ29uc3RydWN0b3IoTywgZGVmYXVsdENvbnN0cnVjdG9yKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgRCkge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBEIDogYUZ1bmN0aW9uKFMpO1xufTtcbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBiYXNlNTggPSByZXF1aXJlKCdiczU4JylcbmNvbnN0IG11bHRpaGFzaCA9IHJlcXVpcmUoJ211bHRpaGFzaGVzJylcbmNvbnN0IG11bHRpYmFzZSA9IHJlcXVpcmUoJ211bHRpYmFzZScpXG5jb25zdCBNdWx0aWFkZHIgPSByZXF1aXJlKCdtdWx0aWFkZHInKVxuY29uc3QgbWFmbXQgPSByZXF1aXJlKCdtYWZtdCcpXG5jb25zdCBDSUQgPSByZXF1aXJlKCdjaWRzJylcblxuY29uc3QgdXJsUGF0dGVybiA9IC9eaHR0cHM/OlxcL1xcL1teL10rXFwvKGlwKGZ8bilzKVxcLygoXFx3KykuKikvXG5jb25zdCBwYXRoUGF0dGVybiA9IC9eXFwvKGlwKGZ8bilzKVxcLygoXFx3KykuKikvXG5jb25zdCBkZWZhdWx0UHJvdG9jb2xNYXRjaCA9IDFcbmNvbnN0IGRlZmF1bHRIYXNoTWF0aCA9IDRcblxuY29uc3QgZnFkblBhdHRlcm4gPSAvXmh0dHBzPzpcXC9cXC8oW14vXSspXFwuKGlwKD86ZnxuKXMpXFwuW14vXSsvXG5jb25zdCBmcWRuSGFzaE1hdGNoID0gMVxuY29uc3QgZnFkblByb3RvY29sTWF0Y2ggPSAyXG5cbmZ1bmN0aW9uIGlzTXVsdGloYXNoIChoYXNoKSB7XG4gIGNvbnN0IGZvcm1hdHRlZCA9IGNvbnZlcnRUb1N0cmluZyhoYXNoKVxuICB0cnkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U1OC5kZWNvZGUoZm9ybWF0dGVkKSlcbiAgICBtdWx0aWhhc2guZGVjb2RlKGJ1ZmZlcilcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNNdWx0aWJhc2UgKGhhc2gpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbXVsdGliYXNlLmlzRW5jb2RlZChoYXNoKVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDSUQgKGhhc2gpIHtcbiAgdHJ5IHtcbiAgICBuZXcgQ0lEKGhhc2gpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgcmV0dXJuIHRydWVcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzTXVsdGlhZGRyIChpbnB1dCkge1xuICBpZiAoIWlucHV0KSByZXR1cm4gZmFsc2VcbiAgaWYgKE11bHRpYWRkci5pc011bHRpYWRkcihpbnB1dCkpIHJldHVybiB0cnVlXG4gIHRyeSB7XG4gICAgbmV3IE11bHRpYWRkcihpbnB1dCkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNQZWVyTXVsdGlhZGRyIChpbnB1dCkge1xuICByZXR1cm4gaXNNdWx0aWFkZHIoaW5wdXQpICYmIG1hZm10LklQRlMubWF0Y2hlcyhpbnB1dClcbn1cblxuZnVuY3Rpb24gaXNJcGZzIChpbnB1dCwgcGF0dGVybiwgcHJvdG9jb2xNYXRjaCA9IGRlZmF1bHRQcm90b2NvbE1hdGNoLCBoYXNoTWF0Y2ggPSBkZWZhdWx0SGFzaE1hdGgpIHtcbiAgY29uc3QgZm9ybWF0dGVkID0gY29udmVydFRvU3RyaW5nKGlucHV0KVxuICBpZiAoIWZvcm1hdHRlZCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgbWF0Y2ggPSBmb3JtYXR0ZWQubWF0Y2gocGF0dGVybilcbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKG1hdGNoW3Byb3RvY29sTWF0Y2hdICE9PSAnaXBmcycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGxldCBoYXNoID0gbWF0Y2hbaGFzaE1hdGNoXVxuXG4gIGlmIChoYXNoICYmIHBhdHRlcm4gPT09IGZxZG5QYXR0ZXJuKSB7XG4gICAgLy8gd2hlbiBkb2luZyBjaGVja3MgZm9yIHN1YmRvbWFpbiBjb250ZXh0XG4gICAgLy8gZW5zdXJlIGhhc2ggaXMgY2FzZS1pbnNlbnNpdGl2ZVxuICAgIC8vIChicm93c2VycyBmb3JjZS1sb3dlcmNhc2UgYXV0aG9yaXR5IGNvbXBvdGVudCBhbnl3YXkpXG4gICAgaGFzaCA9IGhhc2gudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgcmV0dXJuIGlzQ0lEKGhhc2gpXG59XG5cbmZ1bmN0aW9uIGlzSXBucyAoaW5wdXQsIHBhdHRlcm4sIHByb3RvY29sTWF0Y2ggPSBkZWZhdWx0UHJvdG9jb2xNYXRjaCwgaGFzaE1hdGNoKSB7XG4gIGNvbnN0IGZvcm1hdHRlZCA9IGNvbnZlcnRUb1N0cmluZyhpbnB1dClcbiAgaWYgKCFmb3JtYXR0ZWQpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjb25zdCBtYXRjaCA9IGZvcm1hdHRlZC5tYXRjaChwYXR0ZXJuKVxuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAobWF0Y2hbcHJvdG9jb2xNYXRjaF0gIT09ICdpcG5zJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKGhhc2hNYXRjaCAmJiBwYXR0ZXJuID09PSBmcWRuUGF0dGVybikge1xuICAgIGxldCBoYXNoID0gbWF0Y2hbaGFzaE1hdGNoXVxuICAgIC8vIHdoZW4gZG9pbmcgY2hlY2tzIGZvciBzdWJkb21haW4gY29udGV4dFxuICAgIC8vIGVuc3VyZSBoYXNoIGlzIGNhc2UtaW5zZW5zaXRpdmVcbiAgICAvLyAoYnJvd3NlcnMgZm9yY2UtbG93ZXJjYXNlIGF1dGhvcml0eSBjb21wb3RlbnQgYW55d2F5KVxuICAgIGhhc2ggPSBoYXNoLnRvTG93ZXJDYXNlKClcbiAgICByZXR1cm4gaXNDSUQoaGFzaClcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nIChpbnB1dCkge1xuICByZXR1cm4gdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VG9TdHJpbmcgKGlucHV0KSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoaW5wdXQpKSB7XG4gICAgcmV0dXJuIGJhc2U1OC5lbmNvZGUoaW5wdXQpXG4gIH1cblxuICBpZiAoaXNTdHJpbmcoaW5wdXQpKSB7XG4gICAgcmV0dXJuIGlucHV0XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuY29uc3QgaXBmc1N1YmRvbWFpbiA9ICh1cmwpID0+IGlzSXBmcyh1cmwsIGZxZG5QYXR0ZXJuLCBmcWRuUHJvdG9jb2xNYXRjaCwgZnFkbkhhc2hNYXRjaClcbmNvbnN0IGlwbnNTdWJkb21haW4gPSAodXJsKSA9PiBpc0lwbnModXJsLCBmcWRuUGF0dGVybiwgZnFkblByb3RvY29sTWF0Y2gsIGZxZG5IYXNoTWF0Y2gpXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtdWx0aWhhc2g6IGlzTXVsdGloYXNoLFxuICBtdWx0aWFkZHI6IGlzTXVsdGlhZGRyLFxuICBwZWVyTXVsdGlhZGRyOiBpc1BlZXJNdWx0aWFkZHIsXG4gIGNpZDogaXNDSUQsXG4gIGJhc2UzMmNpZDogKGNpZCkgPT4gKGlzTXVsdGliYXNlKGNpZCkgPT09ICdiYXNlMzInICYmIGlzQ0lEKGNpZCkpLFxuICBpcGZzU3ViZG9tYWluOiBpcGZzU3ViZG9tYWluLFxuICBpcG5zU3ViZG9tYWluOiBpcG5zU3ViZG9tYWluLFxuICBzdWJkb21haW46ICh1cmwpID0+IChpcGZzU3ViZG9tYWluKHVybCkgfHwgaXBuc1N1YmRvbWFpbih1cmwpKSxcbiAgc3ViZG9tYWluUGF0dGVybjogZnFkblBhdHRlcm4sXG4gIGlwZnNVcmw6ICh1cmwpID0+IGlzSXBmcyh1cmwsIHVybFBhdHRlcm4pLFxuICBpcG5zVXJsOiAodXJsKSA9PiBpc0lwbnModXJsLCB1cmxQYXR0ZXJuKSxcbiAgdXJsOiAodXJsKSA9PiAoaXNJcGZzKHVybCwgdXJsUGF0dGVybikgfHwgaXNJcG5zKHVybCwgdXJsUGF0dGVybikpLFxuICB1cmxQYXR0ZXJuOiB1cmxQYXR0ZXJuLFxuICBpcGZzUGF0aDogKHBhdGgpID0+IGlzSXBmcyhwYXRoLCBwYXRoUGF0dGVybiksXG4gIGlwbnNQYXRoOiAocGF0aCkgPT4gaXNJcG5zKHBhdGgsIHBhdGhQYXR0ZXJuKSxcbiAgcGF0aDogKHBhdGgpID0+IChpc0lwZnMocGF0aCwgcGF0aFBhdHRlcm4pIHx8IGlzSXBucyhwYXRoLCBwYXRoUGF0dGVybikpLFxuICBwYXRoUGF0dGVybjogcGF0aFBhdHRlcm4sXG4gIHVybE9yUGF0aDogKHgpID0+IChpc0lwZnMoeCwgdXJsUGF0dGVybikgfHwgaXNJcG5zKHgsIHVybFBhdHRlcm4pIHx8IGlzSXBmcyh4LCBwYXRoUGF0dGVybikgfHwgaXNJcG5zKHgsIHBhdGhQYXR0ZXJuKSksXG4gIGNpZFBhdGg6IHBhdGggPT4gaXNTdHJpbmcocGF0aCkgJiYgIWlzQ0lEKHBhdGgpICYmIGlzSXBmcyhgL2lwZnMvJHtwYXRofWAsIHBhdGhQYXR0ZXJuKVxufVxuIiwiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG4iLCIvLyBmYWxzZSAtPiBBcnJheSNpbmRleE9mXG4vLyB0cnVlICAtPiBBcnJheSNpbmNsdWRlc1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykge1xuICAgICAgaWYgKE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcbiIsImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuIiwiLy8gNy4yLjggSXNSZWdFeHAoYXJndW1lbnQpXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBNQVRDSCA9IHJlcXVpcmUoJy4vX3drcycpKCdtYXRjaCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIGlzUmVnRXhwO1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmICgoaXNSZWdFeHAgPSBpdFtNQVRDSF0pICE9PSB1bmRlZmluZWQgPyAhIWlzUmVnRXhwIDogY29mKGl0KSA9PSAnUmVnRXhwJyk7XG59O1xuIiwidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgYnVpbHRpbkV4ZWMgPSBSZWdFeHAucHJvdG90eXBlLmV4ZWM7XG5cbiAvLyBgUmVnRXhwRXhlY2AgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHBleGVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChSLCBTKSB7XG4gIHZhciBleGVjID0gUi5leGVjO1xuICBpZiAodHlwZW9mIGV4ZWMgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgcmVzdWx0ID0gZXhlYy5jYWxsKFIsIFMpO1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKGNsYXNzb2YoUikgIT09ICdSZWdFeHAnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUmVnRXhwI2V4ZWMgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlcicpO1xuICB9XG4gIHJldHVybiBidWlsdGluRXhlYy5jYWxsKFIsIFMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4vZXM2LnJlZ2V4cC5leGVjJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG52YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4vX3JlZ2V4cC1leGVjJyk7XG5cbnZhciBTUEVDSUVTID0gd2tzKCdzcGVjaWVzJyk7XG5cbnZhciBSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vICNyZXBsYWNlIG5lZWRzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIG5hbWVkIGdyb3Vwcy5cbiAgLy8gI21hdGNoIHdvcmtzIGZpbmUgYmVjYXVzZSBpdCBqdXN0IHJldHVybiB0aGUgZXhlYyByZXN1bHRzLCBldmVuIGlmIGl0IGhhc1xuICAvLyBhIFwiZ3JvcHNcIiBwcm9wZXJ0eS5cbiAgdmFyIHJlID0gLy4vO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICByZXN1bHQuZ3JvdXBzID0geyBhOiAnNycgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICByZXR1cm4gJycucmVwbGFjZShyZSwgJyQ8YT4nKSAhPT0gJzcnO1xufSk7XG5cbnZhciBTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMgPSAoZnVuY3Rpb24gKCkge1xuICAvLyBDaHJvbWUgNTEgaGFzIGEgYnVnZ3kgXCJzcGxpdFwiIGltcGxlbWVudGF0aW9uIHdoZW4gUmVnRXhwI2V4ZWMgIT09IG5hdGl2ZUV4ZWNcbiAgdmFyIHJlID0gLyg/OikvO1xuICB2YXIgb3JpZ2luYWxFeGVjID0gcmUuZXhlYztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9yaWdpbmFsRXhlYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9O1xuICB2YXIgcmVzdWx0ID0gJ2FiJy5zcGxpdChyZSk7XG4gIHJldHVybiByZXN1bHQubGVuZ3RoID09PSAyICYmIHJlc3VsdFswXSA9PT0gJ2EnICYmIHJlc3VsdFsxXSA9PT0gJ2InO1xufSkoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBsZW5ndGgsIGV4ZWMpIHtcbiAgdmFyIFNZTUJPTCA9IHdrcyhLRVkpO1xuXG4gIHZhciBERUxFR0FURVNfVE9fU1lNQk9MID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBTdHJpbmcgbWV0aG9kcyBjYWxsIHN5bWJvbC1uYW1lZCBSZWdFcCBtZXRob2RzXG4gICAgdmFyIE8gPSB7fTtcbiAgICBPW1NZTUJPTF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9O1xuICAgIHJldHVybiAnJ1tLRVldKE8pICE9IDc7XG4gIH0pO1xuXG4gIHZhciBERUxFR0FURVNfVE9fRVhFQyA9IERFTEVHQVRFU19UT19TWU1CT0wgPyAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN5bWJvbC1uYW1lZCBSZWdFeHAgbWV0aG9kcyBjYWxsIC5leGVjXG4gICAgdmFyIGV4ZWNDYWxsZWQgPSBmYWxzZTtcbiAgICB2YXIgcmUgPSAvYS87XG4gICAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgZXhlY0NhbGxlZCA9IHRydWU7IHJldHVybiBudWxsOyB9O1xuICAgIGlmIChLRVkgPT09ICdzcGxpdCcpIHtcbiAgICAgIC8vIFJlZ0V4cFtAQHNwbGl0XSBkb2Vzbid0IGNhbGwgdGhlIHJlZ2V4J3MgZXhlYyBtZXRob2QsIGJ1dCBmaXJzdCBjcmVhdGVzXG4gICAgICAvLyBhIG5ldyBvbmUuIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBwYXRjaGVkIHJlZ2V4IHdoZW4gY3JlYXRpbmcgdGhlIG5ldyBvbmUuXG4gICAgICByZS5jb25zdHJ1Y3RvciA9IHt9O1xuICAgICAgcmUuY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZTsgfTtcbiAgICB9XG4gICAgcmVbU1lNQk9MXSgnJyk7XG4gICAgcmV0dXJuICFleGVjQ2FsbGVkO1xuICB9KSA6IHVuZGVmaW5lZDtcblxuICBpZiAoXG4gICAgIURFTEVHQVRFU19UT19TWU1CT0wgfHxcbiAgICAhREVMRUdBVEVTX1RPX0VYRUMgfHxcbiAgICAoS0VZID09PSAncmVwbGFjZScgJiYgIVJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTKSB8fFxuICAgIChLRVkgPT09ICdzcGxpdCcgJiYgIVNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQylcbiAgKSB7XG4gICAgdmFyIG5hdGl2ZVJlZ0V4cE1ldGhvZCA9IC8uL1tTWU1CT0xdO1xuICAgIHZhciBmbnMgPSBleGVjKFxuICAgICAgZGVmaW5lZCxcbiAgICAgIFNZTUJPTCxcbiAgICAgICcnW0tFWV0sXG4gICAgICBmdW5jdGlvbiBtYXliZUNhbGxOYXRpdmUobmF0aXZlTWV0aG9kLCByZWdleHAsIHN0ciwgYXJnMiwgZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgICAgaWYgKHJlZ2V4cC5leGVjID09PSByZWdleHBFeGVjKSB7XG4gICAgICAgICAgaWYgKERFTEVHQVRFU19UT19TWU1CT0wgJiYgIWZvcmNlU3RyaW5nTWV0aG9kKSB7XG4gICAgICAgICAgICAvLyBUaGUgbmF0aXZlIFN0cmluZyBtZXRob2QgYWxyZWFkeSBkZWxlZ2F0ZXMgdG8gQEBtZXRob2QgKHRoaXNcbiAgICAgICAgICAgIC8vIHBvbHlmaWxsZWQgZnVuY3Rpb24pLCBsZWFzaW5nIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgICAgICAgICAgIC8vIFdlIGF2b2lkIGl0IGJ5IGRpcmVjdGx5IGNhbGxpbmcgdGhlIG5hdGl2ZSBAQG1ldGhvZCBtZXRob2QuXG4gICAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlUmVnRXhwTWV0aG9kLmNhbGwocmVnZXhwLCBzdHIsIGFyZzIpIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBuYXRpdmVNZXRob2QuY2FsbChzdHIsIHJlZ2V4cCwgYXJnMikgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICk7XG4gICAgdmFyIHN0cmZuID0gZm5zWzBdO1xuICAgIHZhciByeGZuID0gZm5zWzFdO1xuXG4gICAgcmVkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBzdHJmbik7XG4gICAgaGlkZShSZWdFeHAucHJvdG90eXBlLCBTWU1CT0wsIGxlbmd0aCA9PSAyXG4gICAgICAvLyAyMS4yLjUuOCBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV0oc3RyaW5nLCByZXBsYWNlVmFsdWUpXG4gICAgICAvLyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KVxuICAgICAgPyBmdW5jdGlvbiAoc3RyaW5nLCBhcmcpIHsgcmV0dXJuIHJ4Zm4uY2FsbChzdHJpbmcsIHRoaXMsIGFyZyk7IH1cbiAgICAgIC8vIDIxLjIuNS42IFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0oc3RyaW5nKVxuICAgICAgLy8gMjEuMi41LjkgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF0oc3RyaW5nKVxuICAgICAgOiBmdW5jdGlvbiAoc3RyaW5nKSB7IHJldHVybiByeGZuLmNhbGwoc3RyaW5nLCB0aGlzKTsgfVxuICAgICk7XG4gIH1cbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsLm5hdmlnYXRvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyICRpdGVyRGV0ZWN0ID0gcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSByZXF1aXJlKCcuL19pbmhlcml0LWlmLXJlcXVpcmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKSB7XG4gIHZhciBCYXNlID0gZ2xvYmFsW05BTUVdO1xuICB2YXIgQyA9IEJhc2U7XG4gIHZhciBBRERFUiA9IElTX01BUCA/ICdzZXQnIDogJ2FkZCc7XG4gIHZhciBwcm90byA9IEMgJiYgQy5wcm90b3R5cGU7XG4gIHZhciBPID0ge307XG4gIHZhciBmaXhNZXRob2QgPSBmdW5jdGlvbiAoS0VZKSB7XG4gICAgdmFyIGZuID0gcHJvdG9bS0VZXTtcbiAgICByZWRlZmluZShwcm90bywgS0VZLFxuICAgICAgS0VZID09ICdkZWxldGUnID8gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIElTX1dFQUsgJiYgIWlzT2JqZWN0KGEpID8gZmFsc2UgOiBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7XG4gICAgICB9IDogS0VZID09ICdoYXMnID8gZnVuY3Rpb24gaGFzKGEpIHtcbiAgICAgICAgcmV0dXJuIElTX1dFQUsgJiYgIWlzT2JqZWN0KGEpID8gZmFsc2UgOiBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7XG4gICAgICB9IDogS0VZID09ICdnZXQnID8gZnVuY3Rpb24gZ2V0KGEpIHtcbiAgICAgICAgcmV0dXJuIElTX1dFQUsgJiYgIWlzT2JqZWN0KGEpID8gdW5kZWZpbmVkIDogZm4uY2FsbCh0aGlzLCBhID09PSAwID8gMCA6IGEpO1xuICAgICAgfSA6IEtFWSA9PSAnYWRkJyA/IGZ1bmN0aW9uIGFkZChhKSB7IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhKTsgcmV0dXJuIHRoaXM7IH1cbiAgICAgICAgOiBmdW5jdGlvbiBzZXQoYSwgYikgeyBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSwgYik7IHJldHVybiB0aGlzOyB9XG4gICAgKTtcbiAgfTtcbiAgaWYgKHR5cGVvZiBDICE9ICdmdW5jdGlvbicgfHwgIShJU19XRUFLIHx8IHByb3RvLmZvckVhY2ggJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgQygpLmVudHJpZXMoKS5uZXh0KCk7XG4gIH0pKSkge1xuICAgIC8vIGNyZWF0ZSBjb2xsZWN0aW9uIGNvbnN0cnVjdG9yXG4gICAgQyA9IGNvbW1vbi5nZXRDb25zdHJ1Y3Rvcih3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwgbWV0aG9kcyk7XG4gICAgbWV0YS5ORUVEID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQygpO1xuICAgIC8vIGVhcmx5IGltcGxlbWVudGF0aW9ucyBub3Qgc3VwcG9ydHMgY2hhaW5pbmdcbiAgICB2YXIgSEFTTlRfQ0hBSU5JTkcgPSBpbnN0YW5jZVtBRERFUl0oSVNfV0VBSyA/IHt9IDogLTAsIDEpICE9IGluc3RhbmNlO1xuICAgIC8vIFY4IH4gIENocm9taXVtIDQwLSB3ZWFrLWNvbGxlY3Rpb25zIHRocm93cyBvbiBwcmltaXRpdmVzLCBidXQgc2hvdWxkIHJldHVybiBmYWxzZVxuICAgIHZhciBUSFJPV1NfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UuaGFzKDEpOyB9KTtcbiAgICAvLyBtb3N0IGVhcmx5IGltcGxlbWVudGF0aW9ucyBkb2Vzbid0IHN1cHBvcnRzIGl0ZXJhYmxlcywgbW9zdCBtb2Rlcm4gLSBub3QgY2xvc2UgaXQgY29ycmVjdGx5XG4gICAgdmFyIEFDQ0VQVF9JVEVSQUJMRVMgPSAkaXRlckRldGVjdChmdW5jdGlvbiAoaXRlcikgeyBuZXcgQyhpdGVyKTsgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgLy8gZm9yIGVhcmx5IGltcGxlbWVudGF0aW9ucyAtMCBhbmQgKzAgbm90IHRoZSBzYW1lXG4gICAgdmFyIEJVR0dZX1pFUk8gPSAhSVNfV0VBSyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBWOCB+IENocm9taXVtIDQyLSBmYWlscyBvbmx5IHdpdGggNSsgZWxlbWVudHNcbiAgICAgIHZhciAkaW5zdGFuY2UgPSBuZXcgQygpO1xuICAgICAgdmFyIGluZGV4ID0gNTtcbiAgICAgIHdoaWxlIChpbmRleC0tKSAkaW5zdGFuY2VbQURERVJdKGluZGV4LCBpbmRleCk7XG4gICAgICByZXR1cm4gISRpbnN0YW5jZS5oYXMoLTApO1xuICAgIH0pO1xuICAgIGlmICghQUNDRVBUX0lURVJBQkxFUykge1xuICAgICAgQyA9IHdyYXBwZXIoZnVuY3Rpb24gKHRhcmdldCwgaXRlcmFibGUpIHtcbiAgICAgICAgYW5JbnN0YW5jZSh0YXJnZXQsIEMsIE5BTUUpO1xuICAgICAgICB2YXIgdGhhdCA9IGluaGVyaXRJZlJlcXVpcmVkKG5ldyBCYXNlKCksIHRhcmdldCwgQyk7XG4gICAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICAgICAgcmV0dXJuIHRoYXQ7XG4gICAgICB9KTtcbiAgICAgIEMucHJvdG90eXBlID0gcHJvdG87XG4gICAgICBwcm90by5jb25zdHJ1Y3RvciA9IEM7XG4gICAgfVxuICAgIGlmIChUSFJPV1NfT05fUFJJTUlUSVZFUyB8fCBCVUdHWV9aRVJPKSB7XG4gICAgICBmaXhNZXRob2QoJ2RlbGV0ZScpO1xuICAgICAgZml4TWV0aG9kKCdoYXMnKTtcbiAgICAgIElTX01BUCAmJiBmaXhNZXRob2QoJ2dldCcpO1xuICAgIH1cbiAgICBpZiAoQlVHR1lfWkVSTyB8fCBIQVNOVF9DSEFJTklORykgZml4TWV0aG9kKEFEREVSKTtcbiAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIHNob3VsZCBub3QgY29udGFpbnMgLmNsZWFyIG1ldGhvZFxuICAgIGlmIChJU19XRUFLICYmIHByb3RvLmNsZWFyKSBkZWxldGUgcHJvdG8uY2xlYXI7XG4gIH1cblxuICBzZXRUb1N0cmluZ1RhZyhDLCBOQU1FKTtcblxuICBPW05BTUVdID0gQztcbiAgJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAoQyAhPSBCYXNlKSwgTyk7XG5cbiAgaWYgKCFJU19XRUFLKSBjb21tb24uc2V0U3Ryb25nKEMsIE5BTUUsIElTX01BUCk7XG5cbiAgcmV0dXJuIEM7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgVFlQRUQgPSB1aWQoJ3R5cGVkX2FycmF5Jyk7XG52YXIgVklFVyA9IHVpZCgndmlldycpO1xudmFyIEFCViA9ICEhKGdsb2JhbC5BcnJheUJ1ZmZlciAmJiBnbG9iYWwuRGF0YVZpZXcpO1xudmFyIENPTlNUUiA9IEFCVjtcbnZhciBpID0gMDtcbnZhciBsID0gOTtcbnZhciBUeXBlZDtcblxudmFyIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnMgPSAoXG4gICdJbnQ4QXJyYXksVWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheSxJbnQxNkFycmF5LFVpbnQxNkFycmF5LEludDMyQXJyYXksVWludDMyQXJyYXksRmxvYXQzMkFycmF5LEZsb2F0NjRBcnJheSdcbikuc3BsaXQoJywnKTtcblxud2hpbGUgKGkgPCBsKSB7XG4gIGlmIChUeXBlZCA9IGdsb2JhbFtUeXBlZEFycmF5Q29uc3RydWN0b3JzW2krK11dKSB7XG4gICAgaGlkZShUeXBlZC5wcm90b3R5cGUsIFRZUEVELCB0cnVlKTtcbiAgICBoaWRlKFR5cGVkLnByb3RvdHlwZSwgVklFVywgdHJ1ZSk7XG4gIH0gZWxzZSBDT05TVFIgPSBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEFCVjogQUJWLFxuICBDT05TVFI6IENPTlNUUixcbiAgVFlQRUQ6IFRZUEVELFxuICBWSUVXOiBWSUVXXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gRm9yY2VkIHJlcGxhY2VtZW50IHByb3RvdHlwZSBhY2Nlc3NvcnMgbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19saWJyYXJ5JykgfHwgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICB2YXIgSyA9IE1hdGgucmFuZG9tKCk7XG4gIC8vIEluIEZGIHRocm93cyBvbmx5IGRlZmluZSBtZXRob2RzXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZiwgbm8tdXNlbGVzcy1jYWxsXG4gIF9fZGVmaW5lU2V0dGVyX18uY2FsbChudWxsLCBLLCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xuICBkZWxldGUgcmVxdWlyZSgnLi9fZ2xvYmFsJylbS107XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTExFQ1RJT04pIHtcbiAgJGV4cG9ydCgkZXhwb3J0LlMsIENPTExFQ1RJT04sIHsgb2Y6IGZ1bmN0aW9uIG9mKCkge1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBBID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSBBW2xlbmd0aF0gPSBhcmd1bWVudHNbbGVuZ3RoXTtcbiAgICByZXR1cm4gbmV3IHRoaXMoQSk7XG4gIH0gfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09MTEVDVElPTikge1xuICAkZXhwb3J0KCRleHBvcnQuUywgQ09MTEVDVElPTiwgeyBmcm9tOiBmdW5jdGlvbiBmcm9tKHNvdXJjZSAvKiAsIG1hcEZuLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIG1hcEZuID0gYXJndW1lbnRzWzFdO1xuICAgIHZhciBtYXBwaW5nLCBBLCBuLCBjYjtcbiAgICBhRnVuY3Rpb24odGhpcyk7XG4gICAgbWFwcGluZyA9IG1hcEZuICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG1hcHBpbmcpIGFGdW5jdGlvbihtYXBGbik7XG4gICAgaWYgKHNvdXJjZSA9PSB1bmRlZmluZWQpIHJldHVybiBuZXcgdGhpcygpO1xuICAgIEEgPSBbXTtcbiAgICBpZiAobWFwcGluZykge1xuICAgICAgbiA9IDA7XG4gICAgICBjYiA9IGN0eChtYXBGbiwgYXJndW1lbnRzWzJdLCAyKTtcbiAgICAgIGZvck9mKHNvdXJjZSwgZmFsc2UsIGZ1bmN0aW9uIChuZXh0SXRlbSkge1xuICAgICAgICBBLnB1c2goY2IobmV4dEl0ZW0sIG4rKykpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvck9mKHNvdXJjZSwgZmFsc2UsIEEucHVzaCwgQSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgdGhpcyhBKTtcbiAgfSB9KTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidXRpbFwiKTsiLCJ2YXIgYmFzZXggPSByZXF1aXJlKCdiYXNlLXgnKVxudmFyIEFMUEhBQkVUID0gJzEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXonXG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZXgoQUxQSEFCRVQpXG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsIi8vIDkuNC4yLjMgQXJyYXlTcGVjaWVzQ3JlYXRlKG9yaWdpbmFsQXJyYXksIGxlbmd0aClcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKG9yaWdpbmFsKSkobGVuZ3RoKTtcbn07XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcbiIsIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgJFN5bWJvbCA9IGNvcmUuU3ltYm9sIHx8IChjb3JlLlN5bWJvbCA9IExJQlJBUlkgPyB7fSA6IGdsb2JhbC5TeW1ib2wgfHwge30pO1xuICBpZiAobmFtZS5jaGFyQXQoMCkgIT0gJ18nICYmICEobmFtZSBpbiAkU3ltYm9sKSkgZGVmaW5lUHJvcGVydHkoJFN5bWJvbCwgbmFtZSwgeyB2YWx1ZTogd2tzRXh0LmYobmFtZSkgfSk7XG59O1xuIiwidmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG5tb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiIsIi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoTywgcHJvdG8pIHtcbiAgYW5PYmplY3QoTyk7XG4gIGlmICghaXNPYmplY3QocHJvdG8pICYmIHByb3RvICE9PSBudWxsKSB0aHJvdyBUeXBlRXJyb3IocHJvdG8gKyBcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIik7XG59O1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICBmdW5jdGlvbiAodGVzdCwgYnVnZ3ksIHNldCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0ID0gcmVxdWlyZSgnLi9fY3R4JykoRnVuY3Rpb24uY2FsbCwgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nKS5zZXQsIDIpO1xuICAgICAgICBzZXQodGVzdCwgW10pO1xuICAgICAgICBidWdneSA9ICEodGVzdCBpbnN0YW5jZW9mIEFycmF5KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgYnVnZ3kgPSB0cnVlOyB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHtcbiAgICAgICAgY2hlY2soTywgcHJvdG8pO1xuICAgICAgICBpZiAoYnVnZ3kpIE8uX19wcm90b19fID0gcHJvdG87XG4gICAgICAgIGVsc2Ugc2V0KE8sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIE87XG4gICAgICB9O1xuICAgIH0oe30sIGZhbHNlKSA6IHVuZGVmaW5lZCksXG4gIGNoZWNrOiBjaGVja1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gJ1xceDA5XFx4MEFcXHgwQlxceDBDXFx4MERcXHgyMFxceEEwXFx1MTY4MFxcdTE4MEVcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzJyArXG4gICdcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBBXFx1MjAyRlxcdTIwNUZcXHUzMDAwXFx1MjAyOFxcdTIwMjlcXHVGRUZGJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4vX2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyICR0cmltID0gcmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKS50cmltO1xudmFyIE5VTUJFUiA9ICdOdW1iZXInO1xudmFyICROdW1iZXIgPSBnbG9iYWxbTlVNQkVSXTtcbnZhciBCYXNlID0gJE51bWJlcjtcbnZhciBwcm90byA9ICROdW1iZXIucHJvdG90eXBlO1xuLy8gT3BlcmEgfjEyIGhhcyBicm9rZW4gT2JqZWN0I3RvU3RyaW5nXG52YXIgQlJPS0VOX0NPRiA9IGNvZihyZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJykocHJvdG8pKSA9PSBOVU1CRVI7XG52YXIgVFJJTSA9ICd0cmltJyBpbiBTdHJpbmcucHJvdG90eXBlO1xuXG4vLyA3LjEuMyBUb051bWJlcihhcmd1bWVudClcbnZhciB0b051bWJlciA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgaXQgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgZmFsc2UpO1xuICBpZiAodHlwZW9mIGl0ID09ICdzdHJpbmcnICYmIGl0Lmxlbmd0aCA+IDIpIHtcbiAgICBpdCA9IFRSSU0gPyBpdC50cmltKCkgOiAkdHJpbShpdCwgMyk7XG4gICAgdmFyIGZpcnN0ID0gaXQuY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgdGhpcmQsIHJhZGl4LCBtYXhDb2RlO1xuICAgIGlmIChmaXJzdCA9PT0gNDMgfHwgZmlyc3QgPT09IDQ1KSB7XG4gICAgICB0aGlyZCA9IGl0LmNoYXJDb2RlQXQoMik7XG4gICAgICBpZiAodGhpcmQgPT09IDg4IHx8IHRoaXJkID09PSAxMjApIHJldHVybiBOYU47IC8vIE51bWJlcignKzB4MScpIHNob3VsZCBiZSBOYU4sIG9sZCBWOCBmaXhcbiAgICB9IGVsc2UgaWYgKGZpcnN0ID09PSA0OCkge1xuICAgICAgc3dpdGNoIChpdC5jaGFyQ29kZUF0KDEpKSB7XG4gICAgICAgIGNhc2UgNjY6IGNhc2UgOTg6IHJhZGl4ID0gMjsgbWF4Q29kZSA9IDQ5OyBicmVhazsgLy8gZmFzdCBlcXVhbCAvXjBiWzAxXSskL2lcbiAgICAgICAgY2FzZSA3OTogY2FzZSAxMTE6IHJhZGl4ID0gODsgbWF4Q29kZSA9IDU1OyBicmVhazsgLy8gZmFzdCBlcXVhbCAvXjBvWzAtN10rJC9pXG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiAraXQ7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBkaWdpdHMgPSBpdC5zbGljZSgyKSwgaSA9IDAsIGwgPSBkaWdpdHMubGVuZ3RoLCBjb2RlOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvZGUgPSBkaWdpdHMuY2hhckNvZGVBdChpKTtcbiAgICAgICAgLy8gcGFyc2VJbnQgcGFyc2VzIGEgc3RyaW5nIHRvIGEgZmlyc3QgdW5hdmFpbGFibGUgc3ltYm9sXG4gICAgICAgIC8vIGJ1dCBUb051bWJlciBzaG91bGQgcmV0dXJuIE5hTiBpZiBhIHN0cmluZyBjb250YWlucyB1bmF2YWlsYWJsZSBzeW1ib2xzXG4gICAgICAgIGlmIChjb2RlIDwgNDggfHwgY29kZSA+IG1heENvZGUpIHJldHVybiBOYU47XG4gICAgICB9IHJldHVybiBwYXJzZUludChkaWdpdHMsIHJhZGl4KTtcbiAgICB9XG4gIH0gcmV0dXJuICtpdDtcbn07XG5cbmlmICghJE51bWJlcignIDBvMScpIHx8ICEkTnVtYmVyKCcwYjEnKSB8fCAkTnVtYmVyKCcrMHgxJykpIHtcbiAgJE51bWJlciA9IGZ1bmN0aW9uIE51bWJlcih2YWx1ZSkge1xuICAgIHZhciBpdCA9IGFyZ3VtZW50cy5sZW5ndGggPCAxID8gMCA6IHZhbHVlO1xuICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICByZXR1cm4gdGhhdCBpbnN0YW5jZW9mICROdW1iZXJcbiAgICAgIC8vIGNoZWNrIG9uIDEuLmNvbnN0cnVjdG9yKGZvbykgY2FzZVxuICAgICAgJiYgKEJST0tFTl9DT0YgPyBmYWlscyhmdW5jdGlvbiAoKSB7IHByb3RvLnZhbHVlT2YuY2FsbCh0aGF0KTsgfSkgOiBjb2YodGhhdCkgIT0gTlVNQkVSKVxuICAgICAgICA/IGluaGVyaXRJZlJlcXVpcmVkKG5ldyBCYXNlKHRvTnVtYmVyKGl0KSksIHRoYXQsICROdW1iZXIpIDogdG9OdW1iZXIoaXQpO1xuICB9O1xuICBmb3IgKHZhciBrZXlzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUE4oQmFzZSkgOiAoXG4gICAgLy8gRVMzOlxuICAgICdNQVhfVkFMVUUsTUlOX1ZBTFVFLE5hTixORUdBVElWRV9JTkZJTklUWSxQT1NJVElWRV9JTkZJTklUWSwnICtcbiAgICAvLyBFUzYgKGluIGNhc2UsIGlmIG1vZHVsZXMgd2l0aCBFUzYgTnVtYmVyIHN0YXRpY3MgcmVxdWlyZWQgYmVmb3JlKTpcbiAgICAnRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLCcgK1xuICAgICdNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJbnQsaXNJbnRlZ2VyJ1xuICApLnNwbGl0KCcsJyksIGogPSAwLCBrZXk7IGtleXMubGVuZ3RoID4gajsgaisrKSB7XG4gICAgaWYgKGhhcyhCYXNlLCBrZXkgPSBrZXlzW2pdKSAmJiAhaGFzKCROdW1iZXIsIGtleSkpIHtcbiAgICAgIGRQKCROdW1iZXIsIGtleSwgZ09QRChCYXNlLCBrZXkpKTtcbiAgICB9XG4gIH1cbiAgJE51bWJlci5wcm90b3R5cGUgPSBwcm90bztcbiAgcHJvdG8uY29uc3RydWN0b3IgPSAkTnVtYmVyO1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKGdsb2JhbCwgTlVNQkVSLCAkTnVtYmVyKTtcbn1cbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgdGFyZ2V0LCBDKSB7XG4gIHZhciBTID0gdGFyZ2V0LmNvbnN0cnVjdG9yO1xuICB2YXIgUDtcbiAgaWYgKFMgIT09IEMgJiYgdHlwZW9mIFMgPT0gJ2Z1bmN0aW9uJyAmJiAoUCA9IFMucHJvdG90eXBlKSAhPT0gQy5wcm90b3R5cGUgJiYgaXNPYmplY3QoUCkgJiYgc2V0UHJvdG90eXBlT2YpIHtcbiAgICBzZXRQcm90b3R5cGVPZih0aGF0LCBQKTtcbiAgfSByZXR1cm4gdGhhdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmVwZWF0KGNvdW50KSB7XG4gIHZhciBzdHIgPSBTdHJpbmcoZGVmaW5lZCh0aGlzKSk7XG4gIHZhciByZXMgPSAnJztcbiAgdmFyIG4gPSB0b0ludGVnZXIoY291bnQpO1xuICBpZiAobiA8IDAgfHwgbiA9PSBJbmZpbml0eSkgdGhyb3cgUmFuZ2VFcnJvcihcIkNvdW50IGNhbid0IGJlIG5lZ2F0aXZlXCIpO1xuICBmb3IgKDtuID4gMDsgKG4gPj4+PSAxKSAmJiAoc3RyICs9IHN0cikpIGlmIChuICYgMSkgcmVzICs9IHN0cjtcbiAgcmV0dXJuIHJlcztcbn07XG4iLCIvLyAyMC4xLjIuMyBOdW1iZXIuaXNJbnRlZ2VyKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywgeyBpc0ludGVnZXI6IHJlcXVpcmUoJy4vX2lzLWludGVnZXInKSB9KTtcbiIsIi8vIDIwLjIuMi4yOCBNYXRoLnNpZ24oeClcbm1vZHVsZS5leHBvcnRzID0gTWF0aC5zaWduIHx8IGZ1bmN0aW9uIHNpZ24oeCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiAoeCA9ICt4KSA9PSAwIHx8IHggIT0geCA/IHggOiB4IDwgMCA/IC0xIDogMTtcbn07XG4iLCIvLyAyMC4yLjIuMTQgTWF0aC5leHBtMSh4KVxudmFyICRleHBtMSA9IE1hdGguZXhwbTE7XG5tb2R1bGUuZXhwb3J0cyA9ICghJGV4cG0xXG4gIC8vIE9sZCBGRiBidWdcbiAgfHwgJGV4cG0xKDEwKSA+IDIyMDI1LjQ2NTc5NDgwNjcxOSB8fCAkZXhwbTEoMTApIDwgMjIwMjUuNDY1Nzk0ODA2NzE2NTE2OFxuICAvLyBUb3IgQnJvd3NlciBidWdcbiAgfHwgJGV4cG0xKC0yZS0xNykgIT0gLTJlLTE3XG4pID8gZnVuY3Rpb24gZXhwbTEoeCkge1xuICByZXR1cm4gKHggPSAreCkgPT0gMCA/IHggOiB4ID4gLTFlLTYgJiYgeCA8IDFlLTYgPyB4ICsgeCAqIHggLyAyIDogTWF0aC5leHAoeCkgLSAxO1xufSA6ICRleHBtMTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciAkaXRlckNyZWF0ZSA9IHJlcXVpcmUoJy4vX2l0ZXItY3JlYXRlJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1kgPSAhKFtdLmtleXMgJiYgJ25leHQnIGluIFtdLmtleXMoKSk7IC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbnZhciBGRl9JVEVSQVRPUiA9ICdAQGl0ZXJhdG9yJztcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEJhc2UsIE5BTUUsIENvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICAkaXRlckNyZWF0ZShDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG4gIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoa2luZCkge1xuICAgIGlmICghQlVHR1kgJiYga2luZCBpbiBwcm90bykgcmV0dXJuIHByb3RvW2tpbmRdO1xuICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgIH0gcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gIH07XG4gIHZhciBUQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBERUZfVkFMVUVTID0gREVGQVVMVCA9PSBWQUxVRVM7XG4gIHZhciBWQUxVRVNfQlVHID0gZmFsc2U7XG4gIHZhciBwcm90byA9IEJhc2UucHJvdG90eXBlO1xuICB2YXIgJG5hdGl2ZSA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXTtcbiAgdmFyICRkZWZhdWx0ID0gJG5hdGl2ZSB8fCBnZXRNZXRob2QoREVGQVVMVCk7XG4gIHZhciAkZW50cmllcyA9IERFRkFVTFQgPyAhREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKCdlbnRyaWVzJykgOiB1bmRlZmluZWQ7XG4gIHZhciAkYW55TmF0aXZlID0gTkFNRSA9PSAnQXJyYXknID8gcHJvdG8uZW50cmllcyB8fCAkbmF0aXZlIDogJG5hdGl2ZTtcbiAgdmFyIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7XG4gIC8vIEZpeCBuYXRpdmVcbiAgaWYgKCRhbnlOYXRpdmUpIHtcbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSgpKSk7XG4gICAgaWYgKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuICAgICAgLy8gZml4IGZvciBzb21lIG9sZCBlbmdpbmVzXG4gICAgICBpZiAoIUxJQlJBUlkgJiYgdHlwZW9mIEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSAhPSAnZnVuY3Rpb24nKSBoaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgfVxuICB9XG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUykge1xuICAgIFZBTFVFU19CVUcgPSB0cnVlO1xuICAgICRkZWZhdWx0ID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gJG5hdGl2ZS5jYWxsKHRoaXMpOyB9O1xuICB9XG4gIC8vIERlZmluZSBpdGVyYXRvclxuICBpZiAoKCFMSUJSQVJZIHx8IEZPUkNFRCkgJiYgKEJVR0dZIHx8IFZBTFVFU19CVUcgfHwgIXByb3RvW0lURVJBVE9SXSkpIHtcbiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpO1xuICB9XG4gIC8vIFBsdWcgZm9yIGxpYnJhcnlcbiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7XG4gIEl0ZXJhdG9yc1tUQUddID0gcmV0dXJuVGhpcztcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogJGVudHJpZXNcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoa2V5IGluIG1ldGhvZHMpIHtcbiAgICAgIGlmICghKGtleSBpbiBwcm90bykpIHJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG4gICAgfSBlbHNlICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKEJVR0dZIHx8IFZBTFVFU19CVUcpLCBOQU1FLCBtZXRob2RzKTtcbiAgfVxuICByZXR1cm4gbWV0aG9kcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGRlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19oaWRlJykoSXRlcmF0b3JQcm90b3R5cGUsIHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHtcbiAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGRlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xufTtcbiIsIi8vIGhlbHBlciBmb3IgU3RyaW5nI3tzdGFydHNXaXRoLCBlbmRzV2l0aCwgaW5jbHVkZXN9XG52YXIgaXNSZWdFeHAgPSByZXF1aXJlKCcuL19pcy1yZWdleHAnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBzZWFyY2hTdHJpbmcsIE5BTUUpIHtcbiAgaWYgKGlzUmVnRXhwKHNlYXJjaFN0cmluZykpIHRocm93IFR5cGVFcnJvcignU3RyaW5nIycgKyBOQU1FICsgXCIgZG9lc24ndCBhY2NlcHQgcmVnZXghXCIpO1xuICByZXR1cm4gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xufTtcbiIsInZhciBNQVRDSCA9IHJlcXVpcmUoJy4vX3drcycpKCdtYXRjaCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZKSB7XG4gIHZhciByZSA9IC8uLztcbiAgdHJ5IHtcbiAgICAnLy4vJ1tLRVldKHJlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRyeSB7XG4gICAgICByZVtNQVRDSF0gPSBmYWxzZTtcbiAgICAgIHJldHVybiAhJy8uLydbS0VZXShyZSk7XG4gICAgfSBjYXRjaCAoZikgeyAvKiBlbXB0eSAqLyB9XG4gIH0gcmV0dXJuIHRydWU7XG59O1xuIiwiLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b1tJVEVSQVRPUl0gPT09IGl0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBpbmRleCwgdmFsdWUpIHtcbiAgaWYgKGluZGV4IGluIG9iamVjdCkgJGRlZmluZVByb3BlcnR5LmYob2JqZWN0LCBpbmRleCwgY3JlYXRlRGVzYygwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtpbmRleF0gPSB2YWx1ZTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGl0W0lURVJBVE9SXVxuICAgIHx8IGl0WydAQGl0ZXJhdG9yJ11cbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsIi8vIDIyLjEuMy42IEFycmF5LnByb3RvdHlwZS5maWxsKHZhbHVlLCBzdGFydCA9IDAsIGVuZCA9IHRoaXMubGVuZ3RoKVxuJ3VzZSBzdHJpY3QnO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qICwgc3RhcnQgPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBsZW5ndGgpO1xuICB2YXIgZW5kID0gYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBlbmRQb3MgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbmd0aCk7XG4gIHdoaWxlIChlbmRQb3MgPiBpbmRleCkgT1tpbmRleCsrXSA9IHZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG5cbi8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG4vLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG4vLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgIC8vIGtpbmRcbi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBraW5kID0gdGhpcy5faztcbiAgdmFyIGluZGV4ID0gdGhpcy5faSsrO1xuICBpZiAoIU8gfHwgaW5kZXggPj0gTy5sZW5ndGgpIHtcbiAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBzdGVwKDEpO1xuICB9XG4gIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuICByZXR1cm4gc3RlcCgwLCBbaW5kZXgsIE9baW5kZXhdXSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcbkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVnZXhwRmxhZ3MgPSByZXF1aXJlKCcuL19mbGFncycpO1xuXG52YXIgbmF0aXZlRXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYztcbi8vIFRoaXMgYWx3YXlzIHJlZmVycyB0byB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlIHRoZVxuLy8gU3RyaW5nI3JlcGxhY2UgcG9seWZpbGwgdXNlcyAuL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMuanMsXG4vLyB3aGljaCBsb2FkcyB0aGlzIGZpbGUgYmVmb3JlIHBhdGNoaW5nIHRoZSBtZXRob2QuXG52YXIgbmF0aXZlUmVwbGFjZSA9IFN0cmluZy5wcm90b3R5cGUucmVwbGFjZTtcblxudmFyIHBhdGNoZWRFeGVjID0gbmF0aXZlRXhlYztcblxudmFyIExBU1RfSU5ERVggPSAnbGFzdEluZGV4JztcblxudmFyIFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciByZTEgPSAvYS8sXG4gICAgICByZTIgPSAvYiovZztcbiAgbmF0aXZlRXhlYy5jYWxsKHJlMSwgJ2EnKTtcbiAgbmF0aXZlRXhlYy5jYWxsKHJlMiwgJ2EnKTtcbiAgcmV0dXJuIHJlMVtMQVNUX0lOREVYXSAhPT0gMCB8fCByZTJbTEFTVF9JTkRFWF0gIT09IDA7XG59KSgpO1xuXG4vLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cCwgY29waWVkIGZyb20gZXM1LXNoaW0ncyBTdHJpbmcjc3BsaXQgcGF0Y2guXG52YXIgTlBDR19JTkNMVURFRCA9IC8oKT8/Ly5leGVjKCcnKVsxXSAhPT0gdW5kZWZpbmVkO1xuXG52YXIgUEFUQ0ggPSBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgfHwgTlBDR19JTkNMVURFRDtcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHIpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBsYXN0SW5kZXgsIHJlQ29weSwgbWF0Y2gsIGk7XG5cbiAgICBpZiAoTlBDR19JTkNMVURFRCkge1xuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXicgKyByZS5zb3VyY2UgKyAnJCg/IVxcXFxzKScsIHJlZ2V4cEZsYWdzLmNhbGwocmUpKTtcbiAgICB9XG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORykgbGFzdEluZGV4ID0gcmVbTEFTVF9JTkRFWF07XG5cbiAgICBtYXRjaCA9IG5hdGl2ZUV4ZWMuY2FsbChyZSwgc3RyKTtcblxuICAgIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgJiYgbWF0Y2gpIHtcbiAgICAgIHJlW0xBU1RfSU5ERVhdID0gcmUuZ2xvYmFsID8gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGggOiBsYXN0SW5kZXg7XG4gICAgfVxuICAgIGlmIChOUENHX0lOQ0xVREVEICYmIG1hdGNoICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIEZpeCBicm93c2VycyB3aG9zZSBgZXhlY2AgbWV0aG9kcyBkb24ndCBjb25zaXN0ZW50bHkgcmV0dXJuIGB1bmRlZmluZWRgXG4gICAgICAvLyBmb3IgTlBDRywgbGlrZSBJRTguIE5PVEU6IFRoaXMgZG9lc24nIHdvcmsgZm9yIC8oLj8pPy9cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb29wLWZ1bmNcbiAgICAgIG5hdGl2ZVJlcGxhY2UuY2FsbChtYXRjaFswXSwgcmVDb3B5LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWZpbmVkKSBtYXRjaFtpXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoZWRFeGVjO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbiAvLyBgQWR2YW5jZVN0cmluZ0luZGV4YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFkdmFuY2VzdHJpbmdpbmRleFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUywgaW5kZXgsIHVuaWNvZGUpIHtcbiAgcmV0dXJuIGluZGV4ICsgKHVuaWNvZGUgPyBhdChTLCBpbmRleCkubGVuZ3RoIDogMSk7XG59O1xuIiwidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGludm9rZSA9IHJlcXVpcmUoJy4vX2ludm9rZScpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuL19odG1sJyk7XG52YXIgY2VsID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBzZXRUYXNrID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbnZhciBjbGVhclRhc2sgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG52YXIgTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWw7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWwuRGlzcGF0Y2g7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciBkZWZlciwgY2hhbm5lbCwgcG9ydDtcbnZhciBydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpZCA9ICt0aGlzO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIGlmIChxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xudmFyIGxpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gIHJ1bi5jYWxsKGV2ZW50LmRhdGEpO1xufTtcbi8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcbmlmICghc2V0VGFzayB8fCAhY2xlYXJUYXNrKSB7XG4gIHNldFRhc2sgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIHZhciBpID0gMTtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgaW52b2tlKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbiksIGFyZ3MpO1xuICAgIH07XG4gICAgZGVmZXIoY291bnRlcik7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH07XG4gIGNsZWFyVGFzayA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKSB7XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgfTtcbiAgLy8gTm9kZS5qcyAwLjgtXG4gIGlmIChyZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2VzcycpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIFNwaGVyZSAoSlMgZ2FtZSBlbmdpbmUpIERpc3BhdGNoIEFQSVxuICB9IGVsc2UgaWYgKERpc3BhdGNoICYmIERpc3BhdGNoLm5vdykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBEaXNwYXRjaC5ub3coY3R4KHJ1biwgaWQsIDEpKTtcbiAgICB9O1xuICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG4gIH0gZWxzZSBpZiAoTWVzc2FnZUNoYW5uZWwpIHtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBsaXN0ZW5lcjtcbiAgICBkZWZlciA9IGN0eChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuICAgIH07XG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZiAoT05SRUFEWVNUQVRFQ0hBTkdFIGluIGNlbCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjZWwoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4uY2FsbChpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHNldFRpbWVvdXQoY3R4KHJ1biwgaWQsIDEpLCAwKTtcbiAgICB9O1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXRUYXNrLFxuICBjbGVhcjogY2xlYXJUYXNrXG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIG1hY3JvdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgT2JzZXJ2ZXIgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoZWFkLCBsYXN0LCBub3RpZnk7XG5cbiAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChpc05vZGUgJiYgKHBhcmVudCA9IHByb2Nlc3MuZG9tYWluKSkgcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZSAoaGVhZCkge1xuICAgICAgZm4gPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChoZWFkKSBub3RpZnkoKTtcbiAgICAgICAgZWxzZSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gbGFzdCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBOb2RlLmpzXG4gIGlmIChpc05vZGUpIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTtcbiAgICB9O1xuICAvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXIsIGV4Y2VwdCBpT1MgU2FmYXJpIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMzOVxuICB9IGVsc2UgaWYgKE9ic2VydmVyICYmICEoZ2xvYmFsLm5hdmlnYXRvciAmJiBnbG9iYWwubmF2aWdhdG9yLnN0YW5kYWxvbmUpKSB7XG4gICAgdmFyIHRvZ2dsZSA9IHRydWU7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAhdG9nZ2xlO1xuICAgIH07XG4gIC8vIGVudmlyb25tZW50cyB3aXRoIG1heWJlIG5vbi1jb21wbGV0ZWx5IGNvcnJlY3QsIGJ1dCBleGlzdGVudCBQcm9taXNlXG4gIH0gZWxzZSBpZiAoUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpIHtcbiAgICAvLyBQcm9taXNlLnJlc29sdmUgd2l0aG91dCBhbiBhcmd1bWVudCB0aHJvd3MgYW4gZXJyb3IgaW4gTEcgV2ViT1MgMlxuICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvbWlzZS50aGVuKGZsdXNoKTtcbiAgICB9O1xuICAvLyBmb3Igb3RoZXIgZW52aXJvbm1lbnRzIC0gbWFjcm90YXNrIGJhc2VkIG9uOlxuICAvLyAtIHNldEltbWVkaWF0ZVxuICAvLyAtIE1lc3NhZ2VDaGFubmVsXG4gIC8vIC0gd2luZG93LnBvc3RNZXNzYWdcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc3RyYW5nZSBJRSArIHdlYnBhY2sgZGV2IHNlcnZlciBidWcgLSB1c2UgLmNhbGwoZ2xvYmFsKVxuICAgICAgbWFjcm90YXNrLmNhbGwoZ2xvYmFsLCBmbHVzaCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoZm4pIHtcbiAgICB2YXIgdGFzayA9IHsgZm46IGZuLCBuZXh0OiB1bmRlZmluZWQgfTtcbiAgICBpZiAobGFzdCkgbGFzdC5uZXh0ID0gdGFzaztcbiAgICBpZiAoIWhlYWQpIHtcbiAgICAgIGhlYWQgPSB0YXNrO1xuICAgICAgbm90aWZ5KCk7XG4gICAgfSBsYXN0ID0gdGFzaztcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJHR5cGVkID0gcmVxdWlyZSgnLi9fdHlwZWQnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHRvSW5kZXggPSByZXF1aXJlKCcuL190by1pbmRleCcpO1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGFycmF5RmlsbCA9IHJlcXVpcmUoJy4vX2FycmF5LWZpbGwnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgQVJSQVlfQlVGRkVSID0gJ0FycmF5QnVmZmVyJztcbnZhciBEQVRBX1ZJRVcgPSAnRGF0YVZpZXcnO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIFdST05HX0xFTkdUSCA9ICdXcm9uZyBsZW5ndGghJztcbnZhciBXUk9OR19JTkRFWCA9ICdXcm9uZyBpbmRleCEnO1xudmFyICRBcnJheUJ1ZmZlciA9IGdsb2JhbFtBUlJBWV9CVUZGRVJdO1xudmFyICREYXRhVmlldyA9IGdsb2JhbFtEQVRBX1ZJRVddO1xudmFyIE1hdGggPSBnbG9iYWwuTWF0aDtcbnZhciBSYW5nZUVycm9yID0gZ2xvYmFsLlJhbmdlRXJyb3I7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93LXJlc3RyaWN0ZWQtbmFtZXNcbnZhciBJbmZpbml0eSA9IGdsb2JhbC5JbmZpbml0eTtcbnZhciBCYXNlQnVmZmVyID0gJEFycmF5QnVmZmVyO1xudmFyIGFicyA9IE1hdGguYWJzO1xudmFyIHBvdyA9IE1hdGgucG93O1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBsb2cgPSBNYXRoLmxvZztcbnZhciBMTjIgPSBNYXRoLkxOMjtcbnZhciBCVUZGRVIgPSAnYnVmZmVyJztcbnZhciBCWVRFX0xFTkdUSCA9ICdieXRlTGVuZ3RoJztcbnZhciBCWVRFX09GRlNFVCA9ICdieXRlT2Zmc2V0JztcbnZhciAkQlVGRkVSID0gREVTQ1JJUFRPUlMgPyAnX2InIDogQlVGRkVSO1xudmFyICRMRU5HVEggPSBERVNDUklQVE9SUyA/ICdfbCcgOiBCWVRFX0xFTkdUSDtcbnZhciAkT0ZGU0VUID0gREVTQ1JJUFRPUlMgPyAnX28nIDogQllURV9PRkZTRVQ7XG5cbi8vIElFRUU3NTQgY29udmVyc2lvbnMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9pZWVlNzU0XG5mdW5jdGlvbiBwYWNrSUVFRTc1NCh2YWx1ZSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBidWZmZXIgPSBuZXcgQXJyYXkobkJ5dGVzKTtcbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDE7XG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxO1xuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDE7XG4gIHZhciBydCA9IG1MZW4gPT09IDIzID8gcG93KDIsIC0yNCkgLSBwb3coMiwgLTc3KSA6IDA7XG4gIHZhciBpID0gMDtcbiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgdmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCA/IDEgOiAwO1xuICB2YXIgZSwgbSwgYztcbiAgdmFsdWUgPSBhYnModmFsdWUpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIGlmICh2YWx1ZSAhPSB2YWx1ZSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgbSA9IHZhbHVlICE9IHZhbHVlID8gMSA6IDA7XG4gICAgZSA9IGVNYXg7XG4gIH0gZWxzZSB7XG4gICAgZSA9IGZsb29yKGxvZyh2YWx1ZSkgLyBMTjIpO1xuICAgIGlmICh2YWx1ZSAqIChjID0gcG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS07XG4gICAgICBjICo9IDI7XG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIHBvdygyLCAxIC0gZUJpYXMpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrKztcbiAgICAgIGMgLz0gMjtcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMDtcbiAgICAgIGUgPSBlTWF4O1xuICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIG0gPSAodmFsdWUgKiBjIC0gMSkgKiBwb3coMiwgbUxlbik7XG4gICAgICBlID0gZSArIGVCaWFzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBwb3coMiwgZUJpYXMgLSAxKSAqIHBvdygyLCBtTGVuKTtcbiAgICAgIGUgPSAwO1xuICAgIH1cbiAgfVxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbaSsrXSA9IG0gJiAyNTUsIG0gLz0gMjU2LCBtTGVuIC09IDgpO1xuICBlID0gZSA8PCBtTGVuIHwgbTtcbiAgZUxlbiArPSBtTGVuO1xuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltpKytdID0gZSAmIDI1NSwgZSAvPSAyNTYsIGVMZW4gLT0gOCk7XG4gIGJ1ZmZlclstLWldIHw9IHMgKiAxMjg7XG4gIHJldHVybiBidWZmZXI7XG59XG5mdW5jdGlvbiB1bnBhY2tJRUVFNzU0KGJ1ZmZlciwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxO1xuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMTtcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxO1xuICB2YXIgbkJpdHMgPSBlTGVuIC0gNztcbiAgdmFyIGkgPSBuQnl0ZXMgLSAxO1xuICB2YXIgcyA9IGJ1ZmZlcltpLS1dO1xuICB2YXIgZSA9IHMgJiAxMjc7XG4gIHZhciBtO1xuICBzID4+PSA3O1xuICBmb3IgKDsgbkJpdHMgPiAwOyBlID0gZSAqIDI1NiArIGJ1ZmZlcltpXSwgaS0tLCBuQml0cyAtPSA4KTtcbiAgbSA9IGUgJiAoMSA8PCAtbkJpdHMpIC0gMTtcbiAgZSA+Pj0gLW5CaXRzO1xuICBuQml0cyArPSBtTGVuO1xuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gbSAqIDI1NiArIGJ1ZmZlcltpXSwgaS0tLCBuQml0cyAtPSA4KTtcbiAgaWYgKGUgPT09IDApIHtcbiAgICBlID0gMSAtIGVCaWFzO1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6IHMgPyAtSW5maW5pdHkgOiBJbmZpbml0eTtcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIHBvdygyLCBtTGVuKTtcbiAgICBlID0gZSAtIGVCaWFzO1xuICB9IHJldHVybiAocyA/IC0xIDogMSkgKiBtICogcG93KDIsIGUgLSBtTGVuKTtcbn1cblxuZnVuY3Rpb24gdW5wYWNrSTMyKGJ5dGVzKSB7XG4gIHJldHVybiBieXRlc1szXSA8PCAyNCB8IGJ5dGVzWzJdIDw8IDE2IHwgYnl0ZXNbMV0gPDwgOCB8IGJ5dGVzWzBdO1xufVxuZnVuY3Rpb24gcGFja0k4KGl0KSB7XG4gIHJldHVybiBbaXQgJiAweGZmXTtcbn1cbmZ1bmN0aW9uIHBhY2tJMTYoaXQpIHtcbiAgcmV0dXJuIFtpdCAmIDB4ZmYsIGl0ID4+IDggJiAweGZmXTtcbn1cbmZ1bmN0aW9uIHBhY2tJMzIoaXQpIHtcbiAgcmV0dXJuIFtpdCAmIDB4ZmYsIGl0ID4+IDggJiAweGZmLCBpdCA+PiAxNiAmIDB4ZmYsIGl0ID4+IDI0ICYgMHhmZl07XG59XG5mdW5jdGlvbiBwYWNrRjY0KGl0KSB7XG4gIHJldHVybiBwYWNrSUVFRTc1NChpdCwgNTIsIDgpO1xufVxuZnVuY3Rpb24gcGFja0YzMihpdCkge1xuICByZXR1cm4gcGFja0lFRUU3NTQoaXQsIDIzLCA0KTtcbn1cblxuZnVuY3Rpb24gYWRkR2V0dGVyKEMsIGtleSwgaW50ZXJuYWwpIHtcbiAgZFAoQ1tQUk9UT1RZUEVdLCBrZXksIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzW2ludGVybmFsXTsgfSB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0KHZpZXcsIGJ5dGVzLCBpbmRleCwgaXNMaXR0bGVFbmRpYW4pIHtcbiAgdmFyIG51bUluZGV4ID0gK2luZGV4O1xuICB2YXIgaW50SW5kZXggPSB0b0luZGV4KG51bUluZGV4KTtcbiAgaWYgKGludEluZGV4ICsgYnl0ZXMgPiB2aWV3WyRMRU5HVEhdKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0lOREVYKTtcbiAgdmFyIHN0b3JlID0gdmlld1skQlVGRkVSXS5fYjtcbiAgdmFyIHN0YXJ0ID0gaW50SW5kZXggKyB2aWV3WyRPRkZTRVRdO1xuICB2YXIgcGFjayA9IHN0b3JlLnNsaWNlKHN0YXJ0LCBzdGFydCArIGJ5dGVzKTtcbiAgcmV0dXJuIGlzTGl0dGxlRW5kaWFuID8gcGFjayA6IHBhY2sucmV2ZXJzZSgpO1xufVxuZnVuY3Rpb24gc2V0KHZpZXcsIGJ5dGVzLCBpbmRleCwgY29udmVyc2lvbiwgdmFsdWUsIGlzTGl0dGxlRW5kaWFuKSB7XG4gIHZhciBudW1JbmRleCA9ICtpbmRleDtcbiAgdmFyIGludEluZGV4ID0gdG9JbmRleChudW1JbmRleCk7XG4gIGlmIChpbnRJbmRleCArIGJ5dGVzID4gdmlld1skTEVOR1RIXSkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19JTkRFWCk7XG4gIHZhciBzdG9yZSA9IHZpZXdbJEJVRkZFUl0uX2I7XG4gIHZhciBzdGFydCA9IGludEluZGV4ICsgdmlld1skT0ZGU0VUXTtcbiAgdmFyIHBhY2sgPSBjb252ZXJzaW9uKCt2YWx1ZSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXM7IGkrKykgc3RvcmVbc3RhcnQgKyBpXSA9IHBhY2tbaXNMaXR0bGVFbmRpYW4gPyBpIDogYnl0ZXMgLSBpIC0gMV07XG59XG5cbmlmICghJHR5cGVkLkFCVikge1xuICAkQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiBBcnJheUJ1ZmZlcihsZW5ndGgpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRBcnJheUJ1ZmZlciwgQVJSQVlfQlVGRkVSKTtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRvSW5kZXgobGVuZ3RoKTtcbiAgICB0aGlzLl9iID0gYXJyYXlGaWxsLmNhbGwobmV3IEFycmF5KGJ5dGVMZW5ndGgpLCAwKTtcbiAgICB0aGlzWyRMRU5HVEhdID0gYnl0ZUxlbmd0aDtcbiAgfTtcblxuICAkRGF0YVZpZXcgPSBmdW5jdGlvbiBEYXRhVmlldyhidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICREYXRhVmlldywgREFUQV9WSUVXKTtcbiAgICBhbkluc3RhbmNlKGJ1ZmZlciwgJEFycmF5QnVmZmVyLCBEQVRBX1ZJRVcpO1xuICAgIHZhciBidWZmZXJMZW5ndGggPSBidWZmZXJbJExFTkdUSF07XG4gICAgdmFyIG9mZnNldCA9IHRvSW50ZWdlcihieXRlT2Zmc2V0KTtcbiAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgPiBidWZmZXJMZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoJ1dyb25nIG9mZnNldCEnKTtcbiAgICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA9PT0gdW5kZWZpbmVkID8gYnVmZmVyTGVuZ3RoIC0gb2Zmc2V0IDogdG9MZW5ndGgoYnl0ZUxlbmd0aCk7XG4gICAgaWYgKG9mZnNldCArIGJ5dGVMZW5ndGggPiBidWZmZXJMZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICB0aGlzWyRCVUZGRVJdID0gYnVmZmVyO1xuICAgIHRoaXNbJE9GRlNFVF0gPSBvZmZzZXQ7XG4gICAgdGhpc1skTEVOR1RIXSA9IGJ5dGVMZW5ndGg7XG4gIH07XG5cbiAgaWYgKERFU0NSSVBUT1JTKSB7XG4gICAgYWRkR2V0dGVyKCRBcnJheUJ1ZmZlciwgQllURV9MRU5HVEgsICdfbCcpO1xuICAgIGFkZEdldHRlcigkRGF0YVZpZXcsIEJVRkZFUiwgJ19iJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgQllURV9MRU5HVEgsICdfbCcpO1xuICAgIGFkZEdldHRlcigkRGF0YVZpZXcsIEJZVEVfT0ZGU0VULCAnX28nKTtcbiAgfVxuXG4gIHJlZGVmaW5lQWxsKCREYXRhVmlld1tQUk9UT1RZUEVdLCB7XG4gICAgZ2V0SW50ODogZnVuY3Rpb24gZ2V0SW50OChieXRlT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gZ2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQpWzBdIDw8IDI0ID4+IDI0O1xuICAgIH0sXG4gICAgZ2V0VWludDg6IGZ1bmN0aW9uIGdldFVpbnQ4KGJ5dGVPZmZzZXQpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcywgMSwgYnl0ZU9mZnNldClbMF07XG4gICAgfSxcbiAgICBnZXRJbnQxNjogZnVuY3Rpb24gZ2V0SW50MTYoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgdmFyIGJ5dGVzID0gZ2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSk7XG4gICAgICByZXR1cm4gKGJ5dGVzWzFdIDw8IDggfCBieXRlc1swXSkgPDwgMTYgPj4gMTY7XG4gICAgfSxcbiAgICBnZXRVaW50MTY6IGZ1bmN0aW9uIGdldFVpbnQxNihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICB2YXIgYnl0ZXMgPSBnZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKTtcbiAgICAgIHJldHVybiBieXRlc1sxXSA8PCA4IHwgYnl0ZXNbMF07XG4gICAgfSxcbiAgICBnZXRJbnQzMjogZnVuY3Rpb24gZ2V0SW50MzIoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0kzMihnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSk7XG4gICAgfSxcbiAgICBnZXRVaW50MzI6IGZ1bmN0aW9uIGdldFVpbnQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSTMyKGdldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pKSA+Pj4gMDtcbiAgICB9LFxuICAgIGdldEZsb2F0MzI6IGZ1bmN0aW9uIGdldEZsb2F0MzIoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0lFRUU3NTQoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSksIDIzLCA0KTtcbiAgICB9LFxuICAgIGdldEZsb2F0NjQ6IGZ1bmN0aW9uIGdldEZsb2F0NjQoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0lFRUU3NTQoZ2V0KHRoaXMsIDgsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSksIDUyLCA4KTtcbiAgICB9LFxuICAgIHNldEludDg6IGZ1bmN0aW9uIHNldEludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgIHNldCh0aGlzLCAxLCBieXRlT2Zmc2V0LCBwYWNrSTgsIHZhbHVlKTtcbiAgICB9LFxuICAgIHNldFVpbnQ4OiBmdW5jdGlvbiBzZXRVaW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgc2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQsIHBhY2tJOCwgdmFsdWUpO1xuICAgIH0sXG4gICAgc2V0SW50MTY6IGZ1bmN0aW9uIHNldEludDE2KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgcGFja0kxNiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRVaW50MTY6IGZ1bmN0aW9uIHNldFVpbnQxNihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIHBhY2tJMTYsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0SW50MzI6IGZ1bmN0aW9uIHNldEludDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0kzMiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRVaW50MzI6IGZ1bmN0aW9uIHNldFVpbnQzMihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tJMzIsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0RmxvYXQzMjogZnVuY3Rpb24gc2V0RmxvYXQzMihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tGMzIsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0RmxvYXQ2NDogZnVuY3Rpb24gc2V0RmxvYXQ2NChieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDgsIGJ5dGVPZmZzZXQsIHBhY2tGNjQsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH1cbiAgfSk7XG59IGVsc2Uge1xuICBpZiAoIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAkQXJyYXlCdWZmZXIoMSk7XG4gIH0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgbmV3ICRBcnJheUJ1ZmZlcigtMSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gIH0pIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgJEFycmF5QnVmZmVyKCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbmV3ICRBcnJheUJ1ZmZlcigxLjUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5ldyAkQXJyYXlCdWZmZXIoTmFOKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICByZXR1cm4gJEFycmF5QnVmZmVyLm5hbWUgIT0gQVJSQVlfQlVGRkVSO1xuICB9KSkge1xuICAgICRBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIEFycmF5QnVmZmVyKGxlbmd0aCkge1xuICAgICAgYW5JbnN0YW5jZSh0aGlzLCAkQXJyYXlCdWZmZXIpO1xuICAgICAgcmV0dXJuIG5ldyBCYXNlQnVmZmVyKHRvSW5kZXgobGVuZ3RoKSk7XG4gICAgfTtcbiAgICB2YXIgQXJyYXlCdWZmZXJQcm90byA9ICRBcnJheUJ1ZmZlcltQUk9UT1RZUEVdID0gQmFzZUJ1ZmZlcltQUk9UT1RZUEVdO1xuICAgIGZvciAodmFyIGtleXMgPSBnT1BOKEJhc2VCdWZmZXIpLCBqID0gMCwga2V5OyBrZXlzLmxlbmd0aCA+IGo7KSB7XG4gICAgICBpZiAoISgoa2V5ID0ga2V5c1tqKytdKSBpbiAkQXJyYXlCdWZmZXIpKSBoaWRlKCRBcnJheUJ1ZmZlciwga2V5LCBCYXNlQnVmZmVyW2tleV0pO1xuICAgIH1cbiAgICBpZiAoIUxJQlJBUlkpIEFycmF5QnVmZmVyUHJvdG8uY29uc3RydWN0b3IgPSAkQXJyYXlCdWZmZXI7XG4gIH1cbiAgLy8gaU9TIFNhZmFyaSA3LnggYnVnXG4gIHZhciB2aWV3ID0gbmV3ICREYXRhVmlldyhuZXcgJEFycmF5QnVmZmVyKDIpKTtcbiAgdmFyICRzZXRJbnQ4ID0gJERhdGFWaWV3W1BST1RPVFlQRV0uc2V0SW50ODtcbiAgdmlldy5zZXRJbnQ4KDAsIDIxNDc0ODM2NDgpO1xuICB2aWV3LnNldEludDgoMSwgMjE0NzQ4MzY0OSk7XG4gIGlmICh2aWV3LmdldEludDgoMCkgfHwgIXZpZXcuZ2V0SW50OCgxKSkgcmVkZWZpbmVBbGwoJERhdGFWaWV3W1BST1RPVFlQRV0sIHtcbiAgICBzZXRJbnQ4OiBmdW5jdGlvbiBzZXRJbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICAkc2V0SW50OC5jYWxsKHRoaXMsIGJ5dGVPZmZzZXQsIHZhbHVlIDw8IDI0ID4+IDI0KTtcbiAgICB9LFxuICAgIHNldFVpbnQ4OiBmdW5jdGlvbiBzZXRVaW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgJHNldEludDguY2FsbCh0aGlzLCBieXRlT2Zmc2V0LCB2YWx1ZSA8PCAyNCA+PiAyNCk7XG4gICAgfVxuICB9LCB0cnVlKTtcbn1cbnNldFRvU3RyaW5nVGFnKCRBcnJheUJ1ZmZlciwgQVJSQVlfQlVGRkVSKTtcbnNldFRvU3RyaW5nVGFnKCREYXRhVmlldywgREFUQV9WSUVXKTtcbmhpZGUoJERhdGFWaWV3W1BST1RPVFlQRV0sICR0eXBlZC5WSUVXLCB0cnVlKTtcbmV4cG9ydHNbQVJSQVlfQlVGRkVSXSA9ICRBcnJheUJ1ZmZlcjtcbmV4cG9ydHNbREFUQV9WSUVXXSA9ICREYXRhVmlldztcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC12YWx1ZXMtZW50cmllc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZW50cmllcyA9IHJlcXVpcmUoJy4vX29iamVjdC10by1hcnJheScpKHRydWUpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtcbiAgZW50cmllczogZnVuY3Rpb24gZW50cmllcyhpdCkge1xuICAgIHJldHVybiAkZW50cmllcyhpdCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIGVuY29kZSh2YWwpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh2YWwpLlxuICAgIHJlcGxhY2UoLyUzQS9naSwgJzonKS5cbiAgICByZXBsYWNlKC8lMjQvZywgJyQnKS5cbiAgICByZXBsYWNlKC8lMkMvZ2ksICcsJykuXG4gICAgcmVwbGFjZSgvJTIwL2csICcrJykuXG4gICAgcmVwbGFjZSgvJTVCL2dpLCAnWycpLlxuICAgIHJlcGxhY2UoLyU1RC9naSwgJ10nKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIFVSTCBieSBhcHBlbmRpbmcgcGFyYW1zIHRvIHRoZSBlbmRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBiYXNlIG9mIHRoZSB1cmwgKGUuZy4sIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbSlcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBUaGUgcGFyYW1zIHRvIGJlIGFwcGVuZGVkXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIHVybFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJ1aWxkVVJMKHVybCwgcGFyYW1zLCBwYXJhbXNTZXJpYWxpemVyKSB7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICBpZiAoIXBhcmFtcykge1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICB2YXIgc2VyaWFsaXplZFBhcmFtcztcbiAgaWYgKHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFyYW1zU2VyaWFsaXplcihwYXJhbXMpO1xuICB9IGVsc2UgaWYgKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykpIHtcbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhcnRzID0gW107XG5cbiAgICB1dGlscy5mb3JFYWNoKHBhcmFtcywgZnVuY3Rpb24gc2VyaWFsaXplKHZhbCwga2V5KSB7XG4gICAgICBpZiAodmFsID09PSBudWxsIHx8IHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHV0aWxzLmlzQXJyYXkodmFsKSkge1xuICAgICAgICBrZXkgPSBrZXkgKyAnW10nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gW3ZhbF07XG4gICAgICB9XG5cbiAgICAgIHV0aWxzLmZvckVhY2godmFsLCBmdW5jdGlvbiBwYXJzZVZhbHVlKHYpIHtcbiAgICAgICAgaWYgKHV0aWxzLmlzRGF0ZSh2KSkge1xuICAgICAgICAgIHYgPSB2LnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodXRpbHMuaXNPYmplY3QodikpIHtcbiAgICAgICAgICB2ID0gSlNPTi5zdHJpbmdpZnkodik7XG4gICAgICAgIH1cbiAgICAgICAgcGFydHMucHVzaChlbmNvZGUoa2V5KSArICc9JyArIGVuY29kZSh2KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJ0cy5qb2luKCcmJyk7XG4gIH1cblxuICBpZiAoc2VyaWFsaXplZFBhcmFtcykge1xuICAgIHZhciBoYXNobWFya0luZGV4ID0gdXJsLmluZGV4T2YoJyMnKTtcbiAgICBpZiAoaGFzaG1hcmtJbmRleCAhPT0gLTEpIHtcbiAgICAgIHVybCA9IHVybC5zbGljZSgwLCBoYXNobWFya0luZGV4KTtcbiAgICB9XG5cbiAgICB1cmwgKz0gKHVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArIHNlcmlhbGl6ZWRQYXJhbXM7XG4gIH1cblxuICByZXR1cm4gdXJsO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVuaGFuY2VFcnJvciA9IHJlcXVpcmUoJy4vZW5oYW5jZUVycm9yJyk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlLCBjb25maWcsIGVycm9yIGNvZGUsIHJlcXVlc3QgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUVycm9yKG1lc3NhZ2UsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZW5oYW5jZUVycm9yKGVycm9yLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJodHRwXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImh0dHBzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCIvKipcbiAqIE11bHRpaGFzaCBpbXBsZW1lbnRhdGlvbiBpbiBKYXZhU2NyaXB0LlxuICpcbiAqIEBtb2R1bGUgbXVsdGloYXNoXG4gKi9cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBiczU4ID0gcmVxdWlyZSgnYnM1OCcpXG5cbmNvbnN0IGNzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuXG5leHBvcnRzLm5hbWVzID0gY3MubmFtZXNcbmV4cG9ydHMuY29kZXMgPSBjcy5jb2Rlc1xuZXhwb3J0cy5kZWZhdWx0TGVuZ3RocyA9IGNzLmRlZmF1bHRMZW5ndGhzXG5cbmNvbnN0IHZhcmludCA9IHJlcXVpcmUoJ3ZhcmludCcpXG5cbi8qKlxuICogQ29udmVydCB0aGUgZ2l2ZW4gbXVsdGloYXNoIHRvIGEgaGV4IGVuY29kZWQgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBoYXNoXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnRzLnRvSGV4U3RyaW5nID0gZnVuY3Rpb24gdG9IZXhTdHJpbmcgKGhhc2gpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoaGFzaCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ211c3QgYmUgcGFzc2VkIGEgYnVmZmVyJylcbiAgfVxuXG4gIHJldHVybiBoYXNoLnRvU3RyaW5nKCdoZXgnKVxufVxuXG4vKipcbiAqIENvbnZlcnQgdGhlIGdpdmVuIGhleCBlbmNvZGVkIHN0cmluZyB0byBhIG11bHRpaGFzaC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaFxuICogQHJldHVybnMge0J1ZmZlcn1cbiAqL1xuZXhwb3J0cy5mcm9tSGV4U3RyaW5nID0gZnVuY3Rpb24gZnJvbUhleFN0cmluZyAoaGFzaCkge1xuICByZXR1cm4gQnVmZmVyLmZyb20oaGFzaCwgJ2hleCcpXG59XG5cbi8qKlxuICogQ29udmVydCB0aGUgZ2l2ZW4gbXVsdGloYXNoIHRvIGEgYmFzZTU4IGVuY29kZWQgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBoYXNoXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnRzLnRvQjU4U3RyaW5nID0gZnVuY3Rpb24gdG9CNThTdHJpbmcgKGhhc2gpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoaGFzaCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ211c3QgYmUgcGFzc2VkIGEgYnVmZmVyJylcbiAgfVxuXG4gIHJldHVybiBiczU4LmVuY29kZShoYXNoKVxufVxuXG4vKipcbiAqIENvbnZlcnQgdGhlIGdpdmVuIGJhc2U1OCBlbmNvZGVkIHN0cmluZyB0byBhIG11bHRpaGFzaC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xCdWZmZXJ9IGhhc2hcbiAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gKi9cbmV4cG9ydHMuZnJvbUI1OFN0cmluZyA9IGZ1bmN0aW9uIGZyb21CNThTdHJpbmcgKGhhc2gpIHtcbiAgbGV0IGVuY29kZWQgPSBoYXNoXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoaGFzaCkpIHtcbiAgICBlbmNvZGVkID0gaGFzaC50b1N0cmluZygpXG4gIH1cblxuICByZXR1cm4gQnVmZmVyLmZyb20oYnM1OC5kZWNvZGUoZW5jb2RlZCkpXG59XG5cbi8qKlxuICogRGVjb2RlIGEgaGFzaCBmcm9tIHRoZSBnaXZlbiBtdWx0aWhhc2guXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZlxuICogQHJldHVybnMge3tjb2RlOiBudW1iZXIsIG5hbWU6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIsIGRpZ2VzdDogQnVmZmVyfX0gcmVzdWx0XG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlIChidWYpIHtcbiAgaWYgKCEoQnVmZmVyLmlzQnVmZmVyKGJ1ZikpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtdWx0aWhhc2ggbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIH1cblxuICBpZiAoYnVmLmxlbmd0aCA8IDMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ211bHRpaGFzaCB0b28gc2hvcnQuIG11c3QgYmUgPiAzIGJ5dGVzLicpXG4gIH1cblxuICBjb25zdCBjb2RlID0gdmFyaW50LmRlY29kZShidWYpXG4gIGlmICghZXhwb3J0cy5pc1ZhbGlkQ29kZShjb2RlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgbXVsdGloYXNoIHVua25vd24gZnVuY3Rpb24gY29kZTogMHgke2NvZGUudG9TdHJpbmcoMTYpfWApXG4gIH1cbiAgYnVmID0gYnVmLnNsaWNlKHZhcmludC5kZWNvZGUuYnl0ZXMpXG5cbiAgY29uc3QgbGVuID0gdmFyaW50LmRlY29kZShidWYpXG4gIGlmIChsZW4gPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtdWx0aWhhc2ggaW52YWxpZCBsZW5ndGg6IDB4JHtsZW4udG9TdHJpbmcoMTYpfWApXG4gIH1cbiAgYnVmID0gYnVmLnNsaWNlKHZhcmludC5kZWNvZGUuYnl0ZXMpXG5cbiAgaWYgKGJ1Zi5sZW5ndGggIT09IGxlbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgbXVsdGloYXNoIGxlbmd0aCBpbmNvbnNpc3RlbnQ6IDB4JHtidWYudG9TdHJpbmcoJ2hleCcpfWApXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNvZGU6IGNvZGUsXG4gICAgbmFtZTogY3MuY29kZXNbY29kZV0sXG4gICAgbGVuZ3RoOiBsZW4sXG4gICAgZGlnZXN0OiBidWZcbiAgfVxufVxuXG4vKipcbiAqICBFbmNvZGUgYSBoYXNoIGRpZ2VzdCBhbG9uZyB3aXRoIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gY29kZS5cbiAqXG4gKiA+ICoqTm90ZToqKiB0aGUgbGVuZ3RoIGlzIGRlcml2ZWQgZnJvbSB0aGUgbGVuZ3RoIG9mIHRoZSBkaWdlc3QgaXRzZWxmLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBkaWdlc3RcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gY29kZVxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGhdXG4gKiBAcmV0dXJucyB7QnVmZmVyfVxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZSAoZGlnZXN0LCBjb2RlLCBsZW5ndGgpIHtcbiAgaWYgKCFkaWdlc3QgfHwgY29kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtdWx0aWhhc2ggZW5jb2RlIHJlcXVpcmVzIGF0IGxlYXN0IHR3byBhcmdzOiBkaWdlc3QsIGNvZGUnKVxuICB9XG5cbiAgLy8gZW5zdXJlIGl0J3MgYSBoYXNoZnVuY3Rpb24gY29kZS5cbiAgY29uc3QgaGFzaGZuID0gZXhwb3J0cy5jb2VyY2VDb2RlKGNvZGUpXG5cbiAgaWYgKCEoQnVmZmVyLmlzQnVmZmVyKGRpZ2VzdCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkaWdlc3Qgc2hvdWxkIGJlIGEgQnVmZmVyJylcbiAgfVxuXG4gIGlmIChsZW5ndGggPT0gbnVsbCkge1xuICAgIGxlbmd0aCA9IGRpZ2VzdC5sZW5ndGhcbiAgfVxuXG4gIGlmIChsZW5ndGggJiYgZGlnZXN0Lmxlbmd0aCAhPT0gbGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkaWdlc3QgbGVuZ3RoIHNob3VsZCBiZSBlcXVhbCB0byBzcGVjaWZpZWQgbGVuZ3RoLicpXG4gIH1cblxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChbXG4gICAgQnVmZmVyLmZyb20odmFyaW50LmVuY29kZShoYXNoZm4pKSxcbiAgICBCdWZmZXIuZnJvbSh2YXJpbnQuZW5jb2RlKGxlbmd0aCkpLFxuICAgIGRpZ2VzdFxuICBdKVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgaGFzaCBmdW5jdGlvbiBuYW1lIGludG8gdGhlIG1hdGNoaW5nIGNvZGUuXG4gKiBJZiBwYXNzZWQgYSBudW1iZXIgaXQgd2lsbCByZXR1cm4gdGhlIG51bWJlciBpZiBpdCdzIGEgdmFsaWQgY29kZS5cbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gbmFtZVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0cy5jb2VyY2VDb2RlID0gZnVuY3Rpb24gY29lcmNlQ29kZSAobmFtZSkge1xuICBsZXQgY29kZSA9IG5hbWVcblxuICBpZiAodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKGNzLm5hbWVzW25hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGhhc2ggZnVuY3Rpb24gbmFtZWQ6ICR7bmFtZX1gKVxuICAgIH1cbiAgICBjb2RlID0gY3MubmFtZXNbbmFtZV1cbiAgfVxuXG4gIGlmICh0eXBlb2YgY29kZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEhhc2ggZnVuY3Rpb24gY29kZSBzaG91bGQgYmUgYSBudW1iZXIuIEdvdDogJHtjb2RlfWApXG4gIH1cblxuICBpZiAoY3MuY29kZXNbY29kZV0gPT09IHVuZGVmaW5lZCAmJiAhZXhwb3J0cy5pc0FwcENvZGUoY29kZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBmdW5jdGlvbiBjb2RlOiAke2NvZGV9YClcbiAgfVxuXG4gIHJldHVybiBjb2RlXG59XG5cbi8qKlxuICogQ2hlY2tzIHdldGhlciBhIGNvZGUgaXMgcGFydCBvZiB0aGUgYXBwIHJhbmdlXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGNvZGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnRzLmlzQXBwQ29kZSA9IGZ1bmN0aW9uIGFwcENvZGUgKGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgPiAwICYmIGNvZGUgPCAweDEwXG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBtdWx0aWhhc2ggY29kZSBpcyB2YWxpZC5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gY29kZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydHMuaXNWYWxpZENvZGUgPSBmdW5jdGlvbiB2YWxpZENvZGUgKGNvZGUpIHtcbiAgaWYgKGV4cG9ydHMuaXNBcHBDb2RlKGNvZGUpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmIChjcy5jb2Rlc1tjb2RlXSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgdmFsaWQgbXVsdGloYXNoLiBUaHJvd3MgYW4gZXJyb3IgaWYgaXQgaXMgbm90IHZhbGlkLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBtdWx0aWhhc2hcbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKiBAdGhyb3dzIHtFcnJvcn1cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGUgKG11bHRpaGFzaCkge1xuICBleHBvcnRzLmRlY29kZShtdWx0aWhhc2gpIC8vIHRocm93cyBpZiBiYWQuXG59XG5leHBvcnRzLnZhbGlkYXRlID0gdmFsaWRhdGVcblxuLyoqXG4gKiBSZXR1cm5zIGEgcHJlZml4IGZyb20gYSB2YWxpZCBtdWx0aWhhc2guIFRocm93cyBhbiBlcnJvciBpZiBpdCBpcyBub3QgdmFsaWQuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IG11bHRpaGFzaFxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqIEB0aHJvd3Mge0Vycm9yfVxuICovXG5leHBvcnRzLnByZWZpeCA9IGZ1bmN0aW9uIHByZWZpeCAobXVsdGloYXNoKSB7XG4gIHZhbGlkYXRlKG11bHRpaGFzaClcblxuICByZXR1cm4gbXVsdGloYXNoLnNsaWNlKDAsIDIpXG59XG4iLCIndXNlIHN0cmljdCdcblxuZnVuY3Rpb24gUHJvdG9jb2xzIChwcm90bykge1xuICBpZiAodHlwZW9mIChwcm90bykgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKFByb3RvY29scy5jb2Rlc1twcm90b10pIHtcbiAgICAgIHJldHVybiBQcm90b2NvbHMuY29kZXNbcHJvdG9dXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdubyBwcm90b2NvbCB3aXRoIGNvZGU6ICcgKyBwcm90bylcbiAgfSBlbHNlIGlmICh0eXBlb2YgKHByb3RvKSA9PT0gJ3N0cmluZycgfHwgcHJvdG8gaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICBpZiAoUHJvdG9jb2xzLm5hbWVzW3Byb3RvXSkge1xuICAgICAgcmV0dXJuIFByb3RvY29scy5uYW1lc1twcm90b11cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIHByb3RvY29sIHdpdGggbmFtZTogJyArIHByb3RvKVxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHByb3RvY29sIGlkIHR5cGU6ICcgKyBwcm90bylcbn1cblxuY29uc3QgViA9IC0xXG5Qcm90b2NvbHMubGVuZ3RoUHJlZml4ZWRWYXJTaXplID0gVlxuUHJvdG9jb2xzLlYgPSBWXG5cblByb3RvY29scy50YWJsZSA9IFtcbiAgWzQsIDMyLCAnaXA0J10sXG4gIFs2LCAxNiwgJ3RjcCddLFxuICBbMzMsIDE2LCAnZGNjcCddLFxuICBbNDEsIDEyOCwgJ2lwNiddLFxuICBbNDIsIFYsICdpcDZ6b25lJ10sXG4gIFs1MywgViwgJ2RucycsICdyZXNvbHZhYmxlJ10sXG4gIFs1NCwgViwgJ2RuczQnLCAncmVzb2x2YWJsZSddLFxuICBbNTUsIFYsICdkbnM2JywgJ3Jlc29sdmFibGUnXSxcbiAgWzU2LCBWLCAnZG5zYWRkcicsICdyZXNvbHZhYmxlJ10sXG4gIFsxMzIsIDE2LCAnc2N0cCddLFxuICBbMjczLCAxNiwgJ3VkcCddLFxuICBbMjc1LCAwLCAncDJwLXdlYnJ0Yy1zdGFyJ10sXG4gIFsyNzYsIDAsICdwMnAtd2VicnRjLWRpcmVjdCddLFxuICBbMjc3LCAwLCAncDJwLXN0YXJkdXN0J10sXG4gIFsyOTAsIDAsICdwMnAtY2lyY3VpdCddLFxuICBbMzAxLCAwLCAndWR0J10sXG4gIFszMDIsIDAsICd1dHAnXSxcbiAgWzQwMCwgViwgJ3VuaXgnLCBmYWxzZSwgJ3BhdGgnXSxcbiAgLy8gYGlwZnNgIGlzIGFkZGVkIGJlZm9yZSBgcDJwYCBmb3IgbGVnYWN5IHN1cHBvcnQuXG4gIC8vIEFsbCB0ZXh0IHJlcHJlc2VudGF0aW9ucyB3aWxsIGRlZmF1bHQgdG8gYHAycGAsIGJ1dCBgaXBmc2Agd2lsbFxuICAvLyBzdGlsbCBiZSBzdXBwb3J0ZWRcbiAgWzQyMSwgViwgJ2lwZnMnXSxcbiAgLy8gYHAycGAgaXMgdGhlIHByZWZlcnJlZCBuYW1lIGZvciA0MjEsIGFuZCBpcyBub3cgdGhlIGRlZmF1bHRcbiAgWzQyMSwgViwgJ3AycCddLFxuICBbNDQzLCAwLCAnaHR0cHMnXSxcbiAgWzQ0NCwgOTYsICdvbmlvbiddLFxuICBbNDQ1LCAyOTYsICdvbmlvbjMnXSxcbiAgWzQ0NiwgViwgJ2dhcmxpYzY0J10sXG4gIFs0NjAsIDAsICdxdWljJ10sXG4gIFs0NzcsIDAsICd3cyddLFxuICBbNDc4LCAwLCAnd3NzJ10sXG4gIFs0NzksIDAsICdwMnAtd2Vic29ja2V0LXN0YXInXSxcbiAgWzQ4MCwgMCwgJ2h0dHAnXVxuXVxuXG5Qcm90b2NvbHMubmFtZXMgPSB7fVxuUHJvdG9jb2xzLmNvZGVzID0ge31cblxuLy8gcG9wdWxhdGUgdGFibGVzXG5Qcm90b2NvbHMudGFibGUubWFwKHJvdyA9PiB7XG4gIGNvbnN0IHByb3RvID0gcC5hcHBseShudWxsLCByb3cpXG4gIFByb3RvY29scy5jb2Rlc1twcm90by5jb2RlXSA9IHByb3RvXG4gIFByb3RvY29scy5uYW1lc1twcm90by5uYW1lXSA9IHByb3RvXG59KVxuXG5Qcm90b2NvbHMub2JqZWN0ID0gcFxuXG5mdW5jdGlvbiBwIChjb2RlLCBzaXplLCBuYW1lLCByZXNvbHZhYmxlLCBwYXRoKSB7XG4gIHJldHVybiB7XG4gICAgY29kZTogY29kZSxcbiAgICBzaXplOiBzaXplLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgcmVzb2x2YWJsZTogQm9vbGVhbihyZXNvbHZhYmxlKSxcbiAgICBwYXRoOiBCb29sZWFuKHBhdGgpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQcm90b2NvbHNcbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBtaCA9IHJlcXVpcmUoJ211bHRpaGFzaGVzJylcbmNvbnN0IG11bHRpYmFzZSA9IHJlcXVpcmUoJ211bHRpYmFzZScpXG5jb25zdCBtdWx0aWNvZGVjID0gcmVxdWlyZSgnbXVsdGljb2RlYycpXG5jb25zdCBjb2RlY3MgPSByZXF1aXJlKCdtdWx0aWNvZGVjL3NyYy9iYXNlLXRhYmxlLmpzb24nKVxuY29uc3QgQ0lEVXRpbCA9IHJlcXVpcmUoJy4vY2lkLXV0aWwnKVxuY29uc3Qgd2l0aElzID0gcmVxdWlyZSgnY2xhc3MtaXMnKVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNlcmlhbGl6ZWRDSURcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlY1xuICogQHBhcmFtIHtudW1iZXJ9IHZlcnNpb25cbiAqIEBwYXJhbSB7QnVmZmVyfSBtdWx0aWhhc2hcbiAqL1xuXG4vKipcbiAqIFRlc3QgaWYgdGhlIGdpdmVuIGlucHV0IGlzIGEgQ0lELlxuICogQGZ1bmN0aW9uIGlzQ0lEXG4gKiBAbWVtYmVyb2YgQ0lEXG4gKiBAc3RhdGljXG4gKiBAcGFyYW0ge2FueX0gb3RoZXJcbiAqIEByZXR1cm5zIHtib29sfVxuICovXG5cbi8qKlxuICogQ2xhc3MgcmVwcmVzZW50aW5nIGEgQ0lEIGA8bWJhc2U+PHZlcnNpb24+PG1jb2RlYz48bWhhc2g+YFxuICogLCBhcyBkZWZpbmVkIGluIFtpcGxkL2NpZF0oaHR0cHM6Ly9naXRodWIuY29tL211bHRpZm9ybWF0cy9jaWQpLlxuICogQGNsYXNzIENJRFxuICovXG5jbGFzcyBDSUQge1xuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IENJRC5cbiAgICpcbiAgICogVGhlIGFsZ29yaXRobSBmb3IgYXJndW1lbnQgaW5wdXQgaXMgcm91Z2hseTpcbiAgICogYGBgXG4gICAqIGlmIChjaWQpXG4gICAqICAgLT4gY3JlYXRlIGEgY29weVxuICAgKiBlbHNlIGlmIChzdHIpXG4gICAqICAgaWYgKDFzdCBjaGFyIGlzIG9uIG11bHRpYmFzZSB0YWJsZSkgLT4gQ0lEIFN0cmluZ1xuICAgKiAgIGVsc2UgLT4gYnM1OCBlbmNvZGVkIG11bHRpaGFzaFxuICAgKiBlbHNlIGlmIChCdWZmZXIpXG4gICAqICAgaWYgKDFzdCBieXRlIGlzIDAgb3IgMSkgLT4gQ0lEXG4gICAqICAgZWxzZSAtPiBtdWx0aWhhc2hcbiAgICogZWxzZSBpZiAoTnVtYmVyKVxuICAgKiAgIC0+IGNvbnN0cnVjdCBDSUQgYnkgcGFydHNcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfEJ1ZmZlcnxDSUR9IHZlcnNpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlY11cbiAgICogQHBhcmFtIHtCdWZmZXJ9IFttdWx0aWhhc2hdXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbXVsdGliYXNlTmFtZV1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogbmV3IENJRCg8dmVyc2lvbj4sIDxjb2RlYz4sIDxtdWx0aWhhc2g+LCA8bXVsdGliYXNlTmFtZT4pXG4gICAqIG5ldyBDSUQoPGNpZFN0cj4pXG4gICAqIG5ldyBDSUQoPGNpZC5idWZmZXI+KVxuICAgKiBuZXcgQ0lEKDxtdWx0aWhhc2g+KVxuICAgKiBuZXcgQ0lEKDxiczU4IGVuY29kZWQgbXVsdGloYXNoPilcbiAgICogbmV3IENJRCg8Y2lkPilcbiAgICovXG4gIGNvbnN0cnVjdG9yICh2ZXJzaW9uLCBjb2RlYywgbXVsdGloYXNoLCBtdWx0aWJhc2VOYW1lKSB7XG4gICAgaWYgKF9DSUQuaXNDSUQodmVyc2lvbikpIHtcbiAgICAgIC8vIHZlcnNpb24gaXMgYW4gZXhpc2luZyBDSUQgaW5zdGFuY2VcbiAgICAgIGNvbnN0IGNpZCA9IHZlcnNpb25cbiAgICAgIHRoaXMudmVyc2lvbiA9IGNpZC52ZXJzaW9uXG4gICAgICB0aGlzLmNvZGVjID0gY2lkLmNvZGVjXG4gICAgICB0aGlzLm11bHRpaGFzaCA9IEJ1ZmZlci5mcm9tKGNpZC5tdWx0aWhhc2gpXG4gICAgICAvLyBEZWZhdWx0IGd1YXJkIGZvciB3aGVuIGEgQ0lEIDwgMC43IGlzIHBhc3NlZCB3aXRoIG5vIG11bHRpYmFzZU5hbWVcbiAgICAgIHRoaXMubXVsdGliYXNlTmFtZSA9IGNpZC5tdWx0aWJhc2VOYW1lIHx8IChjaWQudmVyc2lvbiA9PT0gMCA/ICdiYXNlNThidGMnIDogJ2Jhc2UzMicpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZlcnNpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBlLmcuICdiYXNlMzInIG9yIGZhbHNlXG4gICAgICBjb25zdCBiYXNlTmFtZSA9IG11bHRpYmFzZS5pc0VuY29kZWQodmVyc2lvbilcbiAgICAgIGlmIChiYXNlTmFtZSkge1xuICAgICAgICAvLyB2ZXJzaW9uIGlzIGEgQ0lEIFN0cmluZyBlbmNvZGVkIHdpdGggbXVsdGliYXNlLCBzbyB2MVxuICAgICAgICBjb25zdCBjaWQgPSBtdWx0aWJhc2UuZGVjb2RlKHZlcnNpb24pXG4gICAgICAgIHRoaXMudmVyc2lvbiA9IHBhcnNlSW50KGNpZC5zbGljZSgwLCAxKS50b1N0cmluZygnaGV4JyksIDE2KVxuICAgICAgICB0aGlzLmNvZGVjID0gbXVsdGljb2RlYy5nZXRDb2RlYyhjaWQuc2xpY2UoMSkpXG4gICAgICAgIHRoaXMubXVsdGloYXNoID0gbXVsdGljb2RlYy5ybVByZWZpeChjaWQuc2xpY2UoMSkpXG4gICAgICAgIHRoaXMubXVsdGliYXNlTmFtZSA9IGJhc2VOYW1lXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB2ZXJzaW9uIGlzIGEgYmFzZTU4YnRjIHN0cmluZyBtdWx0aWhhc2gsIHNvIHYwXG4gICAgICAgIHRoaXMudmVyc2lvbiA9IDBcbiAgICAgICAgdGhpcy5jb2RlYyA9ICdkYWctcGInXG4gICAgICAgIHRoaXMubXVsdGloYXNoID0gbWguZnJvbUI1OFN0cmluZyh2ZXJzaW9uKVxuICAgICAgICB0aGlzLm11bHRpYmFzZU5hbWUgPSAnYmFzZTU4YnRjJ1xuICAgICAgfVxuICAgICAgQ0lELnZhbGlkYXRlQ0lEKHRoaXMpXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3N0cmluZycsIHsgdmFsdWU6IHZlcnNpb24gfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChCdWZmZXIuaXNCdWZmZXIodmVyc2lvbikpIHtcbiAgICAgIGNvbnN0IGZpcnN0Qnl0ZSA9IHZlcnNpb24uc2xpY2UoMCwgMSlcbiAgICAgIGNvbnN0IHYgPSBwYXJzZUludChmaXJzdEJ5dGUudG9TdHJpbmcoJ2hleCcpLCAxNilcbiAgICAgIGlmICh2ID09PSAxKSB7XG4gICAgICAgIC8vIHZlcnNpb24gaXMgYSBDSUQgYnVmZmVyXG4gICAgICAgIGNvbnN0IGNpZCA9IHZlcnNpb25cbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdlxuICAgICAgICB0aGlzLmNvZGVjID0gbXVsdGljb2RlYy5nZXRDb2RlYyhjaWQuc2xpY2UoMSkpXG4gICAgICAgIHRoaXMubXVsdGloYXNoID0gbXVsdGljb2RlYy5ybVByZWZpeChjaWQuc2xpY2UoMSkpXG4gICAgICAgIHRoaXMubXVsdGliYXNlTmFtZSA9ICdiYXNlMzInXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB2ZXJzaW9uIGlzIGEgcmF3IG11bHRpaGFzaCBidWZmZXIsIHNvIHYwXG4gICAgICAgIHRoaXMudmVyc2lvbiA9IDBcbiAgICAgICAgdGhpcy5jb2RlYyA9ICdkYWctcGInXG4gICAgICAgIHRoaXMubXVsdGloYXNoID0gdmVyc2lvblxuICAgICAgICB0aGlzLm11bHRpYmFzZU5hbWUgPSAnYmFzZTU4YnRjJ1xuICAgICAgfVxuICAgICAgQ0lELnZhbGlkYXRlQ0lEKHRoaXMpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2UsIGFzc2VtYmxlIHRoZSBDSUQgZnJvbSB0aGUgcGFyYW1ldGVyc1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uXG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMuY29kZWMgPSBjb2RlY1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge0J1ZmZlcn1cbiAgICAgKi9cbiAgICB0aGlzLm11bHRpaGFzaCA9IG11bHRpaGFzaFxuXG4gICAgLyoqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLm11bHRpYmFzZU5hbWUgPSBtdWx0aWJhc2VOYW1lIHx8ICh2ZXJzaW9uID09PSAwID8gJ2Jhc2U1OGJ0YycgOiAnYmFzZTMyJylcblxuICAgIENJRC52YWxpZGF0ZUNJRCh0aGlzKVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBDSUQgYXMgYSBgQnVmZmVyYFxuICAgKlxuICAgKiBAcmV0dXJuIHtCdWZmZXJ9XG4gICAqIEByZWFkb25seVxuICAgKlxuICAgKiBAbWVtYmVyT2YgQ0lEXG4gICAqL1xuICBnZXQgYnVmZmVyICgpIHtcbiAgICBsZXQgYnVmZmVyID0gdGhpcy5fYnVmZmVyXG5cbiAgICBpZiAoIWJ1ZmZlcikge1xuICAgICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gMCkge1xuICAgICAgICBidWZmZXIgPSB0aGlzLm11bHRpaGFzaFxuICAgICAgfSBlbHNlIGlmICh0aGlzLnZlcnNpb24gPT09IDEpIHtcbiAgICAgICAgYnVmZmVyID0gQnVmZmVyLmNvbmNhdChbXG4gICAgICAgICAgQnVmZmVyLmZyb20oJzAxJywgJ2hleCcpLFxuICAgICAgICAgIG11bHRpY29kZWMuZ2V0Q29kZVZhcmludCh0aGlzLmNvZGVjKSxcbiAgICAgICAgICB0aGlzLm11bHRpaGFzaFxuICAgICAgICBdKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCB2ZXJzaW9uJylcbiAgICAgIH1cblxuICAgICAgLy8gQ2FjaGUgdGhpcyBidWZmZXIgc28gaXQgZG9lc24ndCBoYXZlIHRvIGJlIHJlY3JlYXRlZFxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdfYnVmZmVyJywgeyB2YWx1ZTogYnVmZmVyIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZmZlclxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcHJlZml4IG9mIHRoZSBDSUQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gICAqIEByZWFkb25seVxuICAgKi9cbiAgZ2V0IHByZWZpeCAoKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW1xuICAgICAgQnVmZmVyLmZyb20oYDAke3RoaXMudmVyc2lvbn1gLCAnaGV4JyksXG4gICAgICBtdWx0aWNvZGVjLmdldENvZGVWYXJpbnQodGhpcy5jb2RlYyksXG4gICAgICBtaC5wcmVmaXgodGhpcy5tdWx0aWhhc2gpXG4gICAgXSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRvIGEgQ0lEIG9mIHZlcnNpb24gYDBgLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Q0lEfVxuICAgKi9cbiAgdG9WMCAoKSB7XG4gICAgaWYgKHRoaXMuY29kZWMgIT09ICdkYWctcGInKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IGEgbm9uIGRhZy1wYiBDSUQgdG8gQ0lEdjAnKVxuICAgIH1cblxuICAgIGNvbnN0IHsgbmFtZSwgbGVuZ3RoIH0gPSBtaC5kZWNvZGUodGhpcy5tdWx0aWhhc2gpXG5cbiAgICBpZiAobmFtZSAhPT0gJ3NoYTItMjU2Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29udmVydCBub24gc2hhMi0yNTYgbXVsdGloYXNoIENJRCB0byBDSUR2MCcpXG4gICAgfVxuXG4gICAgaWYgKGxlbmd0aCAhPT0gMzIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbnZlcnQgbm9uIDMyIGJ5dGUgbXVsdGloYXNoIENJRCB0byBDSUR2MCcpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBfQ0lEKDAsIHRoaXMuY29kZWMsIHRoaXMubXVsdGloYXNoKVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gYSBDSUQgb2YgdmVyc2lvbiBgMWAuXG4gICAqXG4gICAqIEByZXR1cm5zIHtDSUR9XG4gICAqL1xuICB0b1YxICgpIHtcbiAgICByZXR1cm4gbmV3IF9DSUQoMSwgdGhpcy5jb2RlYywgdGhpcy5tdWx0aWhhc2gpXG4gIH1cblxuICAvKipcbiAgICogRW5jb2RlIHRoZSBDSUQgaW50byBhIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtiYXNlPXRoaXMubXVsdGliYXNlTmFtZV0gLSBCYXNlIGVuY29kaW5nIHRvIHVzZS5cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIHRvQmFzZUVuY29kZWRTdHJpbmcgKGJhc2UgPSB0aGlzLm11bHRpYmFzZU5hbWUpIHtcbiAgICBpZiAodGhpcy5zdHJpbmcgJiYgYmFzZSA9PT0gdGhpcy5tdWx0aWJhc2VOYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdHJpbmdcbiAgICB9XG4gICAgbGV0IHN0ciA9IG51bGxcbiAgICBpZiAodGhpcy52ZXJzaW9uID09PSAwKSB7XG4gICAgICBpZiAoYmFzZSAhPT0gJ2Jhc2U1OGJ0YycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3Qgc3VwcG9ydGVkIHdpdGggQ0lEdjAsIHRvIHN1cHBvcnQgZGlmZmVyZW50IGJhc2VzLCBwbGVhc2UgbWlncmF0ZSB0aGUgaW5zdGFuY2UgZG8gQ0lEdjEsIHlvdSBjYW4gZG8gdGhhdCB0aHJvdWdoIGNpZC50b1YxKCknKVxuICAgICAgfVxuICAgICAgc3RyID0gbWgudG9CNThTdHJpbmcodGhpcy5tdWx0aWhhc2gpXG4gICAgfSBlbHNlIGlmICh0aGlzLnZlcnNpb24gPT09IDEpIHtcbiAgICAgIHN0ciA9IG11bHRpYmFzZS5lbmNvZGUoYmFzZSwgdGhpcy5idWZmZXIpLnRvU3RyaW5nKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCB2ZXJzaW9uJylcbiAgICB9XG4gICAgaWYgKGJhc2UgPT09IHRoaXMubXVsdGliYXNlTmFtZSkge1xuICAgICAgLy8gY2FjaGUgdGhlIHN0cmluZyB2YWx1ZVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdzdHJpbmcnLCB7IHZhbHVlOiBzdHIgfSlcbiAgICB9XG4gICAgcmV0dXJuIHN0clxuICB9XG5cbiAgdG9TdHJpbmcgKGJhc2UpIHtcbiAgICByZXR1cm4gdGhpcy50b0Jhc2VFbmNvZGVkU3RyaW5nKGJhc2UpXG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIHRvIGEgcGxhaW4gb2JqZWN0LlxuICAgKlxuICAgKiBAcmV0dXJucyB7U2VyaWFsaXplZENJRH1cbiAgICovXG4gIHRvSlNPTiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGVjOiB0aGlzLmNvZGVjLFxuICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uLFxuICAgICAgaGFzaDogdGhpcy5tdWx0aWhhc2hcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZSBlcXVhbGl0eSB3aXRoIGFub3RoZXIgQ0lELlxuICAgKlxuICAgKiBAcGFyYW0ge0NJRH0gb3RoZXJcbiAgICogQHJldHVybnMge2Jvb2x9XG4gICAqL1xuICBlcXVhbHMgKG90aGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZWMgPT09IG90aGVyLmNvZGVjICYmXG4gICAgICB0aGlzLnZlcnNpb24gPT09IG90aGVyLnZlcnNpb24gJiZcbiAgICAgIHRoaXMubXVsdGloYXNoLmVxdWFscyhvdGhlci5tdWx0aWhhc2gpXG4gIH1cblxuICAvKipcbiAgICogVGVzdCBpZiB0aGUgZ2l2ZW4gaW5wdXQgaXMgYSB2YWxpZCBDSUQgb2JqZWN0LlxuICAgKiBUaHJvd3MgaWYgaXQgaXMgbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gb3RoZXJcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgdmFsaWRhdGVDSUQgKG90aGVyKSB7XG4gICAgY29uc3QgZXJyb3JNc2cgPSBDSURVdGlsLmNoZWNrQ0lEQ29tcG9uZW50cyhvdGhlcilcbiAgICBpZiAoZXJyb3JNc2cpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1zZylcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgX0NJRCA9IHdpdGhJcyhDSUQsIHtcbiAgY2xhc3NOYW1lOiAnQ0lEJyxcbiAgc3ltYm9sTmFtZTogJ0BpcGxkL2pzLWNpZC9DSUQnXG59KVxuXG5fQ0lELmNvZGVjcyA9IGNvZGVjc1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9DSURcbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBOb2RlRm9ybURhdGEgZnJvbSAnZm9ybS1kYXRhJztcbmltcG9ydCBzdHJlYW0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7XG4gICAgY3JlYXRlQ29uZmlnRm9yQXhpb3NIZWFkZXJzV2l0aEZvcm1EYXRhLFxuICAgIHZhbGlkYXRlTWV0YWRhdGEsXG4gICAgdmFsaWRhdGVQaW5hdGFPcHRpb25zXG59IGZyb20gJy4uLy4uL3V0aWwvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBoYW5kbGVFcnJvciB9IGZyb20gJy4uLy4uL3V0aWwvZXJyb3JSZXNwb25zZSc7XG5pbXBvcnQgeyBQaW5hdGFDb25maWcsIFBpbmF0YU1ldGFkYXRhIH0gZnJvbSAnLi4vLi4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpbmF0YVBpblBvbGljeUl0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZGVzaXJlZFJlcGxpY2F0aW9uQ291bnQ6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhT3B0aW9ucyB7XG4gICAgaG9zdE5vZGVzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgY2lkVmVyc2lvbj86IDAgfCAxO1xuICAgIHdyYXBXaXRoRGlyZWN0b3J5PzogYm9vbGVhbjtcbiAgICBjdXN0b21QaW5Qb2xpY3k/OiB7XG4gICAgICAgIHJlZ2lvbnM6IFBpbmF0YVBpblBvbGljeUl0ZW1bXTtcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpbmF0YVBpblJlc3BvbnNlIHtcbiAgICBJcGZzSGFzaDogc3RyaW5nO1xuICAgIFBpblNpemU6IG51bWJlcjtcbiAgICBUaW1lc3RhbXA6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhUGluT3B0aW9ucyB7XG4gICAgcGluYXRhTWV0YWRhdGE/OiBQaW5hdGFNZXRhZGF0YTtcbiAgICBwaW5hdGFPcHRpb25zPzogUGluYXRhT3B0aW9ucyB8IHVuZGVmaW5lZDtcbn1cbmNvbnN0IGVuZHBvaW50ID0gYCR7YmFzZVVybH0vcGlubmluZy9waW5GaWxlVG9JUEZTYDtcblxuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZFRvSVBGUyhcbiAgICBjb25maWc6IFBpbmF0YUNvbmZpZyxcbiAgICBkYXRhOiBOb2RlRm9ybURhdGEsXG4gICAgb3B0aW9ucz86IFBpbmF0YVBpbk9wdGlvbnNcbik6IFByb21pc2U8UGluYXRhUGluUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnBpbmF0YU1ldGFkYXRhKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZU1ldGFkYXRhKG9wdGlvbnMucGluYXRhTWV0YWRhdGEpO1xuICAgICAgICAgICAgZGF0YS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ3BpbmF0YU1ldGFkYXRhJyxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcHRpb25zLnBpbmF0YU1ldGFkYXRhKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnBpbmF0YU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlUGluYXRhT3B0aW9ucyhvcHRpb25zLnBpbmF0YU9wdGlvbnMpO1xuICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3BpbmF0YU9wdGlvbnMnLCBKU09OLnN0cmluZ2lmeShvcHRpb25zLnBpbmF0YU9wdGlvbnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgICAucG9zdChcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgIGNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVyc1dpdGhGb3JtRGF0YShcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhLmdldEJvdW5kYXJ5KClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYHVua25vd24gc2VydmVyIHJlc3BvbnNlIHdoaWxlIHBpbm5pbmcgRmlsZSB0byBJUEZTOiAke3Jlc3VsdH1gXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRFcnJvciA9IGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICByZWplY3QoZm9ybWF0dGVkRXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBpbkZpbGVUb0lQRlMoXG4gICAgY29uZmlnOiBQaW5hdGFDb25maWcsXG4gICAgcmVhZFN0cmVhbTogYW55LFxuICAgIG9wdGlvbnM/OiBQaW5hdGFQaW5PcHRpb25zXG4pOiBQcm9taXNlPFBpbmF0YVBpblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBOb2RlRm9ybURhdGEoKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIG9wdGlvbnM/LnBpbmF0YU1ldGFkYXRhPy5uYW1lICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIG9wdGlvbnMucGluYXRhTWV0YWRhdGEubmFtZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICBvcHRpb25zLnBpbmF0YU1ldGFkYXRhLm5hbWUubGVuZ3RoID4gMFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICdmaWxlbmFtZSB3YXMgbm90IHByb3ZpZGUsIG1ha2Ugc3VyZSB0byBwcm92aWRlIG9wdGlvbnMucGluYXRhTWV0YWRhdGEubmFtZSdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhLmFwcGVuZCgnZmlsZScsIHJlYWRTdHJlYW0sIHtcbiAgICAgICAgICAgIGZpbGVuYW1lOiBvcHRpb25zLnBpbmF0YU1ldGFkYXRhLm5hbWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICByZWFkU3RyZWFtIGluc3RhbmNlb2Ygc3RyZWFtLlJlYWRhYmxlIHx8XG4gICAgICAgICAgICAgICAgcmVhZFN0cmVhbSBpbnN0YW5jZW9mIE5vZGVGb3JtRGF0YVxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICBuZXcgRXJyb3IoJ3JlYWRTdHJlYW0gaXMgbm90IGEgcmVhZGFibGUgc3RyZWFtIG9yIGZvcm0gZGF0YScpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZSh1cGxvYWRUb0lQRlMoY29uZmlnLCBkYXRhLCBvcHRpb25zKSk7XG4gICAgfSk7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwYXRoXCIpOyIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBoYW5kbGVFcnJvciB9IGZyb20gJy4uLy4uLy4uL3V0aWwvZXJyb3JSZXNwb25zZSc7XG5pbXBvcnQgcXVlcnlCdWlsZGVyIGZyb20gJy4vcXVlcnlCdWlsZGVyJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uJztcbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhUGluUmVnaW9uIHtcbiAgICByZWdpb25JZDogc3RyaW5nO1xuICAgIGN1cnJlbnRSZXBsaWNhdGlvbkNvdW50OiBudW1iZXI7XG4gICAgZGVzaXJlZFJlcGxpY2F0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaW5hdGFNZXRhZGF0YSB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IG51bGwgfVxuZXhwb3J0IGludGVyZmFjZSBQaW5hdGFNZXRhZGF0YUZpbHRlciB7XG4gICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBrZXl2YWx1ZXM6IHsgW2tleTogc3RyaW5nXToge1xuICAgICAgICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgb3A6IHN0cmluZztcbiAgICB9IH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhUGluIHtcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGlwZnNfcGluX2hhc2g6IHN0cmluZztcbiAgICBzaXplOiBudW1iZXI7XG4gICAgdXNlcl9pZDogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGRhdGVfcGlubmVkOiBzdHJpbmc7XG4gICAgZGF0ZV91bnBpbm5lZDogc3RyaW5nIHwgbnVsbDtcbiAgICBtZXRhZGF0YTogUGluYXRhTWV0YWRhdGEsXG4gICAgcmVnaW9uczogUGluYXRhUGluUmVnaW9uW107XG59XG5cbmV4cG9ydCB0eXBlIFBpbmF0YVBpbkxpc3RGaWx0ZXJPcHRpb25zID0ge1xuICAgIGhhc2hDb250YWlucz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBwaW5TdGFydD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBwaW5FbmQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgdW5waW5TdGFydD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB1bnBpbkVuZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBwaW5TaXplTWluPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHBpblNpemVNYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgc3RhdHVzPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHBhZ2VMaW1pdD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBwYWdlT2Zmc2V0PzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1ldGFkYXRhPzogUGluYXRhTWV0YWRhdGFGaWx0ZXIgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpbmF0YVBpbkxpc3RSZXNwb25zZSB7XG4gICAgcm93czogUGluYXRhUGluW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBpbkxpc3QoXG4gICAgY29uZmlnOiBQaW5hdGFDb25maWcsXG4gICAgZmlsdGVyczpQaW5hdGFQaW5MaXN0RmlsdGVyT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFBpbmF0YVBpbkxpc3RSZXNwb25zZT4ge1xuICAgIGZpbHRlcnMgPSB7IC4uLmZpbHRlcnMsIC4uLnsgaW5jbHVkZUNvdW50OiAnZmFsc2UnIH0gfTtcblxuICAgIGNvbnN0IGJhc2VFbmRwb2ludCA9IGAke2Jhc2VVcmx9L2RhdGEvcGluTGlzdGA7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBxdWVyeUJ1aWxkZXIoYmFzZUVuZHBvaW50LCBmaWx0ZXJzKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgICAuZ2V0KGVuZHBvaW50LCB7IC4uLmNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyhjb25maWcpIH0pXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYHVua25vd24gc2VydmVyIHJlc3BvbnNlIHdoaWxlIGF0dGVtcHRpbmcgdG8gcmV0cmlldmUgdXNlciBwaW4gbGlzdDogJHtyZXN1bHR9YFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRXJyb3IgPSBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGZvcm1hdHRlZEVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH0pO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlJbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fd2tzJyk7XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG4iLCIvLyBmYWxsYmFjayBmb3IgSUUxMSBidWdneSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB3aXRoIGlmcmFtZSBhbmQgd2luZG93XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG52YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxudmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW107XG5cbnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uIChpdCkge1xuICB0cnkge1xuICAgIHJldHVybiBnT1BOKGl0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB3aW5kb3dOYW1lcy5zbGljZSgpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICByZXR1cm4gd2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XScgPyBnZXRXaW5kb3dOYW1lcyhpdCkgOiBnT1BOKHRvSU9iamVjdChpdCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDE5LjEuMi4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UsIC4uLilcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciAkYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcblxuLy8gc2hvdWxkIHdvcmsgd2l0aCBzeW1ib2xzIGFuZCBzaG91bGQgaGF2ZSBkZXRlcm1pbmlzdGljIHByb3BlcnR5IG9yZGVyIChWOCBidWcpXG5tb2R1bGUuZXhwb3J0cyA9ICEkYXNzaWduIHx8IHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgdmFyIFMgPSBTeW1ib2woKTtcbiAgdmFyIEsgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW1NdID0gNztcbiAgSy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoaykgeyBCW2tdID0gazsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLO1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgVCA9IHRvT2JqZWN0KHRhcmdldCk7XG4gIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgd2hpbGUgKGFMZW4gPiBpbmRleCkge1xuICAgIHZhciBTID0gSU9iamVjdChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHZhciBrZXlzID0gZ2V0U3ltYm9scyA/IGdldEtleXMoUykuY29uY2F0KGdldFN5bWJvbHMoUykpIDogZ2V0S2V5cyhTKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGogPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGopIHtcbiAgICAgIGtleSA9IGtleXNbaisrXTtcbiAgICAgIGlmICghREVTQ1JJUFRPUlMgfHwgaXNFbnVtLmNhbGwoUywga2V5KSkgVFtrZXldID0gU1trZXldO1xuICAgIH1cbiAgfSByZXR1cm4gVDtcbn0gOiAkYXNzaWduO1xuIiwiLy8gNy4yLjkgU2FtZVZhbHVlKHgsIHkpXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5pcyB8fCBmdW5jdGlvbiBpcyh4LCB5KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgcmV0dXJuIHggPT09IHkgPyB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geSA6IHggIT0geCAmJiB5ICE9IHk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGludm9rZSA9IHJlcXVpcmUoJy4vX2ludm9rZScpO1xudmFyIGFycmF5U2xpY2UgPSBbXS5zbGljZTtcbnZhciBmYWN0b3JpZXMgPSB7fTtcblxudmFyIGNvbnN0cnVjdCA9IGZ1bmN0aW9uIChGLCBsZW4sIGFyZ3MpIHtcbiAgaWYgKCEobGVuIGluIGZhY3RvcmllcykpIHtcbiAgICBmb3IgKHZhciBuID0gW10sIGkgPSAwOyBpIDwgbGVuOyBpKyspIG5baV0gPSAnYVsnICsgaSArICddJztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgICBmYWN0b3JpZXNbbGVuXSA9IEZ1bmN0aW9uKCdGLGEnLCAncmV0dXJuIG5ldyBGKCcgKyBuLmpvaW4oJywnKSArICcpJyk7XG4gIH0gcmV0dXJuIGZhY3Rvcmllc1tsZW5dKEYsIGFyZ3MpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbi5iaW5kIHx8IGZ1bmN0aW9uIGJpbmQodGhhdCAvKiAsIC4uLmFyZ3MgKi8pIHtcbiAgdmFyIGZuID0gYUZ1bmN0aW9uKHRoaXMpO1xuICB2YXIgcGFydEFyZ3MgPSBhcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgdmFyIGJvdW5kID0gZnVuY3Rpb24gKC8qIGFyZ3MuLi4gKi8pIHtcbiAgICB2YXIgYXJncyA9IHBhcnRBcmdzLmNvbmNhdChhcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKSk7XG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBib3VuZCA/IGNvbnN0cnVjdChmbiwgYXJncy5sZW5ndGgsIGFyZ3MpIDogaW52b2tlKGZuLCBhcmdzLCB0aGF0KTtcbiAgfTtcbiAgaWYgKGlzT2JqZWN0KGZuLnByb3RvdHlwZSkpIGJvdW5kLnByb3RvdHlwZSA9IGZuLnByb3RvdHlwZTtcbiAgcmV0dXJuIGJvdW5kO1xufTtcbiIsIi8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIHRoYXQpIHtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xufTtcbiIsInZhciAkcGFyc2VJbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5wYXJzZUludDtcbnZhciAkdHJpbSA9IHJlcXVpcmUoJy4vX3N0cmluZy10cmltJykudHJpbTtcbnZhciB3cyA9IHJlcXVpcmUoJy4vX3N0cmluZy13cycpO1xudmFyIGhleCA9IC9eWy0rXT8wW3hYXS87XG5cbm1vZHVsZS5leHBvcnRzID0gJHBhcnNlSW50KHdzICsgJzA4JykgIT09IDggfHwgJHBhcnNlSW50KHdzICsgJzB4MTYnKSAhPT0gMjIgPyBmdW5jdGlvbiBwYXJzZUludChzdHIsIHJhZGl4KSB7XG4gIHZhciBzdHJpbmcgPSAkdHJpbShTdHJpbmcoc3RyKSwgMyk7XG4gIHJldHVybiAkcGFyc2VJbnQoc3RyaW5nLCAocmFkaXggPj4+IDApIHx8IChoZXgudGVzdChzdHJpbmcpID8gMTYgOiAxMCkpO1xufSA6ICRwYXJzZUludDtcbiIsInZhciAkcGFyc2VGbG9hdCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLnBhcnNlRmxvYXQ7XG52YXIgJHRyaW0gPSByZXF1aXJlKCcuL19zdHJpbmctdHJpbScpLnRyaW07XG5cbm1vZHVsZS5leHBvcnRzID0gMSAvICRwYXJzZUZsb2F0KHJlcXVpcmUoJy4vX3N0cmluZy13cycpICsgJy0wJykgIT09IC1JbmZpbml0eSA/IGZ1bmN0aW9uIHBhcnNlRmxvYXQoc3RyKSB7XG4gIHZhciBzdHJpbmcgPSAkdHJpbShTdHJpbmcoc3RyKSwgMyk7XG4gIHZhciByZXN1bHQgPSAkcGFyc2VGbG9hdChzdHJpbmcpO1xuICByZXR1cm4gcmVzdWx0ID09PSAwICYmIHN0cmluZy5jaGFyQXQoMCkgPT0gJy0nID8gLTAgOiByZXN1bHQ7XG59IDogJHBhcnNlRmxvYXQ7XG4iLCJ2YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgbXNnKSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ251bWJlcicgJiYgY29mKGl0KSAhPSAnTnVtYmVyJykgdGhyb3cgVHlwZUVycm9yKG1zZyk7XG4gIHJldHVybiAraXQ7XG59O1xuIiwiLy8gMjAuMS4yLjMgTnVtYmVyLmlzSW50ZWdlcihudW1iZXIpXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzSW50ZWdlcihpdCkge1xuICByZXR1cm4gIWlzT2JqZWN0KGl0KSAmJiBpc0Zpbml0ZShpdCkgJiYgZmxvb3IoaXQpID09PSBpdDtcbn07XG4iLCIvLyAyMC4yLjIuMjAgTWF0aC5sb2cxcCh4KVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLmxvZzFwIHx8IGZ1bmN0aW9uIGxvZzFwKHgpIHtcbiAgcmV0dXJuICh4ID0gK3gpID4gLTFlLTggJiYgeCA8IDFlLTggPyB4IC0geCAqIHggLyAyIDogTWF0aC5sb2coMSArIHgpO1xufTtcbiIsIi8vIDIwLjIuMi4xNiBNYXRoLmZyb3VuZCh4KVxudmFyIHNpZ24gPSByZXF1aXJlKCcuL19tYXRoLXNpZ24nKTtcbnZhciBwb3cgPSBNYXRoLnBvdztcbnZhciBFUFNJTE9OID0gcG93KDIsIC01Mik7XG52YXIgRVBTSUxPTjMyID0gcG93KDIsIC0yMyk7XG52YXIgTUFYMzIgPSBwb3coMiwgMTI3KSAqICgyIC0gRVBTSUxPTjMyKTtcbnZhciBNSU4zMiA9IHBvdygyLCAtMTI2KTtcblxudmFyIHJvdW5kVGllc1RvRXZlbiA9IGZ1bmN0aW9uIChuKSB7XG4gIHJldHVybiBuICsgMSAvIEVQU0lMT04gLSAxIC8gRVBTSUxPTjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTWF0aC5mcm91bmQgfHwgZnVuY3Rpb24gZnJvdW5kKHgpIHtcbiAgdmFyICRhYnMgPSBNYXRoLmFicyh4KTtcbiAgdmFyICRzaWduID0gc2lnbih4KTtcbiAgdmFyIGEsIHJlc3VsdDtcbiAgaWYgKCRhYnMgPCBNSU4zMikgcmV0dXJuICRzaWduICogcm91bmRUaWVzVG9FdmVuKCRhYnMgLyBNSU4zMiAvIEVQU0lMT04zMikgKiBNSU4zMiAqIEVQU0lMT04zMjtcbiAgYSA9ICgxICsgRVBTSUxPTjMyIC8gRVBTSUxPTikgKiAkYWJzO1xuICByZXN1bHQgPSBhIC0gKGEgLSAkYWJzKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICBpZiAocmVzdWx0ID4gTUFYMzIgfHwgcmVzdWx0ICE9IHJlc3VsdCkgcmV0dXJuICRzaWduICogSW5maW5pdHk7XG4gIHJldHVybiAkc2lnbiAqIHJlc3VsdDtcbn07XG4iLCIvLyAyMC4zLjQuMzYgLyAxNS45LjUuNDMgRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcoKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0lTT1N0cmluZyA9IHJlcXVpcmUoJy4vX2RhdGUtdG8taXNvLXN0cmluZycpO1xuXG4vLyBQaGFudG9tSlMgLyBvbGQgV2ViS2l0IGhhcyBhIGJyb2tlbiBpbXBsZW1lbnRhdGlvbnNcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nICE9PSB0b0lTT1N0cmluZyksICdEYXRlJywge1xuICB0b0lTT1N0cmluZzogdG9JU09TdHJpbmdcbn0pO1xuIiwiLy8gMjIuMS4yLjIgLyAxNS40LjMuMiBBcnJheS5pc0FycmF5KGFyZylcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnQXJyYXknLCB7IGlzQXJyYXk6IHJlcXVpcmUoJy4vX2lzLWFycmF5JykgfSk7XG4iLCIvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgYXJyYXlTbGljZSA9IFtdLnNsaWNlO1xuXG4vLyBmYWxsYmFjayBmb3Igbm90IGFycmF5LWxpa2UgRVMzIHN0cmluZ3MgYW5kIERPTSBvYmplY3RzXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICBpZiAoaHRtbCkgYXJyYXlTbGljZS5jYWxsKGh0bWwpO1xufSksICdBcnJheScsIHtcbiAgc2xpY2U6IGZ1bmN0aW9uIHNsaWNlKGJlZ2luLCBlbmQpIHtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgodGhpcy5sZW5ndGgpO1xuICAgIHZhciBrbGFzcyA9IGNvZih0aGlzKTtcbiAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IGVuZDtcbiAgICBpZiAoa2xhc3MgPT0gJ0FycmF5JykgcmV0dXJuIGFycmF5U2xpY2UuY2FsbCh0aGlzLCBiZWdpbiwgZW5kKTtcbiAgICB2YXIgc3RhcnQgPSB0b0Fic29sdXRlSW5kZXgoYmVnaW4sIGxlbik7XG4gICAgdmFyIHVwVG8gPSB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW4pO1xuICAgIHZhciBzaXplID0gdG9MZW5ndGgodXBUbyAtIHN0YXJ0KTtcbiAgICB2YXIgY2xvbmVkID0gbmV3IEFycmF5KHNpemUpO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykgY2xvbmVkW2ldID0ga2xhc3MgPT0gJ1N0cmluZydcbiAgICAgID8gdGhpcy5jaGFyQXQoc3RhcnQgKyBpKVxuICAgICAgOiB0aGlzW3N0YXJ0ICsgaV07XG4gICAgcmV0dXJuIGNsb25lZDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciAkc29ydCA9IFtdLnNvcnQ7XG52YXIgdGVzdCA9IFsxLCAyLCAzXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBJRTgtXG4gIHRlc3Quc29ydCh1bmRlZmluZWQpO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gVjggYnVnXG4gIHRlc3Quc29ydChudWxsKTtcbiAgLy8gT2xkIFdlYktpdFxufSkgfHwgIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKSgkc29ydCkpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4yNSBBcnJheS5wcm90b3R5cGUuc29ydChjb21wYXJlZm4pXG4gIHNvcnQ6IGZ1bmN0aW9uIHNvcnQoY29tcGFyZWZuKSB7XG4gICAgcmV0dXJuIGNvbXBhcmVmbiA9PT0gdW5kZWZpbmVkXG4gICAgICA/ICRzb3J0LmNhbGwodG9PYmplY3QodGhpcykpXG4gICAgICA6ICRzb3J0LmNhbGwodG9PYmplY3QodGhpcyksIGFGdW5jdGlvbihjb21wYXJlZm4pKTtcbiAgfVxufSk7XG4iLCJ2YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBjYWxsYmFja2ZuLCBhTGVuLCBtZW1vLCBpc1JpZ2h0KSB7XG4gIGFGdW5jdGlvbihjYWxsYmFja2ZuKTtcbiAgdmFyIE8gPSB0b09iamVjdCh0aGF0KTtcbiAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICB2YXIgaW5kZXggPSBpc1JpZ2h0ID8gbGVuZ3RoIC0gMSA6IDA7XG4gIHZhciBpID0gaXNSaWdodCA/IC0xIDogMTtcbiAgaWYgKGFMZW4gPCAyKSBmb3IgKDs7KSB7XG4gICAgaWYgKGluZGV4IGluIHNlbGYpIHtcbiAgICAgIG1lbW8gPSBzZWxmW2luZGV4XTtcbiAgICAgIGluZGV4ICs9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaW5kZXggKz0gaTtcbiAgICBpZiAoaXNSaWdodCA/IGluZGV4IDwgMCA6IGxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlJyk7XG4gICAgfVxuICB9XG4gIGZvciAoO2lzUmlnaHQgPyBpbmRleCA+PSAwIDogbGVuZ3RoID4gaW5kZXg7IGluZGV4ICs9IGkpIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgbWVtbyA9IGNhbGxiYWNrZm4obWVtbywgc2VsZltpbmRleF0sIGluZGV4LCBPKTtcbiAgfVxuICByZXR1cm4gbWVtbztcbn07XG4iLCIvLyAyMi4xLjMuMyBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0LCBlbmQgPSB0aGlzLmxlbmd0aClcbid1c2Ugc3RyaWN0JztcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBbXS5jb3B5V2l0aGluIHx8IGZ1bmN0aW9uIGNvcHlXaXRoaW4odGFyZ2V0IC8qID0gMCAqLywgc3RhcnQgLyogPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciB0byA9IHRvQWJzb2x1dGVJbmRleCh0YXJnZXQsIGxlbik7XG4gIHZhciBmcm9tID0gdG9BYnNvbHV0ZUluZGV4KHN0YXJ0LCBsZW4pO1xuICB2YXIgZW5kID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBjb3VudCA9IE1hdGgubWluKChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbikpIC0gZnJvbSwgbGVuIC0gdG8pO1xuICB2YXIgaW5jID0gMTtcbiAgaWYgKGZyb20gPCB0byAmJiB0byA8IGZyb20gKyBjb3VudCkge1xuICAgIGluYyA9IC0xO1xuICAgIGZyb20gKz0gY291bnQgLSAxO1xuICAgIHRvICs9IGNvdW50IC0gMTtcbiAgfVxuICB3aGlsZSAoY291bnQtLSA+IDApIHtcbiAgICBpZiAoZnJvbSBpbiBPKSBPW3RvXSA9IE9bZnJvbV07XG4gICAgZWxzZSBkZWxldGUgT1t0b107XG4gICAgdG8gKz0gaW5jO1xuICAgIGZyb20gKz0gaW5jO1xuICB9IHJldHVybiBPO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYycpO1xucmVxdWlyZSgnLi9fZXhwb3J0Jykoe1xuICB0YXJnZXQ6ICdSZWdFeHAnLFxuICBwcm90bzogdHJ1ZSxcbiAgZm9yY2VkOiByZWdleHBFeGVjICE9PSAvLi8uZXhlY1xufSwge1xuICBleGVjOiByZWdleHBFeGVjXG59KTtcbiIsIi8vIDIxLjIuNS4zIGdldCBSZWdFeHAucHJvdG90eXBlLmZsYWdzKClcbmlmIChyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmIC8uL2cuZmxhZ3MgIT0gJ2cnKSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mKFJlZ0V4cC5wcm90b3R5cGUsICdmbGFncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IHJlcXVpcmUoJy4vX2ZsYWdzJylcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNSZWdFeHAgPSByZXF1aXJlKCcuL19pcy1yZWdleHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSByZXF1aXJlKCcuL19hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgY2FsbFJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciAkbWluID0gTWF0aC5taW47XG52YXIgJHB1c2ggPSBbXS5wdXNoO1xudmFyICRTUExJVCA9ICdzcGxpdCc7XG52YXIgTEVOR1RIID0gJ2xlbmd0aCc7XG52YXIgTEFTVF9JTkRFWCA9ICdsYXN0SW5kZXgnO1xudmFyIE1BWF9VSU5UMzIgPSAweGZmZmZmZmZmO1xuXG4vLyBiYWJlbC1taW5pZnkgdHJhbnNwaWxlcyBSZWdFeHAoJ3gnLCAneScpIC0+IC94L3kgYW5kIGl0IGNhdXNlcyBTeW50YXhFcnJvclxudmFyIFNVUFBPUlRTX1kgPSAhZmFpbHMoZnVuY3Rpb24gKCkgeyBSZWdFeHAoTUFYX1VJTlQzMiwgJ3knKTsgfSk7XG5cbi8vIEBAc3BsaXQgbG9naWNcbnJlcXVpcmUoJy4vX2ZpeC1yZS13a3MnKSgnc3BsaXQnLCAyLCBmdW5jdGlvbiAoZGVmaW5lZCwgU1BMSVQsICRzcGxpdCwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHZhciBpbnRlcm5hbFNwbGl0O1xuICBpZiAoXG4gICAgJ2FiYmMnWyRTUExJVF0oLyhiKSovKVsxXSA9PSAnYycgfHxcbiAgICAndGVzdCdbJFNQTElUXSgvKD86KS8sIC0xKVtMRU5HVEhdICE9IDQgfHxcbiAgICAnYWInWyRTUExJVF0oLyg/OmFiKSovKVtMRU5HVEhdICE9IDIgfHxcbiAgICAnLidbJFNQTElUXSgvKC4/KSguPykvKVtMRU5HVEhdICE9IDQgfHxcbiAgICAnLidbJFNQTElUXSgvKCkoKS8pW0xFTkdUSF0gPiAxIHx8XG4gICAgJydbJFNQTElUXSgvLj8vKVtMRU5HVEhdXG4gICkge1xuICAgIC8vIGJhc2VkIG9uIGVzNS1zaGltIGltcGxlbWVudGF0aW9uLCBuZWVkIHRvIHJld29yayBpdFxuICAgIGludGVybmFsU3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgdmFyIHN0cmluZyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCAmJiBsaW1pdCA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgLy8gSWYgYHNlcGFyYXRvcmAgaXMgbm90IGEgcmVnZXgsIHVzZSBuYXRpdmUgc3BsaXRcbiAgICAgIGlmICghaXNSZWdFeHAoc2VwYXJhdG9yKSkgcmV0dXJuICRzcGxpdC5jYWxsKHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICB2YXIgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gJ3knIDogJycpO1xuICAgICAgdmFyIGxhc3RMYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIHNwbGl0TGltaXQgPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gTUFYX1VJTlQzMiA6IGxpbWl0ID4+PiAwO1xuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHZhciBzZXBhcmF0b3JDb3B5ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArICdnJyk7XG4gICAgICB2YXIgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICAgIHdoaWxlIChtYXRjaCA9IHJlZ2V4cEV4ZWMuY2FsbChzZXBhcmF0b3JDb3B5LCBzdHJpbmcpKSB7XG4gICAgICAgIGxhc3RJbmRleCA9IHNlcGFyYXRvckNvcHlbTEFTVF9JTkRFWF07XG4gICAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgICAgb3V0cHV0LnB1c2goc3RyaW5nLnNsaWNlKGxhc3RMYXN0SW5kZXgsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgICAgaWYgKG1hdGNoW0xFTkdUSF0gPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyaW5nW0xFTkdUSF0pICRwdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXVtMRU5HVEhdO1xuICAgICAgICAgIGxhc3RMYXN0SW5kZXggPSBsYXN0SW5kZXg7XG4gICAgICAgICAgaWYgKG91dHB1dFtMRU5HVEhdID49IHNwbGl0TGltaXQpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXBhcmF0b3JDb3B5W0xBU1RfSU5ERVhdID09PSBtYXRjaC5pbmRleCkgc2VwYXJhdG9yQ29weVtMQVNUX0lOREVYXSsrOyAvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wXG4gICAgICB9XG4gICAgICBpZiAobGFzdExhc3RJbmRleCA9PT0gc3RyaW5nW0xFTkdUSF0pIHtcbiAgICAgICAgaWYgKGxhc3RMZW5ndGggfHwgIXNlcGFyYXRvckNvcHkudGVzdCgnJykpIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIH0gZWxzZSBvdXRwdXQucHVzaChzdHJpbmcuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgICAgcmV0dXJuIG91dHB1dFtMRU5HVEhdID4gc3BsaXRMaW1pdCA/IG91dHB1dC5zbGljZSgwLCBzcGxpdExpbWl0KSA6IG91dHB1dDtcbiAgICB9O1xuICAvLyBDaGFrcmEsIFY4XG4gIH0gZWxzZSBpZiAoJzAnWyRTUExJVF0odW5kZWZpbmVkLCAwKVtMRU5HVEhdKSB7XG4gICAgaW50ZXJuYWxTcGxpdCA9IGZ1bmN0aW9uIChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICByZXR1cm4gc2VwYXJhdG9yID09PSB1bmRlZmluZWQgJiYgbGltaXQgPT09IDAgPyBbXSA6ICRzcGxpdC5jYWxsKHRoaXMsIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgaW50ZXJuYWxTcGxpdCA9ICRzcGxpdDtcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUuc3BsaXRgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuc3BsaXRcbiAgICBmdW5jdGlvbiBzcGxpdChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICB2YXIgTyA9IGRlZmluZWQodGhpcyk7XG4gICAgICB2YXIgc3BsaXR0ZXIgPSBzZXBhcmF0b3IgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc2VwYXJhdG9yW1NQTElUXTtcbiAgICAgIHJldHVybiBzcGxpdHRlciAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gc3BsaXR0ZXIuY2FsbChzZXBhcmF0b3IsIE8sIGxpbWl0KVxuICAgICAgICA6IGludGVybmFsU3BsaXQuY2FsbChTdHJpbmcoTyksIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEBzcGxpdFxuICAgIC8vXG4gICAgLy8gTk9URTogVGhpcyBjYW5ub3QgYmUgcHJvcGVybHkgcG9seWZpbGxlZCBpbiBlbmdpbmVzIHRoYXQgZG9uJ3Qgc3VwcG9ydFxuICAgIC8vIHRoZSAneScgZmxhZy5cbiAgICBmdW5jdGlvbiAocmVnZXhwLCBsaW1pdCkge1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZShpbnRlcm5hbFNwbGl0LCByZWdleHAsIHRoaXMsIGxpbWl0LCBpbnRlcm5hbFNwbGl0ICE9PSAkc3BsaXQpO1xuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuXG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG4gICAgICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgUmVnRXhwKTtcblxuICAgICAgdmFyIHVuaWNvZGVNYXRjaGluZyA9IHJ4LnVuaWNvZGU7XG4gICAgICB2YXIgZmxhZ3MgPSAocnguaWdub3JlQ2FzZSA/ICdpJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAocngubXVsdGlsaW5lID8gJ20nIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChyeC51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChTVVBQT1JUU19ZID8gJ3knIDogJ2cnKTtcblxuICAgICAgLy8gXig/ICsgcnggKyApIGlzIG5lZWRlZCwgaW4gY29tYmluYXRpb24gd2l0aCBzb21lIFMgc2xpY2luZywgdG9cbiAgICAgIC8vIHNpbXVsYXRlIHRoZSAneScgZmxhZy5cbiAgICAgIHZhciBzcGxpdHRlciA9IG5ldyBDKFNVUFBPUlRTX1kgPyByeCA6ICdeKD86JyArIHJ4LnNvdXJjZSArICcpJywgZmxhZ3MpO1xuICAgICAgdmFyIGxpbSA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfVUlOVDMyIDogbGltaXQgPj4+IDA7XG4gICAgICBpZiAobGltID09PSAwKSByZXR1cm4gW107XG4gICAgICBpZiAoUy5sZW5ndGggPT09IDApIHJldHVybiBjYWxsUmVnRXhwRXhlYyhzcGxpdHRlciwgUykgPT09IG51bGwgPyBbU10gOiBbXTtcbiAgICAgIHZhciBwID0gMDtcbiAgICAgIHZhciBxID0gMDtcbiAgICAgIHZhciBBID0gW107XG4gICAgICB3aGlsZSAocSA8IFMubGVuZ3RoKSB7XG4gICAgICAgIHNwbGl0dGVyLmxhc3RJbmRleCA9IFNVUFBPUlRTX1kgPyBxIDogMDtcbiAgICAgICAgdmFyIHogPSBjYWxsUmVnRXhwRXhlYyhzcGxpdHRlciwgU1VQUE9SVFNfWSA/IFMgOiBTLnNsaWNlKHEpKTtcbiAgICAgICAgdmFyIGU7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB6ID09PSBudWxsIHx8XG4gICAgICAgICAgKGUgPSAkbWluKHRvTGVuZ3RoKHNwbGl0dGVyLmxhc3RJbmRleCArIChTVVBQT1JUU19ZID8gMCA6IHEpKSwgUy5sZW5ndGgpKSA9PT0gcFxuICAgICAgICApIHtcbiAgICAgICAgICBxID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHEsIHVuaWNvZGVNYXRjaGluZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQS5wdXNoKFMuc2xpY2UocCwgcSkpO1xuICAgICAgICAgIGlmIChBLmxlbmd0aCA9PT0gbGltKSByZXR1cm4gQTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSB6Lmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgQS5wdXNoKHpbaV0pO1xuICAgICAgICAgICAgaWYgKEEubGVuZ3RoID09PSBsaW0pIHJldHVybiBBO1xuICAgICAgICAgIH1cbiAgICAgICAgICBxID0gcCA9IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEEucHVzaChTLnNsaWNlKHApKTtcbiAgICAgIHJldHVybiBBO1xuICAgIH1cbiAgXTtcbn0pO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiB7IGU6IGZhbHNlLCB2OiBleGVjKCkgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7IGU6IHRydWUsIHY6IGUgfTtcbiAgfVxufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEMsIHgpIHtcbiAgYW5PYmplY3QoQyk7XG4gIGlmIChpc09iamVjdCh4KSAmJiB4LmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4geDtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZihDKTtcbiAgdmFyIHJlc29sdmUgPSBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlO1xuICByZXNvbHZlKHgpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgc3Ryb25nID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbi1zdHJvbmcnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBNQVAgPSAnTWFwJztcblxuLy8gMjMuMSBNYXAgT2JqZWN0c1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoTUFQLCBmdW5jdGlvbiAoZ2V0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBNYXAoKSB7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpOyB9O1xufSwge1xuICAvLyAyMy4xLjMuNiBNYXAucHJvdG90eXBlLmdldChrZXkpXG4gIGdldDogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgIHZhciBlbnRyeSA9IHN0cm9uZy5nZXRFbnRyeSh2YWxpZGF0ZSh0aGlzLCBNQVApLCBrZXkpO1xuICAgIHJldHVybiBlbnRyeSAmJiBlbnRyeS52O1xuICB9LFxuICAvLyAyMy4xLjMuOSBNYXAucHJvdG90eXBlLnNldChrZXksIHZhbHVlKVxuICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbHVlKSB7XG4gICAgcmV0dXJuIHN0cm9uZy5kZWYodmFsaWRhdGUodGhpcywgTUFQKSwga2V5ID09PSAwID8gMCA6IGtleSwgdmFsdWUpO1xuICB9XG59LCBzdHJvbmcsIHRydWUpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyICRpdGVyRGVmaW5lID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIGZhc3RLZXkgPSByZXF1aXJlKCcuL19tZXRhJykuZmFzdEtleTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBTSVpFID0gREVTQ1JJUFRPUlMgPyAnX3MnIDogJ3NpemUnO1xuXG52YXIgZ2V0RW50cnkgPSBmdW5jdGlvbiAodGhhdCwga2V5KSB7XG4gIC8vIGZhc3QgY2FzZVxuICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSk7XG4gIHZhciBlbnRyeTtcbiAgaWYgKGluZGV4ICE9PSAnRicpIHJldHVybiB0aGF0Ll9pW2luZGV4XTtcbiAgLy8gZnJvemVuIG9iamVjdCBjYXNlXG4gIGZvciAoZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7XG4gICAgaWYgKGVudHJ5LmsgPT0ga2V5KSByZXR1cm4gZW50cnk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24gKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpIHtcbiAgICB2YXIgQyA9IHdyYXBwZXIoZnVuY3Rpb24gKHRoYXQsIGl0ZXJhYmxlKSB7XG4gICAgICBhbkluc3RhbmNlKHRoYXQsIEMsIE5BTUUsICdfaScpO1xuICAgICAgdGhhdC5fdCA9IE5BTUU7ICAgICAgICAgLy8gY29sbGVjdGlvbiB0eXBlXG4gICAgICB0aGF0Ll9pID0gY3JlYXRlKG51bGwpOyAvLyBpbmRleFxuICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgLy8gZmlyc3QgZW50cnlcbiAgICAgIHRoYXQuX2wgPSB1bmRlZmluZWQ7ICAgIC8vIGxhc3QgZW50cnlcbiAgICAgIHRoYXRbU0laRV0gPSAwOyAgICAgICAgIC8vIHNpemVcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICB9KTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwge1xuICAgICAgLy8gMjMuMS4zLjEgTWFwLnByb3RvdHlwZS5jbGVhcigpXG4gICAgICAvLyAyMy4yLjMuMiBTZXQucHJvdG90eXBlLmNsZWFyKClcbiAgICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgZm9yICh2YXIgdGhhdCA9IHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBkYXRhID0gdGhhdC5faSwgZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7XG4gICAgICAgICAgZW50cnkuciA9IHRydWU7XG4gICAgICAgICAgaWYgKGVudHJ5LnApIGVudHJ5LnAgPSBlbnRyeS5wLm4gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVsZXRlIGRhdGFbZW50cnkuaV07XG4gICAgICAgIH1cbiAgICAgICAgdGhhdC5fZiA9IHRoYXQuX2wgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoYXRbU0laRV0gPSAwO1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjEuMy4zIE1hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcbiAgICAgIC8vIDIzLjIuMy40IFNldC5wcm90b3R5cGUuZGVsZXRlKHZhbHVlKVxuICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHRoYXQgPSB2YWxpZGF0ZSh0aGlzLCBOQU1FKTtcbiAgICAgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTtcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgdmFyIG5leHQgPSBlbnRyeS5uO1xuICAgICAgICAgIHZhciBwcmV2ID0gZW50cnkucDtcbiAgICAgICAgICBkZWxldGUgdGhhdC5faVtlbnRyeS5pXTtcbiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAocHJldikgcHJldi5uID0gbmV4dDtcbiAgICAgICAgICBpZiAobmV4dCkgbmV4dC5wID0gcHJldjtcbiAgICAgICAgICBpZiAodGhhdC5fZiA9PSBlbnRyeSkgdGhhdC5fZiA9IG5leHQ7XG4gICAgICAgICAgaWYgKHRoYXQuX2wgPT0gZW50cnkpIHRoYXQuX2wgPSBwcmV2O1xuICAgICAgICAgIHRoYXRbU0laRV0tLTtcbiAgICAgICAgfSByZXR1cm4gISFlbnRyeTtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4yLjMuNiBTZXQucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgICAgIC8vIDIzLjEuMy41IE1hcC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICAgICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgICAgICB2YWxpZGF0ZSh0aGlzLCBOQU1FKTtcbiAgICAgICAgdmFyIGYgPSBjdHgoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgICAgICB2YXIgZW50cnk7XG4gICAgICAgIHdoaWxlIChlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoaXMuX2YpIHtcbiAgICAgICAgICBmKGVudHJ5LnYsIGVudHJ5LmssIHRoaXMpO1xuICAgICAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuICAgICAgICAgIHdoaWxlIChlbnRyeSAmJiBlbnRyeS5yKSBlbnRyeSA9IGVudHJ5LnA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyAyMy4xLjMuNyBNYXAucHJvdG90eXBlLmhhcyhrZXkpXG4gICAgICAvLyAyMy4yLjMuNyBTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcbiAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh2YWxpZGF0ZSh0aGlzLCBOQU1FKSwga2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRQKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGUodGhpcywgTkFNRSlbU0laRV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIEM7XG4gIH0sXG4gIGRlZjogZnVuY3Rpb24gKHRoYXQsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpO1xuICAgIHZhciBwcmV2LCBpbmRleDtcbiAgICAvLyBjaGFuZ2UgZXhpc3RpbmcgZW50cnlcbiAgICBpZiAoZW50cnkpIHtcbiAgICAgIGVudHJ5LnYgPSB2YWx1ZTtcbiAgICAvLyBjcmVhdGUgbmV3IGVudHJ5XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoYXQuX2wgPSBlbnRyeSA9IHtcbiAgICAgICAgaTogaW5kZXggPSBmYXN0S2V5KGtleSwgdHJ1ZSksIC8vIDwtIGluZGV4XG4gICAgICAgIGs6IGtleSwgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBrZXlcbiAgICAgICAgdjogdmFsdWUsICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHZhbHVlXG4gICAgICAgIHA6IHByZXYgPSB0aGF0Ll9sLCAgICAgICAgICAgICAvLyA8LSBwcmV2aW91cyBlbnRyeVxuICAgICAgICBuOiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgLy8gPC0gbmV4dCBlbnRyeVxuICAgICAgICByOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gcmVtb3ZlZFxuICAgICAgfTtcbiAgICAgIGlmICghdGhhdC5fZikgdGhhdC5fZiA9IGVudHJ5O1xuICAgICAgaWYgKHByZXYpIHByZXYubiA9IGVudHJ5O1xuICAgICAgdGhhdFtTSVpFXSsrO1xuICAgICAgLy8gYWRkIHRvIGluZGV4XG4gICAgICBpZiAoaW5kZXggIT09ICdGJykgdGhhdC5faVtpbmRleF0gPSBlbnRyeTtcbiAgICB9IHJldHVybiB0aGF0O1xuICB9LFxuICBnZXRFbnRyeTogZ2V0RW50cnksXG4gIHNldFN0cm9uZzogZnVuY3Rpb24gKEMsIE5BTUUsIElTX01BUCkge1xuICAgIC8vIGFkZCAua2V5cywgLnZhbHVlcywgLmVudHJpZXMsIFtAQGl0ZXJhdG9yXVxuICAgIC8vIDIzLjEuMy40LCAyMy4xLjMuOCwgMjMuMS4zLjExLCAyMy4xLjMuMTIsIDIzLjIuMy41LCAyMy4yLjMuOCwgMjMuMi4zLjEwLCAyMy4yLjMuMTFcbiAgICAkaXRlckRlZmluZShDLCBOQU1FLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgICAgIHRoaXMuX3QgPSB2YWxpZGF0ZShpdGVyYXRlZCwgTkFNRSk7IC8vIHRhcmdldFxuICAgICAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgICAgICAgLy8ga2luZFxuICAgICAgdGhpcy5fbCA9IHVuZGVmaW5lZDsgICAgICAgICAgICAgICAgLy8gcHJldmlvdXNcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICB2YXIga2luZCA9IHRoYXQuX2s7XG4gICAgICB2YXIgZW50cnkgPSB0aGF0Ll9sO1xuICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG4gICAgICB3aGlsZSAoZW50cnkgJiYgZW50cnkucikgZW50cnkgPSBlbnRyeS5wO1xuICAgICAgLy8gZ2V0IG5leHQgZW50cnlcbiAgICAgIGlmICghdGhhdC5fdCB8fCAhKHRoYXQuX2wgPSBlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoYXQuX3QuX2YpKSB7XG4gICAgICAgIC8vIG9yIGZpbmlzaCB0aGUgaXRlcmF0aW9uXG4gICAgICAgIHRoYXQuX3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBzdGVwKDEpO1xuICAgICAgfVxuICAgICAgLy8gcmV0dXJuIHN0ZXAgYnkga2luZFxuICAgICAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBlbnRyeS5rKTtcbiAgICAgIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBlbnRyeS52KTtcbiAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7XG4gICAgfSwgSVNfTUFQID8gJ2VudHJpZXMnIDogJ3ZhbHVlcycsICFJU19NQVAsIHRydWUpO1xuXG4gICAgLy8gYWRkIFtAQHNwZWNpZXNdLCAyMy4xLjIuMiwgMjMuMi4yLjJcbiAgICBzZXRTcGVjaWVzKE5BTUUpO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHN0cm9uZyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tc3Ryb25nJyk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgU0VUID0gJ1NldCc7XG5cbi8vIDIzLjIgU2V0IE9iamVjdHNcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKFNFVCwgZnVuY3Rpb24gKGdldCkge1xuICByZXR1cm4gZnVuY3Rpb24gU2V0KCkgeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuMi4zLjEgU2V0LnByb3RvdHlwZS5hZGQodmFsdWUpXG4gIGFkZDogZnVuY3Rpb24gYWRkKHZhbHVlKSB7XG4gICAgcmV0dXJuIHN0cm9uZy5kZWYodmFsaWRhdGUodGhpcywgU0VUKSwgdmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZSwgdmFsdWUpO1xuICB9XG59LCBzdHJvbmcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGVhY2ggPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMCk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJyk7XG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9fb2JqZWN0LWFzc2lnbicpO1xudmFyIHdlYWsgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXdlYWsnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBJU19JRTExID0gIWdsb2JhbC5BY3RpdmVYT2JqZWN0ICYmICdBY3RpdmVYT2JqZWN0JyBpbiBnbG9iYWw7XG52YXIgV0VBS19NQVAgPSAnV2Vha01hcCc7XG52YXIgZ2V0V2VhayA9IG1ldGEuZ2V0V2VhaztcbnZhciBpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlO1xudmFyIHVuY2F1Z2h0RnJvemVuU3RvcmUgPSB3ZWFrLnVmc3RvcmU7XG52YXIgSW50ZXJuYWxNYXA7XG5cbnZhciB3cmFwcGVyID0gZnVuY3Rpb24gKGdldCkge1xuICByZXR1cm4gZnVuY3Rpb24gV2Vha01hcCgpIHtcbiAgICByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgfTtcbn07XG5cbnZhciBtZXRob2RzID0ge1xuICAvLyAyMy4zLjMuMyBXZWFrTWFwLnByb3RvdHlwZS5nZXQoa2V5KVxuICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICBpZiAoaXNPYmplY3Qoa2V5KSkge1xuICAgICAgdmFyIGRhdGEgPSBnZXRXZWFrKGtleSk7XG4gICAgICBpZiAoZGF0YSA9PT0gdHJ1ZSkgcmV0dXJuIHVuY2F1Z2h0RnJvemVuU3RvcmUodmFsaWRhdGUodGhpcywgV0VBS19NQVApKS5nZXQoa2V5KTtcbiAgICAgIHJldHVybiBkYXRhID8gZGF0YVt0aGlzLl9pXSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0sXG4gIC8vIDIzLjMuMy41IFdlYWtNYXAucHJvdG90eXBlLnNldChrZXksIHZhbHVlKVxuICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbHVlKSB7XG4gICAgcmV0dXJuIHdlYWsuZGVmKHZhbGlkYXRlKHRoaXMsIFdFQUtfTUFQKSwga2V5LCB2YWx1ZSk7XG4gIH1cbn07XG5cbi8vIDIzLjMgV2Vha01hcCBPYmplY3RzXG52YXIgJFdlYWtNYXAgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24nKShXRUFLX01BUCwgd3JhcHBlciwgbWV0aG9kcywgd2VhaywgdHJ1ZSwgdHJ1ZSk7XG5cbi8vIElFMTEgV2Vha01hcCBmcm96ZW4ga2V5cyBmaXhcbmlmIChOQVRJVkVfV0VBS19NQVAgJiYgSVNfSUUxMSkge1xuICBJbnRlcm5hbE1hcCA9IHdlYWsuZ2V0Q29uc3RydWN0b3Iod3JhcHBlciwgV0VBS19NQVApO1xuICBhc3NpZ24oSW50ZXJuYWxNYXAucHJvdG90eXBlLCBtZXRob2RzKTtcbiAgbWV0YS5ORUVEID0gdHJ1ZTtcbiAgZWFjaChbJ2RlbGV0ZScsICdoYXMnLCAnZ2V0JywgJ3NldCddLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHByb3RvID0gJFdlYWtNYXAucHJvdG90eXBlO1xuICAgIHZhciBtZXRob2QgPSBwcm90b1trZXldO1xuICAgIHJlZGVmaW5lKHByb3RvLCBrZXksIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAvLyBzdG9yZSBmcm96ZW4gb2JqZWN0cyBvbiBpbnRlcm5hbCB3ZWFrbWFwIHNoaW1cbiAgICAgIGlmIChpc09iamVjdChhKSAmJiAhaXNFeHRlbnNpYmxlKGEpKSB7XG4gICAgICAgIGlmICghdGhpcy5fZikgdGhpcy5fZiA9IG5ldyBJbnRlcm5hbE1hcCgpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fZltrZXldKGEsIGIpO1xuICAgICAgICByZXR1cm4ga2V5ID09ICdzZXQnID8gdGhpcyA6IHJlc3VsdDtcbiAgICAgIC8vIHN0b3JlIGFsbCB0aGUgcmVzdCBvbiBuYXRpdmUgd2Vha21hcFxuICAgICAgfSByZXR1cm4gbWV0aG9kLmNhbGwodGhpcywgYSwgYik7XG4gICAgfSk7XG4gIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgZ2V0V2VhayA9IHJlcXVpcmUoJy4vX21ldGEnKS5nZXRXZWFrO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIGNyZWF0ZUFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpO1xudmFyICRoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBhcnJheUZpbmQgPSBjcmVhdGVBcnJheU1ldGhvZCg1KTtcbnZhciBhcnJheUZpbmRJbmRleCA9IGNyZWF0ZUFycmF5TWV0aG9kKDYpO1xudmFyIGlkID0gMDtcblxuLy8gZmFsbGJhY2sgZm9yIHVuY2F1Z2h0IGZyb3plbiBrZXlzXG52YXIgdW5jYXVnaHRGcm96ZW5TdG9yZSA9IGZ1bmN0aW9uICh0aGF0KSB7XG4gIHJldHVybiB0aGF0Ll9sIHx8ICh0aGF0Ll9sID0gbmV3IFVuY2F1Z2h0RnJvemVuU3RvcmUoKSk7XG59O1xudmFyIFVuY2F1Z2h0RnJvemVuU3RvcmUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYSA9IFtdO1xufTtcbnZhciBmaW5kVW5jYXVnaHRGcm96ZW4gPSBmdW5jdGlvbiAoc3RvcmUsIGtleSkge1xuICByZXR1cm4gYXJyYXlGaW5kKHN0b3JlLmEsIGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBpdFswXSA9PT0ga2V5O1xuICB9KTtcbn07XG5VbmNhdWdodEZyb3plblN0b3JlLnByb3RvdHlwZSA9IHtcbiAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYgKGVudHJ5KSByZXR1cm4gZW50cnlbMV07XG4gIH0sXG4gIGhhczogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiAhIWZpbmRVbmNhdWdodEZyb3plbih0aGlzLCBrZXkpO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYgKGVudHJ5KSBlbnRyeVsxXSA9IHZhbHVlO1xuICAgIGVsc2UgdGhpcy5hLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSxcbiAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgaW5kZXggPSBhcnJheUZpbmRJbmRleCh0aGlzLmEsIGZ1bmN0aW9uIChpdCkge1xuICAgICAgcmV0dXJuIGl0WzBdID09PSBrZXk7XG4gICAgfSk7XG4gICAgaWYgKH5pbmRleCkgdGhpcy5hLnNwbGljZShpbmRleCwgMSk7XG4gICAgcmV0dXJuICEhfmluZGV4O1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uICh3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKSB7XG4gICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBpdGVyYWJsZSkge1xuICAgICAgYW5JbnN0YW5jZSh0aGF0LCBDLCBOQU1FLCAnX2knKTtcbiAgICAgIHRoYXQuX3QgPSBOQU1FOyAgICAgIC8vIGNvbGxlY3Rpb24gdHlwZVxuICAgICAgdGhhdC5faSA9IGlkKys7ICAgICAgLy8gY29sbGVjdGlvbiBpZFxuICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgLy8gbGVhayBzdG9yZSBmb3IgdW5jYXVnaHQgZnJvemVuIG9iamVjdHNcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICB9KTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwge1xuICAgICAgLy8gMjMuMy4zLjIgV2Vha01hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcbiAgICAgIC8vIDIzLjQuMy4zIFdlYWtTZXQucHJvdG90eXBlLmRlbGV0ZSh2YWx1ZSlcbiAgICAgICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmICghaXNPYmplY3Qoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWsoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIE5BTUUpKVsnZGVsZXRlJ10oa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgJGhhcyhkYXRhLCB0aGlzLl9pKSAmJiBkZWxldGUgZGF0YVt0aGlzLl9pXTtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4zLjMuNCBXZWFrTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuICAgICAgLy8gMjMuNC4zLjQgV2Vha1NldC5wcm90b3R5cGUuaGFzKHZhbHVlKVxuICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICAgIGlmICghaXNPYmplY3Qoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWsoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIE5BTUUpKS5oYXMoa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgJGhhcyhkYXRhLCB0aGlzLl9pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQztcbiAgfSxcbiAgZGVmOiBmdW5jdGlvbiAodGhhdCwga2V5LCB2YWx1ZSkge1xuICAgIHZhciBkYXRhID0gZ2V0V2Vhayhhbk9iamVjdChrZXkpLCB0cnVlKTtcbiAgICBpZiAoZGF0YSA9PT0gdHJ1ZSkgdW5jYXVnaHRGcm96ZW5TdG9yZSh0aGF0KS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgZWxzZSBkYXRhW3RoYXQuX2ldID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoYXQ7XG4gIH0sXG4gIHVmc3RvcmU6IHVuY2F1Z2h0RnJvemVuU3RvcmVcbn07XG4iLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2luZGV4XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gIHZhciBudW1iZXIgPSB0b0ludGVnZXIoaXQpO1xuICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgobnVtYmVyKTtcbiAgaWYgKG51bWJlciAhPT0gbGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBsZW5ndGghJyk7XG4gIHJldHVybiBsZW5ndGg7XG59O1xuIiwiLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgUmVmbGVjdCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlJlZmxlY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IFJlZmxlY3QgJiYgUmVmbGVjdC5vd25LZXlzIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnT1BOLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIHJldHVybiBnZXRTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0U3ltYm9scyhpdCkpIDoga2V5cztcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWZsYXRNYXAvI3NlYy1GbGF0dGVuSW50b0FycmF5XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIElTX0NPTkNBVF9TUFJFQURBQkxFID0gcmVxdWlyZSgnLi9fd2tzJykoJ2lzQ29uY2F0U3ByZWFkYWJsZScpO1xuXG5mdW5jdGlvbiBmbGF0dGVuSW50b0FycmF5KHRhcmdldCwgb3JpZ2luYWwsIHNvdXJjZSwgc291cmNlTGVuLCBzdGFydCwgZGVwdGgsIG1hcHBlciwgdGhpc0FyZykge1xuICB2YXIgdGFyZ2V0SW5kZXggPSBzdGFydDtcbiAgdmFyIHNvdXJjZUluZGV4ID0gMDtcbiAgdmFyIG1hcEZuID0gbWFwcGVyID8gY3R4KG1hcHBlciwgdGhpc0FyZywgMykgOiBmYWxzZTtcbiAgdmFyIGVsZW1lbnQsIHNwcmVhZGFibGU7XG5cbiAgd2hpbGUgKHNvdXJjZUluZGV4IDwgc291cmNlTGVuKSB7XG4gICAgaWYgKHNvdXJjZUluZGV4IGluIHNvdXJjZSkge1xuICAgICAgZWxlbWVudCA9IG1hcEZuID8gbWFwRm4oc291cmNlW3NvdXJjZUluZGV4XSwgc291cmNlSW5kZXgsIG9yaWdpbmFsKSA6IHNvdXJjZVtzb3VyY2VJbmRleF07XG5cbiAgICAgIHNwcmVhZGFibGUgPSBmYWxzZTtcbiAgICAgIGlmIChpc09iamVjdChlbGVtZW50KSkge1xuICAgICAgICBzcHJlYWRhYmxlID0gZWxlbWVudFtJU19DT05DQVRfU1BSRUFEQUJMRV07XG4gICAgICAgIHNwcmVhZGFibGUgPSBzcHJlYWRhYmxlICE9PSB1bmRlZmluZWQgPyAhIXNwcmVhZGFibGUgOiBpc0FycmF5KGVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3ByZWFkYWJsZSAmJiBkZXB0aCA+IDApIHtcbiAgICAgICAgdGFyZ2V0SW5kZXggPSBmbGF0dGVuSW50b0FycmF5KHRhcmdldCwgb3JpZ2luYWwsIGVsZW1lbnQsIHRvTGVuZ3RoKGVsZW1lbnQubGVuZ3RoKSwgdGFyZ2V0SW5kZXgsIGRlcHRoIC0gMSkgLSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID49IDB4MWZmZmZmZmZmZmZmZmYpIHRocm93IFR5cGVFcnJvcigpO1xuICAgICAgICB0YXJnZXRbdGFyZ2V0SW5kZXhdID0gZWxlbWVudDtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0SW5kZXgrKztcbiAgICB9XG4gICAgc291cmNlSW5kZXgrKztcbiAgfVxuICByZXR1cm4gdGFyZ2V0SW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdHRlbkludG9BcnJheTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciByZXBlYXQgPSByZXF1aXJlKCcuL19zdHJpbmctcmVwZWF0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgbWF4TGVuZ3RoLCBmaWxsU3RyaW5nLCBsZWZ0KSB7XG4gIHZhciBTID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICB2YXIgc3RyaW5nTGVuZ3RoID0gUy5sZW5ndGg7XG4gIHZhciBmaWxsU3RyID0gZmlsbFN0cmluZyA9PT0gdW5kZWZpbmVkID8gJyAnIDogU3RyaW5nKGZpbGxTdHJpbmcpO1xuICB2YXIgaW50TWF4TGVuZ3RoID0gdG9MZW5ndGgobWF4TGVuZ3RoKTtcbiAgaWYgKGludE1heExlbmd0aCA8PSBzdHJpbmdMZW5ndGggfHwgZmlsbFN0ciA9PSAnJykgcmV0dXJuIFM7XG4gIHZhciBmaWxsTGVuID0gaW50TWF4TGVuZ3RoIC0gc3RyaW5nTGVuZ3RoO1xuICB2YXIgc3RyaW5nRmlsbGVyID0gcmVwZWF0LmNhbGwoZmlsbFN0ciwgTWF0aC5jZWlsKGZpbGxMZW4gLyBmaWxsU3RyLmxlbmd0aCkpO1xuICBpZiAoc3RyaW5nRmlsbGVyLmxlbmd0aCA+IGZpbGxMZW4pIHN0cmluZ0ZpbGxlciA9IHN0cmluZ0ZpbGxlci5zbGljZSgwLCBmaWxsTGVuKTtcbiAgcmV0dXJuIGxlZnQgPyBzdHJpbmdGaWxsZXIgKyBTIDogUyArIHN0cmluZ0ZpbGxlcjtcbn07XG4iLCJyZXF1aXJlKCcuL193a3MtZGVmaW5lJykoJ2FzeW5jSXRlcmF0b3InKTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGlzRW51bSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXNFbnRyaWVzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdChpdCk7XG4gICAgdmFyIGtleXMgPSBnZXRLZXlzKE8pO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGkpIHtcbiAgICAgIGtleSA9IGtleXNbaSsrXTtcbiAgICAgIGlmICghREVTQ1JJUFRPUlMgfHwgaXNFbnVtLmNhbGwoTywga2V5KSkge1xuICAgICAgICByZXN1bHQucHVzaChpc0VudHJpZXMgPyBba2V5LCBPW2tleV1dIDogT1trZXldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBmcm9tID0gcmVxdWlyZSgnLi9fYXJyYXktZnJvbS1pdGVyYWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTkFNRSkge1xuICByZXR1cm4gZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIGlmIChjbGFzc29mKHRoaXMpICE9IE5BTUUpIHRocm93IFR5cGVFcnJvcihOQU1FICsgXCIjdG9KU09OIGlzbid0IGdlbmVyaWNcIik7XG4gICAgcmV0dXJuIGZyb20odGhpcyk7XG4gIH07XG59O1xuIiwidmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXIsIElURVJBVE9SKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yT2YoaXRlciwgZmFsc2UsIHJlc3VsdC5wdXNoLCByZXN1bHQsIElURVJBVE9SKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguc2NhbGUgfHwgZnVuY3Rpb24gc2NhbGUoeCwgaW5Mb3csIGluSGlnaCwgb3V0TG93LCBvdXRIaWdoKSB7XG4gIGlmIChcbiAgICBhcmd1bWVudHMubGVuZ3RoID09PSAwXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICB8fCB4ICE9IHhcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IGluTG93ICE9IGluTG93XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICB8fCBpbkhpZ2ggIT0gaW5IaWdoXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICB8fCBvdXRMb3cgIT0gb3V0TG93XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICB8fCBvdXRIaWdoICE9IG91dEhpZ2hcbiAgKSByZXR1cm4gTmFOO1xuICBpZiAoeCA9PT0gSW5maW5pdHkgfHwgeCA9PT0gLUluZmluaXR5KSByZXR1cm4geDtcbiAgcmV0dXJuICh4IC0gaW5Mb3cpICogKG91dEhpZ2ggLSBvdXRMb3cpIC8gKGluSGlnaCAtIGluTG93KSArIG91dExvdztcbn07XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnMsIHZhbGlkYXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi91dGlsL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IGlzSVBGUyBmcm9tICdpcy1pcGZzJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IFBpbmF0YU9wdGlvbnMgfSBmcm9tICcuL3BpbkZpbGVUb0lQRlMnO1xuaW1wb3J0IHsgUGluYXRhTWV0YWRhdGEgfSBmcm9tICcuLi9kYXRhL3Bpbkxpc3QvcGluTGlzdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhUGluQnlIYXNoUGluT3B0aW9ucyB7XG4gICAgcGluYXRhTWV0YWRhdGE/OiBQaW5hdGFNZXRhZGF0YTtcbiAgICBwaW5hdGFPcHRpb25zPzogUGluYXRhT3B0aW9ucyA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhUGluQnlIYXNoUmVzcG9uc2Uge1xuICAgIGlkOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgaXBmc0hhc2g6IHN0cmluZztcbiAgICBzdGF0dXM6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBpbkJ5SGFzaChjb25maWc6IFBpbmF0YUNvbmZpZywgaGFzaFRvUGluOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCFoYXNoVG9QaW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdoYXNoVG9QaW4gdmFsdWUgaXMgcmVxdWlyZWQgZm9yIHBpbm5pbmcgYnkgaGFzaCcpO1xuICAgIH1cbiAgICBpZiAoIWlzSVBGUy5jaWQoaGFzaFRvUGluKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hhc2hUb1BpbiB2YWx1ZSBpcyBhbiBpbnZhbGlkIElQRlMgQ0lEJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtiYXNlVXJsfS9waW5uaW5nL3BpbkJ5SGFzaGA7XG4gICAgY29uc3QgYm9keSA6IHtcbiAgICAgICAgaGFzaFRvUGluOiBhbnksXG4gICAgICAgIHBpbmF0YU9wdGlvbnM6IGFueSxcbiAgICAgICAgcGluYXRhTWV0YWRhdGE/OiBhbnksXG4gICAgfSA9IHtcbiAgICAgICAgaGFzaFRvUGluOiBoYXNoVG9QaW4sXG4gICAgICAgIHBpbmF0YU9wdGlvbnM6IHt9XG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIGlmIChvcHRpb25zLnBpbmF0YU9wdGlvbnMpIHtcbiAgICAgICAgICAgIGJvZHkucGluYXRhT3B0aW9ucyA9IG9wdGlvbnMucGluYXRhT3B0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5waW5hdGFNZXRhZGF0YSkge1xuICAgICAgICAgICAgdmFsaWRhdGVNZXRhZGF0YShvcHRpb25zLnBpbmF0YU1ldGFkYXRhKTtcbiAgICAgICAgICAgIGJvZHkucGluYXRhTWV0YWRhdGEgPSBvcHRpb25zLnBpbmF0YU1ldGFkYXRhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYXhpb3MucG9zdChcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgIHsuLi5jcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnMoY29uZmlnKX0pXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGB1bmtub3duIHNlcnZlciByZXNwb25zZSB3aGlsZSBhZGRpbmcgdG8gcGluIHF1ZXVlOiAke3Jlc3VsdH1gKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRFcnJvciA9IGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHJlamVjdChmb3JtYXR0ZWRFcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJpbmQoZm4sIHRoaXNBcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJncyk7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQ2FuY2VsKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZS5fX0NBTkNFTF9fKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBub3JtYWxpemVIZWFkZXJOYW1lID0gcmVxdWlyZSgnLi9oZWxwZXJzL25vcm1hbGl6ZUhlYWRlck5hbWUnKTtcblxudmFyIERFRkFVTFRfQ09OVEVOVF9UWVBFID0ge1xuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbn07XG5cbmZ1bmN0aW9uIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCB2YWx1ZSkge1xuICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnMpICYmIHV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSkge1xuICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gdmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdEFkYXB0ZXIoKSB7XG4gIHZhciBhZGFwdGVyO1xuICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vIEZvciBicm93c2VycyB1c2UgWEhSIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy94aHInKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpID09PSAnW29iamVjdCBwcm9jZXNzXScpIHtcbiAgICAvLyBGb3Igbm9kZSB1c2UgSFRUUCBhZGFwdGVyXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoJy4vYWRhcHRlcnMvaHR0cCcpO1xuICB9XG4gIHJldHVybiBhZGFwdGVyO1xufVxuXG52YXIgZGVmYXVsdHMgPSB7XG4gIGFkYXB0ZXI6IGdldERlZmF1bHRBZGFwdGVyKCksXG5cbiAgdHJhbnNmb3JtUmVxdWVzdDogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlcXVlc3QoZGF0YSwgaGVhZGVycykge1xuICAgIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgJ0FjY2VwdCcpO1xuICAgIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgJ0NvbnRlbnQtVHlwZScpO1xuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0FycmF5QnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0J1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNTdHJlYW0oZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzRmlsZShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCbG9iKGRhdGEpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGRhdGEpKSB7XG4gICAgICByZXR1cm4gZGF0YS5idWZmZXI7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhkYXRhKSkge1xuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCcpO1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCcpO1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgdHJhbnNmb3JtUmVzcG9uc2U6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXNwb25zZShkYXRhKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICB9IGNhdGNoIChlKSB7IC8qIElnbm9yZSAqLyB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICAvKipcbiAgICogQSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBhYm9ydCBhIHJlcXVlc3QuIElmIHNldCB0byAwIChkZWZhdWx0KSBhXG4gICAqIHRpbWVvdXQgaXMgbm90IGNyZWF0ZWQuXG4gICAqL1xuICB0aW1lb3V0OiAwLFxuXG4gIHhzcmZDb29raWVOYW1lOiAnWFNSRi1UT0tFTicsXG4gIHhzcmZIZWFkZXJOYW1lOiAnWC1YU1JGLVRPS0VOJyxcblxuICBtYXhDb250ZW50TGVuZ3RoOiAtMSxcbiAgbWF4Qm9keUxlbmd0aDogLTEsXG5cbiAgdmFsaWRhdGVTdGF0dXM6IGZ1bmN0aW9uIHZhbGlkYXRlU3RhdHVzKHN0YXR1cykge1xuICAgIHJldHVybiBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcbiAgfVxufTtcblxuZGVmYXVsdHMuaGVhZGVycyA9IHtcbiAgY29tbW9uOiB7XG4gICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonXG4gIH1cbn07XG5cbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0ge307XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0gdXRpbHMubWVyZ2UoREVGQVVMVF9DT05URU5UX1RZUEUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4vY3JlYXRlRXJyb3InKTtcblxuLyoqXG4gKiBSZXNvbHZlIG9yIHJlamVjdCBhIFByb21pc2UgYmFzZWQgb24gcmVzcG9uc2Ugc3RhdHVzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmUgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0IEEgZnVuY3Rpb24gdGhhdCByZWplY3RzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSkge1xuICB2YXIgdmFsaWRhdGVTdGF0dXMgPSByZXNwb25zZS5jb25maWcudmFsaWRhdGVTdGF0dXM7XG4gIGlmICghcmVzcG9uc2Uuc3RhdHVzIHx8ICF2YWxpZGF0ZVN0YXR1cyB8fCB2YWxpZGF0ZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMpKSB7XG4gICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgcmVqZWN0KGNyZWF0ZUVycm9yKFxuICAgICAgJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHJlc3BvbnNlLmNvbmZpZyxcbiAgICAgIG51bGwsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVcGRhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmZpZywgZXJyb3IgY29kZSwgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIFRoZSBlcnJvciB0byB1cGRhdGUuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGVycm9yLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICBlcnJvci5jb25maWcgPSBjb25maWc7XG4gIGlmIChjb2RlKSB7XG4gICAgZXJyb3IuY29kZSA9IGNvZGU7XG4gIH1cblxuICBlcnJvci5yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgZXJyb3IucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgZXJyb3IuaXNBeGlvc0Vycm9yID0gdHJ1ZTtcblxuICBlcnJvci50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFN0YW5kYXJkXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAvLyBNaWNyb3NvZnRcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgbnVtYmVyOiB0aGlzLm51bWJlcixcbiAgICAgIC8vIE1vemlsbGFcbiAgICAgIGZpbGVOYW1lOiB0aGlzLmZpbGVOYW1lLFxuICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxuICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcixcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgLy8gQXhpb3NcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBjb2RlOiB0aGlzLmNvZGVcbiAgICB9O1xuICB9O1xuICByZXR1cm4gZXJyb3I7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBYnNvbHV0ZVVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTCcpO1xudmFyIGNvbWJpbmVVUkxzID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb21iaW5lVVJMcycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgYmFzZVVSTCB3aXRoIHRoZSByZXF1ZXN0ZWRVUkwsXG4gKiBvbmx5IHdoZW4gdGhlIHJlcXVlc3RlZFVSTCBpcyBub3QgYWxyZWFkeSBhbiBhYnNvbHV0ZSBVUkwuXG4gKiBJZiB0aGUgcmVxdWVzdFVSTCBpcyBhYnNvbHV0ZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXF1ZXN0ZWRVUkwgdW50b3VjaGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3RlZFVSTCBBYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwgdG8gY29tYmluZVxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIGZ1bGwgcGF0aFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJ1aWxkRnVsbFBhdGgoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKSB7XG4gIGlmIChiYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKHJlcXVlc3RlZFVSTCkpIHtcbiAgICByZXR1cm4gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKTtcbiAgfVxuICByZXR1cm4gcmVxdWVzdGVkVVJMO1xufTtcbiIsInZhciB1cmwgPSByZXF1aXJlKFwidXJsXCIpO1xudmFyIFVSTCA9IHVybC5VUkw7XG52YXIgaHR0cCA9IHJlcXVpcmUoXCJodHRwXCIpO1xudmFyIGh0dHBzID0gcmVxdWlyZShcImh0dHBzXCIpO1xudmFyIFdyaXRhYmxlID0gcmVxdWlyZShcInN0cmVhbVwiKS5Xcml0YWJsZTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xudmFyIGRlYnVnID0gcmVxdWlyZShcIi4vZGVidWdcIik7XG5cbi8vIENyZWF0ZSBoYW5kbGVycyB0aGF0IHBhc3MgZXZlbnRzIGZyb20gbmF0aXZlIHJlcXVlc3RzXG52YXIgZXZlbnRIYW5kbGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5bXCJhYm9ydFwiLCBcImFib3J0ZWRcIiwgXCJjb25uZWN0XCIsIFwiZXJyb3JcIiwgXCJzb2NrZXRcIiwgXCJ0aW1lb3V0XCJdLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGV2ZW50SGFuZGxlcnNbZXZlbnRdID0gZnVuY3Rpb24gKGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgICB0aGlzLl9yZWRpcmVjdGFibGUuZW1pdChldmVudCwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gIH07XG59KTtcblxuLy8gRXJyb3IgdHlwZXMgd2l0aCBjb2Rlc1xudmFyIFJlZGlyZWN0aW9uRXJyb3IgPSBjcmVhdGVFcnJvclR5cGUoXG4gIFwiRVJSX0ZSX1JFRElSRUNUSU9OX0ZBSUxVUkVcIixcbiAgXCJcIlxuKTtcbnZhciBUb29NYW55UmVkaXJlY3RzRXJyb3IgPSBjcmVhdGVFcnJvclR5cGUoXG4gIFwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUU1wiLFxuICBcIk1heGltdW0gbnVtYmVyIG9mIHJlZGlyZWN0cyBleGNlZWRlZFwiXG4pO1xudmFyIE1heEJvZHlMZW5ndGhFeGNlZWRlZEVycm9yID0gY3JlYXRlRXJyb3JUeXBlKFxuICBcIkVSUl9GUl9NQVhfQk9EWV9MRU5HVEhfRVhDRUVERURcIixcbiAgXCJSZXF1ZXN0IGJvZHkgbGFyZ2VyIHRoYW4gbWF4Qm9keUxlbmd0aCBsaW1pdFwiXG4pO1xudmFyIFdyaXRlQWZ0ZXJFbmRFcnJvciA9IGNyZWF0ZUVycm9yVHlwZShcbiAgXCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORFwiLFxuICBcIndyaXRlIGFmdGVyIGVuZFwiXG4pO1xuXG4vLyBBbiBIVFRQKFMpIHJlcXVlc3QgdGhhdCBjYW4gYmUgcmVkaXJlY3RlZFxuZnVuY3Rpb24gUmVkaXJlY3RhYmxlUmVxdWVzdChvcHRpb25zLCByZXNwb25zZUNhbGxiYWNrKSB7XG4gIC8vIEluaXRpYWxpemUgdGhlIHJlcXVlc3RcbiAgV3JpdGFibGUuY2FsbCh0aGlzKTtcbiAgdGhpcy5fc2FuaXRpemVPcHRpb25zKG9wdGlvbnMpO1xuICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgdGhpcy5fZW5kZWQgPSBmYWxzZTtcbiAgdGhpcy5fZW5kaW5nID0gZmFsc2U7XG4gIHRoaXMuX3JlZGlyZWN0Q291bnQgPSAwO1xuICB0aGlzLl9yZWRpcmVjdHMgPSBbXTtcbiAgdGhpcy5fcmVxdWVzdEJvZHlMZW5ndGggPSAwO1xuICB0aGlzLl9yZXF1ZXN0Qm9keUJ1ZmZlcnMgPSBbXTtcblxuICAvLyBBdHRhY2ggYSBjYWxsYmFjayBpZiBwYXNzZWRcbiAgaWYgKHJlc3BvbnNlQ2FsbGJhY2spIHtcbiAgICB0aGlzLm9uKFwicmVzcG9uc2VcIiwgcmVzcG9uc2VDYWxsYmFjayk7XG4gIH1cblxuICAvLyBSZWFjdCB0byByZXNwb25zZXMgb2YgbmF0aXZlIHJlcXVlc3RzXG4gIHZhciBzZWxmID0gdGhpcztcbiAgdGhpcy5fb25OYXRpdmVSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgIHNlbGYuX3Byb2Nlc3NSZXNwb25zZShyZXNwb25zZSk7XG4gIH07XG5cbiAgLy8gUGVyZm9ybSB0aGUgZmlyc3QgcmVxdWVzdFxuICB0aGlzLl9wZXJmb3JtUmVxdWVzdCgpO1xufVxuUmVkaXJlY3RhYmxlUmVxdWVzdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFdyaXRhYmxlLnByb3RvdHlwZSk7XG5cbi8vIFdyaXRlcyBidWZmZXJlZCBkYXRhIHRvIHRoZSBjdXJyZW50IG5hdGl2ZSByZXF1ZXN0XG5SZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgLy8gV3JpdGluZyBpcyBub3QgYWxsb3dlZCBpZiBlbmQgaGFzIGJlZW4gY2FsbGVkXG4gIGlmICh0aGlzLl9lbmRpbmcpIHtcbiAgICB0aHJvdyBuZXcgV3JpdGVBZnRlckVuZEVycm9yKCk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBpbnB1dCBhbmQgc2hpZnQgcGFyYW1ldGVycyBpZiBuZWNlc3NhcnlcbiAgaWYgKCEodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGRhdGEgPT09IFwib2JqZWN0XCIgJiYgKFwibGVuZ3RoXCIgaW4gZGF0YSkpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImRhdGEgc2hvdWxkIGJlIGEgc3RyaW5nLCBCdWZmZXIgb3IgVWludDhBcnJheVwiKTtcbiAgfVxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBjYWxsYmFjayA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIC8vIElnbm9yZSBlbXB0eSBidWZmZXJzLCBzaW5jZSB3cml0aW5nIHRoZW0gZG9lc24ndCBpbnZva2UgdGhlIGNhbGxiYWNrXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvMjIwNjZcbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgLy8gT25seSB3cml0ZSB3aGVuIHdlIGRvbid0IGV4Y2VlZCB0aGUgbWF4aW11bSBib2R5IGxlbmd0aFxuICBpZiAodGhpcy5fcmVxdWVzdEJvZHlMZW5ndGggKyBkYXRhLmxlbmd0aCA8PSB0aGlzLl9vcHRpb25zLm1heEJvZHlMZW5ndGgpIHtcbiAgICB0aGlzLl9yZXF1ZXN0Qm9keUxlbmd0aCArPSBkYXRhLmxlbmd0aDtcbiAgICB0aGlzLl9yZXF1ZXN0Qm9keUJ1ZmZlcnMucHVzaCh7IGRhdGE6IGRhdGEsIGVuY29kaW5nOiBlbmNvZGluZyB9KTtcbiAgICB0aGlzLl9jdXJyZW50UmVxdWVzdC53cml0ZShkYXRhLCBlbmNvZGluZywgY2FsbGJhY2spO1xuICB9XG4gIC8vIEVycm9yIHdoZW4gd2UgZXhjZWVkIHRoZSBtYXhpbXVtIGJvZHkgbGVuZ3RoXG4gIGVsc2Uge1xuICAgIHRoaXMuZW1pdChcImVycm9yXCIsIG5ldyBNYXhCb2R5TGVuZ3RoRXhjZWVkZWRFcnJvcigpKTtcbiAgICB0aGlzLmFib3J0KCk7XG4gIH1cbn07XG5cbi8vIEVuZHMgdGhlIGN1cnJlbnQgbmF0aXZlIHJlcXVlc3RcblJlZGlyZWN0YWJsZVJlcXVlc3QucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChkYXRhLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgLy8gU2hpZnQgcGFyYW1ldGVycyBpZiBuZWNlc3NhcnlcbiAgaWYgKHR5cGVvZiBkYXRhID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBjYWxsYmFjayA9IGRhdGE7XG4gICAgZGF0YSA9IGVuY29kaW5nID0gbnVsbDtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGNhbGxiYWNrID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgLy8gV3JpdGUgZGF0YSBpZiBuZWVkZWQgYW5kIGVuZFxuICBpZiAoIWRhdGEpIHtcbiAgICB0aGlzLl9lbmRlZCA9IHRoaXMuX2VuZGluZyA9IHRydWU7XG4gICAgdGhpcy5fY3VycmVudFJlcXVlc3QuZW5kKG51bGwsIG51bGwsIGNhbGxiYWNrKTtcbiAgfVxuICBlbHNlIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGN1cnJlbnRSZXF1ZXN0ID0gdGhpcy5fY3VycmVudFJlcXVlc3Q7XG4gICAgdGhpcy53cml0ZShkYXRhLCBlbmNvZGluZywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fZW5kZWQgPSB0cnVlO1xuICAgICAgY3VycmVudFJlcXVlc3QuZW5kKG51bGwsIG51bGwsIGNhbGxiYWNrKTtcbiAgICB9KTtcbiAgICB0aGlzLl9lbmRpbmcgPSB0cnVlO1xuICB9XG59O1xuXG4vLyBTZXRzIGEgaGVhZGVyIHZhbHVlIG9uIHRoZSBjdXJyZW50IG5hdGl2ZSByZXF1ZXN0XG5SZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZS5zZXRIZWFkZXIgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5fb3B0aW9ucy5oZWFkZXJzW25hbWVdID0gdmFsdWU7XG4gIHRoaXMuX2N1cnJlbnRSZXF1ZXN0LnNldEhlYWRlcihuYW1lLCB2YWx1ZSk7XG59O1xuXG4vLyBDbGVhcnMgYSBoZWFkZXIgdmFsdWUgb24gdGhlIGN1cnJlbnQgbmF0aXZlIHJlcXVlc3RcblJlZGlyZWN0YWJsZVJlcXVlc3QucHJvdG90eXBlLnJlbW92ZUhlYWRlciA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLl9vcHRpb25zLmhlYWRlcnNbbmFtZV07XG4gIHRoaXMuX2N1cnJlbnRSZXF1ZXN0LnJlbW92ZUhlYWRlcihuYW1lKTtcbn07XG5cbi8vIEdsb2JhbCB0aW1lb3V0IGZvciBhbGwgdW5kZXJseWluZyByZXF1ZXN0c1xuUmVkaXJlY3RhYmxlUmVxdWVzdC5wcm90b3R5cGUuc2V0VGltZW91dCA9IGZ1bmN0aW9uIChtc2VjcywgY2FsbGJhY2spIHtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5vbmNlKFwidGltZW91dFwiLCBjYWxsYmFjayk7XG4gIH1cblxuICBpZiAodGhpcy5zb2NrZXQpIHtcbiAgICBzdGFydFRpbWVyKHRoaXMsIG1zZWNzKTtcbiAgfVxuICBlbHNlIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5fY3VycmVudFJlcXVlc3Qub25jZShcInNvY2tldFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzdGFydFRpbWVyKHNlbGYsIG1zZWNzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRoaXMub25jZShcInJlc3BvbnNlXCIsIGNsZWFyVGltZXIpO1xuICB0aGlzLm9uY2UoXCJlcnJvclwiLCBjbGVhclRpbWVyKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIHN0YXJ0VGltZXIocmVxdWVzdCwgbXNlY3MpIHtcbiAgY2xlYXJUaW1lb3V0KHJlcXVlc3QuX3RpbWVvdXQpO1xuICByZXF1ZXN0Ll90aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgcmVxdWVzdC5lbWl0KFwidGltZW91dFwiKTtcbiAgfSwgbXNlY3MpO1xufVxuXG5mdW5jdGlvbiBjbGVhclRpbWVyKCkge1xuICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7XG59XG5cbi8vIFByb3h5IGFsbCBvdGhlciBwdWJsaWMgQ2xpZW50UmVxdWVzdCBtZXRob2RzXG5bXG4gIFwiYWJvcnRcIiwgXCJmbHVzaEhlYWRlcnNcIiwgXCJnZXRIZWFkZXJcIixcbiAgXCJzZXROb0RlbGF5XCIsIFwic2V0U29ja2V0S2VlcEFsaXZlXCIsXG5dLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICBSZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJlcXVlc3RbbWV0aG9kXShhLCBiKTtcbiAgfTtcbn0pO1xuXG4vLyBQcm94eSBhbGwgcHVibGljIENsaWVudFJlcXVlc3QgcHJvcGVydGllc1xuW1wiYWJvcnRlZFwiLCBcImNvbm5lY3Rpb25cIiwgXCJzb2NrZXRcIl0uZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZGlyZWN0YWJsZVJlcXVlc3QucHJvdG90eXBlLCBwcm9wZXJ0eSwge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fY3VycmVudFJlcXVlc3RbcHJvcGVydHldOyB9LFxuICB9KTtcbn0pO1xuXG5SZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZS5fc2FuaXRpemVPcHRpb25zID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgLy8gRW5zdXJlIGhlYWRlcnMgYXJlIGFsd2F5cyBwcmVzZW50XG4gIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgb3B0aW9ucy5oZWFkZXJzID0ge307XG4gIH1cblxuICAvLyBTaW5jZSBodHRwLnJlcXVlc3QgdHJlYXRzIGhvc3QgYXMgYW4gYWxpYXMgb2YgaG9zdG5hbWUsXG4gIC8vIGJ1dCB0aGUgdXJsIG1vZHVsZSBpbnRlcnByZXRzIGhvc3QgYXMgaG9zdG5hbWUgcGx1cyBwb3J0LFxuICAvLyBlbGltaW5hdGUgdGhlIGhvc3QgcHJvcGVydHkgdG8gYXZvaWQgY29uZnVzaW9uLlxuICBpZiAob3B0aW9ucy5ob3N0KSB7XG4gICAgLy8gVXNlIGhvc3RuYW1lIGlmIHNldCwgYmVjYXVzZSBpdCBoYXMgcHJlY2VkZW5jZVxuICAgIGlmICghb3B0aW9ucy5ob3N0bmFtZSkge1xuICAgICAgb3B0aW9ucy5ob3N0bmFtZSA9IG9wdGlvbnMuaG9zdDtcbiAgICB9XG4gICAgZGVsZXRlIG9wdGlvbnMuaG9zdDtcbiAgfVxuXG4gIC8vIENvbXBsZXRlIHRoZSBVUkwgb2JqZWN0IHdoZW4gbmVjZXNzYXJ5XG4gIGlmICghb3B0aW9ucy5wYXRobmFtZSAmJiBvcHRpb25zLnBhdGgpIHtcbiAgICB2YXIgc2VhcmNoUG9zID0gb3B0aW9ucy5wYXRoLmluZGV4T2YoXCI/XCIpO1xuICAgIGlmIChzZWFyY2hQb3MgPCAwKSB7XG4gICAgICBvcHRpb25zLnBhdGhuYW1lID0gb3B0aW9ucy5wYXRoO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIG9wdGlvbnMucGF0aG5hbWUgPSBvcHRpb25zLnBhdGguc3Vic3RyaW5nKDAsIHNlYXJjaFBvcyk7XG4gICAgICBvcHRpb25zLnNlYXJjaCA9IG9wdGlvbnMucGF0aC5zdWJzdHJpbmcoc2VhcmNoUG9zKTtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8gRXhlY3V0ZXMgdGhlIG5leHQgbmF0aXZlIHJlcXVlc3QgKGluaXRpYWwgb3IgcmVkaXJlY3QpXG5SZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZS5fcGVyZm9ybVJlcXVlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIExvYWQgdGhlIG5hdGl2ZSBwcm90b2NvbFxuICB2YXIgcHJvdG9jb2wgPSB0aGlzLl9vcHRpb25zLnByb3RvY29sO1xuICB2YXIgbmF0aXZlUHJvdG9jb2wgPSB0aGlzLl9vcHRpb25zLm5hdGl2ZVByb3RvY29sc1twcm90b2NvbF07XG4gIGlmICghbmF0aXZlUHJvdG9jb2wpIHtcbiAgICB0aGlzLmVtaXQoXCJlcnJvclwiLCBuZXcgVHlwZUVycm9yKFwiVW5zdXBwb3J0ZWQgcHJvdG9jb2wgXCIgKyBwcm90b2NvbCkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIElmIHNwZWNpZmllZCwgdXNlIHRoZSBhZ2VudCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm90b2NvbFxuICAvLyAoSFRUUCBhbmQgSFRUUFMgdXNlIGRpZmZlcmVudCB0eXBlcyBvZiBhZ2VudHMpXG4gIGlmICh0aGlzLl9vcHRpb25zLmFnZW50cykge1xuICAgIHZhciBzY2hlbWUgPSBwcm90b2NvbC5zdWJzdHIoMCwgcHJvdG9jb2wubGVuZ3RoIC0gMSk7XG4gICAgdGhpcy5fb3B0aW9ucy5hZ2VudCA9IHRoaXMuX29wdGlvbnMuYWdlbnRzW3NjaGVtZV07XG4gIH1cblxuICAvLyBDcmVhdGUgdGhlIG5hdGl2ZSByZXF1ZXN0XG4gIHZhciByZXF1ZXN0ID0gdGhpcy5fY3VycmVudFJlcXVlc3QgPVxuICAgICAgICBuYXRpdmVQcm90b2NvbC5yZXF1ZXN0KHRoaXMuX29wdGlvbnMsIHRoaXMuX29uTmF0aXZlUmVzcG9uc2UpO1xuICB0aGlzLl9jdXJyZW50VXJsID0gdXJsLmZvcm1hdCh0aGlzLl9vcHRpb25zKTtcblxuICAvLyBTZXQgdXAgZXZlbnQgaGFuZGxlcnNcbiAgcmVxdWVzdC5fcmVkaXJlY3RhYmxlID0gdGhpcztcbiAgZm9yICh2YXIgZXZlbnQgaW4gZXZlbnRIYW5kbGVycykge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICByZXF1ZXN0Lm9uKGV2ZW50LCBldmVudEhhbmRsZXJzW2V2ZW50XSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRW5kIGEgcmVkaXJlY3RlZCByZXF1ZXN0XG4gIC8vIChUaGUgZmlyc3QgcmVxdWVzdCBtdXN0IGJlIGVuZGVkIGV4cGxpY2l0bHkgd2l0aCBSZWRpcmVjdGFibGVSZXF1ZXN0I2VuZClcbiAgaWYgKHRoaXMuX2lzUmVkaXJlY3QpIHtcbiAgICAvLyBXcml0ZSB0aGUgcmVxdWVzdCBlbnRpdHkgYW5kIGVuZC5cbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBidWZmZXJzID0gdGhpcy5fcmVxdWVzdEJvZHlCdWZmZXJzO1xuICAgIChmdW5jdGlvbiB3cml0ZU5leHQoZXJyb3IpIHtcbiAgICAgIC8vIE9ubHkgd3JpdGUgaWYgdGhpcyByZXF1ZXN0IGhhcyBub3QgYmVlbiByZWRpcmVjdGVkIHlldFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChyZXF1ZXN0ID09PSBzZWxmLl9jdXJyZW50UmVxdWVzdCkge1xuICAgICAgICAvLyBSZXBvcnQgYW55IHdyaXRlIGVycm9yc1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgc2VsZi5lbWl0KFwiZXJyb3JcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdyaXRlIHRoZSBuZXh0IGJ1ZmZlciBpZiB0aGVyZSBhcmUgc3RpbGwgbGVmdFxuICAgICAgICBlbHNlIGlmIChpIDwgYnVmZmVycy5sZW5ndGgpIHtcbiAgICAgICAgICB2YXIgYnVmZmVyID0gYnVmZmVyc1tpKytdO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKCFyZXF1ZXN0LmZpbmlzaGVkKSB7XG4gICAgICAgICAgICByZXF1ZXN0LndyaXRlKGJ1ZmZlci5kYXRhLCBidWZmZXIuZW5jb2RpbmcsIHdyaXRlTmV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEVuZCB0aGUgcmVxdWVzdCBpZiBgZW5kYCBoYXMgYmVlbiBjYWxsZWQgb24gdXNcbiAgICAgICAgZWxzZSBpZiAoc2VsZi5fZW5kZWQpIHtcbiAgICAgICAgICByZXF1ZXN0LmVuZCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSgpKTtcbiAgfVxufTtcblxuLy8gUHJvY2Vzc2VzIGEgcmVzcG9uc2UgZnJvbSB0aGUgY3VycmVudCBuYXRpdmUgcmVxdWVzdFxuUmVkaXJlY3RhYmxlUmVxdWVzdC5wcm90b3R5cGUuX3Byb2Nlc3NSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAvLyBTdG9yZSB0aGUgcmVkaXJlY3RlZCByZXNwb25zZVxuICB2YXIgc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c0NvZGU7XG4gIGlmICh0aGlzLl9vcHRpb25zLnRyYWNrUmVkaXJlY3RzKSB7XG4gICAgdGhpcy5fcmVkaXJlY3RzLnB1c2goe1xuICAgICAgdXJsOiB0aGlzLl9jdXJyZW50VXJsLFxuICAgICAgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgIHN0YXR1c0NvZGU6IHN0YXR1c0NvZGUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBSRkM3MjMxwqc2LjQ6IFRoZSAzeHggKFJlZGlyZWN0aW9uKSBjbGFzcyBvZiBzdGF0dXMgY29kZSBpbmRpY2F0ZXNcbiAgLy8gdGhhdCBmdXJ0aGVyIGFjdGlvbiBuZWVkcyB0byBiZSB0YWtlbiBieSB0aGUgdXNlciBhZ2VudCBpbiBvcmRlciB0b1xuICAvLyBmdWxmaWxsIHRoZSByZXF1ZXN0LiBJZiBhIExvY2F0aW9uIGhlYWRlciBmaWVsZCBpcyBwcm92aWRlZCxcbiAgLy8gdGhlIHVzZXIgYWdlbnQgTUFZIGF1dG9tYXRpY2FsbHkgcmVkaXJlY3QgaXRzIHJlcXVlc3QgdG8gdGhlIFVSSVxuICAvLyByZWZlcmVuY2VkIGJ5IHRoZSBMb2NhdGlvbiBmaWVsZCB2YWx1ZSxcbiAgLy8gZXZlbiBpZiB0aGUgc3BlY2lmaWMgc3RhdHVzIGNvZGUgaXMgbm90IHVuZGVyc3Rvb2QuXG4gIHZhciBsb2NhdGlvbiA9IHJlc3BvbnNlLmhlYWRlcnMubG9jYXRpb247XG4gIGlmIChsb2NhdGlvbiAmJiB0aGlzLl9vcHRpb25zLmZvbGxvd1JlZGlyZWN0cyAhPT0gZmFsc2UgJiZcbiAgICAgIHN0YXR1c0NvZGUgPj0gMzAwICYmIHN0YXR1c0NvZGUgPCA0MDApIHtcbiAgICAvLyBBYm9ydCB0aGUgY3VycmVudCByZXF1ZXN0XG4gICAgdGhpcy5fY3VycmVudFJlcXVlc3QucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5fY3VycmVudFJlcXVlc3Qub24oXCJlcnJvclwiLCBub29wKTtcbiAgICB0aGlzLl9jdXJyZW50UmVxdWVzdC5hYm9ydCgpO1xuICAgIC8vIERpc2NhcmQgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVzcG9uc2UgdG8gYXZvaWQgd2FpdGluZyBmb3IgZGF0YVxuICAgIHJlc3BvbnNlLmRlc3Ryb3koKTtcblxuICAgIC8vIFJGQzcyMzHCpzYuNDogQSBjbGllbnQgU0hPVUxEIGRldGVjdCBhbmQgaW50ZXJ2ZW5lXG4gICAgLy8gaW4gY3ljbGljYWwgcmVkaXJlY3Rpb25zIChpLmUuLCBcImluZmluaXRlXCIgcmVkaXJlY3Rpb24gbG9vcHMpLlxuICAgIGlmICgrK3RoaXMuX3JlZGlyZWN0Q291bnQgPiB0aGlzLl9vcHRpb25zLm1heFJlZGlyZWN0cykge1xuICAgICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgbmV3IFRvb01hbnlSZWRpcmVjdHNFcnJvcigpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSRkM3MjMxwqc2LjQ6IEF1dG9tYXRpYyByZWRpcmVjdGlvbiBuZWVkcyB0byBkb25lIHdpdGhcbiAgICAvLyBjYXJlIGZvciBtZXRob2RzIG5vdCBrbm93biB0byBiZSBzYWZlLCBb4oCmXVxuICAgIC8vIFJGQzcyMzHCpzYuNC4y4oCTMzogRm9yIGhpc3RvcmljYWwgcmVhc29ucywgYSB1c2VyIGFnZW50IE1BWSBjaGFuZ2VcbiAgICAvLyB0aGUgcmVxdWVzdCBtZXRob2QgZnJvbSBQT1NUIHRvIEdFVCBmb3IgdGhlIHN1YnNlcXVlbnQgcmVxdWVzdC5cbiAgICBpZiAoKHN0YXR1c0NvZGUgPT09IDMwMSB8fCBzdGF0dXNDb2RlID09PSAzMDIpICYmIHRoaXMuX29wdGlvbnMubWV0aG9kID09PSBcIlBPU1RcIiB8fFxuICAgICAgICAvLyBSRkM3MjMxwqc2LjQuNDogVGhlIDMwMyAoU2VlIE90aGVyKSBzdGF0dXMgY29kZSBpbmRpY2F0ZXMgdGhhdFxuICAgICAgICAvLyB0aGUgc2VydmVyIGlzIHJlZGlyZWN0aW5nIHRoZSB1c2VyIGFnZW50IHRvIGEgZGlmZmVyZW50IHJlc291cmNlIFvigKZdXG4gICAgICAgIC8vIEEgdXNlciBhZ2VudCBjYW4gcGVyZm9ybSBhIHJldHJpZXZhbCByZXF1ZXN0IHRhcmdldGluZyB0aGF0IFVSSVxuICAgICAgICAvLyAoYSBHRVQgb3IgSEVBRCByZXF1ZXN0IGlmIHVzaW5nIEhUVFApIFvigKZdXG4gICAgICAgIChzdGF0dXNDb2RlID09PSAzMDMpICYmICEvXig/OkdFVHxIRUFEKSQvLnRlc3QodGhpcy5fb3B0aW9ucy5tZXRob2QpKSB7XG4gICAgICB0aGlzLl9vcHRpb25zLm1ldGhvZCA9IFwiR0VUXCI7XG4gICAgICAvLyBEcm9wIGEgcG9zc2libGUgZW50aXR5IGFuZCBoZWFkZXJzIHJlbGF0ZWQgdG8gaXRcbiAgICAgIHRoaXMuX3JlcXVlc3RCb2R5QnVmZmVycyA9IFtdO1xuICAgICAgcmVtb3ZlTWF0Y2hpbmdIZWFkZXJzKC9eY29udGVudC0vaSwgdGhpcy5fb3B0aW9ucy5oZWFkZXJzKTtcbiAgICB9XG5cbiAgICAvLyBEcm9wIHRoZSBIb3N0IGhlYWRlciwgYXMgdGhlIHJlZGlyZWN0IG1pZ2h0IGxlYWQgdG8gYSBkaWZmZXJlbnQgaG9zdFxuICAgIHZhciBwcmV2aW91c0hvc3ROYW1lID0gcmVtb3ZlTWF0Y2hpbmdIZWFkZXJzKC9eaG9zdCQvaSwgdGhpcy5fb3B0aW9ucy5oZWFkZXJzKSB8fFxuICAgICAgdXJsLnBhcnNlKHRoaXMuX2N1cnJlbnRVcmwpLmhvc3RuYW1lO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSByZWRpcmVjdGVkIHJlcXVlc3RcbiAgICB2YXIgcmVkaXJlY3RVcmwgPSB1cmwucmVzb2x2ZSh0aGlzLl9jdXJyZW50VXJsLCBsb2NhdGlvbik7XG4gICAgZGVidWcoXCJyZWRpcmVjdGluZyB0b1wiLCByZWRpcmVjdFVybCk7XG4gICAgdGhpcy5faXNSZWRpcmVjdCA9IHRydWU7XG4gICAgdmFyIHJlZGlyZWN0VXJsUGFydHMgPSB1cmwucGFyc2UocmVkaXJlY3RVcmwpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5fb3B0aW9ucywgcmVkaXJlY3RVcmxQYXJ0cyk7XG5cbiAgICAvLyBEcm9wIHRoZSBBdXRob3JpemF0aW9uIGhlYWRlciBpZiByZWRpcmVjdGluZyB0byBhbm90aGVyIGhvc3RcbiAgICBpZiAocmVkaXJlY3RVcmxQYXJ0cy5ob3N0bmFtZSAhPT0gcHJldmlvdXNIb3N0TmFtZSkge1xuICAgICAgcmVtb3ZlTWF0Y2hpbmdIZWFkZXJzKC9eYXV0aG9yaXphdGlvbiQvaSwgdGhpcy5fb3B0aW9ucy5oZWFkZXJzKTtcbiAgICB9XG5cbiAgICAvLyBFdmFsdWF0ZSB0aGUgYmVmb3JlUmVkaXJlY3QgY2FsbGJhY2tcbiAgICBpZiAodHlwZW9mIHRoaXMuX29wdGlvbnMuYmVmb3JlUmVkaXJlY3QgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdmFyIHJlc3BvbnNlRGV0YWlscyA9IHsgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycyB9O1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5iZWZvcmVSZWRpcmVjdC5jYWxsKG51bGwsIHRoaXMuX29wdGlvbnMsIHJlc3BvbnNlRGV0YWlscyk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMuZW1pdChcImVycm9yXCIsIGVycik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3Nhbml0aXplT3B0aW9ucyh0aGlzLl9vcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBQZXJmb3JtIHRoZSByZWRpcmVjdGVkIHJlcXVlc3RcbiAgICB0cnkge1xuICAgICAgdGhpcy5fcGVyZm9ybVJlcXVlc3QoKTtcbiAgICB9XG4gICAgY2F0Y2ggKGNhdXNlKSB7XG4gICAgICB2YXIgZXJyb3IgPSBuZXcgUmVkaXJlY3Rpb25FcnJvcihcIlJlZGlyZWN0ZWQgcmVxdWVzdCBmYWlsZWQ6IFwiICsgY2F1c2UubWVzc2FnZSk7XG4gICAgICBlcnJvci5jYXVzZSA9IGNhdXNlO1xuICAgICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgZXJyb3IpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICAvLyBUaGUgcmVzcG9uc2UgaXMgbm90IGEgcmVkaXJlY3Q7IHJldHVybiBpdCBhcy1pc1xuICAgIHJlc3BvbnNlLnJlc3BvbnNlVXJsID0gdGhpcy5fY3VycmVudFVybDtcbiAgICByZXNwb25zZS5yZWRpcmVjdHMgPSB0aGlzLl9yZWRpcmVjdHM7XG4gICAgdGhpcy5lbWl0KFwicmVzcG9uc2VcIiwgcmVzcG9uc2UpO1xuXG4gICAgLy8gQ2xlYW4gdXBcbiAgICB0aGlzLl9yZXF1ZXN0Qm9keUJ1ZmZlcnMgPSBbXTtcbiAgfVxufTtcblxuLy8gV3JhcHMgdGhlIGtleS92YWx1ZSBvYmplY3Qgb2YgcHJvdG9jb2xzIHdpdGggcmVkaXJlY3QgZnVuY3Rpb25hbGl0eVxuZnVuY3Rpb24gd3JhcChwcm90b2NvbHMpIHtcbiAgLy8gRGVmYXVsdCBzZXR0aW5nc1xuICB2YXIgZXhwb3J0cyA9IHtcbiAgICBtYXhSZWRpcmVjdHM6IDIxLFxuICAgIG1heEJvZHlMZW5ndGg6IDEwICogMTAyNCAqIDEwMjQsXG4gIH07XG5cbiAgLy8gV3JhcCBlYWNoIHByb3RvY29sXG4gIHZhciBuYXRpdmVQcm90b2NvbHMgPSB7fTtcbiAgT2JqZWN0LmtleXMocHJvdG9jb2xzKS5mb3JFYWNoKGZ1bmN0aW9uIChzY2hlbWUpIHtcbiAgICB2YXIgcHJvdG9jb2wgPSBzY2hlbWUgKyBcIjpcIjtcbiAgICB2YXIgbmF0aXZlUHJvdG9jb2wgPSBuYXRpdmVQcm90b2NvbHNbcHJvdG9jb2xdID0gcHJvdG9jb2xzW3NjaGVtZV07XG4gICAgdmFyIHdyYXBwZWRQcm90b2NvbCA9IGV4cG9ydHNbc2NoZW1lXSA9IE9iamVjdC5jcmVhdGUobmF0aXZlUHJvdG9jb2wpO1xuXG4gICAgLy8gRXhlY3V0ZXMgYSByZXF1ZXN0LCBmb2xsb3dpbmcgcmVkaXJlY3RzXG4gICAgZnVuY3Rpb24gcmVxdWVzdChpbnB1dCwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICAgIC8vIFBhcnNlIHBhcmFtZXRlcnNcbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdmFyIHVybFN0ciA9IGlucHV0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlucHV0ID0gdXJsVG9PcHRpb25zKG5ldyBVUkwodXJsU3RyKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgaW5wdXQgPSB1cmwucGFyc2UodXJsU3RyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoVVJMICYmIChpbnB1dCBpbnN0YW5jZW9mIFVSTCkpIHtcbiAgICAgICAgaW5wdXQgPSB1cmxUb09wdGlvbnMoaW5wdXQpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgICAgb3B0aW9ucyA9IGlucHV0O1xuICAgICAgICBpbnB1dCA9IHsgcHJvdG9jb2w6IHByb3RvY29sIH07XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjYWxsYmFjayA9IG9wdGlvbnM7XG4gICAgICAgIG9wdGlvbnMgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgZGVmYXVsdHNcbiAgICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgbWF4UmVkaXJlY3RzOiBleHBvcnRzLm1heFJlZGlyZWN0cyxcbiAgICAgICAgbWF4Qm9keUxlbmd0aDogZXhwb3J0cy5tYXhCb2R5TGVuZ3RoLFxuICAgICAgfSwgaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5uYXRpdmVQcm90b2NvbHMgPSBuYXRpdmVQcm90b2NvbHM7XG5cbiAgICAgIGFzc2VydC5lcXVhbChvcHRpb25zLnByb3RvY29sLCBwcm90b2NvbCwgXCJwcm90b2NvbCBtaXNtYXRjaFwiKTtcbiAgICAgIGRlYnVnKFwib3B0aW9uc1wiLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiBuZXcgUmVkaXJlY3RhYmxlUmVxdWVzdChvcHRpb25zLCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgLy8gRXhlY3V0ZXMgYSBHRVQgcmVxdWVzdCwgZm9sbG93aW5nIHJlZGlyZWN0c1xuICAgIGZ1bmN0aW9uIGdldChpbnB1dCwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICAgIHZhciB3cmFwcGVkUmVxdWVzdCA9IHdyYXBwZWRQcm90b2NvbC5yZXF1ZXN0KGlucHV0LCBvcHRpb25zLCBjYWxsYmFjayk7XG4gICAgICB3cmFwcGVkUmVxdWVzdC5lbmQoKTtcbiAgICAgIHJldHVybiB3cmFwcGVkUmVxdWVzdDtcbiAgICB9XG5cbiAgICAvLyBFeHBvc2UgdGhlIHByb3BlcnRpZXMgb24gdGhlIHdyYXBwZWQgcHJvdG9jb2xcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3cmFwcGVkUHJvdG9jb2wsIHtcbiAgICAgIHJlcXVlc3Q6IHsgdmFsdWU6IHJlcXVlc3QsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSxcbiAgICAgIGdldDogeyB2YWx1ZTogZ2V0LCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0sXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gZXhwb3J0cztcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIG5vb3AoKSB7IC8qIGVtcHR5ICovIH1cblxuLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9tYXN0ZXIvbGliL2ludGVybmFsL3VybC5qc1xuZnVuY3Rpb24gdXJsVG9PcHRpb25zKHVybE9iamVjdCkge1xuICB2YXIgb3B0aW9ucyA9IHtcbiAgICBwcm90b2NvbDogdXJsT2JqZWN0LnByb3RvY29sLFxuICAgIGhvc3RuYW1lOiB1cmxPYmplY3QuaG9zdG5hbWUuc3RhcnRzV2l0aChcIltcIikgP1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHVybE9iamVjdC5ob3N0bmFtZS5zbGljZSgxLCAtMSkgOlxuICAgICAgdXJsT2JqZWN0Lmhvc3RuYW1lLFxuICAgIGhhc2g6IHVybE9iamVjdC5oYXNoLFxuICAgIHNlYXJjaDogdXJsT2JqZWN0LnNlYXJjaCxcbiAgICBwYXRobmFtZTogdXJsT2JqZWN0LnBhdGhuYW1lLFxuICAgIHBhdGg6IHVybE9iamVjdC5wYXRobmFtZSArIHVybE9iamVjdC5zZWFyY2gsXG4gICAgaHJlZjogdXJsT2JqZWN0LmhyZWYsXG4gIH07XG4gIGlmICh1cmxPYmplY3QucG9ydCAhPT0gXCJcIikge1xuICAgIG9wdGlvbnMucG9ydCA9IE51bWJlcih1cmxPYmplY3QucG9ydCk7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU1hdGNoaW5nSGVhZGVycyhyZWdleCwgaGVhZGVycykge1xuICB2YXIgbGFzdFZhbHVlO1xuICBmb3IgKHZhciBoZWFkZXIgaW4gaGVhZGVycykge1xuICAgIGlmIChyZWdleC50ZXN0KGhlYWRlcikpIHtcbiAgICAgIGxhc3RWYWx1ZSA9IGhlYWRlcnNbaGVhZGVyXTtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzW2hlYWRlcl07XG4gICAgfVxuICB9XG4gIHJldHVybiBsYXN0VmFsdWU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVycm9yVHlwZShjb2RlLCBkZWZhdWx0TWVzc2FnZSkge1xuICBmdW5jdGlvbiBDdXN0b21FcnJvcihtZXNzYWdlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZSB8fCBkZWZhdWx0TWVzc2FnZTtcbiAgfVxuICBDdXN0b21FcnJvci5wcm90b3R5cGUgPSBuZXcgRXJyb3IoKTtcbiAgQ3VzdG9tRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ3VzdG9tRXJyb3I7XG4gIEN1c3RvbUVycm9yLnByb3RvdHlwZS5uYW1lID0gXCJFcnJvciBbXCIgKyBjb2RlICsgXCJdXCI7XG4gIEN1c3RvbUVycm9yLnByb3RvdHlwZS5jb2RlID0gY29kZTtcbiAgcmV0dXJuIEN1c3RvbUVycm9yO1xufVxuXG4vLyBFeHBvcnRzXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXAoeyBodHRwOiBodHRwLCBodHRwczogaHR0cHMgfSk7XG5tb2R1bGUuZXhwb3J0cy53cmFwID0gd3JhcDtcbiIsIlxuLyoqXG4gKiBUaGlzIGlzIHRoZSBjb21tb24gbG9naWMgZm9yIGJvdGggdGhlIE5vZGUuanMgYW5kIHdlYiBicm93c2VyXG4gKiBpbXBsZW1lbnRhdGlvbnMgb2YgYGRlYnVnKClgLlxuICovXG5cbmZ1bmN0aW9uIHNldHVwKGVudikge1xuXHRjcmVhdGVEZWJ1Zy5kZWJ1ZyA9IGNyZWF0ZURlYnVnO1xuXHRjcmVhdGVEZWJ1Zy5kZWZhdWx0ID0gY3JlYXRlRGVidWc7XG5cdGNyZWF0ZURlYnVnLmNvZXJjZSA9IGNvZXJjZTtcblx0Y3JlYXRlRGVidWcuZGlzYWJsZSA9IGRpc2FibGU7XG5cdGNyZWF0ZURlYnVnLmVuYWJsZSA9IGVuYWJsZTtcblx0Y3JlYXRlRGVidWcuZW5hYmxlZCA9IGVuYWJsZWQ7XG5cdGNyZWF0ZURlYnVnLmh1bWFuaXplID0gcmVxdWlyZSgnbXMnKTtcblx0Y3JlYXRlRGVidWcuZGVzdHJveSA9IGRlc3Ryb3k7XG5cblx0T2JqZWN0LmtleXMoZW52KS5mb3JFYWNoKGtleSA9PiB7XG5cdFx0Y3JlYXRlRGVidWdba2V5XSA9IGVudltrZXldO1xuXHR9KTtcblxuXHQvKipcblx0KiBUaGUgY3VycmVudGx5IGFjdGl2ZSBkZWJ1ZyBtb2RlIG5hbWVzLCBhbmQgbmFtZXMgdG8gc2tpcC5cblx0Ki9cblxuXHRjcmVhdGVEZWJ1Zy5uYW1lcyA9IFtdO1xuXHRjcmVhdGVEZWJ1Zy5za2lwcyA9IFtdO1xuXG5cdC8qKlxuXHQqIE1hcCBvZiBzcGVjaWFsIFwiJW5cIiBoYW5kbGluZyBmdW5jdGlvbnMsIGZvciB0aGUgZGVidWcgXCJmb3JtYXRcIiBhcmd1bWVudC5cblx0KlxuXHQqIFZhbGlkIGtleSBuYW1lcyBhcmUgYSBzaW5nbGUsIGxvd2VyIG9yIHVwcGVyLWNhc2UgbGV0dGVyLCBpLmUuIFwiblwiIGFuZCBcIk5cIi5cblx0Ki9cblx0Y3JlYXRlRGVidWcuZm9ybWF0dGVycyA9IHt9O1xuXG5cdC8qKlxuXHQqIFNlbGVjdHMgYSBjb2xvciBmb3IgYSBkZWJ1ZyBuYW1lc3BhY2Vcblx0KiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlIFRoZSBuYW1lc3BhY2Ugc3RyaW5nIGZvciB0aGUgZm9yIHRoZSBkZWJ1ZyBpbnN0YW5jZSB0byBiZSBjb2xvcmVkXG5cdCogQHJldHVybiB7TnVtYmVyfFN0cmluZ30gQW4gQU5TSSBjb2xvciBjb2RlIGZvciB0aGUgZ2l2ZW4gbmFtZXNwYWNlXG5cdCogQGFwaSBwcml2YXRlXG5cdCovXG5cdGZ1bmN0aW9uIHNlbGVjdENvbG9yKG5hbWVzcGFjZSkge1xuXHRcdGxldCBoYXNoID0gMDtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXNwYWNlLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRoYXNoID0gKChoYXNoIDw8IDUpIC0gaGFzaCkgKyBuYW1lc3BhY2UuY2hhckNvZGVBdChpKTtcblx0XHRcdGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNyZWF0ZURlYnVnLmNvbG9yc1tNYXRoLmFicyhoYXNoKSAlIGNyZWF0ZURlYnVnLmNvbG9ycy5sZW5ndGhdO1xuXHR9XG5cdGNyZWF0ZURlYnVnLnNlbGVjdENvbG9yID0gc2VsZWN0Q29sb3I7XG5cblx0LyoqXG5cdCogQ3JlYXRlIGEgZGVidWdnZXIgd2l0aCB0aGUgZ2l2ZW4gYG5hbWVzcGFjZWAuXG5cdCpcblx0KiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG5cdCogQHJldHVybiB7RnVuY3Rpb259XG5cdCogQGFwaSBwdWJsaWNcblx0Ki9cblx0ZnVuY3Rpb24gY3JlYXRlRGVidWcobmFtZXNwYWNlKSB7XG5cdFx0bGV0IHByZXZUaW1lO1xuXHRcdGxldCBlbmFibGVPdmVycmlkZSA9IG51bGw7XG5cblx0XHRmdW5jdGlvbiBkZWJ1ZyguLi5hcmdzKSB7XG5cdFx0XHQvLyBEaXNhYmxlZD9cblx0XHRcdGlmICghZGVidWcuZW5hYmxlZCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHNlbGYgPSBkZWJ1ZztcblxuXHRcdFx0Ly8gU2V0IGBkaWZmYCB0aW1lc3RhbXBcblx0XHRcdGNvbnN0IGN1cnIgPSBOdW1iZXIobmV3IERhdGUoKSk7XG5cdFx0XHRjb25zdCBtcyA9IGN1cnIgLSAocHJldlRpbWUgfHwgY3Vycik7XG5cdFx0XHRzZWxmLmRpZmYgPSBtcztcblx0XHRcdHNlbGYucHJldiA9IHByZXZUaW1lO1xuXHRcdFx0c2VsZi5jdXJyID0gY3Vycjtcblx0XHRcdHByZXZUaW1lID0gY3VycjtcblxuXHRcdFx0YXJnc1swXSA9IGNyZWF0ZURlYnVnLmNvZXJjZShhcmdzWzBdKTtcblxuXHRcdFx0aWYgKHR5cGVvZiBhcmdzWzBdICE9PSAnc3RyaW5nJykge1xuXHRcdFx0XHQvLyBBbnl0aGluZyBlbHNlIGxldCdzIGluc3BlY3Qgd2l0aCAlT1xuXHRcdFx0XHRhcmdzLnVuc2hpZnQoJyVPJyk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFwcGx5IGFueSBgZm9ybWF0dGVyc2AgdHJhbnNmb3JtYXRpb25zXG5cdFx0XHRsZXQgaW5kZXggPSAwO1xuXHRcdFx0YXJnc1swXSA9IGFyZ3NbMF0ucmVwbGFjZSgvJShbYS16QS1aJV0pL2csIChtYXRjaCwgZm9ybWF0KSA9PiB7XG5cdFx0XHRcdC8vIElmIHdlIGVuY291bnRlciBhbiBlc2NhcGVkICUgdGhlbiBkb24ndCBpbmNyZWFzZSB0aGUgYXJyYXkgaW5kZXhcblx0XHRcdFx0aWYgKG1hdGNoID09PSAnJSUnKSB7XG5cdFx0XHRcdFx0cmV0dXJuICclJztcblx0XHRcdFx0fVxuXHRcdFx0XHRpbmRleCsrO1xuXHRcdFx0XHRjb25zdCBmb3JtYXR0ZXIgPSBjcmVhdGVEZWJ1Zy5mb3JtYXR0ZXJzW2Zvcm1hdF07XG5cdFx0XHRcdGlmICh0eXBlb2YgZm9ybWF0dGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0Y29uc3QgdmFsID0gYXJnc1tpbmRleF07XG5cdFx0XHRcdFx0bWF0Y2ggPSBmb3JtYXR0ZXIuY2FsbChzZWxmLCB2YWwpO1xuXG5cdFx0XHRcdFx0Ly8gTm93IHdlIG5lZWQgdG8gcmVtb3ZlIGBhcmdzW2luZGV4XWAgc2luY2UgaXQncyBpbmxpbmVkIGluIHRoZSBgZm9ybWF0YFxuXHRcdFx0XHRcdGFyZ3Muc3BsaWNlKGluZGV4LCAxKTtcblx0XHRcdFx0XHRpbmRleC0tO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBtYXRjaDtcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBBcHBseSBlbnYtc3BlY2lmaWMgZm9ybWF0dGluZyAoY29sb3JzLCBldGMuKVxuXHRcdFx0Y3JlYXRlRGVidWcuZm9ybWF0QXJncy5jYWxsKHNlbGYsIGFyZ3MpO1xuXG5cdFx0XHRjb25zdCBsb2dGbiA9IHNlbGYubG9nIHx8IGNyZWF0ZURlYnVnLmxvZztcblx0XHRcdGxvZ0ZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuXHRcdH1cblxuXHRcdGRlYnVnLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcblx0XHRkZWJ1Zy51c2VDb2xvcnMgPSBjcmVhdGVEZWJ1Zy51c2VDb2xvcnMoKTtcblx0XHRkZWJ1Zy5jb2xvciA9IGNyZWF0ZURlYnVnLnNlbGVjdENvbG9yKG5hbWVzcGFjZSk7XG5cdFx0ZGVidWcuZXh0ZW5kID0gZXh0ZW5kO1xuXHRcdGRlYnVnLmRlc3Ryb3kgPSBjcmVhdGVEZWJ1Zy5kZXN0cm95OyAvLyBYWFggVGVtcG9yYXJ5LiBXaWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS5cblxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkZWJ1ZywgJ2VuYWJsZWQnLCB7XG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcblx0XHRcdGdldDogKCkgPT4gZW5hYmxlT3ZlcnJpZGUgPT09IG51bGwgPyBjcmVhdGVEZWJ1Zy5lbmFibGVkKG5hbWVzcGFjZSkgOiBlbmFibGVPdmVycmlkZSxcblx0XHRcdHNldDogdiA9PiB7XG5cdFx0XHRcdGVuYWJsZU92ZXJyaWRlID0gdjtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdC8vIEVudi1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgZGVidWcgaW5zdGFuY2VzXG5cdFx0aWYgKHR5cGVvZiBjcmVhdGVEZWJ1Zy5pbml0ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRjcmVhdGVEZWJ1Zy5pbml0KGRlYnVnKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZGVidWc7XG5cdH1cblxuXHRmdW5jdGlvbiBleHRlbmQobmFtZXNwYWNlLCBkZWxpbWl0ZXIpIHtcblx0XHRjb25zdCBuZXdEZWJ1ZyA9IGNyZWF0ZURlYnVnKHRoaXMubmFtZXNwYWNlICsgKHR5cGVvZiBkZWxpbWl0ZXIgPT09ICd1bmRlZmluZWQnID8gJzonIDogZGVsaW1pdGVyKSArIG5hbWVzcGFjZSk7XG5cdFx0bmV3RGVidWcubG9nID0gdGhpcy5sb2c7XG5cdFx0cmV0dXJuIG5ld0RlYnVnO1xuXHR9XG5cblx0LyoqXG5cdCogRW5hYmxlcyBhIGRlYnVnIG1vZGUgYnkgbmFtZXNwYWNlcy4gVGhpcyBjYW4gaW5jbHVkZSBtb2Rlc1xuXHQqIHNlcGFyYXRlZCBieSBhIGNvbG9uIGFuZCB3aWxkY2FyZHMuXG5cdCpcblx0KiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuXHQqIEBhcGkgcHVibGljXG5cdCovXG5cdGZ1bmN0aW9uIGVuYWJsZShuYW1lc3BhY2VzKSB7XG5cdFx0Y3JlYXRlRGVidWcuc2F2ZShuYW1lc3BhY2VzKTtcblxuXHRcdGNyZWF0ZURlYnVnLm5hbWVzID0gW107XG5cdFx0Y3JlYXRlRGVidWcuc2tpcHMgPSBbXTtcblxuXHRcdGxldCBpO1xuXHRcdGNvbnN0IHNwbGl0ID0gKHR5cGVvZiBuYW1lc3BhY2VzID09PSAnc3RyaW5nJyA/IG5hbWVzcGFjZXMgOiAnJykuc3BsaXQoL1tcXHMsXSsvKTtcblx0XHRjb25zdCBsZW4gPSBzcGxpdC5sZW5ndGg7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGlmICghc3BsaXRbaV0pIHtcblx0XHRcdFx0Ly8gaWdub3JlIGVtcHR5IHN0cmluZ3Ncblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdG5hbWVzcGFjZXMgPSBzcGxpdFtpXS5yZXBsYWNlKC9cXCovZywgJy4qPycpO1xuXG5cdFx0XHRpZiAobmFtZXNwYWNlc1swXSA9PT0gJy0nKSB7XG5cdFx0XHRcdGNyZWF0ZURlYnVnLnNraXBzLnB1c2gobmV3IFJlZ0V4cCgnXicgKyBuYW1lc3BhY2VzLnN1YnN0cigxKSArICckJykpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3JlYXRlRGVidWcubmFtZXMucHVzaChuZXcgUmVnRXhwKCdeJyArIG5hbWVzcGFjZXMgKyAnJCcpKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0KiBEaXNhYmxlIGRlYnVnIG91dHB1dC5cblx0KlxuXHQqIEByZXR1cm4ge1N0cmluZ30gbmFtZXNwYWNlc1xuXHQqIEBhcGkgcHVibGljXG5cdCovXG5cdGZ1bmN0aW9uIGRpc2FibGUoKSB7XG5cdFx0Y29uc3QgbmFtZXNwYWNlcyA9IFtcblx0XHRcdC4uLmNyZWF0ZURlYnVnLm5hbWVzLm1hcCh0b05hbWVzcGFjZSksXG5cdFx0XHQuLi5jcmVhdGVEZWJ1Zy5za2lwcy5tYXAodG9OYW1lc3BhY2UpLm1hcChuYW1lc3BhY2UgPT4gJy0nICsgbmFtZXNwYWNlKVxuXHRcdF0uam9pbignLCcpO1xuXHRcdGNyZWF0ZURlYnVnLmVuYWJsZSgnJyk7XG5cdFx0cmV0dXJuIG5hbWVzcGFjZXM7XG5cdH1cblxuXHQvKipcblx0KiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIG1vZGUgbmFtZSBpcyBlbmFibGVkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCpcblx0KiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuXHQqIEByZXR1cm4ge0Jvb2xlYW59XG5cdCogQGFwaSBwdWJsaWNcblx0Ki9cblx0ZnVuY3Rpb24gZW5hYmxlZChuYW1lKSB7XG5cdFx0aWYgKG5hbWVbbmFtZS5sZW5ndGggLSAxXSA9PT0gJyonKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRsZXQgaTtcblx0XHRsZXQgbGVuO1xuXG5cdFx0Zm9yIChpID0gMCwgbGVuID0gY3JlYXRlRGVidWcuc2tpcHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGlmIChjcmVhdGVEZWJ1Zy5za2lwc1tpXS50ZXN0KG5hbWUpKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwLCBsZW4gPSBjcmVhdGVEZWJ1Zy5uYW1lcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0aWYgKGNyZWF0ZURlYnVnLm5hbWVzW2ldLnRlc3QobmFtZSkpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCogQ29udmVydCByZWdleHAgdG8gbmFtZXNwYWNlXG5cdCpcblx0KiBAcGFyYW0ge1JlZ0V4cH0gcmVneGVwXG5cdCogQHJldHVybiB7U3RyaW5nfSBuYW1lc3BhY2Vcblx0KiBAYXBpIHByaXZhdGVcblx0Ki9cblx0ZnVuY3Rpb24gdG9OYW1lc3BhY2UocmVnZXhwKSB7XG5cdFx0cmV0dXJuIHJlZ2V4cC50b1N0cmluZygpXG5cdFx0XHQuc3Vic3RyaW5nKDIsIHJlZ2V4cC50b1N0cmluZygpLmxlbmd0aCAtIDIpXG5cdFx0XHQucmVwbGFjZSgvXFwuXFwqXFw/JC8sICcqJyk7XG5cdH1cblxuXHQvKipcblx0KiBDb2VyY2UgYHZhbGAuXG5cdCpcblx0KiBAcGFyYW0ge01peGVkfSB2YWxcblx0KiBAcmV0dXJuIHtNaXhlZH1cblx0KiBAYXBpIHByaXZhdGVcblx0Ki9cblx0ZnVuY3Rpb24gY29lcmNlKHZhbCkge1xuXHRcdGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikge1xuXHRcdFx0cmV0dXJuIHZhbC5zdGFjayB8fCB2YWwubWVzc2FnZTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbDtcblx0fVxuXG5cdC8qKlxuXHQqIFhYWCBETyBOT1QgVVNFLiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHN0dWIgZnVuY3Rpb24uXG5cdCogWFhYIEl0IFdJTEwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLlxuXHQqL1xuXHRmdW5jdGlvbiBkZXN0cm95KCkge1xuXHRcdGNvbnNvbGUud2FybignSW5zdGFuY2UgbWV0aG9kIGBkZWJ1Zy5kZXN0cm95KClgIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBgZGVidWdgLicpO1xuXHR9XG5cblx0Y3JlYXRlRGVidWcuZW5hYmxlKGNyZWF0ZURlYnVnLmxvYWQoKSk7XG5cblx0cmV0dXJuIGNyZWF0ZURlYnVnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldHVwO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3NcIik7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENvbmZpZy1zcGVjaWZpYyBtZXJnZS1mdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbmZpZy1vYmplY3RcbiAqIGJ5IG1lcmdpbmcgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0b2dldGhlci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzJcbiAqIEByZXR1cm5zIHtPYmplY3R9IE5ldyBvYmplY3QgcmVzdWx0aW5nIGZyb20gbWVyZ2luZyBjb25maWcyIHRvIGNvbmZpZzFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtZXJnZUNvbmZpZyhjb25maWcxLCBjb25maWcyKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBjb25maWcyID0gY29uZmlnMiB8fCB7fTtcbiAgdmFyIGNvbmZpZyA9IHt9O1xuXG4gIHZhciB2YWx1ZUZyb21Db25maWcyS2V5cyA9IFsndXJsJywgJ21ldGhvZCcsICdkYXRhJ107XG4gIHZhciBtZXJnZURlZXBQcm9wZXJ0aWVzS2V5cyA9IFsnaGVhZGVycycsICdhdXRoJywgJ3Byb3h5JywgJ3BhcmFtcyddO1xuICB2YXIgZGVmYXVsdFRvQ29uZmlnMktleXMgPSBbXG4gICAgJ2Jhc2VVUkwnLCAndHJhbnNmb3JtUmVxdWVzdCcsICd0cmFuc2Zvcm1SZXNwb25zZScsICdwYXJhbXNTZXJpYWxpemVyJyxcbiAgICAndGltZW91dCcsICd0aW1lb3V0TWVzc2FnZScsICd3aXRoQ3JlZGVudGlhbHMnLCAnYWRhcHRlcicsICdyZXNwb25zZVR5cGUnLCAneHNyZkNvb2tpZU5hbWUnLFxuICAgICd4c3JmSGVhZGVyTmFtZScsICdvblVwbG9hZFByb2dyZXNzJywgJ29uRG93bmxvYWRQcm9ncmVzcycsICdkZWNvbXByZXNzJyxcbiAgICAnbWF4Q29udGVudExlbmd0aCcsICdtYXhCb2R5TGVuZ3RoJywgJ21heFJlZGlyZWN0cycsICd0cmFuc3BvcnQnLCAnaHR0cEFnZW50JyxcbiAgICAnaHR0cHNBZ2VudCcsICdjYW5jZWxUb2tlbicsICdzb2NrZXRQYXRoJywgJ3Jlc3BvbnNlRW5jb2RpbmcnXG4gIF07XG4gIHZhciBkaXJlY3RNZXJnZUtleXMgPSBbJ3ZhbGlkYXRlU3RhdHVzJ107XG5cbiAgZnVuY3Rpb24gZ2V0TWVyZ2VkVmFsdWUodGFyZ2V0LCBzb3VyY2UpIHtcbiAgICBpZiAodXRpbHMuaXNQbGFpbk9iamVjdCh0YXJnZXQpICYmIHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlKHRhcmdldCwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlKHt9LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gc291cmNlLnNsaWNlKCk7XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICBmdW5jdGlvbiBtZXJnZURlZXBQcm9wZXJ0aWVzKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICB1dGlscy5mb3JFYWNoKHZhbHVlRnJvbUNvbmZpZzJLZXlzLCBmdW5jdGlvbiB2YWx1ZUZyb21Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xuICAgIH1cbiAgfSk7XG5cbiAgdXRpbHMuZm9yRWFjaChtZXJnZURlZXBQcm9wZXJ0aWVzS2V5cywgbWVyZ2VEZWVwUHJvcGVydGllcyk7XG5cbiAgdXRpbHMuZm9yRWFjaChkZWZhdWx0VG9Db25maWcyS2V5cywgZnVuY3Rpb24gZGVmYXVsdFRvQ29uZmlnMihwcm9wKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH0pO1xuXG4gIHV0aWxzLmZvckVhY2goZGlyZWN0TWVyZ2VLZXlzLCBmdW5jdGlvbiBtZXJnZShwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmIChwcm9wIGluIGNvbmZpZzEpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9KTtcblxuICB2YXIgYXhpb3NLZXlzID0gdmFsdWVGcm9tQ29uZmlnMktleXNcbiAgICAuY29uY2F0KG1lcmdlRGVlcFByb3BlcnRpZXNLZXlzKVxuICAgIC5jb25jYXQoZGVmYXVsdFRvQ29uZmlnMktleXMpXG4gICAgLmNvbmNhdChkaXJlY3RNZXJnZUtleXMpO1xuXG4gIHZhciBvdGhlcktleXMgPSBPYmplY3RcbiAgICAua2V5cyhjb25maWcxKVxuICAgIC5jb25jYXQoT2JqZWN0LmtleXMoY29uZmlnMikpXG4gICAgLmZpbHRlcihmdW5jdGlvbiBmaWx0ZXJBeGlvc0tleXMoa2V5KSB7XG4gICAgICByZXR1cm4gYXhpb3NLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTE7XG4gICAgfSk7XG5cbiAgdXRpbHMuZm9yRWFjaChvdGhlcktleXMsIG1lcmdlRGVlcFByb3BlcnRpZXMpO1xuXG4gIHJldHVybiBjb25maWc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEEgYENhbmNlbGAgaXMgYW4gb2JqZWN0IHRoYXQgaXMgdGhyb3duIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGNhbmNlbGVkLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtzdHJpbmc9fSBtZXNzYWdlIFRoZSBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBDYW5jZWwobWVzc2FnZSkge1xuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xufVxuXG5DYW5jZWwucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiAnQ2FuY2VsJyArICh0aGlzLm1lc3NhZ2UgPyAnOiAnICsgdGhpcy5tZXNzYWdlIDogJycpO1xufTtcblxuQ2FuY2VsLnByb3RvdHlwZS5fX0NBTkNFTF9fID0gdHJ1ZTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWw7XG4iLCIndXNlIHN0cmljdCdcbi8vIGJhc2UteCBlbmNvZGluZyAvIGRlY29kaW5nXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTggYmFzZS14IGNvbnRyaWJ1dG9yc1xuLy8gQ29weXJpZ2h0IChjKSAyMDE0LTIwMTggVGhlIEJpdGNvaW4gQ29yZSBkZXZlbG9wZXJzIChiYXNlNTguY3BwKVxuLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBzb2Z0d2FyZSBsaWNlbnNlLCBzZWUgdGhlIGFjY29tcGFueWluZ1xuLy8gZmlsZSBMSUNFTlNFIG9yIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwLlxuLy8gQHRzLWlnbm9yZVxudmFyIF9CdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuZnVuY3Rpb24gYmFzZSAoQUxQSEFCRVQpIHtcbiAgaWYgKEFMUEhBQkVULmxlbmd0aCA+PSAyNTUpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxwaGFiZXQgdG9vIGxvbmcnKSB9XG4gIHZhciBCQVNFX01BUCA9IG5ldyBVaW50OEFycmF5KDI1NilcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBCQVNFX01BUC5sZW5ndGg7IGorKykge1xuICAgIEJBU0VfTUFQW2pdID0gMjU1XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBBTFBIQUJFVC5sZW5ndGg7IGkrKykge1xuICAgIHZhciB4ID0gQUxQSEFCRVQuY2hhckF0KGkpXG4gICAgdmFyIHhjID0geC5jaGFyQ29kZUF0KDApXG4gICAgaWYgKEJBU0VfTUFQW3hjXSAhPT0gMjU1KSB7IHRocm93IG5ldyBUeXBlRXJyb3IoeCArICcgaXMgYW1iaWd1b3VzJykgfVxuICAgIEJBU0VfTUFQW3hjXSA9IGlcbiAgfVxuICB2YXIgQkFTRSA9IEFMUEhBQkVULmxlbmd0aFxuICB2YXIgTEVBREVSID0gQUxQSEFCRVQuY2hhckF0KDApXG4gIHZhciBGQUNUT1IgPSBNYXRoLmxvZyhCQVNFKSAvIE1hdGgubG9nKDI1NikgLy8gbG9nKEJBU0UpIC8gbG9nKDI1NiksIHJvdW5kZWQgdXBcbiAgdmFyIGlGQUNUT1IgPSBNYXRoLmxvZygyNTYpIC8gTWF0aC5sb2coQkFTRSkgLy8gbG9nKDI1NikgLyBsb2coQkFTRSksIHJvdW5kZWQgdXBcbiAgZnVuY3Rpb24gZW5jb2RlIChzb3VyY2UpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpIHx8IHNvdXJjZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHsgc291cmNlID0gX0J1ZmZlci5mcm9tKHNvdXJjZSkgfVxuICAgIGlmICghX0J1ZmZlci5pc0J1ZmZlcihzb3VyY2UpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIEJ1ZmZlcicpIH1cbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gJycgfVxuICAgICAgICAvLyBTa2lwICYgY291bnQgbGVhZGluZyB6ZXJvZXMuXG4gICAgdmFyIHplcm9lcyA9IDBcbiAgICB2YXIgbGVuZ3RoID0gMFxuICAgIHZhciBwYmVnaW4gPSAwXG4gICAgdmFyIHBlbmQgPSBzb3VyY2UubGVuZ3RoXG4gICAgd2hpbGUgKHBiZWdpbiAhPT0gcGVuZCAmJiBzb3VyY2VbcGJlZ2luXSA9PT0gMCkge1xuICAgICAgcGJlZ2luKytcbiAgICAgIHplcm9lcysrXG4gICAgfVxuICAgICAgICAvLyBBbGxvY2F0ZSBlbm91Z2ggc3BhY2UgaW4gYmlnLWVuZGlhbiBiYXNlNTggcmVwcmVzZW50YXRpb24uXG4gICAgdmFyIHNpemUgPSAoKHBlbmQgLSBwYmVnaW4pICogaUZBQ1RPUiArIDEpID4+PiAwXG4gICAgdmFyIGI1OCA9IG5ldyBVaW50OEFycmF5KHNpemUpXG4gICAgICAgIC8vIFByb2Nlc3MgdGhlIGJ5dGVzLlxuICAgIHdoaWxlIChwYmVnaW4gIT09IHBlbmQpIHtcbiAgICAgIHZhciBjYXJyeSA9IHNvdXJjZVtwYmVnaW5dXG4gICAgICAgICAgICAvLyBBcHBseSBcImI1OCA9IGI1OCAqIDI1NiArIGNoXCIuXG4gICAgICB2YXIgaSA9IDBcbiAgICAgIGZvciAodmFyIGl0MSA9IHNpemUgLSAxOyAoY2FycnkgIT09IDAgfHwgaSA8IGxlbmd0aCkgJiYgKGl0MSAhPT0gLTEpOyBpdDEtLSwgaSsrKSB7XG4gICAgICAgIGNhcnJ5ICs9ICgyNTYgKiBiNThbaXQxXSkgPj4+IDBcbiAgICAgICAgYjU4W2l0MV0gPSAoY2FycnkgJSBCQVNFKSA+Pj4gMFxuICAgICAgICBjYXJyeSA9IChjYXJyeSAvIEJBU0UpID4+PiAwXG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHsgdGhyb3cgbmV3IEVycm9yKCdOb24temVybyBjYXJyeScpIH1cbiAgICAgIGxlbmd0aCA9IGlcbiAgICAgIHBiZWdpbisrXG4gICAgfVxuICAgICAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzIGluIGJhc2U1OCByZXN1bHQuXG4gICAgdmFyIGl0MiA9IHNpemUgLSBsZW5ndGhcbiAgICB3aGlsZSAoaXQyICE9PSBzaXplICYmIGI1OFtpdDJdID09PSAwKSB7XG4gICAgICBpdDIrK1xuICAgIH1cbiAgICAgICAgLy8gVHJhbnNsYXRlIHRoZSByZXN1bHQgaW50byBhIHN0cmluZy5cbiAgICB2YXIgc3RyID0gTEVBREVSLnJlcGVhdCh6ZXJvZXMpXG4gICAgZm9yICg7IGl0MiA8IHNpemU7ICsraXQyKSB7IHN0ciArPSBBTFBIQUJFVC5jaGFyQXQoYjU4W2l0Ml0pIH1cbiAgICByZXR1cm4gc3RyXG4gIH1cbiAgZnVuY3Rpb24gZGVjb2RlVW5zYWZlIChzb3VyY2UpIHtcbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ3N0cmluZycpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgU3RyaW5nJykgfVxuICAgIGlmIChzb3VyY2UubGVuZ3RoID09PSAwKSB7IHJldHVybiBfQnVmZmVyLmFsbG9jKDApIH1cbiAgICB2YXIgcHN6ID0gMFxuICAgICAgICAvLyBTa2lwIGxlYWRpbmcgc3BhY2VzLlxuICAgIGlmIChzb3VyY2VbcHN6XSA9PT0gJyAnKSB7IHJldHVybiB9XG4gICAgICAgIC8vIFNraXAgYW5kIGNvdW50IGxlYWRpbmcgJzEncy5cbiAgICB2YXIgemVyb2VzID0gMFxuICAgIHZhciBsZW5ndGggPSAwXG4gICAgd2hpbGUgKHNvdXJjZVtwc3pdID09PSBMRUFERVIpIHtcbiAgICAgIHplcm9lcysrXG4gICAgICBwc3orK1xuICAgIH1cbiAgICAgICAgLy8gQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGluIGJpZy1lbmRpYW4gYmFzZTI1NiByZXByZXNlbnRhdGlvbi5cbiAgICB2YXIgc2l6ZSA9ICgoKHNvdXJjZS5sZW5ndGggLSBwc3opICogRkFDVE9SKSArIDEpID4+PiAwIC8vIGxvZyg1OCkgLyBsb2coMjU2KSwgcm91bmRlZCB1cC5cbiAgICB2YXIgYjI1NiA9IG5ldyBVaW50OEFycmF5KHNpemUpXG4gICAgICAgIC8vIFByb2Nlc3MgdGhlIGNoYXJhY3RlcnMuXG4gICAgd2hpbGUgKHNvdXJjZVtwc3pdKSB7XG4gICAgICAgICAgICAvLyBEZWNvZGUgY2hhcmFjdGVyXG4gICAgICB2YXIgY2FycnkgPSBCQVNFX01BUFtzb3VyY2UuY2hhckNvZGVBdChwc3opXVxuICAgICAgICAgICAgLy8gSW52YWxpZCBjaGFyYWN0ZXJcbiAgICAgIGlmIChjYXJyeSA9PT0gMjU1KSB7IHJldHVybiB9XG4gICAgICB2YXIgaSA9IDBcbiAgICAgIGZvciAodmFyIGl0MyA9IHNpemUgLSAxOyAoY2FycnkgIT09IDAgfHwgaSA8IGxlbmd0aCkgJiYgKGl0MyAhPT0gLTEpOyBpdDMtLSwgaSsrKSB7XG4gICAgICAgIGNhcnJ5ICs9IChCQVNFICogYjI1NltpdDNdKSA+Pj4gMFxuICAgICAgICBiMjU2W2l0M10gPSAoY2FycnkgJSAyNTYpID4+PiAwXG4gICAgICAgIGNhcnJ5ID0gKGNhcnJ5IC8gMjU2KSA+Pj4gMFxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7IHRocm93IG5ldyBFcnJvcignTm9uLXplcm8gY2FycnknKSB9XG4gICAgICBsZW5ndGggPSBpXG4gICAgICBwc3orK1xuICAgIH1cbiAgICAgICAgLy8gU2tpcCB0cmFpbGluZyBzcGFjZXMuXG4gICAgaWYgKHNvdXJjZVtwc3pdID09PSAnICcpIHsgcmV0dXJuIH1cbiAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lcyBpbiBiMjU2LlxuICAgIHZhciBpdDQgPSBzaXplIC0gbGVuZ3RoXG4gICAgd2hpbGUgKGl0NCAhPT0gc2l6ZSAmJiBiMjU2W2l0NF0gPT09IDApIHtcbiAgICAgIGl0NCsrXG4gICAgfVxuICAgIHZhciB2Y2ggPSBfQnVmZmVyLmFsbG9jVW5zYWZlKHplcm9lcyArIChzaXplIC0gaXQ0KSlcbiAgICB2Y2guZmlsbCgweDAwLCAwLCB6ZXJvZXMpXG4gICAgdmFyIGogPSB6ZXJvZXNcbiAgICB3aGlsZSAoaXQ0ICE9PSBzaXplKSB7XG4gICAgICB2Y2hbaisrXSA9IGIyNTZbaXQ0KytdXG4gICAgfVxuICAgIHJldHVybiB2Y2hcbiAgfVxuICBmdW5jdGlvbiBkZWNvZGUgKHN0cmluZykge1xuICAgIHZhciBidWZmZXIgPSBkZWNvZGVVbnNhZmUoc3RyaW5nKVxuICAgIGlmIChidWZmZXIpIHsgcmV0dXJuIGJ1ZmZlciB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb24tYmFzZScgKyBCQVNFICsgJyBjaGFyYWN0ZXInKVxuICB9XG4gIHJldHVybiB7XG4gICAgZW5jb2RlOiBlbmNvZGUsXG4gICAgZGVjb2RlVW5zYWZlOiBkZWNvZGVVbnNhZmUsXG4gICAgZGVjb2RlOiBkZWNvZGVcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJidWZmZXJcIik7IiwiLyoqXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgW211bHRpYmFzZV0oaHR0cHM6Ly9naXRodWIuY29tL211bHRpZm9ybWF0cy9tdWx0aWJhc2UpIHNwZWNpZmljYXRpb24uXG4gKiBAbW9kdWxlIE11bHRpYmFzZVxuICovXG4ndXNlIHN0cmljdCdcblxuY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBtdWx0aWJhc2VcbmV4cG9ydHMuZW5jb2RlID0gZW5jb2RlXG5leHBvcnRzLmRlY29kZSA9IGRlY29kZVxuZXhwb3J0cy5pc0VuY29kZWQgPSBpc0VuY29kZWRcbmV4cG9ydHMubmFtZXMgPSBPYmplY3QuZnJlZXplKE9iamVjdC5rZXlzKGNvbnN0YW50cy5uYW1lcykpXG5leHBvcnRzLmNvZGVzID0gT2JqZWN0LmZyZWV6ZShPYmplY3Qua2V5cyhjb25zdGFudHMuY29kZXMpKVxuXG5jb25zdCBlcnJOb3RTdXBwb3J0ZWQgPSBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGVuY29kaW5nJylcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgYnVmZmVyIHdpdGggdGhlIG11bHRpYmFzZSB2YXJpbnQrY29kZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IG5hbWVPckNvZGUgLSBUaGUgbXVsdGliYXNlIG5hbWUgb3IgY29kZSBudW1iZXIuXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmIC0gVGhlIGRhdGEgdG8gYmUgcHJlZml4ZWQgd2l0aCBtdWx0aWJhc2UuXG4gKiBAbWVtYmVyb2YgTXVsdGliYXNlXG4gKiBAcmV0dXJucyB7QnVmZmVyfVxuICovXG5mdW5jdGlvbiBtdWx0aWJhc2UgKG5hbWVPckNvZGUsIGJ1Zikge1xuICBpZiAoIWJ1Zikge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVxdWlyZXMgYW4gZW5jb2RlZCBidWZmZXInKVxuICB9XG4gIGNvbnN0IGJhc2UgPSBnZXRCYXNlKG5hbWVPckNvZGUpXG4gIGNvbnN0IGNvZGVCdWYgPSBCdWZmZXIuZnJvbShiYXNlLmNvZGUpXG5cbiAgY29uc3QgbmFtZSA9IGJhc2UubmFtZVxuICB2YWxpZEVuY29kZShuYW1lLCBidWYpXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KFtjb2RlQnVmLCBidWZdKVxufVxuXG4vKipcbiAqIEVuY29kZSBkYXRhIHdpdGggdGhlIHNwZWNpZmllZCBiYXNlIGFuZCBhZGQgdGhlIG11bHRpYmFzZSBwcmVmaXguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBuYW1lT3JDb2RlIC0gVGhlIG11bHRpYmFzZSBuYW1lIG9yIGNvZGUgbnVtYmVyLlxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZiAtIFRoZSBkYXRhIHRvIGJlIGVuY29kZWQuXG4gKiBAcmV0dXJucyB7QnVmZmVyfVxuICogQG1lbWJlcm9mIE11bHRpYmFzZVxuICovXG5mdW5jdGlvbiBlbmNvZGUgKG5hbWVPckNvZGUsIGJ1Zikge1xuICBjb25zdCBiYXNlID0gZ2V0QmFzZShuYW1lT3JDb2RlKVxuICBjb25zdCBuYW1lID0gYmFzZS5uYW1lXG5cbiAgcmV0dXJuIG11bHRpYmFzZShuYW1lLCBCdWZmZXIuZnJvbShiYXNlLmVuY29kZShidWYpKSlcbn1cblxuLyoqXG4gKiBUYWtlcyBhIGJ1ZmZlciBvciBzdHJpbmcgZW5jb2RlZCB3aXRoIG11bHRpYmFzZSBoZWFkZXIsIGRlY29kZXMgaXQgYW5kXG4gKiByZXR1cm5zIHRoZSBkZWNvZGVkIGJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfHN0cmluZ30gYnVmT3JTdHJpbmdcbiAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gKiBAbWVtYmVyb2YgTXVsdGliYXNlXG4gKlxuICovXG5mdW5jdGlvbiBkZWNvZGUgKGJ1Zk9yU3RyaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoYnVmT3JTdHJpbmcpKSB7XG4gICAgYnVmT3JTdHJpbmcgPSBidWZPclN0cmluZy50b1N0cmluZygpXG4gIH1cblxuICBjb25zdCBjb2RlID0gYnVmT3JTdHJpbmcuc3Vic3RyaW5nKDAsIDEpXG4gIGJ1Zk9yU3RyaW5nID0gYnVmT3JTdHJpbmcuc3Vic3RyaW5nKDEsIGJ1Zk9yU3RyaW5nLmxlbmd0aClcblxuICBpZiAodHlwZW9mIGJ1Zk9yU3RyaW5nID09PSAnc3RyaW5nJykge1xuICAgIGJ1Zk9yU3RyaW5nID0gQnVmZmVyLmZyb20oYnVmT3JTdHJpbmcpXG4gIH1cblxuICBjb25zdCBiYXNlID0gZ2V0QmFzZShjb2RlKVxuICByZXR1cm4gQnVmZmVyLmZyb20oYmFzZS5kZWNvZGUoYnVmT3JTdHJpbmcudG9TdHJpbmcoKSkpXG59XG5cbi8qKlxuICogSXMgdGhlIGdpdmVuIGRhdGEgbXVsdGliYXNlIGVuY29kZWQ/XG4gKlxuICogQHBhcmFtIHtCdWZmZXJ8c3RyaW5nfSBidWZPclN0cmluZ1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAbWVtYmVyb2YgTXVsdGliYXNlXG4gKi9cbmZ1bmN0aW9uIGlzRW5jb2RlZCAoYnVmT3JTdHJpbmcpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihidWZPclN0cmluZykpIHtcbiAgICBidWZPclN0cmluZyA9IGJ1Zk9yU3RyaW5nLnRvU3RyaW5nKClcbiAgfVxuXG4gIC8vIEVuc3VyZSBidWZPclN0cmluZyBpcyBhIHN0cmluZ1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGJ1Zk9yU3RyaW5nKSAhPT0gJ1tvYmplY3QgU3RyaW5nXScpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IGNvZGUgPSBidWZPclN0cmluZy5zdWJzdHJpbmcoMCwgMSlcbiAgdHJ5IHtcbiAgICBjb25zdCBiYXNlID0gZ2V0QmFzZShjb2RlKVxuICAgIHJldHVybiBiYXNlLm5hbWVcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZlxuICogQHByaXZhdGVcbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKi9cbmZ1bmN0aW9uIHZhbGlkRW5jb2RlIChuYW1lLCBidWYpIHtcbiAgY29uc3QgYmFzZSA9IGdldEJhc2UobmFtZSlcbiAgYmFzZS5kZWNvZGUoYnVmLnRvU3RyaW5nKCkpXG59XG5cbmZ1bmN0aW9uIGdldEJhc2UgKG5hbWVPckNvZGUpIHtcbiAgbGV0IGJhc2VcblxuICBpZiAoY29uc3RhbnRzLm5hbWVzW25hbWVPckNvZGVdKSB7XG4gICAgYmFzZSA9IGNvbnN0YW50cy5uYW1lc1tuYW1lT3JDb2RlXVxuICB9IGVsc2UgaWYgKGNvbnN0YW50cy5jb2Rlc1tuYW1lT3JDb2RlXSkge1xuICAgIGJhc2UgPSBjb25zdGFudHMuY29kZXNbbmFtZU9yQ29kZV1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBlcnJOb3RTdXBwb3J0ZWRcbiAgfVxuXG4gIGlmICghYmFzZS5pc0ltcGxlbWVudGVkKCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jhc2UgJyArIG5hbWVPckNvZGUgKyAnIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQnKVxuICB9XG5cbiAgcmV0dXJuIGJhc2Vcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBjb2RlYyA9IHJlcXVpcmUoJy4vY29kZWMnKVxuY29uc3QgcHJvdG9jb2xzID0gcmVxdWlyZSgnLi9wcm90b2NvbHMtdGFibGUnKVxuY29uc3QgdmFyaW50ID0gcmVxdWlyZSgndmFyaW50JylcbmNvbnN0IGJzNTggPSByZXF1aXJlKCdiczU4JylcbmNvbnN0IENJRCA9IHJlcXVpcmUoJ2NpZHMnKVxuY29uc3Qgd2l0aElzID0gcmVxdWlyZSgnY2xhc3MtaXMnKVxuY29uc3QgaW5zcGVjdCA9IFN5bWJvbC5mb3IoJ25vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tJylcblxuLyoqXG4gKiBDcmVhdGVzIGEgW211bHRpYWRkcl0oaHR0cHM6Ly9naXRodWIuY29tL211bHRpZm9ybWF0cy9tdWx0aWFkZHIpIGZyb21cbiAqIGEgQnVmZmVyLCBTdHJpbmcgb3IgYW5vdGhlciBNdWx0aWFkZHIgaW5zdGFuY2VcbiAqIHB1YmxpYyBrZXkuXG4gKiBAY2xhc3MgTXVsdGlhZGRyXG4gKiBAcGFyYW0geyhTdHJpbmd8QnVmZmVyfE11bHRpYWRkcil9IGFkZHIgLSBJZiBTdHJpbmcgb3IgQnVmZmVyLCBuZWVkcyB0byBhZGhlcmVcbiAqIHRvIHRoZSBhZGRyZXNzIGZvcm1hdCBvZiBhIFttdWx0aWFkZHJdKGh0dHBzOi8vZ2l0aHViLmNvbS9tdWx0aWZvcm1hdHMvbXVsdGlhZGRyI3N0cmluZy1mb3JtYXQpXG4gKiBAZXhhbXBsZVxuICogTXVsdGlhZGRyKCcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMScpXG4gKiAvLyA8TXVsdGlhZGRyIDA0N2YwMDAwMDEwNjBmYTEgLSAvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMT5cbiAqL1xuY29uc3QgTXVsdGlhZGRyID0gd2l0aElzLnByb3RvKGZ1bmN0aW9uIChhZGRyKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBNdWx0aWFkZHIpKSB7XG4gICAgcmV0dXJuIG5ldyBNdWx0aWFkZHIoYWRkcilcbiAgfVxuXG4gIC8vIGRlZmF1bHRcbiAgaWYgKGFkZHIgPT0gbnVsbCkge1xuICAgIGFkZHIgPSAnJ1xuICB9XG5cbiAgaWYgKGFkZHIgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7QnVmZmVyfSAtIFRoZSByYXcgYnl0ZXMgcmVwcmVzZW50aW5nIHRoaXMgbXVsdGlhZGRyZXNzXG4gICAgICovXG4gICAgdGhpcy5idWZmZXIgPSBjb2RlYy5mcm9tQnVmZmVyKGFkZHIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIGFkZHIgPT09ICdzdHJpbmcnIHx8IGFkZHIgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICBpZiAoYWRkci5sZW5ndGggPiAwICYmIGFkZHIuY2hhckF0KDApICE9PSAnLycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbXVsdGlhZGRyIFwiJHthZGRyfVwiIG11c3Qgc3RhcnQgd2l0aCBhIFwiL1wiYClcbiAgICB9XG4gICAgdGhpcy5idWZmZXIgPSBjb2RlYy5mcm9tU3RyaW5nKGFkZHIpXG4gIH0gZWxzZSBpZiAoYWRkci5idWZmZXIgJiYgYWRkci5wcm90b3MgJiYgYWRkci5wcm90b0NvZGVzKSB7IC8vIE11bHRpYWRkclxuICAgIHRoaXMuYnVmZmVyID0gY29kZWMuZnJvbUJ1ZmZlcihhZGRyLmJ1ZmZlcikgLy8gdmFsaWRhdGUgKyBjb3B5IGJ1ZmZlclxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignYWRkciBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIG9yIGFub3RoZXIgTXVsdGlhZGRyJylcbiAgfVxufSwgeyBjbGFzc05hbWU6ICdNdWx0aWFkZHInLCBzeW1ib2xOYW1lOiAnQG11bHRpZm9ybWF0cy9qcy1tdWx0aWFkZHIvbXVsdGlhZGRyJyB9KVxuXG4vKipcbiAqIFJldHVybnMgTXVsdGlhZGRyIGFzIGEgU3RyaW5nXG4gKlxuICogQHJldHVybnMge1N0cmluZ31cbiAqIEBleGFtcGxlXG4gKiBNdWx0aWFkZHIoJy9pcDQvMTI3LjAuMC4xL3RjcC80MDAxJykudG9TdHJpbmcoKVxuICogLy8gJy9pcDQvMTI3LjAuMC4xL3RjcC80MDAxJ1xuICovXG5NdWx0aWFkZHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICByZXR1cm4gY29kZWMuYnVmZmVyVG9TdHJpbmcodGhpcy5idWZmZXIpXG59XG5cbi8qKlxuICogUmV0dXJucyBNdWx0aWFkZHIgYXMgYSBKU09OIGVuY29kZWQgb2JqZWN0XG4gKlxuICogQHJldHVybnMge1N0cmluZ31cbiAqIEBleGFtcGxlXG4gKiBKU09OLnN0cmluZ2lmeShNdWx0aWFkZHIoJy9pcDQvMTI3LjAuMC4xL3RjcC80MDAxJykpXG4gKiAvLyAnL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEnXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUudG9KU09OID0gTXVsdGlhZGRyLnByb3RvdHlwZS50b1N0cmluZ1xuXG4vKipcbiAqIFJldHVybnMgTXVsdGlhZGRyIGFzIGEgY29udmluaWVudCBvcHRpb25zIG9iamVjdCB0byBiZSB1c2VkIHdpdGggbmV0LmNyZWF0ZUNvbm5lY3Rpb25cbiAqXG4gKiBAcmV0dXJucyB7e2ZhbWlseTogU3RyaW5nLCBob3N0OiBTdHJpbmcsIHRyYW5zcG9ydDogU3RyaW5nLCBwb3J0OiBOdW1iZXJ9fVxuICogQGV4YW1wbGVcbiAqIE11bHRpYWRkcignL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEnKS50b09wdGlvbnMoKVxuICogLy8geyBmYW1pbHk6ICdpcHY0JywgaG9zdDogJzEyNy4wLjAuMScsIHRyYW5zcG9ydDogJ3RjcCcsIHBvcnQ6IDQwMDEgfVxuICovXG5NdWx0aWFkZHIucHJvdG90eXBlLnRvT3B0aW9ucyA9IGZ1bmN0aW9uIHRvT3B0aW9ucyAoKSB7XG4gIGNvbnN0IG9wdHMgPSB7fVxuICBjb25zdCBwYXJzZWQgPSB0aGlzLnRvU3RyaW5nKCkuc3BsaXQoJy8nKVxuICBvcHRzLmZhbWlseSA9IHBhcnNlZFsxXSA9PT0gJ2lwNCcgPyAnaXB2NCcgOiAnaXB2NidcbiAgb3B0cy5ob3N0ID0gcGFyc2VkWzJdXG4gIG9wdHMudHJhbnNwb3J0ID0gcGFyc2VkWzNdXG4gIG9wdHMucG9ydCA9IHBhcnNlSW50KHBhcnNlZFs0XSlcbiAgcmV0dXJuIG9wdHNcbn1cblxuLyoqXG4gKiBSZXR1cm5zIE11bHRpYWRkciBhcyBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZy5cbiAqIEZvciBwb3N0IE5vZGUuanMgdjEwLjAuMC5cbiAqIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvZGVwcmVjYXRpb25zLmh0bWwjZGVwcmVjYXRpb25zX2RlcDAwNzlfY3VzdG9tX2luc3BlY3Rpb25fZnVuY3Rpb25fb25fb2JqZWN0c192aWFfaW5zcGVjdFxuICpcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKiBAZXhhbXBsZVxuICogY29uc29sZS5sb2coTXVsdGlhZGRyKCcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMScpKVxuICogLy8gJzxNdWx0aWFkZHIgMDQ3ZjAwMDAwMTA2MGZhMSAtIC9pcDQvMTI3LjAuMC4xL3RjcC80MDAxPidcbiAqL1xuTXVsdGlhZGRyLnByb3RvdHlwZVtpbnNwZWN0XSA9IGZ1bmN0aW9uIGluc3BlY3RDdXN0b20gKCkge1xuICByZXR1cm4gJzxNdWx0aWFkZHIgJyArXG4gICAgdGhpcy5idWZmZXIudG9TdHJpbmcoJ2hleCcpICsgJyAtICcgK1xuICAgIGNvZGVjLmJ1ZmZlclRvU3RyaW5nKHRoaXMuYnVmZmVyKSArICc+J1xufVxuXG4vKipcbiAqIFJldHVybnMgTXVsdGlhZGRyIGFzIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nLlxuICogRmFsbGJhY2sgZm9yIHByZSBOb2RlLmpzIHYxMC4wLjAuXG4gKiBodHRwczovL25vZGVqcy5vcmcvYXBpL2RlcHJlY2F0aW9ucy5odG1sI2RlcHJlY2F0aW9uc19kZXAwMDc5X2N1c3RvbV9pbnNwZWN0aW9uX2Z1bmN0aW9uX29uX29iamVjdHNfdmlhX2luc3BlY3RcbiAqXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICogQGV4YW1wbGVcbiAqIE11bHRpYWRkcignL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEnKS5pbnNwZWN0KClcbiAqIC8vICc8TXVsdGlhZGRyIDA0N2YwMDAwMDEwNjBmYTEgLSAvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMT4nXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICByZXR1cm4gJzxNdWx0aWFkZHIgJyArXG4gICAgdGhpcy5idWZmZXIudG9TdHJpbmcoJ2hleCcpICsgJyAtICcgK1xuICAgIGNvZGVjLmJ1ZmZlclRvU3RyaW5nKHRoaXMuYnVmZmVyKSArICc+J1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHByb3RvY29scyB0aGUgTXVsdGlhZGRyIGlzIGRlZmluZWQgd2l0aCwgYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cywgaW5cbiAqIGxlZnQtdG8tcmlnaHQgb3JkZXIuIEVhY2ggb2JqZWN0IGNvbnRhaW5zIHRoZSBwcm90b2NvbCBjb2RlLCBwcm90b2NvbCBuYW1lLFxuICogYW5kIHRoZSBzaXplIG9mIGl0cyBhZGRyZXNzIHNwYWNlIGluIGJpdHMuXG4gKiBbU2VlIGxpc3Qgb2YgcHJvdG9jb2xzXShodHRwczovL2dpdGh1Yi5jb20vbXVsdGlmb3JtYXRzL211bHRpYWRkci9ibG9iL21hc3Rlci9wcm90b2NvbHMuY3N2KVxuICpcbiAqIEByZXR1cm5zIHtBcnJheS48T2JqZWN0Pn0gcHJvdG9jb2xzIC0gQWxsIHRoZSBwcm90b2NvbHMgdGhlIGFkZHJlc3MgaXMgY29tcG9zZWQgb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHByb3RvY29sc1tdLmNvZGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHByb3RvY29sc1tdLnNpemVcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHByb3RvY29sc1tdLm5hbWVcbiAqIEBleGFtcGxlXG4gKiBNdWx0aWFkZHIoJy9pcDQvMTI3LjAuMC4xL3RjcC80MDAxJykucHJvdG9zKClcbiAqIC8vIFsgeyBjb2RlOiA0LCBzaXplOiAzMiwgbmFtZTogJ2lwNCcgfSxcbiAqIC8vICAgeyBjb2RlOiA2LCBzaXplOiAxNiwgbmFtZTogJ3RjcCcgfSBdXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUucHJvdG9zID0gZnVuY3Rpb24gcHJvdG9zICgpIHtcbiAgcmV0dXJuIHRoaXMucHJvdG9Db2RlcygpLm1hcChjb2RlID0+IE9iamVjdC5hc3NpZ24oe30sIHByb3RvY29scyhjb2RlKSkpXG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY29kZXMgb2YgdGhlIHByb3RvY29scyBpbiBsZWZ0LXRvLXJpZ2h0IG9yZGVyLlxuICogW1NlZSBsaXN0IG9mIHByb3RvY29sc10oaHR0cHM6Ly9naXRodWIuY29tL211bHRpZm9ybWF0cy9tdWx0aWFkZHIvYmxvYi9tYXN0ZXIvcHJvdG9jb2xzLmNzdilcbiAqXG4gKiBAcmV0dXJucyB7QXJyYXkuPE51bWJlcj59IHByb3RvY29sIGNvZGVzXG4gKiBAZXhhbXBsZVxuICogTXVsdGlhZGRyKCcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMScpLnByb3RvQ29kZXMoKVxuICogLy8gWyA0LCA2IF1cbiAqL1xuTXVsdGlhZGRyLnByb3RvdHlwZS5wcm90b0NvZGVzID0gZnVuY3Rpb24gcHJvdG9Db2RlcyAoKSB7XG4gIGNvbnN0IGNvZGVzID0gW11cbiAgY29uc3QgYnVmID0gdGhpcy5idWZmZXJcbiAgbGV0IGkgPSAwXG4gIHdoaWxlIChpIDwgYnVmLmxlbmd0aCkge1xuICAgIGNvbnN0IGNvZGUgPSB2YXJpbnQuZGVjb2RlKGJ1ZiwgaSlcbiAgICBjb25zdCBuID0gdmFyaW50LmRlY29kZS5ieXRlc1xuXG4gICAgY29uc3QgcCA9IHByb3RvY29scyhjb2RlKVxuICAgIGNvbnN0IHNpemUgPSBjb2RlYy5zaXplRm9yQWRkcihwLCBidWYuc2xpY2UoaSArIG4pKVxuXG4gICAgaSArPSAoc2l6ZSArIG4pXG4gICAgY29kZXMucHVzaChjb2RlKVxuICB9XG5cbiAgcmV0dXJuIGNvZGVzXG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbmFtZXMgb2YgdGhlIHByb3RvY29scyBpbiBsZWZ0LXRvLXJpZ2h0IG9yZGVyLlxuICogW1NlZSBsaXN0IG9mIHByb3RvY29sc10oaHR0cHM6Ly9naXRodWIuY29tL211bHRpZm9ybWF0cy9tdWx0aWFkZHIvYmxvYi9tYXN0ZXIvcHJvdG9jb2xzLmNzdilcbiAqXG4gKiBAcmV0dXJuIHtBcnJheS48U3RyaW5nPn0gcHJvdG9jb2wgbmFtZXNcbiAqIEBleGFtcGxlXG4gKiBNdWx0aWFkZHIoJy9pcDQvMTI3LjAuMC4xL3RjcC80MDAxJykucHJvdG9OYW1lcygpXG4gKiAvLyBbICdpcDQnLCAndGNwJyBdXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUucHJvdG9OYW1lcyA9IGZ1bmN0aW9uIHByb3RvTmFtZXMgKCkge1xuICByZXR1cm4gdGhpcy5wcm90b3MoKS5tYXAocHJvdG8gPT4gcHJvdG8ubmFtZSlcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgdHVwbGUgb2YgcGFydHNcbiAqXG4gKiBAcmV0dXJuIHtBcnJheS48QXJyYXk+fSB0dXBsZXNcbiAqIEByZXR1cm4ge051bWJlcn0gdHVwbGVzW10uMCBjb2RlIG9mIHByb3RvY29sXG4gKiBAcmV0dXJuIHtCdWZmZXJ9IHR1cGxlc1tdLjEgY29udGVudHMgb2YgYWRkcmVzc1xuICogQGV4YW1wbGVcbiAqIE11bHRpYWRkcihcIi9pcDQvMTI3LjAuMC4xL3RjcC80MDAxXCIpLnR1cGxlcygpXG4gKiAvLyBbIFsgNCwgPEJ1ZmZlciA3ZiAwMCAwMCAwMT4gXSwgWyA2LCA8QnVmZmVyIDBmIGExPiBdIF1cbiAqL1xuTXVsdGlhZGRyLnByb3RvdHlwZS50dXBsZXMgPSBmdW5jdGlvbiB0dXBsZXMgKCkge1xuICByZXR1cm4gY29kZWMuYnVmZmVyVG9UdXBsZXModGhpcy5idWZmZXIpXG59XG5cbi8qKlxuICogUmV0dXJucyBhIHR1cGxlIG9mIHN0cmluZy9udW1iZXIgcGFydHNcbiAqXG4gKiBAcmV0dXJuIHtBcnJheS48QXJyYXk+fSB0dXBsZXNcbiAqIEByZXR1cm4ge051bWJlcn0gdHVwbGVzW10uMCBjb2RlIG9mIHByb3RvY29sXG4gKiBAcmV0dXJuIHsoU3RyaW5nfE51bWJlcil9IHR1cGxlc1tdLjEgY29udGVudHMgb2YgYWRkcmVzc1xuICogQGV4YW1wbGVcbiAqIE11bHRpYWRkcihcIi9pcDQvMTI3LjAuMC4xL3RjcC80MDAxXCIpLnN0cmluZ1R1cGxlcygpXG4gKiAvLyBbIFsgNCwgJzEyNy4wLjAuMScgXSwgWyA2LCA0MDAxIF0gXVxuICovXG5NdWx0aWFkZHIucHJvdG90eXBlLnN0cmluZ1R1cGxlcyA9IGZ1bmN0aW9uIHN0cmluZ1R1cGxlcyAoKSB7XG4gIGNvbnN0IHQgPSBjb2RlYy5idWZmZXJUb1R1cGxlcyh0aGlzLmJ1ZmZlcilcbiAgcmV0dXJuIGNvZGVjLnR1cGxlc1RvU3RyaW5nVHVwbGVzKHQpXG59XG5cbi8qKlxuICogRW5jYXBzdWxhdGVzIGEgTXVsdGlhZGRyIGluIGFub3RoZXIgTXVsdGlhZGRyXG4gKlxuICogQHBhcmFtIHtNdWx0aWFkZHJ9IGFkZHIgLSBNdWx0aWFkZHIgdG8gYWRkIGludG8gdGhpcyBNdWx0aWFkZHJcbiAqIEByZXR1cm4ge011bHRpYWRkcn1cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBtaDEgPSBNdWx0aWFkZHIoJy9pcDQvOC44LjguOC90Y3AvMTA4MCcpXG4gKiAvLyA8TXVsdGlhZGRyIDA0MDgwODA4MDgwNjA0MzggLSAvaXA0LzguOC44LjgvdGNwLzEwODA+XG4gKlxuICogY29uc3QgbWgyID0gTXVsdGlhZGRyKCcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMScpXG4gKiAvLyA8TXVsdGlhZGRyIDA0N2YwMDAwMDEwNjBmYTEgLSAvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMT5cbiAqXG4gKiBjb25zdCBtaDMgPSBtaDEuZW5jYXBzdWxhdGUobWgyKVxuICogLy8gPE11bHRpYWRkciAwNDA4MDgwODA4MDYwNDM4MDQ3ZjAwMDAwMTA2MGZhMSAtIC9pcDQvOC44LjguOC90Y3AvMTA4MC9pcDQvMTI3LjAuMC4xL3RjcC80MDAxPlxuICpcbiAqIG1oMy50b1N0cmluZygpXG4gKiAvLyAnL2lwNC84LjguOC44L3RjcC8xMDgwL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEnXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUuZW5jYXBzdWxhdGUgPSBmdW5jdGlvbiBlbmNhcHN1bGF0ZSAoYWRkcikge1xuICBhZGRyID0gTXVsdGlhZGRyKGFkZHIpXG4gIHJldHVybiBNdWx0aWFkZHIodGhpcy50b1N0cmluZygpICsgYWRkci50b1N0cmluZygpKVxufVxuXG4vKipcbiAqIERlY2Fwc3VsYXRlcyBhIE11bHRpYWRkciBmcm9tIGFub3RoZXIgTXVsdGlhZGRyXG4gKlxuICogQHBhcmFtIHtNdWx0aWFkZHJ9IGFkZHIgLSBNdWx0aWFkZHIgdG8gcmVtb3ZlIGZyb20gdGhpcyBNdWx0aWFkZHJcbiAqIEByZXR1cm4ge011bHRpYWRkcn1cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBtaDEgPSBNdWx0aWFkZHIoJy9pcDQvOC44LjguOC90Y3AvMTA4MCcpXG4gKiAvLyA8TXVsdGlhZGRyIDA0MDgwODA4MDgwNjA0MzggLSAvaXA0LzguOC44LjgvdGNwLzEwODA+XG4gKlxuICogY29uc3QgbWgyID0gTXVsdGlhZGRyKCcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMScpXG4gKiAvLyA8TXVsdGlhZGRyIDA0N2YwMDAwMDEwNjBmYTEgLSAvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMT5cbiAqXG4gKiBjb25zdCBtaDMgPSBtaDEuZW5jYXBzdWxhdGUobWgyKVxuICogLy8gPE11bHRpYWRkciAwNDA4MDgwODA4MDYwNDM4MDQ3ZjAwMDAwMTA2MGZhMSAtIC9pcDQvOC44LjguOC90Y3AvMTA4MC9pcDQvMTI3LjAuMC4xL3RjcC80MDAxPlxuICpcbiAqIG1oMy5kZWNhcHN1bGF0ZShtaDIpLnRvU3RyaW5nKClcbiAqIC8vICcvaXA0LzguOC44LjgvdGNwLzEwODAnXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUuZGVjYXBzdWxhdGUgPSBmdW5jdGlvbiBkZWNhcHN1bGF0ZSAoYWRkcikge1xuICBhZGRyID0gYWRkci50b1N0cmluZygpXG4gIGNvbnN0IHMgPSB0aGlzLnRvU3RyaW5nKClcbiAgY29uc3QgaSA9IHMubGFzdEluZGV4T2YoYWRkcilcbiAgaWYgKGkgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBZGRyZXNzICcgKyB0aGlzICsgJyBkb2VzIG5vdCBjb250YWluIHN1YmFkZHJlc3M6ICcgKyBhZGRyKVxuICB9XG4gIHJldHVybiBNdWx0aWFkZHIocy5zbGljZSgwLCBpKSlcbn1cblxuLyoqXG4gKiBBIG1vcmUgcmVsaWFibGUgdmVyc2lvbiBvZiBgZGVjYXBzdWxhdGVgIGlmIHlvdSBhcmUgdGFyZ2V0aW5nIGFcbiAqIHNwZWNpZmljIGNvZGUsIHN1Y2ggYXMgNDIxICh0aGUgYHAycGAgcHJvdG9jb2wgY29kZSkuIFRoZSBsYXN0IGluZGV4IG9mIHRoZSBjb2RlXG4gKiB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgYE11bHRpYWRkcmAsIGFuZCBhIG5ldyBpbnN0YW5jZSB3aWxsIGJlIHJldHVybmVkLlxuICogSWYgdGhlIGNvZGUgaXMgbm90IHByZXNlbnQsIHRoZSBvcmlnaW5hbCBgTXVsdGlhZGRyYCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gY29kZSBUaGUgY29kZSBvZiB0aGUgcHJvdG9jb2wgdG8gZGVjYXBzdWxhdGUgZnJvbSB0aGlzIE11bHRpYWRkclxuICogQHJldHVybiB7TXVsdGlhZGRyfVxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGFkZHIgPSBNdWx0aWFkZHIoJy9pcDQvMC4wLjAuMC90Y3AvODA4MC9wMnAvUW1jZ3BzeVdnSDhZOGFqSnoxQ3U3MktuUzV1bzJBYTJMcHpVN2tpblN1cE5LQycpXG4gKiAvLyA8TXVsdGlhZGRyIDA0MDAuLi4gLSAvaXA0LzAuMC4wLjAvdGNwLzgwODAvcDJwL1FtY2dwc3lXZ0g4WThhakp6MUN1NzJLblM1dW8yQWEyTHB6VTdraW5TdXBOS0M+XG4gKlxuICogYWRkci5kZWNhcHN1bGF0ZUNvZGUoNDIxKS50b1N0cmluZygpXG4gKiAvLyAnL2lwNC8wLjAuMC4wL3RjcC84MDgwJ1xuICpcbiAqIE11bHRpYWRkcignL2lwNC8xMjcuMC4wLjEvdGNwLzgwODAnKS5kZWNhcHN1bGF0ZUNvZGUoNDIxKS50b1N0cmluZygpXG4gKiAvLyAnL2lwNC8xMjcuMC4wLjEvdGNwLzgwODAnXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUuZGVjYXBzdWxhdGVDb2RlID0gZnVuY3Rpb24gZGVjYXBzdWxhdGVDb2RlIChjb2RlKSB7XG4gIGNvbnN0IHR1cGxlcyA9IHRoaXMudHVwbGVzKClcbiAgZm9yIChsZXQgaSA9IHR1cGxlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmICh0dXBsZXNbaV1bMF0gPT09IGNvZGUpIHtcbiAgICAgIHJldHVybiBNdWx0aWFkZHIoY29kZWMudHVwbGVzVG9CdWZmZXIodHVwbGVzLnNsaWNlKDAsIGkpKSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHRoZSBwZWVySWQgaWYgdGhlIG11bHRpYWRkciBjb250YWlucyBvbmVcbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd8bnVsbH0gcGVlcklkIC0gVGhlIGlkIG9mIHRoZSBwZWVyIG9yIG51bGwgaWYgaW52YWxpZCBvciBtaXNzaW5nIGZyb20gdGhlIG1hXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbWgxID0gTXVsdGlhZGRyKCcvaXA0LzguOC44LjgvdGNwLzEwODAvaXBmcy9RbVZhbGlkQmFzZTU4c3RyaW5nJylcbiAqIC8vIDxNdWx0aWFkZHIgMDQwODA4MDgwODA2MDQzOCAtIC9pcDQvOC44LjguOC90Y3AvMTA4MC9pcGZzL1FtVmFsaWRCYXNlNThzdHJpbmc+XG4gKlxuICogLy8gc2hvdWxkIHJldHVybiBRbVZhbGlkQmFzZTU4c3RyaW5nIG9yIG51bGwgaWYgdGhlIGlkIGlzIG1pc3Npbmcgb3IgaW52YWxpZFxuICogY29uc3QgcGVlcklkID0gbWgxLmdldFBlZXJJZCgpXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUuZ2V0UGVlcklkID0gZnVuY3Rpb24gZ2V0UGVlcklkICgpIHtcbiAgbGV0IGI1OHN0ciA9IG51bGxcbiAgdHJ5IHtcbiAgICBjb25zdCB0dXBsZXMgPSB0aGlzLnN0cmluZ1R1cGxlcygpLmZpbHRlcigodHVwbGUpID0+IHtcbiAgICAgIGlmICh0dXBsZVswXSA9PT0gcHJvdG9jb2xzLm5hbWVzLmlwZnMuY29kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBHZXQgdGhlIGxhc3QgaWRcbiAgICBiNThzdHIgPSB0dXBsZXMucG9wKClbMV1cbiAgICAvLyBHZXQgbXVsdGloYXNoLCB1bndyYXAgZnJvbSBDSUQgaWYgbmVlZGVkXG4gICAgYjU4c3RyID0gYnM1OC5lbmNvZGUobmV3IENJRChiNThzdHIpLm11bHRpaGFzaClcbiAgfSBjYXRjaCAoZSkge1xuICAgIGI1OHN0ciA9IG51bGxcbiAgfVxuXG4gIHJldHVybiBiNThzdHJcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHRoZSBwYXRoIGlmIHRoZSBtdWx0aWFkZHIgY29udGFpbnMgb25lXG4gKlxuICogQHJldHVybiB7U3RyaW5nfG51bGx9IHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgbXVsdGlhZGRyLCBvciBudWxsIGlmIG5vIHBhdGggcHJvdG9jb2wgaXMgcHJlc2VudFxuICogQGV4YW1wbGVcbiAqIGNvbnN0IG1oMSA9IE11bHRpYWRkcignL2lwNC84LjguOC44L3RjcC8xMDgwL3VuaXgvdG1wL3AycC5zb2NrJylcbiAqIC8vIDxNdWx0aWFkZHIgMDQwODA4MDgwODA2MDQzOCAtIC9pcDQvOC44LjguOC90Y3AvMTA4MC91bml4L3RtcC9wMnAuc29jaz5cbiAqXG4gKiAvLyBzaG91bGQgcmV0dXJuIHV0Zjggc3RyaW5nIG9yIG51bGwgaWYgdGhlIGlkIGlzIG1pc3Npbmcgb3IgaW52YWxpZFxuICogY29uc3QgcGF0aCA9IG1oMS5nZXRQYXRoKClcbiAqL1xuTXVsdGlhZGRyLnByb3RvdHlwZS5nZXRQYXRoID0gZnVuY3Rpb24gZ2V0UGF0aCAoKSB7XG4gIGxldCBwYXRoID0gbnVsbFxuICB0cnkge1xuICAgIHBhdGggPSB0aGlzLnN0cmluZ1R1cGxlcygpLmZpbHRlcigodHVwbGUpID0+IHtcbiAgICAgIGNvbnN0IHByb3RvID0gcHJvdG9jb2xzKHR1cGxlWzBdKVxuICAgICAgaWYgKHByb3RvLnBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9KVswXVsxXVxuICB9IGNhdGNoIChlKSB7XG4gICAgcGF0aCA9IG51bGxcbiAgfVxuXG4gIHJldHVybiBwYXRoXG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHR3byBNdWx0aWFkZHJzIGFyZSB0aGUgc2FtZVxuICpcbiAqIEBwYXJhbSB7TXVsdGlhZGRyfSBhZGRyXG4gKiBAcmV0dXJuIHtCb29sfVxuICogQGV4YW1wbGVcbiAqIGNvbnN0IG1oMSA9IE11bHRpYWRkcignL2lwNC84LjguOC44L3RjcC8xMDgwJylcbiAqIC8vIDxNdWx0aWFkZHIgMDQwODA4MDgwODA2MDQzOCAtIC9pcDQvOC44LjguOC90Y3AvMTA4MD5cbiAqXG4gKiBjb25zdCBtaDIgPSBNdWx0aWFkZHIoJy9pcDQvMTI3LjAuMC4xL3RjcC80MDAxJylcbiAqIC8vIDxNdWx0aWFkZHIgMDQ3ZjAwMDAwMTA2MGZhMSAtIC9pcDQvMTI3LjAuMC4xL3RjcC80MDAxPlxuICpcbiAqIG1oMS5lcXVhbHMobWgxKVxuICogLy8gdHJ1ZVxuICpcbiAqIG1oMS5lcXVhbHMobWgyKVxuICogLy8gZmFsc2VcbiAqL1xuTXVsdGlhZGRyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMgKGFkZHIpIHtcbiAgcmV0dXJuIHRoaXMuYnVmZmVyLmVxdWFscyhhZGRyLmJ1ZmZlcilcbn1cblxuLyoqXG4gKiBHZXRzIGEgTXVsdGlhZGRycyBub2RlLWZyaWVuZGx5IGFkZHJlc3Mgb2JqZWN0LiBOb3RlIHRoYXQgcHJvdG9jb2wgaW5mb3JtYXRpb25cbiAqIGlzIGxlZnQgb3V0OiBpbiBOb2RlIChhbmQgbW9zdCBuZXR3b3JrIHN5c3RlbXMpIHRoZSBwcm90b2NvbCBpcyB1bmtub3dhYmxlXG4gKiBnaXZlbiBvbmx5IHRoZSBhZGRyZXNzLlxuICpcbiAqIEhhcyB0byBiZSBhIFRoaW5XYWlzdCBBZGRyZXNzLCBvdGhlcndpc2UgdGhyb3dzIGVycm9yXG4gKlxuICogQHJldHVybnMge3tmYW1pbHk6IFN0cmluZywgYWRkcmVzczogU3RyaW5nLCBwb3J0OiBOdW1iZXJ9fVxuICogQHRocm93cyB7RXJyb3J9IFRocm93cyBlcnJvciBpZiBNdWx0aWFkZHIgaXMgbm90IGEgVGhpbiBXYWlzdCBhZGRyZXNzXG4gKiBAZXhhbXBsZVxuICogTXVsdGlhZGRyKCcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMScpLm5vZGVBZGRyZXNzKClcbiAqIC8vIHtmYW1pbHk6ICdJUHY0JywgYWRkcmVzczogJzEyNy4wLjAuMScsIHBvcnQ6ICc0MDAxJ31cbiAqL1xuTXVsdGlhZGRyLnByb3RvdHlwZS5ub2RlQWRkcmVzcyA9IGZ1bmN0aW9uIG5vZGVBZGRyZXNzICgpIHtcbiAgY29uc3QgY29kZXMgPSB0aGlzLnByb3RvQ29kZXMoKVxuICBjb25zdCBuYW1lcyA9IHRoaXMucHJvdG9OYW1lcygpXG4gIGNvbnN0IHBhcnRzID0gdGhpcy50b1N0cmluZygpLnNwbGl0KCcvJykuc2xpY2UoMSlcblxuICBpZiAocGFydHMubGVuZ3RoIDwgNCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbXVsdGlhZGRyIG11c3QgaGF2ZSBhIHZhbGlkIGZvcm1hdDogXCIve2lwNCwgaXA2LCBkbnM0LCBkbnM2fS97YWRkcmVzc30ve3RjcCwgdWRwfS97cG9ydH1cIi4nKVxuICB9IGVsc2UgaWYgKGNvZGVzWzBdICE9PSA0ICYmIGNvZGVzWzBdICE9PSA0MSAmJiBjb2Rlc1swXSAhPT0gNTQgJiYgY29kZXNbMF0gIT09IDU1KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBubyBwcm90b2NvbCB3aXRoIG5hbWU6IFwiJyR7bmFtZXNbMF19J1wiLiBNdXN0IGhhdmUgYSB2YWxpZCBmYW1pbHkgbmFtZTogXCJ7aXA0LCBpcDYsIGRuczQsIGRuczZ9XCIuYClcbiAgfSBlbHNlIGlmIChwYXJ0c1syXSAhPT0gJ3RjcCcgJiYgcGFydHNbMl0gIT09ICd1ZHAnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBubyBwcm90b2NvbCB3aXRoIG5hbWU6IFwiJyR7bmFtZXNbMV19J1wiLiBNdXN0IGhhdmUgYSB2YWxpZCB0cmFuc3BvcnQgcHJvdG9jb2w6IFwie3RjcCwgdWRwfVwiLmApXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZhbWlseTogKGNvZGVzWzBdID09PSA0MSB8fCBjb2Rlc1swXSA9PT0gNTUpID8gNiA6IDQsXG4gICAgYWRkcmVzczogcGFydHNbMV0sIC8vIGlwIGFkZHJcbiAgICBwb3J0OiBwYXJzZUludChwYXJ0c1szXSkgLy8gdGNwIG9yIHVkcCBwb3J0XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgTXVsdGlhZGRyIGZyb20gYSBub2RlLWZyaWVuZGx5IGFkZHJlc3Mgb2JqZWN0XG4gKlxuICogQHBhcmFtIHt7ZmFtaWx5OiBTdHJpbmcsIGFkZHJlc3M6IFN0cmluZywgcG9ydDogTnVtYmVyfX0gYWRkclxuICogQHBhcmFtIHtTdHJpbmd9IHRyYW5zcG9ydFxuICogQHJldHVybnMge011bHRpYWRkcn0gbXVsdGlhZGRyXG4gKiBAdGhyb3dzIHtFcnJvcn0gVGhyb3dzIGVycm9yIGlmIGFkZHIgaXMgbm90IHRydXRoeVxuICogQHRocm93cyB7RXJyb3J9IFRocm93cyBlcnJvciBpZiB0cmFuc3BvcnQgaXMgbm90IHRydXRoeVxuICogQGV4YW1wbGVcbiAqIE11bHRpYWRkci5mcm9tTm9kZUFkZHJlc3Moe2FkZHJlc3M6ICcxMjcuMC4wLjEnLCBwb3J0OiAnNDAwMSd9LCAndGNwJylcbiAqIC8vIDxNdWx0aWFkZHIgMDQ3ZjAwMDAwMTA2MGZhMSAtIC9pcDQvMTI3LjAuMC4xL3RjcC80MDAxPlxuICovXG5NdWx0aWFkZHIuZnJvbU5vZGVBZGRyZXNzID0gZnVuY3Rpb24gZnJvbU5vZGVBZGRyZXNzIChhZGRyLCB0cmFuc3BvcnQpIHtcbiAgaWYgKCFhZGRyKSB0aHJvdyBuZXcgRXJyb3IoJ3JlcXVpcmVzIG5vZGUgYWRkcmVzcyBvYmplY3QnKVxuICBpZiAoIXRyYW5zcG9ydCkgdGhyb3cgbmV3IEVycm9yKCdyZXF1aXJlcyB0cmFuc3BvcnQgcHJvdG9jb2wnKVxuICBjb25zdCBpcCA9IChhZGRyLmZhbWlseSA9PT0gJ0lQdjYnKSA/ICdpcDYnIDogJ2lwNCdcbiAgcmV0dXJuIE11bHRpYWRkcignLycgKyBbaXAsIGFkZHIuYWRkcmVzcywgdHJhbnNwb3J0LCBhZGRyLnBvcnRdLmpvaW4oJy8nKSlcbn1cblxuLy8gVE9ETyBmaW5kIGEgYmV0dGVyIGV4YW1wbGUsIG5vdCBzdXJlIGFib3V0IGl0J3MgZ29vZCBlbm91Z2hcbi8qKlxuICogUmV0dXJucyBpZiBhIE11bHRpYWRkciBpcyBhIFRoaW4gV2Fpc3QgYWRkcmVzcyBvciBub3QuXG4gKlxuICogVGhpbiBXYWlzdCBpcyBpZiBhIE11bHRpYWRkciBhZGhlcmVzIHRvIHRoZSBzdGFuZGFyZCBjb21iaW5hdGlvbiBvZjpcbiAqXG4gKiBge0lQdjQsIElQdjZ9L3tUQ1AsIFVEUH1gXG4gKlxuICogQHBhcmFtIHtNdWx0aWFkZHJ9IFthZGRyXSAtIERlZmF1bHRzIHRvIHVzaW5nIGB0aGlzYCBpbnN0YW5jZVxuICogQHJldHVybnMge0Jvb2xlYW59IGlzVGhpbldhaXN0QWRkcmVzc1xuICogQGV4YW1wbGVcbiAqIGNvbnN0IG1oMSA9IE11bHRpYWRkcignL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEnKVxuICogLy8gPE11bHRpYWRkciAwNDdmMDAwMDAxMDYwZmExIC0gL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDE+XG4gKiBjb25zdCBtaDIgPSBNdWx0aWFkZHIoJy9pcDQvMTkyLjE2OC4yLjEvdGNwLzUwMDEnKVxuICogLy8gPE11bHRpYWRkciAwNGMwYTgwMjAxMDYxMzg5IC0gL2lwNC8xOTIuMTY4LjIuMS90Y3AvNTAwMT5cbiAqIGNvbnN0IG1oMyA9IG1oMS5lbmNhcHN1bGF0ZShtaDIpXG4gKiAvLyA8TXVsdGlhZGRyIDA0N2YwMDAwMDEwNjBmYTEwNGMwYTgwMjAxMDYxMzg5IC0gL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEvaXA0LzE5Mi4xNjguMi4xL3RjcC81MDAxPlxuICogbWgxLmlzVGhpbldhaXN0QWRkcmVzcygpXG4gKiAvLyB0cnVlXG4gKiBtaDIuaXNUaGluV2Fpc3RBZGRyZXNzKClcbiAqIC8vIHRydWVcbiAqIG1oMy5pc1RoaW5XYWlzdEFkZHJlc3MoKVxuICogLy8gZmFsc2VcbiAqL1xuTXVsdGlhZGRyLnByb3RvdHlwZS5pc1RoaW5XYWlzdEFkZHJlc3MgPSBmdW5jdGlvbiBpc1RoaW5XYWlzdEFkZHJlc3MgKGFkZHIpIHtcbiAgY29uc3QgcHJvdG9zID0gKGFkZHIgfHwgdGhpcykucHJvdG9zKClcblxuICBpZiAocHJvdG9zLmxlbmd0aCAhPT0gMikge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKHByb3Rvc1swXS5jb2RlICE9PSA0ICYmIHByb3Rvc1swXS5jb2RlICE9PSA0MSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmIChwcm90b3NbMV0uY29kZSAhPT0gNiAmJiBwcm90b3NbMV0uY29kZSAhPT0gMjczKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBPYmplY3QgY29udGFpbmluZyB0YWJsZSwgbmFtZXMgYW5kIGNvZGVzIG9mIGFsbCBzdXBwb3J0ZWQgcHJvdG9jb2xzLlxuICogVG8gZ2V0IHRoZSBwcm90b2NvbCB2YWx1ZXMgZnJvbSBhIE11bHRpYWRkciwgeW91IGNhbiB1c2VcbiAqIFtgLnByb3RvcygpYF0oI211bHRpYWRkcnByb3RvcyksXG4gKiBbYC5wcm90b0NvZGVzKClgXSgjbXVsdGlhZGRycHJvdG9jb2Rlcykgb3JcbiAqIFtgLnByb3RvTmFtZXMoKWBdKCNtdWx0aWFkZHJwcm90b25hbWVzKVxuICpcbiAqIEBpbnN0YW5jZVxuICogQHJldHVybnMge3t0YWJsZTogQXJyYXksIG5hbWVzOiBPYmplY3QsIGNvZGVzOiBPYmplY3R9fVxuICpcbiAqL1xuTXVsdGlhZGRyLnByb3RvY29scyA9IHByb3RvY29sc1xuXG4vKipcbiAqIFJldHVybnMgaWYgc29tZXRoaW5nIGlzIGEgTXVsdGlhZGRyIHRoYXQgaXMgYSBuYW1lXG4gKlxuICogQHBhcmFtIHtNdWx0aWFkZHJ9IGFkZHJcbiAqIEByZXR1cm4ge0Jvb2x9IGlzTmFtZVxuICovXG5NdWx0aWFkZHIuaXNOYW1lID0gZnVuY3Rpb24gaXNOYW1lIChhZGRyKSB7XG4gIGlmICghTXVsdGlhZGRyLmlzTXVsdGlhZGRyKGFkZHIpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBpZiBhIHBhcnQgb2YgdGhlIG11bHRpYWRkciBpcyByZXNvbHZhYmxlLCB0aGVuIHJldHVybiB0cnVlXG4gIHJldHVybiBhZGRyLnByb3RvcygpLnNvbWUoKHByb3RvKSA9PiBwcm90by5yZXNvbHZhYmxlKVxufVxuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2YgbXVsdGlhZGRycywgYnkgcmVzb2x2aW5nIHRoZSBtdWx0aWFkZHIgdGhhdCBpcyBhIG5hbWVcbiAqXG4gKiBAYXN5bmNcbiAqIEBwYXJhbSB7TXVsdGlhZGRyfSBhZGRyXG4gKiBAcmV0dXJuIHtNdWx0aWFkZHJbXX1cbiAqL1xuTXVsdGlhZGRyLnJlc29sdmUgPSBmdW5jdGlvbiByZXNvbHZlIChhZGRyKSB7XG4gIGlmICghTXVsdGlhZGRyLmlzTXVsdGlhZGRyKGFkZHIpIHx8ICFNdWx0aWFkZHIuaXNOYW1lKGFkZHIpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KEVycm9yKCdub3QgYSB2YWxpZCBuYW1lJykpXG4gIH1cblxuICAvKlxuICAgKiBOZWVkcyBtb3JlIGNvbnNpZGVyYXRpb24gZnJvbSBzcGVjIGRlc2lnbjpcbiAgICogICAtIHdoYXQgdG8gcmV0dXJuXG4gICAqICAgLSBob3cgdG8gYWNoaWV2ZSBpdCBpbiB0aGUgYnJvd3Nlcj9cbiAgICovXG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCB5ZXQnKSlcbn1cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gTXVsdGlhZGRyXG4iLCIndXNlIHN0cmljdCdcbmNvbnN0IHZhcmludCA9IHJlcXVpcmUoJ3ZhcmludCcpXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBudW1iZXJUb0J1ZmZlcixcbiAgYnVmZmVyVG9OdW1iZXIsXG4gIHZhcmludEJ1ZmZlckVuY29kZSxcbiAgdmFyaW50QnVmZmVyRGVjb2RlLFxuICB2YXJpbnRFbmNvZGVcbn1cblxuZnVuY3Rpb24gYnVmZmVyVG9OdW1iZXIgKGJ1Zikge1xuICByZXR1cm4gcGFyc2VJbnQoYnVmLnRvU3RyaW5nKCdoZXgnKSwgMTYpXG59XG5cbmZ1bmN0aW9uIG51bWJlclRvQnVmZmVyIChudW0pIHtcbiAgbGV0IGhleFN0cmluZyA9IG51bS50b1N0cmluZygxNilcbiAgaWYgKGhleFN0cmluZy5sZW5ndGggJSAyID09PSAxKSB7XG4gICAgaGV4U3RyaW5nID0gJzAnICsgaGV4U3RyaW5nXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGhleFN0cmluZywgJ2hleCcpXG59XG5cbmZ1bmN0aW9uIHZhcmludEJ1ZmZlckVuY29kZSAoaW5wdXQpIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHZhcmludC5lbmNvZGUoYnVmZmVyVG9OdW1iZXIoaW5wdXQpKSlcbn1cblxuZnVuY3Rpb24gdmFyaW50QnVmZmVyRGVjb2RlIChpbnB1dCkge1xuICByZXR1cm4gbnVtYmVyVG9CdWZmZXIodmFyaW50LmRlY29kZShpbnB1dCkpXG59XG5cbmZ1bmN0aW9uIHZhcmludEVuY29kZSAobnVtKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh2YXJpbnQuZW5jb2RlKG51bSkpXG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIHdpdGhJcyhDbGFzcywgeyBjbGFzc05hbWUsIHN5bWJvbE5hbWUgfSkge1xuICAgIGNvbnN0IHN5bWJvbCA9IFN5bWJvbC5mb3Ioc3ltYm9sTmFtZSk7XG5cbiAgICBjb25zdCBDbGFzc0lzV3JhcHBlciA9IHtcbiAgICAgICAgLy8gVGhlIGNvZGUgYmVsb3cgYXNzaWducyB0aGUgY2xhc3Mgd3JhcHBlciB0byBhbiBvYmplY3QgdG8gdHJpY2tcbiAgICAgICAgLy8gSmF2YVNjcmlwdCBlbmdpbmVzIHRvIHNob3cgdGhlIG5hbWUgb2YgdGhlIGV4dGVuZGVkIGNsYXNzIHdoZW5cbiAgICAgICAgLy8gbG9nZ2luZyBhbiBpbnN0YW5jZXMuXG4gICAgICAgIC8vIFdlIGFyZSBhc3NpZ25pbmcgYW4gYW5vbnltb3VzIGNsYXNzIChjbGFzcyB3cmFwcGVyKSB0byB0aGUgb2JqZWN0XG4gICAgICAgIC8vIHdpdGgga2V5IGBjbGFzc05hbWVgIHRvIGtlZXAgdGhlIGNvcnJlY3QgbmFtZS5cbiAgICAgICAgLy8gSWYgdGhpcyBpcyBub3Qgc3VwcG9ydGVkIGl0IGZhbGxzIGJhY2sgdG8gbG9nZ2luZyBgQ2xhc3NJc1dyYXBwZXJgLlxuICAgICAgICBbY2xhc3NOYW1lXTogY2xhc3MgZXh0ZW5kcyBDbGFzcyB7XG4gICAgICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgc3VwZXIoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHN5bWJvbCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjbGFzc05hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfVtjbGFzc05hbWVdO1xuXG4gICAgQ2xhc3NJc1dyYXBwZXJbYGlzJHtjbGFzc05hbWV9YF0gPSAob2JqKSA9PiAhIShvYmogJiYgb2JqW3N5bWJvbF0pO1xuXG4gICAgcmV0dXJuIENsYXNzSXNXcmFwcGVyO1xufVxuXG5mdW5jdGlvbiB3aXRoSXNQcm90byhDbGFzcywgeyBjbGFzc05hbWUsIHN5bWJvbE5hbWUsIHdpdGhvdXROZXcgfSkge1xuICAgIGNvbnN0IHN5bWJvbCA9IFN5bWJvbC5mb3Ioc3ltYm9sTmFtZSk7XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBvYmplY3Qtc2hvcnRoYW5kICovXG4gICAgY29uc3QgQ2xhc3NJc1dyYXBwZXIgPSB7XG4gICAgICAgIFtjbGFzc05hbWVdOiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgaWYgKHdpdGhvdXROZXcgJiYgISh0aGlzIGluc3RhbmNlb2YgQ2xhc3NJc1dyYXBwZXIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDbGFzc0lzV3JhcHBlciguLi5hcmdzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgX3RoaXMgPSBDbGFzcy5jYWxsKHRoaXMsIC4uLmFyZ3MpIHx8IHRoaXM7XG5cbiAgICAgICAgICAgIGlmIChfdGhpcyAmJiAhX3RoaXNbc3ltYm9sXSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfdGhpcywgc3ltYm9sLCB7IHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgICAgIH0sXG4gICAgfVtjbGFzc05hbWVdO1xuICAgIC8qIGVzbGludC1lbmFibGUgb2JqZWN0LXNob3J0aGFuZCAqL1xuXG4gICAgQ2xhc3NJc1dyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShDbGFzcy5wcm90b3R5cGUpO1xuICAgIENsYXNzSXNXcmFwcGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENsYXNzSXNXcmFwcGVyO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENsYXNzSXNXcmFwcGVyLnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgIHJldHVybiBjbGFzc05hbWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBDbGFzc0lzV3JhcHBlcltgaXMke2NsYXNzTmFtZX1gXSA9IChvYmopID0+ICEhKG9iaiAmJiBvYmpbc3ltYm9sXSk7XG5cbiAgICByZXR1cm4gQ2xhc3NJc1dyYXBwZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2l0aElzO1xubW9kdWxlLmV4cG9ydHMucHJvdG8gPSB3aXRoSXNQcm90bztcbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycywgdmFsaWRhdGVNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3V0aWwvdmFsaWRhdG9ycyc7XG5pbXBvcnQgaXNJUEZTIGZyb20gJ2lzLWlwZnMnO1xuaW1wb3J0IHsgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi8uLi91dGlsL2Vycm9yUmVzcG9uc2UnO1xuaW1wb3J0IHsgUGluYXRhQ29uZmlnIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHsgUGluYXRhTWV0YWRhdGEgfSBmcm9tICcuLi9kYXRhL3Bpbkxpc3QvcGluTGlzdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhhc2hNZXRhZGF0YShjb25maWc6IFBpbmF0YUNvbmZpZywgaXBmc1Bpbkhhc2g6IHN0cmluZywgbWV0YWRhdGE6UGluYXRhTWV0YWRhdGEpOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghaXBmc1Bpbkhhc2gpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpcGZzUGluSGFzaCB2YWx1ZSBpcyByZXF1aXJlZCBmb3IgY2hhbmdpbmcgdGhlIHBpbiBwb2xpY3kgb2YgYSBwaW4nKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzSVBGUy5jaWQoaXBmc1Bpbkhhc2gpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaXBmc1Bpbkhhc2ggdmFsdWUgaXMgYW4gaW52YWxpZCBJUEZTIENJRCcpO1xuICAgIH1cblxuICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBtZXRhZGF0YSBvYmplY3QgcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZU1ldGFkYXRhKG1ldGFkYXRhKTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YmFzZVVybH0vcGlubmluZy9oYXNoTWV0YWRhdGFgO1xuICAgIGNvbnN0IGJvZHk6IHtcbiAgICAgICAgaXBmc1Bpbkhhc2g6IHN0cmluZyxcbiAgICAgICAgbmFtZT86IGFueSxcbiAgICAgICAga2V5dmFsdWVzPzogYW55XG4gICAgfSA9IHtcbiAgICAgICAgaXBmc1Bpbkhhc2g6IGlwZnNQaW5IYXNoXG4gICAgfTtcblxuICAgIGlmIChtZXRhZGF0YS5uYW1lKSB7XG4gICAgICAgIGJvZHkubmFtZSA9IG1ldGFkYXRhLm5hbWU7XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLmtleXZhbHVlcykge1xuICAgICAgICBib2R5LmtleXZhbHVlcyA9IG1ldGFkYXRhLmtleXZhbHVlcztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvcy5wdXQoXG4gICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICB7Li4uY3JlYXRlQ29uZmlnRm9yQXhpb3NIZWFkZXJzKGNvbmZpZyl9KVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYHVua25vd24gc2VydmVyIHJlc3BvbnNlIHdoaWxlIGNoYW5naW5nIG1ldGFkYXRhIGZvciBoYXNoOiAke3Jlc3VsdH1gKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRFcnJvciA9IGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHJlamVjdChmb3JtYXR0ZWRFcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuIiwidmFyIENvbWJpbmVkU3RyZWFtID0gcmVxdWlyZSgnY29tYmluZWQtc3RyZWFtJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xudmFyIGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG52YXIgaHR0cHMgPSByZXF1aXJlKCdodHRwcycpO1xudmFyIHBhcnNlVXJsID0gcmVxdWlyZSgndXJsJykucGFyc2U7XG52YXIgZnMgPSByZXF1aXJlKCdmcycpO1xudmFyIG1pbWUgPSByZXF1aXJlKCdtaW1lLXR5cGVzJyk7XG52YXIgYXN5bmNraXQgPSByZXF1aXJlKCdhc3luY2tpdCcpO1xudmFyIHBvcHVsYXRlID0gcmVxdWlyZSgnLi9wb3B1bGF0ZS5qcycpO1xuXG4vLyBQdWJsaWMgQVBJXG5tb2R1bGUuZXhwb3J0cyA9IEZvcm1EYXRhO1xuXG4vLyBtYWtlIGl0IGEgU3RyZWFtXG51dGlsLmluaGVyaXRzKEZvcm1EYXRhLCBDb21iaW5lZFN0cmVhbSk7XG5cbi8qKlxuICogQ3JlYXRlIHJlYWRhYmxlIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIHN0cmVhbXMuXG4gKiBDYW4gYmUgdXNlZCB0byBzdWJtaXQgZm9ybXNcbiAqIGFuZCBmaWxlIHVwbG9hZHMgdG8gb3RoZXIgd2ViIGFwcGxpY2F0aW9ucy5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gUHJvcGVydGllcyB0byBiZSBhZGRlZC9vdmVycmlkZW4gZm9yIEZvcm1EYXRhIGFuZCBDb21iaW5lZFN0cmVhbVxuICovXG5mdW5jdGlvbiBGb3JtRGF0YShvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBGb3JtRGF0YSkpIHtcbiAgICByZXR1cm4gbmV3IEZvcm1EYXRhKCk7XG4gIH1cblxuICB0aGlzLl9vdmVyaGVhZExlbmd0aCA9IDA7XG4gIHRoaXMuX3ZhbHVlTGVuZ3RoID0gMDtcbiAgdGhpcy5fdmFsdWVzVG9NZWFzdXJlID0gW107XG5cbiAgQ29tYmluZWRTdHJlYW0uY2FsbCh0aGlzKTtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgZm9yICh2YXIgb3B0aW9uIGluIG9wdGlvbnMpIHtcbiAgICB0aGlzW29wdGlvbl0gPSBvcHRpb25zW29wdGlvbl07XG4gIH1cbn1cblxuRm9ybURhdGEuTElORV9CUkVBSyA9ICdcXHJcXG4nO1xuRm9ybURhdGEuREVGQVVMVF9DT05URU5UX1RZUEUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcblxuRm9ybURhdGEucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKGZpZWxkLCB2YWx1ZSwgb3B0aW9ucykge1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIGFsbG93IGZpbGVuYW1lIGFzIHNpbmdsZSBvcHRpb25cbiAgaWYgKHR5cGVvZiBvcHRpb25zID09ICdzdHJpbmcnKSB7XG4gICAgb3B0aW9ucyA9IHtmaWxlbmFtZTogb3B0aW9uc307XG4gIH1cblxuICB2YXIgYXBwZW5kID0gQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLmFwcGVuZC5iaW5kKHRoaXMpO1xuXG4gIC8vIGFsbCB0aGF0IHN0cmVhbXkgYnVzaW5lc3MgY2FuJ3QgaGFuZGxlIG51bWJlcnNcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHZhbHVlID0gJycgKyB2YWx1ZTtcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mZWxpeGdlL25vZGUtZm9ybS1kYXRhL2lzc3Vlcy8zOFxuICBpZiAodXRpbC5pc0FycmF5KHZhbHVlKSkge1xuICAgIC8vIFBsZWFzZSBjb252ZXJ0IHlvdXIgYXJyYXkgaW50byBzdHJpbmdcbiAgICAvLyB0aGUgd2F5IHdlYiBzZXJ2ZXIgZXhwZWN0cyBpdFxuICAgIHRoaXMuX2Vycm9yKG5ldyBFcnJvcignQXJyYXlzIGFyZSBub3Qgc3VwcG9ydGVkLicpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgaGVhZGVyID0gdGhpcy5fbXVsdGlQYXJ0SGVhZGVyKGZpZWxkLCB2YWx1ZSwgb3B0aW9ucyk7XG4gIHZhciBmb290ZXIgPSB0aGlzLl9tdWx0aVBhcnRGb290ZXIoKTtcblxuICBhcHBlbmQoaGVhZGVyKTtcbiAgYXBwZW5kKHZhbHVlKTtcbiAgYXBwZW5kKGZvb3Rlcik7XG5cbiAgLy8gcGFzcyBhbG9uZyBvcHRpb25zLmtub3duTGVuZ3RoXG4gIHRoaXMuX3RyYWNrTGVuZ3RoKGhlYWRlciwgdmFsdWUsIG9wdGlvbnMpO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLl90cmFja0xlbmd0aCA9IGZ1bmN0aW9uKGhlYWRlciwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHZhbHVlTGVuZ3RoID0gMDtcblxuICAvLyB1c2VkIHcvIGdldExlbmd0aFN5bmMoKSwgd2hlbiBsZW5ndGggaXMga25vd24uXG4gIC8vIGUuZy4gZm9yIHN0cmVhbWluZyBkaXJlY3RseSBmcm9tIGEgcmVtb3RlIHNlcnZlcixcbiAgLy8gdy8gYSBrbm93biBmaWxlIGEgc2l6ZSwgYW5kIG5vdCB3YW50aW5nIHRvIHdhaXQgZm9yXG4gIC8vIGluY29taW5nIGZpbGUgdG8gZmluaXNoIHRvIGdldCBpdHMgc2l6ZS5cbiAgaWYgKG9wdGlvbnMua25vd25MZW5ndGggIT0gbnVsbCkge1xuICAgIHZhbHVlTGVuZ3RoICs9ICtvcHRpb25zLmtub3duTGVuZ3RoO1xuICB9IGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICB2YWx1ZUxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWVMZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSk7XG4gIH1cblxuICB0aGlzLl92YWx1ZUxlbmd0aCArPSB2YWx1ZUxlbmd0aDtcblxuICAvLyBAY2hlY2sgd2h5IGFkZCBDUkxGPyBkb2VzIHRoaXMgYWNjb3VudCBmb3IgY3VzdG9tL211bHRpcGxlIENSTEZzP1xuICB0aGlzLl9vdmVyaGVhZExlbmd0aCArPVxuICAgIEJ1ZmZlci5ieXRlTGVuZ3RoKGhlYWRlcikgK1xuICAgIEZvcm1EYXRhLkxJTkVfQlJFQUsubGVuZ3RoO1xuXG4gIC8vIGVtcHR5IG9yIGVpdGhlciBkb2Vzbid0IGhhdmUgcGF0aCBvciBub3QgYW4gaHR0cCByZXNwb25zZVxuICBpZiAoIXZhbHVlIHx8ICggIXZhbHVlLnBhdGggJiYgISh2YWx1ZS5yZWFkYWJsZSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnaHR0cFZlcnNpb24nKSkgKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIG5vIG5lZWQgdG8gYm90aGVyIHdpdGggdGhlIGxlbmd0aFxuICBpZiAoIW9wdGlvbnMua25vd25MZW5ndGgpIHtcbiAgICB0aGlzLl92YWx1ZXNUb01lYXN1cmUucHVzaCh2YWx1ZSk7XG4gIH1cbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5fbGVuZ3RoUmV0cmlldmVyID0gZnVuY3Rpb24odmFsdWUsIGNhbGxiYWNrKSB7XG5cbiAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdmZCcpKSB7XG5cbiAgICAvLyB0YWtlIHJlYWQgcmFuZ2UgaW50byBhIGFjY291bnRcbiAgICAvLyBgZW5kYCA9IEluZmluaXR5IOKAkz4gcmVhZCBmaWxlIHRpbGwgdGhlIGVuZFxuICAgIC8vXG4gICAgLy8gVE9ETzogTG9va3MgbGlrZSB0aGVyZSBpcyBidWcgaW4gTm9kZSBmcy5jcmVhdGVSZWFkU3RyZWFtXG4gICAgLy8gaXQgZG9lc24ndCByZXNwZWN0IGBlbmRgIG9wdGlvbnMgd2l0aG91dCBgc3RhcnRgIG9wdGlvbnNcbiAgICAvLyBGaXggaXQgd2hlbiBub2RlIGZpeGVzIGl0LlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qb3llbnQvbm9kZS9pc3N1ZXMvNzgxOVxuICAgIGlmICh2YWx1ZS5lbmQgIT0gdW5kZWZpbmVkICYmIHZhbHVlLmVuZCAhPSBJbmZpbml0eSAmJiB2YWx1ZS5zdGFydCAhPSB1bmRlZmluZWQpIHtcblxuICAgICAgLy8gd2hlbiBlbmQgc3BlY2lmaWVkXG4gICAgICAvLyBubyBuZWVkIHRvIGNhbGN1bGF0ZSByYW5nZVxuICAgICAgLy8gaW5jbHVzaXZlLCBzdGFydHMgd2l0aCAwXG4gICAgICBjYWxsYmFjayhudWxsLCB2YWx1ZS5lbmQgKyAxIC0gKHZhbHVlLnN0YXJ0ID8gdmFsdWUuc3RhcnQgOiAwKSk7XG5cbiAgICAvLyBub3QgdGhhdCBmYXN0IHNub29weVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzdGlsbCBuZWVkIHRvIGZldGNoIGZpbGUgc2l6ZSBmcm9tIGZzXG4gICAgICBmcy5zdGF0KHZhbHVlLnBhdGgsIGZ1bmN0aW9uKGVyciwgc3RhdCkge1xuXG4gICAgICAgIHZhciBmaWxlU2l6ZTtcblxuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1cGRhdGUgZmluYWwgc2l6ZSBiYXNlZCBvbiB0aGUgcmFuZ2Ugb3B0aW9uc1xuICAgICAgICBmaWxlU2l6ZSA9IHN0YXQuc2l6ZSAtICh2YWx1ZS5zdGFydCA/IHZhbHVlLnN0YXJ0IDogMCk7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIGZpbGVTaXplKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAvLyBvciBodHRwIHJlc3BvbnNlXG4gIH0gZWxzZSBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2h0dHBWZXJzaW9uJykpIHtcbiAgICBjYWxsYmFjayhudWxsLCArdmFsdWUuaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSk7XG5cbiAgLy8gb3IgcmVxdWVzdCBzdHJlYW0gaHR0cDovL2dpdGh1Yi5jb20vbWlrZWFsL3JlcXVlc3RcbiAgfSBlbHNlIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnaHR0cE1vZHVsZScpKSB7XG4gICAgLy8gd2FpdCB0aWxsIHJlc3BvbnNlIGNvbWUgYmFja1xuICAgIHZhbHVlLm9uKCdyZXNwb25zZScsIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICB2YWx1ZS5wYXVzZSgpO1xuICAgICAgY2FsbGJhY2sobnVsbCwgK3Jlc3BvbnNlLmhlYWRlcnNbJ2NvbnRlbnQtbGVuZ3RoJ10pO1xuICAgIH0pO1xuICAgIHZhbHVlLnJlc3VtZSgpO1xuXG4gIC8vIHNvbWV0aGluZyBlbHNlXG4gIH0gZWxzZSB7XG4gICAgY2FsbGJhY2soJ1Vua25vd24gc3RyZWFtJyk7XG4gIH1cbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5fbXVsdGlQYXJ0SGVhZGVyID0gZnVuY3Rpb24oZmllbGQsIHZhbHVlLCBvcHRpb25zKSB7XG4gIC8vIGN1c3RvbSBoZWFkZXIgc3BlY2lmaWVkIChhcyBzdHJpbmcpP1xuICAvLyBpdCBiZWNvbWVzIHJlc3BvbnNpYmxlIGZvciBib3VuZGFyeVxuICAvLyAoZS5nLiB0byBoYW5kbGUgZXh0cmEgQ1JMRnMgb24gLk5FVCBzZXJ2ZXJzKVxuICBpZiAodHlwZW9mIG9wdGlvbnMuaGVhZGVyID09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuaGVhZGVyO1xuICB9XG5cbiAgdmFyIGNvbnRlbnREaXNwb3NpdGlvbiA9IHRoaXMuX2dldENvbnRlbnREaXNwb3NpdGlvbih2YWx1ZSwgb3B0aW9ucyk7XG4gIHZhciBjb250ZW50VHlwZSA9IHRoaXMuX2dldENvbnRlbnRUeXBlKHZhbHVlLCBvcHRpb25zKTtcblxuICB2YXIgY29udGVudHMgPSAnJztcbiAgdmFyIGhlYWRlcnMgID0ge1xuICAgIC8vIGFkZCBjdXN0b20gZGlzcG9zaXRpb24gYXMgdGhpcmQgZWxlbWVudCBvciBrZWVwIGl0IHR3byBlbGVtZW50cyBpZiBub3RcbiAgICAnQ29udGVudC1EaXNwb3NpdGlvbic6IFsnZm9ybS1kYXRhJywgJ25hbWU9XCInICsgZmllbGQgKyAnXCInXS5jb25jYXQoY29udGVudERpc3Bvc2l0aW9uIHx8IFtdKSxcbiAgICAvLyBpZiBubyBjb250ZW50IHR5cGUuIGFsbG93IGl0IHRvIGJlIGVtcHR5IGFycmF5XG4gICAgJ0NvbnRlbnQtVHlwZSc6IFtdLmNvbmNhdChjb250ZW50VHlwZSB8fCBbXSlcbiAgfTtcblxuICAvLyBhbGxvdyBjdXN0b20gaGVhZGVycy5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmhlYWRlciA9PSAnb2JqZWN0Jykge1xuICAgIHBvcHVsYXRlKGhlYWRlcnMsIG9wdGlvbnMuaGVhZGVyKTtcbiAgfVxuXG4gIHZhciBoZWFkZXI7XG4gIGZvciAodmFyIHByb3AgaW4gaGVhZGVycykge1xuICAgIGlmICghaGVhZGVycy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgY29udGludWU7XG4gICAgaGVhZGVyID0gaGVhZGVyc1twcm9wXTtcblxuICAgIC8vIHNraXAgbnVsbGlzaCBoZWFkZXJzLlxuICAgIGlmIChoZWFkZXIgPT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gY29udmVydCBhbGwgaGVhZGVycyB0byBhcnJheXMuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGhlYWRlcikpIHtcbiAgICAgIGhlYWRlciA9IFtoZWFkZXJdO1xuICAgIH1cblxuICAgIC8vIGFkZCBub24tZW1wdHkgaGVhZGVycy5cbiAgICBpZiAoaGVhZGVyLmxlbmd0aCkge1xuICAgICAgY29udGVudHMgKz0gcHJvcCArICc6ICcgKyBoZWFkZXIuam9pbignOyAnKSArIEZvcm1EYXRhLkxJTkVfQlJFQUs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICctLScgKyB0aGlzLmdldEJvdW5kYXJ5KCkgKyBGb3JtRGF0YS5MSU5FX0JSRUFLICsgY29udGVudHMgKyBGb3JtRGF0YS5MSU5FX0JSRUFLO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLl9nZXRDb250ZW50RGlzcG9zaXRpb24gPSBmdW5jdGlvbih2YWx1ZSwgb3B0aW9ucykge1xuXG4gIHZhciBmaWxlbmFtZVxuICAgICwgY29udGVudERpc3Bvc2l0aW9uXG4gICAgO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5maWxlcGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBjdXN0b20gZmlsZXBhdGggZm9yIHJlbGF0aXZlIHBhdGhzXG4gICAgZmlsZW5hbWUgPSBwYXRoLm5vcm1hbGl6ZShvcHRpb25zLmZpbGVwYXRoKS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5maWxlbmFtZSB8fCB2YWx1ZS5uYW1lIHx8IHZhbHVlLnBhdGgpIHtcbiAgICAvLyBjdXN0b20gZmlsZW5hbWUgdGFrZSBwcmVjZWRlbmNlXG4gICAgLy8gZm9ybWlkYWJsZSBhbmQgdGhlIGJyb3dzZXIgYWRkIGEgbmFtZSBwcm9wZXJ0eVxuICAgIC8vIGZzLSBhbmQgcmVxdWVzdC0gc3RyZWFtcyBoYXZlIHBhdGggcHJvcGVydHlcbiAgICBmaWxlbmFtZSA9IHBhdGguYmFzZW5hbWUob3B0aW9ucy5maWxlbmFtZSB8fCB2YWx1ZS5uYW1lIHx8IHZhbHVlLnBhdGgpO1xuICB9IGVsc2UgaWYgKHZhbHVlLnJlYWRhYmxlICYmIHZhbHVlLmhhc093blByb3BlcnR5KCdodHRwVmVyc2lvbicpKSB7XG4gICAgLy8gb3IgdHJ5IGh0dHAgcmVzcG9uc2VcbiAgICBmaWxlbmFtZSA9IHBhdGguYmFzZW5hbWUodmFsdWUuY2xpZW50Ll9odHRwTWVzc2FnZS5wYXRoIHx8ICcnKTtcbiAgfVxuXG4gIGlmIChmaWxlbmFtZSkge1xuICAgIGNvbnRlbnREaXNwb3NpdGlvbiA9ICdmaWxlbmFtZT1cIicgKyBmaWxlbmFtZSArICdcIic7XG4gIH1cblxuICByZXR1cm4gY29udGVudERpc3Bvc2l0aW9uO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLl9nZXRDb250ZW50VHlwZSA9IGZ1bmN0aW9uKHZhbHVlLCBvcHRpb25zKSB7XG5cbiAgLy8gdXNlIGN1c3RvbSBjb250ZW50LXR5cGUgYWJvdmUgYWxsXG4gIHZhciBjb250ZW50VHlwZSA9IG9wdGlvbnMuY29udGVudFR5cGU7XG5cbiAgLy8gb3IgdHJ5IGBuYW1lYCBmcm9tIGZvcm1pZGFibGUsIGJyb3dzZXJcbiAgaWYgKCFjb250ZW50VHlwZSAmJiB2YWx1ZS5uYW1lKSB7XG4gICAgY29udGVudFR5cGUgPSBtaW1lLmxvb2t1cCh2YWx1ZS5uYW1lKTtcbiAgfVxuXG4gIC8vIG9yIHRyeSBgcGF0aGAgZnJvbSBmcy0sIHJlcXVlc3QtIHN0cmVhbXNcbiAgaWYgKCFjb250ZW50VHlwZSAmJiB2YWx1ZS5wYXRoKSB7XG4gICAgY29udGVudFR5cGUgPSBtaW1lLmxvb2t1cCh2YWx1ZS5wYXRoKTtcbiAgfVxuXG4gIC8vIG9yIGlmIGl0J3MgaHR0cC1yZXBvbnNlXG4gIGlmICghY29udGVudFR5cGUgJiYgdmFsdWUucmVhZGFibGUgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkoJ2h0dHBWZXJzaW9uJykpIHtcbiAgICBjb250ZW50VHlwZSA9IHZhbHVlLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddO1xuICB9XG5cbiAgLy8gb3IgZ3Vlc3MgaXQgZnJvbSB0aGUgZmlsZXBhdGggb3IgZmlsZW5hbWVcbiAgaWYgKCFjb250ZW50VHlwZSAmJiAob3B0aW9ucy5maWxlcGF0aCB8fCBvcHRpb25zLmZpbGVuYW1lKSkge1xuICAgIGNvbnRlbnRUeXBlID0gbWltZS5sb29rdXAob3B0aW9ucy5maWxlcGF0aCB8fCBvcHRpb25zLmZpbGVuYW1lKTtcbiAgfVxuXG4gIC8vIGZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBpZiBgdmFsdWVgIGlzIG5vdCBzaW1wbGUgdmFsdWVcbiAgaWYgKCFjb250ZW50VHlwZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICBjb250ZW50VHlwZSA9IEZvcm1EYXRhLkRFRkFVTFRfQ09OVEVOVF9UWVBFO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRlbnRUeXBlO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLl9tdWx0aVBhcnRGb290ZXIgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG5leHQpIHtcbiAgICB2YXIgZm9vdGVyID0gRm9ybURhdGEuTElORV9CUkVBSztcblxuICAgIHZhciBsYXN0UGFydCA9ICh0aGlzLl9zdHJlYW1zLmxlbmd0aCA9PT0gMCk7XG4gICAgaWYgKGxhc3RQYXJ0KSB7XG4gICAgICBmb290ZXIgKz0gdGhpcy5fbGFzdEJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgbmV4dChmb290ZXIpO1xuICB9LmJpbmQodGhpcyk7XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuX2xhc3RCb3VuZGFyeSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gJy0tJyArIHRoaXMuZ2V0Qm91bmRhcnkoKSArICctLScgKyBGb3JtRGF0YS5MSU5FX0JSRUFLO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLmdldEhlYWRlcnMgPSBmdW5jdGlvbih1c2VySGVhZGVycykge1xuICB2YXIgaGVhZGVyO1xuICB2YXIgZm9ybUhlYWRlcnMgPSB7XG4gICAgJ2NvbnRlbnQtdHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0nICsgdGhpcy5nZXRCb3VuZGFyeSgpXG4gIH07XG5cbiAgZm9yIChoZWFkZXIgaW4gdXNlckhlYWRlcnMpIHtcbiAgICBpZiAodXNlckhlYWRlcnMuaGFzT3duUHJvcGVydHkoaGVhZGVyKSkge1xuICAgICAgZm9ybUhlYWRlcnNbaGVhZGVyLnRvTG93ZXJDYXNlKCldID0gdXNlckhlYWRlcnNbaGVhZGVyXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZm9ybUhlYWRlcnM7XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuZ2V0Qm91bmRhcnkgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCF0aGlzLl9ib3VuZGFyeSkge1xuICAgIHRoaXMuX2dlbmVyYXRlQm91bmRhcnkoKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9ib3VuZGFyeTtcbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGRhdGFCdWZmZXIgPSBuZXcgQnVmZmVyLmFsbG9jKCAwICk7XG4gIHZhciBib3VuZGFyeSA9IHRoaXMuZ2V0Qm91bmRhcnkoKTtcblxuICAvLyBDcmVhdGUgdGhlIGZvcm0gY29udGVudC4gQWRkIExpbmUgYnJlYWtzIHRvIHRoZSBlbmQgb2YgZGF0YS5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuX3N0cmVhbXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3N0cmVhbXNbaV0gIT09ICdmdW5jdGlvbicpIHtcblxuICAgICAgLy8gQWRkIGNvbnRlbnQgdG8gdGhlIGJ1ZmZlci5cbiAgICAgIGlmKEJ1ZmZlci5pc0J1ZmZlcih0aGlzLl9zdHJlYW1zW2ldKSkge1xuICAgICAgICBkYXRhQnVmZmVyID0gQnVmZmVyLmNvbmNhdCggW2RhdGFCdWZmZXIsIHRoaXMuX3N0cmVhbXNbaV1dKTtcbiAgICAgIH1lbHNlIHtcbiAgICAgICAgZGF0YUJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoIFtkYXRhQnVmZmVyLCBCdWZmZXIuZnJvbSh0aGlzLl9zdHJlYW1zW2ldKV0pO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgYnJlYWsgYWZ0ZXIgY29udGVudC5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5fc3RyZWFtc1tpXSAhPT0gJ3N0cmluZycgfHwgdGhpcy5fc3RyZWFtc1tpXS5zdWJzdHJpbmcoIDIsIGJvdW5kYXJ5Lmxlbmd0aCArIDIgKSAhPT0gYm91bmRhcnkpIHtcbiAgICAgICAgZGF0YUJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoIFtkYXRhQnVmZmVyLCBCdWZmZXIuZnJvbShGb3JtRGF0YS5MSU5FX0JSRUFLKV0gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBZGQgdGhlIGZvb3RlciBhbmQgcmV0dXJuIHRoZSBCdWZmZXIgb2JqZWN0LlxuICByZXR1cm4gQnVmZmVyLmNvbmNhdCggW2RhdGFCdWZmZXIsIEJ1ZmZlci5mcm9tKHRoaXMuX2xhc3RCb3VuZGFyeSgpKV0gKTtcbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5fZ2VuZXJhdGVCb3VuZGFyeSA9IGZ1bmN0aW9uKCkge1xuICAvLyBUaGlzIGdlbmVyYXRlcyBhIDUwIGNoYXJhY3RlciBib3VuZGFyeSBzaW1pbGFyIHRvIHRob3NlIHVzZWQgYnkgRmlyZWZveC5cbiAgLy8gVGhleSBhcmUgb3B0aW1pemVkIGZvciBib3llci1tb29yZSBwYXJzaW5nLlxuICB2YXIgYm91bmRhcnkgPSAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDI0OyBpKyspIHtcbiAgICBib3VuZGFyeSArPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMCkudG9TdHJpbmcoMTYpO1xuICB9XG5cbiAgdGhpcy5fYm91bmRhcnkgPSBib3VuZGFyeTtcbn07XG5cbi8vIE5vdGU6IGdldExlbmd0aFN5bmMgRE9FU04nVCBjYWxjdWxhdGUgc3RyZWFtcyBsZW5ndGhcbi8vIEFzIHdvcmthcm91bmQgb25lIGNhbiBjYWxjdWxhdGUgZmlsZSBzaXplIG1hbnVhbGx5XG4vLyBhbmQgYWRkIGl0IGFzIGtub3duTGVuZ3RoIG9wdGlvblxuRm9ybURhdGEucHJvdG90eXBlLmdldExlbmd0aFN5bmMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGtub3duTGVuZ3RoID0gdGhpcy5fb3ZlcmhlYWRMZW5ndGggKyB0aGlzLl92YWx1ZUxlbmd0aDtcblxuICAvLyBEb24ndCBnZXQgY29uZnVzZWQsIHRoZXJlIGFyZSAzIFwiaW50ZXJuYWxcIiBzdHJlYW1zIGZvciBlYWNoIGtleXZhbCBwYWlyXG4gIC8vIHNvIGl0IGJhc2ljYWxseSBjaGVja3MgaWYgdGhlcmUgaXMgYW55IHZhbHVlIGFkZGVkIHRvIHRoZSBmb3JtXG4gIGlmICh0aGlzLl9zdHJlYW1zLmxlbmd0aCkge1xuICAgIGtub3duTGVuZ3RoICs9IHRoaXMuX2xhc3RCb3VuZGFyeSgpLmxlbmd0aDtcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3JtLWRhdGEvZm9ybS1kYXRhL2lzc3Vlcy80MFxuICBpZiAoIXRoaXMuaGFzS25vd25MZW5ndGgoKSkge1xuICAgIC8vIFNvbWUgYXN5bmMgbGVuZ3RoIHJldHJpZXZlcnMgYXJlIHByZXNlbnRcbiAgICAvLyB0aGVyZWZvcmUgc3luY2hyb25vdXMgbGVuZ3RoIGNhbGN1bGF0aW9uIGlzIGZhbHNlLlxuICAgIC8vIFBsZWFzZSB1c2UgZ2V0TGVuZ3RoKGNhbGxiYWNrKSB0byBnZXQgcHJvcGVyIGxlbmd0aFxuICAgIHRoaXMuX2Vycm9yKG5ldyBFcnJvcignQ2Fubm90IGNhbGN1bGF0ZSBwcm9wZXIgbGVuZ3RoIGluIHN5bmNocm9ub3VzIHdheS4nKSk7XG4gIH1cblxuICByZXR1cm4ga25vd25MZW5ndGg7XG59O1xuXG4vLyBQdWJsaWMgQVBJIHRvIGNoZWNrIGlmIGxlbmd0aCBvZiBhZGRlZCB2YWx1ZXMgaXMga25vd25cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3JtLWRhdGEvZm9ybS1kYXRhL2lzc3Vlcy8xOTZcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3JtLWRhdGEvZm9ybS1kYXRhL2lzc3Vlcy8yNjJcbkZvcm1EYXRhLnByb3RvdHlwZS5oYXNLbm93bkxlbmd0aCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaGFzS25vd25MZW5ndGggPSB0cnVlO1xuXG4gIGlmICh0aGlzLl92YWx1ZXNUb01lYXN1cmUubGVuZ3RoKSB7XG4gICAgaGFzS25vd25MZW5ndGggPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBoYXNLbm93bkxlbmd0aDtcbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5nZXRMZW5ndGggPSBmdW5jdGlvbihjYikge1xuICB2YXIga25vd25MZW5ndGggPSB0aGlzLl9vdmVyaGVhZExlbmd0aCArIHRoaXMuX3ZhbHVlTGVuZ3RoO1xuXG4gIGlmICh0aGlzLl9zdHJlYW1zLmxlbmd0aCkge1xuICAgIGtub3duTGVuZ3RoICs9IHRoaXMuX2xhc3RCb3VuZGFyeSgpLmxlbmd0aDtcbiAgfVxuXG4gIGlmICghdGhpcy5fdmFsdWVzVG9NZWFzdXJlLmxlbmd0aCkge1xuICAgIHByb2Nlc3MubmV4dFRpY2soY2IuYmluZCh0aGlzLCBudWxsLCBrbm93bkxlbmd0aCkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGFzeW5ja2l0LnBhcmFsbGVsKHRoaXMuX3ZhbHVlc1RvTWVhc3VyZSwgdGhpcy5fbGVuZ3RoUmV0cmlldmVyLCBmdW5jdGlvbihlcnIsIHZhbHVlcykge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGNiKGVycik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24obGVuZ3RoKSB7XG4gICAgICBrbm93bkxlbmd0aCArPSBsZW5ndGg7XG4gICAgfSk7XG5cbiAgICBjYihudWxsLCBrbm93bkxlbmd0aCk7XG4gIH0pO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLnN1Ym1pdCA9IGZ1bmN0aW9uKHBhcmFtcywgY2IpIHtcbiAgdmFyIHJlcXVlc3RcbiAgICAsIG9wdGlvbnNcbiAgICAsIGRlZmF1bHRzID0ge21ldGhvZDogJ3Bvc3QnfVxuICAgIDtcblxuICAvLyBwYXJzZSBwcm92aWRlZCB1cmwgaWYgaXQncyBzdHJpbmdcbiAgLy8gb3IgdHJlYXQgaXQgYXMgb3B0aW9ucyBvYmplY3RcbiAgaWYgKHR5cGVvZiBwYXJhbXMgPT0gJ3N0cmluZycpIHtcblxuICAgIHBhcmFtcyA9IHBhcnNlVXJsKHBhcmFtcyk7XG4gICAgb3B0aW9ucyA9IHBvcHVsYXRlKHtcbiAgICAgIHBvcnQ6IHBhcmFtcy5wb3J0LFxuICAgICAgcGF0aDogcGFyYW1zLnBhdGhuYW1lLFxuICAgICAgaG9zdDogcGFyYW1zLmhvc3RuYW1lLFxuICAgICAgcHJvdG9jb2w6IHBhcmFtcy5wcm90b2NvbFxuICAgIH0sIGRlZmF1bHRzKTtcblxuICAvLyB1c2UgY3VzdG9tIHBhcmFtc1xuICB9IGVsc2Uge1xuXG4gICAgb3B0aW9ucyA9IHBvcHVsYXRlKHBhcmFtcywgZGVmYXVsdHMpO1xuICAgIC8vIGlmIG5vIHBvcnQgcHJvdmlkZWQgdXNlIGRlZmF1bHQgb25lXG4gICAgaWYgKCFvcHRpb25zLnBvcnQpIHtcbiAgICAgIG9wdGlvbnMucG9ydCA9IG9wdGlvbnMucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyA0NDMgOiA4MDtcbiAgICB9XG4gIH1cblxuICAvLyBwdXQgdGhhdCBnb29kIGNvZGUgaW4gZ2V0SGVhZGVycyB0byBzb21lIHVzZVxuICBvcHRpb25zLmhlYWRlcnMgPSB0aGlzLmdldEhlYWRlcnMocGFyYW1zLmhlYWRlcnMpO1xuXG4gIC8vIGh0dHBzIGlmIHNwZWNpZmllZCwgZmFsbGJhY2sgdG8gaHR0cCBpbiBhbnkgb3RoZXIgY2FzZVxuICBpZiAob3B0aW9ucy5wcm90b2NvbCA9PSAnaHR0cHM6Jykge1xuICAgIHJlcXVlc3QgPSBodHRwcy5yZXF1ZXN0KG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHJlcXVlc3QgPSBodHRwLnJlcXVlc3Qob3B0aW9ucyk7XG4gIH1cblxuICAvLyBnZXQgY29udGVudCBsZW5ndGggYW5kIGZpcmUgYXdheVxuICB0aGlzLmdldExlbmd0aChmdW5jdGlvbihlcnIsIGxlbmd0aCkge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHRoaXMuX2Vycm9yKGVycik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gYWRkIGNvbnRlbnQgbGVuZ3RoXG4gICAgcmVxdWVzdC5zZXRIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgbGVuZ3RoKTtcblxuICAgIHRoaXMucGlwZShyZXF1ZXN0KTtcbiAgICBpZiAoY2IpIHtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgY2IpO1xuICAgICAgcmVxdWVzdC5vbigncmVzcG9uc2UnLCBjYi5iaW5kKHRoaXMsIG51bGwpKTtcbiAgICB9XG4gIH0uYmluZCh0aGlzKSk7XG5cbiAgcmV0dXJuIHJlcXVlc3Q7XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24oZXJyKSB7XG4gIGlmICghdGhpcy5lcnJvcikge1xuICAgIHRoaXMuZXJyb3IgPSBlcnI7XG4gICAgdGhpcy5wYXVzZSgpO1xuICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpO1xuICB9XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnW29iamVjdCBGb3JtRGF0YV0nO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZzXCIpOyIsInZhciBhc3luYyA9IHJlcXVpcmUoJy4vYXN5bmMuanMnKVxuICAsIGFib3J0ID0gcmVxdWlyZSgnLi9hYm9ydC5qcycpXG4gIDtcblxuLy8gQVBJXG5tb2R1bGUuZXhwb3J0cyA9IGl0ZXJhdGU7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlYWNoIGpvYiBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge2FycmF5fG9iamVjdH0gbGlzdCAtIGFycmF5IG9yIG9iamVjdCAobmFtZWQgbGlzdCkgdG8gaXRlcmF0ZSBvdmVyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBpdGVyYXRvciAtIGl0ZXJhdG9yIHRvIHJ1blxuICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBqb2Igc3RhdHVzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGludm9rZWQgd2hlbiBhbGwgZWxlbWVudHMgcHJvY2Vzc2VkXG4gKi9cbmZ1bmN0aW9uIGl0ZXJhdGUobGlzdCwgaXRlcmF0b3IsIHN0YXRlLCBjYWxsYmFjaylcbntcbiAgLy8gc3RvcmUgY3VycmVudCBpbmRleFxuICB2YXIga2V5ID0gc3RhdGVbJ2tleWVkTGlzdCddID8gc3RhdGVbJ2tleWVkTGlzdCddW3N0YXRlLmluZGV4XSA6IHN0YXRlLmluZGV4O1xuXG4gIHN0YXRlLmpvYnNba2V5XSA9IHJ1bkpvYihpdGVyYXRvciwga2V5LCBsaXN0W2tleV0sIGZ1bmN0aW9uKGVycm9yLCBvdXRwdXQpXG4gIHtcbiAgICAvLyBkb24ndCByZXBlYXQgeW91cnNlbGZcbiAgICAvLyBza2lwIHNlY29uZGFyeSBjYWxsYmFja3NcbiAgICBpZiAoIShrZXkgaW4gc3RhdGUuam9icykpXG4gICAge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNsZWFuIHVwIGpvYnNcbiAgICBkZWxldGUgc3RhdGUuam9ic1trZXldO1xuXG4gICAgaWYgKGVycm9yKVxuICAgIHtcbiAgICAgIC8vIGRvbid0IHByb2Nlc3MgcmVzdCBvZiB0aGUgcmVzdWx0c1xuICAgICAgLy8gc3RvcCBzdGlsbCBhY3RpdmUgam9ic1xuICAgICAgLy8gYW5kIHJlc2V0IHRoZSBsaXN0XG4gICAgICBhYm9ydChzdGF0ZSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICB7XG4gICAgICBzdGF0ZS5yZXN1bHRzW2tleV0gPSBvdXRwdXQ7XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuIHNhbHZhZ2VkIHJlc3VsdHNcbiAgICBjYWxsYmFjayhlcnJvciwgc3RhdGUucmVzdWx0cyk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJ1bnMgaXRlcmF0b3Igb3ZlciBwcm92aWRlZCBqb2IgZWxlbWVudFxuICpcbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gaXRlcmF0b3IgLSBpdGVyYXRvciB0byBpbnZva2VcbiAqIEBwYXJhbSAgIHtzdHJpbmd8bnVtYmVyfSBrZXkgLSBrZXkvaW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGhlIGxpc3Qgb2Ygam9ic1xuICogQHBhcmFtICAge21peGVkfSBpdGVtIC0gam9iIGRlc2NyaXB0aW9uXG4gKiBAcGFyYW0gICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gaW52b2tlZCBhZnRlciBpdGVyYXRvciBpcyBkb25lIHdpdGggdGhlIGpvYlxuICogQHJldHVybnMge2Z1bmN0aW9ufG1peGVkfSAtIGpvYiBhYm9ydCBmdW5jdGlvbiBvciBzb21ldGhpbmcgZWxzZVxuICovXG5mdW5jdGlvbiBydW5Kb2IoaXRlcmF0b3IsIGtleSwgaXRlbSwgY2FsbGJhY2spXG57XG4gIHZhciBhYm9ydGVyO1xuXG4gIC8vIGFsbG93IHNob3J0Y3V0IGlmIGl0ZXJhdG9yIGV4cGVjdHMgb25seSB0d28gYXJndW1lbnRzXG4gIGlmIChpdGVyYXRvci5sZW5ndGggPT0gMilcbiAge1xuICAgIGFib3J0ZXIgPSBpdGVyYXRvcihpdGVtLCBhc3luYyhjYWxsYmFjaykpO1xuICB9XG4gIC8vIG90aGVyd2lzZSBnbyB3aXRoIGZ1bGwgdGhyZWUgYXJndW1lbnRzXG4gIGVsc2VcbiAge1xuICAgIGFib3J0ZXIgPSBpdGVyYXRvcihpdGVtLCBrZXksIGFzeW5jKGNhbGxiYWNrKSk7XG4gIH1cblxuICByZXR1cm4gYWJvcnRlcjtcbn1cbiIsInZhciBkZWZlciA9IHJlcXVpcmUoJy4vZGVmZXIuanMnKTtcblxuLy8gQVBJXG5tb2R1bGUuZXhwb3J0cyA9IGFzeW5jO1xuXG4vKipcbiAqIFJ1bnMgcHJvdmlkZWQgY2FsbGJhY2sgYXN5bmNocm9ub3VzbHlcbiAqIGV2ZW4gaWYgY2FsbGJhY2sgaXRzZWxmIGlzIG5vdFxuICpcbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBjYWxsYmFjayB0byBpbnZva2VcbiAqIEByZXR1cm5zIHtmdW5jdGlvbn0gLSBhdWdtZW50ZWQgY2FsbGJhY2tcbiAqL1xuZnVuY3Rpb24gYXN5bmMoY2FsbGJhY2spXG57XG4gIHZhciBpc0FzeW5jID0gZmFsc2U7XG5cbiAgLy8gY2hlY2sgaWYgYXN5bmMgaGFwcGVuZWRcbiAgZGVmZXIoZnVuY3Rpb24oKSB7IGlzQXN5bmMgPSB0cnVlOyB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24gYXN5bmNfY2FsbGJhY2soZXJyLCByZXN1bHQpXG4gIHtcbiAgICBpZiAoaXNBc3luYylcbiAgICB7XG4gICAgICBjYWxsYmFjayhlcnIsIHJlc3VsdCk7XG4gICAgfVxuICAgIGVsc2VcbiAgICB7XG4gICAgICBkZWZlcihmdW5jdGlvbiBuZXh0VGlja19jYWxsYmFjaygpXG4gICAgICB7XG4gICAgICAgIGNhbGxiYWNrKGVyciwgcmVzdWx0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbiIsIi8vIEFQSVxubW9kdWxlLmV4cG9ydHMgPSBhYm9ydDtcblxuLyoqXG4gKiBBYm9ydHMgbGVmdG92ZXIgYWN0aXZlIGpvYnNcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgLSBjdXJyZW50IHN0YXRlIG9iamVjdFxuICovXG5mdW5jdGlvbiBhYm9ydChzdGF0ZSlcbntcbiAgT2JqZWN0LmtleXMoc3RhdGUuam9icykuZm9yRWFjaChjbGVhbi5iaW5kKHN0YXRlKSk7XG5cbiAgLy8gcmVzZXQgbGVmdG92ZXIgam9ic1xuICBzdGF0ZS5qb2JzID0ge307XG59XG5cbi8qKlxuICogQ2xlYW5zIHVwIGxlZnRvdmVyIGpvYiBieSBpbnZva2luZyBhYm9ydCBmdW5jdGlvbiBmb3IgdGhlIHByb3ZpZGVkIGpvYiBpZFxuICpcbiAqIEB0aGlzICBzdGF0ZVxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBrZXkgLSBqb2IgaWQgdG8gYWJvcnRcbiAqL1xuZnVuY3Rpb24gY2xlYW4oa2V5KVxue1xuICBpZiAodHlwZW9mIHRoaXMuam9ic1trZXldID09ICdmdW5jdGlvbicpXG4gIHtcbiAgICB0aGlzLmpvYnNba2V5XSgpO1xuICB9XG59XG4iLCIvLyBBUElcbm1vZHVsZS5leHBvcnRzID0gc3RhdGU7XG5cbi8qKlxuICogQ3JlYXRlcyBpbml0aWFsIHN0YXRlIG9iamVjdFxuICogZm9yIGl0ZXJhdGlvbiBvdmVyIGxpc3RcbiAqXG4gKiBAcGFyYW0gICB7YXJyYXl8b2JqZWN0fSBsaXN0IC0gbGlzdCB0byBpdGVyYXRlIG92ZXJcbiAqIEBwYXJhbSAgIHtmdW5jdGlvbnxudWxsfSBzb3J0TWV0aG9kIC0gZnVuY3Rpb24gdG8gdXNlIGZvciBrZXlzIHNvcnQsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBgbnVsbGAgdG8ga2VlcCB0aGVtIGFzIGlzXG4gKiBAcmV0dXJucyB7b2JqZWN0fSAtIGluaXRpYWwgc3RhdGUgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIHN0YXRlKGxpc3QsIHNvcnRNZXRob2QpXG57XG4gIHZhciBpc05hbWVkTGlzdCA9ICFBcnJheS5pc0FycmF5KGxpc3QpXG4gICAgLCBpbml0U3RhdGUgPVxuICAgIHtcbiAgICAgIGluZGV4ICAgIDogMCxcbiAgICAgIGtleWVkTGlzdDogaXNOYW1lZExpc3QgfHwgc29ydE1ldGhvZCA/IE9iamVjdC5rZXlzKGxpc3QpIDogbnVsbCxcbiAgICAgIGpvYnMgICAgIDoge30sXG4gICAgICByZXN1bHRzICA6IGlzTmFtZWRMaXN0ID8ge30gOiBbXSxcbiAgICAgIHNpemUgICAgIDogaXNOYW1lZExpc3QgPyBPYmplY3Qua2V5cyhsaXN0KS5sZW5ndGggOiBsaXN0Lmxlbmd0aFxuICAgIH1cbiAgICA7XG5cbiAgaWYgKHNvcnRNZXRob2QpXG4gIHtcbiAgICAvLyBzb3J0IGFycmF5IGtleXMgYmFzZWQgb24gaXQncyB2YWx1ZXNcbiAgICAvLyBzb3J0IG9iamVjdCdzIGtleXMganVzdCBvbiBvd24gbWVyaXRcbiAgICBpbml0U3RhdGUua2V5ZWRMaXN0LnNvcnQoaXNOYW1lZExpc3QgPyBzb3J0TWV0aG9kIDogZnVuY3Rpb24oYSwgYilcbiAgICB7XG4gICAgICByZXR1cm4gc29ydE1ldGhvZChsaXN0W2FdLCBsaXN0W2JdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBpbml0U3RhdGU7XG59XG4iLCJ2YXIgYWJvcnQgPSByZXF1aXJlKCcuL2Fib3J0LmpzJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJy4vYXN5bmMuanMnKVxuICA7XG5cbi8vIEFQSVxubW9kdWxlLmV4cG9ydHMgPSB0ZXJtaW5hdG9yO1xuXG4vKipcbiAqIFRlcm1pbmF0ZXMgam9icyBpbiB0aGUgYXR0YWNoZWQgc3RhdGUgY29udGV4dFxuICpcbiAqIEB0aGlzICBBc3luY0tpdFN0YXRlI1xuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBmaW5hbCBjYWxsYmFjayB0byBpbnZva2UgYWZ0ZXIgdGVybWluYXRpb25cbiAqL1xuZnVuY3Rpb24gdGVybWluYXRvcihjYWxsYmFjaylcbntcbiAgaWYgKCFPYmplY3Qua2V5cyh0aGlzLmpvYnMpLmxlbmd0aClcbiAge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGZhc3QgZm9yd2FyZCBpdGVyYXRpb24gaW5kZXhcbiAgdGhpcy5pbmRleCA9IHRoaXMuc2l6ZTtcblxuICAvLyBhYm9ydCBqb2JzXG4gIGFib3J0KHRoaXMpO1xuXG4gIC8vIHNlbmQgYmFjayByZXN1bHRzIHdlIGhhdmUgc28gZmFyXG4gIGFzeW5jKGNhbGxiYWNrKShudWxsLCB0aGlzLnJlc3VsdHMpO1xufVxuIiwidmFyIGl0ZXJhdGUgICAgPSByZXF1aXJlKCcuL2xpYi9pdGVyYXRlLmpzJylcbiAgLCBpbml0U3RhdGUgID0gcmVxdWlyZSgnLi9saWIvc3RhdGUuanMnKVxuICAsIHRlcm1pbmF0b3IgPSByZXF1aXJlKCcuL2xpYi90ZXJtaW5hdG9yLmpzJylcbiAgO1xuXG4vLyBQdWJsaWMgQVBJXG5tb2R1bGUuZXhwb3J0cyA9IHNlcmlhbE9yZGVyZWQ7XG4vLyBzb3J0aW5nIGhlbHBlcnNcbm1vZHVsZS5leHBvcnRzLmFzY2VuZGluZyAgPSBhc2NlbmRpbmc7XG5tb2R1bGUuZXhwb3J0cy5kZXNjZW5kaW5nID0gZGVzY2VuZGluZztcblxuLyoqXG4gKiBSdW5zIGl0ZXJhdG9yIG92ZXIgcHJvdmlkZWQgc29ydGVkIGFycmF5IGVsZW1lbnRzIGluIHNlcmllc1xuICpcbiAqIEBwYXJhbSAgIHthcnJheXxvYmplY3R9IGxpc3QgLSBhcnJheSBvciBvYmplY3QgKG5hbWVkIGxpc3QpIHRvIGl0ZXJhdGUgb3ZlclxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBpdGVyYXRvciAtIGl0ZXJhdG9yIHRvIHJ1blxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBzb3J0TWV0aG9kIC0gY3VzdG9tIHNvcnQgZnVuY3Rpb25cbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBpbnZva2VkIHdoZW4gYWxsIGVsZW1lbnRzIHByb2Nlc3NlZFxuICogQHJldHVybnMge2Z1bmN0aW9ufSAtIGpvYnMgdGVybWluYXRvclxuICovXG5mdW5jdGlvbiBzZXJpYWxPcmRlcmVkKGxpc3QsIGl0ZXJhdG9yLCBzb3J0TWV0aG9kLCBjYWxsYmFjaylcbntcbiAgdmFyIHN0YXRlID0gaW5pdFN0YXRlKGxpc3QsIHNvcnRNZXRob2QpO1xuXG4gIGl0ZXJhdGUobGlzdCwgaXRlcmF0b3IsIHN0YXRlLCBmdW5jdGlvbiBpdGVyYXRvckhhbmRsZXIoZXJyb3IsIHJlc3VsdClcbiAge1xuICAgIGlmIChlcnJvcilcbiAgICB7XG4gICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdGF0ZS5pbmRleCsrO1xuXG4gICAgLy8gYXJlIHdlIHRoZXJlIHlldD9cbiAgICBpZiAoc3RhdGUuaW5kZXggPCAoc3RhdGVbJ2tleWVkTGlzdCddIHx8IGxpc3QpLmxlbmd0aClcbiAgICB7XG4gICAgICBpdGVyYXRlKGxpc3QsIGl0ZXJhdG9yLCBzdGF0ZSwgaXRlcmF0b3JIYW5kbGVyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBkb25lIGhlcmVcbiAgICBjYWxsYmFjayhudWxsLCBzdGF0ZS5yZXN1bHRzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1pbmF0b3IuYmluZChzdGF0ZSwgY2FsbGJhY2spO1xufVxuXG4vKlxuICogLS0gU29ydCBtZXRob2RzXG4gKi9cblxuLyoqXG4gKiBzb3J0IGhlbHBlciB0byBzb3J0IGFycmF5IGVsZW1lbnRzIGluIGFzY2VuZGluZyBvcmRlclxuICpcbiAqIEBwYXJhbSAgIHttaXhlZH0gYSAtIGFuIGl0ZW0gdG8gY29tcGFyZVxuICogQHBhcmFtICAge21peGVkfSBiIC0gYW4gaXRlbSB0byBjb21wYXJlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSAtIGNvbXBhcmlzb24gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIGFzY2VuZGluZyhhLCBiKVxue1xuICByZXR1cm4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDA7XG59XG5cbi8qKlxuICogc29ydCBoZWxwZXIgdG8gc29ydCBhcnJheSBlbGVtZW50cyBpbiBkZXNjZW5kaW5nIG9yZGVyXG4gKlxuICogQHBhcmFtICAge21peGVkfSBhIC0gYW4gaXRlbSB0byBjb21wYXJlXG4gKiBAcGFyYW0gICB7bWl4ZWR9IGIgLSBhbiBpdGVtIHRvIGNvbXBhcmVcbiAqIEByZXR1cm5zIHtudW1iZXJ9IC0gY29tcGFyaXNvbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gZGVzY2VuZGluZyhhLCBiKVxue1xuICByZXR1cm4gLTEgKiBhc2NlbmRpbmcoYSwgYik7XG59XG4iLCJcbmltcG9ydCBOb2RlRm9ybURhdGEgZnJvbSAnZm9ybS1kYXRhJztcblxuaW1wb3J0IHsgUGluYXRhQ29uZmlnIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHtcbiAgICBQaW5hdGFQaW5PcHRpb25zLFxuICAgIFBpbmF0YVBpblJlc3BvbnNlLFxuICAgIHVwbG9hZFRvSVBGU1xufSBmcm9tICcuL3BpbkZpbGVUb0lQRlMnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVQYXRoKHA6IHN0cmluZykge1xuICAgIGNvbnN0IHNwbGl0UGF0aCA9IHBhdGgubm9ybWFsaXplKHApLnNwbGl0KHBhdGguc2VwKS5maWx0ZXIoZmlsZSA9PiBmaWxlLmxlbmd0aCA+IDAgJiYgZmlsZSAhPT0gJy4uJyk7XG4gICAgbGV0IGZvbGRlckZpbGUgPSBzcGxpdFBhdGg7XG4gICAgaWYgKHNwbGl0UGF0aC5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvbGRlckZpbGUgPSBzcGxpdFBhdGguc2xpY2Uoc3BsaXRQYXRoLmxlbmd0aCAtIDIpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoLmpvaW4uYXBwbHkobnVsbCwgZm9sZGVyRmlsZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBpbkZyb21GUyhcbiAgICBjb25maWc6IFBpbmF0YUNvbmZpZyxcbiAgICBzb3VyY2VQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFBpbmF0YVBpbk9wdGlvbnNcbik6IFByb21pc2U8UGluYXRhUGluUmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGZzLnByb21pc2VzLnN0YXQoc291cmNlUGF0aCk7XG4gICAgICAgIGlmIChzdGF0cy5pc0ZpbGUoKSkge1xuXG4gICAgICAgICAgICBjb25zdCBzdHJlYW0gPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHNvdXJjZVBhdGgpO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBOb2RlRm9ybURhdGEoKTtcblxuICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGUnLCBzdHJlYW0sIHtcbiAgICAgICAgICAgICAgICBmaWxlbmFtZTogcGF0aC5iYXNlbmFtZShzb3VyY2VQYXRoKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB1cGxvYWRUb0lQRlMoY29uZmlnLCBkYXRhLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkZGlyKHNvdXJjZVBhdGgpO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBOb2RlRm9ybURhdGEoKTtcbiAgICAgICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGU6IHN0cmluZykgPT4ge1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXBhdGggPSBwYXRoLmpvaW4oc291cmNlUGF0aCwgZmlsZSk7XG4gICAgICAgICAgICAgICAgLy9mb3IgZWFjaCBmaWxlIHN0cmVhbSwgd2UgbmVlZCB0byBpbmNsdWRlIHRoZSBjb3JyZWN0IHJlbGF0aXZlIGZpbGUgcGF0aFxuICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdmaWxlJywgZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlcGF0aCksIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZXBhdGg6IG5vcm1hbGl6ZVBhdGgoZmlsZXBhdGgpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHVwbG9hZFRvSVBGUyhjb25maWcsIGRhdGEsIG9wdGlvbnMpO1xuXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbn1cbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycywgdmFsaWRhdGVNZXRhZGF0YSwgdmFsaWRhdGVQaW5hdGFPcHRpb25zIH0gZnJvbSAnLi4vLi4vdXRpbC92YWxpZGF0b3JzJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IFBpbmF0YVBpbk9wdGlvbnMsIFBpbmF0YVBpblJlc3BvbnNlIH0gZnJvbSAnLi9waW5GaWxlVG9JUEZTJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGluSlNPTlRvSVBGUyhjb25maWc6IFBpbmF0YUNvbmZpZywgYm9keTogYW55LCBvcHRpb25zPyA6IFBpbmF0YVBpbk9wdGlvbnMpOlByb21pc2U8UGluYXRhUGluUmVzcG9uc2U+IHtcblxuICAgIGxldCByZXF1ZXN0Qm9keTogYW55ID0gYm9keTtcblxuICAgIGlmICh0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdib2R5IG11c3QgYmUgYSB2YWxpZCBKU09OIG9iamVjdCcpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICAgICAgcGluYXRhQ29udGVudDogYm9keVxuICAgICAgICB9O1xuICAgICAgICBpZiAob3B0aW9ucy5waW5hdGFNZXRhZGF0YSkge1xuICAgICAgICAgICAgdmFsaWRhdGVNZXRhZGF0YShvcHRpb25zLnBpbmF0YU1ldGFkYXRhKTtcbiAgICAgICAgICAgIHJlcXVlc3RCb2R5LnBpbmF0YU1ldGFkYXRhID0gb3B0aW9ucy5waW5hdGFNZXRhZGF0YTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5waW5hdGFPcHRpb25zKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZVBpbmF0YU9wdGlvbnMob3B0aW9ucy5waW5hdGFPcHRpb25zKTtcbiAgICAgICAgICAgIHJlcXVlc3RCb2R5LnBpbmF0YU9wdGlvbnMgPSBvcHRpb25zLnBpbmF0YU9wdGlvbnM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2Jhc2VVcmx9L3Bpbm5pbmcvcGluSlNPTlRvSVBGU2A7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvcy5wb3N0KFxuICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICByZXF1ZXN0Qm9keSxcbiAgICAgICAgICAgIHsuLi5jcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnMoY29uZmlnKX0pXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGB1bmtub3duIHNlcnZlciByZXNwb25zZSB3aGlsZSBwaW5uaW5nIEpTT04gdG8gSVBGUzogJHtyZXN1bHR9YCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuZGF0YSk7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRXJyb3IgPSBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICByZWplY3QoZm9ybWF0dGVkRXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdmFsaWRhdG9ycyc7XG5pbXBvcnQgcXVlcnlCdWlsZGVyIGZyb20gJy4vcXVlcnlCdWlsZGVyJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uJztcblxuZXhwb3J0IGludGVyZmFjZSBQaW5hdGFQaW5Kb2JzUmVzcG9uc2VSb3cge1xuICAgIGlkOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgaXBmc19waW5faGFzaDogc3RyaW5nO1xuICAgIGRhdGVfcXVldWVkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgICBzdGF0dXM6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhUGluSm9ic1Jlc3BvbnNlIHtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIHJvd3M6IFBpbmF0YVBpbkpvYnNSZXNwb25zZVJvd1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpbmF0YVBpbkpvYnNGaWx0ZXJPcHRpb25zIHtcbiAgICBzb3J0OiAnQVNDJyB8ICdERVNDJztcbiAgICBzdGF0dXM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaXBmc19waW5faGFzaD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBsaW1pdD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBvZmZzZXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBpbkpvYnMoY29uZmlnOiBQaW5hdGFDb25maWcsIGZpbHRlcnM/IDogUGluYXRhUGluSm9ic0ZpbHRlck9wdGlvbnMpOiBQcm9taXNlPFBpbmF0YVBpbkpvYnNSZXNwb25zZT4ge1xuXG4gICAgbGV0IGVuZHBvaW50ID0gYCR7YmFzZVVybH0vcGlubmluZy9waW5Kb2JzYDtcblxuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICAgIGVuZHBvaW50ID0gcXVlcnlCdWlsZGVyKGVuZHBvaW50LCBmaWx0ZXJzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvcy5nZXQoXG4gICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIHsuLi5jcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnMoY29uZmlnKX0pXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGB1bmtub3duIHNlcnZlciByZXNwb25zZSB3aGlsZSBhdHRlbXB0aW5nIHRvIHJldHJpZXZlIHBpbiBqb2JzOiAke3Jlc3VsdH1gKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRFcnJvciA9IGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHJlamVjdChmb3JtYXR0ZWRFcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuIiwiaW1wb3J0IGlzSVBGUyBmcm9tICdpcy1pcGZzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcXVlcnlCdWlsZGVyKGJhc2VVcmw6IHN0cmluZywgZmlsdGVycz86IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFiYXNlVXJsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbm8gYmFzZVVybCBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIGlmICghZmlsdGVycykge1xuICAgICAgICByZXR1cm4gYmFzZVVybDtcbiAgICB9XG5cbiAgICBsZXQgbmV3VXJsID0gYmFzZVVybDtcblxuICAgIGxldCBmaXJzdEZpbHRlckFwcGxpZWQgPSBmYWxzZTsgLy8gd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgXCI/XCIgY2hhcmFjdGVyIGlzIG9ubHkgYXBwbGllZCBvbmNlXG5cbiAgICBmdW5jdGlvbiBhZGRGaWx0ZXIobmV3RmlsdGVyOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGZpcnN0RmlsdGVyQXBwbGllZCkge1xuICAgICAgICAgICAgbmV3VXJsID0gYCR7bmV3VXJsfSYke25ld0ZpbHRlcn1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlyc3RGaWx0ZXJBcHBsaWVkID0gdHJ1ZTtcbiAgICAgICAgICAgIG5ld1VybCA9IGAke25ld1VybH0/JHtuZXdGaWx0ZXJ9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICAgIC8vICBub3cgd2UgbmVlZCB0byBjb25zdHJ1Y3QgdGhlIGFjdHVhbCBVUkwgYmFzZWQgb24gdGhlIGdpdmVuIGZpbHRlcnMgcHJvdmlkZWRcbiAgICAgICAgaWYgKGZpbHRlcnMuc29ydCkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcnMuc29ydCA9PT0gJ0FTQycgfHxcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnNvcnQgPT09ICdERVNDJykge1xuICAgICAgICAgICAgICAgIGFkZEZpbHRlcihgc29ydD0ke2ZpbHRlcnMuc29ydH1gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHNvcnQgdmFsdWU6ICR7ZmlsdGVycy5zb3J0fSBwcm92aWRlZGApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbHRlcnMuc3RhdHVzKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVycy5zdGF0dXMgPT09ICdzZWFyY2hpbmcnIHx8XG4gICAgICAgICAgICAgICAgZmlsdGVycy5zdGF0dXMgPT09ICdleHBpcmVkJyB8fFxuICAgICAgICAgICAgICAgIGZpbHRlcnMuc3RhdHVzID09PSAnb3Zlcl9mcmVlX2xpbWl0JyB8fFxuICAgICAgICAgICAgICAgIGZpbHRlcnMuc3RhdHVzID09PSAnb3Zlcl9tYXhfc2l6ZScgfHxcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnN0YXR1cyA9PT0gJ2ludmFsaWRfb2JqZWN0JyB8fFxuICAgICAgICAgICAgICAgIGZpbHRlcnMuc3RhdHVzID09PSAnYmFkX2hvc3Rfbm9kZSdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGFkZEZpbHRlcihgc3RhdHVzPSR7ZmlsdGVycy5zdGF0dXN9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzdGF0dXMgdmFsdWU6ICR7ZmlsdGVycy5zdGF0dXN9IHByb3ZpZGVkYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsdGVycy5pcGZzX3Bpbl9oYXNoKSB7XG4gICAgICAgICAgICBpZiAoaXNJUEZTLmNpZChmaWx0ZXJzLmlwZnNfcGluX2hhc2gpKSB7XG4gICAgICAgICAgICAgICAgYWRkRmlsdGVyKGBpcGZzX3Bpbl9oYXNoPSR7ZmlsdGVycy5pcGZzX3Bpbl9oYXNofWApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgSVBGUyBoYXNoOiAke2ZpbHRlcnMuaXBmc19waW5faGFzaH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWx0ZXJzLmxpbWl0KSB7XG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihmaWx0ZXJzLmxpbWl0KSAmJiAoZmlsdGVycy5saW1pdCA+IDApICYmIChmaWx0ZXJzLmxpbWl0IDwgMTAwKSkge1xuICAgICAgICAgICAgICAgIGFkZEZpbHRlcihgbGltaXQ9JHtmaWx0ZXJzLmxpbWl0fWApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbGltaXQ6ICR7ZmlsdGVycy5saW1pdH0uIFZhbGlkIGxpbWl0cyBhcmUgMS0xMDBgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWx0ZXJzLm9mZnNldCkge1xuICAgICAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIoZmlsdGVycy5vZmZzZXQpICYmIChmaWx0ZXJzLm9mZnNldCA+IDApKSB7XG4gICAgICAgICAgICAgICAgYWRkRmlsdGVyKGBvZmZzZXQ9JHtmaWx0ZXJzLm9mZnNldH1gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG9mZnNldDogJHtmaWx0ZXJzLm9mZnNldH0uIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgaW50ZWdlciBmb3IgdGhlIG9mZnNldGApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVcmw7XG59XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnMgfSBmcm9tICcuLi8uLi91dGlsL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IGlzSVBGUyBmcm9tICdpcy1pcGZzJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5waW4oY29uZmlnOiBQaW5hdGFDb25maWcsIGhhc2hUb1VucGluOiBzdHJpbmcpIHtcbiAgICBpZiAoIWhhc2hUb1VucGluKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaGFzaFRvVW5waW4gdmFsdWUgaXMgcmVxdWlyZWQgZm9yIHJlbW92aW5nIGEgcGluIGZyb20gUGluYXRhJyk7XG4gICAgfVxuICAgIGlmICghaXNJUEZTLmNpZChoYXNoVG9VbnBpbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2hhc2hUb1VucGlufSBpcyBhbiBpbnZhbGlkIElQRlMgQ0lEYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtiYXNlVXJsfS9waW5uaW5nL3VucGluLyR7aGFzaFRvVW5waW59YDtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zLmRlbGV0ZShcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgey4uLmNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyhjb25maWcpfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYHVua25vd24gc2VydmVyIHJlc3BvbnNlIHdoaWxlIHJlbW92aW5nIHBpbiBmcm9tIElQRlM6ICR7cmVzdWx0fWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0LmRhdGEpO1xuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZEVycm9yID0gaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgcmVqZWN0KGZvcm1hdHRlZEVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge2NyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVyc30gZnJvbSAnLi4vLi4vdXRpbC92YWxpZGF0b3JzJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uJztcblxuZXhwb3J0IGludGVyZmFjZSBQaW5hdGFUZXN0QXV0aGVudGljYXRpb25SZXNwb25zZSB7XG4gICAgYXV0aGVudGljYXRlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGVzdEF1dGhlbnRpY2F0aW9uKGNvbmZpZzogUGluYXRhQ29uZmlnKTogUHJvbWlzZTxQaW5hdGFUZXN0QXV0aGVudGljYXRpb25SZXNwb25zZT4ge1xuICAgIC8vICB0ZXN0IGF1dGhlbnRpY2F0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSB1c2VyJ3MgcHJvdmlkZWQga2V5cyBhcmUgbGVnaXRcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2Jhc2VVcmx9L2RhdGEvdGVzdEF1dGhlbnRpY2F0aW9uYDtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zLmdldChcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgey4uLmNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyhjb25maWcpfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYHVua25vd24gc2VydmVyIHJlc3BvbnNlIHdoaWxlIGF1dGhlbnRpY2F0aW5nOiAke3Jlc3VsdH1gKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRFcnJvciA9IGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHJlamVjdChmb3JtYXR0ZWRFcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuIiwiXG5mdW5jdGlvbiB2YWxpZGF0ZUFuZFJldHVybkRhdGUoZGF0ZVRvVmFsaWRhdGU6IGFueSk6IGFueSB7XG4gICAgY29uc3QgZGF0ZVBhcnNlZCA9IG5ldyBEYXRlKERhdGUucGFyc2UoZGF0ZVRvVmFsaWRhdGUpKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGlmIChkYXRlUGFyc2VkLnRvSVNPU3RyaW5nKCkgPT09IGRhdGVUb1ZhbGlkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZVRvVmFsaWRhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRlcyBtdXN0IGJlIGluIHZhbGlkIElTT184NjAxIGZvcm1hdCcpO1xuXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGVzIG11c3QgYmUgaW4gdmFsaWQgSVNPXzg2MDEgZm9ybWF0Jyk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWVyeUJ1aWxkZXIoYmFzZVVybDogc3RyaW5nLCBmaWx0ZXJzPzogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIWJhc2VVcmwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBiYXNlVXJsIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgLy8gIHByZXNldCBmaWx0ZXIgdmFsdWVzXG4gICAgbGV0IGZpbHRlclF1ZXJ5ID0gJz8nO1xuXG4gICAgbGV0IG1ldGFkYXRhUXVlcnkgPSAnJztcblxuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICAgIC8vICBub3cgd2UgbmVlZCB0byBjb25zdHJ1Y3QgdGhlIGFjdHVhbCBVUkwgYmFzZWQgb24gdGhlIGdpdmVuIGZpbHRlcnMgcHJvdmlkZWRcbiAgICAgICAgaWYgKGZpbHRlcnMuaW5jbHVkZUNvdW50KSB7XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGZpbHRlclF1ZXJ5ICsgYGluY2x1ZGVDb3VudD0ke2ZpbHRlcnMuaW5jbHVkZUNvdW50fSZgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbHRlcnMuaGFzaENvbnRhaW5zKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpbHRlcnMuaGFzaENvbnRhaW5zICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaGFzaENvbnRhaW5zIHZhbHVlIGlzIG5vdCBhIHN0cmluZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBmaWx0ZXJRdWVyeSArIGBoYXNoQ29udGFpbnM9JHtmaWx0ZXJzLmhhc2hDb250YWluc30mYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVycy5waW5TdGFydCkge1xuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBmaWx0ZXJRdWVyeSArIGBwaW5TdGFydD0ke3ZhbGlkYXRlQW5kUmV0dXJuRGF0ZShmaWx0ZXJzLnBpblN0YXJ0KX0mYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVycy5waW5FbmQpIHtcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID0gZmlsdGVyUXVlcnkgKyBgcGluRW5kPSR7dmFsaWRhdGVBbmRSZXR1cm5EYXRlKGZpbHRlcnMucGluRW5kKX0mYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVycy51bnBpblN0YXJ0KSB7XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGZpbHRlclF1ZXJ5ICsgYHVucGluU3RhcnQ9JHt2YWxpZGF0ZUFuZFJldHVybkRhdGUoZmlsdGVycy51bnBpblN0YXJ0KX0mYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVycy51bnBpbkVuZCkge1xuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBmaWx0ZXJRdWVyeSArIGB1bnBpbkVuZD0ke3ZhbGlkYXRlQW5kUmV0dXJuRGF0ZShmaWx0ZXJzLnVucGluRW5kKX0mYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVycy5waW5TaXplTWluKSB7XG4gICAgICAgICAgICBpZiAoaXNOYU4oZmlsdGVycy5waW5TaXplTWluKSB8fCBmaWx0ZXJzLnBpblNpemVNaW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgbWFrZSBzdXJlIHRoZSBwaW5TaXplTWluIGlzIGEgdmFsaWQgcG9zaXRpdmUgaW50ZWdlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBmaWx0ZXJRdWVyeSArIGBwaW5TaXplTWluPSR7ZmlsdGVycy5waW5TaXplTWlufSZgO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJzLnBpblNpemVNYXgpIHtcbiAgICAgICAgICAgIGlmIChpc05hTihmaWx0ZXJzLnBpblNpemVNYXgpIHx8IGZpbHRlcnMucGluU2l6ZU1heCA8IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBtYWtlIHN1cmUgdGhlIHBpblNpemVNYXggaXMgYSB2YWxpZCBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGZpbHRlclF1ZXJ5ICsgYHBpblNpemVNYXg9JHtmaWx0ZXJzLnBpblNpemVNYXh9JmA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnMuc3RhdHVzKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVycy5zdGF0dXMgIT09ICdhbGwnICYmIGZpbHRlcnMuc3RhdHVzICE9PSAncGlubmVkJyAmJiBmaWx0ZXJzLnN0YXR1cyAhPT0gJ3VucGlubmVkJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc3RhdHVzIHZhbHVlIG11c3QgYmUgZWl0aGVyOiBhbGwsIHBpbm5lZCwgb3IgdW5waW5uZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID0gZmlsdGVyUXVlcnkgKyBgc3RhdHVzPSR7ZmlsdGVycy5zdGF0dXN9JmA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnMucGFnZUxpbWl0KSB7XG4gICAgICAgICAgICBpZiAoaXNOYU4oZmlsdGVycy5wYWdlTGltaXQpIHx8IGZpbHRlcnMucGFnZUxpbWl0IDw9IDAgfHwgZmlsdGVycy5wYWdlTGltaXQgPiAxMDAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgbWFrZSBzdXJlIHRoZSBwYWdlTGltaXQgaXMgYSB2YWxpZCBpbnRlZ2VyIGJldHdlZW4gMS0xMDAwJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGZpbHRlclF1ZXJ5ICsgYHBhZ2VMaW1pdD0ke3BhcnNlSW50KGZpbHRlcnMucGFnZUxpbWl0KX0mYDsgLy8gd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBkZWNpbWFscyBnZXQgcm91bmRlZCB0byBpbnRlZ2Vyc1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbHRlcnMucGFnZU9mZnNldCkge1xuICAgICAgICAgICAgaWYgKGlzTmFOKGZpbHRlcnMucGFnZU9mZnNldCkgfHwgZmlsdGVycy5wYWdlT2Zmc2V0IDw9IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBtYWtlIHN1cmUgdGhlIHBhZ2VPZmZzZXQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGZpbHRlclF1ZXJ5ICsgYHBhZ2VPZmZzZXQ9JHtwYXJzZUludChmaWx0ZXJzLnBhZ2VPZmZzZXQpfSZgOyAvLyB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGRlY2ltYWxzIGdldCByb3VuZGVkIHRvIGludGVnZXJzXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsdGVycy5tZXRhZGF0YSkge1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpbHRlcnMubWV0YWRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtZXRhZGF0YSB2YWx1ZSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmlsdGVycy5tZXRhZGF0YS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFRdWVyeSA9IGBtZXRhZGF0YVtuYW1lXT0ke2ZpbHRlcnMubWV0YWRhdGEubmFtZX0mYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpbHRlcnMubWV0YWRhdGEua2V5dmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFRdWVyeSA9IG1ldGFkYXRhUXVlcnkgKyAnbWV0YWRhdGFba2V5dmFsdWVzXT0nO1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWx0ZXJzLm1ldGFkYXRhLmtleXZhbHVlcyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtZXRhZGF0YSBrZXl2YWx1ZXMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwcnVuZWRLZXlWYWx1ZXM6IGFueSA9IHt9OyAvLyB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSdyZSBvbmx5IGdyYWJiaW5nIHRoZSB2YWx1ZXMgd2Ugd2FudCBmb3IgdGhlIHF1ZXJ5LCBhbmQgbm90aGluZyBleHRyYVxuXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoZmlsdGVycy5tZXRhZGF0YS5rZXl2YWx1ZXMpLmZvckVhY2goKGtleVZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGtleVZhbHVlWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZTogYW55ID0ga2V5VmFsdWVbMV07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihga2V5VmFsdWU6ICR7a2V5fSBpcyBub3QgYW4gb2JqZWN0YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUudmFsdWUgfHwgIXZhbHVlLm9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGtleVZhbHVlOiAke2tleX0gbXVzdCBoYXZlIGJvdGggdmFsdWUgYW5kIG9wIGF0dHJpYnV0ZXNgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiB2YWx1ZS52YWx1ZSAhPT0gJ3N0cmluZycpICYmICh0eXBlb2YgdmFsdWUudmFsdWUgIT09ICdib29sZWFuJykgJiYgKHR5cGVvZiB2YWx1ZS52YWx1ZSAhPT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGFkYXRhIGtleXZhbHVlIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MsIGJvb2xlYW5zLCBvciBudW1iZXJzJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBSdW4gY2hlY2tzIHRvIG1ha2Ugc3VyZSBhbGwgb2YgdGhlIGtleXZhbHVlcyBhcmUgdmFsaWRcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS5vcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZEtleVZhbHVlc1trZXldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wOiB2YWx1ZS5vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2dyZWF0ZXIgdGhhbiBvciBlcXVhbFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3RlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnVuZWRLZXlWYWx1ZXNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcDogdmFsdWUub3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVzcyB0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkS2V5VmFsdWVzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A6IHZhbHVlLm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlc3MgdGhhbiBvciBlcXVhbFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbHRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnVuZWRLZXlWYWx1ZXNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcDogdmFsdWUub3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IGVxdWFsIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkS2V5VmFsdWVzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A6IHZhbHVlLm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVxdWFsIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlcSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkS2V5VmFsdWVzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A6IHZhbHVlLm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JldHdlZW4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUuc2Vjb25kVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCZWNhdXNlIGJldHdlZW4gb3AgY29kZSB3YXMgcGFzc2VkIGluLCBrZXlWYWx1ZTogJHtrZXlWYWx1ZVswXX0gbXVzdCBoYXZlIGJvdGggYWxzbyBpbmNsdWRlIGEgc2Vjb25kVmFsdWVgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0eXBlb2YgdmFsdWUuc2Vjb25kVmFsdWUgIT09ICdzdHJpbmcnKSAmJiAodHlwZW9mIHZhbHVlLnNlY29uZFZhbHVlICE9PSAnYm9vbGVhbicpICYmICh0eXBlb2YgdmFsdWUuc2Vjb25kVmFsdWUgIT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGFkYXRhIGtleXZhbHVlIHNlY29uZFZhbHVlIG11c3QgYmUgYSBzdHJpbmcsIGJvb2xlYW4sIG9yIG51bWJlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnVuZWRLZXlWYWx1ZXNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcDogdmFsdWUub3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZFZhbHVlOiB2YWx1ZS5zZWNvbmRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbm90QmV0d2Vlbic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZS5zZWNvbmRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJlY2F1c2Ugbm90QmV0d2VlbiBvcCBjb2RlIHdhcyBwYXNzZWQgaW4sIGtleVZhbHVlOiAke2tleVZhbHVlWzBdfSBtdXN0IGhhdmUgYm90aCBhbHNvIGluY2x1ZGUgYSBzZWNvbmRWYWx1ZWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiB2YWx1ZS5zZWNvbmRWYWx1ZSAhPT0gJ3N0cmluZycpICYmICh0eXBlb2YgdmFsdWUuc2Vjb25kVmFsdWUgIT09ICdib29sZWFuJykgJiYgKHR5cGVvZiB2YWx1ZS5zZWNvbmRWYWx1ZSAhPT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWV0YWRhdGEga2V5dmFsdWUgc2Vjb25kVmFsdWUgbXVzdCBiZSBhIHN0cmluZywgYm9vbGVhbiwgb3IgbnVtYmVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZEtleVZhbHVlc1trZXldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wOiB2YWx1ZS5vcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kVmFsdWU6IHZhbHVlLnNlY29uZFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpa2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpa2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZEtleVZhbHVlc1trZXldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wOiB2YWx1ZS5vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgbGlrZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbm90TGlrZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkS2V5VmFsdWVzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A6IHZhbHVlLm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgaW5zZW5zaXRpdmUgbGlrZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaUxpa2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZEtleVZhbHVlc1trZXldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wOiB2YWx1ZS5vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlIGluc2Vuc2l0aXZlIG5vdCBsaWtlXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdub3RJTGlrZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkS2V5VmFsdWVzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A6IHZhbHVlLm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2V4XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyZWdleHAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZEtleVZhbHVlc1trZXldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wOiB2YWx1ZS5vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlIGluc2Vuc2l0aXZlIHJlZ2V4XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpUmVnZXhwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnVuZWRLZXlWYWx1ZXNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcDogdmFsdWUub3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGtleVZhbHVlIG9wOiAke3ZhbHVlLm9wfSBpcyBub3QgYSB2YWxpZCBvcCBjb2RlYCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIG1ldGFkYXRhUXVlcnkgPSBtZXRhZGF0YVF1ZXJ5ICsgYCR7SlNPTi5zdHJpbmdpZnkocHJ1bmVkS2V5VmFsdWVzKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHtiYXNlVXJsfSR7ZmlsdGVyUXVlcnl9JHttZXRhZGF0YVF1ZXJ5fWA7XG59XG5cbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyB9IGZyb20gJy4uLy4uL3V0aWwvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBoYW5kbGVFcnJvciB9IGZyb20gJy4uLy4uL3V0aWwvZXJyb3JSZXNwb25zZSc7XG5pbXBvcnQgeyBQaW5hdGFDb25maWcgfSBmcm9tICcuLi8uLic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZXJQaW5uZWREYXRhVG90YWwoY29uZmlnOiBQaW5hdGFDb25maWcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YmFzZVVybH0vZGF0YS91c2VyUGlubmVkRGF0YVRvdGFsYDtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zLmdldChcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgey4uLmNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyhjb25maWcpfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYHVua25vd24gc2VydmVyIHJlc3BvbnNlIHdoaWxlIGF0dGVtcHRpbmcgdG8gcmV0cmlldmUgcGlubmVkIGRhdGEgdG90YWw6ICR7cmVzdWx0fWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0LmRhdGEpO1xuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZEVycm9yID0gaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgcmVqZWN0KGZvcm1hdHRlZEVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iLCJpbXBvcnQgJy4vcmVxdWlyZS1iYWJlbC1wb2x5ZmlsbCc7XG5pbXBvcnQgcGluQnlIYXNoLCB7XG4gICAgUGluYXRhUGluQnlIYXNoUGluT3B0aW9uc1xufSBmcm9tICcuL2NvbW1hbmRzL3Bpbm5pbmcvcGluQnlIYXNoJztcbmltcG9ydCBoYXNoTWV0YWRhdGEgZnJvbSAnLi9jb21tYW5kcy9waW5uaW5nL2hhc2hNZXRhZGF0YSc7XG5pbXBvcnQgcGluRmlsZVRvSVBGUywge1xuICAgIFBpbmF0YVBpbk9wdGlvbnNcbn0gZnJvbSAnLi9jb21tYW5kcy9waW5uaW5nL3BpbkZpbGVUb0lQRlMnO1xuaW1wb3J0IHBpbkZyb21GUyBmcm9tICcuL2NvbW1hbmRzL3Bpbm5pbmcvcGluRnJvbUZTJztcbmltcG9ydCBwaW5KU09OVG9JUEZTIGZyb20gJy4vY29tbWFuZHMvcGlubmluZy9waW5KU09OVG9JUEZTJztcbmltcG9ydCBwaW5Kb2JzLCB7XG4gICAgUGluYXRhUGluSm9ic0ZpbHRlck9wdGlvbnNcbn0gZnJvbSAnLi9jb21tYW5kcy9waW5uaW5nL3BpbkpvYnMvcGluSm9icyc7XG5pbXBvcnQgdW5waW4gZnJvbSAnLi9jb21tYW5kcy9waW5uaW5nL3VucGluJztcbmltcG9ydCB0ZXN0QXV0aGVudGljYXRpb24gZnJvbSAnLi9jb21tYW5kcy9kYXRhL3Rlc3RBdXRoZW50aWNhdGlvbic7XG5pbXBvcnQgcGluTGlzdCwge1xuICAgIFBpbmF0YU1ldGFkYXRhLFxuICAgIFBpbmF0YVBpbkxpc3RGaWx0ZXJPcHRpb25zXG59IGZyb20gJy4vY29tbWFuZHMvZGF0YS9waW5MaXN0L3Bpbkxpc3QnO1xuaW1wb3J0IGdldEZpbGVzQnlDb3VudCBmcm9tICcuL2NvbW1hbmRzL2RhdGEvZ2V0RmlsZXNCeUNvdW50L2dldEZpbGVzQnlDb3VudCc7XG5pbXBvcnQgdXNlclBpbm5lZERhdGFUb3RhbCBmcm9tICcuL2NvbW1hbmRzL2RhdGEvdXNlclBpbm5lZERhdGFUb3RhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhQ29uZmlnIHtcbiAgICBwaW5hdGFBcGlLZXk/OiBzdHJpbmc7XG4gICAgcGluYXRhU2VjcmV0QXBpS2V5Pzogc3RyaW5nO1xuICAgIHBpbmF0YUpXVEtleT86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gcmVmYWN0b3JDb25maWcocGluYXRhQ29uZmlnUGFyYW06IFBpbmF0YUNvbmZpZyk6IFBpbmF0YUNvbmZpZyB7XG4gICAgY29uc3QgY29uZmlnOiBQaW5hdGFDb25maWcgPSB7fTtcbiAgICBpZiAocGluYXRhQ29uZmlnUGFyYW0ucGluYXRhQXBpS2V5KSB7XG4gICAgICAgIGNvbmZpZy5waW5hdGFBcGlLZXkgPSBwaW5hdGFDb25maWdQYXJhbS5waW5hdGFBcGlLZXk7XG4gICAgfVxuXG4gICAgaWYgKHBpbmF0YUNvbmZpZ1BhcmFtLnBpbmF0YVNlY3JldEFwaUtleSkge1xuICAgICAgICBjb25maWcucGluYXRhU2VjcmV0QXBpS2V5ID0gcGluYXRhQ29uZmlnUGFyYW0ucGluYXRhU2VjcmV0QXBpS2V5O1xuICAgIH1cblxuICAgIGlmIChwaW5hdGFDb25maWdQYXJhbS5waW5hdGFKV1RLZXkpIHtcbiAgICAgICAgY29uZmlnLnBpbmF0YUpXVEtleSA9IHBpbmF0YUNvbmZpZ1BhcmFtLnBpbmF0YUpXVEtleTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnO1xufVxuZnVuY3Rpb24gc2FuaXRpemVDb25maWcoXG4gICAgcGluYXRhQXBpS2V5Pzogc3RyaW5nIHwgUGluYXRhQ29uZmlnLFxuICAgIHBpbmF0YVNlY3JldEFwaUtleT86IHN0cmluZ1xuKTogUGluYXRhQ29uZmlnIHtcbiAgICBsZXQgY29uZmlnOiBQaW5hdGFDb25maWcgPSB7fTtcblxuICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHBpbmF0YUFwaUtleSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgdHlwZW9mIHBpbmF0YVNlY3JldEFwaUtleSA9PT0gJ3N0cmluZydcbiAgICApIHtcbiAgICAgICAgY29uZmlnLnBpbmF0YUFwaUtleSA9IHBpbmF0YUFwaUtleTtcbiAgICAgICAgY29uZmlnLnBpbmF0YVNlY3JldEFwaUtleSA9IHBpbmF0YVNlY3JldEFwaUtleTtcbiAgICB9XG5cbiAgICBjb25zdCBpc1BpbmF0YUNvbmZpZ1BhcmFtID0gdHlwZW9mIHBpbmF0YUFwaUtleSA9PT0gJ29iamVjdCc7XG4gICAgaWYgKGlzUGluYXRhQ29uZmlnUGFyYW0pIHtcbiAgICAgICAgY29uZmlnID0gcmVmYWN0b3JDb25maWcocGluYXRhQXBpS2V5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnO1xufVxuXG5jbGFzcyBQaW5hdGFDbGllbnQge1xuICAgIGNvbmZpZzogUGluYXRhQ29uZmlnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHBpbmF0YUFwaUtleT86IHN0cmluZyB8IFBpbmF0YUNvbmZpZyxcbiAgICAgICAgcGluYXRhU2VjcmV0QXBpS2V5Pzogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gc2FuaXRpemVDb25maWcocGluYXRhQXBpS2V5LCBwaW5hdGFTZWNyZXRBcGlLZXkpO1xuICAgIH1cblxuICAgIHBpbkJ5SGFzaChoYXNoVG9QaW46IHN0cmluZywgb3B0aW9ucz86IFBpbmF0YVBpbkJ5SGFzaFBpbk9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHBpbkJ5SGFzaCh0aGlzLmNvbmZpZywgaGFzaFRvUGluLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBoYXNoTWV0YWRhdGEoaXBmc1Bpbkhhc2g6IHN0cmluZywgbWV0YWRhdGE6IFBpbmF0YU1ldGFkYXRhKSB7XG4gICAgICAgIHJldHVybiBoYXNoTWV0YWRhdGEodGhpcy5jb25maWcsIGlwZnNQaW5IYXNoLCBtZXRhZGF0YSk7XG4gICAgfVxuXG4gICAgcGluRmlsZVRvSVBGUyhyZWFkYWJsZVN0cmVhbTogYW55LCBvcHRpb25zPzogUGluYXRhUGluT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gcGluRmlsZVRvSVBGUyh0aGlzLmNvbmZpZywgcmVhZGFibGVTdHJlYW0sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHBpbkZyb21GUyhzb3VyY2VQYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBQaW5hdGFQaW5PcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBwaW5Gcm9tRlModGhpcy5jb25maWcsIHNvdXJjZVBhdGgsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBwaW5KU09OVG9JUEZTKGJvZHk6IGFueSwgb3B0aW9ucz86IFBpbmF0YVBpbk9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHBpbkpTT05Ub0lQRlModGhpcy5jb25maWcsIGJvZHksIG9wdGlvbnMpO1xuICAgIH1cbiAgICBwaW5Kb2JzKGZpbHRlcnM/OiBQaW5hdGFQaW5Kb2JzRmlsdGVyT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gcGluSm9icyh0aGlzLmNvbmZpZywgZmlsdGVycyk7XG4gICAgfVxuICAgIHVucGluKGhhc2hUb1VucGluOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHVucGluKHRoaXMuY29uZmlnLCBoYXNoVG9VbnBpbik7XG4gICAgfVxuXG4gICAgcGluTGlzdChmaWx0ZXJzOiBQaW5hdGFQaW5MaXN0RmlsdGVyT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gcGluTGlzdCh0aGlzLmNvbmZpZywgZmlsdGVycyk7XG4gICAgfVxuXG4gICAgZ2V0RmlsZXNCeUNvdW50KGZpbHRlcnM6IFBpbmF0YVBpbkxpc3RGaWx0ZXJPcHRpb25zLCBtYXhDb3VudD86IG51bWJlcikge1xuICAgICAgICByZXR1cm4gZ2V0RmlsZXNCeUNvdW50KHRoaXMuY29uZmlnLCBmaWx0ZXJzLCBtYXhDb3VudCk7XG4gICAgfVxuXG4gICAgdGVzdEF1dGhlbnRpY2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGVzdEF1dGhlbnRpY2F0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB9XG4gICAgdXNlclBpbm5lZERhdGFUb3RhbCgpIHtcbiAgICAgICAgcmV0dXJuIHVzZXJQaW5uZWREYXRhVG90YWwodGhpcy5jb25maWcpO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQaW5hdGFDbGllbnQ7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29tbWFuZHMvZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL3Bpbm5pbmcnO1xuXG5leHBvcnQgZGVmYXVsdCBQaW5hdGFDbGllbnQ7XG5cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ25hdGl2ZS1mdW5jdGlvbi10by1zdHJpbmcnLCBGdW5jdGlvbi50b1N0cmluZyk7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgdmFyIEM7XG4gIGlmIChpc0FycmF5KG9yaWdpbmFsKSkge1xuICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDO1xufTtcbiIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jbGFzc0NhbGxDaGVjaywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZXhwb3J0IGRlZmF1bHQgKCgpID0+IHtcbiAgICBpZiAoIWdsb2JhbCB8fCAhZ2xvYmFsLl9iYWJlbFBvbHlmaWxsKSB7XG4gICAgICAgIHJlcXVpcmUoJ2JhYmVsLXBvbHlmaWxsJyk7XG4gICAgfVxufSkoKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5yZXF1aXJlKFwiY29yZS1qcy9zaGltXCIpO1xuXG5yZXF1aXJlKFwicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lXCIpO1xuXG5yZXF1aXJlKFwiY29yZS1qcy9mbi9yZWdleHAvZXNjYXBlXCIpO1xuXG5pZiAoZ2xvYmFsLl9iYWJlbFBvbHlmaWxsKSB7XG4gIHRocm93IG5ldyBFcnJvcihcIm9ubHkgb25lIGluc3RhbmNlIG9mIGJhYmVsLXBvbHlmaWxsIGlzIGFsbG93ZWRcIik7XG59XG5nbG9iYWwuX2JhYmVsUG9seWZpbGwgPSB0cnVlO1xuXG52YXIgREVGSU5FX1BST1BFUlRZID0gXCJkZWZpbmVQcm9wZXJ0eVwiO1xuZnVuY3Rpb24gZGVmaW5lKE8sIGtleSwgdmFsdWUpIHtcbiAgT1trZXldIHx8IE9iamVjdFtERUZJTkVfUFJPUEVSVFldKE8sIGtleSwge1xuICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfSk7XG59XG5cbmRlZmluZShTdHJpbmcucHJvdG90eXBlLCBcInBhZExlZnRcIiwgXCJcIi5wYWRTdGFydCk7XG5kZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgXCJwYWRSaWdodFwiLCBcIlwiLnBhZEVuZCk7XG5cblwicG9wLHJldmVyc2Usc2hpZnQsa2V5cyx2YWx1ZXMsZW50cmllcyxpbmRleE9mLGV2ZXJ5LHNvbWUsZm9yRWFjaCxtYXAsZmlsdGVyLGZpbmQsZmluZEluZGV4LGluY2x1ZGVzLGpvaW4sc2xpY2UsY29uY2F0LHB1c2gsc3BsaWNlLHVuc2hpZnQsc29ydCxsYXN0SW5kZXhPZixyZWR1Y2UscmVkdWNlUmlnaHQsY29weVdpdGhpbixmaWxsXCIuc3BsaXQoXCIsXCIpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBbXVtrZXldICYmIGRlZmluZShBcnJheSwga2V5LCBGdW5jdGlvbi5jYWxsLmJpbmQoW11ba2V5XSkpO1xufSk7IiwicmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zeW1ib2wnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydGllcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5mcmVlemUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LnNlYWwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LnByZXZlbnQtZXh0ZW5zaW9ucycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuaXMtZnJvemVuJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1zZWFsZWQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzLWV4dGVuc2libGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuaXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5mdW5jdGlvbi5iaW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmZ1bmN0aW9uLm5hbWUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZnVuY3Rpb24uaGFzLWluc3RhbmNlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnBhcnNlLWludCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5wYXJzZS1mbG9hdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIuY29uc3RydWN0b3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLnRvLWZpeGVkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci50by1wcmVjaXNpb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmVwc2lsb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLWZpbml0ZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIuaXMtaW50ZWdlcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIuaXMtbmFuJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5pcy1zYWZlLWludGVnZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLm1heC1zYWZlLWludGVnZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLm1pbi1zYWZlLWludGVnZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWZsb2F0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1pbnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5hY29zaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmFzaW5oJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguYXRhbmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5jYnJ0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguY2x6MzInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5jb3NoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguZXhwbTEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5mcm91bmQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5oeXBvdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmltdWwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5sb2cxMCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmxvZzFwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGgubG9nMicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLnNpZ24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5zaW5oJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGgudGFuaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLnRydW5jJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5mcm9tLWNvZGUtcG9pbnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnJhdycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcudHJpbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmNvZGUtcG9pbnQtYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmVuZHMtd2l0aCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuaW5jbHVkZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnJlcGVhdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3RhcnRzLXdpdGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmFuY2hvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuYmlnJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5ibGluaycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuYm9sZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuZml4ZWQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRjb2xvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuZm9udHNpemUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLml0YWxpY3MnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmxpbmsnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnNtYWxsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zdHJpa2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN1YicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3VwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUubm93Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8tanNvbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLnRvLWlzby1zdHJpbmcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZGF0ZS50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZGF0ZS50by1wcmltaXRpdmUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuaXMtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuZnJvbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5qb2luJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LnNsaWNlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LnNvcnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuZm9yLWVhY2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkubWFwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZpbHRlcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zb21lJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmV2ZXJ5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LnJlZHVjZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UtcmlnaHQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuaW5kZXgtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkubGFzdC1pbmRleC1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5jb3B5LXdpdGhpbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maWxsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZpbmQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuZmluZC1pbmRleCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zcGVjaWVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5jb25zdHJ1Y3RvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuZXhlYycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5mbGFncycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAubWF0Y2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnJlcGxhY2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnNlYXJjaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuc3BsaXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc2V0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LndlYWstbWFwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LndlYWstc2V0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmFycmF5LWJ1ZmZlcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5kYXRhLXZpZXcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuaW50OC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC51aW50OC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC51aW50OC1jbGFtcGVkLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmludDE2LWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLnVpbnQxNi1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5pbnQzMi1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC51aW50MzItYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuZmxvYXQzMi1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5mbG9hdDY0LWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuYXBwbHknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5jb25zdHJ1Y3QnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5kZWZpbmUtcHJvcGVydHknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5kZWxldGUtcHJvcGVydHknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5lbnVtZXJhdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5nZXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5nZXQtcHJvdG90eXBlLW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuaGFzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuaXMtZXh0ZW5zaWJsZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0Lm93bi1rZXlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QucHJldmVudC1leHRlbnNpb25zJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3Quc2V0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3Quc2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5hcnJheS5pbmNsdWRlcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5hcnJheS5mbGF0LW1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5hcnJheS5mbGF0dGVuJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy5hdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLXN0YXJ0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy5wYWQtZW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy50cmltLWxlZnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tcmlnaHQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLm1hdGNoLWFsbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zeW1ib2wuYXN5bmMtaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LnZhbHVlcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5vYmplY3QuZW50cmllcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5vYmplY3QuZGVmaW5lLWdldHRlcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5vYmplY3QuZGVmaW5lLXNldHRlcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5vYmplY3QubG9va3VwLWdldHRlcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5vYmplY3QubG9va3VwLXNldHRlcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXAudG8tanNvbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zZXQudG8tanNvbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXAub2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc2V0Lm9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LndlYWstbWFwLm9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LndlYWstc2V0Lm9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hcC5mcm9tJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnNldC5mcm9tJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LndlYWstbWFwLmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcud2Vhay1zZXQuZnJvbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5nbG9iYWwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3lzdGVtLmdsb2JhbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5lcnJvci5pcy1lcnJvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmNsYW1wJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguZGVnLXBlci1yYWQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5kZWdyZWVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguZnNjYWxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguaWFkZGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5pc3ViaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmltdWxoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGgucmFkLXBlci1kZWcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5yYWRpYW5zJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguc2NhbGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC51bXVsaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLnNpZ25iaXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnByb21pc2UudHJ5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuZGVmaW5lLW1ldGFkYXRhJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuZGVsZXRlLW1ldGFkYXRhJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW1ldGFkYXRhJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW1ldGFkYXRhLWtleXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW93bi1tZXRhZGF0YS1rZXlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuaGFzLW1ldGFkYXRhJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuaGFzLW93bi1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0Lm1ldGFkYXRhJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LmFzYXAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JzZXJ2YWJsZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL3dlYi50aW1lcnMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy93ZWIuaW1tZWRpYXRlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL21vZHVsZXMvX2NvcmUnKTtcbiIsIi8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IGdldEtleXMoaXQpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgaWYgKGdldFN5bWJvbHMpIHtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpO1xuICAgIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAoc3ltYm9scy5sZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHsgY3JlYXRlOiByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJykgfSk7XG4iLCIvLyAxOS4xLjIuOSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRQcm90b3R5cGVPZicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKGl0KSB7XG4gICAgcmV0dXJuICRnZXRQcm90b3R5cGVPZih0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjIuNyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0JykuZjtcbn0pO1xuIiwiLy8gMTkuMS4yLjUgT2JqZWN0LmZyZWV6ZShPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKS5vbkZyZWV6ZTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdmcmVlemUnLCBmdW5jdGlvbiAoJGZyZWV6ZSkge1xuICByZXR1cm4gZnVuY3Rpb24gZnJlZXplKGl0KSB7XG4gICAgcmV0dXJuICRmcmVlemUgJiYgaXNPYmplY3QoaXQpID8gJGZyZWV6ZShtZXRhKGl0KSkgOiBpdDtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjE3IE9iamVjdC5zZWFsKE8pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi9fbWV0YScpLm9uRnJlZXplO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ3NlYWwnLCBmdW5jdGlvbiAoJHNlYWwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHNlYWwoaXQpIHtcbiAgICByZXR1cm4gJHNlYWwgJiYgaXNPYmplY3QoaXQpID8gJHNlYWwobWV0YShpdCkpIDogaXQ7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi4xNSBPYmplY3QucHJldmVudEV4dGVuc2lvbnMoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJykub25GcmVlemU7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgncHJldmVudEV4dGVuc2lvbnMnLCBmdW5jdGlvbiAoJHByZXZlbnRFeHRlbnNpb25zKSB7XG4gIHJldHVybiBmdW5jdGlvbiBwcmV2ZW50RXh0ZW5zaW9ucyhpdCkge1xuICAgIHJldHVybiAkcHJldmVudEV4dGVuc2lvbnMgJiYgaXNPYmplY3QoaXQpID8gJHByZXZlbnRFeHRlbnNpb25zKG1ldGEoaXQpKSA6IGl0O1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjIuMTIgT2JqZWN0LmlzRnJvemVuKE8pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdpc0Zyb3plbicsIGZ1bmN0aW9uICgkaXNGcm96ZW4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGlzRnJvemVuKGl0KSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0KGl0KSA/ICRpc0Zyb3plbiA/ICRpc0Zyb3plbihpdCkgOiBmYWxzZSA6IHRydWU7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi4xMyBPYmplY3QuaXNTZWFsZWQoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2lzU2VhbGVkJywgZnVuY3Rpb24gKCRpc1NlYWxlZCkge1xuICByZXR1cm4gZnVuY3Rpb24gaXNTZWFsZWQoaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzU2VhbGVkID8gJGlzU2VhbGVkKGl0KSA6IGZhbHNlIDogdHJ1ZTtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjExIE9iamVjdC5pc0V4dGVuc2libGUoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2lzRXh0ZW5zaWJsZScsIGZ1bmN0aW9uICgkaXNFeHRlbnNpYmxlKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpc0V4dGVuc2libGUoaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzRXh0ZW5zaWJsZSA/ICRpc0V4dGVuc2libGUoaXQpIDogdHJ1ZSA6IGZhbHNlO1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjMuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYsICdPYmplY3QnLCB7IGFzc2lnbjogcmVxdWlyZSgnLi9fb2JqZWN0LWFzc2lnbicpIH0pO1xuIiwiLy8gMTkuMS4zLjEwIE9iamVjdC5pcyh2YWx1ZTEsIHZhbHVlMilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHsgaXM6IHJlcXVpcmUoJy4vX3NhbWUtdmFsdWUnKSB9KTtcbiIsIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG4iLCIvLyAxOS4yLjMuMiAvIDE1LjMuNC41IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kKHRoaXNBcmcsIGFyZ3MuLi4pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0Z1bmN0aW9uJywgeyBiaW5kOiByZXF1aXJlKCcuL19iaW5kJykgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBIQVNfSU5TVEFOQ0UgPSByZXF1aXJlKCcuL193a3MnKSgnaGFzSW5zdGFuY2UnKTtcbnZhciBGdW5jdGlvblByb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gMTkuMi4zLjYgRnVuY3Rpb24ucHJvdG90eXBlW0BAaGFzSW5zdGFuY2VdKFYpXG5pZiAoIShIQVNfSU5TVEFOQ0UgaW4gRnVuY3Rpb25Qcm90bykpIHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYoRnVuY3Rpb25Qcm90bywgSEFTX0lOU1RBTkNFLCB7IHZhbHVlOiBmdW5jdGlvbiAoTykge1xuICBpZiAodHlwZW9mIHRoaXMgIT0gJ2Z1bmN0aW9uJyB8fCAhaXNPYmplY3QoTykpIHJldHVybiBmYWxzZTtcbiAgaWYgKCFpc09iamVjdCh0aGlzLnByb3RvdHlwZSkpIHJldHVybiBPIGluc3RhbmNlb2YgdGhpcztcbiAgLy8gZm9yIGVudmlyb25tZW50IHcvbyBuYXRpdmUgYEBAaGFzSW5zdGFuY2VgIGxvZ2ljIGVub3VnaCBgaW5zdGFuY2VvZmAsIGJ1dCBhZGQgdGhpczpcbiAgd2hpbGUgKE8gPSBnZXRQcm90b3R5cGVPZihPKSkgaWYgKHRoaXMucHJvdG90eXBlID09PSBPKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufSB9KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhcnNlSW50ID0gcmVxdWlyZSgnLi9fcGFyc2UtaW50Jyk7XG4vLyAxOC4yLjUgcGFyc2VJbnQoc3RyaW5nLCByYWRpeClcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5GICogKHBhcnNlSW50ICE9ICRwYXJzZUludCksIHsgcGFyc2VJbnQ6ICRwYXJzZUludCB9KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhcnNlRmxvYXQgPSByZXF1aXJlKCcuL19wYXJzZS1mbG9hdCcpO1xuLy8gMTguMi40IHBhcnNlRmxvYXQoc3RyaW5nKVxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkYgKiAocGFyc2VGbG9hdCAhPSAkcGFyc2VGbG9hdCksIHsgcGFyc2VGbG9hdDogJHBhcnNlRmxvYXQgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBhTnVtYmVyVmFsdWUgPSByZXF1aXJlKCcuL19hLW51bWJlci12YWx1ZScpO1xudmFyIHJlcGVhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1yZXBlYXQnKTtcbnZhciAkdG9GaXhlZCA9IDEuMC50b0ZpeGVkO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBkYXRhID0gWzAsIDAsIDAsIDAsIDAsIDBdO1xudmFyIEVSUk9SID0gJ051bWJlci50b0ZpeGVkOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnO1xudmFyIFpFUk8gPSAnMCc7XG5cbnZhciBtdWx0aXBseSA9IGZ1bmN0aW9uIChuLCBjKSB7XG4gIHZhciBpID0gLTE7XG4gIHZhciBjMiA9IGM7XG4gIHdoaWxlICgrK2kgPCA2KSB7XG4gICAgYzIgKz0gbiAqIGRhdGFbaV07XG4gICAgZGF0YVtpXSA9IGMyICUgMWU3O1xuICAgIGMyID0gZmxvb3IoYzIgLyAxZTcpO1xuICB9XG59O1xudmFyIGRpdmlkZSA9IGZ1bmN0aW9uIChuKSB7XG4gIHZhciBpID0gNjtcbiAgdmFyIGMgPSAwO1xuICB3aGlsZSAoLS1pID49IDApIHtcbiAgICBjICs9IGRhdGFbaV07XG4gICAgZGF0YVtpXSA9IGZsb29yKGMgLyBuKTtcbiAgICBjID0gKGMgJSBuKSAqIDFlNztcbiAgfVxufTtcbnZhciBudW1Ub1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGkgPSA2O1xuICB2YXIgcyA9ICcnO1xuICB3aGlsZSAoLS1pID49IDApIHtcbiAgICBpZiAocyAhPT0gJycgfHwgaSA9PT0gMCB8fCBkYXRhW2ldICE9PSAwKSB7XG4gICAgICB2YXIgdCA9IFN0cmluZyhkYXRhW2ldKTtcbiAgICAgIHMgPSBzID09PSAnJyA/IHQgOiBzICsgcmVwZWF0LmNhbGwoWkVSTywgNyAtIHQubGVuZ3RoKSArIHQ7XG4gICAgfVxuICB9IHJldHVybiBzO1xufTtcbnZhciBwb3cgPSBmdW5jdGlvbiAoeCwgbiwgYWNjKSB7XG4gIHJldHVybiBuID09PSAwID8gYWNjIDogbiAlIDIgPT09IDEgPyBwb3coeCwgbiAtIDEsIGFjYyAqIHgpIDogcG93KHggKiB4LCBuIC8gMiwgYWNjKTtcbn07XG52YXIgbG9nID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG4gPSAwO1xuICB2YXIgeDIgPSB4O1xuICB3aGlsZSAoeDIgPj0gNDA5Nikge1xuICAgIG4gKz0gMTI7XG4gICAgeDIgLz0gNDA5NjtcbiAgfVxuICB3aGlsZSAoeDIgPj0gMikge1xuICAgIG4gKz0gMTtcbiAgICB4MiAvPSAyO1xuICB9IHJldHVybiBuO1xufTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoISEkdG9GaXhlZCAmJiAoXG4gIDAuMDAwMDgudG9GaXhlZCgzKSAhPT0gJzAuMDAwJyB8fFxuICAwLjkudG9GaXhlZCgwKSAhPT0gJzEnIHx8XG4gIDEuMjU1LnRvRml4ZWQoMikgIT09ICcxLjI1JyB8fFxuICAxMDAwMDAwMDAwMDAwMDAwMTI4LjAudG9GaXhlZCgwKSAhPT0gJzEwMDAwMDAwMDAwMDAwMDAxMjgnXG4pIHx8ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgLy8gVjggfiBBbmRyb2lkIDQuMy1cbiAgJHRvRml4ZWQuY2FsbCh7fSk7XG59KSksICdOdW1iZXInLCB7XG4gIHRvRml4ZWQ6IGZ1bmN0aW9uIHRvRml4ZWQoZnJhY3Rpb25EaWdpdHMpIHtcbiAgICB2YXIgeCA9IGFOdW1iZXJWYWx1ZSh0aGlzLCBFUlJPUik7XG4gICAgdmFyIGYgPSB0b0ludGVnZXIoZnJhY3Rpb25EaWdpdHMpO1xuICAgIHZhciBzID0gJyc7XG4gICAgdmFyIG0gPSBaRVJPO1xuICAgIHZhciBlLCB6LCBqLCBrO1xuICAgIGlmIChmIDwgMCB8fCBmID4gMjApIHRocm93IFJhbmdlRXJyb3IoRVJST1IpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoeCAhPSB4KSByZXR1cm4gJ05hTic7XG4gICAgaWYgKHggPD0gLTFlMjEgfHwgeCA+PSAxZTIxKSByZXR1cm4gU3RyaW5nKHgpO1xuICAgIGlmICh4IDwgMCkge1xuICAgICAgcyA9ICctJztcbiAgICAgIHggPSAteDtcbiAgICB9XG4gICAgaWYgKHggPiAxZS0yMSkge1xuICAgICAgZSA9IGxvZyh4ICogcG93KDIsIDY5LCAxKSkgLSA2OTtcbiAgICAgIHogPSBlIDwgMCA/IHggKiBwb3coMiwgLWUsIDEpIDogeCAvIHBvdygyLCBlLCAxKTtcbiAgICAgIHogKj0gMHgxMDAwMDAwMDAwMDAwMDtcbiAgICAgIGUgPSA1MiAtIGU7XG4gICAgICBpZiAoZSA+IDApIHtcbiAgICAgICAgbXVsdGlwbHkoMCwgeik7XG4gICAgICAgIGogPSBmO1xuICAgICAgICB3aGlsZSAoaiA+PSA3KSB7XG4gICAgICAgICAgbXVsdGlwbHkoMWU3LCAwKTtcbiAgICAgICAgICBqIC09IDc7XG4gICAgICAgIH1cbiAgICAgICAgbXVsdGlwbHkocG93KDEwLCBqLCAxKSwgMCk7XG4gICAgICAgIGogPSBlIC0gMTtcbiAgICAgICAgd2hpbGUgKGogPj0gMjMpIHtcbiAgICAgICAgICBkaXZpZGUoMSA8PCAyMyk7XG4gICAgICAgICAgaiAtPSAyMztcbiAgICAgICAgfVxuICAgICAgICBkaXZpZGUoMSA8PCBqKTtcbiAgICAgICAgbXVsdGlwbHkoMSwgMSk7XG4gICAgICAgIGRpdmlkZSgyKTtcbiAgICAgICAgbSA9IG51bVRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtdWx0aXBseSgwLCB6KTtcbiAgICAgICAgbXVsdGlwbHkoMSA8PCAtZSwgMCk7XG4gICAgICAgIG0gPSBudW1Ub1N0cmluZygpICsgcmVwZWF0LmNhbGwoWkVSTywgZik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChmID4gMCkge1xuICAgICAgayA9IG0ubGVuZ3RoO1xuICAgICAgbSA9IHMgKyAoayA8PSBmID8gJzAuJyArIHJlcGVhdC5jYWxsKFpFUk8sIGYgLSBrKSArIG0gOiBtLnNsaWNlKDAsIGsgLSBmKSArICcuJyArIG0uc2xpY2UoayAtIGYpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IHMgKyBtO1xuICAgIH0gcmV0dXJuIG07XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGFOdW1iZXJWYWx1ZSA9IHJlcXVpcmUoJy4vX2EtbnVtYmVyLXZhbHVlJyk7XG52YXIgJHRvUHJlY2lzaW9uID0gMS4wLnRvUHJlY2lzaW9uO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICgkZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBJRTctXG4gIHJldHVybiAkdG9QcmVjaXNpb24uY2FsbCgxLCB1bmRlZmluZWQpICE9PSAnMSc7XG59KSB8fCAhJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gVjggfiBBbmRyb2lkIDQuMy1cbiAgJHRvUHJlY2lzaW9uLmNhbGwoe30pO1xufSkpLCAnTnVtYmVyJywge1xuICB0b1ByZWNpc2lvbjogZnVuY3Rpb24gdG9QcmVjaXNpb24ocHJlY2lzaW9uKSB7XG4gICAgdmFyIHRoYXQgPSBhTnVtYmVyVmFsdWUodGhpcywgJ051bWJlciN0b1ByZWNpc2lvbjogaW5jb3JyZWN0IGludm9jYXRpb24hJyk7XG4gICAgcmV0dXJuIHByZWNpc2lvbiA9PT0gdW5kZWZpbmVkID8gJHRvUHJlY2lzaW9uLmNhbGwodGhhdCkgOiAkdG9QcmVjaXNpb24uY2FsbCh0aGF0LCBwcmVjaXNpb24pO1xuICB9XG59KTtcbiIsIi8vIDIwLjEuMi4xIE51bWJlci5FUFNJTE9OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHsgRVBTSUxPTjogTWF0aC5wb3coMiwgLTUyKSB9KTtcbiIsIi8vIDIwLjEuMi4yIE51bWJlci5pc0Zpbml0ZShudW1iZXIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIF9pc0Zpbml0ZSA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmlzRmluaXRlO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNGaW5pdGU6IGZ1bmN0aW9uIGlzRmluaXRlKGl0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnbnVtYmVyJyAmJiBfaXNGaW5pdGUoaXQpO1xuICB9XG59KTtcbiIsIi8vIDIwLjEuMi40IE51bWJlci5pc05hTihudW1iZXIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNOYU46IGZ1bmN0aW9uIGlzTmFOKG51bWJlcikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICByZXR1cm4gbnVtYmVyICE9IG51bWJlcjtcbiAgfVxufSk7XG4iLCIvLyAyMC4xLjIuNSBOdW1iZXIuaXNTYWZlSW50ZWdlcihudW1iZXIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGlzSW50ZWdlciA9IHJlcXVpcmUoJy4vX2lzLWludGVnZXInKTtcbnZhciBhYnMgPSBNYXRoLmFicztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7XG4gIGlzU2FmZUludGVnZXI6IGZ1bmN0aW9uIGlzU2FmZUludGVnZXIobnVtYmVyKSB7XG4gICAgcmV0dXJuIGlzSW50ZWdlcihudW1iZXIpICYmIGFicyhudW1iZXIpIDw9IDB4MWZmZmZmZmZmZmZmZmY7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMS4yLjYgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywgeyBNQVhfU0FGRV9JTlRFR0VSOiAweDFmZmZmZmZmZmZmZmZmIH0pO1xuIiwiLy8gMjAuMS4yLjEwIE51bWJlci5NSU5fU0FGRV9JTlRFR0VSXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHsgTUlOX1NBRkVfSU5URUdFUjogLTB4MWZmZmZmZmZmZmZmZmYgfSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYXJzZUZsb2F0ID0gcmVxdWlyZSgnLi9fcGFyc2UtZmxvYXQnKTtcbi8vIDIwLjEuMi4xMiBOdW1iZXIucGFyc2VGbG9hdChzdHJpbmcpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChOdW1iZXIucGFyc2VGbG9hdCAhPSAkcGFyc2VGbG9hdCksICdOdW1iZXInLCB7IHBhcnNlRmxvYXQ6ICRwYXJzZUZsb2F0IH0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFyc2VJbnQgPSByZXF1aXJlKCcuL19wYXJzZS1pbnQnKTtcbi8vIDIwLjEuMi4xMyBOdW1iZXIucGFyc2VJbnQoc3RyaW5nLCByYWRpeClcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKE51bWJlci5wYXJzZUludCAhPSAkcGFyc2VJbnQpLCAnTnVtYmVyJywgeyBwYXJzZUludDogJHBhcnNlSW50IH0pO1xuIiwiLy8gMjAuMi4yLjMgTWF0aC5hY29zaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBsb2cxcCA9IHJlcXVpcmUoJy4vX21hdGgtbG9nMXAnKTtcbnZhciBzcXJ0ID0gTWF0aC5zcXJ0O1xudmFyICRhY29zaCA9IE1hdGguYWNvc2g7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogISgkYWNvc2hcbiAgLy8gVjggYnVnOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzUwOVxuICAmJiBNYXRoLmZsb29yKCRhY29zaChOdW1iZXIuTUFYX1ZBTFVFKSkgPT0gNzEwXG4gIC8vIFRvciBCcm93c2VyIGJ1ZzogTWF0aC5hY29zaChJbmZpbml0eSkgLT4gTmFOXG4gICYmICRhY29zaChJbmZpbml0eSkgPT0gSW5maW5pdHlcbiksICdNYXRoJywge1xuICBhY29zaDogZnVuY3Rpb24gYWNvc2goeCkge1xuICAgIHJldHVybiAoeCA9ICt4KSA8IDEgPyBOYU4gOiB4ID4gOTQ5MDYyNjUuNjI0MjUxNTZcbiAgICAgID8gTWF0aC5sb2coeCkgKyBNYXRoLkxOMlxuICAgICAgOiBsb2cxcCh4IC0gMSArIHNxcnQoeCAtIDEpICogc3FydCh4ICsgMSkpO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi41IE1hdGguYXNpbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGFzaW5oID0gTWF0aC5hc2luaDtcblxuZnVuY3Rpb24gYXNpbmgoeCkge1xuICByZXR1cm4gIWlzRmluaXRlKHggPSAreCkgfHwgeCA9PSAwID8geCA6IHggPCAwID8gLWFzaW5oKC14KSA6IE1hdGgubG9nKHggKyBNYXRoLnNxcnQoeCAqIHggKyAxKSk7XG59XG5cbi8vIFRvciBCcm93c2VyIGJ1ZzogTWF0aC5hc2luaCgwKSAtPiAtMFxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKCRhc2luaCAmJiAxIC8gJGFzaW5oKDApID4gMCksICdNYXRoJywgeyBhc2luaDogYXNpbmggfSk7XG4iLCIvLyAyMC4yLjIuNyBNYXRoLmF0YW5oKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRhdGFuaCA9IE1hdGguYXRhbmg7XG5cbi8vIFRvciBCcm93c2VyIGJ1ZzogTWF0aC5hdGFuaCgtMCkgLT4gMFxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKCRhdGFuaCAmJiAxIC8gJGF0YW5oKC0wKSA8IDApLCAnTWF0aCcsIHtcbiAgYXRhbmg6IGZ1bmN0aW9uIGF0YW5oKHgpIHtcbiAgICByZXR1cm4gKHggPSAreCkgPT0gMCA/IHggOiBNYXRoLmxvZygoMSArIHgpIC8gKDEgLSB4KSkgLyAyO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi45IE1hdGguY2JydCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBzaWduID0gcmVxdWlyZSgnLi9fbWF0aC1zaWduJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgY2JydDogZnVuY3Rpb24gY2JydCh4KSB7XG4gICAgcmV0dXJuIHNpZ24oeCA9ICt4KSAqIE1hdGgucG93KE1hdGguYWJzKHgpLCAxIC8gMyk7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjExIE1hdGguY2x6MzIoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgY2x6MzI6IGZ1bmN0aW9uIGNsejMyKHgpIHtcbiAgICByZXR1cm4gKHggPj4+PSAwKSA/IDMxIC0gTWF0aC5mbG9vcihNYXRoLmxvZyh4ICsgMC41KSAqIE1hdGguTE9HMkUpIDogMzI7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjEyIE1hdGguY29zaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBleHAgPSBNYXRoLmV4cDtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjb3NoOiBmdW5jdGlvbiBjb3NoKHgpIHtcbiAgICByZXR1cm4gKGV4cCh4ID0gK3gpICsgZXhwKC14KSkgLyAyO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4xNCBNYXRoLmV4cG0xKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRleHBtMSA9IHJlcXVpcmUoJy4vX21hdGgtZXhwbTEnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoJGV4cG0xICE9IE1hdGguZXhwbTEpLCAnTWF0aCcsIHsgZXhwbTE6ICRleHBtMSB9KTtcbiIsIi8vIDIwLjIuMi4xNiBNYXRoLmZyb3VuZCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBmcm91bmQ6IHJlcXVpcmUoJy4vX21hdGgtZnJvdW5kJykgfSk7XG4iLCIvLyAyMC4yLjIuMTcgTWF0aC5oeXBvdChbdmFsdWUxWywgdmFsdWUyWywg4oCmIF1dXSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYWJzID0gTWF0aC5hYnM7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgaHlwb3Q6IGZ1bmN0aW9uIGh5cG90KHZhbHVlMSwgdmFsdWUyKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICB2YXIgc3VtID0gMDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBsYXJnID0gMDtcbiAgICB2YXIgYXJnLCBkaXY7XG4gICAgd2hpbGUgKGkgPCBhTGVuKSB7XG4gICAgICBhcmcgPSBhYnMoYXJndW1lbnRzW2krK10pO1xuICAgICAgaWYgKGxhcmcgPCBhcmcpIHtcbiAgICAgICAgZGl2ID0gbGFyZyAvIGFyZztcbiAgICAgICAgc3VtID0gc3VtICogZGl2ICogZGl2ICsgMTtcbiAgICAgICAgbGFyZyA9IGFyZztcbiAgICAgIH0gZWxzZSBpZiAoYXJnID4gMCkge1xuICAgICAgICBkaXYgPSBhcmcgLyBsYXJnO1xuICAgICAgICBzdW0gKz0gZGl2ICogZGl2O1xuICAgICAgfSBlbHNlIHN1bSArPSBhcmc7XG4gICAgfVxuICAgIHJldHVybiBsYXJnID09PSBJbmZpbml0eSA/IEluZmluaXR5IDogbGFyZyAqIE1hdGguc3FydChzdW0pO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4xOCBNYXRoLmltdWwoeCwgeSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGltdWwgPSBNYXRoLmltdWw7XG5cbi8vIHNvbWUgV2ViS2l0IHZlcnNpb25zIGZhaWxzIHdpdGggYmlnIG51bWJlcnMsIHNvbWUgaGFzIHdyb25nIGFyaXR5XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJGltdWwoMHhmZmZmZmZmZiwgNSkgIT0gLTUgfHwgJGltdWwubGVuZ3RoICE9IDI7XG59KSwgJ01hdGgnLCB7XG4gIGltdWw6IGZ1bmN0aW9uIGltdWwoeCwgeSkge1xuICAgIHZhciBVSU5UMTYgPSAweGZmZmY7XG4gICAgdmFyIHhuID0gK3g7XG4gICAgdmFyIHluID0gK3k7XG4gICAgdmFyIHhsID0gVUlOVDE2ICYgeG47XG4gICAgdmFyIHlsID0gVUlOVDE2ICYgeW47XG4gICAgcmV0dXJuIDAgfCB4bCAqIHlsICsgKChVSU5UMTYgJiB4biA+Pj4gMTYpICogeWwgKyB4bCAqIChVSU5UMTYgJiB5biA+Pj4gMTYpIDw8IDE2ID4+PiAwKTtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMjEgTWF0aC5sb2cxMCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBsb2cxMDogZnVuY3Rpb24gbG9nMTAoeCkge1xuICAgIHJldHVybiBNYXRoLmxvZyh4KSAqIE1hdGguTE9HMTBFO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4yMCBNYXRoLmxvZzFwKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IGxvZzFwOiByZXF1aXJlKCcuL19tYXRoLWxvZzFwJykgfSk7XG4iLCIvLyAyMC4yLjIuMjIgTWF0aC5sb2cyKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGxvZzI6IGZ1bmN0aW9uIGxvZzIoeCkge1xuICAgIHJldHVybiBNYXRoLmxvZyh4KSAvIE1hdGguTE4yO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4yOCBNYXRoLnNpZ24oeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgc2lnbjogcmVxdWlyZSgnLi9fbWF0aC1zaWduJykgfSk7XG4iLCIvLyAyMC4yLjIuMzAgTWF0aC5zaW5oKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGV4cG0xID0gcmVxdWlyZSgnLi9fbWF0aC1leHBtMScpO1xudmFyIGV4cCA9IE1hdGguZXhwO1xuXG4vLyBWOCBuZWFyIENocm9taXVtIDM4IGhhcyBhIHByb2JsZW0gd2l0aCB2ZXJ5IHNtYWxsIG51bWJlcnNcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAhTWF0aC5zaW5oKC0yZS0xNykgIT0gLTJlLTE3O1xufSksICdNYXRoJywge1xuICBzaW5oOiBmdW5jdGlvbiBzaW5oKHgpIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoeCA9ICt4KSA8IDFcbiAgICAgID8gKGV4cG0xKHgpIC0gZXhwbTEoLXgpKSAvIDJcbiAgICAgIDogKGV4cCh4IC0gMSkgLSBleHAoLXggLSAxKSkgKiAoTWF0aC5FIC8gMik7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjMzIE1hdGgudGFuaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBleHBtMSA9IHJlcXVpcmUoJy4vX21hdGgtZXhwbTEnKTtcbnZhciBleHAgPSBNYXRoLmV4cDtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICB0YW5oOiBmdW5jdGlvbiB0YW5oKHgpIHtcbiAgICB2YXIgYSA9IGV4cG0xKHggPSAreCk7XG4gICAgdmFyIGIgPSBleHBtMSgteCk7XG4gICAgcmV0dXJuIGEgPT0gSW5maW5pdHkgPyAxIDogYiA9PSBJbmZpbml0eSA/IC0xIDogKGEgLSBiKSAvIChleHAoeCkgKyBleHAoLXgpKTtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMzQgTWF0aC50cnVuYyh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICB0cnVuYzogZnVuY3Rpb24gdHJ1bmMoaXQpIHtcbiAgICByZXR1cm4gKGl0ID4gMCA/IE1hdGguZmxvb3IgOiBNYXRoLmNlaWwpKGl0KTtcbiAgfVxufSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbnZhciAkZnJvbUNvZGVQb2ludCA9IFN0cmluZy5mcm9tQ29kZVBvaW50O1xuXG4vLyBsZW5ndGggc2hvdWxkIGJlIDEsIG9sZCBGRiBwcm9ibGVtXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghISRmcm9tQ29kZVBvaW50ICYmICRmcm9tQ29kZVBvaW50Lmxlbmd0aCAhPSAxKSwgJ1N0cmluZycsIHtcbiAgLy8gMjEuMS4yLjIgU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uY29kZVBvaW50cylcbiAgZnJvbUNvZGVQb2ludDogZnVuY3Rpb24gZnJvbUNvZGVQb2ludCh4KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICB2YXIgcmVzID0gW107XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgY29kZTtcbiAgICB3aGlsZSAoYUxlbiA+IGkpIHtcbiAgICAgIGNvZGUgPSArYXJndW1lbnRzW2krK107XG4gICAgICBpZiAodG9BYnNvbHV0ZUluZGV4KGNvZGUsIDB4MTBmZmZmKSAhPT0gY29kZSkgdGhyb3cgUmFuZ2VFcnJvcihjb2RlICsgJyBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Jyk7XG4gICAgICByZXMucHVzaChjb2RlIDwgMHgxMDAwMFxuICAgICAgICA/IGZyb21DaGFyQ29kZShjb2RlKVxuICAgICAgICA6IGZyb21DaGFyQ29kZSgoKGNvZGUgLT0gMHgxMDAwMCkgPj4gMTApICsgMHhkODAwLCBjb2RlICUgMHg0MDAgKyAweGRjMDApXG4gICAgICApO1xuICAgIH0gcmV0dXJuIHJlcy5qb2luKCcnKTtcbiAgfVxufSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1N0cmluZycsIHtcbiAgLy8gMjEuMS4yLjQgU3RyaW5nLnJhdyhjYWxsU2l0ZSwgLi4uc3Vic3RpdHV0aW9ucylcbiAgcmF3OiBmdW5jdGlvbiByYXcoY2FsbFNpdGUpIHtcbiAgICB2YXIgdHBsID0gdG9JT2JqZWN0KGNhbGxTaXRlLnJhdyk7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHRwbC5sZW5ndGgpO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgcmVzID0gW107XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChsZW4gPiBpKSB7XG4gICAgICByZXMucHVzaChTdHJpbmcodHBsW2krK10pKTtcbiAgICAgIGlmIChpIDwgYUxlbikgcmVzLnB1c2goU3RyaW5nKGFyZ3VtZW50c1tpXSkpO1xuICAgIH0gcmV0dXJuIHJlcy5qb2luKCcnKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyMS4xLjMuMjUgU3RyaW5nLnByb3RvdHlwZS50cmltKClcbnJlcXVpcmUoJy4vX3N0cmluZy10cmltJykoJ3RyaW0nLCBmdW5jdGlvbiAoJHRyaW0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyaW0oKSB7XG4gICAgcmV0dXJuICR0cmltKHRoaXMsIDMpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykoZmFsc2UpO1xuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIC8vIDIxLjEuMy4zIFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXQocG9zKVxuICBjb2RlUG9pbnRBdDogZnVuY3Rpb24gY29kZVBvaW50QXQocG9zKSB7XG4gICAgcmV0dXJuICRhdCh0aGlzLCBwb3MpO1xuICB9XG59KTtcbiIsIi8vIDIxLjEuMy42IFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGgoc2VhcmNoU3RyaW5nIFssIGVuZFBvc2l0aW9uXSlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBFTkRTX1dJVEggPSAnZW5kc1dpdGgnO1xudmFyICRlbmRzV2l0aCA9ICcnW0VORFNfV0lUSF07XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMtaXMtcmVnZXhwJykoRU5EU19XSVRIKSwgJ1N0cmluZycsIHtcbiAgZW5kc1dpdGg6IGZ1bmN0aW9uIGVuZHNXaXRoKHNlYXJjaFN0cmluZyAvKiAsIGVuZFBvc2l0aW9uID0gQGxlbmd0aCAqLykge1xuICAgIHZhciB0aGF0ID0gY29udGV4dCh0aGlzLCBzZWFyY2hTdHJpbmcsIEVORFNfV0lUSCk7XG4gICAgdmFyIGVuZFBvc2l0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHRoYXQubGVuZ3RoKTtcbiAgICB2YXIgZW5kID0gZW5kUG9zaXRpb24gPT09IHVuZGVmaW5lZCA/IGxlbiA6IE1hdGgubWluKHRvTGVuZ3RoKGVuZFBvc2l0aW9uKSwgbGVuKTtcbiAgICB2YXIgc2VhcmNoID0gU3RyaW5nKHNlYXJjaFN0cmluZyk7XG4gICAgcmV0dXJuICRlbmRzV2l0aFxuICAgICAgPyAkZW5kc1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGVuZClcbiAgICAgIDogdGhhdC5zbGljZShlbmQgLSBzZWFyY2gubGVuZ3RoLCBlbmQpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuIiwiLy8gMjEuMS4zLjcgU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyhzZWFyY2hTdHJpbmcsIHBvc2l0aW9uID0gMClcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29udGV4dCA9IHJlcXVpcmUoJy4vX3N0cmluZy1jb250ZXh0Jyk7XG52YXIgSU5DTFVERVMgPSAnaW5jbHVkZXMnO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzLWlzLXJlZ2V4cCcpKElOQ0xVREVTKSwgJ1N0cmluZycsIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaFN0cmluZyAvKiAsIHBvc2l0aW9uID0gMCAqLykge1xuICAgIHJldHVybiAhIX5jb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgSU5DTFVERVMpXG4gICAgICAuaW5kZXhPZihzZWFyY2hTdHJpbmcsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ1N0cmluZycsIHtcbiAgLy8gMjEuMS4zLjEzIFN0cmluZy5wcm90b3R5cGUucmVwZWF0KGNvdW50KVxuICByZXBlYXQ6IHJlcXVpcmUoJy4vX3N0cmluZy1yZXBlYXQnKVxufSk7XG4iLCIvLyAyMS4xLjMuMTggU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoKHNlYXJjaFN0cmluZyBbLCBwb3NpdGlvbiBdKVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGNvbnRleHQgPSByZXF1aXJlKCcuL19zdHJpbmctY29udGV4dCcpO1xudmFyIFNUQVJUU19XSVRIID0gJ3N0YXJ0c1dpdGgnO1xudmFyICRzdGFydHNXaXRoID0gJydbU1RBUlRTX1dJVEhdO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzLWlzLXJlZ2V4cCcpKFNUQVJUU19XSVRIKSwgJ1N0cmluZycsIHtcbiAgc3RhcnRzV2l0aDogZnVuY3Rpb24gc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcgLyogLCBwb3NpdGlvbiA9IDAgKi8pIHtcbiAgICB2YXIgdGhhdCA9IGNvbnRleHQodGhpcywgc2VhcmNoU3RyaW5nLCBTVEFSVFNfV0lUSCk7XG4gICAgdmFyIGluZGV4ID0gdG9MZW5ndGgoTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIHRoYXQubGVuZ3RoKSk7XG4gICAgdmFyIHNlYXJjaCA9IFN0cmluZyhzZWFyY2hTdHJpbmcpO1xuICAgIHJldHVybiAkc3RhcnRzV2l0aFxuICAgICAgPyAkc3RhcnRzV2l0aC5jYWxsKHRoYXQsIHNlYXJjaCwgaW5kZXgpXG4gICAgICA6IHRoYXQuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VhcmNoLmxlbmd0aCkgPT09IHNlYXJjaDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4yIFN0cmluZy5wcm90b3R5cGUuYW5jaG9yKG5hbWUpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdhbmNob3InLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gYW5jaG9yKG5hbWUpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYScsICduYW1lJywgbmFtZSk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjMgU3RyaW5nLnByb3RvdHlwZS5iaWcoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnYmlnJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJpZygpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYmlnJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNCBTdHJpbmcucHJvdG90eXBlLmJsaW5rKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2JsaW5rJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJsaW5rKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdibGluaycsICcnLCAnJyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjUgU3RyaW5nLnByb3RvdHlwZS5ib2xkKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2JvbGQnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gYm9sZCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYicsICcnLCAnJyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjYgU3RyaW5nLnByb3RvdHlwZS5maXhlZCgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdmaXhlZCcsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmaXhlZCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAndHQnLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy43IFN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yKGNvbG9yKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnZm9udGNvbG9yJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZvbnRjb2xvcihjb2xvcikge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdmb250JywgJ2NvbG9yJywgY29sb3IpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy44IFN0cmluZy5wcm90b3R5cGUuZm9udHNpemUoc2l6ZSlcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2ZvbnRzaXplJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZvbnRzaXplKHNpemUpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnZm9udCcsICdzaXplJywgc2l6ZSk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjkgU3RyaW5nLnByb3RvdHlwZS5pdGFsaWNzKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2l0YWxpY3MnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gaXRhbGljcygpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnaScsICcnLCAnJyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjEwIFN0cmluZy5wcm90b3R5cGUubGluayh1cmwpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdsaW5rJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGxpbmsodXJsKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2EnLCAnaHJlZicsIHVybCk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjExIFN0cmluZy5wcm90b3R5cGUuc21hbGwoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc21hbGwnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gc21hbGwoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3NtYWxsJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTIgU3RyaW5nLnByb3RvdHlwZS5zdHJpa2UoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3RyaWtlJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHN0cmlrZSgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3RyaWtlJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTMgU3RyaW5nLnByb3RvdHlwZS5zdWIoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3ViJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHN1YigpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3ViJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTQgU3RyaW5nLnByb3RvdHlwZS5zdXAoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3VwJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHN1cCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3VwJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiLy8gMjAuMy4zLjEgLyAxNS45LjQuNCBEYXRlLm5vdygpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ0RhdGUnLCB7IG5vdzogZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7IH0gfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBEYXRlKE5hTikudG9KU09OKCkgIT09IG51bGxcbiAgICB8fCBEYXRlLnByb3RvdHlwZS50b0pTT04uY2FsbCh7IHRvSVNPU3RyaW5nOiBmdW5jdGlvbiAoKSB7IHJldHVybiAxOyB9IH0pICE9PSAxO1xufSksICdEYXRlJywge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdG9KU09OOiBmdW5jdGlvbiB0b0pTT04oa2V5KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgcHYgPSB0b1ByaW1pdGl2ZShPKTtcbiAgICByZXR1cm4gdHlwZW9mIHB2ID09ICdudW1iZXInICYmICFpc0Zpbml0ZShwdikgPyBudWxsIDogTy50b0lTT1N0cmluZygpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDIwLjMuNC4zNiAvIDE1LjkuNS40MyBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZygpXG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGdldFRpbWUgPSBEYXRlLnByb3RvdHlwZS5nZXRUaW1lO1xudmFyICR0b0lTT1N0cmluZyA9IERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nO1xuXG52YXIgbHogPSBmdW5jdGlvbiAobnVtKSB7XG4gIHJldHVybiBudW0gPiA5ID8gbnVtIDogJzAnICsgbnVtO1xufTtcblxuLy8gUGhhbnRvbUpTIC8gb2xkIFdlYktpdCBoYXMgYSBicm9rZW4gaW1wbGVtZW50YXRpb25zXG5tb2R1bGUuZXhwb3J0cyA9IChmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAkdG9JU09TdHJpbmcuY2FsbChuZXcgRGF0ZSgtNWUxMyAtIDEpKSAhPSAnMDM4NS0wNy0yNVQwNzowNjozOS45OTlaJztcbn0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICR0b0lTT1N0cmluZy5jYWxsKG5ldyBEYXRlKE5hTikpO1xufSkpID8gZnVuY3Rpb24gdG9JU09TdHJpbmcoKSB7XG4gIGlmICghaXNGaW5pdGUoZ2V0VGltZS5jYWxsKHRoaXMpKSkgdGhyb3cgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIHZhciBkID0gdGhpcztcbiAgdmFyIHkgPSBkLmdldFVUQ0Z1bGxZZWFyKCk7XG4gIHZhciBtID0gZC5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgdmFyIHMgPSB5IDwgMCA/ICctJyA6IHkgPiA5OTk5ID8gJysnIDogJyc7XG4gIHJldHVybiBzICsgKCcwMDAwMCcgKyBNYXRoLmFicyh5KSkuc2xpY2UocyA/IC02IDogLTQpICtcbiAgICAnLScgKyBseihkLmdldFVUQ01vbnRoKCkgKyAxKSArICctJyArIGx6KGQuZ2V0VVRDRGF0ZSgpKSArXG4gICAgJ1QnICsgbHooZC5nZXRVVENIb3VycygpKSArICc6JyArIGx6KGQuZ2V0VVRDTWludXRlcygpKSArXG4gICAgJzonICsgbHooZC5nZXRVVENTZWNvbmRzKCkpICsgJy4nICsgKG0gPiA5OSA/IG0gOiAnMCcgKyBseihtKSkgKyAnWic7XG59IDogJHRvSVNPU3RyaW5nO1xuIiwidmFyIERhdGVQcm90byA9IERhdGUucHJvdG90eXBlO1xudmFyIElOVkFMSURfREFURSA9ICdJbnZhbGlkIERhdGUnO1xudmFyIFRPX1NUUklORyA9ICd0b1N0cmluZyc7XG52YXIgJHRvU3RyaW5nID0gRGF0ZVByb3RvW1RPX1NUUklOR107XG52YXIgZ2V0VGltZSA9IERhdGVQcm90by5nZXRUaW1lO1xuaWYgKG5ldyBEYXRlKE5hTikgKyAnJyAhPSBJTlZBTElEX0RBVEUpIHtcbiAgcmVxdWlyZSgnLi9fcmVkZWZpbmUnKShEYXRlUHJvdG8sIFRPX1NUUklORywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgdmFyIHZhbHVlID0gZ2V0VGltZS5jYWxsKHRoaXMpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gJHRvU3RyaW5nLmNhbGwodGhpcykgOiBJTlZBTElEX0RBVEU7XG4gIH0pO1xufVxuIiwidmFyIFRPX1BSSU1JVElWRSA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1ByaW1pdGl2ZScpO1xudmFyIHByb3RvID0gRGF0ZS5wcm90b3R5cGU7XG5cbmlmICghKFRPX1BSSU1JVElWRSBpbiBwcm90bykpIHJlcXVpcmUoJy4vX2hpZGUnKShwcm90bywgVE9fUFJJTUlUSVZFLCByZXF1aXJlKCcuL19kYXRlLXRvLXByaW1pdGl2ZScpKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgTlVNQkVSID0gJ251bWJlcic7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGhpbnQpIHtcbiAgaWYgKGhpbnQgIT09ICdzdHJpbmcnICYmIGhpbnQgIT09IE5VTUJFUiAmJiBoaW50ICE9PSAnZGVmYXVsdCcpIHRocm93IFR5cGVFcnJvcignSW5jb3JyZWN0IGhpbnQnKTtcbiAgcmV0dXJuIHRvUHJpbWl0aXZlKGFuT2JqZWN0KHRoaXMpLCBoaW50ICE9IE5VTUJFUik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuL19pdGVyLWNhbGwnKTtcbnZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikgeyBBcnJheS5mcm9tKGl0ZXIpOyB9KSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjIuMSBBcnJheS5mcm9tKGFycmF5TGlrZSwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gIGZyb206IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gICAgdmFyIEMgPSB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5O1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgbWFwZm4gPSBhTGVuID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgaXRlckZuID0gZ2V0SXRlckZuKE8pO1xuICAgIHZhciBsZW5ndGgsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG4gICAgaWYgKG1hcHBpbmcpIG1hcGZuID0gY3R4KG1hcGZuLCBhTGVuID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCwgMik7XG4gICAgLy8gaWYgb2JqZWN0IGlzbid0IGl0ZXJhYmxlIG9yIGl0J3MgYXJyYXkgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIHNpbXBsZSBjYXNlXG4gICAgaWYgKGl0ZXJGbiAhPSB1bmRlZmluZWQgJiYgIShDID09IEFycmF5ICYmIGlzQXJyYXlJdGVyKGl0ZXJGbikpKSB7XG4gICAgICBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoTyksIHJlc3VsdCA9IG5ldyBDKCk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKykge1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBtYXBwaW5nID8gY2FsbChpdGVyYXRvciwgbWFwZm4sIFtzdGVwLnZhbHVlLCBpbmRleF0sIHRydWUpIDogc3RlcC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICAgIGZvciAocmVzdWx0ID0gbmV3IEMobGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcblxuLy8gV2ViS2l0IEFycmF5Lm9mIGlzbid0IGdlbmVyaWNcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuICEoQXJyYXkub2YuY2FsbChGKSBpbnN0YW5jZW9mIEYpO1xufSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjMgQXJyYXkub2YoIC4uLml0ZW1zKVxuICBvZjogZnVuY3Rpb24gb2YoLyogLi4uYXJncyAqLykge1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciByZXN1bHQgPSBuZXcgKHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXkpKGFMZW4pO1xuICAgIHdoaWxlIChhTGVuID4gaW5kZXgpIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgcmVzdWx0Lmxlbmd0aCA9IGFMZW47XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmpvaW4oc2VwYXJhdG9yKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlKb2luID0gW10uam9pbjtcblxuLy8gZmFsbGJhY2sgZm9yIG5vdCBhcnJheS1saWtlIHN0cmluZ3NcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKHJlcXVpcmUoJy4vX2lvYmplY3QnKSAhPSBPYmplY3QgfHwgIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShhcnJheUpvaW4pKSwgJ0FycmF5Jywge1xuICBqb2luOiBmdW5jdGlvbiBqb2luKHNlcGFyYXRvcikge1xuICAgIHJldHVybiBhcnJheUpvaW4uY2FsbCh0b0lPYmplY3QodGhpcyksIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkID8gJywnIDogc2VwYXJhdG9yKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRtYXAgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5tYXAsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xNSAvIDE1LjQuNC4xOSBBcnJheS5wcm90b3R5cGUubWFwKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIG1hcDogZnVuY3Rpb24gbWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRtYXAodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRzb21lID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDMpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uc29tZSwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjIzIC8gMTUuNC40LjE3IEFycmF5LnByb3RvdHlwZS5zb21lKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIHNvbWU6IGZ1bmN0aW9uIHNvbWUoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJHNvbWUodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRldmVyeSA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSg0KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLmV2ZXJ5LCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuNSAvIDE1LjQuNC4xNiBBcnJheS5wcm90b3R5cGUuZXZlcnkoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZXZlcnk6IGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRldmVyeSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHJlZHVjZSA9IHJlcXVpcmUoJy4vX2FycmF5LXJlZHVjZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10ucmVkdWNlLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTggLyAxNS40LjQuMjEgQXJyYXkucHJvdG90eXBlLnJlZHVjZShjYWxsYmFja2ZuIFssIGluaXRpYWxWYWx1ZV0pXG4gIHJlZHVjZTogZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHtcbiAgICByZXR1cm4gJHJlZHVjZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoLCBhcmd1bWVudHNbMV0sIGZhbHNlKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRyZWR1Y2UgPSByZXF1aXJlKCcuL19hcnJheS1yZWR1Y2UnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLnJlZHVjZVJpZ2h0LCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTkgLyAxNS40LjQuMjIgQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0KGNhbGxiYWNrZm4gWywgaW5pdGlhbFZhbHVlXSlcbiAgcmVkdWNlUmlnaHQ6IGZ1bmN0aW9uIHJlZHVjZVJpZ2h0KGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHtcbiAgICByZXR1cm4gJHJlZHVjZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoLCBhcmd1bWVudHNbMV0sIHRydWUpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciAkbmF0aXZlID0gW10uaW5kZXhPZjtcbnZhciBORUdBVElWRV9aRVJPID0gISEkbmF0aXZlICYmIDEgLyBbMV0uaW5kZXhPZigxLCAtMCkgPCAwO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChORUdBVElWRV9aRVJPIHx8ICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoJG5hdGl2ZSkpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xMSAvIDE1LjQuNC4xNCBBcnJheS5wcm90b3R5cGUuaW5kZXhPZihzZWFyY2hFbGVtZW50IFssIGZyb21JbmRleF0pXG4gIGluZGV4T2Y6IGZ1bmN0aW9uIGluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCA9IDAgKi8pIHtcbiAgICByZXR1cm4gTkVHQVRJVkVfWkVST1xuICAgICAgLy8gY29udmVydCAtMCB0byArMFxuICAgICAgPyAkbmF0aXZlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgMFxuICAgICAgOiAkaW5kZXhPZih0aGlzLCBzZWFyY2hFbGVtZW50LCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyICRuYXRpdmUgPSBbXS5sYXN0SW5kZXhPZjtcbnZhciBORUdBVElWRV9aRVJPID0gISEkbmF0aXZlICYmIDEgLyBbMV0ubGFzdEluZGV4T2YoMSwgLTApIDwgMDtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoTkVHQVRJVkVfWkVSTyB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRuYXRpdmUpKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTQgLyAxNS40LjQuMTUgQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgWywgZnJvbUluZGV4XSlcbiAgbGFzdEluZGV4T2Y6IGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggPSBAWyotMV0gKi8pIHtcbiAgICAvLyBjb252ZXJ0IC0wIHRvICswXG4gICAgaWYgKE5FR0FUSVZFX1pFUk8pIHJldHVybiAkbmF0aXZlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgMDtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCh0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSBpbmRleCA9IE1hdGgubWluKGluZGV4LCB0b0ludGVnZXIoYXJndW1lbnRzWzFdKSk7XG4gICAgaWYgKGluZGV4IDwgMCkgaW5kZXggPSBsZW5ndGggKyBpbmRleDtcbiAgICBmb3IgKDtpbmRleCA+PSAwOyBpbmRleC0tKSBpZiAoaW5kZXggaW4gTykgaWYgKE9baW5kZXhdID09PSBzZWFyY2hFbGVtZW50KSByZXR1cm4gaW5kZXggfHwgMDtcbiAgICByZXR1cm4gLTE7XG4gIH1cbn0pO1xuIiwiLy8gMjIuMS4zLjMgQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4odGFyZ2V0LCBzdGFydCwgZW5kID0gdGhpcy5sZW5ndGgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5JywgeyBjb3B5V2l0aGluOiByZXF1aXJlKCcuL19hcnJheS1jb3B5LXdpdGhpbicpIH0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnY29weVdpdGhpbicpO1xuIiwiLy8gMjIuMS4zLjYgQXJyYXkucHJvdG90eXBlLmZpbGwodmFsdWUsIHN0YXJ0ID0gMCwgZW5kID0gdGhpcy5sZW5ndGgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5JywgeyBmaWxsOiByZXF1aXJlKCcuL19hcnJheS1maWxsJykgfSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdmaWxsJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyMi4xLjMuOCBBcnJheS5wcm90b3R5cGUuZmluZChwcmVkaWNhdGUsIHRoaXNBcmcgPSB1bmRlZmluZWQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmaW5kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDUpO1xudmFyIEtFWSA9ICdmaW5kJztcbnZhciBmb3JjZWQgPSB0cnVlO1xuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChLRVkgaW4gW10pIEFycmF5KDEpW0tFWV0oZnVuY3Rpb24gKCkgeyBmb3JjZWQgPSBmYWxzZTsgfSk7XG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZvcmNlZCwgJ0FycmF5Jywge1xuICBmaW5kOiBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKShLRVkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjIuMS4zLjkgQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleChwcmVkaWNhdGUsIHRoaXNBcmcgPSB1bmRlZmluZWQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmaW5kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDYpO1xudmFyIEtFWSA9ICdmaW5kSW5kZXgnO1xudmFyIGZvcmNlZCA9IHRydWU7XG4vLyBTaG91bGRuJ3Qgc2tpcCBob2xlc1xuaWYgKEtFWSBpbiBbXSkgQXJyYXkoMSlbS0VZXShmdW5jdGlvbiAoKSB7IGZvcmNlZCA9IGZhbHNlOyB9KTtcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZm9yY2VkLCAnQXJyYXknLCB7XG4gIGZpbmRJbmRleDogZnVuY3Rpb24gZmluZEluZGV4KGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKShLRVkpO1xuIiwicmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKSgnQXJyYXknKTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4vX2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4vX2lzLXJlZ2V4cCcpO1xudmFyICRmbGFncyA9IHJlcXVpcmUoJy4vX2ZsYWdzJyk7XG52YXIgJFJlZ0V4cCA9IGdsb2JhbC5SZWdFeHA7XG52YXIgQmFzZSA9ICRSZWdFeHA7XG52YXIgcHJvdG8gPSAkUmVnRXhwLnByb3RvdHlwZTtcbnZhciByZTEgPSAvYS9nO1xudmFyIHJlMiA9IC9hL2c7XG4vLyBcIm5ld1wiIGNyZWF0ZXMgYSBuZXcgb2JqZWN0LCBvbGQgd2Via2l0IGJ1Z2d5IGhlcmVcbnZhciBDT1JSRUNUX05FVyA9IG5ldyAkUmVnRXhwKHJlMSkgIT09IHJlMTtcblxuaWYgKHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgKCFDT1JSRUNUX05FVyB8fCByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmUyW3JlcXVpcmUoJy4vX3drcycpKCdtYXRjaCcpXSA9IGZhbHNlO1xuICAvLyBSZWdFeHAgY29uc3RydWN0b3IgY2FuIGFsdGVyIGZsYWdzIGFuZCBJc1JlZ0V4cCB3b3JrcyBjb3JyZWN0IHdpdGggQEBtYXRjaFxuICByZXR1cm4gJFJlZ0V4cChyZTEpICE9IHJlMSB8fCAkUmVnRXhwKHJlMikgPT0gcmUyIHx8ICRSZWdFeHAocmUxLCAnaScpICE9ICcvYS9pJztcbn0pKSkge1xuICAkUmVnRXhwID0gZnVuY3Rpb24gUmVnRXhwKHAsIGYpIHtcbiAgICB2YXIgdGlSRSA9IHRoaXMgaW5zdGFuY2VvZiAkUmVnRXhwO1xuICAgIHZhciBwaVJFID0gaXNSZWdFeHAocCk7XG4gICAgdmFyIGZpVSA9IGYgPT09IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gIXRpUkUgJiYgcGlSRSAmJiBwLmNvbnN0cnVjdG9yID09PSAkUmVnRXhwICYmIGZpVSA/IHBcbiAgICAgIDogaW5oZXJpdElmUmVxdWlyZWQoQ09SUkVDVF9ORVdcbiAgICAgICAgPyBuZXcgQmFzZShwaVJFICYmICFmaVUgPyBwLnNvdXJjZSA6IHAsIGYpXG4gICAgICAgIDogQmFzZSgocGlSRSA9IHAgaW5zdGFuY2VvZiAkUmVnRXhwKSA/IHAuc291cmNlIDogcCwgcGlSRSAmJiBmaVUgPyAkZmxhZ3MuY2FsbChwKSA6IGYpXG4gICAgICAsIHRpUkUgPyB0aGlzIDogcHJvdG8sICRSZWdFeHApO1xuICB9O1xuICB2YXIgcHJveHkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAga2V5IGluICRSZWdFeHAgfHwgZFAoJFJlZ0V4cCwga2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJhc2Vba2V5XTsgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKGl0KSB7IEJhc2Vba2V5XSA9IGl0OyB9XG4gICAgfSk7XG4gIH07XG4gIGZvciAodmFyIGtleXMgPSBnT1BOKEJhc2UpLCBpID0gMDsga2V5cy5sZW5ndGggPiBpOykgcHJveHkoa2V5c1tpKytdKTtcbiAgcHJvdG8uY29uc3RydWN0b3IgPSAkUmVnRXhwO1xuICAkUmVnRXhwLnByb3RvdHlwZSA9IHByb3RvO1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKGdsb2JhbCwgJ1JlZ0V4cCcsICRSZWdFeHApO1xufVxuXG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKCdSZWdFeHAnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4vZXM2LnJlZ2V4cC5mbGFncycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgJGZsYWdzID0gcmVxdWlyZSgnLi9fZmxhZ3MnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciAkdG9TdHJpbmcgPSAvLi9bVE9fU1RSSU5HXTtcblxudmFyIGRlZmluZSA9IGZ1bmN0aW9uIChmbikge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKFJlZ0V4cC5wcm90b3R5cGUsIFRPX1NUUklORywgZm4sIHRydWUpO1xufTtcblxuLy8gMjEuMi41LjE0IFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcoKVxuaWYgKHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkgeyByZXR1cm4gJHRvU3RyaW5nLmNhbGwoeyBzb3VyY2U6ICdhJywgZmxhZ3M6ICdiJyB9KSAhPSAnL2EvYic7IH0pKSB7XG4gIGRlZmluZShmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgUiA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHJldHVybiAnLycuY29uY2F0KFIuc291cmNlLCAnLycsXG4gICAgICAnZmxhZ3MnIGluIFIgPyBSLmZsYWdzIDogIURFU0NSSVBUT1JTICYmIFIgaW5zdGFuY2VvZiBSZWdFeHAgPyAkZmxhZ3MuY2FsbChSKSA6IHVuZGVmaW5lZCk7XG4gIH0pO1xuLy8gRkY0NC0gUmVnRXhwI3RvU3RyaW5nIGhhcyBhIHdyb25nIG5hbWVcbn0gZWxzZSBpZiAoJHRvU3RyaW5nLm5hbWUgIT0gVE9fU1RSSU5HKSB7XG4gIGRlZmluZShmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gJHRvU3RyaW5nLmNhbGwodGhpcyk7XG4gIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4vX2FkdmFuY2Utc3RyaW5nLWluZGV4Jyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4vX3JlZ2V4cC1leGVjLWFic3RyYWN0Jyk7XG5cbi8vIEBAbWF0Y2ggbG9naWNcbnJlcXVpcmUoJy4vX2ZpeC1yZS13a3MnKSgnbWF0Y2gnLCAxLCBmdW5jdGlvbiAoZGVmaW5lZCwgTUFUQ0gsICRtYXRjaCwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUubWF0Y2hgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUubWF0Y2hcbiAgICBmdW5jdGlvbiBtYXRjaChyZWdleHApIHtcbiAgICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICAgIHZhciBmbiA9IHJlZ2V4cCA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByZWdleHBbTUFUQ0hdO1xuICAgICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWQgPyBmbi5jYWxsKHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbTUFUQ0hdKFN0cmluZyhPKSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQG1hdGNoXG4gICAgZnVuY3Rpb24gKHJlZ2V4cCkge1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZSgkbWF0Y2gsIHJlZ2V4cCwgdGhpcyk7XG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG4gICAgICBpZiAoIXJ4Lmdsb2JhbCkgcmV0dXJuIHJlZ0V4cEV4ZWMocngsIFMpO1xuICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgIHJ4Lmxhc3RJbmRleCA9IDA7XG4gICAgICB2YXIgQSA9IFtdO1xuICAgICAgdmFyIG4gPSAwO1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIHdoaWxlICgocmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUykpICE9PSBudWxsKSB7XG4gICAgICAgIHZhciBtYXRjaFN0ciA9IFN0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICBBW25dID0gbWF0Y2hTdHI7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICAgIG4rKztcbiAgICAgIH1cbiAgICAgIHJldHVybiBuID09PSAwID8gbnVsbCA6IEE7XG4gICAgfVxuICBdO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gcmVxdWlyZSgnLi9fYWR2YW5jZS1zdHJpbmctaW5kZXgnKTtcbnZhciByZWdFeHBFeGVjID0gcmVxdWlyZSgnLi9fcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgU1VCU1RJVFVUSU9OX1NZTUJPTFMgPSAvXFwkKFskJmAnXXxcXGRcXGQ/fDxbXj5dKj4pL2c7XG52YXIgU1VCU1RJVFVUSU9OX1NZTUJPTFNfTk9fTkFNRUQgPSAvXFwkKFskJmAnXXxcXGRcXGQ/KS9nO1xuXG52YXIgbWF5YmVUb1N0cmluZyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/IGl0IDogU3RyaW5nKGl0KTtcbn07XG5cbi8vIEBAcmVwbGFjZSBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdyZXBsYWNlJywgMiwgZnVuY3Rpb24gKGRlZmluZWQsIFJFUExBQ0UsICRyZXBsYWNlLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnJlcGxhY2VcbiAgICBmdW5jdGlvbiByZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICAgIHZhciBmbiA9IHNlYXJjaFZhbHVlID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHNlYXJjaFZhbHVlW1JFUExBQ0VdO1xuICAgICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBmbi5jYWxsKHNlYXJjaFZhbHVlLCBPLCByZXBsYWNlVmFsdWUpXG4gICAgICAgIDogJHJlcGxhY2UuY2FsbChTdHJpbmcoTyksIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHJlcGxhY2VcbiAgICBmdW5jdGlvbiAocmVnZXhwLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUoJHJlcGxhY2UsIHJlZ2V4cCwgdGhpcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcblxuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QocmVnZXhwKTtcbiAgICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgICAgdmFyIGZ1bmN0aW9uYWxSZXBsYWNlID0gdHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgIGlmICghZnVuY3Rpb25hbFJlcGxhY2UpIHJlcGxhY2VWYWx1ZSA9IFN0cmluZyhyZXBsYWNlVmFsdWUpO1xuICAgICAgdmFyIGdsb2JhbCA9IHJ4Lmdsb2JhbDtcbiAgICAgIGlmIChnbG9iYWwpIHtcbiAgICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIGJyZWFrO1xuICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgaWYgKCFnbG9iYWwpIGJyZWFrO1xuICAgICAgICB2YXIgbWF0Y2hTdHIgPSBTdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgaWYgKG1hdGNoU3RyID09PSAnJykgcngubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKHJ4Lmxhc3RJbmRleCksIGZ1bGxVbmljb2RlKTtcbiAgICAgIH1cbiAgICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9ICcnO1xuICAgICAgdmFyIG5leHRTb3VyY2VQb3NpdGlvbiA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0c1tpXTtcbiAgICAgICAgdmFyIG1hdGNoZWQgPSBTdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgdmFyIHBvc2l0aW9uID0gbWF4KG1pbih0b0ludGVnZXIocmVzdWx0LmluZGV4KSwgUy5sZW5ndGgpLCAwKTtcbiAgICAgICAgdmFyIGNhcHR1cmVzID0gW107XG4gICAgICAgIC8vIE5PVEU6IFRoaXMgaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICAvLyAgIGNhcHR1cmVzID0gcmVzdWx0LnNsaWNlKDEpLm1hcChtYXliZVRvU3RyaW5nKVxuICAgICAgICAvLyBidXQgZm9yIHNvbWUgcmVhc29uIGBuYXRpdmVTbGljZS5jYWxsKHJlc3VsdCwgMSwgcmVzdWx0Lmxlbmd0aClgIChjYWxsZWQgaW5cbiAgICAgICAgLy8gdGhlIHNsaWNlIHBvbHlmaWxsIHdoZW4gc2xpY2luZyBuYXRpdmUgYXJyYXlzKSBcImRvZXNuJ3Qgd29ya1wiIGluIHNhZmFyaSA5IGFuZFxuICAgICAgICAvLyBjYXVzZXMgYSBjcmFzaCAoaHR0cHM6Ly9wYXN0ZWJpbi5jb20vTjIxUXplUUEpIHdoZW4gdHJ5aW5nIHRvIGRlYnVnIGl0LlxuICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IHJlc3VsdC5sZW5ndGg7IGorKykgY2FwdHVyZXMucHVzaChtYXliZVRvU3RyaW5nKHJlc3VsdFtqXSkpO1xuICAgICAgICB2YXIgbmFtZWRDYXB0dXJlcyA9IHJlc3VsdC5ncm91cHM7XG4gICAgICAgIGlmIChmdW5jdGlvbmFsUmVwbGFjZSkge1xuICAgICAgICAgIHZhciByZXBsYWNlckFyZ3MgPSBbbWF0Y2hlZF0uY29uY2F0KGNhcHR1cmVzLCBwb3NpdGlvbiwgUyk7XG4gICAgICAgICAgaWYgKG5hbWVkQ2FwdHVyZXMgIT09IHVuZGVmaW5lZCkgcmVwbGFjZXJBcmdzLnB1c2gobmFtZWRDYXB0dXJlcyk7XG4gICAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0gU3RyaW5nKHJlcGxhY2VWYWx1ZS5hcHBseSh1bmRlZmluZWQsIHJlcGxhY2VyQXJncykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcGxhY2VtZW50ID0gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIFMsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFtZWRDYXB0dXJlcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zaXRpb24gPj0gbmV4dFNvdXJjZVBvc2l0aW9uKSB7XG4gICAgICAgICAgYWNjdW11bGF0ZWRSZXN1bHQgKz0gUy5zbGljZShuZXh0U291cmNlUG9zaXRpb24sIHBvc2l0aW9uKSArIHJlcGxhY2VtZW50O1xuICAgICAgICAgIG5leHRTb3VyY2VQb3NpdGlvbiA9IHBvc2l0aW9uICsgbWF0Y2hlZC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZFJlc3VsdCArIFMuc2xpY2UobmV4dFNvdXJjZVBvc2l0aW9uKTtcbiAgICB9XG4gIF07XG5cbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXRzdWJzdGl0dXRpb25cbiAgZnVuY3Rpb24gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlbWVudCkge1xuICAgIHZhciB0YWlsUG9zID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICB2YXIgbSA9IGNhcHR1cmVzLmxlbmd0aDtcbiAgICB2YXIgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEO1xuICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5hbWVkQ2FwdHVyZXMgPSB0b09iamVjdChuYW1lZENhcHR1cmVzKTtcbiAgICAgIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MUztcbiAgICB9XG4gICAgcmV0dXJuICRyZXBsYWNlLmNhbGwocmVwbGFjZW1lbnQsIHN5bWJvbHMsIGZ1bmN0aW9uIChtYXRjaCwgY2gpIHtcbiAgICAgIHZhciBjYXB0dXJlO1xuICAgICAgc3dpdGNoIChjaC5jaGFyQXQoMCkpIHtcbiAgICAgICAgY2FzZSAnJCc6IHJldHVybiAnJCc7XG4gICAgICAgIGNhc2UgJyYnOiByZXR1cm4gbWF0Y2hlZDtcbiAgICAgICAgY2FzZSAnYCc6IHJldHVybiBzdHIuc2xpY2UoMCwgcG9zaXRpb24pO1xuICAgICAgICBjYXNlIFwiJ1wiOiByZXR1cm4gc3RyLnNsaWNlKHRhaWxQb3MpO1xuICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgICBjYXB0dXJlID0gbmFtZWRDYXB0dXJlc1tjaC5zbGljZSgxLCAtMSldO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiAvLyBcXGRcXGQ/XG4gICAgICAgICAgdmFyIG4gPSArY2g7XG4gICAgICAgICAgaWYgKG4gPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgICBpZiAobiA+IG0pIHtcbiAgICAgICAgICAgIHZhciBmID0gZmxvb3IobiAvIDEwKTtcbiAgICAgICAgICAgIGlmIChmID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICBpZiAoZiA8PSBtKSByZXR1cm4gY2FwdHVyZXNbZiAtIDFdID09PSB1bmRlZmluZWQgPyBjaC5jaGFyQXQoMSkgOiBjYXB0dXJlc1tmIC0gMV0gKyBjaC5jaGFyQXQoMSk7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tuIC0gMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FwdHVyZSA9PT0gdW5kZWZpbmVkID8gJycgOiBjYXB0dXJlO1xuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgc2FtZVZhbHVlID0gcmVxdWlyZSgnLi9fc2FtZS12YWx1ZScpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xuXG4vLyBAQHNlYXJjaCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdzZWFyY2gnLCAxLCBmdW5jdGlvbiAoZGVmaW5lZCwgU0VBUkNILCAkc2VhcmNoLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5zZWFyY2hgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuc2VhcmNoXG4gICAgZnVuY3Rpb24gc2VhcmNoKHJlZ2V4cCkge1xuICAgICAgdmFyIE8gPSBkZWZpbmVkKHRoaXMpO1xuICAgICAgdmFyIGZuID0gcmVnZXhwID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHJlZ2V4cFtTRUFSQ0hdO1xuICAgICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWQgPyBmbi5jYWxsKHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbU0VBUkNIXShTdHJpbmcoTykpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEBzZWFyY2hdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAc2VhcmNoXG4gICAgZnVuY3Rpb24gKHJlZ2V4cCkge1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZSgkc2VhcmNoLCByZWdleHAsIHRoaXMpO1xuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QocmVnZXhwKTtcbiAgICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgICAgdmFyIHByZXZpb3VzTGFzdEluZGV4ID0gcngubGFzdEluZGV4O1xuICAgICAgaWYgKCFzYW1lVmFsdWUocHJldmlvdXNMYXN0SW5kZXgsIDApKSByeC5sYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIHJlc3VsdCA9IHJlZ0V4cEV4ZWMocngsIFMpO1xuICAgICAgaWYgKCFzYW1lVmFsdWUocngubGFzdEluZGV4LCBwcmV2aW91c0xhc3RJbmRleCkpIHJ4Lmxhc3RJbmRleCA9IHByZXZpb3VzTGFzdEluZGV4O1xuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gbnVsbCA/IC0xIDogcmVzdWx0LmluZGV4O1xuICAgIH1cbiAgXTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHdlYWsgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXdlYWsnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBXRUFLX1NFVCA9ICdXZWFrU2V0JztcblxuLy8gMjMuNCBXZWFrU2V0IE9iamVjdHNcbnJlcXVpcmUoJy4vX2NvbGxlY3Rpb24nKShXRUFLX1NFVCwgZnVuY3Rpb24gKGdldCkge1xuICByZXR1cm4gZnVuY3Rpb24gV2Vha1NldCgpIHsgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7IH07XG59LCB7XG4gIC8vIDIzLjQuMy4xIFdlYWtTZXQucHJvdG90eXBlLmFkZCh2YWx1ZSlcbiAgYWRkOiBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICByZXR1cm4gd2Vhay5kZWYodmFsaWRhdGUodGhpcywgV0VBS19TRVQpLCB2YWx1ZSwgdHJ1ZSk7XG4gIH1cbn0sIHdlYWssIGZhbHNlLCB0cnVlKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHR5cGVkID0gcmVxdWlyZSgnLi9fdHlwZWQnKTtcbnZhciBidWZmZXIgPSByZXF1aXJlKCcuL190eXBlZC1idWZmZXInKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIEFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuQXJyYXlCdWZmZXI7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyICRBcnJheUJ1ZmZlciA9IGJ1ZmZlci5BcnJheUJ1ZmZlcjtcbnZhciAkRGF0YVZpZXcgPSBidWZmZXIuRGF0YVZpZXc7XG52YXIgJGlzVmlldyA9ICR0eXBlZC5BQlYgJiYgQXJyYXlCdWZmZXIuaXNWaWV3O1xudmFyICRzbGljZSA9ICRBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2U7XG52YXIgVklFVyA9ICR0eXBlZC5WSUVXO1xudmFyIEFSUkFZX0JVRkZFUiA9ICdBcnJheUJ1ZmZlcic7XG5cbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogKEFycmF5QnVmZmVyICE9PSAkQXJyYXlCdWZmZXIpLCB7IEFycmF5QnVmZmVyOiAkQXJyYXlCdWZmZXIgfSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogISR0eXBlZC5DT05TVFIsIEFSUkFZX0JVRkZFUiwge1xuICAvLyAyNC4xLjMuMSBBcnJheUJ1ZmZlci5pc1ZpZXcoYXJnKVxuICBpc1ZpZXc6IGZ1bmN0aW9uIGlzVmlldyhpdCkge1xuICAgIHJldHVybiAkaXNWaWV3ICYmICRpc1ZpZXcoaXQpIHx8IGlzT2JqZWN0KGl0KSAmJiBWSUVXIGluIGl0O1xuICB9XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlUgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICFuZXcgJEFycmF5QnVmZmVyKDIpLnNsaWNlKDEsIHVuZGVmaW5lZCkuYnl0ZUxlbmd0aDtcbn0pLCBBUlJBWV9CVUZGRVIsIHtcbiAgLy8gMjQuMS40LjMgQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHNsaWNlOiBmdW5jdGlvbiBzbGljZShzdGFydCwgZW5kKSB7XG4gICAgaWYgKCRzbGljZSAhPT0gdW5kZWZpbmVkICYmIGVuZCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJHNsaWNlLmNhbGwoYW5PYmplY3QodGhpcyksIHN0YXJ0KTsgLy8gRkYgZml4XG4gICAgdmFyIGxlbiA9IGFuT2JqZWN0KHRoaXMpLmJ5dGVMZW5ndGg7XG4gICAgdmFyIGZpcnN0ID0gdG9BYnNvbHV0ZUluZGV4KHN0YXJ0LCBsZW4pO1xuICAgIHZhciBmaW4gPSB0b0Fic29sdXRlSW5kZXgoZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiBlbmQsIGxlbik7XG4gICAgdmFyIHJlc3VsdCA9IG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRBcnJheUJ1ZmZlcikpKHRvTGVuZ3RoKGZpbiAtIGZpcnN0KSk7XG4gICAgdmFyIHZpZXdTID0gbmV3ICREYXRhVmlldyh0aGlzKTtcbiAgICB2YXIgdmlld1QgPSBuZXcgJERhdGFWaWV3KHJlc3VsdCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoZmlyc3QgPCBmaW4pIHtcbiAgICAgIHZpZXdULnNldFVpbnQ4KGluZGV4KyssIHZpZXdTLmdldFVpbnQ4KGZpcnN0KyspKTtcbiAgICB9IHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuXG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKEFSUkFZX0JVRkZFUik7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fdHlwZWQnKS5BQlYsIHtcbiAgRGF0YVZpZXc6IHJlcXVpcmUoJy4vX3R5cGVkLWJ1ZmZlcicpLkRhdGFWaWV3XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0ludDgnLCAxLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gSW50OEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ1VpbnQ4JywgMSwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQ4QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDgnLCAxLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVWludDhDbGFtcGVkQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0sIHRydWUpO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnSW50MTYnLCAyLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gSW50MTZBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdVaW50MTYnLCAyLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVWludDE2QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnSW50MzInLCA0LCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gSW50MzJBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdVaW50MzInLCA0LCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVWludDMyQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnRmxvYXQzMicsIDQsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBGbG9hdDMyQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnRmxvYXQ2NCcsIDgsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBGbG9hdDY0QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwiLy8gMjYuMS4xIFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJndW1lbnQsIGFyZ3VtZW50c0xpc3QpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHJBcHBseSA9IChyZXF1aXJlKCcuL19nbG9iYWwnKS5SZWZsZWN0IHx8IHt9KS5hcHBseTtcbnZhciBmQXBwbHkgPSBGdW5jdGlvbi5hcHBseTtcbi8vIE1TIEVkZ2UgYXJndW1lbnRzTGlzdCBhcmd1bWVudCBpcyBvcHRpb25hbFxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJBcHBseShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSksICdSZWZsZWN0Jywge1xuICBhcHBseTogZnVuY3Rpb24gYXBwbHkodGFyZ2V0LCB0aGlzQXJndW1lbnQsIGFyZ3VtZW50c0xpc3QpIHtcbiAgICB2YXIgVCA9IGFGdW5jdGlvbih0YXJnZXQpO1xuICAgIHZhciBMID0gYW5PYmplY3QoYXJndW1lbnRzTGlzdCk7XG4gICAgcmV0dXJuIHJBcHBseSA/IHJBcHBseShULCB0aGlzQXJndW1lbnQsIEwpIDogZkFwcGx5LmNhbGwoVCwgdGhpc0FyZ3VtZW50LCBMKTtcbiAgfVxufSk7XG4iLCIvLyAyNi4xLjIgUmVmbGVjdC5jb25zdHJ1Y3QodGFyZ2V0LCBhcmd1bWVudHNMaXN0IFssIG5ld1RhcmdldF0pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi9fYmluZCcpO1xudmFyIHJDb25zdHJ1Y3QgPSAocmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdCB8fCB7fSkuY29uc3RydWN0O1xuXG4vLyBNUyBFZGdlIHN1cHBvcnRzIG9ubHkgMiBhcmd1bWVudHMgYW5kIGFyZ3VtZW50c0xpc3QgYXJndW1lbnQgaXMgb3B0aW9uYWxcbi8vIEZGIE5pZ2h0bHkgc2V0cyB0aGlyZCBhcmd1bWVudCBhcyBgbmV3LnRhcmdldGAsIGJ1dCBkb2VzIG5vdCBjcmVhdGUgYHRoaXNgIGZyb20gaXRcbnZhciBORVdfVEFSR0VUX0JVRyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRigpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gIShyQ29uc3RydWN0KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgW10sIEYpIGluc3RhbmNlb2YgRik7XG59KTtcbnZhciBBUkdTX0JVRyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJDb25zdHJ1Y3QoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChORVdfVEFSR0VUX0JVRyB8fCBBUkdTX0JVRyksICdSZWZsZWN0Jywge1xuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIGNvbnN0cnVjdChUYXJnZXQsIGFyZ3MgLyogLCBuZXdUYXJnZXQgKi8pIHtcbiAgICBhRnVuY3Rpb24oVGFyZ2V0KTtcbiAgICBhbk9iamVjdChhcmdzKTtcbiAgICB2YXIgbmV3VGFyZ2V0ID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyBUYXJnZXQgOiBhRnVuY3Rpb24oYXJndW1lbnRzWzJdKTtcbiAgICBpZiAoQVJHU19CVUcgJiYgIU5FV19UQVJHRVRfQlVHKSByZXR1cm4gckNvbnN0cnVjdChUYXJnZXQsIGFyZ3MsIG5ld1RhcmdldCk7XG4gICAgaWYgKFRhcmdldCA9PSBuZXdUYXJnZXQpIHtcbiAgICAgIC8vIHcvbyBhbHRlcmVkIG5ld1RhcmdldCwgb3B0aW1pemF0aW9uIGZvciAwLTQgYXJndW1lbnRzXG4gICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBUYXJnZXQoKTtcbiAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdKTtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgICAgIH1cbiAgICAgIC8vIHcvbyBhbHRlcmVkIG5ld1RhcmdldCwgbG90IG9mIGFyZ3VtZW50cyBjYXNlXG4gICAgICB2YXIgJGFyZ3MgPSBbbnVsbF07XG4gICAgICAkYXJncy5wdXNoLmFwcGx5KCRhcmdzLCBhcmdzKTtcbiAgICAgIHJldHVybiBuZXcgKGJpbmQuYXBwbHkoVGFyZ2V0LCAkYXJncykpKCk7XG4gICAgfVxuICAgIC8vIHdpdGggYWx0ZXJlZCBuZXdUYXJnZXQsIG5vdCBzdXBwb3J0IGJ1aWx0LWluIGNvbnN0cnVjdG9yc1xuICAgIHZhciBwcm90byA9IG5ld1RhcmdldC5wcm90b3R5cGU7XG4gICAgdmFyIGluc3RhbmNlID0gY3JlYXRlKGlzT2JqZWN0KHByb3RvKSA/IHByb3RvIDogT2JqZWN0LnByb3RvdHlwZSk7XG4gICAgdmFyIHJlc3VsdCA9IEZ1bmN0aW9uLmFwcGx5LmNhbGwoVGFyZ2V0LCBpbnN0YW5jZSwgYXJncyk7XG4gICAgcmV0dXJuIGlzT2JqZWN0KHJlc3VsdCkgPyByZXN1bHQgOiBpbnN0YW5jZTtcbiAgfVxufSk7XG4iLCIvLyAyNi4xLjMgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKVxudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcblxuLy8gTVMgRWRnZSBoYXMgYnJva2VuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkgLSB0aHJvd2luZyBpbnN0ZWFkIG9mIHJldHVybmluZyBmYWxzZVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoZFAuZih7fSwgMSwgeyB2YWx1ZTogMSB9KSwgMSwgeyB2YWx1ZTogMiB9KTtcbn0pLCAnUmVmbGVjdCcsIHtcbiAgZGVmaW5lUHJvcGVydHk6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpIHtcbiAgICBhbk9iamVjdCh0YXJnZXQpO1xuICAgIHByb3BlcnR5S2V5ID0gdG9QcmltaXRpdmUocHJvcGVydHlLZXksIHRydWUpO1xuICAgIGFuT2JqZWN0KGF0dHJpYnV0ZXMpO1xuICAgIHRyeSB7XG4gICAgICBkUC5mKHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG4iLCIvLyAyNi4xLjQgUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgZGVsZXRlUHJvcGVydHk6IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICB2YXIgZGVzYyA9IGdPUEQoYW5PYmplY3QodGFyZ2V0KSwgcHJvcGVydHlLZXkpO1xuICAgIHJldHVybiBkZXNjICYmICFkZXNjLmNvbmZpZ3VyYWJsZSA/IGZhbHNlIDogZGVsZXRlIHRhcmdldFtwcm9wZXJ0eUtleV07XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjYuMS41IFJlZmxlY3QuZW51bWVyYXRlKHRhcmdldClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBFbnVtZXJhdGUgPSBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IGFuT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgdmFyIGtleXMgPSB0aGlzLl9rID0gW107ICAgICAgLy8ga2V5c1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBpdGVyYXRlZCkga2V5cy5wdXNoKGtleSk7XG59O1xucmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKShFbnVtZXJhdGUsICdPYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdmFyIGtleXMgPSB0aGF0Ll9rO1xuICB2YXIga2V5O1xuICBkbyB7XG4gICAgaWYgKHRoYXQuX2kgPj0ga2V5cy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfSB3aGlsZSAoISgoa2V5ID0ga2V5c1t0aGF0Ll9pKytdKSBpbiB0aGF0Ll90KSk7XG4gIHJldHVybiB7IHZhbHVlOiBrZXksIGRvbmU6IGZhbHNlIH07XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBlbnVtZXJhdGU6IGZ1bmN0aW9uIGVudW1lcmF0ZSh0YXJnZXQpIHtcbiAgICByZXR1cm4gbmV3IEVudW1lcmF0ZSh0YXJnZXQpO1xuICB9XG59KTtcbiIsIi8vIDI2LjEuNiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3BlcnR5S2V5IFssIHJlY2VpdmVyXSlcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xuXG5mdW5jdGlvbiBnZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSAvKiAsIHJlY2VpdmVyICovKSB7XG4gIHZhciByZWNlaXZlciA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdGFyZ2V0IDogYXJndW1lbnRzWzJdO1xuICB2YXIgZGVzYywgcHJvdG87XG4gIGlmIChhbk9iamVjdCh0YXJnZXQpID09PSByZWNlaXZlcikgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eUtleV07XG4gIGlmIChkZXNjID0gZ09QRC5mKHRhcmdldCwgcHJvcGVydHlLZXkpKSByZXR1cm4gaGFzKGRlc2MsICd2YWx1ZScpXG4gICAgPyBkZXNjLnZhbHVlXG4gICAgOiBkZXNjLmdldCAhPT0gdW5kZWZpbmVkXG4gICAgICA/IGRlc2MuZ2V0LmNhbGwocmVjZWl2ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgaWYgKGlzT2JqZWN0KHByb3RvID0gZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSkpIHJldHVybiBnZXQocHJvdG8sIHByb3BlcnR5S2V5LCByZWNlaXZlcik7XG59XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHsgZ2V0OiBnZXQgfSk7XG4iLCIvLyAyNi4xLjcgUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSlcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgcmV0dXJuIGdPUEQuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS44IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBnZXRQcm90byA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGdldFByb3RvdHlwZU9mOiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZih0YXJnZXQpIHtcbiAgICByZXR1cm4gZ2V0UHJvdG8oYW5PYmplY3QodGFyZ2V0KSk7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS45IFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcGVydHlLZXkpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGhhczogZnVuY3Rpb24gaGFzKHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICByZXR1cm4gcHJvcGVydHlLZXkgaW4gdGFyZ2V0O1xuICB9XG59KTtcbiIsIi8vIDI2LjEuMTAgUmVmbGVjdC5pc0V4dGVuc2libGUodGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyICRpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGlzRXh0ZW5zaWJsZTogZnVuY3Rpb24gaXNFeHRlbnNpYmxlKHRhcmdldCkge1xuICAgIGFuT2JqZWN0KHRhcmdldCk7XG4gICAgcmV0dXJuICRpc0V4dGVuc2libGUgPyAkaXNFeHRlbnNpYmxlKHRhcmdldCkgOiB0cnVlO1xuICB9XG59KTtcbiIsIi8vIDI2LjEuMTEgUmVmbGVjdC5vd25LZXlzKHRhcmdldClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHsgb3duS2V5czogcmVxdWlyZSgnLi9fb3duLWtleXMnKSB9KTtcbiIsIi8vIDI2LjEuMTIgUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh0YXJnZXQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgJHByZXZlbnRFeHRlbnNpb25zID0gT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIHByZXZlbnRFeHRlbnNpb25zOiBmdW5jdGlvbiBwcmV2ZW50RXh0ZW5zaW9ucyh0YXJnZXQpIHtcbiAgICBhbk9iamVjdCh0YXJnZXQpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoJHByZXZlbnRFeHRlbnNpb25zKSAkcHJldmVudEV4dGVuc2lvbnModGFyZ2V0KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS4xMyBSZWZsZWN0LnNldCh0YXJnZXQsIHByb3BlcnR5S2V5LCBWIFssIHJlY2VpdmVyXSlcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcblxuZnVuY3Rpb24gc2V0KHRhcmdldCwgcHJvcGVydHlLZXksIFYgLyogLCByZWNlaXZlciAqLykge1xuICB2YXIgcmVjZWl2ZXIgPSBhcmd1bWVudHMubGVuZ3RoIDwgNCA/IHRhcmdldCA6IGFyZ3VtZW50c1szXTtcbiAgdmFyIG93bkRlc2MgPSBnT1BELmYoYW5PYmplY3QodGFyZ2V0KSwgcHJvcGVydHlLZXkpO1xuICB2YXIgZXhpc3RpbmdEZXNjcmlwdG9yLCBwcm90bztcbiAgaWYgKCFvd25EZXNjKSB7XG4gICAgaWYgKGlzT2JqZWN0KHByb3RvID0gZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSkpIHtcbiAgICAgIHJldHVybiBzZXQocHJvdG8sIHByb3BlcnR5S2V5LCBWLCByZWNlaXZlcik7XG4gICAgfVxuICAgIG93bkRlc2MgPSBjcmVhdGVEZXNjKDApO1xuICB9XG4gIGlmIChoYXMob3duRGVzYywgJ3ZhbHVlJykpIHtcbiAgICBpZiAob3duRGVzYy53cml0YWJsZSA9PT0gZmFsc2UgfHwgIWlzT2JqZWN0KHJlY2VpdmVyKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChleGlzdGluZ0Rlc2NyaXB0b3IgPSBnT1BELmYocmVjZWl2ZXIsIHByb3BlcnR5S2V5KSkge1xuICAgICAgaWYgKGV4aXN0aW5nRGVzY3JpcHRvci5nZXQgfHwgZXhpc3RpbmdEZXNjcmlwdG9yLnNldCB8fCBleGlzdGluZ0Rlc2NyaXB0b3Iud3JpdGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgICBleGlzdGluZ0Rlc2NyaXB0b3IudmFsdWUgPSBWO1xuICAgICAgZFAuZihyZWNlaXZlciwgcHJvcGVydHlLZXksIGV4aXN0aW5nRGVzY3JpcHRvcik7XG4gICAgfSBlbHNlIGRQLmYocmVjZWl2ZXIsIHByb3BlcnR5S2V5LCBjcmVhdGVEZXNjKDAsIFYpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gb3duRGVzYy5zZXQgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogKG93bkRlc2Muc2V0LmNhbGwocmVjZWl2ZXIsIFYpLCB0cnVlKTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0JywgeyBzZXQ6IHNldCB9KTtcbiIsIi8vIDI2LjEuMTQgUmVmbGVjdC5zZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBzZXRQcm90byA9IHJlcXVpcmUoJy4vX3NldC1wcm90bycpO1xuXG5pZiAoc2V0UHJvdG8pICRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgc2V0UHJvdG90eXBlT2Y6IGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG8pIHtcbiAgICBzZXRQcm90by5jaGVjayh0YXJnZXQsIHByb3RvKTtcbiAgICB0cnkge1xuICAgICAgc2V0UHJvdG8uc2V0KHRhcmdldCwgcHJvdG8pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9BcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKGVsIC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiAkaW5jbHVkZXModGhpcywgZWwsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdpbmNsdWRlcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1mbGF0TWFwLyNzZWMtQXJyYXkucHJvdG90eXBlLmZsYXRNYXBcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZmxhdHRlbkludG9BcnJheSA9IHJlcXVpcmUoJy4vX2ZsYXR0ZW4taW50by1hcnJheScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHtcbiAgZmxhdE1hcDogZnVuY3Rpb24gZmxhdE1hcChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIHNvdXJjZUxlbiwgQTtcbiAgICBhRnVuY3Rpb24oY2FsbGJhY2tmbik7XG4gICAgc291cmNlTGVuID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIEEgPSBhcnJheVNwZWNpZXNDcmVhdGUoTywgMCk7XG4gICAgZmxhdHRlbkludG9BcnJheShBLCBPLCBPLCBzb3VyY2VMZW4sIDAsIDEsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnZmxhdE1hcCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1mbGF0TWFwLyNzZWMtQXJyYXkucHJvdG90eXBlLmZsYXR0ZW5cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZmxhdHRlbkludG9BcnJheSA9IHJlcXVpcmUoJy4vX2ZsYXR0ZW4taW50by1hcnJheScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHtcbiAgZmxhdHRlbjogZnVuY3Rpb24gZmxhdHRlbigvKiBkZXB0aEFyZyA9IDEgKi8pIHtcbiAgICB2YXIgZGVwdGhBcmcgPSBhcmd1bWVudHNbMF07XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgc291cmNlTGVuID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBBID0gYXJyYXlTcGVjaWVzQ3JlYXRlKE8sIDApO1xuICAgIGZsYXR0ZW5JbnRvQXJyYXkoQSwgTywgTywgc291cmNlTGVuLCAwLCBkZXB0aEFyZyA9PT0gdW5kZWZpbmVkID8gMSA6IHRvSW50ZWdlcihkZXB0aEFyZykpO1xuICAgIHJldHVybiBBO1xuICB9XG59KTtcblxucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoJ2ZsYXR0ZW4nKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzYnluZW5zL1N0cmluZy5wcm90b3R5cGUuYXRcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnU3RyaW5nJywge1xuICBhdDogZnVuY3Rpb24gYXQocG9zKSB7XG4gICAgcmV0dXJuICRhdCh0aGlzLCBwb3MpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYWQgPSByZXF1aXJlKCcuL19zdHJpbmctcGFkJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMjgwXG52YXIgV0VCS0lUX0JVRyA9IC9WZXJzaW9uXFwvMTBcXC5cXGQrKFxcLlxcZCspPyggTW9iaWxlXFwvXFx3Kyk/IFNhZmFyaVxcLy8udGVzdCh1c2VyQWdlbnQpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIFdFQktJVF9CVUcsICdTdHJpbmcnLCB7XG4gIHBhZFN0YXJ0OiBmdW5jdGlvbiBwYWRTdGFydChtYXhMZW5ndGggLyogLCBmaWxsU3RyaW5nID0gJyAnICovKSB7XG4gICAgcmV0dXJuICRwYWQodGhpcywgbWF4TGVuZ3RoLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc3RyaW5nLXBhZC1zdGFydC1lbmRcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhZCA9IHJlcXVpcmUoJy4vX3N0cmluZy1wYWQnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuL191c2VyLWFnZW50Jyk7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8yODBcbnZhciBXRUJLSVRfQlVHID0gL1ZlcnNpb25cXC8xMFxcLlxcZCsoXFwuXFxkKyk/KCBNb2JpbGVcXC9cXHcrKT8gU2FmYXJpXFwvLy50ZXN0KHVzZXJBZ2VudCk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogV0VCS0lUX0JVRywgJ1N0cmluZycsIHtcbiAgcGFkRW5kOiBmdW5jdGlvbiBwYWRFbmQobWF4TGVuZ3RoIC8qICwgZmlsbFN0cmluZyA9ICcgJyAqLykge1xuICAgIHJldHVybiAkcGFkKHRoaXMsIG1heExlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIGZhbHNlKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vc2VibWFya2JhZ2UvZWNtYXNjcmlwdC1zdHJpbmctbGVmdC1yaWdodC10cmltXG5yZXF1aXJlKCcuL19zdHJpbmctdHJpbScpKCd0cmltTGVmdCcsIGZ1bmN0aW9uICgkdHJpbSkge1xuICByZXR1cm4gZnVuY3Rpb24gdHJpbUxlZnQoKSB7XG4gICAgcmV0dXJuICR0cmltKHRoaXMsIDEpO1xuICB9O1xufSwgJ3RyaW1TdGFydCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3NlYm1hcmtiYWdlL2VjbWFzY3JpcHQtc3RyaW5nLWxlZnQtcmlnaHQtdHJpbVxucmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKSgndHJpbVJpZ2h0JywgZnVuY3Rpb24gKCR0cmltKSB7XG4gIHJldHVybiBmdW5jdGlvbiB0cmltUmlnaHQoKSB7XG4gICAgcmV0dXJuICR0cmltKHRoaXMsIDIpO1xuICB9O1xufSwgJ3RyaW1FbmQnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vU3RyaW5nLnByb3RvdHlwZS5tYXRjaEFsbC9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgZ2V0RmxhZ3MgPSByZXF1aXJlKCcuL19mbGFncycpO1xudmFyIFJlZ0V4cFByb3RvID0gUmVnRXhwLnByb3RvdHlwZTtcblxudmFyICRSZWdFeHBTdHJpbmdJdGVyYXRvciA9IGZ1bmN0aW9uIChyZWdleHAsIHN0cmluZykge1xuICB0aGlzLl9yID0gcmVnZXhwO1xuICB0aGlzLl9zID0gc3RyaW5nO1xufTtcblxucmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKSgkUmVnRXhwU3RyaW5nSXRlcmF0b3IsICdSZWdFeHAgU3RyaW5nJywgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIG1hdGNoID0gdGhpcy5fci5leGVjKHRoaXMuX3MpO1xuICByZXR1cm4geyB2YWx1ZTogbWF0Y2gsIGRvbmU6IG1hdGNoID09PSBudWxsIH07XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIG1hdGNoQWxsOiBmdW5jdGlvbiBtYXRjaEFsbChyZWdleHApIHtcbiAgICBkZWZpbmVkKHRoaXMpO1xuICAgIGlmICghaXNSZWdFeHAocmVnZXhwKSkgdGhyb3cgVHlwZUVycm9yKHJlZ2V4cCArICcgaXMgbm90IGEgcmVnZXhwIScpO1xuICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgIHZhciBmbGFncyA9ICdmbGFncycgaW4gUmVnRXhwUHJvdG8gPyBTdHJpbmcocmVnZXhwLmZsYWdzKSA6IGdldEZsYWdzLmNhbGwocmVnZXhwKTtcbiAgICB2YXIgcnggPSBuZXcgUmVnRXhwKHJlZ2V4cC5zb3VyY2UsIH5mbGFncy5pbmRleE9mKCdnJykgPyBmbGFncyA6ICdnJyArIGZsYWdzKTtcbiAgICByeC5sYXN0SW5kZXggPSB0b0xlbmd0aChyZWdleHAubGFzdEluZGV4KTtcbiAgICByZXR1cm4gbmV3ICRSZWdFeHBTdHJpbmdJdGVyYXRvcihyeCwgUyk7XG4gIH1cbn0pO1xuIiwicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdvYnNlcnZhYmxlJyk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtdmFsdWVzLWVudHJpZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHZhbHVlcyA9IHJlcXVpcmUoJy4vX29iamVjdC10by1hcnJheScpKGZhbHNlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7XG4gIHZhbHVlczogZnVuY3Rpb24gdmFsdWVzKGl0KSB7XG4gICAgcmV0dXJuICR2YWx1ZXMoaXQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG5cbi8vIEIuMi4yLjIgT2JqZWN0LnByb3RvdHlwZS5fX2RlZmluZUdldHRlcl9fKFAsIGdldHRlcilcbnJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgJGV4cG9ydCgkZXhwb3J0LlAgKyByZXF1aXJlKCcuL19vYmplY3QtZm9yY2VkLXBhbScpLCAnT2JqZWN0Jywge1xuICBfX2RlZmluZUdldHRlcl9fOiBmdW5jdGlvbiBfX2RlZmluZUdldHRlcl9fKFAsIGdldHRlcikge1xuICAgICRkZWZpbmVQcm9wZXJ0eS5mKHRvT2JqZWN0KHRoaXMpLCBQLCB7IGdldDogYUZ1bmN0aW9uKGdldHRlciksIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xuXG4vLyBCLjIuMi4zIE9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXyhQLCBzZXR0ZXIpXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19kZWZpbmVTZXR0ZXJfXzogZnVuY3Rpb24gX19kZWZpbmVTZXR0ZXJfXyhQLCBzZXR0ZXIpIHtcbiAgICAkZGVmaW5lUHJvcGVydHkuZih0b09iamVjdCh0aGlzKSwgUCwgeyBzZXQ6IGFGdW5jdGlvbihzZXR0ZXIpLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xuXG4vLyBCLjIuMi40IE9iamVjdC5wcm90b3R5cGUuX19sb29rdXBHZXR0ZXJfXyhQKVxucmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAkZXhwb3J0KCRleHBvcnQuUCArIHJlcXVpcmUoJy4vX29iamVjdC1mb3JjZWQtcGFtJyksICdPYmplY3QnLCB7XG4gIF9fbG9va3VwR2V0dGVyX186IGZ1bmN0aW9uIF9fbG9va3VwR2V0dGVyX18oUCkge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIEsgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgICB2YXIgRDtcbiAgICBkbyB7XG4gICAgICBpZiAoRCA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBLKSkgcmV0dXJuIEQuZ2V0O1xuICAgIH0gd2hpbGUgKE8gPSBnZXRQcm90b3R5cGVPZihPKSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xuXG4vLyBCLjIuMi41IE9iamVjdC5wcm90b3R5cGUuX19sb29rdXBTZXR0ZXJfXyhQKVxucmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAkZXhwb3J0KCRleHBvcnQuUCArIHJlcXVpcmUoJy4vX29iamVjdC1mb3JjZWQtcGFtJyksICdPYmplY3QnLCB7XG4gIF9fbG9va3VwU2V0dGVyX186IGZ1bmN0aW9uIF9fbG9va3VwU2V0dGVyX18oUCkge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIEsgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgICB2YXIgRDtcbiAgICBkbyB7XG4gICAgICBpZiAoRCA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBLKSkgcmV0dXJuIEQuc2V0O1xuICAgIH0gd2hpbGUgKE8gPSBnZXRQcm90b3R5cGVPZihPKSk7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdNYXAnLCB7IHRvSlNPTjogcmVxdWlyZSgnLi9fY29sbGVjdGlvbi10by1qc29uJykoJ01hcCcpIH0pO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdTZXQnLCB7IHRvSlNPTjogcmVxdWlyZSgnLi9fY29sbGVjdGlvbi10by1qc29uJykoJ1NldCcpIH0pO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtbWFwLm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdNYXAnKTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXNldC5vZlxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tb2YnKSgnU2V0Jyk7XG4iLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy13ZWFrbWFwLm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdXZWFrTWFwJyk7XG4iLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy13ZWFrc2V0Lm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdXZWFrU2V0Jyk7XG4iLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1tYXAuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdNYXAnKTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXNldC5mcm9tXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1mcm9tJykoJ1NldCcpO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtd2Vha21hcC5mcm9tXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1mcm9tJykoJ1dlYWtNYXAnKTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWtzZXQuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdXZWFrU2V0Jyk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1nbG9iYWxcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5HLCB7IGdsb2JhbDogcmVxdWlyZSgnLi9fZ2xvYmFsJykgfSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1nbG9iYWxcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnU3lzdGVtJywgeyBnbG9iYWw6IHJlcXVpcmUoJy4vX2dsb2JhbCcpIH0pO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL2xqaGFyYi9wcm9wb3NhbC1pcy1lcnJvclxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdFcnJvcicsIHtcbiAgaXNFcnJvcjogZnVuY3Rpb24gaXNFcnJvcihpdCkge1xuICAgIHJldHVybiBjb2YoaXQpID09PSAnRXJyb3InO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgY2xhbXA6IGZ1bmN0aW9uIGNsYW1wKHgsIGxvd2VyLCB1cHBlcikge1xuICAgIHJldHVybiBNYXRoLm1pbih1cHBlciwgTWF0aC5tYXgobG93ZXIsIHgpKTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IERFR19QRVJfUkFEOiBNYXRoLlBJIC8gMTgwIH0pO1xuIiwiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBSQURfUEVSX0RFRyA9IDE4MCAvIE1hdGguUEk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgZGVncmVlczogZnVuY3Rpb24gZGVncmVlcyhyYWRpYW5zKSB7XG4gICAgcmV0dXJuIHJhZGlhbnMgKiBSQURfUEVSX0RFRztcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNjYWxlID0gcmVxdWlyZSgnLi9fbWF0aC1zY2FsZScpO1xudmFyIGZyb3VuZCA9IHJlcXVpcmUoJy4vX21hdGgtZnJvdW5kJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgZnNjYWxlOiBmdW5jdGlvbiBmc2NhbGUoeCwgaW5Mb3csIGluSGlnaCwgb3V0TG93LCBvdXRIaWdoKSB7XG4gICAgcmV0dXJuIGZyb3VuZChzY2FsZSh4LCBpbkxvdywgaW5IaWdoLCBvdXRMb3csIG91dEhpZ2gpKTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9CcmVuZGFuRWljaC80Mjk0ZDVjMjEyYTZkMjI1NDcwM1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBpYWRkaDogZnVuY3Rpb24gaWFkZGgoeDAsIHgxLCB5MCwgeTEpIHtcbiAgICB2YXIgJHgwID0geDAgPj4+IDA7XG4gICAgdmFyICR4MSA9IHgxID4+PiAwO1xuICAgIHZhciAkeTAgPSB5MCA+Pj4gMDtcbiAgICByZXR1cm4gJHgxICsgKHkxID4+PiAwKSArICgoJHgwICYgJHkwIHwgKCR4MCB8ICR5MCkgJiB+KCR4MCArICR5MCA+Pj4gMCkpID4+PiAzMSkgfCAwO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGlzdWJoOiBmdW5jdGlvbiBpc3ViaCh4MCwgeDEsIHkwLCB5MSkge1xuICAgIHZhciAkeDAgPSB4MCA+Pj4gMDtcbiAgICB2YXIgJHgxID0geDEgPj4+IDA7XG4gICAgdmFyICR5MCA9IHkwID4+PiAwO1xuICAgIHJldHVybiAkeDEgLSAoeTEgPj4+IDApIC0gKCh+JHgwICYgJHkwIHwgfigkeDAgXiAkeTApICYgJHgwIC0gJHkwID4+PiAwKSA+Pj4gMzEpIHwgMDtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9CcmVuZGFuRWljaC80Mjk0ZDVjMjEyYTZkMjI1NDcwM1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBpbXVsaDogZnVuY3Rpb24gaW11bGgodSwgdikge1xuICAgIHZhciBVSU5UMTYgPSAweGZmZmY7XG4gICAgdmFyICR1ID0gK3U7XG4gICAgdmFyICR2ID0gK3Y7XG4gICAgdmFyIHUwID0gJHUgJiBVSU5UMTY7XG4gICAgdmFyIHYwID0gJHYgJiBVSU5UMTY7XG4gICAgdmFyIHUxID0gJHUgPj4gMTY7XG4gICAgdmFyIHYxID0gJHYgPj4gMTY7XG4gICAgdmFyIHQgPSAodTEgKiB2MCA+Pj4gMCkgKyAodTAgKiB2MCA+Pj4gMTYpO1xuICAgIHJldHVybiB1MSAqIHYxICsgKHQgPj4gMTYpICsgKCh1MCAqIHYxID4+PiAwKSArICh0ICYgVUlOVDE2KSA+PiAxNik7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBSQURfUEVSX0RFRzogMTgwIC8gTWF0aC5QSSB9KTtcbiIsIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgREVHX1BFUl9SQUQgPSBNYXRoLlBJIC8gMTgwO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHJhZGlhbnM6IGZ1bmN0aW9uIHJhZGlhbnMoZGVncmVlcykge1xuICAgIHJldHVybiBkZWdyZWVzICogREVHX1BFUl9SQUQ7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBzY2FsZTogcmVxdWlyZSgnLi9fbWF0aC1zY2FsZScpIH0pO1xuIiwiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vQnJlbmRhbkVpY2gvNDI5NGQ1YzIxMmE2ZDIyNTQ3MDNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgdW11bGg6IGZ1bmN0aW9uIHVtdWxoKHUsIHYpIHtcbiAgICB2YXIgVUlOVDE2ID0gMHhmZmZmO1xuICAgIHZhciAkdSA9ICt1O1xuICAgIHZhciAkdiA9ICt2O1xuICAgIHZhciB1MCA9ICR1ICYgVUlOVDE2O1xuICAgIHZhciB2MCA9ICR2ICYgVUlOVDE2O1xuICAgIHZhciB1MSA9ICR1ID4+PiAxNjtcbiAgICB2YXIgdjEgPSAkdiA+Pj4gMTY7XG4gICAgdmFyIHQgPSAodTEgKiB2MCA+Pj4gMCkgKyAodTAgKiB2MCA+Pj4gMTYpO1xuICAgIHJldHVybiB1MSAqIHYxICsgKHQgPj4+IDE2KSArICgodTAgKiB2MSA+Pj4gMCkgKyAodCAmIFVJTlQxNikgPj4+IDE2KTtcbiAgfVxufSk7XG4iLCIvLyBodHRwOi8vamZiYXN0aWVuLmdpdGh1Yi5pby9wYXBlcnMvTWF0aC5zaWduYml0Lmh0bWxcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgc2lnbmJpdDogZnVuY3Rpb24gc2lnbmJpdCh4KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgcmV0dXJuICh4ID0gK3gpICE9IHggPyB4IDogeCA9PSAwID8gMSAvIHggPT0gSW5maW5pdHkgOiB4ID4gMDtcbn0gfSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLWZpbmFsbHlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdQcm9taXNlJywgeyAnZmluYWxseSc6IGZ1bmN0aW9uIChvbkZpbmFsbHkpIHtcbiAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgY29yZS5Qcm9taXNlIHx8IGdsb2JhbC5Qcm9taXNlKTtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2Ygb25GaW5hbGx5ID09ICdmdW5jdGlvbic7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgfSA6IG9uRmluYWxseSxcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHlcbiAgKTtcbn0gfSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLXRyeVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1Byb21pc2UnLCB7ICd0cnknOiBmdW5jdGlvbiAoY2FsbGJhY2tmbikge1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gcGVyZm9ybShjYWxsYmFja2ZuKTtcbiAgKHJlc3VsdC5lID8gcHJvbWlzZUNhcGFiaWxpdHkucmVqZWN0IDogcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZSkocmVzdWx0LnYpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn0gfSk7XG4iLCJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xudmFyIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEgPSBtZXRhZGF0YS5zZXQ7XG5cbm1ldGFkYXRhLmV4cCh7IGRlZmluZU1ldGFkYXRhOiBmdW5jdGlvbiBkZWZpbmVNZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgdGFyZ2V0LCB0YXJnZXRLZXkpIHtcbiAgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgYW5PYmplY3QodGFyZ2V0KSwgdG9NZXRhS2V5KHRhcmdldEtleSkpO1xufSB9KTtcbiIsInZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG52YXIgZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCA9IG1ldGFkYXRhLm1hcDtcbnZhciBzdG9yZSA9IG1ldGFkYXRhLnN0b3JlO1xuXG5tZXRhZGF0YS5leHAoeyBkZWxldGVNZXRhZGF0YTogZnVuY3Rpb24gZGVsZXRlTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICB2YXIgdGFyZ2V0S2V5ID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKTtcbiAgdmFyIG1ldGFkYXRhTWFwID0gZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcChhbk9iamVjdCh0YXJnZXQpLCB0YXJnZXRLZXksIGZhbHNlKTtcbiAgaWYgKG1ldGFkYXRhTWFwID09PSB1bmRlZmluZWQgfHwgIW1ldGFkYXRhTWFwWydkZWxldGUnXShtZXRhZGF0YUtleSkpIHJldHVybiBmYWxzZTtcbiAgaWYgKG1ldGFkYXRhTWFwLnNpemUpIHJldHVybiB0cnVlO1xuICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBzdG9yZS5nZXQodGFyZ2V0KTtcbiAgdGFyZ2V0TWV0YWRhdGFbJ2RlbGV0ZSddKHRhcmdldEtleSk7XG4gIHJldHVybiAhIXRhcmdldE1ldGFkYXRhLnNpemUgfHwgc3RvcmVbJ2RlbGV0ZSddKHRhcmdldCk7XG59IH0pO1xuIiwidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEgPSBtZXRhZGF0YS5oYXM7XG52YXIgb3JkaW5hcnlHZXRPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmdldDtcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbnZhciBvcmRpbmFyeUdldE1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBoYXNPd24gPSBvcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgaWYgKGhhc093bikgcmV0dXJuIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICB2YXIgcGFyZW50ID0gZ2V0UHJvdG90eXBlT2YoTyk7XG4gIHJldHVybiBwYXJlbnQgIT09IG51bGwgPyBvcmRpbmFyeUdldE1ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApIDogdW5kZWZpbmVkO1xufTtcblxubWV0YWRhdGEuZXhwKHsgZ2V0TWV0YWRhdGE6IGZ1bmN0aW9uIGdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgcmV0dXJuIG9yZGluYXJ5R2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldCksIGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSkpO1xufSB9KTtcbiIsInZhciBTZXQgPSByZXF1aXJlKCcuL2VzNi5zZXQnKTtcbnZhciBmcm9tID0gcmVxdWlyZSgnLi9fYXJyYXktZnJvbS1pdGVyYWJsZScpO1xudmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzID0gbWV0YWRhdGEua2V5cztcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbnZhciBvcmRpbmFyeU1ldGFkYXRhS2V5cyA9IGZ1bmN0aW9uIChPLCBQKSB7XG4gIHZhciBvS2V5cyA9IG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApO1xuICB2YXIgcGFyZW50ID0gZ2V0UHJvdG90eXBlT2YoTyk7XG4gIGlmIChwYXJlbnQgPT09IG51bGwpIHJldHVybiBvS2V5cztcbiAgdmFyIHBLZXlzID0gb3JkaW5hcnlNZXRhZGF0YUtleXMocGFyZW50LCBQKTtcbiAgcmV0dXJuIHBLZXlzLmxlbmd0aCA/IG9LZXlzLmxlbmd0aCA/IGZyb20obmV3IFNldChvS2V5cy5jb25jYXQocEtleXMpKSkgOiBwS2V5cyA6IG9LZXlzO1xufTtcblxubWV0YWRhdGEuZXhwKHsgZ2V0TWV0YWRhdGFLZXlzOiBmdW5jdGlvbiBnZXRNZXRhZGF0YUtleXModGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeU1ldGFkYXRhS2V5cyhhbk9iamVjdCh0YXJnZXQpLCBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMV0pKTtcbn0gfSk7XG4iLCJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgb3JkaW5hcnlHZXRPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmdldDtcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbm1ldGFkYXRhLmV4cCh7IGdldE93bk1ldGFkYXRhOiBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeUdldE93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbk9iamVjdCh0YXJnZXQpXG4gICAgLCBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMl0pKTtcbn0gfSk7XG4iLCJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgb3JkaW5hcnlPd25NZXRhZGF0YUtleXMgPSBtZXRhZGF0YS5rZXlzO1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxubWV0YWRhdGEuZXhwKHsgZ2V0T3duTWV0YWRhdGFLZXlzOiBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YUtleXModGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhhbk9iamVjdCh0YXJnZXQpLCBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMV0pKTtcbn0gfSk7XG4iLCJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmhhcztcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbnZhciBvcmRpbmFyeUhhc01ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBoYXNPd24gPSBvcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgaWYgKGhhc093bikgcmV0dXJuIHRydWU7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbCA/IG9yZGluYXJ5SGFzTWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCkgOiBmYWxzZTtcbn07XG5cbm1ldGFkYXRhLmV4cCh7IGhhc01ldGFkYXRhOiBmdW5jdGlvbiBoYXNNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeUhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbk9iamVjdCh0YXJnZXQpLCBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMl0pKTtcbn0gfSk7XG4iLCJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmhhcztcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbm1ldGFkYXRhLmV4cCh7IGhhc093bk1ldGFkYXRhOiBmdW5jdGlvbiBoYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeUhhc093bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbk9iamVjdCh0YXJnZXQpXG4gICAgLCBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMl0pKTtcbn0gfSk7XG4iLCJ2YXIgJG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciB0b01ldGFLZXkgPSAkbWV0YWRhdGEua2V5O1xudmFyIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEgPSAkbWV0YWRhdGEuc2V0O1xuXG4kbWV0YWRhdGEuZXhwKHsgbWV0YWRhdGE6IGZ1bmN0aW9uIG1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbiBkZWNvcmF0b3IodGFyZ2V0LCB0YXJnZXRLZXkpIHtcbiAgICBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKFxuICAgICAgbWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsXG4gICAgICAodGFyZ2V0S2V5ICE9PSB1bmRlZmluZWQgPyBhbk9iamVjdCA6IGFGdW5jdGlvbikodGFyZ2V0KSxcbiAgICAgIHRvTWV0YUtleSh0YXJnZXRLZXkpXG4gICAgKTtcbiAgfTtcbn0gfSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vcndhbGRyb24vdGMzOS1ub3Rlcy9ibG9iL21hc3Rlci9lczYvMjAxNC0wOS9zZXB0LTI1Lm1kIzUxMC1nbG9iYWxhc2FwLWZvci1lbnF1ZXVpbmctYS1taWNyb3Rhc2tcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKTtcbnZhciBwcm9jZXNzID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykucHJvY2VzcztcbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG5cbiRleHBvcnQoJGV4cG9ydC5HLCB7XG4gIGFzYXA6IGZ1bmN0aW9uIGFzYXAoZm4pIHtcbiAgICB2YXIgZG9tYWluID0gaXNOb2RlICYmIHByb2Nlc3MuZG9tYWluO1xuICAgIG1pY3JvdGFzayhkb21haW4gPyBkb21haW4uYmluZChmbikgOiBmbik7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3plbnBhcnNpbmcvZXMtb2JzZXJ2YWJsZVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIG1pY3JvdGFzayA9IHJlcXVpcmUoJy4vX21pY3JvdGFzaycpKCk7XG52YXIgT0JTRVJWQUJMRSA9IHJlcXVpcmUoJy4vX3drcycpKCdvYnNlcnZhYmxlJyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgUkVUVVJOID0gZm9yT2YuUkVUVVJOO1xuXG52YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiBmbiA9PSBudWxsID8gdW5kZWZpbmVkIDogYUZ1bmN0aW9uKGZuKTtcbn07XG5cbnZhciBjbGVhbnVwU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKHN1YnNjcmlwdGlvbikge1xuICB2YXIgY2xlYW51cCA9IHN1YnNjcmlwdGlvbi5fYztcbiAgaWYgKGNsZWFudXApIHtcbiAgICBzdWJzY3JpcHRpb24uX2MgPSB1bmRlZmluZWQ7XG4gICAgY2xlYW51cCgpO1xuICB9XG59O1xuXG52YXIgc3Vic2NyaXB0aW9uQ2xvc2VkID0gZnVuY3Rpb24gKHN1YnNjcmlwdGlvbikge1xuICByZXR1cm4gc3Vic2NyaXB0aW9uLl9vID09PSB1bmRlZmluZWQ7XG59O1xuXG52YXIgY2xvc2VTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uKSB7XG4gIGlmICghc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvbikpIHtcbiAgICBzdWJzY3JpcHRpb24uX28gPSB1bmRlZmluZWQ7XG4gICAgY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICB9XG59O1xuXG52YXIgU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKG9ic2VydmVyLCBzdWJzY3JpYmVyKSB7XG4gIGFuT2JqZWN0KG9ic2VydmVyKTtcbiAgdGhpcy5fYyA9IHVuZGVmaW5lZDtcbiAgdGhpcy5fbyA9IG9ic2VydmVyO1xuICBvYnNlcnZlciA9IG5ldyBTdWJzY3JpcHRpb25PYnNlcnZlcih0aGlzKTtcbiAgdHJ5IHtcbiAgICB2YXIgY2xlYW51cCA9IHN1YnNjcmliZXIob2JzZXJ2ZXIpO1xuICAgIHZhciBzdWJzY3JpcHRpb24gPSBjbGVhbnVwO1xuICAgIGlmIChjbGVhbnVwICE9IG51bGwpIHtcbiAgICAgIGlmICh0eXBlb2YgY2xlYW51cC51bnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykgY2xlYW51cCA9IGZ1bmN0aW9uICgpIHsgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IH07XG4gICAgICBlbHNlIGFGdW5jdGlvbihjbGVhbnVwKTtcbiAgICAgIHRoaXMuX2MgPSBjbGVhbnVwO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIG9ic2VydmVyLmVycm9yKGUpO1xuICAgIHJldHVybjtcbiAgfSBpZiAoc3Vic2NyaXB0aW9uQ2xvc2VkKHRoaXMpKSBjbGVhbnVwU3Vic2NyaXB0aW9uKHRoaXMpO1xufTtcblxuU3Vic2NyaXB0aW9uLnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKHt9LCB7XG4gIHVuc3Vic2NyaWJlOiBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHsgY2xvc2VTdWJzY3JpcHRpb24odGhpcyk7IH1cbn0pO1xuXG52YXIgU3Vic2NyaXB0aW9uT2JzZXJ2ZXIgPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uKSB7XG4gIHRoaXMuX3MgPSBzdWJzY3JpcHRpb247XG59O1xuXG5TdWJzY3JpcHRpb25PYnNlcnZlci5wcm90b3R5cGUgPSByZWRlZmluZUFsbCh7fSwge1xuICBuZXh0OiBmdW5jdGlvbiBuZXh0KHZhbHVlKSB7XG4gICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRoaXMuX3M7XG4gICAgaWYgKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSkge1xuICAgICAgdmFyIG9ic2VydmVyID0gc3Vic2NyaXB0aW9uLl9vO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIG0gPSBnZXRNZXRob2Qob2JzZXJ2ZXIubmV4dCk7XG4gICAgICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG9ic2VydmVyLCB2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY2xvc2VTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBlcnJvcjogZnVuY3Rpb24gZXJyb3IodmFsdWUpIHtcbiAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhpcy5fcztcbiAgICBpZiAoc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvbikpIHRocm93IHZhbHVlO1xuICAgIHZhciBvYnNlcnZlciA9IHN1YnNjcmlwdGlvbi5fbztcbiAgICBzdWJzY3JpcHRpb24uX28gPSB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBtID0gZ2V0TWV0aG9kKG9ic2VydmVyLmVycm9yKTtcbiAgICAgIGlmICghbSkgdGhyb3cgdmFsdWU7XG4gICAgICB2YWx1ZSA9IG0uY2FsbChvYnNlcnZlciwgdmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUodmFsdWUpIHtcbiAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhpcy5fcztcbiAgICBpZiAoIXN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb24pKSB7XG4gICAgICB2YXIgb2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb24uX287XG4gICAgICBzdWJzY3JpcHRpb24uX28gPSB1bmRlZmluZWQ7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbSA9IGdldE1ldGhvZChvYnNlcnZlci5jb21wbGV0ZSk7XG4gICAgICAgIHZhbHVlID0gbSA/IG0uY2FsbChvYnNlcnZlciwgdmFsdWUpIDogdW5kZWZpbmVkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9IGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cbn0pO1xuXG52YXIgJE9ic2VydmFibGUgPSBmdW5jdGlvbiBPYnNlcnZhYmxlKHN1YnNjcmliZXIpIHtcbiAgYW5JbnN0YW5jZSh0aGlzLCAkT2JzZXJ2YWJsZSwgJ09ic2VydmFibGUnLCAnX2YnKS5fZiA9IGFGdW5jdGlvbihzdWJzY3JpYmVyKTtcbn07XG5cbnJlZGVmaW5lQWxsKCRPYnNlcnZhYmxlLnByb3RvdHlwZSwge1xuICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShvYnNlcnZlcikge1xuICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uKG9ic2VydmVyLCB0aGlzLl9mKTtcbiAgfSxcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChmbikge1xuICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICByZXR1cm4gbmV3IChjb3JlLlByb21pc2UgfHwgZ2xvYmFsLlByb21pc2UpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGFGdW5jdGlvbihmbik7XG4gICAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhhdC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGZuKHZhbHVlKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiByZWplY3QsXG4gICAgICAgIGNvbXBsZXRlOiByZXNvbHZlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSk7XG5cbnJlZGVmaW5lQWxsKCRPYnNlcnZhYmxlLCB7XG4gIGZyb206IGZ1bmN0aW9uIGZyb20oeCkge1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyB0aGlzIDogJE9ic2VydmFibGU7XG4gICAgdmFyIG1ldGhvZCA9IGdldE1ldGhvZChhbk9iamVjdCh4KVtPQlNFUlZBQkxFXSk7XG4gICAgaWYgKG1ldGhvZCkge1xuICAgICAgdmFyIG9ic2VydmFibGUgPSBhbk9iamVjdChtZXRob2QuY2FsbCh4KSk7XG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZS5jb25zdHJ1Y3RvciA9PT0gQyA/IG9ic2VydmFibGUgOiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGUuc3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICB2YXIgZG9uZSA9IGZhbHNlO1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmb3JPZih4LCBmYWxzZSwgZnVuY3Rpb24gKGl0KSB7XG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoaXQpO1xuICAgICAgICAgICAgICBpZiAoZG9uZSkgcmV0dXJuIFJFVFVSTjtcbiAgICAgICAgICAgIH0pID09PSBSRVRVUk4pIHJldHVybjtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZG9uZSkgdGhyb3cgZTtcbiAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBkb25lID0gdHJ1ZTsgfTtcbiAgICB9KTtcbiAgfSxcbiAgb2Y6IGZ1bmN0aW9uIG9mKCkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aCwgaXRlbXMgPSBuZXcgQXJyYXkobCk7IGkgPCBsOykgaXRlbXNbaV0gPSBhcmd1bWVudHNbaSsrXTtcbiAgICByZXR1cm4gbmV3ICh0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiAkT2JzZXJ2YWJsZSkoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICB2YXIgZG9uZSA9IGZhbHNlO1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdGVtcy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChpdGVtc1tqXSk7XG4gICAgICAgICAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgICAgICAgIH0gb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBkb25lID0gdHJ1ZTsgfTtcbiAgICB9KTtcbiAgfVxufSk7XG5cbmhpZGUoJE9ic2VydmFibGUucHJvdG90eXBlLCBPQlNFUlZBQkxFLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KTtcblxuJGV4cG9ydCgkZXhwb3J0LkcsIHsgT2JzZXJ2YWJsZTogJE9ic2VydmFibGUgfSk7XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ09ic2VydmFibGUnKTtcbiIsIi8vIGllOS0gc2V0VGltZW91dCAmIHNldEludGVydmFsIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBmaXhcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xudmFyIHNsaWNlID0gW10uc2xpY2U7XG52YXIgTVNJRSA9IC9NU0lFIC5cXC4vLnRlc3QodXNlckFnZW50KTsgLy8gPC0gZGlydHkgaWU5LSBjaGVja1xudmFyIHdyYXAgPSBmdW5jdGlvbiAoc2V0KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZm4sIHRpbWUgLyogLCAuLi5hcmdzICovKSB7XG4gICAgdmFyIGJvdW5kQXJncyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xuICAgIHZhciBhcmdzID0gYm91bmRBcmdzID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpIDogZmFsc2U7XG4gICAgcmV0dXJuIHNldChib3VuZEFyZ3MgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgICAgICh0eXBlb2YgZm4gPT0gJ2Z1bmN0aW9uJyA/IGZuIDogRnVuY3Rpb24oZm4pKS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IDogZm4sIHRpbWUpO1xuICB9O1xufTtcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5CICsgJGV4cG9ydC5GICogTVNJRSwge1xuICBzZXRUaW1lb3V0OiB3cmFwKGdsb2JhbC5zZXRUaW1lb3V0KSxcbiAgc2V0SW50ZXJ2YWw6IHdyYXAoZ2xvYmFsLnNldEludGVydmFsKVxufSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICR0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpO1xuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkIsIHtcbiAgc2V0SW1tZWRpYXRlOiAkdGFzay5zZXQsXG4gIGNsZWFySW1tZWRpYXRlOiAkdGFzay5jbGVhclxufSk7XG4iLCJ2YXIgJGl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG52YXIgSVRFUkFUT1IgPSB3a3MoJ2l0ZXJhdG9yJyk7XG52YXIgVE9fU1RSSU5HX1RBRyA9IHdrcygndG9TdHJpbmdUYWcnKTtcbnZhciBBcnJheVZhbHVlcyA9IEl0ZXJhdG9ycy5BcnJheTtcblxudmFyIERPTUl0ZXJhYmxlcyA9IHtcbiAgQ1NTUnVsZUxpc3Q6IHRydWUsIC8vIFRPRE86IE5vdCBzcGVjIGNvbXBsaWFudCwgc2hvdWxkIGJlIGZhbHNlLlxuICBDU1NTdHlsZURlY2xhcmF0aW9uOiBmYWxzZSxcbiAgQ1NTVmFsdWVMaXN0OiBmYWxzZSxcbiAgQ2xpZW50UmVjdExpc3Q6IGZhbHNlLFxuICBET01SZWN0TGlzdDogZmFsc2UsXG4gIERPTVN0cmluZ0xpc3Q6IGZhbHNlLFxuICBET01Ub2tlbkxpc3Q6IHRydWUsXG4gIERhdGFUcmFuc2Zlckl0ZW1MaXN0OiBmYWxzZSxcbiAgRmlsZUxpc3Q6IGZhbHNlLFxuICBIVE1MQWxsQ29sbGVjdGlvbjogZmFsc2UsXG4gIEhUTUxDb2xsZWN0aW9uOiBmYWxzZSxcbiAgSFRNTEZvcm1FbGVtZW50OiBmYWxzZSxcbiAgSFRNTFNlbGVjdEVsZW1lbnQ6IGZhbHNlLFxuICBNZWRpYUxpc3Q6IHRydWUsIC8vIFRPRE86IE5vdCBzcGVjIGNvbXBsaWFudCwgc2hvdWxkIGJlIGZhbHNlLlxuICBNaW1lVHlwZUFycmF5OiBmYWxzZSxcbiAgTmFtZWROb2RlTWFwOiBmYWxzZSxcbiAgTm9kZUxpc3Q6IHRydWUsXG4gIFBhaW50UmVxdWVzdExpc3Q6IGZhbHNlLFxuICBQbHVnaW46IGZhbHNlLFxuICBQbHVnaW5BcnJheTogZmFsc2UsXG4gIFNWR0xlbmd0aExpc3Q6IGZhbHNlLFxuICBTVkdOdW1iZXJMaXN0OiBmYWxzZSxcbiAgU1ZHUGF0aFNlZ0xpc3Q6IGZhbHNlLFxuICBTVkdQb2ludExpc3Q6IGZhbHNlLFxuICBTVkdTdHJpbmdMaXN0OiBmYWxzZSxcbiAgU1ZHVHJhbnNmb3JtTGlzdDogZmFsc2UsXG4gIFNvdXJjZUJ1ZmZlckxpc3Q6IGZhbHNlLFxuICBTdHlsZVNoZWV0TGlzdDogdHJ1ZSwgLy8gVE9ETzogTm90IHNwZWMgY29tcGxpYW50LCBzaG91bGQgYmUgZmFsc2UuXG4gIFRleHRUcmFja0N1ZUxpc3Q6IGZhbHNlLFxuICBUZXh0VHJhY2tMaXN0OiBmYWxzZSxcbiAgVG91Y2hMaXN0OiBmYWxzZVxufTtcblxuZm9yICh2YXIgY29sbGVjdGlvbnMgPSBnZXRLZXlzKERPTUl0ZXJhYmxlcyksIGkgPSAwOyBpIDwgY29sbGVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgdmFyIE5BTUUgPSBjb2xsZWN0aW9uc1tpXTtcbiAgdmFyIGV4cGxpY2l0ID0gRE9NSXRlcmFibGVzW05BTUVdO1xuICB2YXIgQ29sbGVjdGlvbiA9IGdsb2JhbFtOQU1FXTtcbiAgdmFyIHByb3RvID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTtcbiAgdmFyIGtleTtcbiAgaWYgKHByb3RvKSB7XG4gICAgaWYgKCFwcm90b1tJVEVSQVRPUl0pIGhpZGUocHJvdG8sIElURVJBVE9SLCBBcnJheVZhbHVlcyk7XG4gICAgaWYgKCFwcm90b1tUT19TVFJJTkdfVEFHXSkgaGlkZShwcm90bywgVE9fU1RSSU5HX1RBRywgTkFNRSk7XG4gICAgSXRlcmF0b3JzW05BTUVdID0gQXJyYXlWYWx1ZXM7XG4gICAgaWYgKGV4cGxpY2l0KSBmb3IgKGtleSBpbiAkaXRlcmF0b3JzKSBpZiAoIXByb3RvW2tleV0pIHJlZGVmaW5lKHByb3RvLCBrZXksICRpdGVyYXRvcnNba2V5XSwgdHJ1ZSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIGh0dHBzOi8vcmF3LmdpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvbWFzdGVyL0xJQ0VOU0UgZmlsZS4gQW5cbiAqIGFkZGl0aW9uYWwgZ3JhbnQgb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpblxuICogdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbiEoZnVuY3Rpb24oZ2xvYmFsKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgdmFyIGluTW9kdWxlID0gdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIjtcbiAgdmFyIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lO1xuICBpZiAocnVudGltZSkge1xuICAgIGlmIChpbk1vZHVsZSkge1xuICAgICAgLy8gSWYgcmVnZW5lcmF0b3JSdW50aW1lIGlzIGRlZmluZWQgZ2xvYmFsbHkgYW5kIHdlJ3JlIGluIGEgbW9kdWxlLFxuICAgICAgLy8gbWFrZSB0aGUgZXhwb3J0cyBvYmplY3QgaWRlbnRpY2FsIHRvIHJlZ2VuZXJhdG9yUnVudGltZS5cbiAgICAgIG1vZHVsZS5leHBvcnRzID0gcnVudGltZTtcbiAgICB9XG4gICAgLy8gRG9uJ3QgYm90aGVyIGV2YWx1YXRpbmcgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGlmIHRoZSBydW50aW1lIHdhc1xuICAgIC8vIGFscmVhZHkgZGVmaW5lZCBnbG9iYWxseS5cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBEZWZpbmUgdGhlIHJ1bnRpbWUgZ2xvYmFsbHkgKGFzIGV4cGVjdGVkIGJ5IGdlbmVyYXRlZCBjb2RlKSBhcyBlaXRoZXJcbiAgLy8gbW9kdWxlLmV4cG9ydHMgKGlmIHdlJ3JlIGluIGEgbW9kdWxlKSBvciBhIG5ldywgZW1wdHkgb2JqZWN0LlxuICBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZSA9IGluTW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgOiB7fTtcblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBydW50aW1lLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZVt0b1N0cmluZ1RhZ1N5bWJvbF0gPVxuICAgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuXG4gIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIHByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gY3RvclxuICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG4gICAgICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cbiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICA6IGZhbHNlO1xuICB9O1xuXG4gIHJ1bnRpbWUubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICAgICAgaWYgKCEodG9TdHJpbmdUYWdTeW1ib2wgaW4gZ2VuRnVuKSkge1xuICAgICAgICBnZW5GdW5bdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuICAgICAgfVxuICAgIH1cbiAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgcmV0dXJuIGdlbkZ1bjtcbiAgfTtcblxuICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3RcbiAgLy8gYGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIilgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICBydW50aW1lLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHsgX19hd2FpdDogYXJnIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24odW53cmFwcGVkKSB7XG4gICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcbiAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi4gSWYgdGhlIFByb21pc2UgaXMgcmVqZWN0ZWQsIGhvd2V2ZXIsIHRoZVxuICAgICAgICAgIC8vIHJlc3VsdCBmb3IgdGhpcyBpdGVyYXRpb24gd2lsbCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lXG4gICAgICAgICAgLy8gcmVhc29uLiBOb3RlIHRoYXQgcmVqZWN0aW9ucyBvZiB5aWVsZGVkIFByb21pc2VzIGFyZSBub3RcbiAgICAgICAgICAvLyB0aHJvd24gYmFjayBpbnRvIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIGFzIGlzIHRoZSBjYXNlXG4gICAgICAgICAgLy8gd2hlbiBhbiBhd2FpdGVkIFByb21pc2UgaXMgcmVqZWN0ZWQuIFRoaXMgZGlmZmVyZW5jZSBpblxuICAgICAgICAgIC8vIGJlaGF2aW9yIGJldHdlZW4geWllbGQgYW5kIGF3YWl0IGlzIGltcG9ydGFudCwgYmVjYXVzZSBpdFxuICAgICAgICAgIC8vIGFsbG93cyB0aGUgY29uc3VtZXIgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGUgeWllbGRlZFxuICAgICAgICAgIC8vIHJlamVjdGlvbiAoc3dhbGxvdyBpdCBhbmQgY29udGludWUsIG1hbnVhbGx5IC50aHJvdyBpdCBiYWNrXG4gICAgICAgICAgLy8gaW50byB0aGUgZ2VuZXJhdG9yLCBhYmFuZG9uIGl0ZXJhdGlvbiwgd2hhdGV2ZXIpLiBXaXRoXG4gICAgICAgICAgLy8gYXdhaXQsIGJ5IGNvbnRyYXN0LCB0aGVyZSBpcyBubyBvcHBvcnR1bml0eSB0byBleGFtaW5lIHRoZVxuICAgICAgICAgIC8vIHJlamVjdGlvbiByZWFzb24gb3V0c2lkZSB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBzbyB0aGVcbiAgICAgICAgICAvLyBvbmx5IG9wdGlvbiBpcyB0byB0aHJvdyBpdCBmcm9tIHRoZSBhd2FpdCBleHByZXNzaW9uLCBhbmRcbiAgICAgICAgICAvLyBsZXQgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBoYW5kbGUgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZ2xvYmFsLnByb2Nlc3MgPT09IFwib2JqZWN0XCIgJiYgZ2xvYmFsLnByb2Nlc3MuZG9tYWluKSB7XG4gICAgICBpbnZva2UgPSBnbG9iYWwucHJvY2Vzcy5kb21haW4uYmluZChpbnZva2UpO1xuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPVxuICAgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG4gICAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuICAgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmXG4gICAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG4gICAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuICAgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkb1xuICAgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG4gICAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG4gICAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5XG4gICAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG4gICAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG4gICAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS5cbiAgICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsXG4gICAgICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnkgbGF0ZXJcbiAgICAgICAgICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmdcbiAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIChzZWUgZGVmaW5lSXRlcmF0b3JNZXRob2RzKS5cbiAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuICB9XG5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKTtcbiAgQXN5bmNJdGVyYXRvci5wcm90b3R5cGVbYXN5bmNJdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIHJ1bnRpbWUuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7XG5cbiAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZvciB0aGUgdmFsdWUgb2ZcbiAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG4gIHJ1bnRpbWUuYXN5bmMgPSBmdW5jdGlvbihpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KVxuICAgICk7XG5cbiAgICByZXR1cm4gcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yLnJldHVybikge1xuICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcbiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIC8vIElmIG1heWJlSW52b2tlRGVsZWdhdGUoY29udGV4dCkgY2hhbmdlZCBjb250ZXh0Lm1ldGhvZCBmcm9tXG4gICAgICAgICAgICAvLyBcInJldHVyblwiIHRvIFwidGhyb3dcIiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gobWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgY29udGV4dC5hcmcpO1xuXG4gICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cbiAgICBpZiAoISBpbmZvKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAvLyBBc3NpZ24gdGhlIHJlc3VsdCBvZiB0aGUgZmluaXNoZWQgZGVsZWdhdGUgdG8gdGhlIHRlbXBvcmFyeVxuICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXG4gICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXG4gICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgXCJ0aHJvd1wiIGJ1dCB0aGUgZGVsZWdhdGUgaGFuZGxlZCB0aGVcbiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWZcbiAgICAgIC8vIGNvbnRleHQubWV0aG9kIHdhcyBcIm5leHRcIiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuXG4gICAgICAvLyBcImNvbnN1bWVkXCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXNcbiAgICAgIC8vIFwicmV0dXJuXCIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlXG4gICAgICAvLyBvdXRlciBnZW5lcmF0b3IuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgIT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLlxuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gVGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkLCBzbyBmb3JnZXQgaXQgYW5kIGNvbnRpbnVlIHdpdGhcbiAgICAvLyB0aGUgb3V0ZXIgZ2VuZXJhdG9yLlxuICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICB9XG5cbiAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLlxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG4gIEdwW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBHcFtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgcnVudGltZS5rZXlzID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAga2V5cy5yZXZlcnNlKCk7XG5cbiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG4gICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcbiAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuICB9XG4gIHJ1bnRpbWUudmFsdWVzID0gdmFsdWVzO1xuXG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cbiAgICByZXNldDogZnVuY3Rpb24oc2tpcFRlbXBSZXNldCkge1xuICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG4gICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmXG4gICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcbiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG4gICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcblxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG4gICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblxuICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcbiAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISEgY2F1Z2h0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcbiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG4gICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cbiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG5cbiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24odHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG4gICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcblxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG4gICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gIH07XG59KShcbiAgLy8gQW1vbmcgdGhlIHZhcmlvdXMgdHJpY2tzIGZvciBvYnRhaW5pbmcgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbFxuICAvLyBvYmplY3QsIHRoaXMgc2VlbXMgdG8gYmUgdGhlIG1vc3QgcmVsaWFibGUgdGVjaG5pcXVlIHRoYXQgZG9lcyBub3RcbiAgLy8gdXNlIGluZGlyZWN0IGV2YWwgKHdoaWNoIHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5KS5cbiAgdHlwZW9mIGdsb2JhbCA9PT0gXCJvYmplY3RcIiA/IGdsb2JhbCA6XG4gIHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIgPyB3aW5kb3cgOlxuICB0eXBlb2Ygc2VsZiA9PT0gXCJvYmplY3RcIiA/IHNlbGYgOiB0aGlzXG4pO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9jb3JlLnJlZ2V4cC5lc2NhcGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLlJlZ0V4cC5lc2NhcGU7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5nci9SZXhFeHAuZXNjYXBlXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRyZSA9IHJlcXVpcmUoJy4vX3JlcGxhY2VyJykoL1tcXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVnRXhwJywgeyBlc2NhcGU6IGZ1bmN0aW9uIGVzY2FwZShpdCkgeyByZXR1cm4gJHJlKGl0KTsgfSB9KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHJlZ0V4cCwgcmVwbGFjZSkge1xuICB2YXIgcmVwbGFjZXIgPSByZXBsYWNlID09PSBPYmplY3QocmVwbGFjZSkgPyBmdW5jdGlvbiAocGFydCkge1xuICAgIHJldHVybiByZXBsYWNlW3BhcnRdO1xuICB9IDogcmVwbGFjZTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBTdHJpbmcoaXQpLnJlcGxhY2UocmVnRXhwLCByZXBsYWNlcik7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG52YXIgQXhpb3MgPSByZXF1aXJlKCcuL2NvcmUvQXhpb3MnKTtcbnZhciBtZXJnZUNvbmZpZyA9IHJlcXVpcmUoJy4vY29yZS9tZXJnZUNvbmZpZycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0Q29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdENvbmZpZykge1xuICB2YXIgY29udGV4dCA9IG5ldyBBeGlvcyhkZWZhdWx0Q29uZmlnKTtcbiAgdmFyIGluc3RhbmNlID0gYmluZChBeGlvcy5wcm90b3R5cGUucmVxdWVzdCwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBheGlvcy5wcm90b3R5cGUgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBBeGlvcy5wcm90b3R5cGUsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgY29udGV4dCB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIGNvbnRleHQpO1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IGluc3RhbmNlIHRvIGJlIGV4cG9ydGVkXG52YXIgYXhpb3MgPSBjcmVhdGVJbnN0YW5jZShkZWZhdWx0cyk7XG5cbi8vIEV4cG9zZSBBeGlvcyBjbGFzcyB0byBhbGxvdyBjbGFzcyBpbmhlcml0YW5jZVxuYXhpb3MuQXhpb3MgPSBBeGlvcztcblxuLy8gRmFjdG9yeSBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlc1xuYXhpb3MuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGluc3RhbmNlQ29uZmlnKSB7XG4gIHJldHVybiBjcmVhdGVJbnN0YW5jZShtZXJnZUNvbmZpZyhheGlvcy5kZWZhdWx0cywgaW5zdGFuY2VDb25maWcpKTtcbn07XG5cbi8vIEV4cG9zZSBDYW5jZWwgJiBDYW5jZWxUb2tlblxuYXhpb3MuQ2FuY2VsID0gcmVxdWlyZSgnLi9jYW5jZWwvQ2FuY2VsJyk7XG5heGlvcy5DYW5jZWxUb2tlbiA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbFRva2VuJyk7XG5heGlvcy5pc0NhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL2lzQ2FuY2VsJyk7XG5cbi8vIEV4cG9zZSBhbGwvc3ByZWFkXG5heGlvcy5hbGwgPSBmdW5jdGlvbiBhbGwocHJvbWlzZXMpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn07XG5heGlvcy5zcHJlYWQgPSByZXF1aXJlKCcuL2hlbHBlcnMvc3ByZWFkJyk7XG5cbi8vIEV4cG9zZSBpc0F4aW9zRXJyb3JcbmF4aW9zLmlzQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4vaGVscGVycy9pc0F4aW9zRXJyb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBheGlvcztcblxuLy8gQWxsb3cgdXNlIG9mIGRlZmF1bHQgaW1wb3J0IHN5bnRheCBpbiBUeXBlU2NyaXB0XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gYXhpb3M7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBJbnRlcmNlcHRvck1hbmFnZXIgPSByZXF1aXJlKCcuL0ludGVyY2VwdG9yTWFuYWdlcicpO1xudmFyIGRpc3BhdGNoUmVxdWVzdCA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hSZXF1ZXN0Jyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL21lcmdlQ29uZmlnJyk7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIEF4aW9zKGluc3RhbmNlQ29uZmlnKSB7XG4gIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZztcbiAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XG4gICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcbiAgfTtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAqL1xuQXhpb3MucHJvdG90eXBlLnJlcXVlc3QgPSBmdW5jdGlvbiByZXF1ZXN0KGNvbmZpZykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcgPSBhcmd1bWVudHNbMV0gfHwge307XG4gICAgY29uZmlnLnVybCA9IGFyZ3VtZW50c1swXTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcgPSBjb25maWcgfHwge307XG4gIH1cblxuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuXG4gIC8vIFNldCBjb25maWcubWV0aG9kXG4gIGlmIChjb25maWcubWV0aG9kKSB7XG4gICAgY29uZmlnLm1ldGhvZCA9IGNvbmZpZy5tZXRob2QudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRzLm1ldGhvZCkge1xuICAgIGNvbmZpZy5tZXRob2QgPSB0aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZy5tZXRob2QgPSAnZ2V0JztcbiAgfVxuXG4gIC8vIEhvb2sgdXAgaW50ZXJjZXB0b3JzIG1pZGRsZXdhcmVcbiAgdmFyIGNoYWluID0gW2Rpc3BhdGNoUmVxdWVzdCwgdW5kZWZpbmVkXTtcbiAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcblxuICB0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24gdW5zaGlmdFJlcXVlc3RJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICBjaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgIGNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHdoaWxlIChjaGFpbi5sZW5ndGgpIHtcbiAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluLnNoaWZ0KCksIGNoYWluLnNoaWZ0KCkpO1xuICB9XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuXG5BeGlvcy5wcm90b3R5cGUuZ2V0VXJpID0gZnVuY3Rpb24gZ2V0VXJpKGNvbmZpZykge1xuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICByZXR1cm4gYnVpbGRVUkwoY29uZmlnLnVybCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLnJlcGxhY2UoL15cXD8vLCAnJyk7XG59O1xuXG4vLyBQcm92aWRlIGFsaWFzZXMgZm9yIHN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZHNcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBkYXRhLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBeGlvcztcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5mdW5jdGlvbiBJbnRlcmNlcHRvck1hbmFnZXIoKSB7XG4gIHRoaXMuaGFuZGxlcnMgPSBbXTtcbn1cblxuLyoqXG4gKiBBZGQgYSBuZXcgaW50ZXJjZXB0b3IgdG8gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVsZmlsbGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHRoZW5gIGZvciBhIGBQcm9taXNlYFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0ZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgcmVqZWN0YCBmb3IgYSBgUHJvbWlzZWBcbiAqXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IEFuIElEIHVzZWQgdG8gcmVtb3ZlIGludGVyY2VwdG9yIGxhdGVyXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gdXNlKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpIHtcbiAgdGhpcy5oYW5kbGVycy5wdXNoKHtcbiAgICBmdWxmaWxsZWQ6IGZ1bGZpbGxlZCxcbiAgICByZWplY3RlZDogcmVqZWN0ZWRcbiAgfSk7XG4gIHJldHVybiB0aGlzLmhhbmRsZXJzLmxlbmd0aCAtIDE7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpbnRlcmNlcHRvciBmcm9tIHRoZSBzdGFja1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBpZCBUaGUgSUQgdGhhdCB3YXMgcmV0dXJuZWQgYnkgYHVzZWBcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5lamVjdCA9IGZ1bmN0aW9uIGVqZWN0KGlkKSB7XG4gIGlmICh0aGlzLmhhbmRsZXJzW2lkXSkge1xuICAgIHRoaXMuaGFuZGxlcnNbaWRdID0gbnVsbDtcbiAgfVxufTtcblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVkIGludGVyY2VwdG9yc1xuICpcbiAqIFRoaXMgbWV0aG9kIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNraXBwaW5nIG92ZXIgYW55XG4gKiBpbnRlcmNlcHRvcnMgdGhhdCBtYXkgaGF2ZSBiZWNvbWUgYG51bGxgIGNhbGxpbmcgYGVqZWN0YC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBpbnRlcmNlcHRvclxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiBmb3JFYWNoKGZuKSB7XG4gIHV0aWxzLmZvckVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24gZm9yRWFjaEhhbmRsZXIoaCkge1xuICAgIGlmIChoICE9PSBudWxsKSB7XG4gICAgICBmbihoKTtcbiAgICB9XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBJbnRlcmNlcHRvck1hbmFnZXI7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciB0cmFuc2Zvcm1EYXRhID0gcmVxdWlyZSgnLi90cmFuc2Zvcm1EYXRhJyk7XG52YXIgaXNDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvaXNDYW5jZWwnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAqL1xuZnVuY3Rpb24gdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpIHtcbiAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgIGNvbmZpZy5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1c2luZyB0aGUgY29uZmlndXJlZCBhZGFwdGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGlzcGF0Y2hSZXF1ZXN0KGNvbmZpZykge1xuICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgLy8gRW5zdXJlIGhlYWRlcnMgZXhpc3RcbiAgY29uZmlnLmhlYWRlcnMgPSBjb25maWcuaGVhZGVycyB8fCB7fTtcblxuICAvLyBUcmFuc2Zvcm0gcmVxdWVzdCBkYXRhXG4gIGNvbmZpZy5kYXRhID0gdHJhbnNmb3JtRGF0YShcbiAgICBjb25maWcuZGF0YSxcbiAgICBjb25maWcuaGVhZGVycyxcbiAgICBjb25maWcudHJhbnNmb3JtUmVxdWVzdFxuICApO1xuXG4gIC8vIEZsYXR0ZW4gaGVhZGVyc1xuICBjb25maWcuaGVhZGVycyA9IHV0aWxzLm1lcmdlKFxuICAgIGNvbmZpZy5oZWFkZXJzLmNvbW1vbiB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1tjb25maWcubWV0aG9kXSB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1xuICApO1xuXG4gIHV0aWxzLmZvckVhY2goXG4gICAgWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnLCAnY29tbW9uJ10sXG4gICAgZnVuY3Rpb24gY2xlYW5IZWFkZXJDb25maWcobWV0aG9kKSB7XG4gICAgICBkZWxldGUgY29uZmlnLmhlYWRlcnNbbWV0aG9kXTtcbiAgICB9XG4gICk7XG5cbiAgdmFyIGFkYXB0ZXIgPSBjb25maWcuYWRhcHRlciB8fCBkZWZhdWx0cy5hZGFwdGVyO1xuXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YShcbiAgICAgIHJlc3BvbnNlLmRhdGEsXG4gICAgICByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlXG4gICAgKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfSwgZnVuY3Rpb24gb25BZGFwdGVyUmVqZWN0aW9uKHJlYXNvbikge1xuICAgIGlmICghaXNDYW5jZWwocmVhc29uKSkge1xuICAgICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgICAgaWYgKHJlYXNvbiAmJiByZWFzb24ucmVzcG9uc2UpIHtcbiAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhKFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhLFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZWFzb24pO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm0gdGhlIGRhdGEgZm9yIGEgcmVxdWVzdCBvciBhIHJlc3BvbnNlXG4gKlxuICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfSBkYXRhIFRoZSBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkXG4gKiBAcGFyYW0ge0FycmF5fSBoZWFkZXJzIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdCBvciByZXNwb25zZVxuICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbn0gZm5zIEEgc2luZ2xlIGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9uc1xuICogQHJldHVybnMgeyp9IFRoZSByZXN1bHRpbmcgdHJhbnNmb3JtZWQgZGF0YVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZGF0YSwgaGVhZGVycywgZm5zKSB7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICB1dGlscy5mb3JFYWNoKGZucywgZnVuY3Rpb24gdHJhbnNmb3JtKGZuKSB7XG4gICAgZGF0YSA9IGZuKGRhdGEsIGhlYWRlcnMpO1xuICB9KTtcblxuICByZXR1cm4gZGF0YTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCBub3JtYWxpemVkTmFtZSkge1xuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMsIGZ1bmN0aW9uIHByb2Nlc3NIZWFkZXIodmFsdWUsIG5hbWUpIHtcbiAgICBpZiAobmFtZSAhPT0gbm9ybWFsaXplZE5hbWUgJiYgbmFtZS50b1VwcGVyQ2FzZSgpID09PSBub3JtYWxpemVkTmFtZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICBoZWFkZXJzW25vcm1hbGl6ZWROYW1lXSA9IHZhbHVlO1xuICAgICAgZGVsZXRlIGhlYWRlcnNbbmFtZV07XG4gICAgfVxuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBzZXR0bGUgPSByZXF1aXJlKCcuLy4uL2NvcmUvc2V0dGxlJyk7XG52YXIgY29va2llcyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9jb29raWVzJyk7XG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBidWlsZEZ1bGxQYXRoID0gcmVxdWlyZSgnLi4vY29yZS9idWlsZEZ1bGxQYXRoJyk7XG52YXIgcGFyc2VIZWFkZXJzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL3BhcnNlSGVhZGVycycpO1xudmFyIGlzVVJMU2FtZU9yaWdpbiA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9pc1VSTFNhbWVPcmlnaW4nKTtcbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvY3JlYXRlRXJyb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4aHJBZGFwdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hYaHJSZXF1ZXN0KHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0RGF0YSA9IGNvbmZpZy5kYXRhO1xuICAgIHZhciByZXF1ZXN0SGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzO1xuXG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEocmVxdWVzdERhdGEpKSB7XG4gICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOyAvLyBMZXQgdGhlIGJyb3dzZXIgc2V0IGl0XG4gICAgfVxuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIC8vIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb25cbiAgICBpZiAoY29uZmlnLmF1dGgpIHtcbiAgICAgIHZhciB1c2VybmFtZSA9IGNvbmZpZy5hdXRoLnVzZXJuYW1lIHx8ICcnO1xuICAgICAgdmFyIHBhc3N3b3JkID0gY29uZmlnLmF1dGgucGFzc3dvcmQgPyB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoY29uZmlnLmF1dGgucGFzc3dvcmQpKSA6ICcnO1xuICAgICAgcmVxdWVzdEhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICB2YXIgZnVsbFBhdGggPSBidWlsZEZ1bGxQYXRoKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcbiAgICByZXF1ZXN0Lm9wZW4oY29uZmlnLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBidWlsZFVSTChmdWxsUGF0aCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLCB0cnVlKTtcblxuICAgIC8vIFNldCB0aGUgcmVxdWVzdCB0aW1lb3V0IGluIE1TXG4gICAgcmVxdWVzdC50aW1lb3V0ID0gY29uZmlnLnRpbWVvdXQ7XG5cbiAgICAvLyBMaXN0ZW4gZm9yIHJlYWR5IHN0YXRlXG4gICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiBoYW5kbGVMb2FkKCkge1xuICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSByZXF1ZXN0IGVycm9yZWQgb3V0IGFuZCB3ZSBkaWRuJ3QgZ2V0IGEgcmVzcG9uc2UsIHRoaXMgd2lsbCBiZVxuICAgICAgLy8gaGFuZGxlZCBieSBvbmVycm9yIGluc3RlYWRcbiAgICAgIC8vIFdpdGggb25lIGV4Y2VwdGlvbjogcmVxdWVzdCB0aGF0IHVzaW5nIGZpbGU6IHByb3RvY29sLCBtb3N0IGJyb3dzZXJzXG4gICAgICAvLyB3aWxsIHJldHVybiBzdGF0dXMgYXMgMCBldmVuIHRob3VnaCBpdCdzIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0XG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDAgJiYgIShyZXF1ZXN0LnJlc3BvbnNlVVJMICYmIHJlcXVlc3QucmVzcG9uc2VVUkwuaW5kZXhPZignZmlsZTonKSA9PT0gMCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBQcmVwYXJlIHRoZSByZXNwb25zZVxuICAgICAgdmFyIHJlc3BvbnNlSGVhZGVycyA9ICdnZXRBbGxSZXNwb25zZUhlYWRlcnMnIGluIHJlcXVlc3QgPyBwYXJzZUhlYWRlcnMocmVxdWVzdC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkgOiBudWxsO1xuICAgICAgdmFyIHJlc3BvbnNlRGF0YSA9ICFjb25maWcucmVzcG9uc2VUeXBlIHx8IGNvbmZpZy5yZXNwb25zZVR5cGUgPT09ICd0ZXh0JyA/IHJlcXVlc3QucmVzcG9uc2VUZXh0IDogcmVxdWVzdC5yZXNwb25zZTtcbiAgICAgIHZhciByZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXF1ZXN0LnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIHJlcXVlc3Q6IHJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBicm93c2VyIHJlcXVlc3QgY2FuY2VsbGF0aW9uIChhcyBvcHBvc2VkIHRvIGEgbWFudWFsIGNhbmNlbGxhdGlvbilcbiAgICByZXF1ZXN0Lm9uYWJvcnQgPSBmdW5jdGlvbiBoYW5kbGVBYm9ydCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignUmVxdWVzdCBhYm9ydGVkJywgY29uZmlnLCAnRUNPTk5BQk9SVEVEJywgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIGxvdyBsZXZlbCBuZXR3b3JrIGVycm9yc1xuICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uIGhhbmRsZUVycm9yKCkge1xuICAgICAgLy8gUmVhbCBlcnJvcnMgYXJlIGhpZGRlbiBmcm9tIHVzIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBvbmVycm9yIHNob3VsZCBvbmx5IGZpcmUgaWYgaXQncyBhIG5ldHdvcmsgZXJyb3JcbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignTmV0d29yayBFcnJvcicsIGNvbmZpZywgbnVsbCwgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIHRpbWVvdXRcbiAgICByZXF1ZXN0Lm9udGltZW91dCA9IGZ1bmN0aW9uIGhhbmRsZVRpbWVvdXQoKSB7XG4gICAgICB2YXIgdGltZW91dEVycm9yTWVzc2FnZSA9ICd0aW1lb3V0IG9mICcgKyBjb25maWcudGltZW91dCArICdtcyBleGNlZWRlZCc7XG4gICAgICBpZiAoY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSA9IGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKHRpbWVvdXRFcnJvck1lc3NhZ2UsIGNvbmZpZywgJ0VDT05OQUJPUlRFRCcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgIC8vIFRoaXMgaXMgb25seSBkb25lIGlmIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50LlxuICAgIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG4gICAgaWYgKHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpIHtcbiAgICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgICAgdmFyIHhzcmZWYWx1ZSA9IChjb25maWcud2l0aENyZWRlbnRpYWxzIHx8IGlzVVJMU2FtZU9yaWdpbihmdWxsUGF0aCkpICYmIGNvbmZpZy54c3JmQ29va2llTmFtZSA/XG4gICAgICAgIGNvb2tpZXMucmVhZChjb25maWcueHNyZkNvb2tpZU5hbWUpIDpcbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XG4gICAgICAgIHJlcXVlc3RIZWFkZXJzW2NvbmZpZy54c3JmSGVhZGVyTmFtZV0gPSB4c3JmVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcbiAgICBpZiAoJ3NldFJlcXVlc3RIZWFkZXInIGluIHJlcXVlc3QpIHtcbiAgICAgIHV0aWxzLmZvckVhY2gocmVxdWVzdEhlYWRlcnMsIGZ1bmN0aW9uIHNldFJlcXVlc3RIZWFkZXIodmFsLCBrZXkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0RGF0YSA9PT0gJ3VuZGVmaW5lZCcgJiYga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXR5cGUnKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxuICAgICAgICAgIGRlbGV0ZSByZXF1ZXN0SGVhZGVyc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSBhZGQgaGVhZGVyIHRvIHRoZSByZXF1ZXN0XG4gICAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGtleSwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnLndpdGhDcmVkZW50aWFscykpIHtcbiAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gISFjb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAoY29uZmlnLnJlc3BvbnNlVHlwZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBFeHBlY3RlZCBET01FeGNlcHRpb24gdGhyb3duIGJ5IGJyb3dzZXJzIG5vdCBjb21wYXRpYmxlIFhNTEh0dHBSZXF1ZXN0IExldmVsIDIuXG4gICAgICAgIC8vIEJ1dCwgdGhpcyBjYW4gYmUgc3VwcHJlc3NlZCBmb3IgJ2pzb24nIHR5cGUgYXMgaXQgY2FuIGJlIHBhcnNlZCBieSBkZWZhdWx0ICd0cmFuc2Zvcm1SZXNwb25zZScgZnVuY3Rpb24uXG4gICAgICAgIGlmIChjb25maWcucmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25VcGxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiByZXF1ZXN0LnVwbG9hZCkge1xuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25VcGxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkNhbmNlbGVkKGNhbmNlbCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICAgIHJlamVjdChjYW5jZWwpO1xuICAgICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXF1ZXN0RGF0YSkge1xuICAgICAgcmVxdWVzdERhdGEgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcbiAgICByZXF1ZXN0LnNlbmQocmVxdWVzdERhdGEpO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBzdXBwb3J0IGRvY3VtZW50LmNvb2tpZVxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlKSB7XG4gICAgICAgICAgdmFyIGNvb2tpZSA9IFtdO1xuICAgICAgICAgIGNvb2tpZS5wdXNoKG5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTtcblxuICAgICAgICAgIGlmICh1dGlscy5pc051bWJlcihleHBpcmVzKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2V4cGlyZXM9JyArIG5ldyBEYXRlKGV4cGlyZXMpLnRvR01UU3RyaW5nKCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhwYXRoKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ3BhdGg9JyArIHBhdGgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhkb21haW4pKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnZG9tYWluPScgKyBkb21haW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzZWN1cmUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdzZWN1cmUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWUuam9pbignOyAnKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZWFkOiBmdW5jdGlvbiByZWFkKG5hbWUpIHtcbiAgICAgICAgICB2YXIgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58O1xcXFxzKikoJyArIG5hbWUgKyAnKT0oW147XSopJykpO1xuICAgICAgICAgIHJldHVybiAobWF0Y2ggPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbM10pIDogbnVsbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobmFtZSkge1xuICAgICAgICAgIHRoaXMud3JpdGUobmFtZSwgJycsIERhdGUubm93KCkgLSA4NjQwMDAwMCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52ICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUoKSB7fSxcbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZCgpIHsgcmV0dXJuIG51bGw7IH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICAgIH07XG4gICAgfSkoKVxuKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQWJzb2x1dGVVUkwodXJsKSB7XG4gIC8vIEEgVVJMIGlzIGNvbnNpZGVyZWQgYWJzb2x1dGUgaWYgaXQgYmVnaW5zIHdpdGggXCI8c2NoZW1lPjovL1wiIG9yIFwiLy9cIiAocHJvdG9jb2wtcmVsYXRpdmUgVVJMKS5cbiAgLy8gUkZDIDM5ODYgZGVmaW5lcyBzY2hlbWUgbmFtZSBhcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYmVnaW5uaW5nIHdpdGggYSBsZXR0ZXIgYW5kIGZvbGxvd2VkXG4gIC8vIGJ5IGFueSBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzLCBkaWdpdHMsIHBsdXMsIHBlcmlvZCwgb3IgaHlwaGVuLlxuICByZXR1cm4gL14oW2Etel1bYS16XFxkXFwrXFwtXFwuXSo6KT9cXC9cXC8vaS50ZXN0KHVybCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgc3BlY2lmaWVkIFVSTHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVVSTCBUaGUgcmVsYXRpdmUgVVJMXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgVVJMXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVsYXRpdmVVUkwpIHtcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcbiAgICA6IGJhc2VVUkw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8vIEhlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG52YXIgaWdub3JlRHVwbGljYXRlT2YgPSBbXG4gICdhZ2UnLCAnYXV0aG9yaXphdGlvbicsICdjb250ZW50LWxlbmd0aCcsICdjb250ZW50LXR5cGUnLCAnZXRhZycsXG4gICdleHBpcmVzJywgJ2Zyb20nLCAnaG9zdCcsICdpZi1tb2RpZmllZC1zaW5jZScsICdpZi11bm1vZGlmaWVkLXNpbmNlJyxcbiAgJ2xhc3QtbW9kaWZpZWQnLCAnbG9jYXRpb24nLCAnbWF4LWZvcndhcmRzJywgJ3Byb3h5LWF1dGhvcml6YXRpb24nLFxuICAncmVmZXJlcicsICdyZXRyeS1hZnRlcicsICd1c2VyLWFnZW50J1xuXTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUhlYWRlcnMoaGVhZGVycykge1xuICB2YXIgcGFyc2VkID0ge307XG4gIHZhciBrZXk7XG4gIHZhciB2YWw7XG4gIHZhciBpO1xuXG4gIGlmICghaGVhZGVycykgeyByZXR1cm4gcGFyc2VkOyB9XG5cbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLnNwbGl0KCdcXG4nKSwgZnVuY3Rpb24gcGFyc2VyKGxpbmUpIHtcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAga2V5ID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cigwLCBpKSkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKGkgKyAxKSk7XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBpZiAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2YuaW5kZXhPZihrZXkpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gKHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gOiBbXSkuY29uY2F0KFt2YWxdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIGhhdmUgZnVsbCBzdXBwb3J0IG9mIHRoZSBBUElzIG5lZWRlZCB0byB0ZXN0XG4gIC8vIHdoZXRoZXIgdGhlIHJlcXVlc3QgVVJMIGlzIG9mIHRoZSBzYW1lIG9yaWdpbiBhcyBjdXJyZW50IGxvY2F0aW9uLlxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICB2YXIgbXNpZSA9IC8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICB2YXIgdXJsUGFyc2luZ05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICB2YXIgb3JpZ2luVVJMO1xuXG4gICAgICAvKipcbiAgICAqIFBhcnNlIGEgVVJMIHRvIGRpc2NvdmVyIGl0J3MgY29tcG9uZW50c1xuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgVGhlIFVSTCB0byBiZSBwYXJzZWRcbiAgICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAgKi9cbiAgICAgIGZ1bmN0aW9uIHJlc29sdmVVUkwodXJsKSB7XG4gICAgICAgIHZhciBocmVmID0gdXJsO1xuXG4gICAgICAgIGlmIChtc2llKSB7XG4gICAgICAgIC8vIElFIG5lZWRzIGF0dHJpYnV0ZSBzZXQgdHdpY2UgdG8gbm9ybWFsaXplIHByb3BlcnRpZXNcbiAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcbiAgICAgICAgICBocmVmID0gdXJsUGFyc2luZ05vZGUuaHJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuXG4gICAgICAgIC8vIHVybFBhcnNpbmdOb2RlIHByb3ZpZGVzIHRoZSBVcmxVdGlscyBpbnRlcmZhY2UgLSBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsdXRpbHNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBocmVmOiB1cmxQYXJzaW5nTm9kZS5ocmVmLFxuICAgICAgICAgIHByb3RvY29sOiB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbCA/IHVybFBhcnNpbmdOb2RlLnByb3RvY29sLnJlcGxhY2UoLzokLywgJycpIDogJycsXG4gICAgICAgICAgaG9zdDogdXJsUGFyc2luZ05vZGUuaG9zdCxcbiAgICAgICAgICBzZWFyY2g6IHVybFBhcnNpbmdOb2RlLnNlYXJjaCA/IHVybFBhcnNpbmdOb2RlLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgJycpIDogJycsXG4gICAgICAgICAgaGFzaDogdXJsUGFyc2luZ05vZGUuaGFzaCA/IHVybFBhcnNpbmdOb2RlLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0bmFtZTogdXJsUGFyc2luZ05vZGUuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogdXJsUGFyc2luZ05vZGUucG9ydCxcbiAgICAgICAgICBwYXRobmFtZTogKHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSA/XG4gICAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZSA6XG4gICAgICAgICAgICAnLycgKyB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBvcmlnaW5VUkwgPSByZXNvbHZlVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcblxuICAgICAgLyoqXG4gICAgKiBEZXRlcm1pbmUgaWYgYSBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgY3VycmVudCBsb2NhdGlvblxuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0VVJMIFRoZSBVUkwgdG8gdGVzdFxuICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4sIG90aGVyd2lzZSBmYWxzZVxuICAgICovXG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKHJlcXVlc3RVUkwpIHtcbiAgICAgICAgdmFyIHBhcnNlZCA9ICh1dGlscy5pc1N0cmluZyhyZXF1ZXN0VVJMKSkgPyByZXNvbHZlVVJMKHJlcXVlc3RVUkwpIDogcmVxdWVzdFVSTDtcbiAgICAgICAgcmV0dXJuIChwYXJzZWQucHJvdG9jb2wgPT09IG9yaWdpblVSTC5wcm90b2NvbCAmJlxuICAgICAgICAgICAgcGFyc2VkLmhvc3QgPT09IG9yaWdpblVSTC5ob3N0KTtcbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52cyAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBzZXR0bGUgPSByZXF1aXJlKCcuLy4uL2NvcmUvc2V0dGxlJyk7XG52YXIgYnVpbGRGdWxsUGF0aCA9IHJlcXVpcmUoJy4uL2NvcmUvYnVpbGRGdWxsUGF0aCcpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKTtcbnZhciBodHRwcyA9IHJlcXVpcmUoJ2h0dHBzJyk7XG52YXIgaHR0cEZvbGxvdyA9IHJlcXVpcmUoJ2ZvbGxvdy1yZWRpcmVjdHMnKS5odHRwO1xudmFyIGh0dHBzRm9sbG93ID0gcmVxdWlyZSgnZm9sbG93LXJlZGlyZWN0cycpLmh0dHBzO1xudmFyIHVybCA9IHJlcXVpcmUoJ3VybCcpO1xudmFyIHpsaWIgPSByZXF1aXJlKCd6bGliJyk7XG52YXIgcGtnID0gcmVxdWlyZSgnLi8uLi8uLi9wYWNrYWdlLmpzb24nKTtcbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvY3JlYXRlRXJyb3InKTtcbnZhciBlbmhhbmNlRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL2VuaGFuY2VFcnJvcicpO1xuXG52YXIgaXNIdHRwcyA9IC9odHRwczo/LztcblxuLyoqXG4gKlxuICogQHBhcmFtIHtodHRwLkNsaWVudFJlcXVlc3RBcmdzfSBvcHRpb25zXG4gKiBAcGFyYW0ge0F4aW9zUHJveHlDb25maWd9IHByb3h5XG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb25cbiAqL1xuZnVuY3Rpb24gc2V0UHJveHkob3B0aW9ucywgcHJveHksIGxvY2F0aW9uKSB7XG4gIG9wdGlvbnMuaG9zdG5hbWUgPSBwcm94eS5ob3N0O1xuICBvcHRpb25zLmhvc3QgPSBwcm94eS5ob3N0O1xuICBvcHRpb25zLnBvcnQgPSBwcm94eS5wb3J0O1xuICBvcHRpb25zLnBhdGggPSBsb2NhdGlvbjtcblxuICAvLyBCYXNpYyBwcm94eSBhdXRob3JpemF0aW9uXG4gIGlmIChwcm94eS5hdXRoKSB7XG4gICAgdmFyIGJhc2U2NCA9IEJ1ZmZlci5mcm9tKHByb3h5LmF1dGgudXNlcm5hbWUgKyAnOicgKyBwcm94eS5hdXRoLnBhc3N3b3JkLCAndXRmOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBvcHRpb25zLmhlYWRlcnNbJ1Byb3h5LUF1dGhvcml6YXRpb24nXSA9ICdCYXNpYyAnICsgYmFzZTY0O1xuICB9XG5cbiAgLy8gSWYgYSBwcm94eSBpcyB1c2VkLCBhbnkgcmVkaXJlY3RzIG11c3QgYWxzbyBwYXNzIHRocm91Z2ggdGhlIHByb3h5XG4gIG9wdGlvbnMuYmVmb3JlUmVkaXJlY3QgPSBmdW5jdGlvbiBiZWZvcmVSZWRpcmVjdChyZWRpcmVjdGlvbikge1xuICAgIHJlZGlyZWN0aW9uLmhlYWRlcnMuaG9zdCA9IHJlZGlyZWN0aW9uLmhvc3Q7XG4gICAgc2V0UHJveHkocmVkaXJlY3Rpb24sIHByb3h5LCByZWRpcmVjdGlvbi5ocmVmKTtcbiAgfTtcbn1cblxuLyplc2xpbnQgY29uc2lzdGVudC1yZXR1cm46MCovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGh0dHBBZGFwdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hIdHRwUmVxdWVzdChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkge1xuICAgIHZhciByZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZSh2YWx1ZSkge1xuICAgICAgcmVzb2x2ZVByb21pc2UodmFsdWUpO1xuICAgIH07XG4gICAgdmFyIHJlamVjdCA9IGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkge1xuICAgICAgcmVqZWN0UHJvbWlzZSh2YWx1ZSk7XG4gICAgfTtcbiAgICB2YXIgZGF0YSA9IGNvbmZpZy5kYXRhO1xuICAgIHZhciBoZWFkZXJzID0gY29uZmlnLmhlYWRlcnM7XG5cbiAgICAvLyBTZXQgVXNlci1BZ2VudCAocmVxdWlyZWQgYnkgc29tZSBzZXJ2ZXJzKVxuICAgIC8vIE9ubHkgc2V0IGhlYWRlciBpZiBpdCBoYXNuJ3QgYmVlbiBzZXQgaW4gY29uZmlnXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9heGlvcy9heGlvcy9pc3N1ZXMvNjlcbiAgICBpZiAoIWhlYWRlcnNbJ1VzZXItQWdlbnQnXSAmJiAhaGVhZGVyc1sndXNlci1hZ2VudCddKSB7XG4gICAgICBoZWFkZXJzWydVc2VyLUFnZW50J10gPSAnYXhpb3MvJyArIHBrZy52ZXJzaW9uO1xuICAgIH1cblxuICAgIGlmIChkYXRhICYmICF1dGlscy5pc1N0cmVhbShkYXRhKSkge1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLi4uXG4gICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXIoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IEJ1ZmZlci5mcm9tKG5ldyBVaW50OEFycmF5KGRhdGEpKTtcbiAgICAgIH0gZWxzZSBpZiAodXRpbHMuaXNTdHJpbmcoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsICd1dGYtOCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICAgICAnRGF0YSBhZnRlciB0cmFuc2Zvcm1hdGlvbiBtdXN0IGJlIGEgc3RyaW5nLCBhbiBBcnJheUJ1ZmZlciwgYSBCdWZmZXIsIG9yIGEgU3RyZWFtJyxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBDb250ZW50LUxlbmd0aCBoZWFkZXIgaWYgZGF0YSBleGlzdHNcbiAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtTGVuZ3RoJ10gPSBkYXRhLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgdmFyIGF1dGggPSB1bmRlZmluZWQ7XG4gICAgaWYgKGNvbmZpZy5hdXRoKSB7XG4gICAgICB2YXIgdXNlcm5hbWUgPSBjb25maWcuYXV0aC51c2VybmFtZSB8fCAnJztcbiAgICAgIHZhciBwYXNzd29yZCA9IGNvbmZpZy5hdXRoLnBhc3N3b3JkIHx8ICcnO1xuICAgICAgYXV0aCA9IHVzZXJuYW1lICsgJzonICsgcGFzc3dvcmQ7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgdXJsXG4gICAgdmFyIGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG4gICAgdmFyIHBhcnNlZCA9IHVybC5wYXJzZShmdWxsUGF0aCk7XG4gICAgdmFyIHByb3RvY29sID0gcGFyc2VkLnByb3RvY29sIHx8ICdodHRwOic7XG5cbiAgICBpZiAoIWF1dGggJiYgcGFyc2VkLmF1dGgpIHtcbiAgICAgIHZhciB1cmxBdXRoID0gcGFyc2VkLmF1dGguc3BsaXQoJzonKTtcbiAgICAgIHZhciB1cmxVc2VybmFtZSA9IHVybEF1dGhbMF0gfHwgJyc7XG4gICAgICB2YXIgdXJsUGFzc3dvcmQgPSB1cmxBdXRoWzFdIHx8ICcnO1xuICAgICAgYXV0aCA9IHVybFVzZXJuYW1lICsgJzonICsgdXJsUGFzc3dvcmQ7XG4gICAgfVxuXG4gICAgaWYgKGF1dGgpIHtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzLkF1dGhvcml6YXRpb247XG4gICAgfVxuXG4gICAgdmFyIGlzSHR0cHNSZXF1ZXN0ID0gaXNIdHRwcy50ZXN0KHByb3RvY29sKTtcbiAgICB2YXIgYWdlbnQgPSBpc0h0dHBzUmVxdWVzdCA/IGNvbmZpZy5odHRwc0FnZW50IDogY29uZmlnLmh0dHBBZ2VudDtcblxuICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgcGF0aDogYnVpbGRVUkwocGFyc2VkLnBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXFw/LywgJycpLFxuICAgICAgbWV0aG9kOiBjb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgYWdlbnQ6IGFnZW50LFxuICAgICAgYWdlbnRzOiB7IGh0dHA6IGNvbmZpZy5odHRwQWdlbnQsIGh0dHBzOiBjb25maWcuaHR0cHNBZ2VudCB9LFxuICAgICAgYXV0aDogYXV0aFxuICAgIH07XG5cbiAgICBpZiAoY29uZmlnLnNvY2tldFBhdGgpIHtcbiAgICAgIG9wdGlvbnMuc29ja2V0UGF0aCA9IGNvbmZpZy5zb2NrZXRQYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLmhvc3RuYW1lID0gcGFyc2VkLmhvc3RuYW1lO1xuICAgICAgb3B0aW9ucy5wb3J0ID0gcGFyc2VkLnBvcnQ7XG4gICAgfVxuXG4gICAgdmFyIHByb3h5ID0gY29uZmlnLnByb3h5O1xuICAgIGlmICghcHJveHkgJiYgcHJveHkgIT09IGZhbHNlKSB7XG4gICAgICB2YXIgcHJveHlFbnYgPSBwcm90b2NvbC5zbGljZSgwLCAtMSkgKyAnX3Byb3h5JztcbiAgICAgIHZhciBwcm94eVVybCA9IHByb2Nlc3MuZW52W3Byb3h5RW52XSB8fCBwcm9jZXNzLmVudltwcm94eUVudi50b1VwcGVyQ2FzZSgpXTtcbiAgICAgIGlmIChwcm94eVVybCkge1xuICAgICAgICB2YXIgcGFyc2VkUHJveHlVcmwgPSB1cmwucGFyc2UocHJveHlVcmwpO1xuICAgICAgICB2YXIgbm9Qcm94eUVudiA9IHByb2Nlc3MuZW52Lm5vX3Byb3h5IHx8IHByb2Nlc3MuZW52Lk5PX1BST1hZO1xuICAgICAgICB2YXIgc2hvdWxkUHJveHkgPSB0cnVlO1xuXG4gICAgICAgIGlmIChub1Byb3h5RW52KSB7XG4gICAgICAgICAgdmFyIG5vUHJveHkgPSBub1Byb3h5RW52LnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIHRyaW0ocykge1xuICAgICAgICAgICAgcmV0dXJuIHMudHJpbSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgc2hvdWxkUHJveHkgPSAhbm9Qcm94eS5zb21lKGZ1bmN0aW9uIHByb3h5TWF0Y2gocHJveHlFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoIXByb3h5RWxlbWVudCkge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJveHlFbGVtZW50ID09PSAnKicpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJveHlFbGVtZW50WzBdID09PSAnLicgJiZcbiAgICAgICAgICAgICAgICBwYXJzZWQuaG9zdG5hbWUuc3Vic3RyKHBhcnNlZC5ob3N0bmFtZS5sZW5ndGggLSBwcm94eUVsZW1lbnQubGVuZ3RoKSA9PT0gcHJveHlFbGVtZW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFyc2VkLmhvc3RuYW1lID09PSBwcm94eUVsZW1lbnQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2hvdWxkUHJveHkpIHtcbiAgICAgICAgICBwcm94eSA9IHtcbiAgICAgICAgICAgIGhvc3Q6IHBhcnNlZFByb3h5VXJsLmhvc3RuYW1lLFxuICAgICAgICAgICAgcG9ydDogcGFyc2VkUHJveHlVcmwucG9ydCxcbiAgICAgICAgICAgIHByb3RvY29sOiBwYXJzZWRQcm94eVVybC5wcm90b2NvbFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAocGFyc2VkUHJveHlVcmwuYXV0aCkge1xuICAgICAgICAgICAgdmFyIHByb3h5VXJsQXV0aCA9IHBhcnNlZFByb3h5VXJsLmF1dGguc3BsaXQoJzonKTtcbiAgICAgICAgICAgIHByb3h5LmF1dGggPSB7XG4gICAgICAgICAgICAgIHVzZXJuYW1lOiBwcm94eVVybEF1dGhbMF0sXG4gICAgICAgICAgICAgIHBhc3N3b3JkOiBwcm94eVVybEF1dGhbMV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3h5KSB7XG4gICAgICBvcHRpb25zLmhlYWRlcnMuaG9zdCA9IHBhcnNlZC5ob3N0bmFtZSArIChwYXJzZWQucG9ydCA/ICc6JyArIHBhcnNlZC5wb3J0IDogJycpO1xuICAgICAgc2V0UHJveHkob3B0aW9ucywgcHJveHksIHByb3RvY29sICsgJy8vJyArIHBhcnNlZC5ob3N0bmFtZSArIChwYXJzZWQucG9ydCA/ICc6JyArIHBhcnNlZC5wb3J0IDogJycpICsgb3B0aW9ucy5wYXRoKTtcbiAgICB9XG5cbiAgICB2YXIgdHJhbnNwb3J0O1xuICAgIHZhciBpc0h0dHBzUHJveHkgPSBpc0h0dHBzUmVxdWVzdCAmJiAocHJveHkgPyBpc0h0dHBzLnRlc3QocHJveHkucHJvdG9jb2wpIDogdHJ1ZSk7XG4gICAgaWYgKGNvbmZpZy50cmFuc3BvcnQpIHtcbiAgICAgIHRyYW5zcG9ydCA9IGNvbmZpZy50cmFuc3BvcnQ7XG4gICAgfSBlbHNlIGlmIChjb25maWcubWF4UmVkaXJlY3RzID09PSAwKSB7XG4gICAgICB0cmFuc3BvcnQgPSBpc0h0dHBzUHJveHkgPyBodHRwcyA6IGh0dHA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb25maWcubWF4UmVkaXJlY3RzKSB7XG4gICAgICAgIG9wdGlvbnMubWF4UmVkaXJlY3RzID0gY29uZmlnLm1heFJlZGlyZWN0cztcbiAgICAgIH1cbiAgICAgIHRyYW5zcG9ydCA9IGlzSHR0cHNQcm94eSA/IGh0dHBzRm9sbG93IDogaHR0cEZvbGxvdztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLm1heEJvZHlMZW5ndGggPiAtMSkge1xuICAgICAgb3B0aW9ucy5tYXhCb2R5TGVuZ3RoID0gY29uZmlnLm1heEJvZHlMZW5ndGg7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSByZXF1ZXN0XG4gICAgdmFyIHJlcSA9IHRyYW5zcG9ydC5yZXF1ZXN0KG9wdGlvbnMsIGZ1bmN0aW9uIGhhbmRsZVJlc3BvbnNlKHJlcykge1xuICAgICAgaWYgKHJlcS5hYm9ydGVkKSByZXR1cm47XG5cbiAgICAgIC8vIHVuY29tcHJlc3MgdGhlIHJlc3BvbnNlIGJvZHkgdHJhbnNwYXJlbnRseSBpZiByZXF1aXJlZFxuICAgICAgdmFyIHN0cmVhbSA9IHJlcztcblxuICAgICAgLy8gcmV0dXJuIHRoZSBsYXN0IHJlcXVlc3QgaW4gY2FzZSBvZiByZWRpcmVjdHNcbiAgICAgIHZhciBsYXN0UmVxdWVzdCA9IHJlcy5yZXEgfHwgcmVxO1xuXG5cbiAgICAgIC8vIGlmIG5vIGNvbnRlbnQsIGlzIEhFQUQgcmVxdWVzdCBvciBkZWNvbXByZXNzIGRpc2FibGVkIHdlIHNob3VsZCBub3QgZGVjb21wcmVzc1xuICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICE9PSAyMDQgJiYgbGFzdFJlcXVlc3QubWV0aG9kICE9PSAnSEVBRCcgJiYgY29uZmlnLmRlY29tcHJlc3MgIT09IGZhbHNlKSB7XG4gICAgICAgIHN3aXRjaCAocmVzLmhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXSkge1xuICAgICAgICAvKmVzbGludCBkZWZhdWx0LWNhc2U6MCovXG4gICAgICAgIGNhc2UgJ2d6aXAnOlxuICAgICAgICBjYXNlICdjb21wcmVzcyc6XG4gICAgICAgIGNhc2UgJ2RlZmxhdGUnOlxuICAgICAgICAvLyBhZGQgdGhlIHVuemlwcGVyIHRvIHRoZSBib2R5IHN0cmVhbSBwcm9jZXNzaW5nIHBpcGVsaW5lXG4gICAgICAgICAgc3RyZWFtID0gc3RyZWFtLnBpcGUoemxpYi5jcmVhdGVVbnppcCgpKTtcblxuICAgICAgICAgIC8vIHJlbW92ZSB0aGUgY29udGVudC1lbmNvZGluZyBpbiBvcmRlciB0byBub3QgY29uZnVzZSBkb3duc3RyZWFtIG9wZXJhdGlvbnNcbiAgICAgICAgICBkZWxldGUgcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgICAgIHN0YXR1czogcmVzLnN0YXR1c0NvZGUsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlcy5zdGF0dXNNZXNzYWdlLFxuICAgICAgICBoZWFkZXJzOiByZXMuaGVhZGVycyxcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIHJlcXVlc3Q6IGxhc3RSZXF1ZXN0XG4gICAgICB9O1xuXG4gICAgICBpZiAoY29uZmlnLnJlc3BvbnNlVHlwZSA9PT0gJ3N0cmVhbScpIHtcbiAgICAgICAgcmVzcG9uc2UuZGF0YSA9IHN0cmVhbTtcbiAgICAgICAgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3BvbnNlQnVmZmVyID0gW107XG4gICAgICAgIHN0cmVhbS5vbignZGF0YScsIGZ1bmN0aW9uIGhhbmRsZVN0cmVhbURhdGEoY2h1bmspIHtcbiAgICAgICAgICByZXNwb25zZUJ1ZmZlci5wdXNoKGNodW5rKTtcblxuICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgY29udGVudCBsZW5ndGggaXMgbm90IG92ZXIgdGhlIG1heENvbnRlbnRMZW5ndGggaWYgc3BlY2lmaWVkXG4gICAgICAgICAgaWYgKGNvbmZpZy5tYXhDb250ZW50TGVuZ3RoID4gLTEgJiYgQnVmZmVyLmNvbmNhdChyZXNwb25zZUJ1ZmZlcikubGVuZ3RoID4gY29uZmlnLm1heENvbnRlbnRMZW5ndGgpIHtcbiAgICAgICAgICAgIHN0cmVhbS5kZXN0cm95KCk7XG4gICAgICAgICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ21heENvbnRlbnRMZW5ndGggc2l6ZSBvZiAnICsgY29uZmlnLm1heENvbnRlbnRMZW5ndGggKyAnIGV4Y2VlZGVkJyxcbiAgICAgICAgICAgICAgY29uZmlnLCBudWxsLCBsYXN0UmVxdWVzdCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIGhhbmRsZVN0cmVhbUVycm9yKGVycikge1xuICAgICAgICAgIGlmIChyZXEuYWJvcnRlZCkgcmV0dXJuO1xuICAgICAgICAgIHJlamVjdChlbmhhbmNlRXJyb3IoZXJyLCBjb25maWcsIG51bGwsIGxhc3RSZXF1ZXN0KSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24gaGFuZGxlU3RyZWFtRW5kKCkge1xuICAgICAgICAgIHZhciByZXNwb25zZURhdGEgPSBCdWZmZXIuY29uY2F0KHJlc3BvbnNlQnVmZmVyKTtcbiAgICAgICAgICBpZiAoY29uZmlnLnJlc3BvbnNlVHlwZSAhPT0gJ2FycmF5YnVmZmVyJykge1xuICAgICAgICAgICAgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2VEYXRhLnRvU3RyaW5nKGNvbmZpZy5yZXNwb25zZUVuY29kaW5nKTtcbiAgICAgICAgICAgIGlmICghY29uZmlnLnJlc3BvbnNlRW5jb2RpbmcgfHwgY29uZmlnLnJlc3BvbnNlRW5jb2RpbmcgPT09ICd1dGY4Jykge1xuICAgICAgICAgICAgICByZXNwb25zZURhdGEgPSB1dGlscy5zdHJpcEJPTShyZXNwb25zZURhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc3BvbnNlLmRhdGEgPSByZXNwb25zZURhdGE7XG4gICAgICAgICAgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEhhbmRsZSBlcnJvcnNcbiAgICByZXEub24oJ2Vycm9yJywgZnVuY3Rpb24gaGFuZGxlUmVxdWVzdEVycm9yKGVycikge1xuICAgICAgaWYgKHJlcS5hYm9ydGVkICYmIGVyci5jb2RlICE9PSAnRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUycpIHJldHVybjtcbiAgICAgIHJlamVjdChlbmhhbmNlRXJyb3IoZXJyLCBjb25maWcsIG51bGwsIHJlcSkpO1xuICAgIH0pO1xuXG4gICAgLy8gSGFuZGxlIHJlcXVlc3QgdGltZW91dFxuICAgIGlmIChjb25maWcudGltZW91dCkge1xuICAgICAgLy8gU29tZXRpbWUsIHRoZSByZXNwb25zZSB3aWxsIGJlIHZlcnkgc2xvdywgYW5kIGRvZXMgbm90IHJlc3BvbmQsIHRoZSBjb25uZWN0IGV2ZW50IHdpbGwgYmUgYmxvY2sgYnkgZXZlbnQgbG9vcCBzeXN0ZW0uXG4gICAgICAvLyBBbmQgdGltZXIgY2FsbGJhY2sgd2lsbCBiZSBmaXJlZCwgYW5kIGFib3J0KCkgd2lsbCBiZSBpbnZva2VkIGJlZm9yZSBjb25uZWN0aW9uLCB0aGVuIGdldCBcInNvY2tldCBoYW5nIHVwXCIgYW5kIGNvZGUgRUNPTk5SRVNFVC5cbiAgICAgIC8vIEF0IHRoaXMgdGltZSwgaWYgd2UgaGF2ZSBhIGxhcmdlIG51bWJlciBvZiByZXF1ZXN0LCBub2RlanMgd2lsbCBoYW5nIHVwIHNvbWUgc29ja2V0IG9uIGJhY2tncm91bmQuIGFuZCB0aGUgbnVtYmVyIHdpbGwgdXAgYW5kIHVwLlxuICAgICAgLy8gQW5kIHRoZW4gdGhlc2Ugc29ja2V0IHdoaWNoIGJlIGhhbmcgdXAgd2lsbCBkZXZvcmluZyBDUFUgbGl0dGxlIGJ5IGxpdHRsZS5cbiAgICAgIC8vIENsaWVudFJlcXVlc3Quc2V0VGltZW91dCB3aWxsIGJlIGZpcmVkIG9uIHRoZSBzcGVjaWZ5IG1pbGxpc2Vjb25kcywgYW5kIGNhbiBtYWtlIHN1cmUgdGhhdCBhYm9ydCgpIHdpbGwgYmUgZmlyZWQgYWZ0ZXIgY29ubmVjdC5cbiAgICAgIHJlcS5zZXRUaW1lb3V0KGNvbmZpZy50aW1lb3V0LCBmdW5jdGlvbiBoYW5kbGVSZXF1ZXN0VGltZW91dCgpIHtcbiAgICAgICAgcmVxLmFib3J0KCk7XG4gICAgICAgIHJlamVjdChjcmVhdGVFcnJvcigndGltZW91dCBvZiAnICsgY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnLCBjb25maWcsICdFQ09OTkFCT1JURUQnLCByZXEpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICAgIC8vIEhhbmRsZSBjYW5jZWxsYXRpb25cbiAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbi5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25DYW5jZWxlZChjYW5jZWwpIHtcbiAgICAgICAgaWYgKHJlcS5hYm9ydGVkKSByZXR1cm47XG5cbiAgICAgICAgcmVxLmFib3J0KCk7XG4gICAgICAgIHJlamVjdChjYW5jZWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU2VuZCB0aGUgcmVxdWVzdFxuICAgIGlmICh1dGlscy5pc1N0cmVhbShkYXRhKSkge1xuICAgICAgZGF0YS5vbignZXJyb3InLCBmdW5jdGlvbiBoYW5kbGVTdHJlYW1FcnJvcihlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVuaGFuY2VFcnJvcihlcnIsIGNvbmZpZywgbnVsbCwgcmVxKSk7XG4gICAgICB9KS5waXBlKHJlcSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcS5lbmQoZGF0YSk7XG4gICAgfVxuICB9KTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJhc3NlcnRcIik7IiwidmFyIGRlYnVnO1xudHJ5IHtcbiAgLyogZXNsaW50IGdsb2JhbC1yZXF1aXJlOiBvZmYgKi9cbiAgZGVidWcgPSByZXF1aXJlKFwiZGVidWdcIikoXCJmb2xsb3ctcmVkaXJlY3RzXCIpO1xufVxuY2F0Y2ggKGVycm9yKSB7XG4gIGRlYnVnID0gZnVuY3Rpb24gKCkgeyAvKiAqLyB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBkZWJ1ZztcbiIsIi8qKlxuICogRGV0ZWN0IEVsZWN0cm9uIHJlbmRlcmVyIC8gbndqcyBwcm9jZXNzLCB3aGljaCBpcyBub2RlLCBidXQgd2Ugc2hvdWxkXG4gKiB0cmVhdCBhcyBhIGJyb3dzZXIuXG4gKi9cblxuaWYgKHR5cGVvZiBwcm9jZXNzID09PSAndW5kZWZpbmVkJyB8fCBwcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcicgfHwgcHJvY2Vzcy5icm93c2VyID09PSB0cnVlIHx8IHByb2Nlc3MuX19ud2pzKSB7XG5cdG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9icm93c2VyLmpzJyk7XG59IGVsc2Uge1xuXHRtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbm9kZS5qcycpO1xufVxuIiwiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbi8qKlxuICogVGhpcyBpcyB0aGUgd2ViIGJyb3dzZXIgaW1wbGVtZW50YXRpb24gb2YgYGRlYnVnKClgLlxuICovXG5cbmV4cG9ydHMuZm9ybWF0QXJncyA9IGZvcm1hdEFyZ3M7XG5leHBvcnRzLnNhdmUgPSBzYXZlO1xuZXhwb3J0cy5sb2FkID0gbG9hZDtcbmV4cG9ydHMudXNlQ29sb3JzID0gdXNlQ29sb3JzO1xuZXhwb3J0cy5zdG9yYWdlID0gbG9jYWxzdG9yYWdlKCk7XG5leHBvcnRzLmRlc3Ryb3kgPSAoKCkgPT4ge1xuXHRsZXQgd2FybmVkID0gZmFsc2U7XG5cblx0cmV0dXJuICgpID0+IHtcblx0XHRpZiAoIXdhcm5lZCkge1xuXHRcdFx0d2FybmVkID0gdHJ1ZTtcblx0XHRcdGNvbnNvbGUud2FybignSW5zdGFuY2UgbWV0aG9kIGBkZWJ1Zy5kZXN0cm95KClgIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBgZGVidWdgLicpO1xuXHRcdH1cblx0fTtcbn0pKCk7XG5cbi8qKlxuICogQ29sb3JzLlxuICovXG5cbmV4cG9ydHMuY29sb3JzID0gW1xuXHQnIzAwMDBDQycsXG5cdCcjMDAwMEZGJyxcblx0JyMwMDMzQ0MnLFxuXHQnIzAwMzNGRicsXG5cdCcjMDA2NkNDJyxcblx0JyMwMDY2RkYnLFxuXHQnIzAwOTlDQycsXG5cdCcjMDA5OUZGJyxcblx0JyMwMENDMDAnLFxuXHQnIzAwQ0MzMycsXG5cdCcjMDBDQzY2Jyxcblx0JyMwMENDOTknLFxuXHQnIzAwQ0NDQycsXG5cdCcjMDBDQ0ZGJyxcblx0JyMzMzAwQ0MnLFxuXHQnIzMzMDBGRicsXG5cdCcjMzMzM0NDJyxcblx0JyMzMzMzRkYnLFxuXHQnIzMzNjZDQycsXG5cdCcjMzM2NkZGJyxcblx0JyMzMzk5Q0MnLFxuXHQnIzMzOTlGRicsXG5cdCcjMzNDQzAwJyxcblx0JyMzM0NDMzMnLFxuXHQnIzMzQ0M2NicsXG5cdCcjMzNDQzk5Jyxcblx0JyMzM0NDQ0MnLFxuXHQnIzMzQ0NGRicsXG5cdCcjNjYwMENDJyxcblx0JyM2NjAwRkYnLFxuXHQnIzY2MzNDQycsXG5cdCcjNjYzM0ZGJyxcblx0JyM2NkNDMDAnLFxuXHQnIzY2Q0MzMycsXG5cdCcjOTkwMENDJyxcblx0JyM5OTAwRkYnLFxuXHQnIzk5MzNDQycsXG5cdCcjOTkzM0ZGJyxcblx0JyM5OUNDMDAnLFxuXHQnIzk5Q0MzMycsXG5cdCcjQ0MwMDAwJyxcblx0JyNDQzAwMzMnLFxuXHQnI0NDMDA2NicsXG5cdCcjQ0MwMDk5Jyxcblx0JyNDQzAwQ0MnLFxuXHQnI0NDMDBGRicsXG5cdCcjQ0MzMzAwJyxcblx0JyNDQzMzMzMnLFxuXHQnI0NDMzM2NicsXG5cdCcjQ0MzMzk5Jyxcblx0JyNDQzMzQ0MnLFxuXHQnI0NDMzNGRicsXG5cdCcjQ0M2NjAwJyxcblx0JyNDQzY2MzMnLFxuXHQnI0NDOTkwMCcsXG5cdCcjQ0M5OTMzJyxcblx0JyNDQ0NDMDAnLFxuXHQnI0NDQ0MzMycsXG5cdCcjRkYwMDAwJyxcblx0JyNGRjAwMzMnLFxuXHQnI0ZGMDA2NicsXG5cdCcjRkYwMDk5Jyxcblx0JyNGRjAwQ0MnLFxuXHQnI0ZGMDBGRicsXG5cdCcjRkYzMzAwJyxcblx0JyNGRjMzMzMnLFxuXHQnI0ZGMzM2NicsXG5cdCcjRkYzMzk5Jyxcblx0JyNGRjMzQ0MnLFxuXHQnI0ZGMzNGRicsXG5cdCcjRkY2NjAwJyxcblx0JyNGRjY2MzMnLFxuXHQnI0ZGOTkwMCcsXG5cdCcjRkY5OTMzJyxcblx0JyNGRkNDMDAnLFxuXHQnI0ZGQ0MzMydcbl07XG5cbi8qKlxuICogQ3VycmVudGx5IG9ubHkgV2ViS2l0LWJhc2VkIFdlYiBJbnNwZWN0b3JzLCBGaXJlZm94ID49IHYzMSxcbiAqIGFuZCB0aGUgRmlyZWJ1ZyBleHRlbnNpb24gKGFueSBGaXJlZm94IHZlcnNpb24pIGFyZSBrbm93blxuICogdG8gc3VwcG9ydCBcIiVjXCIgQ1NTIGN1c3RvbWl6YXRpb25zLlxuICpcbiAqIFRPRE86IGFkZCBhIGBsb2NhbFN0b3JhZ2VgIHZhcmlhYmxlIHRvIGV4cGxpY2l0bHkgZW5hYmxlL2Rpc2FibGUgY29sb3JzXG4gKi9cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmZ1bmN0aW9uIHVzZUNvbG9ycygpIHtcblx0Ly8gTkI6IEluIGFuIEVsZWN0cm9uIHByZWxvYWQgc2NyaXB0LCBkb2N1bWVudCB3aWxsIGJlIGRlZmluZWQgYnV0IG5vdCBmdWxseVxuXHQvLyBpbml0aWFsaXplZC4gU2luY2Ugd2Uga25vdyB3ZSdyZSBpbiBDaHJvbWUsIHdlJ2xsIGp1c3QgZGV0ZWN0IHRoaXMgY2FzZVxuXHQvLyBleHBsaWNpdGx5XG5cdGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucHJvY2VzcyAmJiAod2luZG93LnByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJyB8fCB3aW5kb3cucHJvY2Vzcy5fX253anMpKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvLyBJbnRlcm5ldCBFeHBsb3JlciBhbmQgRWRnZSBkbyBub3Qgc3VwcG9ydCBjb2xvcnMuXG5cdGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50ICYmIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvKGVkZ2V8dHJpZGVudClcXC8oXFxkKykvKSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8vIElzIHdlYmtpdD8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTY0NTk2MDYvMzc2NzczXG5cdC8vIGRvY3VtZW50IGlzIHVuZGVmaW5lZCBpbiByZWFjdC1uYXRpdmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC1uYXRpdmUvcHVsbC8xNjMyXG5cdHJldHVybiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5XZWJraXRBcHBlYXJhbmNlKSB8fFxuXHRcdC8vIElzIGZpcmVidWc/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM5ODEyMC8zNzY3NzNcblx0XHQodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmNvbnNvbGUgJiYgKHdpbmRvdy5jb25zb2xlLmZpcmVidWcgfHwgKHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiAmJiB3aW5kb3cuY29uc29sZS50YWJsZSkpKSB8fFxuXHRcdC8vIElzIGZpcmVmb3ggPj0gdjMxP1xuXHRcdC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvVG9vbHMvV2ViX0NvbnNvbGUjU3R5bGluZ19tZXNzYWdlc1xuXHRcdCh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50ICYmIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS8pICYmIHBhcnNlSW50KFJlZ0V4cC4kMSwgMTApID49IDMxKSB8fFxuXHRcdC8vIERvdWJsZSBjaGVjayB3ZWJraXQgaW4gdXNlckFnZW50IGp1c3QgaW4gY2FzZSB3ZSBhcmUgaW4gYSB3b3JrZXJcblx0XHQodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2FwcGxld2Via2l0XFwvKFxcZCspLykpO1xufVxuXG4vKipcbiAqIENvbG9yaXplIGxvZyBhcmd1bWVudHMgaWYgZW5hYmxlZC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZvcm1hdEFyZ3MoYXJncykge1xuXHRhcmdzWzBdID0gKHRoaXMudXNlQ29sb3JzID8gJyVjJyA6ICcnKSArXG5cdFx0dGhpcy5uYW1lc3BhY2UgK1xuXHRcdCh0aGlzLnVzZUNvbG9ycyA/ICcgJWMnIDogJyAnKSArXG5cdFx0YXJnc1swXSArXG5cdFx0KHRoaXMudXNlQ29sb3JzID8gJyVjICcgOiAnICcpICtcblx0XHQnKycgKyBtb2R1bGUuZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpO1xuXG5cdGlmICghdGhpcy51c2VDb2xvcnMpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBjID0gJ2NvbG9yOiAnICsgdGhpcy5jb2xvcjtcblx0YXJncy5zcGxpY2UoMSwgMCwgYywgJ2NvbG9yOiBpbmhlcml0Jyk7XG5cblx0Ly8gVGhlIGZpbmFsIFwiJWNcIiBpcyBzb21ld2hhdCB0cmlja3ksIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgb3RoZXJcblx0Ly8gYXJndW1lbnRzIHBhc3NlZCBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSAlYywgc28gd2UgbmVlZCB0b1xuXHQvLyBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IGluZGV4IHRvIGluc2VydCB0aGUgQ1NTIGludG9cblx0bGV0IGluZGV4ID0gMDtcblx0bGV0IGxhc3RDID0gMDtcblx0YXJnc1swXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csIG1hdGNoID0+IHtcblx0XHRpZiAobWF0Y2ggPT09ICclJScpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aW5kZXgrKztcblx0XHRpZiAobWF0Y2ggPT09ICclYycpIHtcblx0XHRcdC8vIFdlIG9ubHkgYXJlIGludGVyZXN0ZWQgaW4gdGhlICpsYXN0KiAlY1xuXHRcdFx0Ly8gKHRoZSB1c2VyIG1heSBoYXZlIHByb3ZpZGVkIHRoZWlyIG93bilcblx0XHRcdGxhc3RDID0gaW5kZXg7XG5cdFx0fVxuXHR9KTtcblxuXHRhcmdzLnNwbGljZShsYXN0QywgMCwgYyk7XG59XG5cbi8qKlxuICogSW52b2tlcyBgY29uc29sZS5kZWJ1ZygpYCB3aGVuIGF2YWlsYWJsZS5cbiAqIE5vLW9wIHdoZW4gYGNvbnNvbGUuZGVidWdgIGlzIG5vdCBhIFwiZnVuY3Rpb25cIi5cbiAqIElmIGBjb25zb2xlLmRlYnVnYCBpcyBub3QgYXZhaWxhYmxlLCBmYWxscyBiYWNrXG4gKiB0byBgY29uc29sZS5sb2dgLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cbmV4cG9ydHMubG9nID0gY29uc29sZS5kZWJ1ZyB8fCBjb25zb2xlLmxvZyB8fCAoKCkgPT4ge30pO1xuXG4vKipcbiAqIFNhdmUgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gc2F2ZShuYW1lc3BhY2VzKSB7XG5cdHRyeSB7XG5cdFx0aWYgKG5hbWVzcGFjZXMpIHtcblx0XHRcdGV4cG9ydHMuc3RvcmFnZS5zZXRJdGVtKCdkZWJ1ZycsIG5hbWVzcGFjZXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRleHBvcnRzLnN0b3JhZ2UucmVtb3ZlSXRlbSgnZGVidWcnKTtcblx0XHR9XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0Ly8gU3dhbGxvd1xuXHRcdC8vIFhYWCAoQFFpeC0pIHNob3VsZCB3ZSBiZSBsb2dnaW5nIHRoZXNlP1xuXHR9XG59XG5cbi8qKlxuICogTG9hZCBgbmFtZXNwYWNlc2AuXG4gKlxuICogQHJldHVybiB7U3RyaW5nfSByZXR1cm5zIHRoZSBwcmV2aW91c2x5IHBlcnNpc3RlZCBkZWJ1ZyBtb2Rlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGxvYWQoKSB7XG5cdGxldCByO1xuXHR0cnkge1xuXHRcdHIgPSBleHBvcnRzLnN0b3JhZ2UuZ2V0SXRlbSgnZGVidWcnKTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHQvLyBTd2FsbG93XG5cdFx0Ly8gWFhYIChAUWl4LSkgc2hvdWxkIHdlIGJlIGxvZ2dpbmcgdGhlc2U/XG5cdH1cblxuXHQvLyBJZiBkZWJ1ZyBpc24ndCBzZXQgaW4gTFMsIGFuZCB3ZSdyZSBpbiBFbGVjdHJvbiwgdHJ5IHRvIGxvYWQgJERFQlVHXG5cdGlmICghciAmJiB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ2VudicgaW4gcHJvY2Vzcykge1xuXHRcdHIgPSBwcm9jZXNzLmVudi5ERUJVRztcblx0fVxuXG5cdHJldHVybiByO1xufVxuXG4vKipcbiAqIExvY2Fsc3RvcmFnZSBhdHRlbXB0cyB0byByZXR1cm4gdGhlIGxvY2Fsc3RvcmFnZS5cbiAqXG4gKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHNhZmFyaSB0aHJvd3NcbiAqIHdoZW4gYSB1c2VyIGRpc2FibGVzIGNvb2tpZXMvbG9jYWxzdG9yYWdlXG4gKiBhbmQgeW91IGF0dGVtcHQgdG8gYWNjZXNzIGl0LlxuICpcbiAqIEByZXR1cm4ge0xvY2FsU3RvcmFnZX1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvY2Fsc3RvcmFnZSgpIHtcblx0dHJ5IHtcblx0XHQvLyBUVk1MS2l0IChBcHBsZSBUViBKUyBSdW50aW1lKSBkb2VzIG5vdCBoYXZlIGEgd2luZG93IG9iamVjdCwganVzdCBsb2NhbFN0b3JhZ2UgaW4gdGhlIGdsb2JhbCBjb250ZXh0XG5cdFx0Ly8gVGhlIEJyb3dzZXIgYWxzbyBoYXMgbG9jYWxTdG9yYWdlIGluIHRoZSBnbG9iYWwgY29udGV4dC5cblx0XHRyZXR1cm4gbG9jYWxTdG9yYWdlO1xuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdC8vIFN3YWxsb3dcblx0XHQvLyBYWFggKEBRaXgtKSBzaG91bGQgd2UgYmUgbG9nZ2luZyB0aGVzZT9cblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY29tbW9uJykoZXhwb3J0cyk7XG5cbmNvbnN0IHtmb3JtYXR0ZXJzfSA9IG1vZHVsZS5leHBvcnRzO1xuXG4vKipcbiAqIE1hcCAlaiB0byBgSlNPTi5zdHJpbmdpZnkoKWAsIHNpbmNlIG5vIFdlYiBJbnNwZWN0b3JzIGRvIHRoYXQgYnkgZGVmYXVsdC5cbiAqL1xuXG5mb3JtYXR0ZXJzLmogPSBmdW5jdGlvbiAodikge1xuXHR0cnkge1xuXHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh2KTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRyZXR1cm4gJ1tVbmV4cGVjdGVkSlNPTlBhcnNlRXJyb3JdOiAnICsgZXJyb3IubWVzc2FnZTtcblx0fVxufTtcbiIsIi8qKlxuICogSGVscGVycy5cbiAqL1xuXG52YXIgcyA9IDEwMDA7XG52YXIgbSA9IHMgKiA2MDtcbnZhciBoID0gbSAqIDYwO1xudmFyIGQgPSBoICogMjQ7XG52YXIgeSA9IGQgKiAzNjUuMjU7XG5cbi8qKlxuICogUGFyc2Ugb3IgZm9ybWF0IHRoZSBnaXZlbiBgdmFsYC5cbiAqXG4gKiBPcHRpb25zOlxuICpcbiAqICAtIGBsb25nYCB2ZXJib3NlIGZvcm1hdHRpbmcgW2ZhbHNlXVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0gdmFsXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAdGhyb3dzIHtFcnJvcn0gdGhyb3cgYW4gZXJyb3IgaWYgdmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSBudW1iZXJcbiAqIEByZXR1cm4ge1N0cmluZ3xOdW1iZXJ9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odmFsLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIGlmICh0eXBlID09PSAnc3RyaW5nJyAmJiB2YWwubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwYXJzZSh2YWwpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInICYmIGlzTmFOKHZhbCkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMubG9uZyA/IGZtdExvbmcodmFsKSA6IGZtdFNob3J0KHZhbCk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICd2YWwgaXMgbm90IGEgbm9uLWVtcHR5IHN0cmluZyBvciBhIHZhbGlkIG51bWJlci4gdmFsPScgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkodmFsKVxuICApO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gYHN0cmAgYW5kIHJldHVybiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7TnVtYmVyfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2Uoc3RyKSB7XG4gIHN0ciA9IFN0cmluZyhzdHIpO1xuICBpZiAoc3RyLmxlbmd0aCA+IDEwMCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbWF0Y2ggPSAvXigoPzpcXGQrKT9cXC4/XFxkKykgKihtaWxsaXNlY29uZHM/fG1zZWNzP3xtc3xzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHllYXJzP3x5cnM/fHkpPyQvaS5leGVjKFxuICAgIHN0clxuICApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7XG4gIHZhciB0eXBlID0gKG1hdGNoWzJdIHx8ICdtcycpLnRvTG93ZXJDYXNlKCk7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3llYXJzJzpcbiAgICBjYXNlICd5ZWFyJzpcbiAgICBjYXNlICd5cnMnOlxuICAgIGNhc2UgJ3lyJzpcbiAgICBjYXNlICd5JzpcbiAgICAgIHJldHVybiBuICogeTtcbiAgICBjYXNlICdkYXlzJzpcbiAgICBjYXNlICdkYXknOlxuICAgIGNhc2UgJ2QnOlxuICAgICAgcmV0dXJuIG4gKiBkO1xuICAgIGNhc2UgJ2hvdXJzJzpcbiAgICBjYXNlICdob3VyJzpcbiAgICBjYXNlICdocnMnOlxuICAgIGNhc2UgJ2hyJzpcbiAgICBjYXNlICdoJzpcbiAgICAgIHJldHVybiBuICogaDtcbiAgICBjYXNlICdtaW51dGVzJzpcbiAgICBjYXNlICdtaW51dGUnOlxuICAgIGNhc2UgJ21pbnMnOlxuICAgIGNhc2UgJ21pbic6XG4gICAgY2FzZSAnbSc6XG4gICAgICByZXR1cm4gbiAqIG07XG4gICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgY2FzZSAnc2Vjb25kJzpcbiAgICBjYXNlICdzZWNzJzpcbiAgICBjYXNlICdzZWMnOlxuICAgIGNhc2UgJ3MnOlxuICAgICAgcmV0dXJuIG4gKiBzO1xuICAgIGNhc2UgJ21pbGxpc2Vjb25kcyc6XG4gICAgY2FzZSAnbWlsbGlzZWNvbmQnOlxuICAgIGNhc2UgJ21zZWNzJzpcbiAgICBjYXNlICdtc2VjJzpcbiAgICBjYXNlICdtcyc6XG4gICAgICByZXR1cm4gbjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFNob3J0IGZvcm1hdCBmb3IgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbXNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZtdFNob3J0KG1zKSB7XG4gIGlmIChtcyA+PSBkKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBkKSArICdkJztcbiAgfVxuICBpZiAobXMgPj0gaCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gaCkgKyAnaCc7XG4gIH1cbiAgaWYgKG1zID49IG0pIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIG0pICsgJ20nO1xuICB9XG4gIGlmIChtcyA+PSBzKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBzKSArICdzJztcbiAgfVxuICByZXR1cm4gbXMgKyAnbXMnO1xufVxuXG4vKipcbiAqIExvbmcgZm9ybWF0IGZvciBgbXNgLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZm10TG9uZyhtcykge1xuICByZXR1cm4gcGx1cmFsKG1zLCBkLCAnZGF5JykgfHxcbiAgICBwbHVyYWwobXMsIGgsICdob3VyJykgfHxcbiAgICBwbHVyYWwobXMsIG0sICdtaW51dGUnKSB8fFxuICAgIHBsdXJhbChtcywgcywgJ3NlY29uZCcpIHx8XG4gICAgbXMgKyAnIG1zJztcbn1cblxuLyoqXG4gKiBQbHVyYWxpemF0aW9uIGhlbHBlci5cbiAqL1xuXG5mdW5jdGlvbiBwbHVyYWwobXMsIG4sIG5hbWUpIHtcbiAgaWYgKG1zIDwgbikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAobXMgPCBuICogMS41KSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IobXMgLyBuKSArICcgJyArIG5hbWU7XG4gIH1cbiAgcmV0dXJuIE1hdGguY2VpbChtcyAvIG4pICsgJyAnICsgbmFtZSArICdzJztcbn1cbiIsIi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG5jb25zdCB0dHkgPSByZXF1aXJlKCd0dHknKTtcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgTm9kZS5qcyBpbXBsZW1lbnRhdGlvbiBvZiBgZGVidWcoKWAuXG4gKi9cblxuZXhwb3J0cy5pbml0ID0gaW5pdDtcbmV4cG9ydHMubG9nID0gbG9nO1xuZXhwb3J0cy5mb3JtYXRBcmdzID0gZm9ybWF0QXJncztcbmV4cG9ydHMuc2F2ZSA9IHNhdmU7XG5leHBvcnRzLmxvYWQgPSBsb2FkO1xuZXhwb3J0cy51c2VDb2xvcnMgPSB1c2VDb2xvcnM7XG5leHBvcnRzLmRlc3Ryb3kgPSB1dGlsLmRlcHJlY2F0ZShcblx0KCkgPT4ge30sXG5cdCdJbnN0YW5jZSBtZXRob2QgYGRlYnVnLmRlc3Ryb3koKWAgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvZXMgYW55dGhpbmcuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIG9mIGBkZWJ1Z2AuJ1xuKTtcblxuLyoqXG4gKiBDb2xvcnMuXG4gKi9cblxuZXhwb3J0cy5jb2xvcnMgPSBbNiwgMiwgMywgNCwgNSwgMV07XG5cbnRyeSB7XG5cdC8vIE9wdGlvbmFsIGRlcGVuZGVuY3kgKGFzIGluLCBkb2Vzbid0IG5lZWQgdG8gYmUgaW5zdGFsbGVkLCBOT1QgbGlrZSBvcHRpb25hbERlcGVuZGVuY2llcyBpbiBwYWNrYWdlLmpzb24pXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcblx0Y29uc3Qgc3VwcG9ydHNDb2xvciA9IHJlcXVpcmUoJ3N1cHBvcnRzLWNvbG9yJyk7XG5cblx0aWYgKHN1cHBvcnRzQ29sb3IgJiYgKHN1cHBvcnRzQ29sb3Iuc3RkZXJyIHx8IHN1cHBvcnRzQ29sb3IpLmxldmVsID49IDIpIHtcblx0XHRleHBvcnRzLmNvbG9ycyA9IFtcblx0XHRcdDIwLFxuXHRcdFx0MjEsXG5cdFx0XHQyNixcblx0XHRcdDI3LFxuXHRcdFx0MzIsXG5cdFx0XHQzMyxcblx0XHRcdDM4LFxuXHRcdFx0MzksXG5cdFx0XHQ0MCxcblx0XHRcdDQxLFxuXHRcdFx0NDIsXG5cdFx0XHQ0Myxcblx0XHRcdDQ0LFxuXHRcdFx0NDUsXG5cdFx0XHQ1Nixcblx0XHRcdDU3LFxuXHRcdFx0NjIsXG5cdFx0XHQ2Myxcblx0XHRcdDY4LFxuXHRcdFx0NjksXG5cdFx0XHQ3NCxcblx0XHRcdDc1LFxuXHRcdFx0NzYsXG5cdFx0XHQ3Nyxcblx0XHRcdDc4LFxuXHRcdFx0NzksXG5cdFx0XHQ4MCxcblx0XHRcdDgxLFxuXHRcdFx0OTIsXG5cdFx0XHQ5Myxcblx0XHRcdDk4LFxuXHRcdFx0OTksXG5cdFx0XHQxMTIsXG5cdFx0XHQxMTMsXG5cdFx0XHQxMjgsXG5cdFx0XHQxMjksXG5cdFx0XHQxMzQsXG5cdFx0XHQxMzUsXG5cdFx0XHQxNDgsXG5cdFx0XHQxNDksXG5cdFx0XHQxNjAsXG5cdFx0XHQxNjEsXG5cdFx0XHQxNjIsXG5cdFx0XHQxNjMsXG5cdFx0XHQxNjQsXG5cdFx0XHQxNjUsXG5cdFx0XHQxNjYsXG5cdFx0XHQxNjcsXG5cdFx0XHQxNjgsXG5cdFx0XHQxNjksXG5cdFx0XHQxNzAsXG5cdFx0XHQxNzEsXG5cdFx0XHQxNzIsXG5cdFx0XHQxNzMsXG5cdFx0XHQxNzgsXG5cdFx0XHQxNzksXG5cdFx0XHQxODQsXG5cdFx0XHQxODUsXG5cdFx0XHQxOTYsXG5cdFx0XHQxOTcsXG5cdFx0XHQxOTgsXG5cdFx0XHQxOTksXG5cdFx0XHQyMDAsXG5cdFx0XHQyMDEsXG5cdFx0XHQyMDIsXG5cdFx0XHQyMDMsXG5cdFx0XHQyMDQsXG5cdFx0XHQyMDUsXG5cdFx0XHQyMDYsXG5cdFx0XHQyMDcsXG5cdFx0XHQyMDgsXG5cdFx0XHQyMDksXG5cdFx0XHQyMTQsXG5cdFx0XHQyMTUsXG5cdFx0XHQyMjAsXG5cdFx0XHQyMjFcblx0XHRdO1xuXHR9XG59IGNhdGNoIChlcnJvcikge1xuXHQvLyBTd2FsbG93IC0gd2Ugb25seSBjYXJlIGlmIGBzdXBwb3J0cy1jb2xvcmAgaXMgYXZhaWxhYmxlOyBpdCBkb2Vzbid0IGhhdmUgdG8gYmUuXG59XG5cbi8qKlxuICogQnVpbGQgdXAgdGhlIGRlZmF1bHQgYGluc3BlY3RPcHRzYCBvYmplY3QgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqICAgJCBERUJVR19DT0xPUlM9bm8gREVCVUdfREVQVEg9MTAgREVCVUdfU0hPV19ISURERU49ZW5hYmxlZCBub2RlIHNjcmlwdC5qc1xuICovXG5cbmV4cG9ydHMuaW5zcGVjdE9wdHMgPSBPYmplY3Qua2V5cyhwcm9jZXNzLmVudikuZmlsdGVyKGtleSA9PiB7XG5cdHJldHVybiAvXmRlYnVnXy9pLnRlc3Qoa2V5KTtcbn0pLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcblx0Ly8gQ2FtZWwtY2FzZVxuXHRjb25zdCBwcm9wID0ga2V5XG5cdFx0LnN1YnN0cmluZyg2KVxuXHRcdC50b0xvd2VyQ2FzZSgpXG5cdFx0LnJlcGxhY2UoL18oW2Etel0pL2csIChfLCBrKSA9PiB7XG5cdFx0XHRyZXR1cm4gay50b1VwcGVyQ2FzZSgpO1xuXHRcdH0pO1xuXG5cdC8vIENvZXJjZSBzdHJpbmcgdmFsdWUgaW50byBKUyB2YWx1ZVxuXHRsZXQgdmFsID0gcHJvY2Vzcy5lbnZba2V5XTtcblx0aWYgKC9eKHllc3xvbnx0cnVlfGVuYWJsZWQpJC9pLnRlc3QodmFsKSkge1xuXHRcdHZhbCA9IHRydWU7XG5cdH0gZWxzZSBpZiAoL14obm98b2ZmfGZhbHNlfGRpc2FibGVkKSQvaS50ZXN0KHZhbCkpIHtcblx0XHR2YWwgPSBmYWxzZTtcblx0fSBlbHNlIGlmICh2YWwgPT09ICdudWxsJykge1xuXHRcdHZhbCA9IG51bGw7XG5cdH0gZWxzZSB7XG5cdFx0dmFsID0gTnVtYmVyKHZhbCk7XG5cdH1cblxuXHRvYmpbcHJvcF0gPSB2YWw7XG5cdHJldHVybiBvYmo7XG59LCB7fSk7XG5cbi8qKlxuICogSXMgc3Rkb3V0IGEgVFRZPyBDb2xvcmVkIG91dHB1dCBpcyBlbmFibGVkIHdoZW4gYHRydWVgLlxuICovXG5cbmZ1bmN0aW9uIHVzZUNvbG9ycygpIHtcblx0cmV0dXJuICdjb2xvcnMnIGluIGV4cG9ydHMuaW5zcGVjdE9wdHMgP1xuXHRcdEJvb2xlYW4oZXhwb3J0cy5pbnNwZWN0T3B0cy5jb2xvcnMpIDpcblx0XHR0dHkuaXNhdHR5KHByb2Nlc3Muc3RkZXJyLmZkKTtcbn1cblxuLyoqXG4gKiBBZGRzIEFOU0kgY29sb3IgZXNjYXBlIGNvZGVzIGlmIGVuYWJsZWQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRBcmdzKGFyZ3MpIHtcblx0Y29uc3Qge25hbWVzcGFjZTogbmFtZSwgdXNlQ29sb3JzfSA9IHRoaXM7XG5cblx0aWYgKHVzZUNvbG9ycykge1xuXHRcdGNvbnN0IGMgPSB0aGlzLmNvbG9yO1xuXHRcdGNvbnN0IGNvbG9yQ29kZSA9ICdcXHUwMDFCWzMnICsgKGMgPCA4ID8gYyA6ICc4OzU7JyArIGMpO1xuXHRcdGNvbnN0IHByZWZpeCA9IGAgICR7Y29sb3JDb2RlfTsxbSR7bmFtZX0gXFx1MDAxQlswbWA7XG5cblx0XHRhcmdzWzBdID0gcHJlZml4ICsgYXJnc1swXS5zcGxpdCgnXFxuJykuam9pbignXFxuJyArIHByZWZpeCk7XG5cdFx0YXJncy5wdXNoKGNvbG9yQ29kZSArICdtKycgKyBtb2R1bGUuZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpICsgJ1xcdTAwMUJbMG0nKTtcblx0fSBlbHNlIHtcblx0XHRhcmdzWzBdID0gZ2V0RGF0ZSgpICsgbmFtZSArICcgJyArIGFyZ3NbMF07XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0RGF0ZSgpIHtcblx0aWYgKGV4cG9ydHMuaW5zcGVjdE9wdHMuaGlkZURhdGUpIHtcblx0XHRyZXR1cm4gJyc7XG5cdH1cblx0cmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSArICcgJztcbn1cblxuLyoqXG4gKiBJbnZva2VzIGB1dGlsLmZvcm1hdCgpYCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzIGFuZCB3cml0ZXMgdG8gc3RkZXJyLlxuICovXG5cbmZ1bmN0aW9uIGxvZyguLi5hcmdzKSB7XG5cdHJldHVybiBwcm9jZXNzLnN0ZGVyci53cml0ZSh1dGlsLmZvcm1hdCguLi5hcmdzKSArICdcXG4nKTtcbn1cblxuLyoqXG4gKiBTYXZlIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHNhdmUobmFtZXNwYWNlcykge1xuXHRpZiAobmFtZXNwYWNlcykge1xuXHRcdHByb2Nlc3MuZW52LkRFQlVHID0gbmFtZXNwYWNlcztcblx0fSBlbHNlIHtcblx0XHQvLyBJZiB5b3Ugc2V0IGEgcHJvY2Vzcy5lbnYgZmllbGQgdG8gbnVsbCBvciB1bmRlZmluZWQsIGl0IGdldHMgY2FzdCB0byB0aGVcblx0XHQvLyBzdHJpbmcgJ251bGwnIG9yICd1bmRlZmluZWQnLiBKdXN0IGRlbGV0ZSBpbnN0ZWFkLlxuXHRcdGRlbGV0ZSBwcm9jZXNzLmVudi5ERUJVRztcblx0fVxufVxuXG4vKipcbiAqIExvYWQgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ30gcmV0dXJucyB0aGUgcHJldmlvdXNseSBwZXJzaXN0ZWQgZGVidWcgbW9kZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvYWQoKSB7XG5cdHJldHVybiBwcm9jZXNzLmVudi5ERUJVRztcbn1cblxuLyoqXG4gKiBJbml0IGxvZ2ljIGZvciBgZGVidWdgIGluc3RhbmNlcy5cbiAqXG4gKiBDcmVhdGUgYSBuZXcgYGluc3BlY3RPcHRzYCBvYmplY3QgaW4gY2FzZSBgdXNlQ29sb3JzYCBpcyBzZXRcbiAqIGRpZmZlcmVudGx5IGZvciBhIHBhcnRpY3VsYXIgYGRlYnVnYCBpbnN0YW5jZS5cbiAqL1xuXG5mdW5jdGlvbiBpbml0KGRlYnVnKSB7XG5cdGRlYnVnLmluc3BlY3RPcHRzID0ge307XG5cblx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGV4cG9ydHMuaW5zcGVjdE9wdHMpO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcblx0XHRkZWJ1Zy5pbnNwZWN0T3B0c1trZXlzW2ldXSA9IGV4cG9ydHMuaW5zcGVjdE9wdHNba2V5c1tpXV07XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2NvbW1vbicpKGV4cG9ydHMpO1xuXG5jb25zdCB7Zm9ybWF0dGVyc30gPSBtb2R1bGUuZXhwb3J0cztcblxuLyoqXG4gKiBNYXAgJW8gdG8gYHV0aWwuaW5zcGVjdCgpYCwgYWxsIG9uIGEgc2luZ2xlIGxpbmUuXG4gKi9cblxuZm9ybWF0dGVycy5vID0gZnVuY3Rpb24gKHYpIHtcblx0dGhpcy5pbnNwZWN0T3B0cy5jb2xvcnMgPSB0aGlzLnVzZUNvbG9ycztcblx0cmV0dXJuIHV0aWwuaW5zcGVjdCh2LCB0aGlzLmluc3BlY3RPcHRzKVxuXHRcdC5zcGxpdCgnXFxuJylcblx0XHQubWFwKHN0ciA9PiBzdHIudHJpbSgpKVxuXHRcdC5qb2luKCcgJyk7XG59O1xuXG4vKipcbiAqIE1hcCAlTyB0byBgdXRpbC5pbnNwZWN0KClgLCBhbGxvd2luZyBtdWx0aXBsZSBsaW5lcyBpZiBuZWVkZWQuXG4gKi9cblxuZm9ybWF0dGVycy5PID0gZnVuY3Rpb24gKHYpIHtcblx0dGhpcy5pbnNwZWN0T3B0cy5jb2xvcnMgPSB0aGlzLnVzZUNvbG9ycztcblx0cmV0dXJuIHV0aWwuaW5zcGVjdCh2LCB0aGlzLmluc3BlY3RPcHRzKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ0dHlcIik7IiwiJ3VzZSBzdHJpY3QnO1xuY29uc3Qgb3MgPSByZXF1aXJlKCdvcycpO1xuY29uc3QgaGFzRmxhZyA9IHJlcXVpcmUoJ2hhcy1mbGFnJyk7XG5cbmNvbnN0IGVudiA9IHByb2Nlc3MuZW52O1xuXG5sZXQgZm9yY2VDb2xvcjtcbmlmIChoYXNGbGFnKCduby1jb2xvcicpIHx8XG5cdGhhc0ZsYWcoJ25vLWNvbG9ycycpIHx8XG5cdGhhc0ZsYWcoJ2NvbG9yPWZhbHNlJykpIHtcblx0Zm9yY2VDb2xvciA9IGZhbHNlO1xufSBlbHNlIGlmIChoYXNGbGFnKCdjb2xvcicpIHx8XG5cdGhhc0ZsYWcoJ2NvbG9ycycpIHx8XG5cdGhhc0ZsYWcoJ2NvbG9yPXRydWUnKSB8fFxuXHRoYXNGbGFnKCdjb2xvcj1hbHdheXMnKSkge1xuXHRmb3JjZUNvbG9yID0gdHJ1ZTtcbn1cbmlmICgnRk9SQ0VfQ09MT1InIGluIGVudikge1xuXHRmb3JjZUNvbG9yID0gZW52LkZPUkNFX0NPTE9SLmxlbmd0aCA9PT0gMCB8fCBwYXJzZUludChlbnYuRk9SQ0VfQ09MT1IsIDEwKSAhPT0gMDtcbn1cblxuZnVuY3Rpb24gdHJhbnNsYXRlTGV2ZWwobGV2ZWwpIHtcblx0aWYgKGxldmVsID09PSAwKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRsZXZlbCxcblx0XHRoYXNCYXNpYzogdHJ1ZSxcblx0XHRoYXMyNTY6IGxldmVsID49IDIsXG5cdFx0aGFzMTZtOiBsZXZlbCA+PSAzXG5cdH07XG59XG5cbmZ1bmN0aW9uIHN1cHBvcnRzQ29sb3Ioc3RyZWFtKSB7XG5cdGlmIChmb3JjZUNvbG9yID09PSBmYWxzZSkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0aWYgKGhhc0ZsYWcoJ2NvbG9yPTE2bScpIHx8XG5cdFx0aGFzRmxhZygnY29sb3I9ZnVsbCcpIHx8XG5cdFx0aGFzRmxhZygnY29sb3I9dHJ1ZWNvbG9yJykpIHtcblx0XHRyZXR1cm4gMztcblx0fVxuXG5cdGlmIChoYXNGbGFnKCdjb2xvcj0yNTYnKSkge1xuXHRcdHJldHVybiAyO1xuXHR9XG5cblx0aWYgKHN0cmVhbSAmJiAhc3RyZWFtLmlzVFRZICYmIGZvcmNlQ29sb3IgIT09IHRydWUpIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGNvbnN0IG1pbiA9IGZvcmNlQ29sb3IgPyAxIDogMDtcblxuXHRpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuXHRcdC8vIE5vZGUuanMgNy41LjAgaXMgdGhlIGZpcnN0IHZlcnNpb24gb2YgTm9kZS5qcyB0byBpbmNsdWRlIGEgcGF0Y2ggdG9cblx0XHQvLyBsaWJ1diB0aGF0IGVuYWJsZXMgMjU2IGNvbG9yIG91dHB1dCBvbiBXaW5kb3dzLiBBbnl0aGluZyBlYXJsaWVyIGFuZCBpdFxuXHRcdC8vIHdvbid0IHdvcmsuIEhvd2V2ZXIsIGhlcmUgd2UgdGFyZ2V0IE5vZGUuanMgOCBhdCBtaW5pbXVtIGFzIGl0IGlzIGFuIExUU1xuXHRcdC8vIHJlbGVhc2UsIGFuZCBOb2RlLmpzIDcgaXMgbm90LiBXaW5kb3dzIDEwIGJ1aWxkIDEwNTg2IGlzIHRoZSBmaXJzdCBXaW5kb3dzXG5cdFx0Ly8gcmVsZWFzZSB0aGF0IHN1cHBvcnRzIDI1NiBjb2xvcnMuIFdpbmRvd3MgMTAgYnVpbGQgMTQ5MzEgaXMgdGhlIGZpcnN0IHJlbGVhc2Vcblx0XHQvLyB0aGF0IHN1cHBvcnRzIDE2bS9UcnVlQ29sb3IuXG5cdFx0Y29uc3Qgb3NSZWxlYXNlID0gb3MucmVsZWFzZSgpLnNwbGl0KCcuJyk7XG5cdFx0aWYgKFxuXHRcdFx0TnVtYmVyKHByb2Nlc3MudmVyc2lvbnMubm9kZS5zcGxpdCgnLicpWzBdKSA+PSA4ICYmXG5cdFx0XHROdW1iZXIob3NSZWxlYXNlWzBdKSA+PSAxMCAmJlxuXHRcdFx0TnVtYmVyKG9zUmVsZWFzZVsyXSkgPj0gMTA1ODZcblx0XHQpIHtcblx0XHRcdHJldHVybiBOdW1iZXIob3NSZWxlYXNlWzJdKSA+PSAxNDkzMSA/IDMgOiAyO1xuXHRcdH1cblxuXHRcdHJldHVybiAxO1xuXHR9XG5cblx0aWYgKCdDSScgaW4gZW52KSB7XG5cdFx0aWYgKFsnVFJBVklTJywgJ0NJUkNMRUNJJywgJ0FQUFZFWU9SJywgJ0dJVExBQl9DSSddLnNvbWUoc2lnbiA9PiBzaWduIGluIGVudikgfHwgZW52LkNJX05BTUUgPT09ICdjb2Rlc2hpcCcpIHtcblx0XHRcdHJldHVybiAxO1xuXHRcdH1cblxuXHRcdHJldHVybiBtaW47XG5cdH1cblxuXHRpZiAoJ1RFQU1DSVRZX1ZFUlNJT04nIGluIGVudikge1xuXHRcdHJldHVybiAvXig5XFwuKDAqWzEtOV1cXGQqKVxcLnxcXGR7Mix9XFwuKS8udGVzdChlbnYuVEVBTUNJVFlfVkVSU0lPTikgPyAxIDogMDtcblx0fVxuXG5cdGlmIChlbnYuQ09MT1JURVJNID09PSAndHJ1ZWNvbG9yJykge1xuXHRcdHJldHVybiAzO1xuXHR9XG5cblx0aWYgKCdURVJNX1BST0dSQU0nIGluIGVudikge1xuXHRcdGNvbnN0IHZlcnNpb24gPSBwYXJzZUludCgoZW52LlRFUk1fUFJPR1JBTV9WRVJTSU9OIHx8ICcnKS5zcGxpdCgnLicpWzBdLCAxMCk7XG5cblx0XHRzd2l0Y2ggKGVudi5URVJNX1BST0dSQU0pIHtcblx0XHRcdGNhc2UgJ2lUZXJtLmFwcCc6XG5cdFx0XHRcdHJldHVybiB2ZXJzaW9uID49IDMgPyAzIDogMjtcblx0XHRcdGNhc2UgJ0FwcGxlX1Rlcm1pbmFsJzpcblx0XHRcdFx0cmV0dXJuIDI7XG5cdFx0XHQvLyBObyBkZWZhdWx0XG5cdFx0fVxuXHR9XG5cblx0aWYgKC8tMjU2KGNvbG9yKT8kL2kudGVzdChlbnYuVEVSTSkpIHtcblx0XHRyZXR1cm4gMjtcblx0fVxuXG5cdGlmICgvXnNjcmVlbnxeeHRlcm18XnZ0MTAwfF52dDIyMHxecnh2dHxjb2xvcnxhbnNpfGN5Z3dpbnxsaW51eC9pLnRlc3QoZW52LlRFUk0pKSB7XG5cdFx0cmV0dXJuIDE7XG5cdH1cblxuXHRpZiAoJ0NPTE9SVEVSTScgaW4gZW52KSB7XG5cdFx0cmV0dXJuIDE7XG5cdH1cblxuXHRpZiAoZW52LlRFUk0gPT09ICdkdW1iJykge1xuXHRcdHJldHVybiBtaW47XG5cdH1cblxuXHRyZXR1cm4gbWluO1xufVxuXG5mdW5jdGlvbiBnZXRTdXBwb3J0TGV2ZWwoc3RyZWFtKSB7XG5cdGNvbnN0IGxldmVsID0gc3VwcG9ydHNDb2xvcihzdHJlYW0pO1xuXHRyZXR1cm4gdHJhbnNsYXRlTGV2ZWwobGV2ZWwpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblx0c3VwcG9ydHNDb2xvcjogZ2V0U3VwcG9ydExldmVsLFxuXHRzdGRvdXQ6IGdldFN1cHBvcnRMZXZlbChwcm9jZXNzLnN0ZG91dCksXG5cdHN0ZGVycjogZ2V0U3VwcG9ydExldmVsKHByb2Nlc3Muc3RkZXJyKVxufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gKGZsYWcsIGFyZ3YpID0+IHtcblx0YXJndiA9IGFyZ3YgfHwgcHJvY2Vzcy5hcmd2O1xuXHRjb25zdCBwcmVmaXggPSBmbGFnLnN0YXJ0c1dpdGgoJy0nKSA/ICcnIDogKGZsYWcubGVuZ3RoID09PSAxID8gJy0nIDogJy0tJyk7XG5cdGNvbnN0IHBvcyA9IGFyZ3YuaW5kZXhPZihwcmVmaXggKyBmbGFnKTtcblx0Y29uc3QgdGVybWluYXRvclBvcyA9IGFyZ3YuaW5kZXhPZignLS0nKTtcblx0cmV0dXJuIHBvcyAhPT0gLTEgJiYgKHRlcm1pbmF0b3JQb3MgPT09IC0xID8gdHJ1ZSA6IHBvcyA8IHRlcm1pbmF0b3JQb3MpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInpsaWJcIik7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi9DYW5jZWwnKTtcblxuLyoqXG4gKiBBIGBDYW5jZWxUb2tlbmAgaXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBjYW5jZWxsYXRpb24gb2YgYW4gb3BlcmF0aW9uLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZXhlY3V0b3IgVGhlIGV4ZWN1dG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBDYW5jZWxUb2tlbihleGVjdXRvcikge1xuICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgdmFyIHJlc29sdmVQcm9taXNlO1xuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgdmFyIHRva2VuID0gdGhpcztcbiAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UpIHtcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsKG1lc3NhZ2UpO1xuICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbkNhbmNlbFRva2VuLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkID0gZnVuY3Rpb24gdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgdGhyb3cgdGhpcy5yZWFzb247XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICogY2FuY2VscyB0aGUgYENhbmNlbFRva2VuYC5cbiAqL1xuQ2FuY2VsVG9rZW4uc291cmNlID0gZnVuY3Rpb24gc291cmNlKCkge1xuICB2YXIgY2FuY2VsO1xuICB2YXIgdG9rZW4gPSBuZXcgQ2FuY2VsVG9rZW4oZnVuY3Rpb24gZXhlY3V0b3IoYykge1xuICAgIGNhbmNlbCA9IGM7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRva2VuOiB0b2tlbixcbiAgICBjYW5jZWw6IGNhbmNlbFxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWxUb2tlbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxuICpcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXG4gKlxuICogIGBgYGpzXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3ByZWFkKGNhbGxiYWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKGFycikge1xuICAgIHJldHVybiBjYWxsYmFjay5hcHBseShudWxsLCBhcnIpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zXG4gKlxuICogQHBhcmFtIHsqfSBwYXlsb2FkIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3MsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQXhpb3NFcnJvcihwYXlsb2FkKSB7XG4gIHJldHVybiAodHlwZW9mIHBheWxvYWQgPT09ICdvYmplY3QnKSAmJiAocGF5bG9hZC5pc0F4aW9zRXJyb3IgPT09IHRydWUpO1xufTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vZGUvbm8tZGVwcmVjYXRlZC1hcGkgKi9cbnZhciBidWZmZXIgPSByZXF1aXJlKCdidWZmZXInKVxudmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXJcblxuLy8gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgT2JqZWN0LmtleXMgZm9yIG9sZCBicm93c2Vyc1xuZnVuY3Rpb24gY29weVByb3BzIChzcmMsIGRzdCkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgZHN0W2tleV0gPSBzcmNba2V5XVxuICB9XG59XG5pZiAoQnVmZmVyLmZyb20gJiYgQnVmZmVyLmFsbG9jICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZSAmJiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KSB7XG4gIG1vZHVsZS5leHBvcnRzID0gYnVmZmVyXG59IGVsc2Uge1xuICAvLyBDb3B5IHByb3BlcnRpZXMgZnJvbSByZXF1aXJlKCdidWZmZXInKVxuICBjb3B5UHJvcHMoYnVmZmVyLCBleHBvcnRzKVxuICBleHBvcnRzLkJ1ZmZlciA9IFNhZmVCdWZmZXJcbn1cblxuZnVuY3Rpb24gU2FmZUJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJ1ZmZlci5wcm90b3R5cGUpXG5cbi8vIENvcHkgc3RhdGljIG1ldGhvZHMgZnJvbSBCdWZmZXJcbmNvcHlQcm9wcyhCdWZmZXIsIFNhZmVCdWZmZXIpXG5cblNhZmVCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgdmFyIGJ1ZiA9IEJ1ZmZlcihzaXplKVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWYuZmlsbChmaWxsKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBidWYuZmlsbCgwKVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKHNpemUpXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBidWZmZXIuU2xvd0J1ZmZlcihzaXplKVxufVxuIiwiLyogZXNsaW50IHF1b3RlLXByb3BzOiBvZmYgKi9cbi8qIGVzbGludCBrZXktc3BhY2luZzogb2ZmICovXG4ndXNlIHN0cmljdCdcblxuZXhwb3J0cy5uYW1lcyA9IE9iamVjdC5mcmVlemUoe1xuICAnaWRlbnRpdHknOiAgIDB4MCxcbiAgJ3NoYTEnOiAgICAgICAweDExLFxuICAnc2hhMi0yNTYnOiAgIDB4MTIsXG4gICdzaGEyLTUxMic6ICAgMHgxMyxcbiAgJ2RibC1zaGEyLTI1Nic6IDB4NTYsXG4gICdzaGEzLTIyNCc6ICAgMHgxNyxcbiAgJ3NoYTMtMjU2JzogICAweDE2LFxuICAnc2hhMy0zODQnOiAgIDB4MTUsXG4gICdzaGEzLTUxMic6ICAgMHgxNCxcbiAgJ3NoYWtlLTEyOCc6ICAweDE4LFxuICAnc2hha2UtMjU2JzogIDB4MTksXG4gICdrZWNjYWstMjI0JzogMHgxQSxcbiAgJ2tlY2Nhay0yNTYnOiAweDFCLFxuICAna2VjY2FrLTM4NCc6IDB4MUMsXG4gICdrZWNjYWstNTEyJzogMHgxRCxcbiAgJ211cm11cjMtMTI4JzogMHgyMixcbiAgJ211cm11cjMtMzInOiAgMHgyMyxcbiAgJ2JsYWtlMmItOCc6ICAgMHhiMjAxLFxuICAnYmxha2UyYi0xNic6ICAweGIyMDIsXG4gICdibGFrZTJiLTI0JzogIDB4YjIwMyxcbiAgJ2JsYWtlMmItMzInOiAgMHhiMjA0LFxuICAnYmxha2UyYi00MCc6ICAweGIyMDUsXG4gICdibGFrZTJiLTQ4JzogIDB4YjIwNixcbiAgJ2JsYWtlMmItNTYnOiAgMHhiMjA3LFxuICAnYmxha2UyYi02NCc6ICAweGIyMDgsXG4gICdibGFrZTJiLTcyJzogIDB4YjIwOSxcbiAgJ2JsYWtlMmItODAnOiAgMHhiMjBhLFxuICAnYmxha2UyYi04OCc6ICAweGIyMGIsXG4gICdibGFrZTJiLTk2JzogIDB4YjIwYyxcbiAgJ2JsYWtlMmItMTA0JzogMHhiMjBkLFxuICAnYmxha2UyYi0xMTInOiAweGIyMGUsXG4gICdibGFrZTJiLTEyMCc6IDB4YjIwZixcbiAgJ2JsYWtlMmItMTI4JzogMHhiMjEwLFxuICAnYmxha2UyYi0xMzYnOiAweGIyMTEsXG4gICdibGFrZTJiLTE0NCc6IDB4YjIxMixcbiAgJ2JsYWtlMmItMTUyJzogMHhiMjEzLFxuICAnYmxha2UyYi0xNjAnOiAweGIyMTQsXG4gICdibGFrZTJiLTE2OCc6IDB4YjIxNSxcbiAgJ2JsYWtlMmItMTc2JzogMHhiMjE2LFxuICAnYmxha2UyYi0xODQnOiAweGIyMTcsXG4gICdibGFrZTJiLTE5Mic6IDB4YjIxOCxcbiAgJ2JsYWtlMmItMjAwJzogMHhiMjE5LFxuICAnYmxha2UyYi0yMDgnOiAweGIyMWEsXG4gICdibGFrZTJiLTIxNic6IDB4YjIxYixcbiAgJ2JsYWtlMmItMjI0JzogMHhiMjFjLFxuICAnYmxha2UyYi0yMzInOiAweGIyMWQsXG4gICdibGFrZTJiLTI0MCc6IDB4YjIxZSxcbiAgJ2JsYWtlMmItMjQ4JzogMHhiMjFmLFxuICAnYmxha2UyYi0yNTYnOiAweGIyMjAsXG4gICdibGFrZTJiLTI2NCc6IDB4YjIyMSxcbiAgJ2JsYWtlMmItMjcyJzogMHhiMjIyLFxuICAnYmxha2UyYi0yODAnOiAweGIyMjMsXG4gICdibGFrZTJiLTI4OCc6IDB4YjIyNCxcbiAgJ2JsYWtlMmItMjk2JzogMHhiMjI1LFxuICAnYmxha2UyYi0zMDQnOiAweGIyMjYsXG4gICdibGFrZTJiLTMxMic6IDB4YjIyNyxcbiAgJ2JsYWtlMmItMzIwJzogMHhiMjI4LFxuICAnYmxha2UyYi0zMjgnOiAweGIyMjksXG4gICdibGFrZTJiLTMzNic6IDB4YjIyYSxcbiAgJ2JsYWtlMmItMzQ0JzogMHhiMjJiLFxuICAnYmxha2UyYi0zNTInOiAweGIyMmMsXG4gICdibGFrZTJiLTM2MCc6IDB4YjIyZCxcbiAgJ2JsYWtlMmItMzY4JzogMHhiMjJlLFxuICAnYmxha2UyYi0zNzYnOiAweGIyMmYsXG4gICdibGFrZTJiLTM4NCc6IDB4YjIzMCxcbiAgJ2JsYWtlMmItMzkyJzogMHhiMjMxLFxuICAnYmxha2UyYi00MDAnOiAweGIyMzIsXG4gICdibGFrZTJiLTQwOCc6IDB4YjIzMyxcbiAgJ2JsYWtlMmItNDE2JzogMHhiMjM0LFxuICAnYmxha2UyYi00MjQnOiAweGIyMzUsXG4gICdibGFrZTJiLTQzMic6IDB4YjIzNixcbiAgJ2JsYWtlMmItNDQwJzogMHhiMjM3LFxuICAnYmxha2UyYi00NDgnOiAweGIyMzgsXG4gICdibGFrZTJiLTQ1Nic6IDB4YjIzOSxcbiAgJ2JsYWtlMmItNDY0JzogMHhiMjNhLFxuICAnYmxha2UyYi00NzInOiAweGIyM2IsXG4gICdibGFrZTJiLTQ4MCc6IDB4YjIzYyxcbiAgJ2JsYWtlMmItNDg4JzogMHhiMjNkLFxuICAnYmxha2UyYi00OTYnOiAweGIyM2UsXG4gICdibGFrZTJiLTUwNCc6IDB4YjIzZixcbiAgJ2JsYWtlMmItNTEyJzogMHhiMjQwLFxuICAnYmxha2Uycy04JzogICAweGIyNDEsXG4gICdibGFrZTJzLTE2JzogIDB4YjI0MixcbiAgJ2JsYWtlMnMtMjQnOiAgMHhiMjQzLFxuICAnYmxha2Uycy0zMic6ICAweGIyNDQsXG4gICdibGFrZTJzLTQwJzogIDB4YjI0NSxcbiAgJ2JsYWtlMnMtNDgnOiAgMHhiMjQ2LFxuICAnYmxha2Uycy01Nic6ICAweGIyNDcsXG4gICdibGFrZTJzLTY0JzogIDB4YjI0OCxcbiAgJ2JsYWtlMnMtNzInOiAgMHhiMjQ5LFxuICAnYmxha2Uycy04MCc6ICAweGIyNGEsXG4gICdibGFrZTJzLTg4JzogIDB4YjI0YixcbiAgJ2JsYWtlMnMtOTYnOiAgMHhiMjRjLFxuICAnYmxha2Uycy0xMDQnOiAweGIyNGQsXG4gICdibGFrZTJzLTExMic6IDB4YjI0ZSxcbiAgJ2JsYWtlMnMtMTIwJzogMHhiMjRmLFxuICAnYmxha2Uycy0xMjgnOiAweGIyNTAsXG4gICdibGFrZTJzLTEzNic6IDB4YjI1MSxcbiAgJ2JsYWtlMnMtMTQ0JzogMHhiMjUyLFxuICAnYmxha2Uycy0xNTInOiAweGIyNTMsXG4gICdibGFrZTJzLTE2MCc6IDB4YjI1NCxcbiAgJ2JsYWtlMnMtMTY4JzogMHhiMjU1LFxuICAnYmxha2Uycy0xNzYnOiAweGIyNTYsXG4gICdibGFrZTJzLTE4NCc6IDB4YjI1NyxcbiAgJ2JsYWtlMnMtMTkyJzogMHhiMjU4LFxuICAnYmxha2Uycy0yMDAnOiAweGIyNTksXG4gICdibGFrZTJzLTIwOCc6IDB4YjI1YSxcbiAgJ2JsYWtlMnMtMjE2JzogMHhiMjViLFxuICAnYmxha2Uycy0yMjQnOiAweGIyNWMsXG4gICdibGFrZTJzLTIzMic6IDB4YjI1ZCxcbiAgJ2JsYWtlMnMtMjQwJzogMHhiMjVlLFxuICAnYmxha2Uycy0yNDgnOiAweGIyNWYsXG4gICdibGFrZTJzLTI1Nic6IDB4YjI2MCxcbiAgJ1NrZWluMjU2LTgnOiAweGIzMDEsXG4gICdTa2VpbjI1Ni0xNic6IDB4YjMwMixcbiAgJ1NrZWluMjU2LTI0JzogMHhiMzAzLFxuICAnU2tlaW4yNTYtMzInOiAweGIzMDQsXG4gICdTa2VpbjI1Ni00MCc6IDB4YjMwNSxcbiAgJ1NrZWluMjU2LTQ4JzogMHhiMzA2LFxuICAnU2tlaW4yNTYtNTYnOiAweGIzMDcsXG4gICdTa2VpbjI1Ni02NCc6IDB4YjMwOCxcbiAgJ1NrZWluMjU2LTcyJzogMHhiMzA5LFxuICAnU2tlaW4yNTYtODAnOiAweGIzMGEsXG4gICdTa2VpbjI1Ni04OCc6IDB4YjMwYixcbiAgJ1NrZWluMjU2LTk2JzogMHhiMzBjLFxuICAnU2tlaW4yNTYtMTA0JzogMHhiMzBkLFxuICAnU2tlaW4yNTYtMTEyJzogMHhiMzBlLFxuICAnU2tlaW4yNTYtMTIwJzogMHhiMzBmLFxuICAnU2tlaW4yNTYtMTI4JzogMHhiMzEwLFxuICAnU2tlaW4yNTYtMTM2JzogMHhiMzExLFxuICAnU2tlaW4yNTYtMTQ0JzogMHhiMzEyLFxuICAnU2tlaW4yNTYtMTUyJzogMHhiMzEzLFxuICAnU2tlaW4yNTYtMTYwJzogMHhiMzE0LFxuICAnU2tlaW4yNTYtMTY4JzogMHhiMzE1LFxuICAnU2tlaW4yNTYtMTc2JzogMHhiMzE2LFxuICAnU2tlaW4yNTYtMTg0JzogMHhiMzE3LFxuICAnU2tlaW4yNTYtMTkyJzogMHhiMzE4LFxuICAnU2tlaW4yNTYtMjAwJzogMHhiMzE5LFxuICAnU2tlaW4yNTYtMjA4JzogMHhiMzFhLFxuICAnU2tlaW4yNTYtMjE2JzogMHhiMzFiLFxuICAnU2tlaW4yNTYtMjI0JzogMHhiMzFjLFxuICAnU2tlaW4yNTYtMjMyJzogMHhiMzFkLFxuICAnU2tlaW4yNTYtMjQwJzogMHhiMzFlLFxuICAnU2tlaW4yNTYtMjQ4JzogMHhiMzFmLFxuICAnU2tlaW4yNTYtMjU2JzogMHhiMzIwLFxuICAnU2tlaW41MTItOCc6IDB4YjMyMSxcbiAgJ1NrZWluNTEyLTE2JzogMHhiMzIyLFxuICAnU2tlaW41MTItMjQnOiAweGIzMjMsXG4gICdTa2VpbjUxMi0zMic6IDB4YjMyNCxcbiAgJ1NrZWluNTEyLTQwJzogMHhiMzI1LFxuICAnU2tlaW41MTItNDgnOiAweGIzMjYsXG4gICdTa2VpbjUxMi01Nic6IDB4YjMyNyxcbiAgJ1NrZWluNTEyLTY0JzogMHhiMzI4LFxuICAnU2tlaW41MTItNzInOiAweGIzMjksXG4gICdTa2VpbjUxMi04MCc6IDB4YjMyYSxcbiAgJ1NrZWluNTEyLTg4JzogMHhiMzJiLFxuICAnU2tlaW41MTItOTYnOiAweGIzMmMsXG4gICdTa2VpbjUxMi0xMDQnOiAweGIzMmQsXG4gICdTa2VpbjUxMi0xMTInOiAweGIzMmUsXG4gICdTa2VpbjUxMi0xMjAnOiAweGIzMmYsXG4gICdTa2VpbjUxMi0xMjgnOiAweGIzMzAsXG4gICdTa2VpbjUxMi0xMzYnOiAweGIzMzEsXG4gICdTa2VpbjUxMi0xNDQnOiAweGIzMzIsXG4gICdTa2VpbjUxMi0xNTInOiAweGIzMzMsXG4gICdTa2VpbjUxMi0xNjAnOiAweGIzMzQsXG4gICdTa2VpbjUxMi0xNjgnOiAweGIzMzUsXG4gICdTa2VpbjUxMi0xNzYnOiAweGIzMzYsXG4gICdTa2VpbjUxMi0xODQnOiAweGIzMzcsXG4gICdTa2VpbjUxMi0xOTInOiAweGIzMzgsXG4gICdTa2VpbjUxMi0yMDAnOiAweGIzMzksXG4gICdTa2VpbjUxMi0yMDgnOiAweGIzM2EsXG4gICdTa2VpbjUxMi0yMTYnOiAweGIzM2IsXG4gICdTa2VpbjUxMi0yMjQnOiAweGIzM2MsXG4gICdTa2VpbjUxMi0yMzInOiAweGIzM2QsXG4gICdTa2VpbjUxMi0yNDAnOiAweGIzM2UsXG4gICdTa2VpbjUxMi0yNDgnOiAweGIzM2YsXG4gICdTa2VpbjUxMi0yNTYnOiAweGIzNDAsXG4gICdTa2VpbjUxMi0yNjQnOiAweGIzNDEsXG4gICdTa2VpbjUxMi0yNzInOiAweGIzNDIsXG4gICdTa2VpbjUxMi0yODAnOiAweGIzNDMsXG4gICdTa2VpbjUxMi0yODgnOiAweGIzNDQsXG4gICdTa2VpbjUxMi0yOTYnOiAweGIzNDUsXG4gICdTa2VpbjUxMi0zMDQnOiAweGIzNDYsXG4gICdTa2VpbjUxMi0zMTInOiAweGIzNDcsXG4gICdTa2VpbjUxMi0zMjAnOiAweGIzNDgsXG4gICdTa2VpbjUxMi0zMjgnOiAweGIzNDksXG4gICdTa2VpbjUxMi0zMzYnOiAweGIzNGEsXG4gICdTa2VpbjUxMi0zNDQnOiAweGIzNGIsXG4gICdTa2VpbjUxMi0zNTInOiAweGIzNGMsXG4gICdTa2VpbjUxMi0zNjAnOiAweGIzNGQsXG4gICdTa2VpbjUxMi0zNjgnOiAweGIzNGUsXG4gICdTa2VpbjUxMi0zNzYnOiAweGIzNGYsXG4gICdTa2VpbjUxMi0zODQnOiAweGIzNTAsXG4gICdTa2VpbjUxMi0zOTInOiAweGIzNTEsXG4gICdTa2VpbjUxMi00MDAnOiAweGIzNTIsXG4gICdTa2VpbjUxMi00MDgnOiAweGIzNTMsXG4gICdTa2VpbjUxMi00MTYnOiAweGIzNTQsXG4gICdTa2VpbjUxMi00MjQnOiAweGIzNTUsXG4gICdTa2VpbjUxMi00MzInOiAweGIzNTYsXG4gICdTa2VpbjUxMi00NDAnOiAweGIzNTcsXG4gICdTa2VpbjUxMi00NDgnOiAweGIzNTgsXG4gICdTa2VpbjUxMi00NTYnOiAweGIzNTksXG4gICdTa2VpbjUxMi00NjQnOiAweGIzNWEsXG4gICdTa2VpbjUxMi00NzInOiAweGIzNWIsXG4gICdTa2VpbjUxMi00ODAnOiAweGIzNWMsXG4gICdTa2VpbjUxMi00ODgnOiAweGIzNWQsXG4gICdTa2VpbjUxMi00OTYnOiAweGIzNWUsXG4gICdTa2VpbjUxMi01MDQnOiAweGIzNWYsXG4gICdTa2VpbjUxMi01MTInOiAweGIzNjAsXG4gICdTa2VpbjEwMjQtOCc6IDB4YjM2MSxcbiAgJ1NrZWluMTAyNC0xNic6IDB4YjM2MixcbiAgJ1NrZWluMTAyNC0yNCc6IDB4YjM2MyxcbiAgJ1NrZWluMTAyNC0zMic6IDB4YjM2NCxcbiAgJ1NrZWluMTAyNC00MCc6IDB4YjM2NSxcbiAgJ1NrZWluMTAyNC00OCc6IDB4YjM2NixcbiAgJ1NrZWluMTAyNC01Nic6IDB4YjM2NyxcbiAgJ1NrZWluMTAyNC02NCc6IDB4YjM2OCxcbiAgJ1NrZWluMTAyNC03Mic6IDB4YjM2OSxcbiAgJ1NrZWluMTAyNC04MCc6IDB4YjM2YSxcbiAgJ1NrZWluMTAyNC04OCc6IDB4YjM2YixcbiAgJ1NrZWluMTAyNC05Nic6IDB4YjM2YyxcbiAgJ1NrZWluMTAyNC0xMDQnOiAweGIzNmQsXG4gICdTa2VpbjEwMjQtMTEyJzogMHhiMzZlLFxuICAnU2tlaW4xMDI0LTEyMCc6IDB4YjM2ZixcbiAgJ1NrZWluMTAyNC0xMjgnOiAweGIzNzAsXG4gICdTa2VpbjEwMjQtMTM2JzogMHhiMzcxLFxuICAnU2tlaW4xMDI0LTE0NCc6IDB4YjM3MixcbiAgJ1NrZWluMTAyNC0xNTInOiAweGIzNzMsXG4gICdTa2VpbjEwMjQtMTYwJzogMHhiMzc0LFxuICAnU2tlaW4xMDI0LTE2OCc6IDB4YjM3NSxcbiAgJ1NrZWluMTAyNC0xNzYnOiAweGIzNzYsXG4gICdTa2VpbjEwMjQtMTg0JzogMHhiMzc3LFxuICAnU2tlaW4xMDI0LTE5Mic6IDB4YjM3OCxcbiAgJ1NrZWluMTAyNC0yMDAnOiAweGIzNzksXG4gICdTa2VpbjEwMjQtMjA4JzogMHhiMzdhLFxuICAnU2tlaW4xMDI0LTIxNic6IDB4YjM3YixcbiAgJ1NrZWluMTAyNC0yMjQnOiAweGIzN2MsXG4gICdTa2VpbjEwMjQtMjMyJzogMHhiMzdkLFxuICAnU2tlaW4xMDI0LTI0MCc6IDB4YjM3ZSxcbiAgJ1NrZWluMTAyNC0yNDgnOiAweGIzN2YsXG4gICdTa2VpbjEwMjQtMjU2JzogMHhiMzgwLFxuICAnU2tlaW4xMDI0LTI2NCc6IDB4YjM4MSxcbiAgJ1NrZWluMTAyNC0yNzInOiAweGIzODIsXG4gICdTa2VpbjEwMjQtMjgwJzogMHhiMzgzLFxuICAnU2tlaW4xMDI0LTI4OCc6IDB4YjM4NCxcbiAgJ1NrZWluMTAyNC0yOTYnOiAweGIzODUsXG4gICdTa2VpbjEwMjQtMzA0JzogMHhiMzg2LFxuICAnU2tlaW4xMDI0LTMxMic6IDB4YjM4NyxcbiAgJ1NrZWluMTAyNC0zMjAnOiAweGIzODgsXG4gICdTa2VpbjEwMjQtMzI4JzogMHhiMzg5LFxuICAnU2tlaW4xMDI0LTMzNic6IDB4YjM4YSxcbiAgJ1NrZWluMTAyNC0zNDQnOiAweGIzOGIsXG4gICdTa2VpbjEwMjQtMzUyJzogMHhiMzhjLFxuICAnU2tlaW4xMDI0LTM2MCc6IDB4YjM4ZCxcbiAgJ1NrZWluMTAyNC0zNjgnOiAweGIzOGUsXG4gICdTa2VpbjEwMjQtMzc2JzogMHhiMzhmLFxuICAnU2tlaW4xMDI0LTM4NCc6IDB4YjM5MCxcbiAgJ1NrZWluMTAyNC0zOTInOiAweGIzOTEsXG4gICdTa2VpbjEwMjQtNDAwJzogMHhiMzkyLFxuICAnU2tlaW4xMDI0LTQwOCc6IDB4YjM5MyxcbiAgJ1NrZWluMTAyNC00MTYnOiAweGIzOTQsXG4gICdTa2VpbjEwMjQtNDI0JzogMHhiMzk1LFxuICAnU2tlaW4xMDI0LTQzMic6IDB4YjM5NixcbiAgJ1NrZWluMTAyNC00NDAnOiAweGIzOTcsXG4gICdTa2VpbjEwMjQtNDQ4JzogMHhiMzk4LFxuICAnU2tlaW4xMDI0LTQ1Nic6IDB4YjM5OSxcbiAgJ1NrZWluMTAyNC00NjQnOiAweGIzOWEsXG4gICdTa2VpbjEwMjQtNDcyJzogMHhiMzliLFxuICAnU2tlaW4xMDI0LTQ4MCc6IDB4YjM5YyxcbiAgJ1NrZWluMTAyNC00ODgnOiAweGIzOWQsXG4gICdTa2VpbjEwMjQtNDk2JzogMHhiMzllLFxuICAnU2tlaW4xMDI0LTUwNCc6IDB4YjM5ZixcbiAgJ1NrZWluMTAyNC01MTInOiAweGIzYTAsXG4gICdTa2VpbjEwMjQtNTIwJzogMHhiM2ExLFxuICAnU2tlaW4xMDI0LTUyOCc6IDB4YjNhMixcbiAgJ1NrZWluMTAyNC01MzYnOiAweGIzYTMsXG4gICdTa2VpbjEwMjQtNTQ0JzogMHhiM2E0LFxuICAnU2tlaW4xMDI0LTU1Mic6IDB4YjNhNSxcbiAgJ1NrZWluMTAyNC01NjAnOiAweGIzYTYsXG4gICdTa2VpbjEwMjQtNTY4JzogMHhiM2E3LFxuICAnU2tlaW4xMDI0LTU3Nic6IDB4YjNhOCxcbiAgJ1NrZWluMTAyNC01ODQnOiAweGIzYTksXG4gICdTa2VpbjEwMjQtNTkyJzogMHhiM2FhLFxuICAnU2tlaW4xMDI0LTYwMCc6IDB4YjNhYixcbiAgJ1NrZWluMTAyNC02MDgnOiAweGIzYWMsXG4gICdTa2VpbjEwMjQtNjE2JzogMHhiM2FkLFxuICAnU2tlaW4xMDI0LTYyNCc6IDB4YjNhZSxcbiAgJ1NrZWluMTAyNC02MzInOiAweGIzYWYsXG4gICdTa2VpbjEwMjQtNjQwJzogMHhiM2IwLFxuICAnU2tlaW4xMDI0LTY0OCc6IDB4YjNiMSxcbiAgJ1NrZWluMTAyNC02NTYnOiAweGIzYjIsXG4gICdTa2VpbjEwMjQtNjY0JzogMHhiM2IzLFxuICAnU2tlaW4xMDI0LTY3Mic6IDB4YjNiNCxcbiAgJ1NrZWluMTAyNC02ODAnOiAweGIzYjUsXG4gICdTa2VpbjEwMjQtNjg4JzogMHhiM2I2LFxuICAnU2tlaW4xMDI0LTY5Nic6IDB4YjNiNyxcbiAgJ1NrZWluMTAyNC03MDQnOiAweGIzYjgsXG4gICdTa2VpbjEwMjQtNzEyJzogMHhiM2I5LFxuICAnU2tlaW4xMDI0LTcyMCc6IDB4YjNiYSxcbiAgJ1NrZWluMTAyNC03MjgnOiAweGIzYmIsXG4gICdTa2VpbjEwMjQtNzM2JzogMHhiM2JjLFxuICAnU2tlaW4xMDI0LTc0NCc6IDB4YjNiZCxcbiAgJ1NrZWluMTAyNC03NTInOiAweGIzYmUsXG4gICdTa2VpbjEwMjQtNzYwJzogMHhiM2JmLFxuICAnU2tlaW4xMDI0LTc2OCc6IDB4YjNjMCxcbiAgJ1NrZWluMTAyNC03NzYnOiAweGIzYzEsXG4gICdTa2VpbjEwMjQtNzg0JzogMHhiM2MyLFxuICAnU2tlaW4xMDI0LTc5Mic6IDB4YjNjMyxcbiAgJ1NrZWluMTAyNC04MDAnOiAweGIzYzQsXG4gICdTa2VpbjEwMjQtODA4JzogMHhiM2M1LFxuICAnU2tlaW4xMDI0LTgxNic6IDB4YjNjNixcbiAgJ1NrZWluMTAyNC04MjQnOiAweGIzYzcsXG4gICdTa2VpbjEwMjQtODMyJzogMHhiM2M4LFxuICAnU2tlaW4xMDI0LTg0MCc6IDB4YjNjOSxcbiAgJ1NrZWluMTAyNC04NDgnOiAweGIzY2EsXG4gICdTa2VpbjEwMjQtODU2JzogMHhiM2NiLFxuICAnU2tlaW4xMDI0LTg2NCc6IDB4YjNjYyxcbiAgJ1NrZWluMTAyNC04NzInOiAweGIzY2QsXG4gICdTa2VpbjEwMjQtODgwJzogMHhiM2NlLFxuICAnU2tlaW4xMDI0LTg4OCc6IDB4YjNjZixcbiAgJ1NrZWluMTAyNC04OTYnOiAweGIzZDAsXG4gICdTa2VpbjEwMjQtOTA0JzogMHhiM2QxLFxuICAnU2tlaW4xMDI0LTkxMic6IDB4YjNkMixcbiAgJ1NrZWluMTAyNC05MjAnOiAweGIzZDMsXG4gICdTa2VpbjEwMjQtOTI4JzogMHhiM2Q0LFxuICAnU2tlaW4xMDI0LTkzNic6IDB4YjNkNSxcbiAgJ1NrZWluMTAyNC05NDQnOiAweGIzZDYsXG4gICdTa2VpbjEwMjQtOTUyJzogMHhiM2Q3LFxuICAnU2tlaW4xMDI0LTk2MCc6IDB4YjNkOCxcbiAgJ1NrZWluMTAyNC05NjgnOiAweGIzZDksXG4gICdTa2VpbjEwMjQtOTc2JzogMHhiM2RhLFxuICAnU2tlaW4xMDI0LTk4NCc6IDB4YjNkYixcbiAgJ1NrZWluMTAyNC05OTInOiAweGIzZGMsXG4gICdTa2VpbjEwMjQtMTAwMCc6IDB4YjNkZCxcbiAgJ1NrZWluMTAyNC0xMDA4JzogMHhiM2RlLFxuICAnU2tlaW4xMDI0LTEwMTYnOiAweGIzZGYsXG4gICdTa2VpbjEwMjQtMTAyNCc6IDB4YjNlMFxufSlcblxuZXhwb3J0cy5jb2RlcyA9IE9iamVjdC5mcmVlemUoe1xuICAweDA6ICdpZGVudGl0eScsXG5cbiAgLy8gc2hhIGZhbWlseVxuICAweDExOiAnc2hhMScsXG4gIDB4MTI6ICdzaGEyLTI1NicsXG4gIDB4MTM6ICdzaGEyLTUxMicsXG4gIDB4NTY6ICdkYmwtc2hhMi0yNTYnLFxuICAweDE3OiAnc2hhMy0yMjQnLFxuICAweDE2OiAnc2hhMy0yNTYnLFxuICAweDE1OiAnc2hhMy0zODQnLFxuICAweDE0OiAnc2hhMy01MTInLFxuICAweDE4OiAnc2hha2UtMTI4JyxcbiAgMHgxOTogJ3NoYWtlLTI1NicsXG4gIDB4MUE6ICdrZWNjYWstMjI0JyxcbiAgMHgxQjogJ2tlY2Nhay0yNTYnLFxuICAweDFDOiAna2VjY2FrLTM4NCcsXG4gIDB4MUQ6ICdrZWNjYWstNTEyJyxcblxuICAweDIyOiAnbXVybXVyMy0xMjgnLFxuICAweDIzOiAnbXVybXVyMy0zMicsXG5cbiAgLy8gYmxha2UyXG4gIDB4YjIwMTogJ2JsYWtlMmItOCcsXG4gIDB4YjIwMjogJ2JsYWtlMmItMTYnLFxuICAweGIyMDM6ICdibGFrZTJiLTI0JyxcbiAgMHhiMjA0OiAnYmxha2UyYi0zMicsXG4gIDB4YjIwNTogJ2JsYWtlMmItNDAnLFxuICAweGIyMDY6ICdibGFrZTJiLTQ4JyxcbiAgMHhiMjA3OiAnYmxha2UyYi01NicsXG4gIDB4YjIwODogJ2JsYWtlMmItNjQnLFxuICAweGIyMDk6ICdibGFrZTJiLTcyJyxcbiAgMHhiMjBhOiAnYmxha2UyYi04MCcsXG4gIDB4YjIwYjogJ2JsYWtlMmItODgnLFxuICAweGIyMGM6ICdibGFrZTJiLTk2JyxcbiAgMHhiMjBkOiAnYmxha2UyYi0xMDQnLFxuICAweGIyMGU6ICdibGFrZTJiLTExMicsXG4gIDB4YjIwZjogJ2JsYWtlMmItMTIwJyxcbiAgMHhiMjEwOiAnYmxha2UyYi0xMjgnLFxuICAweGIyMTE6ICdibGFrZTJiLTEzNicsXG4gIDB4YjIxMjogJ2JsYWtlMmItMTQ0JyxcbiAgMHhiMjEzOiAnYmxha2UyYi0xNTInLFxuICAweGIyMTQ6ICdibGFrZTJiLTE2MCcsXG4gIDB4YjIxNTogJ2JsYWtlMmItMTY4JyxcbiAgMHhiMjE2OiAnYmxha2UyYi0xNzYnLFxuICAweGIyMTc6ICdibGFrZTJiLTE4NCcsXG4gIDB4YjIxODogJ2JsYWtlMmItMTkyJyxcbiAgMHhiMjE5OiAnYmxha2UyYi0yMDAnLFxuICAweGIyMWE6ICdibGFrZTJiLTIwOCcsXG4gIDB4YjIxYjogJ2JsYWtlMmItMjE2JyxcbiAgMHhiMjFjOiAnYmxha2UyYi0yMjQnLFxuICAweGIyMWQ6ICdibGFrZTJiLTIzMicsXG4gIDB4YjIxZTogJ2JsYWtlMmItMjQwJyxcbiAgMHhiMjFmOiAnYmxha2UyYi0yNDgnLFxuICAweGIyMjA6ICdibGFrZTJiLTI1NicsXG4gIDB4YjIyMTogJ2JsYWtlMmItMjY0JyxcbiAgMHhiMjIyOiAnYmxha2UyYi0yNzInLFxuICAweGIyMjM6ICdibGFrZTJiLTI4MCcsXG4gIDB4YjIyNDogJ2JsYWtlMmItMjg4JyxcbiAgMHhiMjI1OiAnYmxha2UyYi0yOTYnLFxuICAweGIyMjY6ICdibGFrZTJiLTMwNCcsXG4gIDB4YjIyNzogJ2JsYWtlMmItMzEyJyxcbiAgMHhiMjI4OiAnYmxha2UyYi0zMjAnLFxuICAweGIyMjk6ICdibGFrZTJiLTMyOCcsXG4gIDB4YjIyYTogJ2JsYWtlMmItMzM2JyxcbiAgMHhiMjJiOiAnYmxha2UyYi0zNDQnLFxuICAweGIyMmM6ICdibGFrZTJiLTM1MicsXG4gIDB4YjIyZDogJ2JsYWtlMmItMzYwJyxcbiAgMHhiMjJlOiAnYmxha2UyYi0zNjgnLFxuICAweGIyMmY6ICdibGFrZTJiLTM3NicsXG4gIDB4YjIzMDogJ2JsYWtlMmItMzg0JyxcbiAgMHhiMjMxOiAnYmxha2UyYi0zOTInLFxuICAweGIyMzI6ICdibGFrZTJiLTQwMCcsXG4gIDB4YjIzMzogJ2JsYWtlMmItNDA4JyxcbiAgMHhiMjM0OiAnYmxha2UyYi00MTYnLFxuICAweGIyMzU6ICdibGFrZTJiLTQyNCcsXG4gIDB4YjIzNjogJ2JsYWtlMmItNDMyJyxcbiAgMHhiMjM3OiAnYmxha2UyYi00NDAnLFxuICAweGIyMzg6ICdibGFrZTJiLTQ0OCcsXG4gIDB4YjIzOTogJ2JsYWtlMmItNDU2JyxcbiAgMHhiMjNhOiAnYmxha2UyYi00NjQnLFxuICAweGIyM2I6ICdibGFrZTJiLTQ3MicsXG4gIDB4YjIzYzogJ2JsYWtlMmItNDgwJyxcbiAgMHhiMjNkOiAnYmxha2UyYi00ODgnLFxuICAweGIyM2U6ICdibGFrZTJiLTQ5NicsXG4gIDB4YjIzZjogJ2JsYWtlMmItNTA0JyxcbiAgMHhiMjQwOiAnYmxha2UyYi01MTInLFxuICAweGIyNDE6ICdibGFrZTJzLTgnLFxuICAweGIyNDI6ICdibGFrZTJzLTE2JyxcbiAgMHhiMjQzOiAnYmxha2Uycy0yNCcsXG4gIDB4YjI0NDogJ2JsYWtlMnMtMzInLFxuICAweGIyNDU6ICdibGFrZTJzLTQwJyxcbiAgMHhiMjQ2OiAnYmxha2Uycy00OCcsXG4gIDB4YjI0NzogJ2JsYWtlMnMtNTYnLFxuICAweGIyNDg6ICdibGFrZTJzLTY0JyxcbiAgMHhiMjQ5OiAnYmxha2Uycy03MicsXG4gIDB4YjI0YTogJ2JsYWtlMnMtODAnLFxuICAweGIyNGI6ICdibGFrZTJzLTg4JyxcbiAgMHhiMjRjOiAnYmxha2Uycy05NicsXG4gIDB4YjI0ZDogJ2JsYWtlMnMtMTA0JyxcbiAgMHhiMjRlOiAnYmxha2Uycy0xMTInLFxuICAweGIyNGY6ICdibGFrZTJzLTEyMCcsXG4gIDB4YjI1MDogJ2JsYWtlMnMtMTI4JyxcbiAgMHhiMjUxOiAnYmxha2Uycy0xMzYnLFxuICAweGIyNTI6ICdibGFrZTJzLTE0NCcsXG4gIDB4YjI1MzogJ2JsYWtlMnMtMTUyJyxcbiAgMHhiMjU0OiAnYmxha2Uycy0xNjAnLFxuICAweGIyNTU6ICdibGFrZTJzLTE2OCcsXG4gIDB4YjI1NjogJ2JsYWtlMnMtMTc2JyxcbiAgMHhiMjU3OiAnYmxha2Uycy0xODQnLFxuICAweGIyNTg6ICdibGFrZTJzLTE5MicsXG4gIDB4YjI1OTogJ2JsYWtlMnMtMjAwJyxcbiAgMHhiMjVhOiAnYmxha2Uycy0yMDgnLFxuICAweGIyNWI6ICdibGFrZTJzLTIxNicsXG4gIDB4YjI1YzogJ2JsYWtlMnMtMjI0JyxcbiAgMHhiMjVkOiAnYmxha2Uycy0yMzInLFxuICAweGIyNWU6ICdibGFrZTJzLTI0MCcsXG4gIDB4YjI1ZjogJ2JsYWtlMnMtMjQ4JyxcbiAgMHhiMjYwOiAnYmxha2Uycy0yNTYnLFxuXG4gIC8vIHNrZWluXG4gIDB4YjMwMTogJ1NrZWluMjU2LTgnLFxuICAweGIzMDI6ICdTa2VpbjI1Ni0xNicsXG4gIDB4YjMwMzogJ1NrZWluMjU2LTI0JyxcbiAgMHhiMzA0OiAnU2tlaW4yNTYtMzInLFxuICAweGIzMDU6ICdTa2VpbjI1Ni00MCcsXG4gIDB4YjMwNjogJ1NrZWluMjU2LTQ4JyxcbiAgMHhiMzA3OiAnU2tlaW4yNTYtNTYnLFxuICAweGIzMDg6ICdTa2VpbjI1Ni02NCcsXG4gIDB4YjMwOTogJ1NrZWluMjU2LTcyJyxcbiAgMHhiMzBhOiAnU2tlaW4yNTYtODAnLFxuICAweGIzMGI6ICdTa2VpbjI1Ni04OCcsXG4gIDB4YjMwYzogJ1NrZWluMjU2LTk2JyxcbiAgMHhiMzBkOiAnU2tlaW4yNTYtMTA0JyxcbiAgMHhiMzBlOiAnU2tlaW4yNTYtMTEyJyxcbiAgMHhiMzBmOiAnU2tlaW4yNTYtMTIwJyxcbiAgMHhiMzEwOiAnU2tlaW4yNTYtMTI4JyxcbiAgMHhiMzExOiAnU2tlaW4yNTYtMTM2JyxcbiAgMHhiMzEyOiAnU2tlaW4yNTYtMTQ0JyxcbiAgMHhiMzEzOiAnU2tlaW4yNTYtMTUyJyxcbiAgMHhiMzE0OiAnU2tlaW4yNTYtMTYwJyxcbiAgMHhiMzE1OiAnU2tlaW4yNTYtMTY4JyxcbiAgMHhiMzE2OiAnU2tlaW4yNTYtMTc2JyxcbiAgMHhiMzE3OiAnU2tlaW4yNTYtMTg0JyxcbiAgMHhiMzE4OiAnU2tlaW4yNTYtMTkyJyxcbiAgMHhiMzE5OiAnU2tlaW4yNTYtMjAwJyxcbiAgMHhiMzFhOiAnU2tlaW4yNTYtMjA4JyxcbiAgMHhiMzFiOiAnU2tlaW4yNTYtMjE2JyxcbiAgMHhiMzFjOiAnU2tlaW4yNTYtMjI0JyxcbiAgMHhiMzFkOiAnU2tlaW4yNTYtMjMyJyxcbiAgMHhiMzFlOiAnU2tlaW4yNTYtMjQwJyxcbiAgMHhiMzFmOiAnU2tlaW4yNTYtMjQ4JyxcbiAgMHhiMzIwOiAnU2tlaW4yNTYtMjU2JyxcbiAgMHhiMzIxOiAnU2tlaW41MTItOCcsXG4gIDB4YjMyMjogJ1NrZWluNTEyLTE2JyxcbiAgMHhiMzIzOiAnU2tlaW41MTItMjQnLFxuICAweGIzMjQ6ICdTa2VpbjUxMi0zMicsXG4gIDB4YjMyNTogJ1NrZWluNTEyLTQwJyxcbiAgMHhiMzI2OiAnU2tlaW41MTItNDgnLFxuICAweGIzMjc6ICdTa2VpbjUxMi01NicsXG4gIDB4YjMyODogJ1NrZWluNTEyLTY0JyxcbiAgMHhiMzI5OiAnU2tlaW41MTItNzInLFxuICAweGIzMmE6ICdTa2VpbjUxMi04MCcsXG4gIDB4YjMyYjogJ1NrZWluNTEyLTg4JyxcbiAgMHhiMzJjOiAnU2tlaW41MTItOTYnLFxuICAweGIzMmQ6ICdTa2VpbjUxMi0xMDQnLFxuICAweGIzMmU6ICdTa2VpbjUxMi0xMTInLFxuICAweGIzMmY6ICdTa2VpbjUxMi0xMjAnLFxuICAweGIzMzA6ICdTa2VpbjUxMi0xMjgnLFxuICAweGIzMzE6ICdTa2VpbjUxMi0xMzYnLFxuICAweGIzMzI6ICdTa2VpbjUxMi0xNDQnLFxuICAweGIzMzM6ICdTa2VpbjUxMi0xNTInLFxuICAweGIzMzQ6ICdTa2VpbjUxMi0xNjAnLFxuICAweGIzMzU6ICdTa2VpbjUxMi0xNjgnLFxuICAweGIzMzY6ICdTa2VpbjUxMi0xNzYnLFxuICAweGIzMzc6ICdTa2VpbjUxMi0xODQnLFxuICAweGIzMzg6ICdTa2VpbjUxMi0xOTInLFxuICAweGIzMzk6ICdTa2VpbjUxMi0yMDAnLFxuICAweGIzM2E6ICdTa2VpbjUxMi0yMDgnLFxuICAweGIzM2I6ICdTa2VpbjUxMi0yMTYnLFxuICAweGIzM2M6ICdTa2VpbjUxMi0yMjQnLFxuICAweGIzM2Q6ICdTa2VpbjUxMi0yMzInLFxuICAweGIzM2U6ICdTa2VpbjUxMi0yNDAnLFxuICAweGIzM2Y6ICdTa2VpbjUxMi0yNDgnLFxuICAweGIzNDA6ICdTa2VpbjUxMi0yNTYnLFxuICAweGIzNDE6ICdTa2VpbjUxMi0yNjQnLFxuICAweGIzNDI6ICdTa2VpbjUxMi0yNzInLFxuICAweGIzNDM6ICdTa2VpbjUxMi0yODAnLFxuICAweGIzNDQ6ICdTa2VpbjUxMi0yODgnLFxuICAweGIzNDU6ICdTa2VpbjUxMi0yOTYnLFxuICAweGIzNDY6ICdTa2VpbjUxMi0zMDQnLFxuICAweGIzNDc6ICdTa2VpbjUxMi0zMTInLFxuICAweGIzNDg6ICdTa2VpbjUxMi0zMjAnLFxuICAweGIzNDk6ICdTa2VpbjUxMi0zMjgnLFxuICAweGIzNGE6ICdTa2VpbjUxMi0zMzYnLFxuICAweGIzNGI6ICdTa2VpbjUxMi0zNDQnLFxuICAweGIzNGM6ICdTa2VpbjUxMi0zNTInLFxuICAweGIzNGQ6ICdTa2VpbjUxMi0zNjAnLFxuICAweGIzNGU6ICdTa2VpbjUxMi0zNjgnLFxuICAweGIzNGY6ICdTa2VpbjUxMi0zNzYnLFxuICAweGIzNTA6ICdTa2VpbjUxMi0zODQnLFxuICAweGIzNTE6ICdTa2VpbjUxMi0zOTInLFxuICAweGIzNTI6ICdTa2VpbjUxMi00MDAnLFxuICAweGIzNTM6ICdTa2VpbjUxMi00MDgnLFxuICAweGIzNTQ6ICdTa2VpbjUxMi00MTYnLFxuICAweGIzNTU6ICdTa2VpbjUxMi00MjQnLFxuICAweGIzNTY6ICdTa2VpbjUxMi00MzInLFxuICAweGIzNTc6ICdTa2VpbjUxMi00NDAnLFxuICAweGIzNTg6ICdTa2VpbjUxMi00NDgnLFxuICAweGIzNTk6ICdTa2VpbjUxMi00NTYnLFxuICAweGIzNWE6ICdTa2VpbjUxMi00NjQnLFxuICAweGIzNWI6ICdTa2VpbjUxMi00NzInLFxuICAweGIzNWM6ICdTa2VpbjUxMi00ODAnLFxuICAweGIzNWQ6ICdTa2VpbjUxMi00ODgnLFxuICAweGIzNWU6ICdTa2VpbjUxMi00OTYnLFxuICAweGIzNWY6ICdTa2VpbjUxMi01MDQnLFxuICAweGIzNjA6ICdTa2VpbjUxMi01MTInLFxuICAweGIzNjE6ICdTa2VpbjEwMjQtOCcsXG4gIDB4YjM2MjogJ1NrZWluMTAyNC0xNicsXG4gIDB4YjM2MzogJ1NrZWluMTAyNC0yNCcsXG4gIDB4YjM2NDogJ1NrZWluMTAyNC0zMicsXG4gIDB4YjM2NTogJ1NrZWluMTAyNC00MCcsXG4gIDB4YjM2NjogJ1NrZWluMTAyNC00OCcsXG4gIDB4YjM2NzogJ1NrZWluMTAyNC01NicsXG4gIDB4YjM2ODogJ1NrZWluMTAyNC02NCcsXG4gIDB4YjM2OTogJ1NrZWluMTAyNC03MicsXG4gIDB4YjM2YTogJ1NrZWluMTAyNC04MCcsXG4gIDB4YjM2YjogJ1NrZWluMTAyNC04OCcsXG4gIDB4YjM2YzogJ1NrZWluMTAyNC05NicsXG4gIDB4YjM2ZDogJ1NrZWluMTAyNC0xMDQnLFxuICAweGIzNmU6ICdTa2VpbjEwMjQtMTEyJyxcbiAgMHhiMzZmOiAnU2tlaW4xMDI0LTEyMCcsXG4gIDB4YjM3MDogJ1NrZWluMTAyNC0xMjgnLFxuICAweGIzNzE6ICdTa2VpbjEwMjQtMTM2JyxcbiAgMHhiMzcyOiAnU2tlaW4xMDI0LTE0NCcsXG4gIDB4YjM3MzogJ1NrZWluMTAyNC0xNTInLFxuICAweGIzNzQ6ICdTa2VpbjEwMjQtMTYwJyxcbiAgMHhiMzc1OiAnU2tlaW4xMDI0LTE2OCcsXG4gIDB4YjM3NjogJ1NrZWluMTAyNC0xNzYnLFxuICAweGIzNzc6ICdTa2VpbjEwMjQtMTg0JyxcbiAgMHhiMzc4OiAnU2tlaW4xMDI0LTE5MicsXG4gIDB4YjM3OTogJ1NrZWluMTAyNC0yMDAnLFxuICAweGIzN2E6ICdTa2VpbjEwMjQtMjA4JyxcbiAgMHhiMzdiOiAnU2tlaW4xMDI0LTIxNicsXG4gIDB4YjM3YzogJ1NrZWluMTAyNC0yMjQnLFxuICAweGIzN2Q6ICdTa2VpbjEwMjQtMjMyJyxcbiAgMHhiMzdlOiAnU2tlaW4xMDI0LTI0MCcsXG4gIDB4YjM3ZjogJ1NrZWluMTAyNC0yNDgnLFxuICAweGIzODA6ICdTa2VpbjEwMjQtMjU2JyxcbiAgMHhiMzgxOiAnU2tlaW4xMDI0LTI2NCcsXG4gIDB4YjM4MjogJ1NrZWluMTAyNC0yNzInLFxuICAweGIzODM6ICdTa2VpbjEwMjQtMjgwJyxcbiAgMHhiMzg0OiAnU2tlaW4xMDI0LTI4OCcsXG4gIDB4YjM4NTogJ1NrZWluMTAyNC0yOTYnLFxuICAweGIzODY6ICdTa2VpbjEwMjQtMzA0JyxcbiAgMHhiMzg3OiAnU2tlaW4xMDI0LTMxMicsXG4gIDB4YjM4ODogJ1NrZWluMTAyNC0zMjAnLFxuICAweGIzODk6ICdTa2VpbjEwMjQtMzI4JyxcbiAgMHhiMzhhOiAnU2tlaW4xMDI0LTMzNicsXG4gIDB4YjM4YjogJ1NrZWluMTAyNC0zNDQnLFxuICAweGIzOGM6ICdTa2VpbjEwMjQtMzUyJyxcbiAgMHhiMzhkOiAnU2tlaW4xMDI0LTM2MCcsXG4gIDB4YjM4ZTogJ1NrZWluMTAyNC0zNjgnLFxuICAweGIzOGY6ICdTa2VpbjEwMjQtMzc2JyxcbiAgMHhiMzkwOiAnU2tlaW4xMDI0LTM4NCcsXG4gIDB4YjM5MTogJ1NrZWluMTAyNC0zOTInLFxuICAweGIzOTI6ICdTa2VpbjEwMjQtNDAwJyxcbiAgMHhiMzkzOiAnU2tlaW4xMDI0LTQwOCcsXG4gIDB4YjM5NDogJ1NrZWluMTAyNC00MTYnLFxuICAweGIzOTU6ICdTa2VpbjEwMjQtNDI0JyxcbiAgMHhiMzk2OiAnU2tlaW4xMDI0LTQzMicsXG4gIDB4YjM5NzogJ1NrZWluMTAyNC00NDAnLFxuICAweGIzOTg6ICdTa2VpbjEwMjQtNDQ4JyxcbiAgMHhiMzk5OiAnU2tlaW4xMDI0LTQ1NicsXG4gIDB4YjM5YTogJ1NrZWluMTAyNC00NjQnLFxuICAweGIzOWI6ICdTa2VpbjEwMjQtNDcyJyxcbiAgMHhiMzljOiAnU2tlaW4xMDI0LTQ4MCcsXG4gIDB4YjM5ZDogJ1NrZWluMTAyNC00ODgnLFxuICAweGIzOWU6ICdTa2VpbjEwMjQtNDk2JyxcbiAgMHhiMzlmOiAnU2tlaW4xMDI0LTUwNCcsXG4gIDB4YjNhMDogJ1NrZWluMTAyNC01MTInLFxuICAweGIzYTE6ICdTa2VpbjEwMjQtNTIwJyxcbiAgMHhiM2EyOiAnU2tlaW4xMDI0LTUyOCcsXG4gIDB4YjNhMzogJ1NrZWluMTAyNC01MzYnLFxuICAweGIzYTQ6ICdTa2VpbjEwMjQtNTQ0JyxcbiAgMHhiM2E1OiAnU2tlaW4xMDI0LTU1MicsXG4gIDB4YjNhNjogJ1NrZWluMTAyNC01NjAnLFxuICAweGIzYTc6ICdTa2VpbjEwMjQtNTY4JyxcbiAgMHhiM2E4OiAnU2tlaW4xMDI0LTU3NicsXG4gIDB4YjNhOTogJ1NrZWluMTAyNC01ODQnLFxuICAweGIzYWE6ICdTa2VpbjEwMjQtNTkyJyxcbiAgMHhiM2FiOiAnU2tlaW4xMDI0LTYwMCcsXG4gIDB4YjNhYzogJ1NrZWluMTAyNC02MDgnLFxuICAweGIzYWQ6ICdTa2VpbjEwMjQtNjE2JyxcbiAgMHhiM2FlOiAnU2tlaW4xMDI0LTYyNCcsXG4gIDB4YjNhZjogJ1NrZWluMTAyNC02MzInLFxuICAweGIzYjA6ICdTa2VpbjEwMjQtNjQwJyxcbiAgMHhiM2IxOiAnU2tlaW4xMDI0LTY0OCcsXG4gIDB4YjNiMjogJ1NrZWluMTAyNC02NTYnLFxuICAweGIzYjM6ICdTa2VpbjEwMjQtNjY0JyxcbiAgMHhiM2I0OiAnU2tlaW4xMDI0LTY3MicsXG4gIDB4YjNiNTogJ1NrZWluMTAyNC02ODAnLFxuICAweGIzYjY6ICdTa2VpbjEwMjQtNjg4JyxcbiAgMHhiM2I3OiAnU2tlaW4xMDI0LTY5NicsXG4gIDB4YjNiODogJ1NrZWluMTAyNC03MDQnLFxuICAweGIzYjk6ICdTa2VpbjEwMjQtNzEyJyxcbiAgMHhiM2JhOiAnU2tlaW4xMDI0LTcyMCcsXG4gIDB4YjNiYjogJ1NrZWluMTAyNC03MjgnLFxuICAweGIzYmM6ICdTa2VpbjEwMjQtNzM2JyxcbiAgMHhiM2JkOiAnU2tlaW4xMDI0LTc0NCcsXG4gIDB4YjNiZTogJ1NrZWluMTAyNC03NTInLFxuICAweGIzYmY6ICdTa2VpbjEwMjQtNzYwJyxcbiAgMHhiM2MwOiAnU2tlaW4xMDI0LTc2OCcsXG4gIDB4YjNjMTogJ1NrZWluMTAyNC03NzYnLFxuICAweGIzYzI6ICdTa2VpbjEwMjQtNzg0JyxcbiAgMHhiM2MzOiAnU2tlaW4xMDI0LTc5MicsXG4gIDB4YjNjNDogJ1NrZWluMTAyNC04MDAnLFxuICAweGIzYzU6ICdTa2VpbjEwMjQtODA4JyxcbiAgMHhiM2M2OiAnU2tlaW4xMDI0LTgxNicsXG4gIDB4YjNjNzogJ1NrZWluMTAyNC04MjQnLFxuICAweGIzYzg6ICdTa2VpbjEwMjQtODMyJyxcbiAgMHhiM2M5OiAnU2tlaW4xMDI0LTg0MCcsXG4gIDB4YjNjYTogJ1NrZWluMTAyNC04NDgnLFxuICAweGIzY2I6ICdTa2VpbjEwMjQtODU2JyxcbiAgMHhiM2NjOiAnU2tlaW4xMDI0LTg2NCcsXG4gIDB4YjNjZDogJ1NrZWluMTAyNC04NzInLFxuICAweGIzY2U6ICdTa2VpbjEwMjQtODgwJyxcbiAgMHhiM2NmOiAnU2tlaW4xMDI0LTg4OCcsXG4gIDB4YjNkMDogJ1NrZWluMTAyNC04OTYnLFxuICAweGIzZDE6ICdTa2VpbjEwMjQtOTA0JyxcbiAgMHhiM2QyOiAnU2tlaW4xMDI0LTkxMicsXG4gIDB4YjNkMzogJ1NrZWluMTAyNC05MjAnLFxuICAweGIzZDQ6ICdTa2VpbjEwMjQtOTI4JyxcbiAgMHhiM2Q1OiAnU2tlaW4xMDI0LTkzNicsXG4gIDB4YjNkNjogJ1NrZWluMTAyNC05NDQnLFxuICAweGIzZDc6ICdTa2VpbjEwMjQtOTUyJyxcbiAgMHhiM2Q4OiAnU2tlaW4xMDI0LTk2MCcsXG4gIDB4YjNkOTogJ1NrZWluMTAyNC05NjgnLFxuICAweGIzZGE6ICdTa2VpbjEwMjQtOTc2JyxcbiAgMHhiM2RiOiAnU2tlaW4xMDI0LTk4NCcsXG4gIDB4YjNkYzogJ1NrZWluMTAyNC05OTInLFxuICAweGIzZGQ6ICdTa2VpbjEwMjQtMTAwMCcsXG4gIDB4YjNkZTogJ1NrZWluMTAyNC0xMDA4JyxcbiAgMHhiM2RmOiAnU2tlaW4xMDI0LTEwMTYnLFxuICAweGIzZTA6ICdTa2VpbjEwMjQtMTAyNCdcbn0pXG5cbmV4cG9ydHMuZGVmYXVsdExlbmd0aHMgPSBPYmplY3QuZnJlZXplKHtcbiAgMHgxMTogMjAsXG4gIDB4MTI6IDMyLFxuICAweDEzOiA2NCxcbiAgMHg1NjogMzIsXG4gIDB4MTc6IDI4LFxuICAweDE2OiAzMixcbiAgMHgxNTogNDgsXG4gIDB4MTQ6IDY0LFxuICAweDE4OiAzMixcbiAgMHgxOTogNjQsXG4gIDB4MUE6IDI4LFxuICAweDFCOiAzMixcbiAgMHgxQzogNDgsXG4gIDB4MUQ6IDY0LFxuICAweDIyOiAzMixcblxuICAweGIyMDE6IDB4MDEsXG4gIDB4YjIwMjogMHgwMixcbiAgMHhiMjAzOiAweDAzLFxuICAweGIyMDQ6IDB4MDQsXG4gIDB4YjIwNTogMHgwNSxcbiAgMHhiMjA2OiAweDA2LFxuICAweGIyMDc6IDB4MDcsXG4gIDB4YjIwODogMHgwOCxcbiAgMHhiMjA5OiAweDA5LFxuICAweGIyMGE6IDB4MGEsXG4gIDB4YjIwYjogMHgwYixcbiAgMHhiMjBjOiAweDBjLFxuICAweGIyMGQ6IDB4MGQsXG4gIDB4YjIwZTogMHgwZSxcbiAgMHhiMjBmOiAweDBmLFxuICAweGIyMTA6IDB4MTAsXG4gIDB4YjIxMTogMHgxMSxcbiAgMHhiMjEyOiAweDEyLFxuICAweGIyMTM6IDB4MTMsXG4gIDB4YjIxNDogMHgxNCxcbiAgMHhiMjE1OiAweDE1LFxuICAweGIyMTY6IDB4MTYsXG4gIDB4YjIxNzogMHgxNyxcbiAgMHhiMjE4OiAweDE4LFxuICAweGIyMTk6IDB4MTksXG4gIDB4YjIxYTogMHgxYSxcbiAgMHhiMjFiOiAweDFiLFxuICAweGIyMWM6IDB4MWMsXG4gIDB4YjIxZDogMHgxZCxcbiAgMHhiMjFlOiAweDFlLFxuICAweGIyMWY6IDB4MWYsXG4gIDB4YjIyMDogMHgyMCxcbiAgMHhiMjIxOiAweDIxLFxuICAweGIyMjI6IDB4MjIsXG4gIDB4YjIyMzogMHgyMyxcbiAgMHhiMjI0OiAweDI0LFxuICAweGIyMjU6IDB4MjUsXG4gIDB4YjIyNjogMHgyNixcbiAgMHhiMjI3OiAweDI3LFxuICAweGIyMjg6IDB4MjgsXG4gIDB4YjIyOTogMHgyOSxcbiAgMHhiMjJhOiAweDJhLFxuICAweGIyMmI6IDB4MmIsXG4gIDB4YjIyYzogMHgyYyxcbiAgMHhiMjJkOiAweDJkLFxuICAweGIyMmU6IDB4MmUsXG4gIDB4YjIyZjogMHgyZixcbiAgMHhiMjMwOiAweDMwLFxuICAweGIyMzE6IDB4MzEsXG4gIDB4YjIzMjogMHgzMixcbiAgMHhiMjMzOiAweDMzLFxuICAweGIyMzQ6IDB4MzQsXG4gIDB4YjIzNTogMHgzNSxcbiAgMHhiMjM2OiAweDM2LFxuICAweGIyMzc6IDB4MzcsXG4gIDB4YjIzODogMHgzOCxcbiAgMHhiMjM5OiAweDM5LFxuICAweGIyM2E6IDB4M2EsXG4gIDB4YjIzYjogMHgzYixcbiAgMHhiMjNjOiAweDNjLFxuICAweGIyM2Q6IDB4M2QsXG4gIDB4YjIzZTogMHgzZSxcbiAgMHhiMjNmOiAweDNmLFxuICAweGIyNDA6IDB4NDAsXG4gIDB4YjI0MTogMHgwMSxcbiAgMHhiMjQyOiAweDAyLFxuICAweGIyNDM6IDB4MDMsXG4gIDB4YjI0NDogMHgwNCxcbiAgMHhiMjQ1OiAweDA1LFxuICAweGIyNDY6IDB4MDYsXG4gIDB4YjI0NzogMHgwNyxcbiAgMHhiMjQ4OiAweDA4LFxuICAweGIyNDk6IDB4MDksXG4gIDB4YjI0YTogMHgwYSxcbiAgMHhiMjRiOiAweDBiLFxuICAweGIyNGM6IDB4MGMsXG4gIDB4YjI0ZDogMHgwZCxcbiAgMHhiMjRlOiAweDBlLFxuICAweGIyNGY6IDB4MGYsXG4gIDB4YjI1MDogMHgxMCxcbiAgMHhiMjUxOiAweDExLFxuICAweGIyNTI6IDB4MTIsXG4gIDB4YjI1MzogMHgxMyxcbiAgMHhiMjU0OiAweDE0LFxuICAweGIyNTU6IDB4MTUsXG4gIDB4YjI1NjogMHgxNixcbiAgMHhiMjU3OiAweDE3LFxuICAweGIyNTg6IDB4MTgsXG4gIDB4YjI1OTogMHgxOSxcbiAgMHhiMjVhOiAweDFhLFxuICAweGIyNWI6IDB4MWIsXG4gIDB4YjI1YzogMHgxYyxcbiAgMHhiMjVkOiAweDFkLFxuICAweGIyNWU6IDB4MWUsXG4gIDB4YjI1ZjogMHgxZixcbiAgMHhiMjYwOiAweDIwLFxuICAweGIzMDE6IDB4MDEsXG4gIDB4YjMwMjogMHgwMixcbiAgMHhiMzAzOiAweDAzLFxuICAweGIzMDQ6IDB4MDQsXG4gIDB4YjMwNTogMHgwNSxcbiAgMHhiMzA2OiAweDA2LFxuICAweGIzMDc6IDB4MDcsXG4gIDB4YjMwODogMHgwOCxcbiAgMHhiMzA5OiAweDA5LFxuICAweGIzMGE6IDB4MGEsXG4gIDB4YjMwYjogMHgwYixcbiAgMHhiMzBjOiAweDBjLFxuICAweGIzMGQ6IDB4MGQsXG4gIDB4YjMwZTogMHgwZSxcbiAgMHhiMzBmOiAweDBmLFxuICAweGIzMTA6IDB4MTAsXG4gIDB4YjMxMTogMHgxMSxcbiAgMHhiMzEyOiAweDEyLFxuICAweGIzMTM6IDB4MTMsXG4gIDB4YjMxNDogMHgxNCxcbiAgMHhiMzE1OiAweDE1LFxuICAweGIzMTY6IDB4MTYsXG4gIDB4YjMxNzogMHgxNyxcbiAgMHhiMzE4OiAweDE4LFxuICAweGIzMTk6IDB4MTksXG4gIDB4YjMxYTogMHgxYSxcbiAgMHhiMzFiOiAweDFiLFxuICAweGIzMWM6IDB4MWMsXG4gIDB4YjMxZDogMHgxZCxcbiAgMHhiMzFlOiAweDFlLFxuICAweGIzMWY6IDB4MWYsXG4gIDB4YjMyMDogMHgyMCxcbiAgMHhiMzIxOiAweDAxLFxuICAweGIzMjI6IDB4MDIsXG4gIDB4YjMyMzogMHgwMyxcbiAgMHhiMzI0OiAweDA0LFxuICAweGIzMjU6IDB4MDUsXG4gIDB4YjMyNjogMHgwNixcbiAgMHhiMzI3OiAweDA3LFxuICAweGIzMjg6IDB4MDgsXG4gIDB4YjMyOTogMHgwOSxcbiAgMHhiMzJhOiAweDBhLFxuICAweGIzMmI6IDB4MGIsXG4gIDB4YjMyYzogMHgwYyxcbiAgMHhiMzJkOiAweDBkLFxuICAweGIzMmU6IDB4MGUsXG4gIDB4YjMyZjogMHgwZixcbiAgMHhiMzMwOiAweDEwLFxuICAweGIzMzE6IDB4MTEsXG4gIDB4YjMzMjogMHgxMixcbiAgMHhiMzMzOiAweDEzLFxuICAweGIzMzQ6IDB4MTQsXG4gIDB4YjMzNTogMHgxNSxcbiAgMHhiMzM2OiAweDE2LFxuICAweGIzMzc6IDB4MTcsXG4gIDB4YjMzODogMHgxOCxcbiAgMHhiMzM5OiAweDE5LFxuICAweGIzM2E6IDB4MWEsXG4gIDB4YjMzYjogMHgxYixcbiAgMHhiMzNjOiAweDFjLFxuICAweGIzM2Q6IDB4MWQsXG4gIDB4YjMzZTogMHgxZSxcbiAgMHhiMzNmOiAweDFmLFxuICAweGIzNDA6IDB4MjAsXG4gIDB4YjM0MTogMHgyMSxcbiAgMHhiMzQyOiAweDIyLFxuICAweGIzNDM6IDB4MjMsXG4gIDB4YjM0NDogMHgyNCxcbiAgMHhiMzQ1OiAweDI1LFxuICAweGIzNDY6IDB4MjYsXG4gIDB4YjM0NzogMHgyNyxcbiAgMHhiMzQ4OiAweDI4LFxuICAweGIzNDk6IDB4MjksXG4gIDB4YjM0YTogMHgyYSxcbiAgMHhiMzRiOiAweDJiLFxuICAweGIzNGM6IDB4MmMsXG4gIDB4YjM0ZDogMHgyZCxcbiAgMHhiMzRlOiAweDJlLFxuICAweGIzNGY6IDB4MmYsXG4gIDB4YjM1MDogMHgzMCxcbiAgMHhiMzUxOiAweDMxLFxuICAweGIzNTI6IDB4MzIsXG4gIDB4YjM1MzogMHgzMyxcbiAgMHhiMzU0OiAweDM0LFxuICAweGIzNTU6IDB4MzUsXG4gIDB4YjM1NjogMHgzNixcbiAgMHhiMzU3OiAweDM3LFxuICAweGIzNTg6IDB4MzgsXG4gIDB4YjM1OTogMHgzOSxcbiAgMHhiMzVhOiAweDNhLFxuICAweGIzNWI6IDB4M2IsXG4gIDB4YjM1YzogMHgzYyxcbiAgMHhiMzVkOiAweDNkLFxuICAweGIzNWU6IDB4M2UsXG4gIDB4YjM1ZjogMHgzZixcbiAgMHhiMzYwOiAweDQwLFxuICAweGIzNjE6IDB4MDEsXG4gIDB4YjM2MjogMHgwMixcbiAgMHhiMzYzOiAweDAzLFxuICAweGIzNjQ6IDB4MDQsXG4gIDB4YjM2NTogMHgwNSxcbiAgMHhiMzY2OiAweDA2LFxuICAweGIzNjc6IDB4MDcsXG4gIDB4YjM2ODogMHgwOCxcbiAgMHhiMzY5OiAweDA5LFxuICAweGIzNmE6IDB4MGEsXG4gIDB4YjM2YjogMHgwYixcbiAgMHhiMzZjOiAweDBjLFxuICAweGIzNmQ6IDB4MGQsXG4gIDB4YjM2ZTogMHgwZSxcbiAgMHhiMzZmOiAweDBmLFxuICAweGIzNzA6IDB4MTAsXG4gIDB4YjM3MTogMHgxMSxcbiAgMHhiMzcyOiAweDEyLFxuICAweGIzNzM6IDB4MTMsXG4gIDB4YjM3NDogMHgxNCxcbiAgMHhiMzc1OiAweDE1LFxuICAweGIzNzY6IDB4MTYsXG4gIDB4YjM3NzogMHgxNyxcbiAgMHhiMzc4OiAweDE4LFxuICAweGIzNzk6IDB4MTksXG4gIDB4YjM3YTogMHgxYSxcbiAgMHhiMzdiOiAweDFiLFxuICAweGIzN2M6IDB4MWMsXG4gIDB4YjM3ZDogMHgxZCxcbiAgMHhiMzdlOiAweDFlLFxuICAweGIzN2Y6IDB4MWYsXG4gIDB4YjM4MDogMHgyMCxcbiAgMHhiMzgxOiAweDIxLFxuICAweGIzODI6IDB4MjIsXG4gIDB4YjM4MzogMHgyMyxcbiAgMHhiMzg0OiAweDI0LFxuICAweGIzODU6IDB4MjUsXG4gIDB4YjM4NjogMHgyNixcbiAgMHhiMzg3OiAweDI3LFxuICAweGIzODg6IDB4MjgsXG4gIDB4YjM4OTogMHgyOSxcbiAgMHhiMzhhOiAweDJhLFxuICAweGIzOGI6IDB4MmIsXG4gIDB4YjM4YzogMHgyYyxcbiAgMHhiMzhkOiAweDJkLFxuICAweGIzOGU6IDB4MmUsXG4gIDB4YjM4ZjogMHgyZixcbiAgMHhiMzkwOiAweDMwLFxuICAweGIzOTE6IDB4MzEsXG4gIDB4YjM5MjogMHgzMixcbiAgMHhiMzkzOiAweDMzLFxuICAweGIzOTQ6IDB4MzQsXG4gIDB4YjM5NTogMHgzNSxcbiAgMHhiMzk2OiAweDM2LFxuICAweGIzOTc6IDB4MzcsXG4gIDB4YjM5ODogMHgzOCxcbiAgMHhiMzk5OiAweDM5LFxuICAweGIzOWE6IDB4M2EsXG4gIDB4YjM5YjogMHgzYixcbiAgMHhiMzljOiAweDNjLFxuICAweGIzOWQ6IDB4M2QsXG4gIDB4YjM5ZTogMHgzZSxcbiAgMHhiMzlmOiAweDNmLFxuICAweGIzYTA6IDB4NDAsXG4gIDB4YjNhMTogMHg0MSxcbiAgMHhiM2EyOiAweDQyLFxuICAweGIzYTM6IDB4NDMsXG4gIDB4YjNhNDogMHg0NCxcbiAgMHhiM2E1OiAweDQ1LFxuICAweGIzYTY6IDB4NDYsXG4gIDB4YjNhNzogMHg0NyxcbiAgMHhiM2E4OiAweDQ4LFxuICAweGIzYTk6IDB4NDksXG4gIDB4YjNhYTogMHg0YSxcbiAgMHhiM2FiOiAweDRiLFxuICAweGIzYWM6IDB4NGMsXG4gIDB4YjNhZDogMHg0ZCxcbiAgMHhiM2FlOiAweDRlLFxuICAweGIzYWY6IDB4NGYsXG4gIDB4YjNiMDogMHg1MCxcbiAgMHhiM2IxOiAweDUxLFxuICAweGIzYjI6IDB4NTIsXG4gIDB4YjNiMzogMHg1MyxcbiAgMHhiM2I0OiAweDU0LFxuICAweGIzYjU6IDB4NTUsXG4gIDB4YjNiNjogMHg1NixcbiAgMHhiM2I3OiAweDU3LFxuICAweGIzYjg6IDB4NTgsXG4gIDB4YjNiOTogMHg1OSxcbiAgMHhiM2JhOiAweDVhLFxuICAweGIzYmI6IDB4NWIsXG4gIDB4YjNiYzogMHg1YyxcbiAgMHhiM2JkOiAweDVkLFxuICAweGIzYmU6IDB4NWUsXG4gIDB4YjNiZjogMHg1ZixcbiAgMHhiM2MwOiAweDYwLFxuICAweGIzYzE6IDB4NjEsXG4gIDB4YjNjMjogMHg2MixcbiAgMHhiM2MzOiAweDYzLFxuICAweGIzYzQ6IDB4NjQsXG4gIDB4YjNjNTogMHg2NSxcbiAgMHhiM2M2OiAweDY2LFxuICAweGIzYzc6IDB4NjcsXG4gIDB4YjNjODogMHg2OCxcbiAgMHhiM2M5OiAweDY5LFxuICAweGIzY2E6IDB4NmEsXG4gIDB4YjNjYjogMHg2YixcbiAgMHhiM2NjOiAweDZjLFxuICAweGIzY2Q6IDB4NmQsXG4gIDB4YjNjZTogMHg2ZSxcbiAgMHhiM2NmOiAweDZmLFxuICAweGIzZDA6IDB4NzAsXG4gIDB4YjNkMTogMHg3MSxcbiAgMHhiM2QyOiAweDcyLFxuICAweGIzZDM6IDB4NzMsXG4gIDB4YjNkNDogMHg3NCxcbiAgMHhiM2Q1OiAweDc1LFxuICAweGIzZDY6IDB4NzYsXG4gIDB4YjNkNzogMHg3NyxcbiAgMHhiM2Q4OiAweDc4LFxuICAweGIzZDk6IDB4NzksXG4gIDB4YjNkYTogMHg3YSxcbiAgMHhiM2RiOiAweDdiLFxuICAweGIzZGM6IDB4N2MsXG4gIDB4YjNkZDogMHg3ZCxcbiAgMHhiM2RlOiAweDdlLFxuICAweGIzZGY6IDB4N2YsXG4gIDB4YjNlMDogMHg4MFxufSlcbiIsIm1vZHVsZS5leHBvcnRzID0gZW5jb2RlXG5cbnZhciBNU0IgPSAweDgwXG4gICwgUkVTVCA9IDB4N0ZcbiAgLCBNU0JBTEwgPSB+UkVTVFxuICAsIElOVCA9IE1hdGgucG93KDIsIDMxKVxuXG5mdW5jdGlvbiBlbmNvZGUobnVtLCBvdXQsIG9mZnNldCkge1xuICBvdXQgPSBvdXQgfHwgW11cbiAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDBcbiAgdmFyIG9sZE9mZnNldCA9IG9mZnNldFxuXG4gIHdoaWxlKG51bSA+PSBJTlQpIHtcbiAgICBvdXRbb2Zmc2V0KytdID0gKG51bSAmIDB4RkYpIHwgTVNCXG4gICAgbnVtIC89IDEyOFxuICB9XG4gIHdoaWxlKG51bSAmIE1TQkFMTCkge1xuICAgIG91dFtvZmZzZXQrK10gPSAobnVtICYgMHhGRikgfCBNU0JcbiAgICBudW0gPj4+PSA3XG4gIH1cbiAgb3V0W29mZnNldF0gPSBudW0gfCAwXG4gIFxuICBlbmNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXQgKyAxXG4gIFxuICByZXR1cm4gb3V0XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlYWRcblxudmFyIE1TQiA9IDB4ODBcbiAgLCBSRVNUID0gMHg3RlxuXG5mdW5jdGlvbiByZWFkKGJ1Ziwgb2Zmc2V0KSB7XG4gIHZhciByZXMgICAgPSAwXG4gICAgLCBvZmZzZXQgPSBvZmZzZXQgfHwgMFxuICAgICwgc2hpZnQgID0gMFxuICAgICwgY291bnRlciA9IG9mZnNldFxuICAgICwgYlxuICAgICwgbCA9IGJ1Zi5sZW5ndGhcblxuICBkbyB7XG4gICAgaWYgKGNvdW50ZXIgPj0gbCkge1xuICAgICAgcmVhZC5ieXRlcyA9IDBcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdDb3VsZCBub3QgZGVjb2RlIHZhcmludCcpXG4gICAgfVxuICAgIGIgPSBidWZbY291bnRlcisrXVxuICAgIHJlcyArPSBzaGlmdCA8IDI4XG4gICAgICA/IChiICYgUkVTVCkgPDwgc2hpZnRcbiAgICAgIDogKGIgJiBSRVNUKSAqIE1hdGgucG93KDIsIHNoaWZ0KVxuICAgIHNoaWZ0ICs9IDdcbiAgfSB3aGlsZSAoYiA+PSBNU0IpXG5cbiAgcmVhZC5ieXRlcyA9IGNvdW50ZXIgLSBvZmZzZXRcblxuICByZXR1cm4gcmVzXG59XG4iLCJcbnZhciBOMSA9IE1hdGgucG93KDIsICA3KVxudmFyIE4yID0gTWF0aC5wb3coMiwgMTQpXG52YXIgTjMgPSBNYXRoLnBvdygyLCAyMSlcbnZhciBONCA9IE1hdGgucG93KDIsIDI4KVxudmFyIE41ID0gTWF0aC5wb3coMiwgMzUpXG52YXIgTjYgPSBNYXRoLnBvdygyLCA0MilcbnZhciBONyA9IE1hdGgucG93KDIsIDQ5KVxudmFyIE44ID0gTWF0aC5wb3coMiwgNTYpXG52YXIgTjkgPSBNYXRoLnBvdygyLCA2MylcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZSA8IE4xID8gMVxuICA6IHZhbHVlIDwgTjIgPyAyXG4gIDogdmFsdWUgPCBOMyA/IDNcbiAgOiB2YWx1ZSA8IE40ID8gNFxuICA6IHZhbHVlIDwgTjUgPyA1XG4gIDogdmFsdWUgPCBONiA/IDZcbiAgOiB2YWx1ZSA8IE43ID8gN1xuICA6IHZhbHVlIDwgTjggPyA4XG4gIDogdmFsdWUgPCBOOSA/IDlcbiAgOiAgICAgICAgICAgICAgMTBcbiAgKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UuanMnKVxuY29uc3QgYmFzZVggPSByZXF1aXJlKCdiYXNlLXgnKVxuY29uc3QgYmFzZTE2ID0gcmVxdWlyZSgnLi9iYXNlMTYnKVxuY29uc3QgYmFzZTMyID0gcmVxdWlyZSgnLi9iYXNlMzInKVxuY29uc3QgYmFzZTY0ID0gcmVxdWlyZSgnLi9iYXNlNjQnKVxuXG4vLyBuYW1lLCBjb2RlLCBpbXBsZW1lbnRhdGlvbiwgYWxwaGFiZXRcbmNvbnN0IGNvbnN0YW50cyA9IFtcbiAgWydiYXNlMScsICcxJywgJycsICcxJ10sXG4gIFsnYmFzZTInLCAnMCcsIGJhc2VYLCAnMDEnXSxcbiAgWydiYXNlOCcsICc3JywgYmFzZVgsICcwMTIzNDU2NyddLFxuICBbJ2Jhc2UxMCcsICc5JywgYmFzZVgsICcwMTIzNDU2Nzg5J10sXG4gIFsnYmFzZTE2JywgJ2YnLCBiYXNlMTYsICcwMTIzNDU2Nzg5YWJjZGVmJ10sXG4gIFsnYmFzZTMyJywgJ2InLCBiYXNlMzIsICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejIzNDU2NyddLFxuICBbJ2Jhc2UzMnBhZCcsICdjJywgYmFzZTMyLCAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoyMzQ1Njc9J10sXG4gIFsnYmFzZTMyaGV4JywgJ3YnLCBiYXNlMzIsICcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1diddLFxuICBbJ2Jhc2UzMmhleHBhZCcsICd0JywgYmFzZTMyLCAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXY9J10sXG4gIFsnYmFzZTMyeicsICdoJywgYmFzZTMyLCAneWJuZHJmZzhlamttY3BxeG90MXV3aXN6YTM0NWg3NjknXSxcbiAgWydiYXNlNThmbGlja3InLCAnWicsIGJhc2VYLCAnMTIzNDU2Nzg5YWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5ekFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWiddLFxuICBbJ2Jhc2U1OGJ0YycsICd6JywgYmFzZVgsICcxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6J10sXG4gIFsnYmFzZTY0JywgJ20nLCBiYXNlNjQsICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJ10sXG4gIFsnYmFzZTY0cGFkJywgJ00nLCBiYXNlNjQsICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSddLFxuICBbJ2Jhc2U2NHVybCcsICd1JywgYmFzZTY0LCAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXyddLFxuICBbJ2Jhc2U2NHVybHBhZCcsICdVJywgYmFzZTY0LCAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXz0nXVxuXVxuXG5jb25zdCBuYW1lcyA9IGNvbnN0YW50cy5yZWR1Y2UoKHByZXYsIHR1cHBsZSkgPT4ge1xuICBwcmV2W3R1cHBsZVswXV0gPSBuZXcgQmFzZSh0dXBwbGVbMF0sIHR1cHBsZVsxXSwgdHVwcGxlWzJdLCB0dXBwbGVbM10pXG4gIHJldHVybiBwcmV2XG59LCB7fSlcblxuY29uc3QgY29kZXMgPSBjb25zdGFudHMucmVkdWNlKChwcmV2LCB0dXBwbGUpID0+IHtcbiAgcHJldlt0dXBwbGVbMV1dID0gbmFtZXNbdHVwcGxlWzBdXVxuICByZXR1cm4gcHJldlxufSwge30pXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBuYW1lczogbmFtZXMsXG4gIGNvZGVzOiBjb2Rlc1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNsYXNzIEJhc2Uge1xuICBjb25zdHJ1Y3RvciAobmFtZSwgY29kZSwgaW1wbGVtZW50YXRpb24sIGFscGhhYmV0KSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHRoaXMuY29kZSA9IGNvZGVcbiAgICB0aGlzLmFscGhhYmV0ID0gYWxwaGFiZXRcbiAgICBpZiAoaW1wbGVtZW50YXRpb24gJiYgYWxwaGFiZXQpIHtcbiAgICAgIHRoaXMuZW5naW5lID0gaW1wbGVtZW50YXRpb24oYWxwaGFiZXQpXG4gICAgfVxuICB9XG5cbiAgZW5jb2RlIChzdHJpbmdPckJ1ZmZlcikge1xuICAgIHJldHVybiB0aGlzLmVuZ2luZS5lbmNvZGUoc3RyaW5nT3JCdWZmZXIpXG4gIH1cblxuICBkZWNvZGUgKHN0cmluZ09yQnVmZmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5naW5lLmRlY29kZShzdHJpbmdPckJ1ZmZlcilcbiAgfVxuXG4gIGlzSW1wbGVtZW50ZWQgKCkge1xuICAgIHJldHVybiB0aGlzLmVuZ2luZVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQmFzZVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmFzZTE2IChhbHBoYWJldCkge1xuICByZXR1cm4ge1xuICAgIGVuY29kZSAoaW5wdXQpIHtcbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShpbnB1dCkudG9TdHJpbmcoJ2hleCcpXG4gICAgICB9XG4gICAgICByZXR1cm4gaW5wdXQudG9TdHJpbmcoJ2hleCcpXG4gICAgfSxcbiAgICBkZWNvZGUgKGlucHV0KSB7XG4gICAgICBmb3IgKGxldCBjaGFyIG9mIGlucHV0KSB7XG4gICAgICAgIGlmIChhbHBoYWJldC5pbmRleE9mKGNoYXIpIDwgMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBiYXNlMTYgY2hhcmFjdGVyJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGlucHV0LCAnaGV4JylcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5mdW5jdGlvbiBkZWNvZGUgKGlucHV0LCBhbHBoYWJldCkge1xuICBpbnB1dCA9IGlucHV0LnJlcGxhY2UobmV3IFJlZ0V4cCgnPScsICdnJyksICcnKVxuICBsZXQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoXG5cbiAgbGV0IGJpdHMgPSAwXG4gIGxldCB2YWx1ZSA9IDBcblxuICBsZXQgaW5kZXggPSAwXG4gIGxldCBvdXRwdXQgPSBuZXcgVWludDhBcnJheSgobGVuZ3RoICogNSAvIDgpIHwgMClcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdmFsdWUgPSAodmFsdWUgPDwgNSkgfCBhbHBoYWJldC5pbmRleE9mKGlucHV0W2ldKVxuICAgIGJpdHMgKz0gNVxuXG4gICAgaWYgKGJpdHMgPj0gOCkge1xuICAgICAgb3V0cHV0W2luZGV4KytdID0gKHZhbHVlID4+PiAoYml0cyAtIDgpKSAmIDI1NVxuICAgICAgYml0cyAtPSA4XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dC5idWZmZXJcbn1cblxuZnVuY3Rpb24gZW5jb2RlIChidWZmZXIsIGFscGhhYmV0KSB7XG4gIGxldCBsZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aFxuICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcilcbiAgbGV0IHBhZGRpbmcgPSBhbHBoYWJldC5pbmRleE9mKCc9JykgPT09IGFscGhhYmV0Lmxlbmd0aCAtIDFcblxuICBpZiAocGFkZGluZykge1xuICAgIGFscGhhYmV0ID0gYWxwaGFiZXQuc3Vic3RyaW5nKDAsIGFscGhhYmV0Lmxlbmd0aCAtIDIpXG4gIH1cblxuICBsZXQgYml0cyA9IDBcbiAgbGV0IHZhbHVlID0gMFxuICBsZXQgb3V0cHV0ID0gJydcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdmFsdWUgPSAodmFsdWUgPDwgOCkgfCB2aWV3W2ldXG4gICAgYml0cyArPSA4XG5cbiAgICB3aGlsZSAoYml0cyA+PSA1KSB7XG4gICAgICBvdXRwdXQgKz0gYWxwaGFiZXRbKHZhbHVlID4+PiAoYml0cyAtIDUpKSAmIDMxXVxuICAgICAgYml0cyAtPSA1XG4gICAgfVxuICB9XG5cbiAgaWYgKGJpdHMgPiAwKSB7XG4gICAgb3V0cHV0ICs9IGFscGhhYmV0Wyh2YWx1ZSA8PCAoNSAtIGJpdHMpKSAmIDMxXVxuICB9XG5cbiAgaWYgKHBhZGRpbmcpIHtcbiAgICB3aGlsZSAoKG91dHB1dC5sZW5ndGggJSA4KSAhPT0gMCkge1xuICAgICAgb3V0cHV0ICs9ICc9J1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiYXNlMzIgKGFscGhhYmV0KSB7XG4gIHJldHVybiB7XG4gICAgZW5jb2RlIChpbnB1dCkge1xuICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZShCdWZmZXIuZnJvbShpbnB1dCksIGFscGhhYmV0KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW5jb2RlKGlucHV0LCBhbHBoYWJldClcbiAgICB9LFxuICAgIGRlY29kZSAoaW5wdXQpIHtcbiAgICAgIGZvciAobGV0IGNoYXIgb2YgaW5wdXQpIHtcbiAgICAgICAgaWYgKGFscGhhYmV0LmluZGV4T2YoY2hhcikgPCAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGJhc2UzMiBjaGFyYWN0ZXInKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZWNvZGUoaW5wdXQsIGFscGhhYmV0KVxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmFzZTY0IChhbHBoYWJldCkge1xuICAvLyBUaGUgYWxwaGFiZXQgaXMgb25seSB1c2VkIHRvIGtub3c6XG4gIC8vICAgMS4gSWYgcGFkZGluZyBpcyBlbmFibGVkIChtdXN0IGNvbnRhaW4gJz0nKVxuICAvLyAgIDIuIElmIHRoZSBvdXRwdXQgbXVzdCBiZSB1cmwtc2FmZSAobXVzdCBjb250YWluICctJyBhbmQgJ18nKVxuICAvLyAgIDMuIElmIHRoZSBpbnB1dCBvZiB0aGUgb3V0cHV0IGZ1bmN0aW9uIGlzIHZhbGlkXG4gIC8vIFRoZSBhbHBoYWJldHMgZnJvbSBSRkMgNDY0OCBhcmUgYWx3YXlzIHVzZWQuXG4gIGNvbnN0IHBhZGRpbmcgPSBhbHBoYWJldC5pbmRleE9mKCc9JykgPiAtMVxuICBjb25zdCB1cmwgPSBhbHBoYWJldC5pbmRleE9mKCctJykgPiAtMSAmJiBhbHBoYWJldC5pbmRleE9mKCdfJykgPiAtMVxuXG4gIHJldHVybiB7XG4gICAgZW5jb2RlIChpbnB1dCkge1xuICAgICAgbGV0IG91dHB1dCA9ICcnXG5cbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG91dHB1dCA9IEJ1ZmZlci5mcm9tKGlucHV0KS50b1N0cmluZygnYmFzZTY0JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dCA9IGlucHV0LnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgICAgfVxuXG4gICAgICBpZiAodXJsKSB7XG4gICAgICAgIG91dHB1dCA9IG91dHB1dC5yZXBsYWNlKC9cXCsvZywgJy0nKS5yZXBsYWNlKC9cXC8vZywgJ18nKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwYWQgPSBvdXRwdXQuaW5kZXhPZignPScpXG4gICAgICBpZiAocGFkID4gMCAmJiAhcGFkZGluZykge1xuICAgICAgICBvdXRwdXQgPSBvdXRwdXQuc3Vic3RyaW5nKDAsIHBhZClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG91dHB1dFxuICAgIH0sXG4gICAgZGVjb2RlIChpbnB1dCkge1xuICAgICAgZm9yIChsZXQgY2hhciBvZiBpbnB1dCkge1xuICAgICAgICBpZiAoYWxwaGFiZXQuaW5kZXhPZihjaGFyKSA8IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgYmFzZTY0IGNoYXJhY3RlcicpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGlucHV0LCAnYmFzZTY0JylcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBjb252ZXJ0ID0gcmVxdWlyZSgnLi9jb252ZXJ0JylcbmNvbnN0IHByb3RvY29scyA9IHJlcXVpcmUoJy4vcHJvdG9jb2xzLXRhYmxlJylcbmNvbnN0IHZhcmludCA9IHJlcXVpcmUoJ3ZhcmludCcpXG5cbi8vIGV4cG9ydCBjb2RlY1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHN0cmluZ1RvU3RyaW5nVHVwbGVzOiBzdHJpbmdUb1N0cmluZ1R1cGxlcyxcbiAgc3RyaW5nVHVwbGVzVG9TdHJpbmc6IHN0cmluZ1R1cGxlc1RvU3RyaW5nLFxuXG4gIHR1cGxlc1RvU3RyaW5nVHVwbGVzOiB0dXBsZXNUb1N0cmluZ1R1cGxlcyxcbiAgc3RyaW5nVHVwbGVzVG9UdXBsZXM6IHN0cmluZ1R1cGxlc1RvVHVwbGVzLFxuXG4gIGJ1ZmZlclRvVHVwbGVzOiBidWZmZXJUb1R1cGxlcyxcbiAgdHVwbGVzVG9CdWZmZXI6IHR1cGxlc1RvQnVmZmVyLFxuXG4gIGJ1ZmZlclRvU3RyaW5nOiBidWZmZXJUb1N0cmluZyxcbiAgc3RyaW5nVG9CdWZmZXI6IHN0cmluZ1RvQnVmZmVyLFxuXG4gIGZyb21TdHJpbmc6IGZyb21TdHJpbmcsXG4gIGZyb21CdWZmZXI6IGZyb21CdWZmZXIsXG4gIHZhbGlkYXRlQnVmZmVyOiB2YWxpZGF0ZUJ1ZmZlcixcbiAgaXNWYWxpZEJ1ZmZlcjogaXNWYWxpZEJ1ZmZlcixcbiAgY2xlYW5QYXRoOiBjbGVhblBhdGgsXG5cbiAgUGFyc2VFcnJvcjogUGFyc2VFcnJvcixcbiAgcHJvdG9Gcm9tVHVwbGU6IHByb3RvRnJvbVR1cGxlLFxuXG4gIHNpemVGb3JBZGRyOiBzaXplRm9yQWRkclxufVxuXG4vLyBzdHJpbmcgLT4gW1tzdHIgbmFtZSwgc3RyIGFkZHJdLi4uIF1cbmZ1bmN0aW9uIHN0cmluZ1RvU3RyaW5nVHVwbGVzIChzdHIpIHtcbiAgY29uc3QgdHVwbGVzID0gW11cbiAgY29uc3QgcGFydHMgPSBzdHIuc3BsaXQoJy8nKS5zbGljZSgxKSAvLyBza2lwIGZpcnN0IGVtcHR5IGVsZW1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSAmJiBwYXJ0c1swXSA9PT0gJycpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIGZvciAobGV0IHAgPSAwOyBwIDwgcGFydHMubGVuZ3RoOyBwKyspIHtcbiAgICBjb25zdCBwYXJ0ID0gcGFydHNbcF1cbiAgICBjb25zdCBwcm90byA9IHByb3RvY29scyhwYXJ0KVxuXG4gICAgaWYgKHByb3RvLnNpemUgPT09IDApIHtcbiAgICAgIHR1cGxlcy5wdXNoKFtwYXJ0XSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgcCsrIC8vIGFkdmFuY2UgYWRkciBwYXJ0XG4gICAgaWYgKHAgPj0gcGFydHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBQYXJzZUVycm9yKCdpbnZhbGlkIGFkZHJlc3M6ICcgKyBzdHIpXG4gICAgfVxuXG4gICAgLy8gaWYgaXQncyBhIHBhdGggcHJvdG8sIHRha2UgdGhlIHJlc3RcbiAgICBpZiAocHJvdG8ucGF0aCkge1xuICAgICAgdHVwbGVzLnB1c2goW1xuICAgICAgICBwYXJ0LFxuICAgICAgICAvLyBUT0RPOiBzaG91bGQgd2UgbmVlZCB0byBjaGVjayBlYWNoIHBhdGggcGFydCB0byBzZWUgaWYgaXQncyBhIHByb3RvP1xuICAgICAgICAvLyBUaGlzIHdvdWxkIGFsbG93IGZvciBvdGhlciBwcm90b2NvbHMgdG8gYmUgYWRkZWQgYWZ0ZXIgYSB1bml4IHBhdGgsXG4gICAgICAgIC8vIGhvd2V2ZXIgaXQgd291bGQgaGF2ZSBpc3N1ZXMgaWYgdGhlIHBhdGggaGFkIGEgcHJvdG9jb2wgbmFtZSBpbiB0aGUgcGF0aFxuICAgICAgICBjbGVhblBhdGgocGFydHMuc2xpY2UocCkuam9pbignLycpKVxuICAgICAgXSlcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgdHVwbGVzLnB1c2goW3BhcnQsIHBhcnRzW3BdXSlcbiAgfVxuXG4gIHJldHVybiB0dXBsZXNcbn1cblxuLy8gW1tzdHIgbmFtZSwgc3RyIGFkZHJdLi4uIF0gLT4gc3RyaW5nXG5mdW5jdGlvbiBzdHJpbmdUdXBsZXNUb1N0cmluZyAodHVwbGVzKSB7XG4gIGNvbnN0IHBhcnRzID0gW11cbiAgdHVwbGVzLm1hcCh0dXAgPT4ge1xuICAgIGNvbnN0IHByb3RvID0gcHJvdG9Gcm9tVHVwbGUodHVwKVxuICAgIHBhcnRzLnB1c2gocHJvdG8ubmFtZSlcbiAgICBpZiAodHVwLmxlbmd0aCA+IDEpIHtcbiAgICAgIHBhcnRzLnB1c2godHVwWzFdKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gY2xlYW5QYXRoKHBhcnRzLmpvaW4oJy8nKSlcbn1cblxuLy8gW1tzdHIgbmFtZSwgc3RyIGFkZHJdLi4uIF0gLT4gW1tpbnQgY29kZSwgQnVmZmVyXS4uLiBdXG5mdW5jdGlvbiBzdHJpbmdUdXBsZXNUb1R1cGxlcyAodHVwbGVzKSB7XG4gIHJldHVybiB0dXBsZXMubWFwKHR1cCA9PiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHR1cCkpIHtcbiAgICAgIHR1cCA9IFt0dXBdXG4gICAgfVxuICAgIGNvbnN0IHByb3RvID0gcHJvdG9Gcm9tVHVwbGUodHVwKVxuICAgIGlmICh0dXAubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIFtwcm90by5jb2RlLCBjb252ZXJ0LnRvQnVmZmVyKHByb3RvLmNvZGUsIHR1cFsxXSldXG4gICAgfVxuICAgIHJldHVybiBbcHJvdG8uY29kZV1cbiAgfSlcbn1cblxuLy8gW1tpbnQgY29kZSwgQnVmZmVyXS4uLiBdIC0+IFtbc3RyIG5hbWUsIHN0ciBhZGRyXS4uLiBdXG5mdW5jdGlvbiB0dXBsZXNUb1N0cmluZ1R1cGxlcyAodHVwbGVzKSB7XG4gIHJldHVybiB0dXBsZXMubWFwKHR1cCA9PiB7XG4gICAgY29uc3QgcHJvdG8gPSBwcm90b0Zyb21UdXBsZSh0dXApXG4gICAgaWYgKHR1cC5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm4gW3Byb3RvLmNvZGUsIGNvbnZlcnQudG9TdHJpbmcocHJvdG8uY29kZSwgdHVwWzFdKV1cbiAgICB9XG4gICAgcmV0dXJuIFtwcm90by5jb2RlXVxuICB9KVxufVxuXG4vLyBbW2ludCBjb2RlLCBCdWZmZXIgXS4uLiBdIC0+IEJ1ZmZlclxuZnVuY3Rpb24gdHVwbGVzVG9CdWZmZXIgKHR1cGxlcykge1xuICByZXR1cm4gZnJvbUJ1ZmZlcihCdWZmZXIuY29uY2F0KHR1cGxlcy5tYXAodHVwID0+IHtcbiAgICBjb25zdCBwcm90byA9IHByb3RvRnJvbVR1cGxlKHR1cClcbiAgICBsZXQgYnVmID0gQnVmZmVyLmZyb20odmFyaW50LmVuY29kZShwcm90by5jb2RlKSlcblxuICAgIGlmICh0dXAubGVuZ3RoID4gMSkge1xuICAgICAgYnVmID0gQnVmZmVyLmNvbmNhdChbYnVmLCB0dXBbMV1dKSAvLyBhZGQgYWRkcmVzcyBidWZmZXJcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmXG4gIH0pKSlcbn1cblxuZnVuY3Rpb24gc2l6ZUZvckFkZHIgKHAsIGFkZHIpIHtcbiAgaWYgKHAuc2l6ZSA+IDApIHtcbiAgICByZXR1cm4gcC5zaXplIC8gOFxuICB9IGVsc2UgaWYgKHAuc2l6ZSA9PT0gMCkge1xuICAgIHJldHVybiAwXG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc2l6ZSA9IHZhcmludC5kZWNvZGUoYWRkcilcbiAgICByZXR1cm4gc2l6ZSArIHZhcmludC5kZWNvZGUuYnl0ZXNcbiAgfVxufVxuXG4vLyBCdWZmZXIgLT4gW1tpbnQgY29kZSwgQnVmZmVyIF0uLi4gXVxuZnVuY3Rpb24gYnVmZmVyVG9UdXBsZXMgKGJ1Zikge1xuICBjb25zdCB0dXBsZXMgPSBbXVxuICBsZXQgaSA9IDBcbiAgd2hpbGUgKGkgPCBidWYubGVuZ3RoKSB7XG4gICAgY29uc3QgY29kZSA9IHZhcmludC5kZWNvZGUoYnVmLCBpKVxuICAgIGNvbnN0IG4gPSB2YXJpbnQuZGVjb2RlLmJ5dGVzXG5cbiAgICBjb25zdCBwID0gcHJvdG9jb2xzKGNvZGUpXG5cbiAgICBjb25zdCBzaXplID0gc2l6ZUZvckFkZHIocCwgYnVmLnNsaWNlKGkgKyBuKSlcblxuICAgIGlmIChzaXplID09PSAwKSB7XG4gICAgICB0dXBsZXMucHVzaChbY29kZV0pXG4gICAgICBpICs9IG5cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgYWRkciA9IGJ1Zi5zbGljZShpICsgbiwgaSArIG4gKyBzaXplKVxuXG4gICAgaSArPSAoc2l6ZSArIG4pXG5cbiAgICBpZiAoaSA+IGJ1Zi5sZW5ndGgpIHsgLy8gZGlkIG5vdCBlbmQgX2V4YWN0bHlfIGF0IGJ1ZmZlci5sZW5ndGhcbiAgICAgIHRocm93IFBhcnNlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyBidWZmZXI6ICcgKyBidWYudG9TdHJpbmcoJ2hleCcpKVxuICAgIH1cblxuICAgIC8vIG9rLCB0dXBsZSBzZWVtcyBnb29kLlxuICAgIHR1cGxlcy5wdXNoKFtjb2RlLCBhZGRyXSlcbiAgfVxuXG4gIHJldHVybiB0dXBsZXNcbn1cblxuLy8gQnVmZmVyIC0+IFN0cmluZ1xuZnVuY3Rpb24gYnVmZmVyVG9TdHJpbmcgKGJ1Zikge1xuICBjb25zdCBhID0gYnVmZmVyVG9UdXBsZXMoYnVmKVxuICBjb25zdCBiID0gdHVwbGVzVG9TdHJpbmdUdXBsZXMoYSlcbiAgcmV0dXJuIHN0cmluZ1R1cGxlc1RvU3RyaW5nKGIpXG59XG5cbi8vIFN0cmluZyAtPiBCdWZmZXJcbmZ1bmN0aW9uIHN0cmluZ1RvQnVmZmVyIChzdHIpIHtcbiAgc3RyID0gY2xlYW5QYXRoKHN0cilcbiAgY29uc3QgYSA9IHN0cmluZ1RvU3RyaW5nVHVwbGVzKHN0cilcbiAgY29uc3QgYiA9IHN0cmluZ1R1cGxlc1RvVHVwbGVzKGEpXG5cbiAgcmV0dXJuIHR1cGxlc1RvQnVmZmVyKGIpXG59XG5cbi8vIFN0cmluZyAtPiBCdWZmZXJcbmZ1bmN0aW9uIGZyb21TdHJpbmcgKHN0cikge1xuICByZXR1cm4gc3RyaW5nVG9CdWZmZXIoc3RyKVxufVxuXG4vLyBCdWZmZXIgLT4gQnVmZmVyXG5mdW5jdGlvbiBmcm9tQnVmZmVyIChidWYpIHtcbiAgY29uc3QgZXJyID0gdmFsaWRhdGVCdWZmZXIoYnVmKVxuICBpZiAoZXJyKSB0aHJvdyBlcnJcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJ1ZikgLy8gY29weVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUJ1ZmZlciAoYnVmKSB7XG4gIHRyeSB7XG4gICAgYnVmZmVyVG9UdXBsZXMoYnVmKSAvLyB0cnkgdG8gcGFyc2UuIHdpbGwgdGhyb3cgaWYgYnJlYWtzXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBlcnJcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1ZhbGlkQnVmZmVyIChidWYpIHtcbiAgcmV0dXJuIHZhbGlkYXRlQnVmZmVyKGJ1ZikgPT09IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBjbGVhblBhdGggKHN0cikge1xuICByZXR1cm4gJy8nICsgc3RyLnRyaW0oKS5zcGxpdCgnLycpLmZpbHRlcihhID0+IGEpLmpvaW4oJy8nKVxufVxuXG5mdW5jdGlvbiBQYXJzZUVycm9yIChzdHIpIHtcbiAgcmV0dXJuIG5ldyBFcnJvcignRXJyb3IgcGFyc2luZyBhZGRyZXNzOiAnICsgc3RyKVxufVxuXG5mdW5jdGlvbiBwcm90b0Zyb21UdXBsZSAodHVwKSB7XG4gIGNvbnN0IHByb3RvID0gcHJvdG9jb2xzKHR1cFswXSlcbiAgcmV0dXJuIHByb3RvXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgaXAgPSByZXF1aXJlKCdpcCcpXG5jb25zdCBpc0lwID0gcmVxdWlyZSgnaXMtaXAnKVxuY29uc3QgcHJvdG9jb2xzID0gcmVxdWlyZSgnLi9wcm90b2NvbHMtdGFibGUnKVxuY29uc3QgYnM1OCA9IHJlcXVpcmUoJ2JzNTgnKVxuY29uc3QgQ0lEID0gcmVxdWlyZSgnY2lkcycpXG5jb25zdCBiYXNlMzIgPSByZXF1aXJlKCdoaS1iYXNlMzInKVxuY29uc3QgdmFyaW50ID0gcmVxdWlyZSgndmFyaW50JylcblxubW9kdWxlLmV4cG9ydHMgPSBDb252ZXJ0XG5cbi8vIGNvbnZlcnRzIChzZXJpYWxpemVzKSBhZGRyZXNzZXNcbmZ1bmN0aW9uIENvbnZlcnQgKHByb3RvLCBhKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIENvbnZlcnQudG9TdHJpbmcocHJvdG8sIGEpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIENvbnZlcnQudG9CdWZmZXIocHJvdG8sIGEpXG4gIH1cbn1cblxuQ29udmVydC50b1N0cmluZyA9IGZ1bmN0aW9uIGNvbnZlcnRUb1N0cmluZyAocHJvdG8sIGJ1Zikge1xuICBwcm90byA9IHByb3RvY29scyhwcm90bylcbiAgc3dpdGNoIChwcm90by5jb2RlKSB7XG4gICAgY2FzZSA0OiAvLyBpcHY0XG4gICAgY2FzZSA0MTogLy8gaXB2NlxuICAgICAgcmV0dXJuIGJ1ZjJpcChidWYpXG5cbiAgICBjYXNlIDY6IC8vIHRjcFxuICAgIGNhc2UgMjczOiAvLyB1ZHBcbiAgICBjYXNlIDMzOiAvLyBkY2NwXG4gICAgY2FzZSAxMzI6IC8vIHNjdHBcbiAgICAgIHJldHVybiBidWYycG9ydChidWYpXG5cbiAgICBjYXNlIDUzOiAvLyBkbnNcbiAgICBjYXNlIDU0OiAvLyBkbnM0XG4gICAgY2FzZSA1NTogLy8gZG5zNlxuICAgIGNhc2UgNTY6IC8vIGRuc2FkZHJcbiAgICBjYXNlIDQwMDogLy8gdW5peFxuICAgICAgcmV0dXJuIGJ1ZjJzdHIoYnVmKVxuXG4gICAgY2FzZSA0MjE6IC8vIGlwZnNcbiAgICAgIHJldHVybiBidWYybWgoYnVmKVxuICAgIGNhc2UgNDQ0OiAvLyBvbmlvblxuICAgICAgcmV0dXJuIGJ1ZjJvbmlvbihidWYpXG4gICAgY2FzZSA0NDU6IC8vIG9uaW9uM1xuICAgICAgcmV0dXJuIGJ1ZjJvbmlvbihidWYpXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBidWYudG9TdHJpbmcoJ2hleCcpIC8vIG5vIGNsdWUuIGNvbnZlcnQgdG8gaGV4XG4gIH1cbn1cblxuQ29udmVydC50b0J1ZmZlciA9IGZ1bmN0aW9uIGNvbnZlcnRUb0J1ZmZlciAocHJvdG8sIHN0cikge1xuICBwcm90byA9IHByb3RvY29scyhwcm90bylcbiAgc3dpdGNoIChwcm90by5jb2RlKSB7XG4gICAgY2FzZSA0OiAvLyBpcHY0XG4gICAgICByZXR1cm4gaXAyYnVmKHN0cilcbiAgICBjYXNlIDQxOiAvLyBpcHY2XG4gICAgICByZXR1cm4gaXAyYnVmKHN0cilcblxuICAgIGNhc2UgNjogLy8gdGNwXG4gICAgY2FzZSAyNzM6IC8vIHVkcFxuICAgIGNhc2UgMzM6IC8vIGRjY3BcbiAgICBjYXNlIDEzMjogLy8gc2N0cFxuICAgICAgcmV0dXJuIHBvcnQyYnVmKHBhcnNlSW50KHN0ciwgMTApKVxuXG4gICAgY2FzZSA1MzogLy8gZG5zXG4gICAgY2FzZSA1NDogLy8gZG5zNFxuICAgIGNhc2UgNTU6IC8vIGRuczZcbiAgICBjYXNlIDU2OiAvLyBkbnNhZGRyXG4gICAgY2FzZSA0MDA6IC8vIHVuaXhcbiAgICAgIHJldHVybiBzdHIyYnVmKHN0cilcblxuICAgIGNhc2UgNDIxOiAvLyBpcGZzXG4gICAgICByZXR1cm4gbWgyYnVmKHN0cilcbiAgICBjYXNlIDQ0NDogLy8gb25pb25cbiAgICAgIHJldHVybiBvbmlvbjJidWYoc3RyKVxuICAgIGNhc2UgNDQ1OiAvLyBvbmlvbjNcbiAgICAgIHJldHVybiBvbmlvbjMyYnVmKHN0cilcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2hleCcpIC8vIG5vIGNsdWUuIGNvbnZlcnQgZnJvbSBoZXhcbiAgfVxufVxuXG5mdW5jdGlvbiBpcDJidWYgKGlwU3RyaW5nKSB7XG4gIGlmICghaXNJcChpcFN0cmluZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgaXAgYWRkcmVzcycpXG4gIH1cbiAgcmV0dXJuIGlwLnRvQnVmZmVyKGlwU3RyaW5nKVxufVxuXG5mdW5jdGlvbiBidWYyaXAgKGlwQnVmZikge1xuICBjb25zdCBpcFN0cmluZyA9IGlwLnRvU3RyaW5nKGlwQnVmZilcbiAgaWYgKCFpc0lwKGlwU3RyaW5nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBpcCBhZGRyZXNzJylcbiAgfVxuICByZXR1cm4gaXBTdHJpbmdcbn1cblxuZnVuY3Rpb24gcG9ydDJidWYgKHBvcnQpIHtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDIpXG4gIGJ1Zi53cml0ZVVJbnQxNkJFKHBvcnQsIDApXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gYnVmMnBvcnQgKGJ1Zikge1xuICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRSgwKVxufVxuXG5mdW5jdGlvbiBzdHIyYnVmIChzdHIpIHtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20oc3RyKVxuICBjb25zdCBzaXplID0gQnVmZmVyLmZyb20odmFyaW50LmVuY29kZShidWYubGVuZ3RoKSlcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3NpemUsIGJ1Zl0pXG59XG5cbmZ1bmN0aW9uIGJ1ZjJzdHIgKGJ1Zikge1xuICBjb25zdCBzaXplID0gdmFyaW50LmRlY29kZShidWYpXG4gIGJ1ZiA9IGJ1Zi5zbGljZSh2YXJpbnQuZGVjb2RlLmJ5dGVzKVxuXG4gIGlmIChidWYubGVuZ3RoICE9PSBzaXplKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbmNvbnNpc3RlbnQgbGVuZ3RocycpXG4gIH1cblxuICByZXR1cm4gYnVmLnRvU3RyaW5nKClcbn1cblxuZnVuY3Rpb24gbWgyYnVmIChoYXNoKSB7XG4gIC8vIHRoZSBhZGRyZXNzIGlzIGEgdmFyaW50IHByZWZpeGVkIG11bHRpaGFzaCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgY29uc3QgbWggPSBuZXcgQ0lEKGhhc2gpLm11bHRpaGFzaFxuICBjb25zdCBzaXplID0gQnVmZmVyLmZyb20odmFyaW50LmVuY29kZShtaC5sZW5ndGgpKVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChbc2l6ZSwgbWhdKVxufVxuXG5mdW5jdGlvbiBidWYybWggKGJ1Zikge1xuICBjb25zdCBzaXplID0gdmFyaW50LmRlY29kZShidWYpXG4gIGNvbnN0IGFkZHJlc3MgPSBidWYuc2xpY2UodmFyaW50LmRlY29kZS5ieXRlcylcblxuICBpZiAoYWRkcmVzcy5sZW5ndGggIT09IHNpemUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2luY29uc2lzdGVudCBsZW5ndGhzJylcbiAgfVxuXG4gIHJldHVybiBiczU4LmVuY29kZShhZGRyZXNzKVxufVxuXG5mdW5jdGlvbiBvbmlvbjJidWYgKHN0cikge1xuICBjb25zdCBhZGRyID0gc3RyLnNwbGl0KCc6JylcbiAgaWYgKGFkZHIubGVuZ3RoICE9PSAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gcGFyc2Ugb25pb24gYWRkcjogJyArIGFkZHIgKyAnIGRvZXMgbm90IGNvbnRhaW4gYSBwb3J0IG51bWJlcicpXG4gIH1cbiAgaWYgKGFkZHJbMF0ubGVuZ3RoICE9PSAxNikge1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIHBhcnNlIG9uaW9uIGFkZHI6ICcgKyBhZGRyWzBdICsgJyBub3QgYSBUb3Igb25pb24gYWRkcmVzcy4nKVxuICB9XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKGJhc2UzMi5kZWNvZGUuYXNCeXRlcyhhZGRyWzBdLnRvVXBwZXJDYXNlKCkpKVxuXG4gIC8vIG9uaW9uIHBvcnQgbnVtYmVyXG4gIGNvbnN0IHBvcnQgPSBwYXJzZUludChhZGRyWzFdLCAxMClcbiAgaWYgKHBvcnQgPCAxIHx8IHBvcnQgPiA2NTUzNikge1xuICAgIHRocm93IG5ldyBFcnJvcignUG9ydCBudW1iZXIgaXMgbm90IGluIHJhbmdlKDEsIDY1NTM2KScpXG4gIH1cbiAgY29uc3QgcG9ydEJ1ZiA9IHBvcnQyYnVmKHBvcnQpXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KFtidWYsIHBvcnRCdWZdKVxufVxuXG5mdW5jdGlvbiBvbmlvbjMyYnVmIChzdHIpIHtcbiAgY29uc3QgYWRkciA9IHN0ci5zcGxpdCgnOicpXG4gIGlmIChhZGRyLmxlbmd0aCAhPT0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIHBhcnNlIG9uaW9uIGFkZHI6ICcgKyBhZGRyICsgJyBkb2VzIG5vdCBjb250YWluIGEgcG9ydCBudW1iZXInKVxuICB9XG4gIGlmIChhZGRyWzBdLmxlbmd0aCAhPT0gNTYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBwYXJzZSBvbmlvbiBhZGRyOiAnICsgYWRkclswXSArICcgbm90IGEgVG9yIG9uaW9uMyBhZGRyZXNzLicpXG4gIH1cbiAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20oYmFzZTMyLmRlY29kZS5hc0J5dGVzKGFkZHJbMF0udG9VcHBlckNhc2UoKSkpXG5cbiAgLy8gb25pb24gcG9ydCBudW1iZXJcbiAgY29uc3QgcG9ydCA9IHBhcnNlSW50KGFkZHJbMV0sIDEwKVxuICBpZiAocG9ydCA8IDEgfHwgcG9ydCA+IDY1NTM2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQb3J0IG51bWJlciBpcyBub3QgaW4gcmFuZ2UoMSwgNjU1MzYpJylcbiAgfVxuICBjb25zdCBwb3J0QnVmID0gcG9ydDJidWYocG9ydClcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2J1ZiwgcG9ydEJ1Zl0pXG59XG5cbmZ1bmN0aW9uIGJ1ZjJvbmlvbiAoYnVmKSB7XG4gIGNvbnN0IGFkZHJCeXRlcyA9IGJ1Zi5zbGljZSgwLCBidWYubGVuZ3RoIC0gMilcbiAgY29uc3QgcG9ydEJ5dGVzID0gYnVmLnNsaWNlKGJ1Zi5sZW5ndGggLSAyKVxuICBjb25zdCBhZGRyID0gYmFzZTMyLmVuY29kZShhZGRyQnl0ZXMpLnRvTG93ZXJDYXNlKClcbiAgY29uc3QgcG9ydCA9IGJ1ZjJwb3J0KHBvcnRCeXRlcylcbiAgcmV0dXJuIGFkZHIgKyAnOicgKyBwb3J0XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpcCA9IGV4cG9ydHM7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xudmFyIG9zID0gcmVxdWlyZSgnb3MnKTtcblxuaXAudG9CdWZmZXIgPSBmdW5jdGlvbihpcCwgYnVmZiwgb2Zmc2V0KSB7XG4gIG9mZnNldCA9IH5+b2Zmc2V0O1xuXG4gIHZhciByZXN1bHQ7XG5cbiAgaWYgKHRoaXMuaXNWNEZvcm1hdChpcCkpIHtcbiAgICByZXN1bHQgPSBidWZmIHx8IG5ldyBCdWZmZXIob2Zmc2V0ICsgNCk7XG4gICAgaXAuc3BsaXQoL1xcLi9nKS5tYXAoZnVuY3Rpb24oYnl0ZSkge1xuICAgICAgcmVzdWx0W29mZnNldCsrXSA9IHBhcnNlSW50KGJ5dGUsIDEwKSAmIDB4ZmY7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAodGhpcy5pc1Y2Rm9ybWF0KGlwKSkge1xuICAgIHZhciBzZWN0aW9ucyA9IGlwLnNwbGl0KCc6JywgOCk7XG5cbiAgICB2YXIgaTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpc3Y0ID0gdGhpcy5pc1Y0Rm9ybWF0KHNlY3Rpb25zW2ldKTtcbiAgICAgIHZhciB2NEJ1ZmZlcjtcblxuICAgICAgaWYgKGlzdjQpIHtcbiAgICAgICAgdjRCdWZmZXIgPSB0aGlzLnRvQnVmZmVyKHNlY3Rpb25zW2ldKTtcbiAgICAgICAgc2VjdGlvbnNbaV0gPSB2NEJ1ZmZlci5zbGljZSgwLCAyKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2NEJ1ZmZlciAmJiArK2kgPCA4KSB7XG4gICAgICAgIHNlY3Rpb25zLnNwbGljZShpLCAwLCB2NEJ1ZmZlci5zbGljZSgyLCA0KS50b1N0cmluZygnaGV4JykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzZWN0aW9uc1swXSA9PT0gJycpIHtcbiAgICAgIHdoaWxlIChzZWN0aW9ucy5sZW5ndGggPCA4KSBzZWN0aW9ucy51bnNoaWZ0KCcwJyk7XG4gICAgfSBlbHNlIGlmIChzZWN0aW9uc1tzZWN0aW9ucy5sZW5ndGggLSAxXSA9PT0gJycpIHtcbiAgICAgIHdoaWxlIChzZWN0aW9ucy5sZW5ndGggPCA4KSBzZWN0aW9ucy5wdXNoKCcwJyk7XG4gICAgfSBlbHNlIGlmIChzZWN0aW9ucy5sZW5ndGggPCA4KSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgc2VjdGlvbnMubGVuZ3RoICYmIHNlY3Rpb25zW2ldICE9PSAnJzsgaSsrKTtcbiAgICAgIHZhciBhcmd2ID0gWyBpLCAxIF07XG4gICAgICBmb3IgKGkgPSA5IC0gc2VjdGlvbnMubGVuZ3RoOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIGFyZ3YucHVzaCgnMCcpO1xuICAgICAgfVxuICAgICAgc2VjdGlvbnMuc3BsaWNlLmFwcGx5KHNlY3Rpb25zLCBhcmd2KTtcbiAgICB9XG5cbiAgICByZXN1bHQgPSBidWZmIHx8IG5ldyBCdWZmZXIob2Zmc2V0ICsgMTYpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdvcmQgPSBwYXJzZUludChzZWN0aW9uc1tpXSwgMTYpO1xuICAgICAgcmVzdWx0W29mZnNldCsrXSA9ICh3b3JkID4+IDgpICYgMHhmZjtcbiAgICAgIHJlc3VsdFtvZmZzZXQrK10gPSB3b3JkICYgMHhmZjtcbiAgICB9XG4gIH1cblxuICBpZiAoIXJlc3VsdCkge1xuICAgIHRocm93IEVycm9yKCdJbnZhbGlkIGlwIGFkZHJlc3M6ICcgKyBpcCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuaXAudG9TdHJpbmcgPSBmdW5jdGlvbihidWZmLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSB+fm9mZnNldDtcbiAgbGVuZ3RoID0gbGVuZ3RoIHx8IChidWZmLmxlbmd0aCAtIG9mZnNldCk7XG5cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAobGVuZ3RoID09PSA0KSB7XG4gICAgLy8gSVB2NFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdC5wdXNoKGJ1ZmZbb2Zmc2V0ICsgaV0pO1xuICAgIH1cbiAgICByZXN1bHQgPSByZXN1bHQuam9pbignLicpO1xuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gMTYpIHtcbiAgICAvLyBJUHY2XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMikge1xuICAgICAgcmVzdWx0LnB1c2goYnVmZi5yZWFkVUludDE2QkUob2Zmc2V0ICsgaSkudG9TdHJpbmcoMTYpKTtcbiAgICB9XG4gICAgcmVzdWx0ID0gcmVzdWx0LmpvaW4oJzonKTtcbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvKF58OikwKDowKSo6MCg6fCQpLywgJyQxOjokMycpO1xuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC86ezMsNH0vLCAnOjonKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgaXB2NFJlZ2V4ID0gL14oXFxkezEsM31cXC4pezMsM31cXGR7MSwzfSQvO1xudmFyIGlwdjZSZWdleCA9XG4gICAgL14oOjopPygoKFxcZHsxLDN9XFwuKXszfShcXGR7MSwzfSl7MX0pPyhbMC05YS1mXSl7MCw0fTp7MCwyfSl7MSw4fSg6Oik/JC9pO1xuXG5pcC5pc1Y0Rm9ybWF0ID0gZnVuY3Rpb24oaXApIHtcbiAgcmV0dXJuIGlwdjRSZWdleC50ZXN0KGlwKTtcbn07XG5cbmlwLmlzVjZGb3JtYXQgPSBmdW5jdGlvbihpcCkge1xuICByZXR1cm4gaXB2NlJlZ2V4LnRlc3QoaXApO1xufTtcbmZ1bmN0aW9uIF9ub3JtYWxpemVGYW1pbHkoZmFtaWx5KSB7XG4gIHJldHVybiBmYW1pbHkgPyBmYW1pbHkudG9Mb3dlckNhc2UoKSA6ICdpcHY0Jztcbn1cblxuaXAuZnJvbVByZWZpeExlbiA9IGZ1bmN0aW9uKHByZWZpeGxlbiwgZmFtaWx5KSB7XG4gIGlmIChwcmVmaXhsZW4gPiAzMikge1xuICAgIGZhbWlseSA9ICdpcHY2JztcbiAgfSBlbHNlIHtcbiAgICBmYW1pbHkgPSBfbm9ybWFsaXplRmFtaWx5KGZhbWlseSk7XG4gIH1cblxuICB2YXIgbGVuID0gNDtcbiAgaWYgKGZhbWlseSA9PT0gJ2lwdjYnKSB7XG4gICAgbGVuID0gMTY7XG4gIH1cbiAgdmFyIGJ1ZmYgPSBuZXcgQnVmZmVyKGxlbik7XG5cbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBidWZmLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgIHZhciBiaXRzID0gODtcbiAgICBpZiAocHJlZml4bGVuIDwgOCkge1xuICAgICAgYml0cyA9IHByZWZpeGxlbjtcbiAgICB9XG4gICAgcHJlZml4bGVuIC09IGJpdHM7XG5cbiAgICBidWZmW2ldID0gfigweGZmID4+IGJpdHMpICYgMHhmZjtcbiAgfVxuXG4gIHJldHVybiBpcC50b1N0cmluZyhidWZmKTtcbn07XG5cbmlwLm1hc2sgPSBmdW5jdGlvbihhZGRyLCBtYXNrKSB7XG4gIGFkZHIgPSBpcC50b0J1ZmZlcihhZGRyKTtcbiAgbWFzayA9IGlwLnRvQnVmZmVyKG1hc2spO1xuXG4gIHZhciByZXN1bHQgPSBuZXcgQnVmZmVyKE1hdGgubWF4KGFkZHIubGVuZ3RoLCBtYXNrLmxlbmd0aCkpO1xuXG4gIHZhciBpID0gMDtcbiAgLy8gU2FtZSBwcm90b2NvbCAtIGRvIGJpdHdpc2UgYW5kXG4gIGlmIChhZGRyLmxlbmd0aCA9PT0gbWFzay5sZW5ndGgpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgYWRkci5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gYWRkcltpXSAmIG1hc2tbaV07XG4gICAgfVxuICB9IGVsc2UgaWYgKG1hc2subGVuZ3RoID09PSA0KSB7XG4gICAgLy8gSVB2NiBhZGRyZXNzIGFuZCBJUHY0IG1hc2tcbiAgICAvLyAoTWFzayBsb3cgYml0cylcbiAgICBmb3IgKGkgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gYWRkclthZGRyLmxlbmd0aCAtIDQgICsgaV0gJiBtYXNrW2ldO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBJUHY2IG1hc2sgYW5kIElQdjQgYWRkclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aCAtIDY7IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyA6OmZmZmY6aXB2NFxuICAgIHJlc3VsdFsxMF0gPSAweGZmO1xuICAgIHJlc3VsdFsxMV0gPSAweGZmO1xuICAgIGZvciAoaSA9IDA7IGkgPCBhZGRyLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHRbaSArIDEyXSA9IGFkZHJbaV0gJiBtYXNrW2kgKyAxMl07XG4gICAgfVxuICAgIGkgPSBpICsgMTI7XG4gIH1cbiAgZm9yICg7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspXG4gICAgcmVzdWx0W2ldID0gMDtcblxuICByZXR1cm4gaXAudG9TdHJpbmcocmVzdWx0KTtcbn07XG5cbmlwLmNpZHIgPSBmdW5jdGlvbihjaWRyU3RyaW5nKSB7XG4gIHZhciBjaWRyUGFydHMgPSBjaWRyU3RyaW5nLnNwbGl0KCcvJyk7XG5cbiAgdmFyIGFkZHIgPSBjaWRyUGFydHNbMF07XG4gIGlmIChjaWRyUGFydHMubGVuZ3RoICE9PSAyKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBDSURSIHN1Ym5ldDogJyArIGFkZHIpO1xuXG4gIHZhciBtYXNrID0gaXAuZnJvbVByZWZpeExlbihwYXJzZUludChjaWRyUGFydHNbMV0sIDEwKSk7XG5cbiAgcmV0dXJuIGlwLm1hc2soYWRkciwgbWFzayk7XG59O1xuXG5pcC5zdWJuZXQgPSBmdW5jdGlvbihhZGRyLCBtYXNrKSB7XG4gIHZhciBuZXR3b3JrQWRkcmVzcyA9IGlwLnRvTG9uZyhpcC5tYXNrKGFkZHIsIG1hc2spKTtcblxuICAvLyBDYWxjdWxhdGUgdGhlIG1hc2sncyBsZW5ndGguXG4gIHZhciBtYXNrQnVmZmVyID0gaXAudG9CdWZmZXIobWFzayk7XG4gIHZhciBtYXNrTGVuZ3RoID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG1hc2tCdWZmZXIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobWFza0J1ZmZlcltpXSA9PT0gMHhmZikge1xuICAgICAgbWFza0xlbmd0aCArPSA4O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb2N0ZXQgPSBtYXNrQnVmZmVyW2ldICYgMHhmZjtcbiAgICAgIHdoaWxlIChvY3RldCkge1xuICAgICAgICBvY3RldCA9IChvY3RldCA8PCAxKSAmIDB4ZmY7XG4gICAgICAgIG1hc2tMZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgbnVtYmVyT2ZBZGRyZXNzZXMgPSBNYXRoLnBvdygyLCAzMiAtIG1hc2tMZW5ndGgpO1xuXG4gIHJldHVybiB7XG4gICAgbmV0d29ya0FkZHJlc3M6IGlwLmZyb21Mb25nKG5ldHdvcmtBZGRyZXNzKSxcbiAgICBmaXJzdEFkZHJlc3M6IG51bWJlck9mQWRkcmVzc2VzIDw9IDIgP1xuICAgICAgICAgICAgICAgICAgICBpcC5mcm9tTG9uZyhuZXR3b3JrQWRkcmVzcykgOlxuICAgICAgICAgICAgICAgICAgICBpcC5mcm9tTG9uZyhuZXR3b3JrQWRkcmVzcyArIDEpLFxuICAgIGxhc3RBZGRyZXNzOiBudW1iZXJPZkFkZHJlc3NlcyA8PSAyID9cbiAgICAgICAgICAgICAgICAgICAgaXAuZnJvbUxvbmcobmV0d29ya0FkZHJlc3MgKyBudW1iZXJPZkFkZHJlc3NlcyAtIDEpIDpcbiAgICAgICAgICAgICAgICAgICAgaXAuZnJvbUxvbmcobmV0d29ya0FkZHJlc3MgKyBudW1iZXJPZkFkZHJlc3NlcyAtIDIpLFxuICAgIGJyb2FkY2FzdEFkZHJlc3M6IGlwLmZyb21Mb25nKG5ldHdvcmtBZGRyZXNzICsgbnVtYmVyT2ZBZGRyZXNzZXMgLSAxKSxcbiAgICBzdWJuZXRNYXNrOiBtYXNrLFxuICAgIHN1Ym5ldE1hc2tMZW5ndGg6IG1hc2tMZW5ndGgsXG4gICAgbnVtSG9zdHM6IG51bWJlck9mQWRkcmVzc2VzIDw9IDIgP1xuICAgICAgICAgICAgICAgIG51bWJlck9mQWRkcmVzc2VzIDogbnVtYmVyT2ZBZGRyZXNzZXMgLSAyLFxuICAgIGxlbmd0aDogbnVtYmVyT2ZBZGRyZXNzZXMsXG4gICAgY29udGFpbnM6IGZ1bmN0aW9uKG90aGVyKSB7XG4gICAgICByZXR1cm4gbmV0d29ya0FkZHJlc3MgPT09IGlwLnRvTG9uZyhpcC5tYXNrKG90aGVyLCBtYXNrKSk7XG4gICAgfVxuICB9O1xufTtcblxuaXAuY2lkclN1Ym5ldCA9IGZ1bmN0aW9uKGNpZHJTdHJpbmcpIHtcbiAgdmFyIGNpZHJQYXJ0cyA9IGNpZHJTdHJpbmcuc3BsaXQoJy8nKTtcblxuICB2YXIgYWRkciA9IGNpZHJQYXJ0c1swXTtcbiAgaWYgKGNpZHJQYXJ0cy5sZW5ndGggIT09IDIpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIENJRFIgc3VibmV0OiAnICsgYWRkcik7XG5cbiAgdmFyIG1hc2sgPSBpcC5mcm9tUHJlZml4TGVuKHBhcnNlSW50KGNpZHJQYXJ0c1sxXSwgMTApKTtcblxuICByZXR1cm4gaXAuc3VibmV0KGFkZHIsIG1hc2spO1xufTtcblxuaXAubm90ID0gZnVuY3Rpb24oYWRkcikge1xuICB2YXIgYnVmZiA9IGlwLnRvQnVmZmVyKGFkZHIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1ZmYubGVuZ3RoOyBpKyspIHtcbiAgICBidWZmW2ldID0gMHhmZiBeIGJ1ZmZbaV07XG4gIH1cbiAgcmV0dXJuIGlwLnRvU3RyaW5nKGJ1ZmYpO1xufTtcblxuaXAub3IgPSBmdW5jdGlvbihhLCBiKSB7XG4gIGEgPSBpcC50b0J1ZmZlcihhKTtcbiAgYiA9IGlwLnRvQnVmZmVyKGIpO1xuXG4gIC8vIHNhbWUgcHJvdG9jb2xcbiAgaWYgKGEubGVuZ3RoID09PSBiLmxlbmd0aCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkge1xuICAgICAgYVtpXSB8PSBiW2ldO1xuICAgIH1cbiAgICByZXR1cm4gaXAudG9TdHJpbmcoYSk7XG5cbiAgLy8gbWl4ZWQgcHJvdG9jb2xzXG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ1ZmYgPSBhO1xuICAgIHZhciBvdGhlciA9IGI7XG4gICAgaWYgKGIubGVuZ3RoID4gYS5sZW5ndGgpIHtcbiAgICAgIGJ1ZmYgPSBiO1xuICAgICAgb3RoZXIgPSBhO1xuICAgIH1cblxuICAgIHZhciBvZmZzZXQgPSBidWZmLmxlbmd0aCAtIG90aGVyLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gb2Zmc2V0OyBpIDwgYnVmZi5sZW5ndGg7ICsraSkge1xuICAgICAgYnVmZltpXSB8PSBvdGhlcltpIC0gb2Zmc2V0XTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXAudG9TdHJpbmcoYnVmZik7XG4gIH1cbn07XG5cbmlwLmlzRXF1YWwgPSBmdW5jdGlvbihhLCBiKSB7XG4gIGEgPSBpcC50b0J1ZmZlcihhKTtcbiAgYiA9IGlwLnRvQnVmZmVyKGIpO1xuXG4gIC8vIFNhbWUgcHJvdG9jb2xcbiAgaWYgKGEubGVuZ3RoID09PSBiLmxlbmd0aCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBTd2FwXG4gIGlmIChiLmxlbmd0aCA9PT0gNCkge1xuICAgIHZhciB0ID0gYjtcbiAgICBiID0gYTtcbiAgICBhID0gdDtcbiAgfVxuXG4gIC8vIGEgLSBJUHY0LCBiIC0gSVB2NlxuICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcbiAgICBpZiAoYltpXSAhPT0gMCkgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHdvcmQgPSBiLnJlYWRVSW50MTZCRSgxMCk7XG4gIGlmICh3b3JkICE9PSAwICYmIHdvcmQgIT09IDB4ZmZmZikgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaSArIDEyXSkgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5pcC5pc1ByaXZhdGUgPSBmdW5jdGlvbihhZGRyKSB7XG4gIHJldHVybiAvXig6OmZ7NH06KT8xMFxcLihbMC05XXsxLDN9KVxcLihbMC05XXsxLDN9KVxcLihbMC05XXsxLDN9KSQvaVxuICAgICAgLnRlc3QoYWRkcikgfHxcbiAgICAvXig6OmZ7NH06KT8xOTJcXC4xNjhcXC4oWzAtOV17MSwzfSlcXC4oWzAtOV17MSwzfSkkL2kudGVzdChhZGRyKSB8fFxuICAgIC9eKDo6Zns0fTopPzE3MlxcLigxWzYtOV18MlxcZHwzMHwzMSlcXC4oWzAtOV17MSwzfSlcXC4oWzAtOV17MSwzfSkkL2lcbiAgICAgIC50ZXN0KGFkZHIpIHx8XG4gICAgL14oOjpmezR9Oik/MTI3XFwuKFswLTldezEsM30pXFwuKFswLTldezEsM30pXFwuKFswLTldezEsM30pJC9pLnRlc3QoYWRkcikgfHxcbiAgICAvXig6OmZ7NH06KT8xNjlcXC4yNTRcXC4oWzAtOV17MSwzfSlcXC4oWzAtOV17MSwzfSkkL2kudGVzdChhZGRyKSB8fFxuICAgIC9eZltjZF1bMC05YS1mXXsyfTovaS50ZXN0KGFkZHIpIHx8XG4gICAgL15mZTgwOi9pLnRlc3QoYWRkcikgfHxcbiAgICAvXjo6MSQvLnRlc3QoYWRkcikgfHxcbiAgICAvXjo6JC8udGVzdChhZGRyKTtcbn07XG5cbmlwLmlzUHVibGljID0gZnVuY3Rpb24oYWRkcikge1xuICByZXR1cm4gIWlwLmlzUHJpdmF0ZShhZGRyKTtcbn07XG5cbmlwLmlzTG9vcGJhY2sgPSBmdW5jdGlvbihhZGRyKSB7XG4gIHJldHVybiAvXig6OmZ7NH06KT8xMjdcXC4oWzAtOV17MSwzfSlcXC4oWzAtOV17MSwzfSlcXC4oWzAtOV17MSwzfSkvXG4gICAgICAudGVzdChhZGRyKSB8fFxuICAgIC9eZmU4MDo6MSQvLnRlc3QoYWRkcikgfHxcbiAgICAvXjo6MSQvLnRlc3QoYWRkcikgfHxcbiAgICAvXjo6JC8udGVzdChhZGRyKTtcbn07XG5cbmlwLmxvb3BiYWNrID0gZnVuY3Rpb24oZmFtaWx5KSB7XG4gIC8vXG4gIC8vIERlZmF1bHQgdG8gYGlwdjRgXG4gIC8vXG4gIGZhbWlseSA9IF9ub3JtYWxpemVGYW1pbHkoZmFtaWx5KTtcblxuICBpZiAoZmFtaWx5ICE9PSAnaXB2NCcgJiYgZmFtaWx5ICE9PSAnaXB2NicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhbWlseSBtdXN0IGJlIGlwdjQgb3IgaXB2NicpO1xuICB9XG5cbiAgcmV0dXJuIGZhbWlseSA9PT0gJ2lwdjQnID8gJzEyNy4wLjAuMScgOiAnZmU4MDo6MSc7XG59O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIGFkZHJlc3MgKG5hbWUsIGZhbWlseSlcbi8vICMjIyMgQG5hbWUge3N0cmluZ3wncHVibGljJ3wncHJpdmF0ZSd9ICoqT3B0aW9uYWwqKiBOYW1lIG9yIHNlY3VyaXR5XG4vLyAgICAgIG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbi8vICMjIyMgQGZhbWlseSB7aXB2NHxpcHY2fSAqKk9wdGlvbmFsKiogSVAgZmFtaWx5IG9mIHRoZSBhZGRyZXNzIChkZWZhdWx0c1xuLy8gICAgICB0byBpcHY0KS5cbi8vXG4vLyBSZXR1cm5zIHRoZSBhZGRyZXNzIGZvciB0aGUgbmV0d29yayBpbnRlcmZhY2Ugb24gdGhlIGN1cnJlbnQgc3lzdGVtIHdpdGhcbi8vIHRoZSBzcGVjaWZpZWQgYG5hbWVgOlxuLy8gICAqIFN0cmluZzogRmlyc3QgYGZhbWlseWAgYWRkcmVzcyBvZiB0aGUgaW50ZXJmYWNlLlxuLy8gICAgICAgICAgICAgSWYgbm90IGZvdW5kIHNlZSBgdW5kZWZpbmVkYC5cbi8vICAgKiAncHVibGljJzogdGhlIGZpcnN0IHB1YmxpYyBpcCBhZGRyZXNzIG9mIGZhbWlseS5cbi8vICAgKiAncHJpdmF0ZSc6IHRoZSBmaXJzdCBwcml2YXRlIGlwIGFkZHJlc3Mgb2YgZmFtaWx5LlxuLy8gICAqIHVuZGVmaW5lZDogRmlyc3QgYWRkcmVzcyB3aXRoIGBpcHY0YCBvciBsb29wYmFjayBhZGRyZXNzIGAxMjcuMC4wLjFgLlxuLy9cbmlwLmFkZHJlc3MgPSBmdW5jdGlvbihuYW1lLCBmYW1pbHkpIHtcbiAgdmFyIGludGVyZmFjZXMgPSBvcy5uZXR3b3JrSW50ZXJmYWNlcygpO1xuICB2YXIgYWxsO1xuXG4gIC8vXG4gIC8vIERlZmF1bHQgdG8gYGlwdjRgXG4gIC8vXG4gIGZhbWlseSA9IF9ub3JtYWxpemVGYW1pbHkoZmFtaWx5KTtcblxuICAvL1xuICAvLyBJZiBhIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGhhcyBiZWVuIG5hbWVkLFxuICAvLyByZXR1cm4gdGhlIGFkZHJlc3MuXG4gIC8vXG4gIGlmIChuYW1lICYmIG5hbWUgIT09ICdwcml2YXRlJyAmJiBuYW1lICE9PSAncHVibGljJykge1xuICAgIHZhciByZXMgPSBpbnRlcmZhY2VzW25hbWVdLmZpbHRlcihmdW5jdGlvbihkZXRhaWxzKSB7XG4gICAgICB2YXIgaXRlbUZhbWlseSA9IGRldGFpbHMuZmFtaWx5LnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gaXRlbUZhbWlseSA9PT0gZmFtaWx5O1xuICAgIH0pO1xuICAgIGlmIChyZXMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzWzBdLmFkZHJlc3M7XG4gIH1cblxuICB2YXIgYWxsID0gT2JqZWN0LmtleXMoaW50ZXJmYWNlcykubWFwKGZ1bmN0aW9uIChuaWMpIHtcbiAgICAvL1xuICAgIC8vIE5vdGU6IG5hbWUgd2lsbCBvbmx5IGJlIGBwdWJsaWNgIG9yIGBwcml2YXRlYFxuICAgIC8vIHdoZW4gdGhpcyBpcyBjYWxsZWQuXG4gICAgLy9cbiAgICB2YXIgYWRkcmVzc2VzID0gaW50ZXJmYWNlc1tuaWNdLmZpbHRlcihmdW5jdGlvbiAoZGV0YWlscykge1xuICAgICAgZGV0YWlscy5mYW1pbHkgPSBkZXRhaWxzLmZhbWlseS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKGRldGFpbHMuZmFtaWx5ICE9PSBmYW1pbHkgfHwgaXAuaXNMb29wYmFjayhkZXRhaWxzLmFkZHJlc3MpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoIW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuYW1lID09PSAncHVibGljJyA/IGlwLmlzUHJpdmF0ZShkZXRhaWxzLmFkZHJlc3MpIDpcbiAgICAgICAgICBpcC5pc1B1YmxpYyhkZXRhaWxzLmFkZHJlc3MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFkZHJlc3Nlcy5sZW5ndGggPyBhZGRyZXNzZXNbMF0uYWRkcmVzcyA6IHVuZGVmaW5lZDtcbiAgfSkuZmlsdGVyKEJvb2xlYW4pO1xuXG4gIHJldHVybiAhYWxsLmxlbmd0aCA/IGlwLmxvb3BiYWNrKGZhbWlseSkgOiBhbGxbMF07XG59O1xuXG5pcC50b0xvbmcgPSBmdW5jdGlvbihpcCkge1xuICB2YXIgaXBsID0gMDtcbiAgaXAuc3BsaXQoJy4nKS5mb3JFYWNoKGZ1bmN0aW9uKG9jdGV0KSB7XG4gICAgaXBsIDw8PSA4O1xuICAgIGlwbCArPSBwYXJzZUludChvY3RldCk7XG4gIH0pO1xuICByZXR1cm4oaXBsID4+PiAwKTtcbn07XG5cbmlwLmZyb21Mb25nID0gZnVuY3Rpb24oaXBsKSB7XG4gIHJldHVybiAoKGlwbCA+Pj4gMjQpICsgJy4nICtcbiAgICAgIChpcGwgPj4gMTYgJiAyNTUpICsgJy4nICtcbiAgICAgIChpcGwgPj4gOCAmIDI1NSkgKyAnLicgK1xuICAgICAgKGlwbCAmIDI1NSkgKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5jb25zdCBpcFJlZ2V4ID0gcmVxdWlyZSgnaXAtcmVnZXgnKTtcblxuY29uc3QgaXNJcCA9IHN0cmluZyA9PiBpcFJlZ2V4KHtleGFjdDogdHJ1ZX0pLnRlc3Qoc3RyaW5nKTtcbmlzSXAudjQgPSBzdHJpbmcgPT4gaXBSZWdleC52NCh7ZXhhY3Q6IHRydWV9KS50ZXN0KHN0cmluZyk7XG5pc0lwLnY2ID0gc3RyaW5nID0+IGlwUmVnZXgudjYoe2V4YWN0OiB0cnVlfSkudGVzdChzdHJpbmcpO1xuaXNJcC52ZXJzaW9uID0gc3RyaW5nID0+IGlzSXAoc3RyaW5nKSA/IChpc0lwLnY0KHN0cmluZykgPyA0IDogNikgOiB1bmRlZmluZWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJcDtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3Qgd29yZCA9ICdbYS1mQS1GXFxcXGQ6XSc7XG5jb25zdCBiID0gb3B0aW9ucyA9PiBvcHRpb25zICYmIG9wdGlvbnMuaW5jbHVkZUJvdW5kYXJpZXMgP1xuXHRgKD86KD88PVxcXFxzfF4pKD89JHt3b3JkfSl8KD88PSR7d29yZH0pKD89XFxcXHN8JCkpYCA6XG5cdCcnO1xuXG5jb25zdCB2NCA9ICcoPzoyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldXFxcXGR8XFxcXGQpKD86XFxcXC4oPzoyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldXFxcXGR8XFxcXGQpKXszfSc7XG5cbmNvbnN0IHY2c2VnID0gJ1thLWZBLUZcXFxcZF17MSw0fSc7XG5jb25zdCB2NiA9IGBcbihcbig/OiR7djZzZWd9Oil7N30oPzoke3Y2c2VnfXw6KXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE6MjozOjQ6NTo2Ojc6OiAgMToyOjM6NDo1OjY6Nzo4XG4oPzoke3Y2c2VnfTopezZ9KD86JHt2NH18OiR7djZzZWd9fDopfCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxOjI6Mzo0OjU6Njo6ICAgIDE6MjozOjQ6NTo2Ojo4ICAgMToyOjM6NDo1OjY6OjggIDE6MjozOjQ6NTo2OjoxLjIuMy40XG4oPzoke3Y2c2VnfTopezV9KD86OiR7djR9fCg6JHt2NnNlZ30pezEsMn18Oil8ICAgICAgICAgICAgICAgICAvLyAxOjI6Mzo0OjU6OiAgICAgIDE6MjozOjQ6NTo6Nzo4ICAgMToyOjM6NDo1Ojo4ICAgIDE6MjozOjQ6NTo6NzoxLjIuMy40XG4oPzoke3Y2c2VnfTopezR9KD86KDoke3Y2c2VnfSl7MCwxfToke3Y0fXwoOiR7djZzZWd9KXsxLDN9fDopfCAvLyAxOjI6Mzo0OjogICAgICAgIDE6MjozOjQ6OjY6Nzo4ICAgMToyOjM6NDo6OCAgICAgIDE6MjozOjQ6OjY6NzoxLjIuMy40XG4oPzoke3Y2c2VnfTopezN9KD86KDoke3Y2c2VnfSl7MCwyfToke3Y0fXwoOiR7djZzZWd9KXsxLDR9fDopfCAvLyAxOjI6Mzo6ICAgICAgICAgIDE6MjozOjo1OjY6Nzo4ICAgMToyOjM6OjggICAgICAgIDE6MjozOjo1OjY6NzoxLjIuMy40XG4oPzoke3Y2c2VnfTopezJ9KD86KDoke3Y2c2VnfSl7MCwzfToke3Y0fXwoOiR7djZzZWd9KXsxLDV9fDopfCAvLyAxOjI6OiAgICAgICAgICAgIDE6Mjo6NDo1OjY6Nzo4ICAgMToyOjo4ICAgICAgICAgIDE6Mjo6NDo1OjY6NzoxLjIuMy40XG4oPzoke3Y2c2VnfTopezF9KD86KDoke3Y2c2VnfSl7MCw0fToke3Y0fXwoOiR7djZzZWd9KXsxLDZ9fDopfCAvLyAxOjogICAgICAgICAgICAgIDE6OjM6NDo1OjY6Nzo4ICAgMTo6OCAgICAgICAgICAgIDE6OjM6NDo1OjY6NzoxLjIuMy40XG4oPzo6KCg/Ojoke3Y2c2VnfSl7MCw1fToke3Y0fXwoPzo6JHt2NnNlZ30pezEsN318OikpICAgICAgICAgICAvLyA6OjI6Mzo0OjU6Njo3OjggIDo6MjozOjQ6NTo2Ojc6OCAgOjo4ICAgICAgICAgICAgIDo6MS4yLjMuNFxuKSglWzAtOWEtekEtWl17MSx9KT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJWV0aDAgICAgICAgICAgICAlMVxuYC5yZXBsYWNlKC9cXHMqXFwvXFwvLiokL2dtLCAnJykucmVwbGFjZSgvXFxuL2csICcnKS50cmltKCk7XG5cbmNvbnN0IGlwID0gb3B0aW9ucyA9PiBvcHRpb25zICYmIG9wdGlvbnMuZXhhY3QgP1xuXHRuZXcgUmVnRXhwKGAoPzpeJHt2NH0kKXwoPzpeJHt2Nn0kKWApIDpcblx0bmV3IFJlZ0V4cChgKD86JHtiKG9wdGlvbnMpfSR7djR9JHtiKG9wdGlvbnMpfSl8KD86JHtiKG9wdGlvbnMpfSR7djZ9JHtiKG9wdGlvbnMpfSlgLCAnZycpO1xuXG5pcC52NCA9IG9wdGlvbnMgPT4gb3B0aW9ucyAmJiBvcHRpb25zLmV4YWN0ID8gbmV3IFJlZ0V4cChgXiR7djR9JGApIDogbmV3IFJlZ0V4cChgJHtiKG9wdGlvbnMpfSR7djR9JHtiKG9wdGlvbnMpfWAsICdnJyk7XG5pcC52NiA9IG9wdGlvbnMgPT4gb3B0aW9ucyAmJiBvcHRpb25zLmV4YWN0ID8gbmV3IFJlZ0V4cChgXiR7djZ9JGApIDogbmV3IFJlZ0V4cChgJHtiKG9wdGlvbnMpfSR7djZ9JHtiKG9wdGlvbnMpfWAsICdnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXA7XG4iLCIvKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBtdWx0aWNvZGVjIHNwZWNpZmljYXRpb24uXG4gKlxuICogQG1vZHVsZSBtdWx0aWNvZGVjXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbXVsdGljb2RlYyA9IHJlcXVpcmUoJ211bHRpY29kZWMnKVxuICpcbiAqIGNvbnN0IHByZWZpeGVkUHJvdG9idWYgPSBtdWx0aWNvZGVjLmFkZFByZWZpeCgncHJvdG9idWYnLCBwcm90b2J1ZkJ1ZmZlcilcbiAqIC8vIHByZWZpeGVkUHJvdG9idWYgMHg1MC4uLlxuICpcbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHZhcmludCA9IHJlcXVpcmUoJ3ZhcmludCcpXG5jb25zdCBpbnRUYWJsZSA9IHJlcXVpcmUoJy4vaW50LXRhYmxlJylcbmNvbnN0IGNvZGVjTmFtZVRvQ29kZVZhcmludCA9IHJlcXVpcmUoJy4vdmFyaW50LXRhYmxlJylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKVxuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHNcblxuLyoqXG4gKiBQcmVmaXggYSBidWZmZXIgd2l0aCBhIG11bHRpY29kZWMtcGFja2VkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gbXVsdGljb2RlY1N0ck9yQ29kZVxuICogQHBhcmFtIHtCdWZmZXJ9IGRhdGFcbiAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gKi9cbmV4cG9ydHMuYWRkUHJlZml4ID0gKG11bHRpY29kZWNTdHJPckNvZGUsIGRhdGEpID0+IHtcbiAgbGV0IHByZWZpeFxuXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIobXVsdGljb2RlY1N0ck9yQ29kZSkpIHtcbiAgICBwcmVmaXggPSB1dGlsLnZhcmludEJ1ZmZlckVuY29kZShtdWx0aWNvZGVjU3RyT3JDb2RlKVxuICB9IGVsc2Uge1xuICAgIGlmIChjb2RlY05hbWVUb0NvZGVWYXJpbnRbbXVsdGljb2RlY1N0ck9yQ29kZV0pIHtcbiAgICAgIHByZWZpeCA9IGNvZGVjTmFtZVRvQ29kZVZhcmludFttdWx0aWNvZGVjU3RyT3JDb2RlXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ211bHRpY29kZWMgbm90IHJlY29nbml6ZWQnKVxuICAgIH1cbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChbcHJlZml4LCBkYXRhXSlcbn1cblxuLyoqXG4gKiBEZWNhcHN1bGF0ZSB0aGUgbXVsdGljb2RlYy1wYWNrZWQgcHJlZml4IGZyb20gdGhlIGRhdGEuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGRhdGFcbiAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gKi9cbmV4cG9ydHMucm1QcmVmaXggPSAoZGF0YSkgPT4ge1xuICB2YXJpbnQuZGVjb2RlKGRhdGEpXG4gIHJldHVybiBkYXRhLnNsaWNlKHZhcmludC5kZWNvZGUuYnl0ZXMpXG59XG5cbi8qKlxuICogR2V0IHRoZSBjb2RlYyBvZiB0aGUgcHJlZml4ZWQgZGF0YS5cbiAqIEBwYXJhbSB7QnVmZmVyfSBwcmVmaXhlZERhdGFcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuZ2V0Q29kZWMgPSAocHJlZml4ZWREYXRhKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSB2YXJpbnQuZGVjb2RlKHByZWZpeGVkRGF0YSlcbiAgY29uc3QgY29kZWNOYW1lID0gaW50VGFibGUuZ2V0KGNvZGUpXG4gIGlmIChjb2RlY05hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ29kZSAke2NvZGV9IG5vdCBmb3VuZGApXG4gIH1cbiAgcmV0dXJuIGNvZGVjTmFtZVxufVxuXG4vKipcbiAqIEdldCB0aGUgbmFtZSBvZiB0aGUgY29kZWMuXG4gKiBAcGFyYW0ge251bWJlcn0gY29kZWNcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuZ2V0TmFtZSA9IChjb2RlYykgPT4ge1xuICByZXR1cm4gaW50VGFibGUuZ2V0KGNvZGVjKVxufVxuXG4vKipcbiAqIEdldCB0aGUgY29kZSBvZiB0aGUgY29kZWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnRzLmdldE51bWJlciA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSBjb2RlY05hbWVUb0NvZGVWYXJpbnRbbmFtZV1cbiAgaWYgKGNvZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29kZWMgYCcgKyBuYW1lICsgJ2Agbm90IGZvdW5kJylcbiAgfVxuICByZXR1cm4gdXRpbC52YXJpbnRCdWZmZXJEZWNvZGUoY29kZSlbMF1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNvZGUgb2YgdGhlIHByZWZpeGVkIGRhdGEuXG4gKiBAcGFyYW0ge0J1ZmZlcn0gcHJlZml4ZWREYXRhXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnRzLmdldENvZGUgPSAocHJlZml4ZWREYXRhKSA9PiB7XG4gIHJldHVybiB2YXJpbnQuZGVjb2RlKHByZWZpeGVkRGF0YSlcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNvZGUgYXMgdmFyaW50IG9mIGEgY29kZWMgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlY05hbWVcbiAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gKi9cbmV4cG9ydHMuZ2V0Q29kZVZhcmludCA9IChjb2RlY05hbWUpID0+IHtcbiAgY29uc3QgY29kZSA9IGNvZGVjTmFtZVRvQ29kZVZhcmludFtjb2RlY05hbWVdXG4gIGlmIChjb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvZGVjIGAnICsgY29kZWNOYW1lICsgJ2Agbm90IGZvdW5kJylcbiAgfVxuICByZXR1cm4gY29kZVxufVxuXG4vKipcbiAqIEdldCB0aGUgdmFyaW50IG9mIGEgY29kZS5cbiAqIEBwYXJhbSB7TnVtYmVyfSBjb2RlXG4gKiBAcmV0dXJucyB7QXJyYXkuPG51bWJlcj59XG4gKi9cbmV4cG9ydHMuZ2V0VmFyaW50ID0gKGNvZGUpID0+IHtcbiAgcmV0dXJuIHZhcmludC5lbmNvZGUoY29kZSlcbn1cblxuLy8gTWFrZSB0aGUgY29uc3RhbnRzIHRvcC1sZXZlbCBjb25zdGFudHNcbmNvbnN0IGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcbk9iamVjdC5hc3NpZ24oZXhwb3J0cywgY29uc3RhbnRzKVxuXG4vLyBIdW1hbiBmcmllbmRseSBuYW1lcyBmb3IgcHJpbnRpbmcsIGUuZy4gaW4gZXJyb3IgbWVzc2FnZXNcbmV4cG9ydHMucHJpbnQgPSByZXF1aXJlKCcuL3ByaW50JylcbiIsIid1c2Ugc3RyaWN0J1xuY29uc3QgYmFzZVRhYmxlID0gcmVxdWlyZSgnLi9iYXNlLXRhYmxlLmpzb24nKVxuXG4vLyBtYXAgZm9yIGhleFN0cmluZyAtPiBjb2RlY05hbWVcbmNvbnN0IG5hbWVUYWJsZSA9IG5ldyBNYXAoKVxuXG5mb3IgKGNvbnN0IGVuY29kaW5nTmFtZSBpbiBiYXNlVGFibGUpIHtcbiAgY29uc3QgY29kZSA9IGJhc2VUYWJsZVtlbmNvZGluZ05hbWVdXG4gIG5hbWVUYWJsZS5zZXQoY29kZSwgZW5jb2RpbmdOYW1lKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5mcmVlemUobmFtZVRhYmxlKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGJhc2VUYWJsZSA9IHJlcXVpcmUoJy4vYmFzZS10YWJsZS5qc29uJylcbmNvbnN0IHZhcmludEVuY29kZSA9IHJlcXVpcmUoJy4vdXRpbCcpLnZhcmludEVuY29kZVxuXG4vLyBtYXAgZm9yIGNvZGVjTmFtZSAtPiBjb2RlVmFyaW50QnVmZmVyXG5jb25zdCB2YXJpbnRUYWJsZSA9IHt9XG5cbmZvciAoY29uc3QgZW5jb2RpbmdOYW1lIGluIGJhc2VUYWJsZSkge1xuICBjb25zdCBjb2RlID0gYmFzZVRhYmxlW2VuY29kaW5nTmFtZV1cbiAgdmFyaW50VGFibGVbZW5jb2RpbmdOYW1lXSA9IHZhcmludEVuY29kZShjb2RlKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5mcmVlemUodmFyaW50VGFibGUpXG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgdGFibGUgPSByZXF1aXJlKCcuL2Jhc2UtdGFibGUuanNvbicpXG5cbi8vIG1hcCBmb3IgY29kZWNDb25zdGFudCAtPiBjb2RlXG5jb25zdCBjb25zdGFudHMgPSB7fVxuXG5mb3IgKGNvbnN0IFtuYW1lLCBjb2RlXSBvZiBPYmplY3QuZW50cmllcyh0YWJsZSkpIHtcbiAgY29uc3RhbnRzW25hbWUudG9VcHBlckNhc2UoKS5yZXBsYWNlKC8tL2csICdfJyldID0gY29kZVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5mcmVlemUoY29uc3RhbnRzKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHRhYmxlID0gcmVxdWlyZSgnLi9iYXNlLXRhYmxlLmpzb24nKVxuXG4vLyBtYXAgZm9yIGNvZGUgLT4gcHJpbnQgZnJpZW5kbHkgbmFtZVxuY29uc3QgdGFibGVCeUNvZGUgPSB7fVxuXG5mb3IgKGNvbnN0IFtuYW1lLCBjb2RlXSBvZiBPYmplY3QuZW50cmllcyh0YWJsZSkpIHtcbiAgaWYgKHRhYmxlQnlDb2RlW2NvZGVdID09PSB1bmRlZmluZWQpIHRhYmxlQnlDb2RlW2NvZGVdID0gbmFtZVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5mcmVlemUodGFibGVCeUNvZGUpXG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgbWggPSByZXF1aXJlKCdtdWx0aWhhc2hlcycpXG5cbnZhciBDSURVdGlsID0ge1xuICAvKipcbiAgICogVGVzdCBpZiB0aGUgZ2l2ZW4gaW5wdXQgaXMgYSB2YWxpZCBDSUQgb2JqZWN0LlxuICAgKiBSZXR1cm5zIGFuIGVycm9yIG1lc3NhZ2UgaWYgaXQgaXMgbm90LlxuICAgKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBpdCBpcyBhIHZhbGlkIENJRC5cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IG90aGVyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBjaGVja0NJRENvbXBvbmVudHM6IGZ1bmN0aW9uIChvdGhlcikge1xuICAgIGlmIChvdGhlciA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJ251bGwgdmFsdWVzIGFyZSBub3QgdmFsaWQgQ0lEcydcbiAgICB9XG5cbiAgICBpZiAoIShvdGhlci52ZXJzaW9uID09PSAwIHx8IG90aGVyLnZlcnNpb24gPT09IDEpKSB7XG4gICAgICByZXR1cm4gJ0ludmFsaWQgdmVyc2lvbiwgbXVzdCBiZSBhIG51bWJlciBlcXVhbCB0byAxIG9yIDAnXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvdGhlci5jb2RlYyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiAnY29kZWMgbXVzdCBiZSBzdHJpbmcnXG4gICAgfVxuXG4gICAgaWYgKG90aGVyLnZlcnNpb24gPT09IDApIHtcbiAgICAgIGlmIChvdGhlci5jb2RlYyAhPT0gJ2RhZy1wYicpIHtcbiAgICAgICAgcmV0dXJuIFwiY29kZWMgbXVzdCBiZSAnZGFnLXBiJyBmb3IgQ0lEdjBcIlxuICAgICAgfVxuICAgICAgaWYgKG90aGVyLm11bHRpYmFzZU5hbWUgIT09ICdiYXNlNThidGMnKSB7XG4gICAgICAgIHJldHVybiBcIm11bHRpYmFzZU5hbWUgbXVzdCBiZSAnYmFzZTU4YnRjJyBmb3IgQ0lEdjBcIlxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKG90aGVyLm11bHRpaGFzaCkpIHtcbiAgICAgIHJldHVybiAnbXVsdGloYXNoIG11c3QgYmUgYSBCdWZmZXInXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIG1oLnZhbGlkYXRlKG90aGVyLm11bHRpaGFzaClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxldCBlcnJvck1zZyA9IGVyci5tZXNzYWdlXG4gICAgICBpZiAoIWVycm9yTXNnKSB7IC8vIEp1c3QgaW4gY2FzZSBtaC52YWxpZGF0ZSgpIHRocm93cyBhbiBlcnJvciB3aXRoIGVtcHR5IGVycm9yIG1lc3NhZ2VcbiAgICAgICAgZXJyb3JNc2cgPSAnTXVsdGloYXNoIHZhbGlkYXRpb24gZmFpbGVkJ1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVycm9yTXNnXG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ0lEVXRpbFxuIiwiLypcbiAqIFtoaS1iYXNlMzJde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW4xNzgvaGktYmFzZTMyfVxuICpcbiAqIEB2ZXJzaW9uIDAuNS4wXG4gKiBAYXV0aG9yIENoZW4sIFlpLUN5dWFuIFtlbW4xNzhAZ21haWwuY29tXVxuICogQGNvcHlyaWdodCBDaGVuLCBZaS1DeXVhbiAyMDE1LTIwMThcbiAqIEBsaWNlbnNlIE1JVFxuICovXG4vKmpzbGludCBiaXR3aXNlOiB0cnVlICovXG4oZnVuY3Rpb24gKCkge1xuICAndXNlIHN0cmljdCc7XG5cbiAgdmFyIHJvb3QgPSB0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JyA/IHdpbmRvdyA6IHt9O1xuICB2YXIgTk9ERV9KUyA9ICFyb290LkhJX0JBU0UzMl9OT19OT0RFX0pTICYmIHR5cGVvZiBwcm9jZXNzID09PSAnb2JqZWN0JyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZTtcbiAgaWYgKE5PREVfSlMpIHtcbiAgICByb290ID0gZ2xvYmFsO1xuICB9XG4gIHZhciBDT01NT05fSlMgPSAhcm9vdC5ISV9CQVNFMzJfTk9fQ09NTU9OX0pTICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzO1xuICB2YXIgQU1EID0gdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kO1xuICB2YXIgQkFTRTMyX0VOQ09ERV9DSEFSID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMjM0NTY3Jy5zcGxpdCgnJyk7XG4gIHZhciBCQVNFMzJfREVDT0RFX0NIQVIgPSB7XG4gICAgJ0EnOiAwLCAnQic6IDEsICdDJzogMiwgJ0QnOiAzLCAnRSc6IDQsICdGJzogNSwgJ0cnOiA2LCAnSCc6IDcsICdJJzogOCxcbiAgICAnSic6IDksICdLJzogMTAsICdMJzogMTEsICdNJzogMTIsICdOJzogMTMsICdPJzogMTQsICdQJzogMTUsICdRJzogMTYsXG4gICAgJ1InOiAxNywgJ1MnOiAxOCwgJ1QnOiAxOSwgJ1UnOiAyMCwgJ1YnOiAyMSwgJ1cnOiAyMiwgJ1gnOiAyMywgJ1knOiAyNCxcbiAgICAnWic6IDI1LCAnMic6IDI2LCAnMyc6IDI3LCAnNCc6IDI4LCAnNSc6IDI5LCAnNic6IDMwLCAnNyc6IDMxXG4gIH07XG5cbiAgdmFyIGJsb2NrcyA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcblxuICB2YXIgdGhyb3dJbnZhbGlkVXRmOCA9IGZ1bmN0aW9uIChwb3NpdGlvbiwgcGFydGlhbCkge1xuICAgIGlmIChwYXJ0aWFsLmxlbmd0aCA+IDEwKSB7XG4gICAgICBwYXJ0aWFsID0gJy4uLicgKyBwYXJ0aWFsLnN1YnN0cigtMTApO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdEZWNvZGVkIGRhdGEgaXMgbm90IHZhbGlkIFVURi04LidcbiAgICAgICsgJyBNYXliZSB0cnkgYmFzZTMyLmRlY29kZS5hc0J5dGVzKCk/J1xuICAgICAgKyAnIFBhcnRpYWwgZGF0YSBhZnRlciByZWFkaW5nICcgKyBwb3NpdGlvbiArICcgYnl0ZXM6ICcgKyBwYXJ0aWFsICsgJyA8LScpO1xuICAgIGVyci5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHRocm93IGVycjtcbiAgfTtcblxuICB2YXIgdG9VdGY4U3RyaW5nID0gZnVuY3Rpb24gKGJ5dGVzKSB7XG4gICAgdmFyIHN0ciA9ICcnLCBsZW5ndGggPSBieXRlcy5sZW5ndGgsIGkgPSAwLCBmb2xsb3dpbmdDaGFycyA9IDAsIGIsIGM7XG4gICAgd2hpbGUgKGkgPCBsZW5ndGgpIHtcbiAgICAgIGIgPSBieXRlc1tpKytdO1xuICAgICAgaWYgKGIgPD0gMHg3Rikge1xuICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShiKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKGIgPiAweEJGICYmIGIgPD0gMHhERikge1xuICAgICAgICBjID0gYiAmIDB4MUY7XG4gICAgICAgIGZvbGxvd2luZ0NoYXJzID0gMTtcbiAgICAgIH0gZWxzZSBpZiAoYiA8PSAweEVGKSB7XG4gICAgICAgIGMgPSBiICYgMHgwRjtcbiAgICAgICAgZm9sbG93aW5nQ2hhcnMgPSAyO1xuICAgICAgfSBlbHNlIGlmIChiIDw9IDB4RjcpIHtcbiAgICAgICAgYyA9IGIgJiAweDA3O1xuICAgICAgICBmb2xsb3dpbmdDaGFycyA9IDM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0ludmFsaWRVdGY4KGksIHN0cik7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZm9sbG93aW5nQ2hhcnM7ICsraikge1xuICAgICAgICBiID0gYnl0ZXNbaSsrXTtcbiAgICAgICAgaWYgKGIgPCAweDgwIHx8IGIgPiAweEJGKSB7XG4gICAgICAgICAgdGhyb3dJbnZhbGlkVXRmOChpLCBzdHIpO1xuICAgICAgICB9XG4gICAgICAgIGMgPDw9IDY7XG4gICAgICAgIGMgKz0gYiAmIDB4M0Y7XG4gICAgICB9XG4gICAgICBpZiAoYyA+PSAweEQ4MDAgJiYgYyA8PSAweERGRkYpIHtcbiAgICAgICAgdGhyb3dJbnZhbGlkVXRmOChpLCBzdHIpO1xuICAgICAgfVxuICAgICAgaWYgKGMgPiAweDEwRkZGRikge1xuICAgICAgICB0aHJvd0ludmFsaWRVdGY4KGksIHN0cik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjIDw9IDB4RkZGRikge1xuICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGMgLT0gMHgxMDAwMDtcbiAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgPj4gMTApICsgMHhEODAwKTtcbiAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiAweDNGRikgKyAweERDMDApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIHZhciBkZWNvZGVBc0J5dGVzID0gZnVuY3Rpb24gKGJhc2UzMlN0cikge1xuICAgIGlmICghL15bQS1aMi03PV0rJC8udGVzdChiYXNlMzJTdHIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYmFzZTMyIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgYmFzZTMyU3RyID0gYmFzZTMyU3RyLnJlcGxhY2UoLz0vZywgJycpO1xuICAgIHZhciB2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIGJ5dGVzID0gW10sIGluZGV4ID0gMCwgbGVuZ3RoID0gYmFzZTMyU3RyLmxlbmd0aDtcblxuICAgIC8vIDQgY2hhciB0byAzIGJ5dGVzXG4gICAgZm9yICh2YXIgaSA9IDAsIGNvdW50ID0gbGVuZ3RoID4+IDMgPDwgMzsgaSA8IGNvdW50Oykge1xuICAgICAgdjEgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHYyID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MyA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjQgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY1ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjcgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY4ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2MSA8PCAzIHwgdjIgPj4+IDIpICYgMjU1O1xuICAgICAgYnl0ZXNbaW5kZXgrK10gPSAodjIgPDwgNiB8IHYzIDw8IDEgfCB2NCA+Pj4gNCkgJiAyNTU7XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2NCA8PCA0IHwgdjUgPj4+IDEpICYgMjU1O1xuICAgICAgYnl0ZXNbaW5kZXgrK10gPSAodjUgPDwgNyB8IHY2IDw8IDIgfCB2NyA+Pj4gMykgJiAyNTU7XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2NyA8PCA1IHwgdjgpICYgMjU1O1xuICAgIH1cblxuICAgIC8vIHJlbWFpbiBieXRlc1xuICAgIHZhciByZW1haW4gPSBsZW5ndGggLSBjb3VudDtcbiAgICBpZiAocmVtYWluID09PSAyKSB7XG4gICAgICB2MSA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjIgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIGJ5dGVzW2luZGV4KytdID0gKHYxIDw8IDMgfCB2MiA+Pj4gMikgJiAyNTU7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDQpIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2MSA8PCAzIHwgdjIgPj4+IDIpICYgMjU1O1xuICAgICAgYnl0ZXNbaW5kZXgrK10gPSAodjIgPDwgNiB8IHYzIDw8IDEgfCB2NCA+Pj4gNCkgJiAyNTU7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDUpIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NSA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgYnl0ZXNbaW5kZXgrK10gPSAodjEgPDwgMyB8IHYyID4+PiAyKSAmIDI1NTtcbiAgICAgIGJ5dGVzW2luZGV4KytdID0gKHYyIDw8IDYgfCB2MyA8PCAxIHwgdjQgPj4+IDQpICYgMjU1O1xuICAgICAgYnl0ZXNbaW5kZXgrK10gPSAodjQgPDwgNCB8IHY1ID4+PiAxKSAmIDI1NTtcbiAgICB9IGVsc2UgaWYgKHJlbWFpbiA9PT0gNykge1xuICAgICAgdjEgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHYyID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MyA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjQgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY1ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjcgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIGJ5dGVzW2luZGV4KytdID0gKHYxIDw8IDMgfCB2MiA+Pj4gMikgJiAyNTU7XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2MiA8PCA2IHwgdjMgPDwgMSB8IHY0ID4+PiA0KSAmIDI1NTtcbiAgICAgIGJ5dGVzW2luZGV4KytdID0gKHY0IDw8IDQgfCB2NSA+Pj4gMSkgJiAyNTU7XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2NSA8PCA3IHwgdjYgPDwgMiB8IHY3ID4+PiAzKSAmIDI1NTtcbiAgICB9XG4gICAgcmV0dXJuIGJ5dGVzO1xuICB9O1xuXG4gIHZhciBlbmNvZGVBc2NpaSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICB2YXIgdjEsIHYyLCB2MywgdjQsIHY1LCBiYXNlMzJTdHIgPSAnJywgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMCwgY291bnQgPSBwYXJzZUludChsZW5ndGggLyA1KSAqIDU7IGkgPCBjb3VudDspIHtcbiAgICAgIHYxID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHYyID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHYzID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHY0ID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHY1ID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIGJhc2UzMlN0ciArPSBCQVNFMzJfRU5DT0RFX0NIQVJbdjEgPj4+IDNdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyIDw8IDQgfCB2MyA+Pj4gNCkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYzIDw8IDEgfCB2NCA+Pj4gNykgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHY0ID4+PiAyKSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjQgPDwgMyB8IHY1ID4+PiA1KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlt2NSAmIDMxXTtcbiAgICB9XG5cbiAgICAvLyByZW1haW4gY2hhclxuICAgIHZhciByZW1haW4gPSBsZW5ndGggLSBjb3VudDtcbiAgICBpZiAocmVtYWluID09PSAxKSB7XG4gICAgICB2MSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYxIDw8IDIpICYgMzFdICtcbiAgICAgICAgJz09PT09PSc7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDIpIHtcbiAgICAgIHYxID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHYyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICBiYXNlMzJTdHIgKz0gQkFTRTMyX0VOQ09ERV9DSEFSW3YxID4+PiAzXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMiB8IHYyID4+PiA2KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPj4+IDEpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA8PCA0KSAmIDMxXSArXG4gICAgICAgICc9PT09JztcbiAgICB9IGVsc2UgaWYgKHJlbWFpbiA9PT0gMykge1xuICAgICAgdjEgPSBzdHIuY2hhckNvZGVBdChpKyspO1xuICAgICAgdjIgPSBzdHIuY2hhckNvZGVBdChpKyspO1xuICAgICAgdjMgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgIGJhc2UzMlN0ciArPSBCQVNFMzJfRU5DT0RFX0NIQVJbdjEgPj4+IDNdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyIDw8IDQgfCB2MyA+Pj4gNCkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYzIDw8IDEpICYgMzFdICtcbiAgICAgICAgJz09PSc7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDQpIHtcbiAgICAgIHYxID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHYyID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHYzID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHY0ID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICBiYXNlMzJTdHIgKz0gQkFTRTMyX0VOQ09ERV9DSEFSW3YxID4+PiAzXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMiB8IHYyID4+PiA2KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPj4+IDEpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA8PCA0IHwgdjMgPj4+IDQpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MyA8PCAxIHwgdjQgPj4+IDcpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2NCA+Pj4gMikgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHY0IDw8IDMpICYgMzFdICtcbiAgICAgICAgJz0nO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZTMyU3RyO1xuICB9O1xuXG4gIHZhciBlbmNvZGVVdGY4ID0gZnVuY3Rpb24gKHN0cikge1xuICAgIHZhciB2MSwgdjIsIHYzLCB2NCwgdjUsIGNvZGUsIGVuZCA9IGZhbHNlLCBiYXNlMzJTdHIgPSAnJyxcbiAgICAgIGluZGV4ID0gMCwgaSwgc3RhcnQgPSAwLCBieXRlcyA9IDAsIGxlbmd0aCA9IHN0ci5sZW5ndGg7XG4gICAgZG8ge1xuICAgICAgYmxvY2tzWzBdID0gYmxvY2tzWzVdO1xuICAgICAgYmxvY2tzWzFdID0gYmxvY2tzWzZdO1xuICAgICAgYmxvY2tzWzJdID0gYmxvY2tzWzddO1xuICAgICAgZm9yIChpID0gc3RhcnQ7IGluZGV4IDwgbGVuZ3RoICYmIGkgPCA1OyArK2luZGV4KSB7XG4gICAgICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgIGlmIChjb2RlIDwgMHg4MCkge1xuICAgICAgICAgIGJsb2Nrc1tpKytdID0gY29kZTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlIDwgMHg4MDApIHtcbiAgICAgICAgICBibG9ja3NbaSsrXSA9IDB4YzAgfCAoY29kZSA+PiA2KTtcbiAgICAgICAgICBibG9ja3NbaSsrXSA9IDB4ODAgfCAoY29kZSAmIDB4M2YpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweGQ4MDAgfHwgY29kZSA+PSAweGUwMDApIHtcbiAgICAgICAgICBibG9ja3NbaSsrXSA9IDB4ZTAgfCAoY29kZSA+PiAxMik7XG4gICAgICAgICAgYmxvY2tzW2krK10gPSAweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZik7XG4gICAgICAgICAgYmxvY2tzW2krK10gPSAweDgwIHwgKGNvZGUgJiAweDNmKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2RlID0gMHgxMDAwMCArICgoKGNvZGUgJiAweDNmZikgPDwgMTApIHwgKHN0ci5jaGFyQ29kZUF0KCsraW5kZXgpICYgMHgzZmYpKTtcbiAgICAgICAgICBibG9ja3NbaSsrXSA9IDB4ZjAgfCAoY29kZSA+PiAxOCk7XG4gICAgICAgICAgYmxvY2tzW2krK10gPSAweDgwIHwgKChjb2RlID4+IDEyKSAmIDB4M2YpO1xuICAgICAgICAgIGJsb2Nrc1tpKytdID0gMHg4MCB8ICgoY29kZSA+PiA2KSAmIDB4M2YpO1xuICAgICAgICAgIGJsb2Nrc1tpKytdID0gMHg4MCB8IChjb2RlICYgMHgzZik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJ5dGVzICs9IGkgLSBzdGFydDtcbiAgICAgIHN0YXJ0ID0gaSAtIDU7XG4gICAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgICArK2luZGV4O1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4ID4gbGVuZ3RoICYmIGkgPCA2KSB7XG4gICAgICAgIGVuZCA9IHRydWU7XG4gICAgICB9XG4gICAgICB2MSA9IGJsb2Nrc1swXTtcbiAgICAgIGlmIChpID4gNCkge1xuICAgICAgICB2MiA9IGJsb2Nrc1sxXTtcbiAgICAgICAgdjMgPSBibG9ja3NbMl07XG4gICAgICAgIHY0ID0gYmxvY2tzWzNdO1xuICAgICAgICB2NSA9IGJsb2Nrc1s0XTtcbiAgICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMiB8IHYyID4+PiA2KSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPDwgNCB8IHYzID4+PiA0KSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MyA8PCAxIHwgdjQgPj4+IDcpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHY0ID4+PiAyKSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2NCA8PCAzIHwgdjUgPj4+IDUpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbdjUgJiAzMV07XG4gICAgICB9IGVsc2UgaWYgKGkgPT09IDEpIHtcbiAgICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMikgJiAzMV0gK1xuICAgICAgICAgICc9PT09PT0nO1xuICAgICAgfSBlbHNlIGlmIChpID09PSAyKSB7XG4gICAgICAgIHYyID0gYmxvY2tzWzFdO1xuICAgICAgICBiYXNlMzJTdHIgKz0gQkFTRTMyX0VOQ09ERV9DSEFSW3YxID4+PiAzXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyID4+PiAxKSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA8PCA0KSAmIDMxXSArXG4gICAgICAgICAgJz09PT0nO1xuICAgICAgfSBlbHNlIGlmIChpID09PSAzKSB7XG4gICAgICAgIHYyID0gYmxvY2tzWzFdO1xuICAgICAgICB2MyA9IGJsb2Nrc1syXTtcbiAgICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMiB8IHYyID4+PiA2KSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPDwgNCB8IHYzID4+PiA0KSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MyA8PCAxKSAmIDMxXSArXG4gICAgICAgICAgJz09PSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2MiA9IGJsb2Nrc1sxXTtcbiAgICAgICAgdjMgPSBibG9ja3NbMl07XG4gICAgICAgIHY0ID0gYmxvY2tzWzNdO1xuICAgICAgICBiYXNlMzJTdHIgKz0gQkFTRTMyX0VOQ09ERV9DSEFSW3YxID4+PiAzXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyID4+PiAxKSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA8PCA0IHwgdjMgPj4+IDQpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYzIDw8IDEgfCB2NCA+Pj4gNykgJiAzMV0gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjQgPj4+IDIpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHY0IDw8IDMpICYgMzFdICtcbiAgICAgICAgICAnPSc7XG4gICAgICB9XG4gICAgfSB3aGlsZSAoIWVuZCk7XG4gICAgcmV0dXJuIGJhc2UzMlN0cjtcbiAgfTtcblxuICB2YXIgZW5jb2RlQnl0ZXMgPSBmdW5jdGlvbiAoYnl0ZXMpIHtcbiAgICB2YXIgdjEsIHYyLCB2MywgdjQsIHY1LCBiYXNlMzJTdHIgPSAnJywgbGVuZ3RoID0gYnl0ZXMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwLCBjb3VudCA9IHBhcnNlSW50KGxlbmd0aCAvIDUpICogNTsgaSA8IGNvdW50Oykge1xuICAgICAgdjEgPSBieXRlc1tpKytdO1xuICAgICAgdjIgPSBieXRlc1tpKytdO1xuICAgICAgdjMgPSBieXRlc1tpKytdO1xuICAgICAgdjQgPSBieXRlc1tpKytdO1xuICAgICAgdjUgPSBieXRlc1tpKytdO1xuICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYxIDw8IDIgfCB2MiA+Pj4gNikgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyID4+PiAxKSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPDwgNCB8IHYzID4+PiA0KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjMgPDwgMSB8IHY0ID4+PiA3KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjQgPj4+IDIpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2NCA8PCAzIHwgdjUgPj4+IDUpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSW3Y1ICYgMzFdO1xuICAgIH1cblxuICAgIC8vIHJlbWFpbiBjaGFyXG4gICAgdmFyIHJlbWFpbiA9IGxlbmd0aCAtIGNvdW50O1xuICAgIGlmIChyZW1haW4gPT09IDEpIHtcbiAgICAgIHYxID0gYnl0ZXNbaV07XG4gICAgICBiYXNlMzJTdHIgKz0gQkFTRTMyX0VOQ09ERV9DSEFSW3YxID4+PiAzXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMikgJiAzMV0gK1xuICAgICAgICAnPT09PT09JztcbiAgICB9IGVsc2UgaWYgKHJlbWFpbiA9PT0gMikge1xuICAgICAgdjEgPSBieXRlc1tpKytdO1xuICAgICAgdjIgPSBieXRlc1tpXTtcbiAgICAgIGJhc2UzMlN0ciArPSBCQVNFMzJfRU5DT0RFX0NIQVJbdjEgPj4+IDNdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyIDw8IDQpICYgMzFdICtcbiAgICAgICAgJz09PT0nO1xuICAgIH0gZWxzZSBpZiAocmVtYWluID09PSAzKSB7XG4gICAgICB2MSA9IGJ5dGVzW2krK107XG4gICAgICB2MiA9IGJ5dGVzW2krK107XG4gICAgICB2MyA9IGJ5dGVzW2ldO1xuICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYxIDw8IDIgfCB2MiA+Pj4gNikgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyID4+PiAxKSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPDwgNCB8IHYzID4+PiA0KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjMgPDwgMSkgJiAzMV0gK1xuICAgICAgICAnPT09JztcbiAgICB9IGVsc2UgaWYgKHJlbWFpbiA9PT0gNCkge1xuICAgICAgdjEgPSBieXRlc1tpKytdO1xuICAgICAgdjIgPSBieXRlc1tpKytdO1xuICAgICAgdjMgPSBieXRlc1tpKytdO1xuICAgICAgdjQgPSBieXRlc1tpXTtcbiAgICAgIGJhc2UzMlN0ciArPSBCQVNFMzJfRU5DT0RFX0NIQVJbdjEgPj4+IDNdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyIDw8IDQgfCB2MyA+Pj4gNCkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYzIDw8IDEgfCB2NCA+Pj4gNykgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHY0ID4+PiAyKSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjQgPDwgMykgJiAzMV0gK1xuICAgICAgICAnPSc7XG4gICAgfVxuICAgIHJldHVybiBiYXNlMzJTdHI7XG4gIH07XG5cbiAgdmFyIGVuY29kZSA9IGZ1bmN0aW9uIChpbnB1dCwgYXNjaWlPbmx5KSB7XG4gICAgdmFyIG5vdFN0cmluZyA9IHR5cGVvZihpbnB1dCkgIT09ICdzdHJpbmcnO1xuICAgIGlmIChub3RTdHJpbmcgJiYgaW5wdXQuY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgICBpbnB1dCA9IG5ldyBVaW50OEFycmF5KGlucHV0KTtcbiAgICB9XG4gICAgaWYgKG5vdFN0cmluZykge1xuICAgICAgcmV0dXJuIGVuY29kZUJ5dGVzKGlucHV0KTtcbiAgICB9IGVsc2UgaWYgKGFzY2lpT25seSkge1xuICAgICAgcmV0dXJuIGVuY29kZUFzY2lpKGlucHV0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGVuY29kZVV0ZjgoaW5wdXQpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZGVjb2RlID0gZnVuY3Rpb24gKGJhc2UzMlN0ciwgYXNjaWlPbmx5KSB7XG4gICAgaWYgKCFhc2NpaU9ubHkpIHtcbiAgICAgIHJldHVybiB0b1V0ZjhTdHJpbmcoZGVjb2RlQXNCeXRlcyhiYXNlMzJTdHIpKTtcbiAgICB9XG4gICAgaWYgKCEvXltBLVoyLTc9XSskLy50ZXN0KGJhc2UzMlN0cikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBiYXNlMzIgY2hhcmFjdGVycycpO1xuICAgIH1cbiAgICB2YXIgdjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCBzdHIgPSAnJywgbGVuZ3RoID0gYmFzZTMyU3RyLmluZGV4T2YoJz0nKTtcbiAgICBpZiAobGVuZ3RoID09PSAtMSkge1xuICAgICAgbGVuZ3RoID0gYmFzZTMyU3RyLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvLyA4IGNoYXIgdG8gNSBieXRlc1xuICAgIGZvciAodmFyIGkgPSAwLCBjb3VudCA9IGxlbmd0aCA+PiAzIDw8IDM7IGkgPCBjb3VudDspIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NSA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjYgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY3ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2OCA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKHYxIDw8IDMgfCB2MiA+Pj4gMikgJiAyNTUpICtcbiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgodjIgPDwgNiB8IHYzIDw8IDEgfCB2NCA+Pj4gNCkgJiAyNTUpICtcbiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgodjQgPDwgNCB8IHY1ID4+PiAxKSAmIDI1NSkgK1xuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2NSA8PCA3IHwgdjYgPDwgMiB8IHY3ID4+PiAzKSAmIDI1NSkgK1xuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2NyA8PCA1IHwgdjgpICYgMjU1KTtcbiAgICB9XG5cbiAgICAvLyByZW1haW4gYnl0ZXNcbiAgICB2YXIgcmVtYWluID0gbGVuZ3RoIC0gY291bnQ7XG4gICAgaWYgKHJlbWFpbiA9PT0gMikge1xuICAgICAgdjEgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHYyID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgodjEgPDwgMyB8IHYyID4+PiAyKSAmIDI1NSk7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDQpIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgodjEgPDwgMyB8IHYyID4+PiAyKSAmIDI1NSkgK1xuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2MiA8PCA2IHwgdjMgPDwgMSB8IHY0ID4+PiA0KSAmIDI1NSk7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDUpIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NSA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKHYxIDw8IDMgfCB2MiA+Pj4gMikgJiAyNTUpICtcbiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgodjIgPDwgNiB8IHYzIDw8IDEgfCB2NCA+Pj4gNCkgJiAyNTUpICtcbiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgodjQgPDwgNCB8IHY1ID4+PiAxKSAmIDI1NSk7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDcpIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NSA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjYgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY3ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgodjEgPDwgMyB8IHYyID4+PiAyKSAmIDI1NSkgK1xuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2MiA8PCA2IHwgdjMgPDwgMSB8IHY0ID4+PiA0KSAmIDI1NSkgK1xuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2NCA8PCA0IHwgdjUgPj4+IDEpICYgMjU1KSArXG4gICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoKHY1IDw8IDcgfCB2NiA8PCAyIHwgdjcgPj4+IDMpICYgMjU1KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfTtcblxuICB2YXIgZXhwb3J0cyA9IHtcbiAgICBlbmNvZGU6IGVuY29kZSxcbiAgICBkZWNvZGU6IGRlY29kZVxuICB9O1xuICBkZWNvZGUuYXNCeXRlcyA9IGRlY29kZUFzQnl0ZXM7XG5cbiAgaWYgKENPTU1PTl9KUykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiAgfSBlbHNlIHtcbiAgICByb290LmJhc2UzMiA9IGV4cG9ydHM7XG4gICAgaWYgKEFNRCkge1xuICAgICAgZGVmaW5lKGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZXhwb3J0cztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSkoKTtcbiIsIi8qIGdsb2JhbHMgX193ZWJwYWNrX2FtZF9vcHRpb25zX18gKi9cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX2FtZF9vcHRpb25zX187XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgbXVsdGlhZGRyID0gcmVxdWlyZSgnbXVsdGlhZGRyJylcblxuLypcbiAqIFZhbGlkIGNvbWJpbmF0aW9uc1xuICovXG5jb25zdCBETlM0ID0gYmFzZSgnZG5zNCcpXG5jb25zdCBETlM2ID0gYmFzZSgnZG5zNicpXG5jb25zdCBETlMgPSBvcihcbiAgYmFzZSgnZG5zJyksXG4gIGJhc2UoJ2Ruc2FkZHInKSxcbiAgRE5TNCxcbiAgRE5TNlxuKVxuXG5jb25zdCBJUCA9IG9yKGJhc2UoJ2lwNCcpLCBiYXNlKCdpcDYnKSlcbmNvbnN0IFRDUCA9IG9yKFxuICBhbmQoSVAsIGJhc2UoJ3RjcCcpKSxcbiAgYW5kKEROUywgYmFzZSgndGNwJykpXG4pXG5jb25zdCBVRFAgPSBhbmQoSVAsIGJhc2UoJ3VkcCcpKVxuY29uc3QgVVRQID0gYW5kKFVEUCwgYmFzZSgndXRwJykpXG5cbmNvbnN0IFdlYlNvY2tldHMgPSBvcihcbiAgYW5kKFRDUCwgYmFzZSgnd3MnKSksXG4gIGFuZChETlMsIGJhc2UoJ3dzJykpXG4pXG5cbmNvbnN0IFdlYlNvY2tldHNTZWN1cmUgPSBvcihcbiAgYW5kKFRDUCwgYmFzZSgnd3NzJykpLFxuICBhbmQoRE5TLCBiYXNlKCd3c3MnKSlcbilcblxuY29uc3QgSFRUUCA9IG9yKFxuICBhbmQoVENQLCBiYXNlKCdodHRwJykpLFxuICBhbmQoSVAsIGJhc2UoJ2h0dHAnKSksXG4gIGFuZChETlMsIGJhc2UoJ2h0dHAnKSlcbilcblxuY29uc3QgSFRUUFMgPSBvcihcbiAgYW5kKFRDUCwgYmFzZSgnaHR0cHMnKSksXG4gIGFuZChJUCwgYmFzZSgnaHR0cHMnKSksXG4gIGFuZChETlMsIGJhc2UoJ2h0dHBzJykpXG4pXG5cbmNvbnN0IFdlYlJUQ1N0YXIgPSBvcihcbiAgYW5kKFdlYlNvY2tldHMsIGJhc2UoJ3AycC13ZWJydGMtc3RhcicpLCBiYXNlKCdwMnAnKSksXG4gIGFuZChXZWJTb2NrZXRzU2VjdXJlLCBiYXNlKCdwMnAtd2VicnRjLXN0YXInKSwgYmFzZSgncDJwJykpLFxuICBhbmQoV2ViU29ja2V0cywgYmFzZSgncDJwLXdlYnJ0Yy1zdGFyJykpLFxuICBhbmQoV2ViU29ja2V0c1NlY3VyZSwgYmFzZSgncDJwLXdlYnJ0Yy1zdGFyJykpXG4pXG5cbmNvbnN0IFdlYlNvY2tldFN0YXIgPSBvcihcbiAgYW5kKFdlYlNvY2tldHMsIGJhc2UoJ3AycC13ZWJzb2NrZXQtc3RhcicpLCBiYXNlKCdwMnAnKSksXG4gIGFuZChXZWJTb2NrZXRzU2VjdXJlLCBiYXNlKCdwMnAtd2Vic29ja2V0LXN0YXInKSwgYmFzZSgncDJwJykpLFxuICBhbmQoV2ViU29ja2V0cywgYmFzZSgncDJwLXdlYnNvY2tldC1zdGFyJykpLFxuICBhbmQoV2ViU29ja2V0c1NlY3VyZSwgYmFzZSgncDJwLXdlYnNvY2tldC1zdGFyJykpXG4pXG5cbmNvbnN0IFdlYlJUQ0RpcmVjdCA9IG9yKFxuICBhbmQoSFRUUCwgYmFzZSgncDJwLXdlYnJ0Yy1kaXJlY3QnKSksXG4gIGFuZChIVFRQUywgYmFzZSgncDJwLXdlYnJ0Yy1kaXJlY3QnKSlcbilcblxuY29uc3QgUmVsaWFibGUgPSBvcihcbiAgV2ViU29ja2V0cyxcbiAgV2ViU29ja2V0c1NlY3VyZSxcbiAgSFRUUCxcbiAgSFRUUFMsXG4gIFdlYlJUQ1N0YXIsXG4gIFdlYlJUQ0RpcmVjdCxcbiAgVENQLFxuICBVVFBcbilcblxuLy8gVW5saWtlIHdzLXN0YXIsIHN0YXJkdXN0IGNhbiBydW4gb3ZlciBhbnkgdHJhbnNwb3J0IHRodXMgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciB3ZWJzb2NrZXRzIChidXQgZG9uJ3QgZXZlbiB0aGluayBhYm91dCBydW5uaW5nIGEgc3RhcmR1c3Qgc2VydmVyIG92ZXIgd2VicnRjLXN0YXIgOykgKVxuY29uc3QgU3RhcmR1c3QgPSBvcihcbiAgYW5kKFJlbGlhYmxlLCBiYXNlKCdwMnAtc3RhcmR1c3QnKSwgYmFzZSgncDJwJykpLFxuICBhbmQoUmVsaWFibGUsIGJhc2UoJ3AycC1zdGFyZHVzdCcpKVxuKVxuXG5jb25zdCBfUDJQID0gb3IoXG4gIGFuZChSZWxpYWJsZSwgYmFzZSgncDJwJykpLFxuICBXZWJSVENTdGFyLFxuICBiYXNlKCdwMnAnKVxuKVxuXG5jb25zdCBfQ2lyY3VpdCA9IG9yKFxuICBhbmQoX1AyUCwgYmFzZSgncDJwLWNpcmN1aXQnKSwgX1AyUCksXG4gIGFuZChfUDJQLCBiYXNlKCdwMnAtY2lyY3VpdCcpKSxcbiAgYW5kKGJhc2UoJ3AycC1jaXJjdWl0JyksIF9QMlApLFxuICBhbmQoUmVsaWFibGUsIGJhc2UoJ3AycC1jaXJjdWl0JykpLFxuICBhbmQoYmFzZSgncDJwLWNpcmN1aXQnKSwgUmVsaWFibGUpLFxuICBiYXNlKCdwMnAtY2lyY3VpdCcpXG4pXG5cbmNvbnN0IENpcmN1aXRSZWN1cnNpdmUgPSAoKSA9PiBvcihcbiAgYW5kKF9DaXJjdWl0LCBDaXJjdWl0UmVjdXJzaXZlKSxcbiAgX0NpcmN1aXRcbilcblxuY29uc3QgQ2lyY3VpdCA9IENpcmN1aXRSZWN1cnNpdmUoKVxuXG5jb25zdCBQMlAgPSBvcihcbiAgYW5kKENpcmN1aXQsIF9QMlAsIENpcmN1aXQpLFxuICBhbmQoX1AyUCwgQ2lyY3VpdCksXG4gIGFuZChDaXJjdWl0LCBfUDJQKSxcbiAgQ2lyY3VpdCxcbiAgX1AyUFxuKVxuXG5leHBvcnRzLkROUyA9IEROU1xuZXhwb3J0cy5ETlM0ID0gRE5TNFxuZXhwb3J0cy5ETlM2ID0gRE5TNlxuZXhwb3J0cy5JUCA9IElQXG5leHBvcnRzLlRDUCA9IFRDUFxuZXhwb3J0cy5VRFAgPSBVRFBcbmV4cG9ydHMuVVRQID0gVVRQXG5leHBvcnRzLkhUVFAgPSBIVFRQXG5leHBvcnRzLkhUVFBTID0gSFRUUFNcbmV4cG9ydHMuV2ViU29ja2V0cyA9IFdlYlNvY2tldHNcbmV4cG9ydHMuV2ViU29ja2V0c1NlY3VyZSA9IFdlYlNvY2tldHNTZWN1cmVcbmV4cG9ydHMuV2ViU29ja2V0U3RhciA9IFdlYlNvY2tldFN0YXJcbmV4cG9ydHMuV2ViUlRDU3RhciA9IFdlYlJUQ1N0YXJcbmV4cG9ydHMuV2ViUlRDRGlyZWN0ID0gV2ViUlRDRGlyZWN0XG5leHBvcnRzLlJlbGlhYmxlID0gUmVsaWFibGVcbmV4cG9ydHMuU3RhcmR1c3QgPSBTdGFyZHVzdFxuZXhwb3J0cy5DaXJjdWl0ID0gQ2lyY3VpdFxuZXhwb3J0cy5QMlAgPSBQMlBcbmV4cG9ydHMuSVBGUyA9IFAyUFxuXG4vKlxuICogVmFsaWRhdGlvbiBmdW5jc1xuICovXG5cbmZ1bmN0aW9uIG1ha2VNYXRjaGVzRnVuY3Rpb24gKHBhcnRpYWxNYXRjaCkge1xuICByZXR1cm4gZnVuY3Rpb24gbWF0Y2hlcyAoYSkge1xuICAgIGlmICghbXVsdGlhZGRyLmlzTXVsdGlhZGRyKGEpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhID0gbXVsdGlhZGRyKGEpXG4gICAgICB9IGNhdGNoIChlcnIpIHsgLy8gY2F0Y2ggZXJyb3JcbiAgICAgICAgcmV0dXJuIGZhbHNlIC8vIGFsc28gaWYgaXQncyBpbnZhbGlkIGl0J3MgcHJvcGFibHkgbm90IG1hdGNoaW5nIGFzIHdlbGwgc28gcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG91dCA9IHBhcnRpYWxNYXRjaChhLnByb3RvTmFtZXMoKSlcbiAgICBpZiAob3V0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIG91dC5sZW5ndGggPT09IDBcbiAgfVxufVxuXG5mdW5jdGlvbiBhbmQgKCkge1xuICBjb25zdCBhcmdzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpXG4gIGZ1bmN0aW9uIHBhcnRpYWxNYXRjaCAoYSkge1xuICAgIGlmIChhLmxlbmd0aCA8IGFyZ3MubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBhcmdzLnNvbWUoKGFyZykgPT4ge1xuICAgICAgYSA9IHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBhcmcoKS5wYXJ0aWFsTWF0Y2goYSlcbiAgICAgICAgOiBhcmcucGFydGlhbE1hdGNoKGEpXG5cbiAgICAgIGlmIChhID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBhXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7IHJldHVybiAneyAnICsgYXJncy5qb2luKCcgJykgKyAnIH0nIH0sXG4gICAgaW5wdXQ6IGFyZ3MsXG4gICAgbWF0Y2hlczogbWFrZU1hdGNoZXNGdW5jdGlvbihwYXJ0aWFsTWF0Y2gpLFxuICAgIHBhcnRpYWxNYXRjaDogcGFydGlhbE1hdGNoXG4gIH1cbn1cblxuZnVuY3Rpb24gb3IgKCkge1xuICBjb25zdCBhcmdzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpXG5cbiAgZnVuY3Rpb24gcGFydGlhbE1hdGNoIChhKSB7XG4gICAgbGV0IG91dCA9IG51bGxcbiAgICBhcmdzLnNvbWUoKGFyZykgPT4ge1xuICAgICAgY29uc3QgcmVzID0gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGFyZygpLnBhcnRpYWxNYXRjaChhKVxuICAgICAgICA6IGFyZy5wYXJ0aWFsTWF0Y2goYSlcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgb3V0ID0gcmVzXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBvdXRcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICB0b1N0cmluZzogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ3sgJyArIGFyZ3Muam9pbignICcpICsgJyB9JyB9LFxuICAgIGlucHV0OiBhcmdzLFxuICAgIG1hdGNoZXM6IG1ha2VNYXRjaGVzRnVuY3Rpb24ocGFydGlhbE1hdGNoKSxcbiAgICBwYXJ0aWFsTWF0Y2g6IHBhcnRpYWxNYXRjaFxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiBiYXNlIChuKSB7XG4gIGNvbnN0IG5hbWUgPSBuXG5cbiAgZnVuY3Rpb24gbWF0Y2hlcyAoYSkge1xuICAgIGlmICh0eXBlb2YgYSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGEgPSBtdWx0aWFkZHIoYSlcbiAgICAgIH0gY2F0Y2ggKGVycikgeyAvLyBjYXRjaCBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2UgLy8gYWxzbyBpZiBpdCdzIGludmFsaWQgaXQncyBwcm9wYWJseSBub3QgbWF0Y2hpbmcgYXMgd2VsbCBzbyByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwbmFtZXMgPSBhLnByb3RvTmFtZXMoKVxuICAgIGlmIChwbmFtZXMubGVuZ3RoID09PSAxICYmIHBuYW1lc1swXSA9PT0gbmFtZSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBmdW5jdGlvbiBwYXJ0aWFsTWF0Y2ggKHByb3Rvcykge1xuICAgIGlmIChwcm90b3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGlmIChwcm90b3NbMF0gPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiBwcm90b3Muc2xpY2UoMSlcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5hbWUgfSxcbiAgICBtYXRjaGVzOiBtYXRjaGVzLFxuICAgIHBhcnRpYWxNYXRjaDogcGFydGlhbE1hdGNoXG4gIH1cbn1cbiIsInZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xudmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpLlN0cmVhbTtcbnZhciBEZWxheWVkU3RyZWFtID0gcmVxdWlyZSgnZGVsYXllZC1zdHJlYW0nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDb21iaW5lZFN0cmVhbTtcbmZ1bmN0aW9uIENvbWJpbmVkU3RyZWFtKCkge1xuICB0aGlzLndyaXRhYmxlID0gZmFsc2U7XG4gIHRoaXMucmVhZGFibGUgPSB0cnVlO1xuICB0aGlzLmRhdGFTaXplID0gMDtcbiAgdGhpcy5tYXhEYXRhU2l6ZSA9IDIgKiAxMDI0ICogMTAyNDtcbiAgdGhpcy5wYXVzZVN0cmVhbXMgPSB0cnVlO1xuXG4gIHRoaXMuX3JlbGVhc2VkID0gZmFsc2U7XG4gIHRoaXMuX3N0cmVhbXMgPSBbXTtcbiAgdGhpcy5fY3VycmVudFN0cmVhbSA9IG51bGw7XG4gIHRoaXMuX2luc2lkZUxvb3AgPSBmYWxzZTtcbiAgdGhpcy5fcGVuZGluZ05leHQgPSBmYWxzZTtcbn1cbnV0aWwuaW5oZXJpdHMoQ29tYmluZWRTdHJlYW0sIFN0cmVhbSk7XG5cbkNvbWJpbmVkU3RyZWFtLmNyZWF0ZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgdmFyIGNvbWJpbmVkU3RyZWFtID0gbmV3IHRoaXMoKTtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgZm9yICh2YXIgb3B0aW9uIGluIG9wdGlvbnMpIHtcbiAgICBjb21iaW5lZFN0cmVhbVtvcHRpb25dID0gb3B0aW9uc1tvcHRpb25dO1xuICB9XG5cbiAgcmV0dXJuIGNvbWJpbmVkU3RyZWFtO1xufTtcblxuQ29tYmluZWRTdHJlYW0uaXNTdHJlYW1MaWtlID0gZnVuY3Rpb24oc3RyZWFtKSB7XG4gIHJldHVybiAodHlwZW9mIHN0cmVhbSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAmJiAodHlwZW9mIHN0cmVhbSAhPT0gJ3N0cmluZycpXG4gICAgJiYgKHR5cGVvZiBzdHJlYW0gIT09ICdib29sZWFuJylcbiAgICAmJiAodHlwZW9mIHN0cmVhbSAhPT0gJ251bWJlcicpXG4gICAgJiYgKCFCdWZmZXIuaXNCdWZmZXIoc3RyZWFtKSk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24oc3RyZWFtKSB7XG4gIHZhciBpc1N0cmVhbUxpa2UgPSBDb21iaW5lZFN0cmVhbS5pc1N0cmVhbUxpa2Uoc3RyZWFtKTtcblxuICBpZiAoaXNTdHJlYW1MaWtlKSB7XG4gICAgaWYgKCEoc3RyZWFtIGluc3RhbmNlb2YgRGVsYXllZFN0cmVhbSkpIHtcbiAgICAgIHZhciBuZXdTdHJlYW0gPSBEZWxheWVkU3RyZWFtLmNyZWF0ZShzdHJlYW0sIHtcbiAgICAgICAgbWF4RGF0YVNpemU6IEluZmluaXR5LFxuICAgICAgICBwYXVzZVN0cmVhbTogdGhpcy5wYXVzZVN0cmVhbXMsXG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbignZGF0YScsIHRoaXMuX2NoZWNrRGF0YVNpemUuYmluZCh0aGlzKSk7XG4gICAgICBzdHJlYW0gPSBuZXdTdHJlYW07XG4gICAgfVxuXG4gICAgdGhpcy5faGFuZGxlRXJyb3JzKHN0cmVhbSk7XG5cbiAgICBpZiAodGhpcy5wYXVzZVN0cmVhbXMpIHtcbiAgICAgIHN0cmVhbS5wYXVzZSgpO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuX3N0cmVhbXMucHVzaChzdHJlYW0pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24oZGVzdCwgb3B0aW9ucykge1xuICBTdHJlYW0ucHJvdG90eXBlLnBpcGUuY2FsbCh0aGlzLCBkZXN0LCBvcHRpb25zKTtcbiAgdGhpcy5yZXN1bWUoKTtcbiAgcmV0dXJuIGRlc3Q7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuX2dldE5leHQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fY3VycmVudFN0cmVhbSA9IG51bGw7XG5cbiAgaWYgKHRoaXMuX2luc2lkZUxvb3ApIHtcbiAgICB0aGlzLl9wZW5kaW5nTmV4dCA9IHRydWU7XG4gICAgcmV0dXJuOyAvLyBkZWZlciBjYWxsXG4gIH1cblxuICB0aGlzLl9pbnNpZGVMb29wID0gdHJ1ZTtcbiAgdHJ5IHtcbiAgICBkbyB7XG4gICAgICB0aGlzLl9wZW5kaW5nTmV4dCA9IGZhbHNlO1xuICAgICAgdGhpcy5fcmVhbEdldE5leHQoKTtcbiAgICB9IHdoaWxlICh0aGlzLl9wZW5kaW5nTmV4dCk7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5faW5zaWRlTG9vcCA9IGZhbHNlO1xuICB9XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuX3JlYWxHZXROZXh0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzdHJlYW0gPSB0aGlzLl9zdHJlYW1zLnNoaWZ0KCk7XG5cblxuICBpZiAodHlwZW9mIHN0cmVhbSA9PSAndW5kZWZpbmVkJykge1xuICAgIHRoaXMuZW5kKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBzdHJlYW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLl9waXBlTmV4dChzdHJlYW0pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBnZXRTdHJlYW0gPSBzdHJlYW07XG4gIGdldFN0cmVhbShmdW5jdGlvbihzdHJlYW0pIHtcbiAgICB2YXIgaXNTdHJlYW1MaWtlID0gQ29tYmluZWRTdHJlYW0uaXNTdHJlYW1MaWtlKHN0cmVhbSk7XG4gICAgaWYgKGlzU3RyZWFtTGlrZSkge1xuICAgICAgc3RyZWFtLm9uKCdkYXRhJywgdGhpcy5fY2hlY2tEYXRhU2l6ZS5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuX2hhbmRsZUVycm9ycyhzdHJlYW0pO1xuICAgIH1cblxuICAgIHRoaXMuX3BpcGVOZXh0KHN0cmVhbSk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuX3BpcGVOZXh0ID0gZnVuY3Rpb24oc3RyZWFtKSB7XG4gIHRoaXMuX2N1cnJlbnRTdHJlYW0gPSBzdHJlYW07XG5cbiAgdmFyIGlzU3RyZWFtTGlrZSA9IENvbWJpbmVkU3RyZWFtLmlzU3RyZWFtTGlrZShzdHJlYW0pO1xuICBpZiAoaXNTdHJlYW1MaWtlKSB7XG4gICAgc3RyZWFtLm9uKCdlbmQnLCB0aGlzLl9nZXROZXh0LmJpbmQodGhpcykpO1xuICAgIHN0cmVhbS5waXBlKHRoaXMsIHtlbmQ6IGZhbHNlfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHZhbHVlID0gc3RyZWFtO1xuICB0aGlzLndyaXRlKHZhbHVlKTtcbiAgdGhpcy5fZ2V0TmV4dCgpO1xufTtcblxuQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLl9oYW5kbGVFcnJvcnMgPSBmdW5jdGlvbihzdHJlYW0pIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyKSB7XG4gICAgc2VsZi5fZW1pdEVycm9yKGVycik7XG4gIH0pO1xufTtcblxuQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oZGF0YSkge1xuICB0aGlzLmVtaXQoJ2RhdGEnLCBkYXRhKTtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uKCkge1xuICBpZiAoIXRoaXMucGF1c2VTdHJlYW1zKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYodGhpcy5wYXVzZVN0cmVhbXMgJiYgdGhpcy5fY3VycmVudFN0cmVhbSAmJiB0eXBlb2YodGhpcy5fY3VycmVudFN0cmVhbS5wYXVzZSkgPT0gJ2Z1bmN0aW9uJykgdGhpcy5fY3VycmVudFN0cmVhbS5wYXVzZSgpO1xuICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24oKSB7XG4gIGlmICghdGhpcy5fcmVsZWFzZWQpIHtcbiAgICB0aGlzLl9yZWxlYXNlZCA9IHRydWU7XG4gICAgdGhpcy53cml0YWJsZSA9IHRydWU7XG4gICAgdGhpcy5fZ2V0TmV4dCgpO1xuICB9XG5cbiAgaWYodGhpcy5wYXVzZVN0cmVhbXMgJiYgdGhpcy5fY3VycmVudFN0cmVhbSAmJiB0eXBlb2YodGhpcy5fY3VycmVudFN0cmVhbS5yZXN1bWUpID09ICdmdW5jdGlvbicpIHRoaXMuX2N1cnJlbnRTdHJlYW0ucmVzdW1lKCk7XG4gIHRoaXMuZW1pdCgncmVzdW1lJyk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX3Jlc2V0KCk7XG4gIHRoaXMuZW1pdCgnZW5kJyk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9yZXNldCgpO1xuICB0aGlzLmVtaXQoJ2Nsb3NlJyk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuX3Jlc2V0ID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcbiAgdGhpcy5fc3RyZWFtcyA9IFtdO1xuICB0aGlzLl9jdXJyZW50U3RyZWFtID0gbnVsbDtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5fY2hlY2tEYXRhU2l6ZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl91cGRhdGVEYXRhU2l6ZSgpO1xuICBpZiAodGhpcy5kYXRhU2l6ZSA8PSB0aGlzLm1heERhdGFTaXplKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIG1lc3NhZ2UgPVxuICAgICdEZWxheWVkU3RyZWFtI21heERhdGFTaXplIG9mICcgKyB0aGlzLm1heERhdGFTaXplICsgJyBieXRlcyBleGNlZWRlZC4nO1xuICB0aGlzLl9lbWl0RXJyb3IobmV3IEVycm9yKG1lc3NhZ2UpKTtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5fdXBkYXRlRGF0YVNpemUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5kYXRhU2l6ZSA9IDA7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB0aGlzLl9zdHJlYW1zLmZvckVhY2goZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgaWYgKCFzdHJlYW0uZGF0YVNpemUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLmRhdGFTaXplICs9IHN0cmVhbS5kYXRhU2l6ZTtcbiAgfSk7XG5cbiAgaWYgKHRoaXMuX2N1cnJlbnRTdHJlYW0gJiYgdGhpcy5fY3VycmVudFN0cmVhbS5kYXRhU2l6ZSkge1xuICAgIHRoaXMuZGF0YVNpemUgKz0gdGhpcy5fY3VycmVudFN0cmVhbS5kYXRhU2l6ZTtcbiAgfVxufTtcblxuQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLl9lbWl0RXJyb3IgPSBmdW5jdGlvbihlcnIpIHtcbiAgdGhpcy5fcmVzZXQoKTtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7XG59O1xuIiwidmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpLlN0cmVhbTtcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERlbGF5ZWRTdHJlYW07XG5mdW5jdGlvbiBEZWxheWVkU3RyZWFtKCkge1xuICB0aGlzLnNvdXJjZSA9IG51bGw7XG4gIHRoaXMuZGF0YVNpemUgPSAwO1xuICB0aGlzLm1heERhdGFTaXplID0gMTAyNCAqIDEwMjQ7XG4gIHRoaXMucGF1c2VTdHJlYW0gPSB0cnVlO1xuXG4gIHRoaXMuX21heERhdGFTaXplRXhjZWVkZWQgPSBmYWxzZTtcbiAgdGhpcy5fcmVsZWFzZWQgPSBmYWxzZTtcbiAgdGhpcy5fYnVmZmVyZWRFdmVudHMgPSBbXTtcbn1cbnV0aWwuaW5oZXJpdHMoRGVsYXllZFN0cmVhbSwgU3RyZWFtKTtcblxuRGVsYXllZFN0cmVhbS5jcmVhdGUgPSBmdW5jdGlvbihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGRlbGF5ZWRTdHJlYW0gPSBuZXcgdGhpcygpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBmb3IgKHZhciBvcHRpb24gaW4gb3B0aW9ucykge1xuICAgIGRlbGF5ZWRTdHJlYW1bb3B0aW9uXSA9IG9wdGlvbnNbb3B0aW9uXTtcbiAgfVxuXG4gIGRlbGF5ZWRTdHJlYW0uc291cmNlID0gc291cmNlO1xuXG4gIHZhciByZWFsRW1pdCA9IHNvdXJjZS5lbWl0O1xuICBzb3VyY2UuZW1pdCA9IGZ1bmN0aW9uKCkge1xuICAgIGRlbGF5ZWRTdHJlYW0uX2hhbmRsZUVtaXQoYXJndW1lbnRzKTtcbiAgICByZXR1cm4gcmVhbEVtaXQuYXBwbHkoc291cmNlLCBhcmd1bWVudHMpO1xuICB9O1xuXG4gIHNvdXJjZS5vbignZXJyb3InLCBmdW5jdGlvbigpIHt9KTtcbiAgaWYgKGRlbGF5ZWRTdHJlYW0ucGF1c2VTdHJlYW0pIHtcbiAgICBzb3VyY2UucGF1c2UoKTtcbiAgfVxuXG4gIHJldHVybiBkZWxheWVkU3RyZWFtO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KERlbGF5ZWRTdHJlYW0ucHJvdG90eXBlLCAncmVhZGFibGUnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2UucmVhZGFibGU7XG4gIH1cbn0pO1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5zb3VyY2Uuc2V0RW5jb2RpbmcuYXBwbHkodGhpcy5zb3VyY2UsIGFyZ3VtZW50cyk7XG59O1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCF0aGlzLl9yZWxlYXNlZCkge1xuICAgIHRoaXMucmVsZWFzZSgpO1xuICB9XG5cbiAgdGhpcy5zb3VyY2UucmVzdW1lKCk7XG59O1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnNvdXJjZS5wYXVzZSgpO1xufTtcblxuRGVsYXllZFN0cmVhbS5wcm90b3R5cGUucmVsZWFzZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9yZWxlYXNlZCA9IHRydWU7XG5cbiAgdGhpcy5fYnVmZmVyZWRFdmVudHMuZm9yRWFjaChmdW5jdGlvbihhcmdzKSB7XG4gICAgdGhpcy5lbWl0LmFwcGx5KHRoaXMsIGFyZ3MpO1xuICB9LmJpbmQodGhpcykpO1xuICB0aGlzLl9idWZmZXJlZEV2ZW50cyA9IFtdO1xufTtcblxuRGVsYXllZFN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgciA9IFN0cmVhbS5wcm90b3R5cGUucGlwZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB0aGlzLnJlc3VtZSgpO1xuICByZXR1cm4gcjtcbn07XG5cbkRlbGF5ZWRTdHJlYW0ucHJvdG90eXBlLl9oYW5kbGVFbWl0ID0gZnVuY3Rpb24oYXJncykge1xuICBpZiAodGhpcy5fcmVsZWFzZWQpIHtcbiAgICB0aGlzLmVtaXQuYXBwbHkodGhpcywgYXJncyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFyZ3NbMF0gPT09ICdkYXRhJykge1xuICAgIHRoaXMuZGF0YVNpemUgKz0gYXJnc1sxXS5sZW5ndGg7XG4gICAgdGhpcy5fY2hlY2tJZk1heERhdGFTaXplRXhjZWVkZWQoKTtcbiAgfVxuXG4gIHRoaXMuX2J1ZmZlcmVkRXZlbnRzLnB1c2goYXJncyk7XG59O1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5fY2hlY2tJZk1heERhdGFTaXplRXhjZWVkZWQgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuX21heERhdGFTaXplRXhjZWVkZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodGhpcy5kYXRhU2l6ZSA8PSB0aGlzLm1heERhdGFTaXplKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5fbWF4RGF0YVNpemVFeGNlZWRlZCA9IHRydWU7XG4gIHZhciBtZXNzYWdlID1cbiAgICAnRGVsYXllZFN0cmVhbSNtYXhEYXRhU2l6ZSBvZiAnICsgdGhpcy5tYXhEYXRhU2l6ZSArICcgYnl0ZXMgZXhjZWVkZWQuJ1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKG1lc3NhZ2UpKTtcbn07XG4iLCIvKiFcbiAqIG1pbWUtdHlwZXNcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBkYiA9IHJlcXVpcmUoJ21pbWUtZGInKVxudmFyIGV4dG5hbWUgPSByZXF1aXJlKCdwYXRoJykuZXh0bmFtZVxuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBFWFRSQUNUX1RZUEVfUkVHRVhQID0gL15cXHMqKFteO1xcc10qKSg/Ojt8XFxzfCQpL1xudmFyIFRFWFRfVFlQRV9SRUdFWFAgPSAvXnRleHRcXC8vaVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbmV4cG9ydHMuY2hhcnNldCA9IGNoYXJzZXRcbmV4cG9ydHMuY2hhcnNldHMgPSB7IGxvb2t1cDogY2hhcnNldCB9XG5leHBvcnRzLmNvbnRlbnRUeXBlID0gY29udGVudFR5cGVcbmV4cG9ydHMuZXh0ZW5zaW9uID0gZXh0ZW5zaW9uXG5leHBvcnRzLmV4dGVuc2lvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5leHBvcnRzLmxvb2t1cCA9IGxvb2t1cFxuZXhwb3J0cy50eXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuLy8gUG9wdWxhdGUgdGhlIGV4dGVuc2lvbnMvdHlwZXMgbWFwc1xucG9wdWxhdGVNYXBzKGV4cG9ydHMuZXh0ZW5zaW9ucywgZXhwb3J0cy50eXBlcylcblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgY2hhcnNldCBmb3IgYSBNSU1FIHR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge2Jvb2xlYW58c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIGNoYXJzZXQgKHR5cGUpIHtcbiAgaWYgKCF0eXBlIHx8IHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gVE9ETzogdXNlIG1lZGlhLXR5cGVyXG4gIHZhciBtYXRjaCA9IEVYVFJBQ1RfVFlQRV9SRUdFWFAuZXhlYyh0eXBlKVxuICB2YXIgbWltZSA9IG1hdGNoICYmIGRiW21hdGNoWzFdLnRvTG93ZXJDYXNlKCldXG5cbiAgaWYgKG1pbWUgJiYgbWltZS5jaGFyc2V0KSB7XG4gICAgcmV0dXJuIG1pbWUuY2hhcnNldFxuICB9XG5cbiAgLy8gZGVmYXVsdCB0ZXh0LyogdG8gdXRmLThcbiAgaWYgKG1hdGNoICYmIFRFWFRfVFlQRV9SRUdFWFAudGVzdChtYXRjaFsxXSkpIHtcbiAgICByZXR1cm4gJ1VURi04J1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZnVsbCBDb250ZW50LVR5cGUgaGVhZGVyIGdpdmVuIGEgTUlNRSB0eXBlIG9yIGV4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtib29sZWFufHN0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBjb250ZW50VHlwZSAoc3RyKSB7XG4gIC8vIFRPRE86IHNob3VsZCB0aGlzIGV2ZW4gYmUgaW4gdGhpcyBtb2R1bGU/XG4gIGlmICghc3RyIHx8IHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICB2YXIgbWltZSA9IHN0ci5pbmRleE9mKCcvJykgPT09IC0xXG4gICAgPyBleHBvcnRzLmxvb2t1cChzdHIpXG4gICAgOiBzdHJcblxuICBpZiAoIW1pbWUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBjb250ZW50LXR5cGUgb3Igb3RoZXIgbW9kdWxlXG4gIGlmIChtaW1lLmluZGV4T2YoJ2NoYXJzZXQnKSA9PT0gLTEpIHtcbiAgICB2YXIgY2hhcnNldCA9IGV4cG9ydHMuY2hhcnNldChtaW1lKVxuICAgIGlmIChjaGFyc2V0KSBtaW1lICs9ICc7IGNoYXJzZXQ9JyArIGNoYXJzZXQudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgcmV0dXJuIG1pbWVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgZXh0ZW5zaW9uIGZvciBhIE1JTUUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gZXh0ZW5zaW9uICh0eXBlKSB7XG4gIGlmICghdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBtZWRpYS10eXBlclxuICB2YXIgbWF0Y2ggPSBFWFRSQUNUX1RZUEVfUkVHRVhQLmV4ZWModHlwZSlcblxuICAvLyBnZXQgZXh0ZW5zaW9uc1xuICB2YXIgZXh0cyA9IG1hdGNoICYmIGV4cG9ydHMuZXh0ZW5zaW9uc1ttYXRjaFsxXS50b0xvd2VyQ2FzZSgpXVxuXG4gIGlmICghZXh0cyB8fCAhZXh0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBleHRzWzBdXG59XG5cbi8qKlxuICogTG9va3VwIHRoZSBNSU1FIHR5cGUgZm9yIGEgZmlsZSBwYXRoL2V4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gbG9va3VwIChwYXRoKSB7XG4gIGlmICghcGF0aCB8fCB0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIGdldCB0aGUgZXh0ZW5zaW9uIChcImV4dFwiIG9yIFwiLmV4dFwiIG9yIGZ1bGwgcGF0aClcbiAgdmFyIGV4dGVuc2lvbiA9IGV4dG5hbWUoJ3guJyArIHBhdGgpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAuc3Vic3RyKDEpXG5cbiAgaWYgKCFleHRlbnNpb24pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBleHBvcnRzLnR5cGVzW2V4dGVuc2lvbl0gfHwgZmFsc2Vcbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSB0aGUgZXh0ZW5zaW9ucyBhbmQgdHlwZXMgbWFwcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcG9wdWxhdGVNYXBzIChleHRlbnNpb25zLCB0eXBlcykge1xuICAvLyBzb3VyY2UgcHJlZmVyZW5jZSAobGVhc3QgLT4gbW9zdClcbiAgdmFyIHByZWZlcmVuY2UgPSBbJ25naW54JywgJ2FwYWNoZScsIHVuZGVmaW5lZCwgJ2lhbmEnXVxuXG4gIE9iamVjdC5rZXlzKGRiKS5mb3JFYWNoKGZ1bmN0aW9uIGZvckVhY2hNaW1lVHlwZSAodHlwZSkge1xuICAgIHZhciBtaW1lID0gZGJbdHlwZV1cbiAgICB2YXIgZXh0cyA9IG1pbWUuZXh0ZW5zaW9uc1xuXG4gICAgaWYgKCFleHRzIHx8ICFleHRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gbWltZSAtPiBleHRlbnNpb25zXG4gICAgZXh0ZW5zaW9uc1t0eXBlXSA9IGV4dHNcblxuICAgIC8vIGV4dGVuc2lvbiAtPiBtaW1lXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZXh0ZW5zaW9uID0gZXh0c1tpXVxuXG4gICAgICBpZiAodHlwZXNbZXh0ZW5zaW9uXSkge1xuICAgICAgICB2YXIgZnJvbSA9IHByZWZlcmVuY2UuaW5kZXhPZihkYlt0eXBlc1tleHRlbnNpb25dXS5zb3VyY2UpXG4gICAgICAgIHZhciB0byA9IHByZWZlcmVuY2UuaW5kZXhPZihtaW1lLnNvdXJjZSlcblxuICAgICAgICBpZiAodHlwZXNbZXh0ZW5zaW9uXSAhPT0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgJiZcbiAgICAgICAgICAoZnJvbSA+IHRvIHx8IChmcm9tID09PSB0byAmJiB0eXBlc1tleHRlbnNpb25dLnN1YnN0cigwLCAxMikgPT09ICdhcHBsaWNhdGlvbi8nKSkpIHtcbiAgICAgICAgICAvLyBza2lwIHRoZSByZW1hcHBpbmdcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHNldCB0aGUgZXh0ZW5zaW9uIC0+IG1pbWVcbiAgICAgIHR5cGVzW2V4dGVuc2lvbl0gPSB0eXBlXG4gICAgfVxuICB9KVxufVxuIiwiLyohXG4gKiBtaW1lLWRiXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2RiLmpzb24nKVxuIiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICBwYXJhbGxlbCAgICAgIDogcmVxdWlyZSgnLi9wYXJhbGxlbC5qcycpLFxuICBzZXJpYWwgICAgICAgIDogcmVxdWlyZSgnLi9zZXJpYWwuanMnKSxcbiAgc2VyaWFsT3JkZXJlZCA6IHJlcXVpcmUoJy4vc2VyaWFsT3JkZXJlZC5qcycpXG59O1xuIiwidmFyIGl0ZXJhdGUgICAgPSByZXF1aXJlKCcuL2xpYi9pdGVyYXRlLmpzJylcbiAgLCBpbml0U3RhdGUgID0gcmVxdWlyZSgnLi9saWIvc3RhdGUuanMnKVxuICAsIHRlcm1pbmF0b3IgPSByZXF1aXJlKCcuL2xpYi90ZXJtaW5hdG9yLmpzJylcbiAgO1xuXG4vLyBQdWJsaWMgQVBJXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmFsbGVsO1xuXG4vKipcbiAqIFJ1bnMgaXRlcmF0b3Igb3ZlciBwcm92aWRlZCBhcnJheSBlbGVtZW50cyBpbiBwYXJhbGxlbFxuICpcbiAqIEBwYXJhbSAgIHthcnJheXxvYmplY3R9IGxpc3QgLSBhcnJheSBvciBvYmplY3QgKG5hbWVkIGxpc3QpIHRvIGl0ZXJhdGUgb3ZlclxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBpdGVyYXRvciAtIGl0ZXJhdG9yIHRvIHJ1blxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGludm9rZWQgd2hlbiBhbGwgZWxlbWVudHMgcHJvY2Vzc2VkXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259IC0gam9icyB0ZXJtaW5hdG9yXG4gKi9cbmZ1bmN0aW9uIHBhcmFsbGVsKGxpc3QsIGl0ZXJhdG9yLCBjYWxsYmFjaylcbntcbiAgdmFyIHN0YXRlID0gaW5pdFN0YXRlKGxpc3QpO1xuXG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IChzdGF0ZVsna2V5ZWRMaXN0J10gfHwgbGlzdCkubGVuZ3RoKVxuICB7XG4gICAgaXRlcmF0ZShsaXN0LCBpdGVyYXRvciwgc3RhdGUsIGZ1bmN0aW9uKGVycm9yLCByZXN1bHQpXG4gICAge1xuICAgICAgaWYgKGVycm9yKVxuICAgICAge1xuICAgICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBsb29rcyBsaWtlIGl0J3MgdGhlIGxhc3Qgb25lXG4gICAgICBpZiAoT2JqZWN0LmtleXMoc3RhdGUuam9icykubGVuZ3RoID09PSAwKVxuICAgICAge1xuICAgICAgICBjYWxsYmFjayhudWxsLCBzdGF0ZS5yZXN1bHRzKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc3RhdGUuaW5kZXgrKztcbiAgfVxuXG4gIHJldHVybiB0ZXJtaW5hdG9yLmJpbmQoc3RhdGUsIGNhbGxiYWNrKTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZGVmZXI7XG5cbi8qKlxuICogUnVucyBwcm92aWRlZCBmdW5jdGlvbiBvbiBuZXh0IGl0ZXJhdGlvbiBvZiB0aGUgZXZlbnQgbG9vcFxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gZnVuY3Rpb24gdG8gcnVuXG4gKi9cbmZ1bmN0aW9uIGRlZmVyKGZuKVxue1xuICB2YXIgbmV4dFRpY2sgPSB0eXBlb2Ygc2V0SW1tZWRpYXRlID09ICdmdW5jdGlvbidcbiAgICA/IHNldEltbWVkaWF0ZVxuICAgIDogKFxuICAgICAgdHlwZW9mIHByb2Nlc3MgPT0gJ29iamVjdCcgJiYgdHlwZW9mIHByb2Nlc3MubmV4dFRpY2sgPT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBwcm9jZXNzLm5leHRUaWNrXG4gICAgICA6IG51bGxcbiAgICApO1xuXG4gIGlmIChuZXh0VGljaylcbiAge1xuICAgIG5leHRUaWNrKGZuKTtcbiAgfVxuICBlbHNlXG4gIHtcbiAgICBzZXRUaW1lb3V0KGZuLCAwKTtcbiAgfVxufVxuIiwidmFyIHNlcmlhbE9yZGVyZWQgPSByZXF1aXJlKCcuL3NlcmlhbE9yZGVyZWQuanMnKTtcblxuLy8gUHVibGljIEFQSVxubW9kdWxlLmV4cG9ydHMgPSBzZXJpYWw7XG5cbi8qKlxuICogUnVucyBpdGVyYXRvciBvdmVyIHByb3ZpZGVkIGFycmF5IGVsZW1lbnRzIGluIHNlcmllc1xuICpcbiAqIEBwYXJhbSAgIHthcnJheXxvYmplY3R9IGxpc3QgLSBhcnJheSBvciBvYmplY3QgKG5hbWVkIGxpc3QpIHRvIGl0ZXJhdGUgb3ZlclxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBpdGVyYXRvciAtIGl0ZXJhdG9yIHRvIHJ1blxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGludm9rZWQgd2hlbiBhbGwgZWxlbWVudHMgcHJvY2Vzc2VkXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259IC0gam9icyB0ZXJtaW5hdG9yXG4gKi9cbmZ1bmN0aW9uIHNlcmlhbChsaXN0LCBpdGVyYXRvciwgY2FsbGJhY2spXG57XG4gIHJldHVybiBzZXJpYWxPcmRlcmVkKGxpc3QsIGl0ZXJhdG9yLCBudWxsLCBjYWxsYmFjayk7XG59XG4iLCIvLyBwb3B1bGF0ZXMgbWlzc2luZyB2YWx1ZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZHN0LCBzcmMpIHtcblxuICBPYmplY3Qua2V5cyhzcmMpLmZvckVhY2goZnVuY3Rpb24ocHJvcClcbiAge1xuICAgIGRzdFtwcm9wXSA9IGRzdFtwcm9wXSB8fCBzcmNbcHJvcF07XG4gIH0pO1xuXG4gIHJldHVybiBkc3Q7XG59O1xuIiwiLy8gVE9ETyhCYWJlbCA4KTogUmVtb3ZlIHRoaXMgZmlsZS5cblxudmFyIHJ1bnRpbWUgPSByZXF1aXJlKFwiLi4vaGVscGVycy9yZWdlbmVyYXRvclJ1bnRpbWVcIikoKTtcbm1vZHVsZS5leHBvcnRzID0gcnVudGltZTtcblxuLy8gQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2Jsb2IvbWFpbi9wYWNrYWdlcy9ydW50aW1lL3J1bnRpbWUuanMjTDczNj1cbnRyeSB7XG4gIHJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG59IGNhdGNoIChhY2NpZGVudGFsU3RyaWN0TW9kZSkge1xuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICBnbG9iYWxUaGlzLnJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG4gIH0gZWxzZSB7XG4gICAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbiAgfVxufVxuIiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yUnVudGltZSgpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7IC8qISByZWdlbmVyYXRvci1ydW50aW1lIC0tIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLiAtLSBsaWNlbnNlIChNSVQpOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL0xJQ0VOU0UgKi9cbiAgbW9kdWxlLmV4cG9ydHMgPSBfcmVnZW5lcmF0b3JSdW50aW1lID0gZnVuY3Rpb24gX3JlZ2VuZXJhdG9yUnVudGltZSgpIHtcbiAgICByZXR1cm4gZXhwb3J0cztcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzO1xuICB2YXIgZXhwb3J0cyA9IHt9LFxuICAgIE9wID0gT2JqZWN0LnByb3RvdHlwZSxcbiAgICBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eSxcbiAgICAkU3ltYm9sID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSxcbiAgICBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCIsXG4gICAgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiLFxuICAgIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCBcIkBAdG9TdHJpbmdUYWdcIjtcbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICAgIHdyaXRhYmxlOiAhMFxuICAgIH0pLCBvYmpba2V5XTtcbiAgfVxuICB0cnkge1xuICAgIGRlZmluZSh7fSwgXCJcIik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGRlZmluZSA9IGZ1bmN0aW9uIGRlZmluZShvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yLFxuICAgICAgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpLFxuICAgICAgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcbiAgICByZXR1cm4gZ2VuZXJhdG9yLl9pbnZva2UgPSBmdW5jdGlvbiAoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgICAgdmFyIHN0YXRlID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtZXRob2QsIGFyZykge1xuICAgICAgICBpZiAoXCJleGVjdXRpbmdcIiA9PT0gc3RhdGUpIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICAgIGlmIChcImNvbXBsZXRlZFwiID09PSBzdGF0ZSkge1xuICAgICAgICAgIGlmIChcInRocm93XCIgPT09IG1ldGhvZCkgdGhyb3cgYXJnO1xuICAgICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZCwgY29udGV4dC5hcmcgPSBhcmc7Oykge1xuICAgICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCkge1xuICAgICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcIm5leHRcIiA9PT0gY29udGV4dC5tZXRob2QpIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztlbHNlIGlmIChcInRocm93XCIgPT09IGNvbnRleHQubWV0aG9kKSB7XG4gICAgICAgICAgICBpZiAoXCJzdXNwZW5kZWRTdGFydFwiID09PSBzdGF0ZSkgdGhyb3cgc3RhdGUgPSBcImNvbXBsZXRlZFwiLCBjb250ZXh0LmFyZztcbiAgICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuICAgICAgICAgIH0gZWxzZSBcInJldHVyblwiID09PSBjb250ZXh0Lm1ldGhvZCAmJiBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgICAgc3RhdGUgPSBcImV4ZWN1dGluZ1wiO1xuICAgICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoXCJub3JtYWxcIiA9PT0gcmVjb3JkLnR5cGUpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZSA9IGNvbnRleHQuZG9uZSA/IFwiY29tcGxldGVkXCIgOiBcInN1c3BlbmRlZFlpZWxkXCIsIHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXCJ0aHJvd1wiID09PSByZWNvcmQudHlwZSAmJiAoc3RhdGUgPSBcImNvbXBsZXRlZFwiLCBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIiwgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KGlubmVyRm4sIHNlbGYsIGNvbnRleHQpLCBnZW5lcmF0b3I7XG4gIH1cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwibm9ybWFsXCIsXG4gICAgICAgIGFyZzogZm4uY2FsbChvYmosIGFyZylcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInRocm93XCIsXG4gICAgICAgIGFyZzogZXJyXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cbiAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG4gIGRlZmluZShJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG4gIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZixcbiAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiYgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkgJiYgKEl0ZXJhdG9yUHJvdG90eXBlID0gTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUpO1xuICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPSBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kKSB7XG4gICAgICBkZWZpbmUocHJvdG90eXBlLCBtZXRob2QsIGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvciwgUHJvbWlzZUltcGwpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAoXCJ0aHJvd1wiICE9PSByZWNvcmQudHlwZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZyxcbiAgICAgICAgICB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlICYmIFwib2JqZWN0XCIgPT0gX3R5cGVvZih2YWx1ZSkgJiYgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSA/IFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KSA6IFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHVud3JhcHBlZCkge1xuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZCwgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgIH1cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuICAgIHRoaXMuX2ludm9rZSA9IGZ1bmN0aW9uIChtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUltcGwoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID0gcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAodW5kZWZpbmVkID09PSBtZXRob2QpIHtcbiAgICAgIGlmIChjb250ZXh0LmRlbGVnYXRlID0gbnVsbCwgXCJ0aHJvd1wiID09PSBjb250ZXh0Lm1ldGhvZCkge1xuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0gJiYgKGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIiwgY29udGV4dC5hcmcgPSB1bmRlZmluZWQsIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpLCBcInRocm93XCIgPT09IGNvbnRleHQubWV0aG9kKSkgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiLCBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG4gICAgaWYgKFwidGhyb3dcIiA9PT0gcmVjb3JkLnR5cGUpIHJldHVybiBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIiwgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnLCBjb250ZXh0LmRlbGVnYXRlID0gbnVsbCwgQ29udGludWVTZW50aW5lbDtcbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG4gICAgcmV0dXJuIGluZm8gPyBpbmZvLmRvbmUgPyAoY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWUsIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2MsIFwicmV0dXJuXCIgIT09IGNvbnRleHQubWV0aG9kICYmIChjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiLCBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZCksIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsLCBDb250aW51ZVNlbnRpbmVsKSA6IGluZm8gOiAoY29udGV4dC5tZXRob2QgPSBcInRocm93XCIsIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpLCBjb250ZXh0LmRlbGVnYXRlID0gbnVsbCwgQ29udGludWVTZW50aW5lbCk7XG4gIH1cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7XG4gICAgICB0cnlMb2M6IGxvY3NbMF1cbiAgICB9O1xuICAgIDEgaW4gbG9jcyAmJiAoZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdKSwgMiBpbiBsb2NzICYmIChlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXSwgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdKSwgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCIsIGRlbGV0ZSByZWNvcmQuYXJnLCBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICB9XG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbe1xuICAgICAgdHJ5TG9jOiBcInJvb3RcIlxuICAgIH1dLCB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyksIHRoaXMucmVzZXQoITApO1xuICB9XG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICBpZiAoXCJmdW5jdGlvblwiID09IHR5cGVvZiBpdGVyYWJsZS5uZXh0KSByZXR1cm4gaXRlcmFibGU7XG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSxcbiAgICAgICAgICBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICAgIGZvciAoOyArK2kgPCBpdGVyYWJsZS5sZW5ndGg7KSB7XG4gICAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHJldHVybiBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV0sIG5leHQuZG9uZSA9ICExLCBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5leHQudmFsdWUgPSB1bmRlZmluZWQsIG5leHQuZG9uZSA9ICEwLCBuZXh0O1xuICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmV4dDogZG9uZVJlc3VsdFxuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGRvbmU6ICEwXG4gICAgfTtcbiAgfVxuICByZXR1cm4gR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIGRlZmluZShHcCwgXCJjb25zdHJ1Y3RvclwiLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSksIGRlZmluZShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgXCJjb25zdHJ1Y3RvclwiLCBHZW5lcmF0b3JGdW5jdGlvbiksIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gZGVmaW5lKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKSwgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24gKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBnZW5GdW4gJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiAhIWN0b3IgJiYgKGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8IFwiR2VuZXJhdG9yRnVuY3Rpb25cIiA9PT0gKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSk7XG4gIH0sIGV4cG9ydHMubWFyayA9IGZ1bmN0aW9uIChnZW5GdW4pIHtcbiAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpIDogKGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgZGVmaW5lKGdlbkZ1biwgdG9TdHJpbmdUYWdTeW1ib2wsIFwiR2VuZXJhdG9yRnVuY3Rpb25cIikpLCBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCksIGdlbkZ1bjtcbiAgfSwgZXhwb3J0cy5hd3JhcCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hd2FpdDogYXJnXG4gICAgfTtcbiAgfSwgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKSwgZGVmaW5lKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlLCBhc3luY0l0ZXJhdG9yU3ltYm9sLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yLCBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24gKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0LCBQcm9taXNlSW1wbCkge1xuICAgIHZvaWQgMCA9PT0gUHJvbWlzZUltcGwgJiYgKFByb21pc2VJbXBsID0gUHJvbWlzZSk7XG4gICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcih3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSwgUHJvbWlzZUltcGwpO1xuICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbikgPyBpdGVyIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcbiAgICB9KTtcbiAgfSwgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKSwgZGVmaW5lKEdwLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JcIiksIGRlZmluZShHcCwgaXRlcmF0b3JTeW1ib2wsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGRlZmluZShHcCwgXCJ0b1N0cmluZ1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH0pLCBleHBvcnRzLmtleXMgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIGtleXMucmV2ZXJzZSgpLCBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgZm9yICg7IGtleXMubGVuZ3RoOykge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHJldHVybiBuZXh0LnZhbHVlID0ga2V5LCBuZXh0LmRvbmUgPSAhMSwgbmV4dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0LmRvbmUgPSAhMCwgbmV4dDtcbiAgICB9O1xuICB9LCBleHBvcnRzLnZhbHVlcyA9IHZhbHVlcywgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG4gICAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIGlmICh0aGlzLnByZXYgPSAwLCB0aGlzLm5leHQgPSAwLCB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkLCB0aGlzLmRvbmUgPSAhMSwgdGhpcy5kZWxlZ2F0ZSA9IG51bGwsIHRoaXMubWV0aG9kID0gXCJuZXh0XCIsIHRoaXMuYXJnID0gdW5kZWZpbmVkLCB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KSwgIXNraXBUZW1wUmVzZXQpIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICBcInRcIiA9PT0gbmFtZS5jaGFyQXQoMCkgJiYgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiYgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSAmJiAodGhpc1tuYW1lXSA9IHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgdGhpcy5kb25lID0gITA7XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO1xuICAgICAgaWYgKFwidGhyb3dcIiA9PT0gcm9vdFJlY29yZC50eXBlKSB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24gZGlzcGF0Y2hFeGNlcHRpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB0aHJvdyBleGNlcHRpb247XG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmV0dXJuIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiLCByZWNvcmQuYXJnID0gZXhjZXB0aW9uLCBjb250ZXh0Lm5leHQgPSBsb2MsIGNhdWdodCAmJiAoY29udGV4dC5tZXRob2QgPSBcIm5leHRcIiwgY29udGV4dC5hcmcgPSB1bmRlZmluZWQpLCAhIWNhdWdodDtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldLFxuICAgICAgICAgIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgIGlmIChcInJvb3RcIiA9PT0gZW50cnkudHJ5TG9jKSByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpLFxuICAgICAgICAgICAgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgITApO1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCAhMCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzRmluYWxseSkgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFicnVwdDogZnVuY3Rpb24gYWJydXB0KHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiYgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZmluYWxseUVudHJ5ICYmIChcImJyZWFrXCIgPT09IHR5cGUgfHwgXCJjb250aW51ZVwiID09PSB0eXBlKSAmJiBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJiBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MgJiYgKGZpbmFsbHlFbnRyeSA9IG51bGwpO1xuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZXR1cm4gcmVjb3JkLnR5cGUgPSB0eXBlLCByZWNvcmQuYXJnID0gYXJnLCBmaW5hbGx5RW50cnkgPyAodGhpcy5tZXRob2QgPSBcIm5leHRcIiwgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MsIENvbnRpbnVlU2VudGluZWwpIDogdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChcInRocm93XCIgPT09IHJlY29yZC50eXBlKSB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgcmV0dXJuIFwiYnJlYWtcIiA9PT0gcmVjb3JkLnR5cGUgfHwgXCJjb250aW51ZVwiID09PSByZWNvcmQudHlwZSA/IHRoaXMubmV4dCA9IHJlY29yZC5hcmcgOiBcInJldHVyblwiID09PSByZWNvcmQudHlwZSA/ICh0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmcsIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIiwgdGhpcy5uZXh0ID0gXCJlbmRcIikgOiBcIm5vcm1hbFwiID09PSByZWNvcmQudHlwZSAmJiBhZnRlckxvYyAmJiAodGhpcy5uZXh0ID0gYWZ0ZXJMb2MpLCBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG4gICAgZmluaXNoOiBmdW5jdGlvbiBmaW5pc2goZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSByZXR1cm4gdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyksIHJlc2V0VHJ5RW50cnkoZW50cnkpLCBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuICAgIH0sXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbiBfY2F0Y2godHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKFwidGhyb3dcIiA9PT0gcmVjb3JkLnR5cGUpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uIGRlbGVnYXRlWWllbGQoaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfSwgXCJuZXh0XCIgPT09IHRoaXMubWV0aG9kICYmICh0aGlzLmFyZyA9IHVuZGVmaW5lZCksIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9LCBleHBvcnRzO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcmVnZW5lcmF0b3JSdW50aW1lLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICB0cnkge1xuICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlamVjdChlcnJvcik7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpbmZvLmRvbmUpIHtcbiAgICByZXNvbHZlKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiaW1wb3J0IHsgUGluYXRhQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4nO1xuaW1wb3J0IHBpbkxpc3QsIHsgUGluYXRhUGluLCBQaW5hdGFQaW5MaXN0RmlsdGVyT3B0aW9ucyB9IGZyb20gJy4uL3Bpbkxpc3QvcGluTGlzdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEZpbGVzQnlDb3VudChcbiAgICBjb25maWc6IFBpbmF0YUNvbmZpZyxcblxuICAgIGZpbHRlcnM6IFBpbmF0YVBpbkxpc3RGaWx0ZXJPcHRpb25zID0ge30sXG4gICAgbWF4Q291bnQgPSAtMVxuKSB7XG4gICAgaWYgKG1heENvdW50ID09PSAwKSB7XG4gICAgICAgIHRocm93IEVycm9yKFwiTWF4IGNvdW50IGNhbid0IGJlIDBcIik7XG4gICAgfVxuXG4gICAgY29uc3QgYXN5bmNJdGVyYWJsZSA9IHtcbiAgICAgICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXTogKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgY29uc3QgcGFnZUxpbWl0ID0gMTA7XG4gICAgICAgICAgICBsZXQgcGFnZU9mZnNldCA9IDA7XG4gICAgICAgICAgICBsZXQgY2FjaGU6IFBpbmF0YVBpbltdID0gW107XG4gICAgICAgICAgICBsZXQga2VlcExvb3BpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuZXh0KCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDAgfHwgKGkgJSBwYWdlTGltaXQgPT09IDAgJiYga2VlcExvb3BpbmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGluTGlzdChjb25maWcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi57IHBhZ2VPZmZzZXQsIHBhZ2VMaW1pdCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3ApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gcmVzcC5yb3dzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU9mZnNldCA9IHBhZ2VPZmZzZXQgKyBjYWNoZS5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB1c2VyIHJlcXVlc3RlZCBhbGwgcGlucyB3ZSBoYXZlIHRvIGtlZXAgbG9vcGluZyBpZiB0aGUgbGltaXQgcGFnZSB3YXMgbm90IGZ1bGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBMb29waW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS5sZW5ndGggIT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF4Q291bnQgPT09IC0xID8gY2FjaGUubGVuZ3RoID09PSBwYWdlTGltaXQgOiBpIDwgbWF4Q291bnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKDApO1xuICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlVG9SZXR1cm4gPSBjYWNoZVtpICUgcGFnZUxpbWl0XTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9uZSA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heENvdW50ID09PSAtMSA/IGkgPCBwYWdlT2Zmc2V0IDogaSA8IG1heENvdW50KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBMb29waW5nXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVUb1JldHVybixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZXR1cm4oKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBiZSByZWFjaGVkIGlmIHRoZSBjb25zdW1lciBjYWxsZWQgJ2JyZWFrJyBvciAncmV0dXJuJyBlYXJseSBpbiB0aGUgbG9vcC5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHZhbHVlOiBpLCBkb25lOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGFzeW5jSXRlcmFibGU7XG59XG4iLCJleHBvcnQgKiBmcm9tICcuLi9kYXRhL3Bpbkxpc3QvcGluTGlzdCc7XG5leHBvcnQgKiBmcm9tICcuLi9kYXRhL3Bpbkxpc3QvcXVlcnlCdWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdGVzdEF1dGhlbnRpY2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlclBpbm5lZERhdGFUb3RhbCc7XG4iLCJleHBvcnQgKiBmcm9tICcuL3BpbkpvYnMvcGluSm9icyc7XG5leHBvcnQgKiBmcm9tICcuL3BpbkpvYnMvcXVlcnlCdWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vaGFzaE1ldGFkYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vcGluQnlIYXNoJztcbmV4cG9ydCAqIGZyb20gJy4vcGluRmlsZVRvSVBGUyc7XG5leHBvcnQgKiBmcm9tICcuL3BpbkZyb21GUyc7XG5leHBvcnQgKiBmcm9tICcuL3BpbkpTT05Ub0lQRlMnO1xuZXhwb3J0ICogZnJvbSAnLi91bnBpbic7XG4iXSwic291cmNlUm9vdCI6IiJ9
|