@preply/ds-docs 0.8.0 → 0.9.0

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.
@@ -1 +1 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[10],{1013:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, "ColorControl", function() { return /* binding */ Color_ColorControl; });\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.object.keys.js\nvar es_object_keys = __webpack_require__(18);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.symbol.js\nvar es_symbol = __webpack_require__(4);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.symbol.description.js\nvar es_symbol_description = __webpack_require__(11);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __webpack_require__(12);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.symbol.iterator.js\nvar es_symbol_iterator = __webpack_require__(19);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __webpack_require__(15);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.iterator.js\nvar es_array_iterator = __webpack_require__(13);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/web.dom-collections.iterator.js\nvar web_dom_collections_iterator = __webpack_require__(14);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.from.js\nvar es_array_from = __webpack_require__(22);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __webpack_require__(20);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.object.assign.js\nvar es_object_assign = __webpack_require__(9);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.object.values.js\nvar es_object_values = __webpack_require__(131);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.string.match.js\nvar es_string_match = __webpack_require__(118);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __webpack_require__(30);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __webpack_require__(24);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.number.constructor.js\nvar es_number_constructor = __webpack_require__(158);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __webpack_require__(48);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.string.starts-with.js\nvar es_string_starts_with = __webpack_require__(157);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __webpack_require__(71);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __webpack_require__(8);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __webpack_require__(51);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __webpack_require__(7);\n\n// EXTERNAL MODULE: ./node_modules/react/index.js\nvar react = __webpack_require__(1);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// CONCATENATED MODULE: ./node_modules/react-colorful/dist/index.module.js\nfunction index_module_u(){return(index_module_u=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function index_module_c(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r.indexOf(t=a[n])>=0||(o[t]=e[t]);return o}function index_module_i(e){var t=Object(react["useRef"])(e),n=Object(react["useRef"])(function(e){t.current&&t.current(e)});return t.current=e,n.current}var index_module_s=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=1),e>t?t:e<r?r:e},index_module_f=function(e){return"touches"in e},index_module_v=function(e){return e&&e.ownerDocument.defaultView||self},index_module_d=function(e,r,t){var n=e.getBoundingClientRect(),o=index_module_f(r)?function(e,r){for(var t=0;t<e.length;t++)if(e[t].identifier===r)return e[t];return e[0]}(r.touches,t):r;return{left:index_module_s((o.pageX-(n.left+index_module_v(e).pageXOffset))/n.width),top:index_module_s((o.pageY-(n.top+index_module_v(e).pageYOffset))/n.height)}},index_module_h=function(e){!index_module_f(e)&&e.preventDefault()},index_module_m=react_default.a.memo(function(o){var a=o.onMove,l=o.onKey,s=index_module_c(o,["onMove","onKey"]),m=Object(react["useRef"])(null),g=index_module_i(a),p=index_module_i(l),b=Object(react["useRef"])(null),_=Object(react["useRef"])(!1),x=Object(react["useMemo"])(function(){var e=function(e){index_module_h(e),(index_module_f(e)?e.touches.length>0:e.buttons>0)&&m.current?g(index_module_d(m.current,e,b.current)):t(!1)},r=function(){return t(!1)};function t(t){var n=_.current,o=index_module_v(m.current),a=t?o.addEventListener:o.removeEventListener;a(n?"touchmove":"mousemove",e),a(n?"touchend":"mouseup",r)}return[function(e){var r=e.nativeEvent,n=m.current;if(n&&(index_module_h(r),!function(e,r){return r&&!index_module_f(e)}(r,_.current)&&n)){if(index_module_f(r)){_.current=!0;var o=r.changedTouches||[];o.length&&(b.current=o[0].identifier)}n.focus(),g(index_module_d(n,r,b.current)),t(!0)}},function(e){var r=e.which||e.keyCode;r<37||r>40||(e.preventDefault(),p({left:39===r?.05:37===r?-.05:0,top:40===r?.05:38===r?-.05:0}))},t]},[p,g]),C=x[0],E=x[1],H=x[2];return Object(react["useEffect"])(function(){return H},[H]),react_default.a.createElement("div",index_module_u({},s,{onTouchStart:C,onMouseDown:C,className:"react-colorful__interactive",ref:m,onKeyDown:E,tabIndex:0,role:"slider"}))}),index_module_g=function(e){return e.filter(Boolean).join(" ")},index_module_p=function(r){var t=r.color,n=r.left,o=r.top,a=void 0===o?.5:o,l=index_module_g(["react-colorful__pointer",r.className]);return react_default.a.createElement("div",{className:l,style:{top:100*a+"%",left:100*n+"%"}},react_default.a.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},index_module_b=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=Math.pow(10,r)),Math.round(t*e)/t},index_module_={grad:.9,turn:360,rad:360/(2*Math.PI)},index_module_x=function(e){return"#"===e[0]&&(e=e.substr(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:1}:{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:1}},index_module_C=function(e,r){return void 0===r&&(r="deg"),Number(e)*(index_module_[r]||1)},index_module_E=function(e){var r=/hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?M({h:index_module_C(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:void 0===r[5]?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},index_module_H=index_module_E,M=function(e){var r=e.s,t=e.l;return{h:e.h,s:(r*=(t<50?t:100-t)/100)>0?2*r/(t+r)*100:0,v:t+r,a:e.a}},N=function(e){var r=e.s,t=e.v,n=e.a,o=(200-r)*t/100;return{h:index_module_b(e.h),s:index_module_b(o>0&&o<200?r*t/100/(o<=100?o:200-o)*100:0),l:index_module_b(o/2),a:index_module_b(n,2)}},w=function(e){var r=N(e);return"hsl("+r.h+", "+r.s+"%, "+r.l+"%)"},y=function(e){var r=N(e);return"hsla("+r.h+", "+r.s+"%, "+r.l+"%, "+r.a+")"},q=function(e){var r=e.h,t=e.s,n=e.v,o=e.a;r=r/360*6,t/=100,n/=100;var a=Math.floor(r),l=n*(1-t),u=n*(1-(r-a)*t),c=n*(1-(1-r+a)*t),i=a%6;return{r:index_module_b(255*[n,u,l,l,c,n][i]),g:index_module_b(255*[c,n,n,u,l,l][i]),b:index_module_b(255*[l,l,c,n,n,u][i]),a:index_module_b(o,2)}},k=function(e){var r=/hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?D({h:index_module_C(r[1],r[2]),s:Number(r[3]),v:Number(r[4]),a:void 0===r[5]?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},O=k,I=function(e){var r=/rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?B({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:void 0===r[7]?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},j=I,z=function(e){var r=e.toString(16);return r.length<2?"0"+r:r},B=function(e){var r=e.r,t=e.g,n=e.b,o=e.a,a=Math.max(r,t,n),l=a-Math.min(r,t,n),u=l?a===r?(t-n)/l:a===t?2+(n-r)/l:4+(r-t)/l:0;return{h:index_module_b(60*(u<0?u+6:u)),s:index_module_b(a?l/a*100:0),v:index_module_b(a/255*100),a:o}},D=function(e){return{h:index_module_b(e.h),s:index_module_b(e.s),v:index_module_b(e.v),a:index_module_b(e.a,2)}},K=react_default.a.memo(function(r){var t=r.hue,n=r.onChange,o=index_module_g(["react-colorful__hue",r.className]);return react_default.a.createElement("div",{className:o},react_default.a.createElement(index_module_m,{onMove:function(e){n({h:360*e.left})},onKey:function(e){n({h:index_module_s(t+360*e.left,0,360)})},"aria-label":"Hue","aria-valuetext":index_module_b(t)},react_default.a.createElement(index_module_p,{className:"react-colorful__hue-pointer",left:t/360,color:w({h:t,s:100,v:100,a:1})})))}),L=react_default.a.memo(function(r){var t=r.hsva,n=r.onChange,o={backgroundColor:w({h:t.h,s:100,v:100,a:1})};return react_default.a.createElement("div",{className:"react-colorful__saturation",style:o},react_default.a.createElement(index_module_m,{onMove:function(e){n({s:100*e.left,v:100-100*e.top})},onKey:function(e){n({s:index_module_s(t.s+100*e.left,0,100),v:index_module_s(t.v-100*e.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+index_module_b(t.s)+"%, Brightness "+index_module_b(t.v)+"%"},react_default.a.createElement(index_module_p,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:w(t)})))}),A=function(e,r){if(e===r)return!0;for(var t in e)if(e[t]!==r[t])return!1;return!0},S=function(e,r){return e.replace(/\\s/g,"")===r.replace(/\\s/g,"")};function T(e,t,l){var u=index_module_i(l),c=Object(react["useState"])(function(){return e.toHsva(t)}),s=c[0],f=c[1],v=Object(react["useRef"])({color:t,hsva:s});Object(react["useEffect"])(function(){if(!e.equal(t,v.current.color)){var r=e.toHsva(t);v.current={hsva:r,color:t},f(r)}},[t,e]),Object(react["useEffect"])(function(){var r;A(s,v.current.hsva)||e.equal(r=e.fromHsva(s),v.current.color)||(v.current={hsva:s,color:r},u(r))},[s,e,u]);var d=Object(react["useCallback"])(function(e){f(function(r){return Object.assign({},r,e)})},[]);return[s,d]}var F,P="undefined"!=typeof window?react["useLayoutEffect"]:react["useEffect"],X=function(){return F||( true?__webpack_require__.nc:undefined)},Y=function(e){F=e},R=new Map,V=function(e){P(function(){var r=e.current?e.current.ownerDocument:document;if(void 0!==r&&!R.has(r)){var t=r.createElement("style");t.innerHTML=\'.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url(\\\'data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>\\\')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}\',R.set(r,t);var n=X();n&&t.setAttribute("nonce",n),r.head.appendChild(t)}},[])},$=function(t){var n=t.className,o=t.colorModel,a=t.color,l=void 0===a?o.defaultColor:a,i=t.onChange,s=index_module_c(t,["className","colorModel","color","onChange"]),f=Object(react["useRef"])(null);V(f);var v=T(o,l,i),d=v[0],h=v[1],m=index_module_g(["react-colorful",n]);return react_default.a.createElement("div",index_module_u({},s,{ref:f,className:m}),react_default.a.createElement(L,{hsva:d,onChange:h}),react_default.a.createElement(K,{hue:d.h,onChange:h,className:"react-colorful__last-control"}))},G={defaultColor:"000",toHsva:function(e){return B(index_module_x(e))},fromHsva:function(e){return t=(r=q(e)).g,n=r.b,"#"+z(r.r)+z(t)+z(n);var r,t,n},equal:function(e,r){return e.toLowerCase()===r.toLowerCase()||A(index_module_x(e),index_module_x(r))}},J=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:G}))},Q=function(r){var t=r.className,n=r.hsva,o=r.onChange,a={backgroundImage:"linear-gradient(90deg, "+y(Object.assign({},n,{a:0}))+", "+y(Object.assign({},n,{a:1}))+")"},l=index_module_g(["react-colorful__alpha",t]);return react_default.a.createElement("div",{className:l},react_default.a.createElement("div",{className:"react-colorful__alpha-gradient",style:a}),react_default.a.createElement(index_module_m,{onMove:function(e){o({a:e.left})},onKey:function(e){o({a:index_module_s(n.a+e.left)})},"aria-label":"Alpha","aria-valuetext":index_module_b(100*n.a)+"%"},react_default.a.createElement(index_module_p,{className:"react-colorful__alpha-pointer",left:n.a,color:y(n)})))},U=function(t){var n=t.className,o=t.colorModel,a=t.color,l=void 0===a?o.defaultColor:a,i=t.onChange,s=index_module_c(t,["className","colorModel","color","onChange"]),f=Object(react["useRef"])(null);V(f);var v=T(o,l,i),d=v[0],h=v[1],m=index_module_g(["react-colorful",n]);return react_default.a.createElement("div",index_module_u({},s,{ref:f,className:m}),react_default.a.createElement(L,{hsva:d,onChange:h}),react_default.a.createElement(K,{hue:d.h,onChange:h}),react_default.a.createElement(Q,{hsva:d,onChange:h,className:"react-colorful__last-control"}))},W={defaultColor:{h:0,s:0,l:0,a:1},toHsva:M,fromHsva:N,equal:A},Z=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:W}))},ee={defaultColor:"hsla(0, 0%, 0%, 1)",toHsva:index_module_E,fromHsva:y,equal:S},re=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:ee}))},te={defaultColor:{h:0,s:0,l:0},toHsva:function(e){return M({h:e.h,s:e.s,l:e.l,a:1})},fromHsva:function(e){return{h:(r=N(e)).h,s:r.s,l:r.l};var r},equal:A},ne=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:te}))},oe={defaultColor:"hsl(0, 0%, 0%)",toHsva:index_module_H,fromHsva:w,equal:S},ae=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:oe}))},le={defaultColor:{h:0,s:0,v:0,a:1},toHsva:function(e){return e},fromHsva:D,equal:A},ue=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:le}))},ce={defaultColor:"hsva(0, 0%, 0%, 1)",toHsva:k,fromHsva:function(e){var r=D(e);return"hsva("+r.h+", "+r.s+"%, "+r.v+"%, "+r.a+")"},equal:S},ie=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:ce}))},se={defaultColor:{h:0,s:0,v:0},toHsva:function(e){return{h:e.h,s:e.s,v:e.v,a:1}},fromHsva:function(e){var r=D(e);return{h:r.h,s:r.s,v:r.v}},equal:A},fe=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:se}))},ve={defaultColor:"hsv(0, 0%, 0%)",toHsva:O,fromHsva:function(e){var r=D(e);return"hsv("+r.h+", "+r.s+"%, "+r.v+"%)"},equal:S},de=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:ve}))},he={defaultColor:{r:0,g:0,b:0,a:1},toHsva:B,fromHsva:q,equal:A},me=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:he}))},ge={defaultColor:"rgba(0, 0, 0, 1)",toHsva:I,fromHsva:function(e){var r=q(e);return"rgba("+r.r+", "+r.g+", "+r.b+", "+r.a+")"},equal:S},pe=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:ge}))},be={defaultColor:{r:0,g:0,b:0},toHsva:function(e){return B({r:e.r,g:e.g,b:e.b,a:1})},fromHsva:function(e){return{r:(r=q(e)).r,g:r.g,b:r.b};var r},equal:A},_e=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:be}))},xe={defaultColor:"rgb(0, 0, 0)",toHsva:j,fromHsva:function(e){var r=q(e);return"rgb("+r.r+", "+r.g+", "+r.b+")"},equal:S},Ce=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:xe}))},Ee=/^#?([0-9A-F]{3,8})$/i,He=function(r){var t=r.color,l=void 0===t?"":t,s=r.onChange,f=r.onBlur,v=r.escape,d=r.validate,h=r.format,m=r.process,g=index_module_c(r,["color","onChange","onBlur","escape","validate","format","process"]),p=Object(react["useState"])(function(){return v(l)}),b=p[0],_=p[1],x=index_module_i(s),C=index_module_i(f),E=Object(react["useCallback"])(function(e){var r=v(e.target.value);_(r),d(r)&&x(m?m(r):r)},[v,m,d,x]),H=Object(react["useCallback"])(function(e){d(e.target.value)||_(v(l)),C(e)},[l,v,d,C]);return Object(react["useEffect"])(function(){_(v(l))},[l,v]),react_default.a.createElement("input",index_module_u({},g,{value:h?h(b):b,spellCheck:"false",onChange:E,onBlur:H}))},Me=function(e){return"#"+e},Ne=function(r){var t=r.prefixed,n=r.alpha,o=index_module_c(r,["prefixed","alpha"]),l=Object(react["useCallback"])(function(e){return e.replace(/([^0-9A-F]+)/gi,"").substr(0,n?8:6)},[n]),i=Object(react["useCallback"])(function(e){return function(e,r){var t=Ee.exec(e),n=t?t[1].length:0;return 3===n||6===n||!!r&&4===n||!!r&&8===n}(e,n)},[n]);return react_default.a.createElement(He,index_module_u({},o,{escape:l,format:t?Me:void 0,process:Me,validate:i}))};\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/color-convert/index.js\nvar color_convert = __webpack_require__(1081);\nvar color_convert_default = /*#__PURE__*/__webpack_require__.n(color_convert);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/lodash/throttle.js\nvar throttle = __webpack_require__(1084);\nvar throttle_default = /*#__PURE__*/__webpack_require__.n(throttle);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/theming/dist/esm/index.js\nvar esm = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/tooltip/TooltipNote.js\nvar TooltipNote = __webpack_require__(576);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/tooltip/lazy-WithTooltip.js\nvar lazy_WithTooltip = __webpack_require__(218);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/form/index.js + 2 modules\nvar esm_form = __webpack_require__(78);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/icon/icon.js + 2 modules\nvar icon = __webpack_require__(66);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/controls/helpers.js\nvar helpers = __webpack_require__(65);\n\n// CONCATENATED MODULE: ./node_modules/@storybook/components/dist/esm/controls/Color.js\n\n\n\n\n\n\n\n\n\n\nvar _ColorPicker, _fallbackColor;\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Wrapper = esm["styled"].div({\n position: \'relative\',\n maxWidth: 250\n});\nvar PickerTooltip = Object(esm["styled"])(lazy_WithTooltip["a" /* WithTooltip */])({\n position: \'absolute\',\n zIndex: 1,\n top: 4,\n left: 4\n});\nvar TooltipContent = esm["styled"].div({\n width: 200,\n margin: 5,\n \'.react-colorful__saturation\': {\n borderRadius: \'4px 4px 0 0\'\n },\n \'.react-colorful__hue\': {\n boxShadow: \'inset 0 0 0 1px rgb(0 0 0 / 5%)\'\n },\n \'.react-colorful__last-control\': {\n borderRadius: \'0 0 4px 4px\'\n }\n});\nvar Note = Object(esm["styled"])(TooltipNote["a" /* TooltipNote */])(function (_ref) {\n var theme = _ref.theme;\n return {\n fontFamily: theme.typography.fonts.base\n };\n});\nvar Swatches = esm["styled"].div({\n display: \'grid\',\n gridTemplateColumns: \'repeat(9, 16px)\',\n gap: 6,\n padding: 3,\n marginTop: 5,\n width: 200\n});\nvar SwatchColor = esm["styled"].div(function (_ref2) {\n var theme = _ref2.theme,\n active = _ref2.active;\n return {\n width: 16,\n height: 16,\n boxShadow: active ? "".concat(theme.appBorderColor, " 0 0 0 1px inset, ").concat(theme.color.mediumdark, "50 0 0 0 4px") : "".concat(theme.appBorderColor, " 0 0 0 1px inset"),\n borderRadius: theme.appBorderRadius\n };\n});\nvar swatchBackground = "url(\'data:image/svg+xml;charset=utf-8,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"16\\" height=\\"16\\" fill-opacity=\\".05\\"><path d=\\"M8 0h8v8H8zM0 8h8v8H0z\\"/></svg>\')";\n\nvar Color_Swatch = function Swatch(_ref3) {\n var value = _ref3.value,\n active = _ref3.active,\n onClick = _ref3.onClick,\n style = _ref3.style,\n props = _objectWithoutProperties(_ref3, ["value", "active", "onClick", "style"]);\n\n var backgroundImage = "linear-gradient(".concat(value, ", ").concat(value, "), ").concat(swatchBackground, ", linear-gradient(#fff, #fff)");\n return /*#__PURE__*/react_default.a.createElement(SwatchColor, _extends({}, props, {\n active: active,\n onClick: onClick,\n style: Object.assign({}, style, {\n backgroundImage: backgroundImage\n })\n }));\n};\n\nColor_Swatch.displayName = "Swatch";\nvar Input = Object(esm["styled"])(esm_form["a" /* Form */].Input)(function (_ref4) {\n var theme = _ref4.theme;\n return {\n width: \'100%\',\n paddingLeft: 30,\n paddingRight: 30,\n boxSizing: \'border-box\',\n fontFamily: theme.typography.fonts.base\n };\n});\nvar ToggleIcon = Object(esm["styled"])(icon["a" /* Icons */])(function (_ref5) {\n var theme = _ref5.theme;\n return {\n position: \'absolute\',\n zIndex: 1,\n top: 6,\n right: 7,\n width: 20,\n height: 20,\n padding: 4,\n boxSizing: \'border-box\',\n cursor: \'pointer\',\n color: theme.input.color\n };\n});\nvar ColorSpace;\n\n(function (ColorSpace) {\n ColorSpace["RGB"] = "rgb";\n ColorSpace["HSL"] = "hsl";\n ColorSpace["HEX"] = "hex";\n})(ColorSpace || (ColorSpace = {}));\n\nvar COLOR_SPACES = Object.values(ColorSpace);\nvar COLOR_REGEXP = /\\(([0-9]+),\\s*([0-9]+)%?,\\s*([0-9]+)%?,?\\s*([0-9.]+)?\\)/;\nvar RGB_REGEXP = /^\\s*rgba?\\(([0-9]+),\\s*([0-9]+),\\s*([0-9]+),?\\s*([0-9.]+)?\\)\\s*$/i;\nvar HSL_REGEXP = /^\\s*hsla?\\(([0-9]+),\\s*([0-9]+)%,\\s*([0-9]+)%,?\\s*([0-9.]+)?\\)\\s*$/i;\nvar HEX_REGEXP = /^\\s*#?([0-9a-f]{3}|[0-9a-f]{6})\\s*$/i;\nvar SHORTHEX_REGEXP = /^\\s*#?([0-9a-f]{3})\\s*$/i;\nvar ColorPicker = (_ColorPicker = {}, _defineProperty(_ColorPicker, ColorSpace.HEX, J), _defineProperty(_ColorPicker, ColorSpace.RGB, pe), _defineProperty(_ColorPicker, ColorSpace.HSL, re), _ColorPicker);\nvar fallbackColor = (_fallbackColor = {}, _defineProperty(_fallbackColor, ColorSpace.HEX, \'transparent\'), _defineProperty(_fallbackColor, ColorSpace.RGB, \'rgba(0, 0, 0, 0)\'), _defineProperty(_fallbackColor, ColorSpace.HSL, \'hsla(0, 0%, 0%, 0)\'), _fallbackColor);\n\nvar stringToArgs = function stringToArgs(value) {\n var match = value === null || value === void 0 ? void 0 : value.match(COLOR_REGEXP);\n if (!match) return [0, 0, 0, 1];\n\n var _match = _slicedToArray(match, 5),\n x = _match[1],\n y = _match[2],\n z = _match[3],\n _match$ = _match[4],\n a = _match$ === void 0 ? 1 : _match$;\n\n return [x, y, z, a].map(Number);\n};\n\nvar Color_parseValue = function parseValue(value) {\n var _ref12;\n\n if (!value) return undefined;\n var valid = true;\n\n if (RGB_REGEXP.test(value)) {\n var _ref8;\n\n var _stringToArgs = stringToArgs(value),\n _stringToArgs2 = _slicedToArray(_stringToArgs, 4),\n r = _stringToArgs2[0],\n g = _stringToArgs2[1],\n b = _stringToArgs2[2],\n a = _stringToArgs2[3];\n\n var _ref6 = color_convert_default.a.rgb.hsl([r, g, b]) || [0, 0, 0],\n _ref7 = _slicedToArray(_ref6, 3),\n h = _ref7[0],\n s = _ref7[1],\n l = _ref7[2];\n\n return _ref8 = {\n valid: valid,\n value: value,\n keyword: color_convert_default.a.rgb.keyword([r, g, b]),\n colorSpace: ColorSpace.RGB\n }, _defineProperty(_ref8, ColorSpace.RGB, value), _defineProperty(_ref8, ColorSpace.HSL, "hsla(".concat(h, ", ").concat(s, "%, ").concat(l, "%, ").concat(a, ")")), _defineProperty(_ref8, ColorSpace.HEX, "#".concat(color_convert_default.a.rgb.hex([r, g, b]).toLowerCase())), _ref8;\n }\n\n if (HSL_REGEXP.test(value)) {\n var _ref11;\n\n var _stringToArgs3 = stringToArgs(value),\n _stringToArgs4 = _slicedToArray(_stringToArgs3, 4),\n _h = _stringToArgs4[0],\n _s2 = _stringToArgs4[1],\n _l = _stringToArgs4[2],\n _a = _stringToArgs4[3];\n\n var _ref9 = color_convert_default.a.hsl.rgb([_h, _s2, _l]) || [0, 0, 0],\n _ref10 = _slicedToArray(_ref9, 3),\n _r = _ref10[0],\n _g = _ref10[1],\n _b = _ref10[2];\n\n return _ref11 = {\n valid: valid,\n value: value,\n keyword: color_convert_default.a.hsl.keyword([_h, _s2, _l]),\n colorSpace: ColorSpace.HSL\n }, _defineProperty(_ref11, ColorSpace.RGB, "rgba(".concat(_r, ", ").concat(_g, ", ").concat(_b, ", ").concat(_a, ")")), _defineProperty(_ref11, ColorSpace.HSL, value), _defineProperty(_ref11, ColorSpace.HEX, "#".concat(color_convert_default.a.hsl.hex([_h, _s2, _l]).toLowerCase())), _ref11;\n }\n\n var plain = value.replace(\'#\', \'\');\n var rgb = color_convert_default.a.keyword.rgb(plain) || color_convert_default.a.hex.rgb(plain);\n var hsl = color_convert_default.a.rgb.hsl(rgb);\n var mapped = value;\n if (/[^#a-f0-9]/i.test(value)) mapped = plain;else if (HEX_REGEXP.test(value)) mapped = "#".concat(plain);\n\n if (mapped.startsWith(\'#\')) {\n valid = HEX_REGEXP.test(mapped);\n } else {\n try {\n color_convert_default.a.keyword.hex(mapped);\n } catch (e) {\n valid = false;\n }\n }\n\n return _ref12 = {\n valid: valid,\n value: mapped,\n keyword: color_convert_default.a.rgb.keyword(rgb),\n colorSpace: ColorSpace.HEX\n }, _defineProperty(_ref12, ColorSpace.RGB, "rgba(".concat(rgb[0], ", ").concat(rgb[1], ", ").concat(rgb[2], ", 1)")), _defineProperty(_ref12, ColorSpace.HSL, "hsla(".concat(hsl[0], ", ").concat(hsl[1], "%, ").concat(hsl[2], "%, 1)")), _defineProperty(_ref12, ColorSpace.HEX, mapped), _ref12;\n};\n\nvar Color_getRealValue = function getRealValue(value, color, colorSpace) {\n if (!value || !(color !== null && color !== void 0 && color.valid)) return fallbackColor[colorSpace];\n if (colorSpace !== ColorSpace.HEX) return (color === null || color === void 0 ? void 0 : color[colorSpace]) || fallbackColor[colorSpace];\n\n if (!color.hex.startsWith(\'#\')) {\n try {\n return "#".concat(color_convert_default.a.keyword.hex(color.hex));\n } catch (e) {\n return fallbackColor.hex;\n }\n }\n\n var short = color.hex.match(SHORTHEX_REGEXP);\n if (!short) return HEX_REGEXP.test(color.hex) ? color.hex : fallbackColor.hex;\n\n var _short$1$split = short[1].split(\'\'),\n _short$1$split2 = _slicedToArray(_short$1$split, 3),\n r = _short$1$split2[0],\n g = _short$1$split2[1],\n b = _short$1$split2[2];\n\n return "#".concat(r).concat(r).concat(g).concat(g).concat(b).concat(b);\n};\n\nvar Color_useColorInput = function useColorInput(initialValue, onChange) {\n var _useState = Object(react["useState"])(initialValue || \'\'),\n _useState2 = _slicedToArray(_useState, 2),\n value = _useState2[0],\n setValue = _useState2[1];\n\n var _useState3 = Object(react["useState"])(function () {\n return Color_parseValue(value);\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n color = _useState4[0],\n setColor = _useState4[1];\n\n var _useState5 = Object(react["useState"])((color === null || color === void 0 ? void 0 : color.colorSpace) || ColorSpace.HEX),\n _useState6 = _slicedToArray(_useState5, 2),\n colorSpace = _useState6[0],\n setColorSpace = _useState6[1]; // Reset state when initialValue becomes undefined (when resetting controls)\n\n\n Object(react["useEffect"])(function () {\n if (initialValue !== undefined) return;\n setValue(\'\');\n setColor(undefined);\n setColorSpace(ColorSpace.HEX);\n }, [initialValue]);\n var realValue = Object(react["useMemo"])(function () {\n return Color_getRealValue(value, color, colorSpace).toLowerCase();\n }, [value, color, colorSpace]);\n var updateValue = Object(react["useCallback"])(function (update) {\n var parsed = Color_parseValue(update);\n setValue((parsed === null || parsed === void 0 ? void 0 : parsed.value) || update || \'\');\n if (!parsed) return;\n setColor(parsed);\n setColorSpace(parsed.colorSpace);\n onChange(parsed.value);\n }, [onChange]);\n var cycleColorSpace = Object(react["useCallback"])(function () {\n var next = COLOR_SPACES.indexOf(colorSpace) + 1;\n if (next >= COLOR_SPACES.length) next = 0;\n setColorSpace(COLOR_SPACES[next]);\n var update = (color === null || color === void 0 ? void 0 : color[COLOR_SPACES[next]]) || \'\';\n setValue(update);\n onChange(update);\n }, [color, colorSpace, onChange]);\n return {\n value: value,\n realValue: realValue,\n updateValue: updateValue,\n color: color,\n colorSpace: colorSpace,\n cycleColorSpace: cycleColorSpace\n };\n};\n\nvar id = function id(value) {\n return value.replace(/\\s*/, \'\').toLowerCase();\n};\n\nvar Color_usePresets = function usePresets(presetColors, currentColor, colorSpace) {\n var _useState7 = Object(react["useState"])(currentColor !== null && currentColor !== void 0 && currentColor.valid ? [currentColor] : []),\n _useState8 = _slicedToArray(_useState7, 2),\n selectedColors = _useState8[0],\n setSelectedColors = _useState8[1]; // Reset state when currentColor becomes undefined (when resetting controls)\n\n\n Object(react["useEffect"])(function () {\n if (currentColor !== undefined) return;\n setSelectedColors([]);\n }, [currentColor]);\n var presets = Object(react["useMemo"])(function () {\n var initialPresets = (presetColors || []).map(function (preset) {\n if (typeof preset === \'string\') return Color_parseValue(preset);\n if (preset.title) return Object.assign({}, Color_parseValue(preset.color), {\n keyword: preset.title\n });\n return Color_parseValue(preset.color);\n });\n return initialPresets.concat(selectedColors).filter(Boolean).slice(-27);\n }, [presetColors, selectedColors]);\n var addPreset = Object(react["useCallback"])(function (color) {\n if (!(color !== null && color !== void 0 && color.valid)) return;\n if (presets.some(function (preset) {\n return id(preset[colorSpace]) === id(color[colorSpace]);\n })) return;\n setSelectedColors(function (arr) {\n return arr.concat(color);\n });\n }, [colorSpace, presets]);\n return {\n presets: presets,\n addPreset: addPreset\n };\n};\n\nvar Color_ColorControl = function ColorControl(_ref13) {\n var name = _ref13.name,\n initialValue = _ref13.value,\n onChange = _ref13.onChange,\n onFocus = _ref13.onFocus,\n onBlur = _ref13.onBlur,\n presetColors = _ref13.presetColors,\n startOpen = _ref13.startOpen;\n\n var _useColorInput = Color_useColorInput(initialValue, throttle_default()(onChange, 200)),\n value = _useColorInput.value,\n realValue = _useColorInput.realValue,\n updateValue = _useColorInput.updateValue,\n color = _useColorInput.color,\n colorSpace = _useColorInput.colorSpace,\n cycleColorSpace = _useColorInput.cycleColorSpace;\n\n var _usePresets = Color_usePresets(presetColors, color, colorSpace),\n presets = _usePresets.presets,\n addPreset = _usePresets.addPreset;\n\n var Picker = ColorPicker[colorSpace];\n return /*#__PURE__*/react_default.a.createElement(Wrapper, null, /*#__PURE__*/react_default.a.createElement(PickerTooltip, {\n trigger: "click",\n startOpen: startOpen,\n closeOnClick: true,\n onVisibilityChange: function onVisibilityChange() {\n return addPreset(color);\n },\n tooltip: /*#__PURE__*/react_default.a.createElement(TooltipContent, null, /*#__PURE__*/react_default.a.createElement(Picker, {\n color: realValue === \'transparent\' ? \'#000000\' : realValue,\n onChange: updateValue,\n onFocus: onFocus,\n onBlur: onBlur\n }), presets.length > 0 && /*#__PURE__*/react_default.a.createElement(Swatches, null, presets.map(function (preset, index) {\n return /*#__PURE__*/react_default.a.createElement(lazy_WithTooltip["a" /* WithTooltip */] // eslint-disable-next-line react/no-array-index-key\n , {\n key: "".concat(preset.value, "-").concat(index),\n hasChrome: false,\n tooltip: /*#__PURE__*/react_default.a.createElement(Note, {\n note: preset.keyword || preset.value\n })\n }, /*#__PURE__*/react_default.a.createElement(Color_Swatch, {\n value: preset[colorSpace],\n active: color && id(preset[colorSpace]) === id(color[colorSpace]),\n onClick: function onClick() {\n return updateValue(preset.value);\n }\n }));\n })))\n }, /*#__PURE__*/react_default.a.createElement(Color_Swatch, {\n value: realValue,\n style: {\n margin: 4\n }\n })), /*#__PURE__*/react_default.a.createElement(Input, {\n id: Object(helpers["a" /* getControlId */])(name),\n value: value,\n onChange: function onChange(e) {\n return updateValue(e.target.value);\n },\n onFocus: function onFocus(e) {\n return e.target.select();\n },\n placeholder: "Choose color..."\n }), /*#__PURE__*/react_default.a.createElement(ToggleIcon, {\n icon: "markup",\n onClick: cycleColorSpace\n }));\n};\nColor_ColorControl.displayName = "ColorControl";\n/* harmony default export */ var Color = __webpack_exports__["default"] = (Color_ColorControl);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2sudHM/MmM3YyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL2NsYW1wLnRzPzI3MTkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9JbnRlcmFjdGl2ZS50c3g/MjFkOSIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL2Zvcm1hdC50cz82MWIxIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9jb21tb24vUG9pbnRlci50c3g/ODM1YyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL3JvdW5kLnRzPzU5ZDkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy91dGlscy9jb252ZXJ0LnRzP2NiMzkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9IdWUudHN4P2NlNzEiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9TYXR1cmF0aW9uLnRzeD8wNGVhIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvdXRpbHMvY29tcGFyZS50cz9lZjM1Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvaG9va3MvdXNlQ29sb3JNYW5pcHVsYXRpb24udHM/YzM4YiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL25vbmNlLnRzPzU5MjMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9ob29rcy91c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0LnRzP2I5NDkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9ob29rcy91c2VTdHlsZVNoZWV0LnRzPzNlMzciLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9Db2xvclBpY2tlci50c3g/YjhjOSIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSGV4Q29sb3JQaWNrZXIudHN4PzM1ZmIiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9BbHBoYS50c3g/NWQ0OCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvY29tbW9uL0FscGhhQ29sb3JQaWNrZXIudHN4P2YzZjEiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL0hzbGFDb2xvclBpY2tlci50c3g/MzA1MCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHNsYVN0cmluZ0NvbG9yUGlja2VyLnRzeD9mYTEwIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9Ic2xDb2xvclBpY2tlci50c3g/Mzg4NiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHNsU3RyaW5nQ29sb3JQaWNrZXIudHN4PzI0NWMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL0hzdmFDb2xvclBpY2tlci50c3g/N2RmZiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHN2YVN0cmluZ0NvbG9yUGlja2VyLnRzeD9kYTQ5Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9Ic3ZDb2xvclBpY2tlci50c3g/OTJmYyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHN2U3RyaW5nQ29sb3JQaWNrZXIudHN4P2IyOTAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL1JnYmFDb2xvclBpY2tlci50c3g/ZmQzNiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvUmdiYVN0cmluZ0NvbG9yUGlja2VyLnRzeD8xNzJkIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9SZ2JDb2xvclBpY2tlci50c3g/NDg2OCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvUmdiU3RyaW5nQ29sb3JQaWNrZXIudHN4PzQ5YmUiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy91dGlscy92YWxpZGF0ZS50cz80OGM1Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9jb21tb24vQ29sb3JJbnB1dC50c3g/NmQ2MiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSGV4Q29sb3JJbnB1dC50c3g/ZmY0MCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHN0b3J5Ym9vay9jb21wb25lbnRzL2Rpc3QvZXNtL2NvbnRyb2xzL0NvbG9yLmpzPzk3MmMiXSwibmFtZXMiOlsidXNlRXZlbnRDYWxsYmFjayIsImhhbmRsZXIiLCJjYWxsYmFja1JlZiIsInVzZVJlZiIsImZuIiwidmFsdWUiLCJjdXJyZW50IiwiY2xhbXAiLCJudW1iZXIiLCJtaW4iLCJtYXgiLCJpc1RvdWNoIiwiZXZlbnQiLCJnZXRQYXJlbnRXaW5kb3ciLCJub2RlIiwib3duZXJEb2N1bWVudCIsImRlZmF1bHRWaWV3Iiwic2VsZiIsImdldFJlbGF0aXZlUG9zaXRpb24iLCJ0b3VjaElkIiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInBvaW50ZXIiLCJ0b3VjaGVzIiwiaSIsImxlbmd0aCIsImlkZW50aWZpZXIiLCJnZXRUb3VjaFBvaW50IiwibGVmdCIsInBhZ2VYIiwicGFnZVhPZmZzZXQiLCJ3aWR0aCIsInRvcCIsInBhZ2VZIiwicGFnZVlPZmZzZXQiLCJoZWlnaHQiLCJwcmV2ZW50RGVmYXVsdE1vdmUiLCJwcmV2ZW50RGVmYXVsdCIsIkludGVyYWN0aXZlIiwiUmVhY3QiLCJtZW1vIiwib25Nb3ZlIiwib25LZXkiLCJyZXN0IiwiY29udGFpbmVyIiwib25Nb3ZlQ2FsbGJhY2siLCJvbktleUNhbGxiYWNrIiwiaGFzVG91Y2giLCJ1c2VNZW1vIiwiaGFuZGxlTW92ZSIsImJ1dHRvbnMiLCJ0b2dnbGVEb2N1bWVudEV2ZW50cyIsImhhbmRsZU1vdmVFbmQiLCJzdGF0ZSIsInRvdWNoIiwicGFyZW50V2luZG93IiwidG9nZ2xlRXZlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5hdGl2ZUV2ZW50IiwiZWwiLCJpc0ludmFsaWQiLCJjaGFuZ2VkVG91Y2hlcyIsImZvY3VzIiwia2V5Q29kZSIsIndoaWNoIiwiaGFuZGxlTW92ZVN0YXJ0IiwiaGFuZGxlS2V5RG93biIsInVzZUVmZmVjdCIsIm9uVG91Y2hTdGFydCIsIm9uTW91c2VEb3duIiwiY2xhc3NOYW1lIiwicmVmIiwib25LZXlEb3duIiwidGFiSW5kZXgiLCJyb2xlIiwiZm9ybWF0Q2xhc3NOYW1lIiwibmFtZXMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsIlBvaW50ZXIiLCJjb2xvciIsIm5vZGVDbGFzc05hbWUiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsInJvdW5kIiwiZGlnaXRzIiwiYmFzZSIsIk1hdGgiLCJwb3ciLCJhbmdsZVVuaXRzIiwiZ3JhZCIsInR1cm4iLCJyYWQiLCJQSSIsImhleFRvUmdiYSIsImhleCIsInN1YnN0ciIsInIiLCJwYXJzZUludCIsImciLCJiIiwiYSIsInBhcnNlSHVlIiwidW5pdCIsIk51bWJlciIsImhzbGFTdHJpbmdUb0hzdmEiLCJoc2xTdHJpbmciLCJtYXRjaCIsImV4ZWMiLCJoc2xhVG9Ic3ZhIiwiaCIsInMiLCJsIiwidW5kZWZpbmVkIiwidiIsImhzbFN0cmluZ1RvSHN2YSIsImhzdmFUb0hzbGEiLCJoaCIsImhzdmFUb0hzbFN0cmluZyIsImhzdmEiLCJoc3ZhVG9Ic2xhU3RyaW5nIiwiaHN2YVRvUmdiYSIsImZsb29yIiwiYyIsImQiLCJtb2R1bGUiLCJoc3ZhU3RyaW5nVG9Ic3ZhIiwiaHN2U3RyaW5nIiwicm91bmRIc3ZhIiwiaHN2U3RyaW5nVG9Ic3ZhIiwicmdiYVN0cmluZ1RvSHN2YSIsInJnYmFTdHJpbmciLCJyZ2JhVG9Ic3ZhIiwicmdiU3RyaW5nVG9Ic3ZhIiwiZm9ybWF0IiwidG9TdHJpbmciLCJkZWx0YSIsIkh1ZSIsImh1ZSIsIm9uQ2hhbmdlIiwiaW50ZXJhY3Rpb24iLCJvZmZzZXQiLCJhcmlhLWxhYmVsIiwiYXJpYS12YWx1ZXRleHQiLCJTYXR1cmF0aW9uIiwiY29udGFpbmVyU3R5bGUiLCJlcXVhbENvbG9yT2JqZWN0cyIsImZpcnN0Iiwic2Vjb25kIiwicHJvcCIsImVxdWFsQ29sb3JTdHJpbmciLCJyZXBsYWNlIiwidXNlQ29sb3JNYW5pcHVsYXRpb24iLCJjb2xvck1vZGVsIiwib25DaGFuZ2VDYWxsYmFjayIsInVzZVN0YXRlIiwidG9Ic3ZhIiwidXBkYXRlSHN2YSIsImNhY2hlIiwiZXF1YWwiLCJuZXdIc3ZhIiwibmV3Q29sb3IiLCJmcm9tSHN2YSIsImhhbmRsZUNoYW5nZSIsInVzZUNhbGxiYWNrIiwicGFyYW1zIiwiT2JqZWN0IiwiYXNzaWduIiwibm9uY2UiLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0Iiwid2luZG93IiwidXNlTGF5b3V0RWZmZWN0IiwiZ2V0Tm9uY2UiLCJfX3dlYnBhY2tfbm9uY2VfXyIsInNldE5vbmNlIiwiaGFzaCIsInN0eWxlRWxlbWVudE1hcCIsIk1hcCIsInVzZVN0eWxlU2hlZXQiLCJub2RlUmVmIiwicGFyZW50RG9jdW1lbnQiLCJkb2N1bWVudCIsImhhcyIsInN0eWxlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJzZXQiLCJzZXRBdHRyaWJ1dGUiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJDb2xvclBpY2tlciIsImRlZmF1bHRDb2xvciIsInRvTG93ZXJDYXNlIiwiSGV4Q29sb3JQaWNrZXIiLCJwcm9wcyIsIkFscGhhIiwiZ3JhZGllbnRTdHlsZSIsImJhY2tncm91bmRJbWFnZSIsIkFscGhhQ29sb3JQaWNrZXIiLCJIc2xhQ29sb3JQaWNrZXIiLCJIc2xhU3RyaW5nQ29sb3JQaWNrZXIiLCJIc2xDb2xvclBpY2tlciIsIkhzbFN0cmluZ0NvbG9yUGlja2VyIiwiSHN2YUNvbG9yUGlja2VyIiwiSHN2YVN0cmluZ0NvbG9yUGlja2VyIiwiSHN2Q29sb3JQaWNrZXIiLCJIc3ZTdHJpbmdDb2xvclBpY2tlciIsIlJnYmFDb2xvclBpY2tlciIsIlJnYmFTdHJpbmdDb2xvclBpY2tlciIsIlJnYkNvbG9yUGlja2VyIiwiUmdiU3RyaW5nQ29sb3JQaWNrZXIiLCJtYXRjaGVyIiwiQ29sb3JJbnB1dCIsIm9uQmx1ciIsImVzY2FwZSIsInZhbGlkYXRlIiwicHJvY2VzcyIsInNldFZhbHVlIiwib25CbHVyQ2FsbGJhY2siLCJlIiwiaW5wdXRWYWx1ZSIsInRhcmdldCIsImhhbmRsZUJsdXIiLCJzcGVsbENoZWNrIiwicHJlZml4IiwiSGV4Q29sb3JJbnB1dCIsInByZWZpeGVkIiwiYWxwaGEiLCJ2YWxpZEhleCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bVlBR2dCQSxlQUFvQkMsR0FDbEMsSUFBTUMsRUFBY0Msd0JBQU9GLEdBQ3JCRyxFQUFLRCx3QkFBTyxTQUFDRSxHQUNqQkgsRUFBWUksU0FBV0osRUFBWUksUUFBUUQsS0FJN0MsT0FGQUgsRUFBWUksUUFBVUwsRUFFZkcsRUFBR0UsWUNQQ0MsZUFBUSxTQUFDQyxFQUFnQkMsRUFBU0MsR0FDN0MsZ0JBRG9DRCxNQUFNLFlBQUdDLE1BQU0sR0FDNUNGLEVBQVNFLEVBQU1BLEVBQU1GLEVBQVNDLEVBQU1BLEVBQU1ELEdDTzdDRyxlQUFVLFNBQUNDLFNBQXdELFlBQWFBLEdBV2hGQyxlQUFrQixTQUFDQyxHQUN2QixPQUFRQSxHQUFRQSxFQUFLQyxjQUFjQyxhQUFnQkMsTUFJL0NDLGVBQXNCLFNBQzFCSixFQUNBRixFQUNBTyxHQUVBLElBQU1DLEVBQU9OLEVBQUtPLHdCQUdaQyxFQUFVWCxlQUFRQyxHQXJCSixTQUFDVyxFQUFvQkosR0FDekMsSUFBSyxJQUFJSyxFQUFJLEVBQUdBLEVBQUlELEVBQVFFLE9BQVFELElBQ2xDLEdBQUlELEVBQVFDLEdBQUdFLGFBQWVQLEVBQVMsT0FBT0ksRUFBUUMsR0FFeEQsT0FBT0QsRUFBUSxHQWlCa0JJLENBQWNmLEVBQU1XLFFBQVNKLEdBQVlQLEVBRTFFLE1BQU8sQ0FDTGdCLEtBQU1yQixnQkFBT2UsRUFBUU8sT0FBU1QsRUFBS1EsS0FBT2YsZUFBZ0JDLEdBQU1nQixjQUFnQlYsRUFBS1csT0FDckZDLElBQUt6QixnQkFBT2UsRUFBUVcsT0FBU2IsRUFBS1ksSUFBTW5CLGVBQWdCQyxHQUFNb0Is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Q3ZCLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSCxrQkFBa0IsNEJBQVc7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU8sSUFBSSxrQkFBWTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsbUJBQWEsZUFBZSxrQkFBUTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGdCQUFVO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0IsZUFBSywyQ0FBMkMsZUFBSztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLDBCQUEwQixlQUFLLGtEQUFrRCxlQUFLO0FBQ3RGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxzQ0FBc0MsZUFBSztBQUNoRCwwQkFBMEIsZUFBSyxlQUFlLHVDQUFXO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixlQUFLO0FBQ25DO0FBQ0EsU0FBUztBQUNULE9BQU8sZUFBZSxlQUFLLGVBQWUsWUFBTTtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHLGVBQWUsZUFBSyxlQUFlLFlBQU07QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLGlCQUFpQixlQUFLO0FBQ3pCLFFBQVEsdUNBQVk7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHLGdCQUFnQixlQUFLO0FBQ3hCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxrQkFBWTtBQUNHLDZGQUFZIiwiZmlsZSI6IjEwMTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU2F2ZXMgaW5jb21pbmcgaGFuZGxlciB0byB0aGUgcmVmIGluIG9yZGVyIHRvIGF2b2lkIFwidXNlQ2FsbGJhY2sgaGVsbFwiXG5leHBvcnQgZnVuY3Rpb24gdXNlRXZlbnRDYWxsYmFjazxUPihoYW5kbGVyPzogKHZhbHVlOiBUKSA9PiB2b2lkKTogKHZhbHVlOiBUKSA9PiB2b2lkIHtcbiAgY29uc3QgY2FsbGJhY2tSZWYgPSB1c2VSZWYoaGFuZGxlcik7XG4gIGNvbnN0IGZuID0gdXNlUmVmKCh2YWx1ZTogVCkgPT4ge1xuICAgIGNhbGxiYWNrUmVmLmN1cnJlbnQgJiYgY2FsbGJhY2tSZWYuY3VycmVudCh2YWx1ZSk7XG4gIH0pO1xuICBjYWxsYmFja1JlZi5jdXJyZW50ID0gaGFuZGxlcjtcblxuICByZXR1cm4gZm4uY3VycmVudDtcbn1cbiIsIi8vIENsYW1wcyBhIHZhbHVlIGJldHdlZW4gYW4gdXBwZXIgYW5kIGxvd2VyIGJvdW5kLlxuLy8gV2UgdXNlIHRlcm5hcnkgb3BlcmF0b3JzIGJlY2F1c2UgaXQgbWFrZXMgdGhlIG1pbmlmaWVkIGNvZGVcbi8vIDIgdGltZXMgc2hvcnRlciB0aGVuIGBNYXRoLm1pbihNYXRoLm1heChhLGIpLGMpYFxuZXhwb3J0IGNvbnN0IGNsYW1wID0gKG51bWJlcjogbnVtYmVyLCBtaW4gPSAwLCBtYXggPSAxKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIG51bWJlciA+IG1heCA/IG1heCA6IG51bWJlciA8IG1pbiA/IG1pbiA6IG51bWJlcjtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VNZW1vLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VFdmVudENhbGxiYWNrXCI7XG5pbXBvcnQgeyBjbGFtcCB9IGZyb20gXCIuLi8uLi91dGlscy9jbGFtcFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aW9uIHtcbiAgbGVmdDogbnVtYmVyO1xuICB0b3A6IG51bWJlcjtcbn1cblxuLy8gQ2hlY2sgaWYgYW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBieSB0b3VjaFxuY29uc3QgaXNUb3VjaCA9IChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBldmVudCBpcyBUb3VjaEV2ZW50ID0+IFwidG91Y2hlc1wiIGluIGV2ZW50O1xuXG4vLyBGaW5kcyBhIHByb3BlciB0b3VjaCBwb2ludCBieSBpdHMgaWRlbnRpZmllclxuY29uc3QgZ2V0VG91Y2hQb2ludCA9ICh0b3VjaGVzOiBUb3VjaExpc3QsIHRvdWNoSWQ6IG51bGwgfCBudW1iZXIpOiBUb3VjaCA9PiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG91Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0b3VjaGVzW2ldLmlkZW50aWZpZXIgPT09IHRvdWNoSWQpIHJldHVybiB0b3VjaGVzW2ldO1xuICB9XG4gIHJldHVybiB0b3VjaGVzWzBdO1xufTtcblxuLy8gRmluZHMgdGhlIHByb3BlciB3aW5kb3cgb2JqZWN0IHRvIGZpeCBpZnJhbWUgZW1iZWRkaW5nIGlzc3Vlc1xuY29uc3QgZ2V0UGFyZW50V2luZG93ID0gKG5vZGU/OiBIVE1MRGl2RWxlbWVudCB8IG51bGwpOiBXaW5kb3cgPT4ge1xuICByZXR1cm4gKG5vZGUgJiYgbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCBzZWxmO1xufTtcblxuLy8gUmV0dXJucyBhIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSBwb2ludGVyIGluc2lkZSB0aGUgbm9kZSdzIGJvdW5kaW5nIGJveFxuY29uc3QgZ2V0UmVsYXRpdmVQb3NpdGlvbiA9IChcbiAgbm9kZTogSFRNTERpdkVsZW1lbnQsXG4gIGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCxcbiAgdG91Y2hJZDogbnVsbCB8IG51bWJlclxuKTogSW50ZXJhY3Rpb24gPT4ge1xuICBjb25zdCByZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAvLyBHZXQgdXNlcidzIHBvaW50ZXIgcG9zaXRpb24gZnJvbSBgdG91Y2hlc2AgYXJyYXkgaWYgaXQncyBhIGBUb3VjaEV2ZW50YFxuICBjb25zdCBwb2ludGVyID0gaXNUb3VjaChldmVudCkgPyBnZXRUb3VjaFBvaW50KGV2ZW50LnRvdWNoZXMsIHRvdWNoSWQpIDogKGV2ZW50IGFzIE1vdXNlRXZlbnQpO1xuXG4gIHJldHVybiB7XG4gICAgbGVmdDogY2xhbXAoKHBvaW50ZXIucGFnZVggLSAocmVjdC5sZWZ0ICsgZ2V0UGFyZW50V2luZG93KG5vZGUpLnBhZ2VYT2Zmc2V0KSkgLyByZWN0LndpZHRoKSxcbiAgICB0b3A6IGNsYW1wKChwb2ludGVyLnBhZ2VZIC0gKHJlY3QudG9wICsgZ2V0UGFyZW50V2luZG93KG5vZGUpLnBhZ2VZT2Zmc2V0KSkgLyByZWN0LmhlaWdodCksXG4gIH07XG59O1xuXG4vLyBCcm93c2VycyBpbnRyb2R1Y2VkIGFuIGludGVydmVudGlvbiwgbWFraW5nIHRvdWNoIGV2ZW50cyBwYXNzaXZlIGJ5IGRlZmF1bHQuXG4vLyBUaGlzIHdvcmthcm91bmQgcmVtb3ZlcyBgcHJldmVudERlZmF1bHRgIGNhbGwgZnJvbSB0aGUgdG91Y2ggaGFuZGxlcnMuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5NjUxXG5jb25zdCBwcmV2ZW50RGVmYXVsdE1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogdm9pZCA9PiB7XG4gICFpc1RvdWNoKGV2ZW50KSAmJiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xufTtcblxuLy8gUHJldmVudCBtb2JpbGUgYnJvd3NlcnMgZnJvbSBoYW5kbGluZyBtb3VzZSBldmVudHMgKGNvbmZsaWN0aW5nIHdpdGggdG91Y2ggb25lcykuXG4vLyBJZiB3ZSBkZXRlY3RlZCBhIHRvdWNoIGludGVyYWN0aW9uIGJlZm9yZSwgd2UgcHJlZmVyIHJlYWN0aW5nIHRvIHRvdWNoIGV2ZW50cyBvbmx5LlxuY29uc3QgaXNJbnZhbGlkID0gKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgaGFzVG91Y2g6IGJvb2xlYW4pOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGhhc1RvdWNoICYmICFpc1RvdWNoKGV2ZW50KTtcbn07XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIG9uTW92ZTogKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4gdm9pZDtcbiAgb25LZXk6IChvZmZzZXQ6IEludGVyYWN0aW9uKSA9PiB2b2lkO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5jb25zdCBJbnRlcmFjdGl2ZUJhc2UgPSAoeyBvbk1vdmUsIG9uS2V5LCAuLi5yZXN0IH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IGNvbnRhaW5lciA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG9uTW92ZUNhbGxiYWNrID0gdXNlRXZlbnRDYWxsYmFjazxJbnRlcmFjdGlvbj4ob25Nb3ZlKTtcbiAgY29uc3Qgb25LZXlDYWxsYmFjayA9IHVzZUV2ZW50Q2FsbGJhY2s8SW50ZXJhY3Rpb24+KG9uS2V5KTtcbiAgY29uc3QgdG91Y2hJZCA9IHVzZVJlZjxudWxsIHwgbnVtYmVyPihudWxsKTtcbiAgY29uc3QgaGFzVG91Y2ggPSB1c2VSZWYoZmFsc2UpO1xuXG4gIGNvbnN0IFtoYW5kbGVNb3ZlU3RhcnQsIGhhbmRsZUtleURvd24sIHRvZ2dsZURvY3VtZW50RXZlbnRzXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU1vdmVTdGFydCA9ICh7IG5hdGl2ZUV2ZW50IH06IFJlYWN0Lk1vdXNlRXZlbnQgfCBSZWFjdC5Ub3VjaEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGNvbnRhaW5lci5jdXJyZW50O1xuICAgICAgaWYgKCFlbCkgcmV0dXJuO1xuXG4gICAgICAvLyBQcmV2ZW50IHRleHQgc2VsZWN0aW9uXG4gICAgICBwcmV2ZW50RGVmYXVsdE1vdmUobmF0aXZlRXZlbnQpO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkKG5hdGl2ZUV2ZW50LCBoYXNUb3VjaC5jdXJyZW50KSB8fCAhZWwpIHJldHVybjtcblxuICAgICAgaWYgKGlzVG91Y2gobmF0aXZlRXZlbnQpKSB7XG4gICAgICAgIGhhc1RvdWNoLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBjb25zdCBjaGFuZ2VkVG91Y2hlcyA9IG5hdGl2ZUV2ZW50LmNoYW5nZWRUb3VjaGVzIHx8IFtdO1xuICAgICAgICBpZiAoY2hhbmdlZFRvdWNoZXMubGVuZ3RoKSB0b3VjaElkLmN1cnJlbnQgPSBjaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyO1xuICAgICAgfVxuXG4gICAgICBlbC5mb2N1cygpO1xuICAgICAgb25Nb3ZlQ2FsbGJhY2soZ2V0UmVsYXRpdmVQb3NpdGlvbihlbCwgbmF0aXZlRXZlbnQsIHRvdWNoSWQuY3VycmVudCkpO1xuICAgICAgdG9nZ2xlRG9jdW1lbnRFdmVudHModHJ1ZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRleHQgc2VsZWN0aW9uXG4gICAgICBwcmV2ZW50RGVmYXVsdE1vdmUoZXZlbnQpO1xuXG4gICAgICAvLyBJZiB1c2VyIG1vdmVzIHRoZSBwb2ludGVyIG91dHNpZGUgb2YgdGhlIHdpbmRvdyBvciBpZnJhbWUgYm91bmRzIGFuZCByZWxlYXNlIGl0IHRoZXJlLFxuICAgICAgLy8gYG1vdXNldXBgL2B0b3VjaGVuZGAgd29uJ3QgYmUgZmlyZWQuIEluIG9yZGVyIHRvIHN0b3AgdGhlIHBpY2tlciBmcm9tIGZvbGxvd2luZyB0aGUgY3Vyc29yXG4gICAgICAvLyBhZnRlciB0aGUgdXNlciBoYXMgbW92ZWQgdGhlIG1vdXNlL2ZpbmdlciBiYWNrIHRvIHRoZSBkb2N1bWVudCwgd2UgY2hlY2sgYGV2ZW50LmJ1dHRvbnNgXG4gICAgICAvLyBhbmQgYGV2ZW50LnRvdWNoZXNgLiBJdCBhbGxvd3MgdXMgdG8gZGV0ZWN0IHRoYXQgdGhlIHVzZXIgaXMganVzdCBtb3ZpbmcgaGlzIHBvaW50ZXJcbiAgICAgIC8vIHdpdGhvdXQgcHJlc3NpbmcgaXQgZG93blxuICAgICAgY29uc3QgaXNEb3duID0gaXNUb3VjaChldmVudCkgPyBldmVudC50b3VjaGVzLmxlbmd0aCA+IDAgOiBldmVudC5idXR0b25zID4gMDtcblxuICAgICAgaWYgKGlzRG93biAmJiBjb250YWluZXIuY3VycmVudCkge1xuICAgICAgICBvbk1vdmVDYWxsYmFjayhnZXRSZWxhdGl2ZVBvc2l0aW9uKGNvbnRhaW5lci5jdXJyZW50LCBldmVudCwgdG91Y2hJZC5jdXJyZW50KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2dnbGVEb2N1bWVudEV2ZW50cyhmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU1vdmVFbmQgPSAoKSA9PiB0b2dnbGVEb2N1bWVudEV2ZW50cyhmYWxzZSk7XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQud2hpY2ggfHwgZXZlbnQua2V5Q29kZTtcblxuICAgICAgLy8gSWdub3JlIGFsbCBrZXlzIGV4Y2VwdCBhcnJvdyBvbmVzXG4gICAgICBpZiAoa2V5Q29kZSA8IDM3IHx8IGtleUNvZGUgPiA0MCkgcmV0dXJuO1xuICAgICAgLy8gRG8gbm90IHNjcm9sbCBwYWdlIGJ5IGFycm93IGtleXMgd2hlbiBkb2N1bWVudCBpcyBmb2N1c2VkIG9uIHRoZSBlbGVtZW50XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gU2VuZCByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAgICAvLyBXZSB1c2UgY29kZXMgKDM34oaQLCAzOOKGkSwgMznihpIsIDQw4oaTKSBpbnN0ZWFkIG9mIGtleXMgKCdBcnJvd1JpZ2h0JywgJ0Fycm93RG93bicsIGV0YylcbiAgICAgIC8vIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgbGlicmFyeVxuICAgICAgb25LZXlDYWxsYmFjayh7XG4gICAgICAgIGxlZnQ6IGtleUNvZGUgPT09IDM5ID8gMC4wNSA6IGtleUNvZGUgPT09IDM3ID8gLTAuMDUgOiAwLFxuICAgICAgICB0b3A6IGtleUNvZGUgPT09IDQwID8gMC4wNSA6IGtleUNvZGUgPT09IDM4ID8gLTAuMDUgOiAwLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHRvZ2dsZURvY3VtZW50RXZlbnRzKHN0YXRlPzogYm9vbGVhbikge1xuICAgICAgY29uc3QgdG91Y2ggPSBoYXNUb3VjaC5jdXJyZW50O1xuICAgICAgY29uc3QgZWwgPSBjb250YWluZXIuY3VycmVudDtcbiAgICAgIGNvbnN0IHBhcmVudFdpbmRvdyA9IGdldFBhcmVudFdpbmRvdyhlbCk7XG5cbiAgICAgIC8vIEFkZCBvciByZW1vdmUgYWRkaXRpb25hbCBwb2ludGVyIGV2ZW50IGxpc3RlbmVyc1xuICAgICAgY29uc3QgdG9nZ2xlRXZlbnQgPSBzdGF0ZSA/IHBhcmVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyIDogcGFyZW50V2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXI7XG4gICAgICB0b2dnbGVFdmVudCh0b3VjaCA/IFwidG91Y2htb3ZlXCIgOiBcIm1vdXNlbW92ZVwiLCBoYW5kbGVNb3ZlKTtcbiAgICAgIHRvZ2dsZUV2ZW50KHRvdWNoID8gXCJ0b3VjaGVuZFwiIDogXCJtb3VzZXVwXCIsIGhhbmRsZU1vdmVFbmQpO1xuICAgIH1cblxuICAgIHJldHVybiBbaGFuZGxlTW92ZVN0YXJ0LCBoYW5kbGVLZXlEb3duLCB0b2dnbGVEb2N1bWVudEV2ZW50c107XG4gIH0sIFtvbktleUNhbGxiYWNrLCBvbk1vdmVDYWxsYmFja10pO1xuXG4gIC8vIFJlbW92ZSB3aW5kb3cgZXZlbnQgbGlzdGVuZXJzIGJlZm9yZSB1bm1vdW50aW5nXG4gIHVzZUVmZmVjdCgoKSA9PiB0b2dnbGVEb2N1bWVudEV2ZW50cywgW3RvZ2dsZURvY3VtZW50RXZlbnRzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4ucmVzdH1cbiAgICAgIG9uVG91Y2hTdGFydD17aGFuZGxlTW92ZVN0YXJ0fVxuICAgICAgb25Nb3VzZURvd249e2hhbmRsZU1vdmVTdGFydH1cbiAgICAgIGNsYXNzTmFtZT1cInJlYWN0LWNvbG9yZnVsX19pbnRlcmFjdGl2ZVwiXG4gICAgICByZWY9e2NvbnRhaW5lcn1cbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cInNsaWRlclwiXG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBJbnRlcmFjdGl2ZSA9IFJlYWN0Lm1lbW8oSW50ZXJhY3RpdmVCYXNlKTtcbiIsImV4cG9ydCBjb25zdCBmb3JtYXRDbGFzc05hbWUgPSAobmFtZXM6IHVua25vd25bXSk6IHN0cmluZyA9PiBuYW1lcy5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb3JtYXRDbGFzc05hbWUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZm9ybWF0XCI7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgdG9wPzogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIGNvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBQb2ludGVyID0gKHsgY2xhc3NOYW1lLCBjb2xvciwgbGVmdCwgdG9wID0gMC41IH06IFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCBub2RlQ2xhc3NOYW1lID0gZm9ybWF0Q2xhc3NOYW1lKFtcInJlYWN0LWNvbG9yZnVsX19wb2ludGVyXCIsIGNsYXNzTmFtZV0pO1xuXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIHRvcDogYCR7dG9wICogMTAwfSVgLFxuICAgIGxlZnQ6IGAke2xlZnQgKiAxMDB9JWAsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17bm9kZUNsYXNzTmFtZX0gc3R5bGU9e3N0eWxlfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX3BvaW50ZXItZmlsbFwiIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogY29sb3IgfX0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCJleHBvcnQgY29uc3Qgcm91bmQgPSAobnVtYmVyOiBudW1iZXIsIGRpZ2l0cyA9IDAsIGJhc2UgPSBNYXRoLnBvdygxMCwgZGlnaXRzKSk6IG51bWJlciA9PiB7XG4gIHJldHVybiBNYXRoLnJvdW5kKGJhc2UgKiBudW1iZXIpIC8gYmFzZTtcbn07XG4iLCJpbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuL3JvdW5kXCI7XG5pbXBvcnQgeyBSZ2JhQ29sb3IsIFJnYkNvbG9yLCBIc2xhQ29sb3IsIEhzbENvbG9yLCBIc3ZhQ29sb3IsIEhzdkNvbG9yIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbi8qKlxuICogVmFsaWQgQ1NTIDxhbmdsZT4gdW5pdHMuXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYW5nbGVcbiAqL1xuY29uc3QgYW5nbGVVbml0czogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgZ3JhZDogMzYwIC8gNDAwLFxuICB0dXJuOiAzNjAsXG4gIHJhZDogMzYwIC8gKE1hdGguUEkgKiAyKSxcbn07XG5cbmV4cG9ydCBjb25zdCBoZXhUb0hzdmEgPSAoaGV4OiBzdHJpbmcpOiBIc3ZhQ29sb3IgPT4gcmdiYVRvSHN2YShoZXhUb1JnYmEoaGV4KSk7XG5cbmV4cG9ydCBjb25zdCBoZXhUb1JnYmEgPSAoaGV4OiBzdHJpbmcpOiBSZ2JhQ29sb3IgPT4ge1xuICBpZiAoaGV4WzBdID09PSBcIiNcIikgaGV4ID0gaGV4LnN1YnN0cigxKTtcblxuICBpZiAoaGV4Lmxlbmd0aCA8IDYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcjogcGFyc2VJbnQoaGV4WzBdICsgaGV4WzBdLCAxNiksXG4gICAgICBnOiBwYXJzZUludChoZXhbMV0gKyBoZXhbMV0sIDE2KSxcbiAgICAgIGI6IHBhcnNlSW50KGhleFsyXSArIGhleFsyXSwgMTYpLFxuICAgICAgYTogMSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByOiBwYXJzZUludChoZXguc3Vic3RyKDAsIDIpLCAxNiksXG4gICAgZzogcGFyc2VJbnQoaGV4LnN1YnN0cigyLCAyKSwgMTYpLFxuICAgIGI6IHBhcnNlSW50KGhleC5zdWJzdHIoNCwgMiksIDE2KSxcbiAgICBhOiAxLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlSHVlID0gKHZhbHVlOiBzdHJpbmcsIHVuaXQgPSBcImRlZ1wiKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIE51bWJlcih2YWx1ZSkgKiAoYW5nbGVVbml0c1t1bml0XSB8fCAxKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoc2xhU3RyaW5nVG9Ic3ZhID0gKGhzbFN0cmluZzogc3RyaW5nKTogSHN2YUNvbG9yID0+IHtcbiAgY29uc3QgbWF0Y2hlciA9IC9oc2xhP1xcKD9cXHMqKC0/XFxkKlxcLj9cXGQrKShkZWd8cmFkfGdyYWR8dHVybik/WyxcXHNdKygtP1xcZCpcXC4/XFxkKyklP1ssXFxzXSsoLT9cXGQqXFwuP1xcZCspJT8sP1xccypbL1xcc10qKC0/XFxkKlxcLj9cXGQrKT8oJSk/XFxzKlxcKT8vaTtcbiAgY29uc3QgbWF0Y2ggPSBtYXRjaGVyLmV4ZWMoaHNsU3RyaW5nKTtcblxuICBpZiAoIW1hdGNoKSByZXR1cm4geyBoOiAwLCBzOiAwLCB2OiAwLCBhOiAxIH07XG5cbiAgcmV0dXJuIGhzbGFUb0hzdmEoe1xuICAgIGg6IHBhcnNlSHVlKG1hdGNoWzFdLCBtYXRjaFsyXSksXG4gICAgczogTnVtYmVyKG1hdGNoWzNdKSxcbiAgICBsOiBOdW1iZXIobWF0Y2hbNF0pLFxuICAgIGE6IG1hdGNoWzVdID09PSB1bmRlZmluZWQgPyAxIDogTnVtYmVyKG1hdGNoWzVdKSAvIChtYXRjaFs2XSA/IDEwMCA6IDEpLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBoc2xTdHJpbmdUb0hzdmEgPSBoc2xhU3RyaW5nVG9Ic3ZhO1xuXG5leHBvcnQgY29uc3QgaHNsYVRvSHN2YSA9ICh7IGgsIHMsIGwsIGEgfTogSHNsYUNvbG9yKTogSHN2YUNvbG9yID0+IHtcbiAgcyAqPSAobCA8IDUwID8gbCA6IDEwMCAtIGwpIC8gMTAwO1xuXG4gIHJldHVybiB7XG4gICAgaDogaCxcbiAgICBzOiBzID4gMCA/ICgoMiAqIHMpIC8gKGwgKyBzKSkgKiAxMDAgOiAwLFxuICAgIHY6IGwgKyBzLFxuICAgIGEsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSGV4ID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiByZ2JhVG9IZXgoaHN2YVRvUmdiYShoc3ZhKSk7XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9Ic2xhID0gKHsgaCwgcywgdiwgYSB9OiBIc3ZhQ29sb3IpOiBIc2xhQ29sb3IgPT4ge1xuICBjb25zdCBoaCA9ICgoMjAwIC0gcykgKiB2KSAvIDEwMDtcblxuICByZXR1cm4ge1xuICAgIGg6IHJvdW5kKGgpLFxuICAgIHM6IHJvdW5kKGhoID4gMCAmJiBoaCA8IDIwMCA/ICgocyAqIHYpIC8gMTAwIC8gKGhoIDw9IDEwMCA/IGhoIDogMjAwIC0gaGgpKSAqIDEwMCA6IDApLFxuICAgIGw6IHJvdW5kKGhoIC8gMiksXG4gICAgYTogcm91bmQoYSwgMiksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHNsU3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgaCwgcywgbCB9ID0gaHN2YVRvSHNsYShoc3ZhKTtcbiAgcmV0dXJuIGBoc2woJHtofSwgJHtzfSUsICR7bH0lKWA7XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHN2U3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgaCwgcywgdiB9ID0gcm91bmRIc3ZhKGhzdmEpO1xuICByZXR1cm4gYGhzdigke2h9LCAke3N9JSwgJHt2fSUpYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9Ic3ZhU3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgaCwgcywgdiwgYSB9ID0gcm91bmRIc3ZhKGhzdmEpO1xuICByZXR1cm4gYGhzdmEoJHtofSwgJHtzfSUsICR7dn0lLCAke2F9KWA7XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHNsYVN0cmluZyA9IChoc3ZhOiBIc3ZhQ29sb3IpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7IGgsIHMsIGwsIGEgfSA9IGhzdmFUb0hzbGEoaHN2YSk7XG4gIHJldHVybiBgaHNsYSgke2h9LCAke3N9JSwgJHtsfSUsICR7YX0pYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9SZ2JhID0gKHsgaCwgcywgdiwgYSB9OiBIc3ZhQ29sb3IpOiBSZ2JhQ29sb3IgPT4ge1xuICBoID0gKGggLyAzNjApICogNjtcbiAgcyA9IHMgLyAxMDA7XG4gIHYgPSB2IC8gMTAwO1xuXG4gIGNvbnN0IGhoID0gTWF0aC5mbG9vcihoKSxcbiAgICBiID0gdiAqICgxIC0gcyksXG4gICAgYyA9IHYgKiAoMSAtIChoIC0gaGgpICogcyksXG4gICAgZCA9IHYgKiAoMSAtICgxIC0gaCArIGhoKSAqIHMpLFxuICAgIG1vZHVsZSA9IGhoICUgNjtcblxuICByZXR1cm4ge1xuICAgIHI6IHJvdW5kKFt2LCBjLCBiLCBiLCBkLCB2XVttb2R1bGVdICogMjU1KSxcbiAgICBnOiByb3VuZChbZCwgdiwgdiwgYywgYiwgYl1bbW9kdWxlXSAqIDI1NSksXG4gICAgYjogcm91bmQoW2IsIGIsIGQsIHYsIHYsIGNdW21vZHVsZV0gKiAyNTUpLFxuICAgIGE6IHJvdW5kKGEsIDIpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGhzdmFUb1JnYlN0cmluZyA9IChoc3ZhOiBIc3ZhQ29sb3IpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7IHIsIGcsIGIgfSA9IGhzdmFUb1JnYmEoaHN2YSk7XG4gIHJldHVybiBgcmdiKCR7cn0sICR7Z30sICR7Yn0pYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9SZ2JhU3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgciwgZywgYiwgYSB9ID0gaHN2YVRvUmdiYShoc3ZhKTtcbiAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7YX0pYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhU3RyaW5nVG9Ic3ZhID0gKGhzdlN0cmluZzogc3RyaW5nKTogSHN2YUNvbG9yID0+IHtcbiAgY29uc3QgbWF0Y2hlciA9IC9oc3ZhP1xcKD9cXHMqKC0/XFxkKlxcLj9cXGQrKShkZWd8cmFkfGdyYWR8dHVybik/WyxcXHNdKygtP1xcZCpcXC4/XFxkKyklP1ssXFxzXSsoLT9cXGQqXFwuP1xcZCspJT8sP1xccypbL1xcc10qKC0/XFxkKlxcLj9cXGQrKT8oJSk/XFxzKlxcKT8vaTtcbiAgY29uc3QgbWF0Y2ggPSBtYXRjaGVyLmV4ZWMoaHN2U3RyaW5nKTtcblxuICBpZiAoIW1hdGNoKSByZXR1cm4geyBoOiAwLCBzOiAwLCB2OiAwLCBhOiAxIH07XG5cbiAgcmV0dXJuIHJvdW5kSHN2YSh7XG4gICAgaDogcGFyc2VIdWUobWF0Y2hbMV0sIG1hdGNoWzJdKSxcbiAgICBzOiBOdW1iZXIobWF0Y2hbM10pLFxuICAgIHY6IE51bWJlcihtYXRjaFs0XSksXG4gICAgYTogbWF0Y2hbNV0gPT09IHVuZGVmaW5lZCA/IDEgOiBOdW1iZXIobWF0Y2hbNV0pIC8gKG1hdGNoWzZdID8gMTAwIDogMSksXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGhzdlN0cmluZ1RvSHN2YSA9IGhzdmFTdHJpbmdUb0hzdmE7XG5cbmV4cG9ydCBjb25zdCByZ2JhU3RyaW5nVG9Ic3ZhID0gKHJnYmFTdHJpbmc6IHN0cmluZyk6IEhzdmFDb2xvciA9PiB7XG4gIGNvbnN0IG1hdGNoZXIgPSAvcmdiYT9cXCg/XFxzKigtP1xcZCpcXC4/XFxkKykoJSk/WyxcXHNdKygtP1xcZCpcXC4/XFxkKykoJSk/WyxcXHNdKygtP1xcZCpcXC4/XFxkKykoJSk/LD9cXHMqWy9cXHNdKigtP1xcZCpcXC4/XFxkKyk/KCUpP1xccypcXCk/L2k7XG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hlci5leGVjKHJnYmFTdHJpbmcpO1xuXG4gIGlmICghbWF0Y2gpIHJldHVybiB7IGg6IDAsIHM6IDAsIHY6IDAsIGE6IDEgfTtcblxuICByZXR1cm4gcmdiYVRvSHN2YSh7XG4gICAgcjogTnVtYmVyKG1hdGNoWzFdKSAvIChtYXRjaFsyXSA/IDEwMCAvIDI1NSA6IDEpLFxuICAgIGc6IE51bWJlcihtYXRjaFszXSkgLyAobWF0Y2hbNF0gPyAxMDAgLyAyNTUgOiAxKSxcbiAgICBiOiBOdW1iZXIobWF0Y2hbNV0pIC8gKG1hdGNoWzZdID8gMTAwIC8gMjU1IDogMSksXG4gICAgYTogbWF0Y2hbN10gPT09IHVuZGVmaW5lZCA/IDEgOiBOdW1iZXIobWF0Y2hbN10pIC8gKG1hdGNoWzhdID8gMTAwIDogMSksXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJnYlN0cmluZ1RvSHN2YSA9IHJnYmFTdHJpbmdUb0hzdmE7XG5cbmNvbnN0IGZvcm1hdCA9IChudW1iZXI6IG51bWJlcikgPT4ge1xuICBjb25zdCBoZXggPSBudW1iZXIudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gaGV4Lmxlbmd0aCA8IDIgPyBcIjBcIiArIGhleCA6IGhleDtcbn07XG5cbmV4cG9ydCBjb25zdCByZ2JhVG9IZXggPSAoeyByLCBnLCBiIH06IFJnYmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIHJldHVybiBcIiNcIiArIGZvcm1hdChyKSArIGZvcm1hdChnKSArIGZvcm1hdChiKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZ2JhVG9Ic3ZhID0gKHsgciwgZywgYiwgYSB9OiBSZ2JhQ29sb3IpOiBIc3ZhQ29sb3IgPT4ge1xuICBjb25zdCBtYXggPSBNYXRoLm1heChyLCBnLCBiKTtcbiAgY29uc3QgZGVsdGEgPSBtYXggLSBNYXRoLm1pbihyLCBnLCBiKTtcblxuICAvLyBwcmV0dGllci1pZ25vcmVcbiAgY29uc3QgaGggPSBkZWx0YVxuICAgID8gbWF4ID09PSByXG4gICAgICA/IChnIC0gYikgLyBkZWx0YVxuICAgICAgOiBtYXggPT09IGdcbiAgICAgICAgPyAyICsgKGIgLSByKSAvIGRlbHRhXG4gICAgICAgIDogNCArIChyIC0gZykgLyBkZWx0YVxuICAgIDogMDtcblxuICByZXR1cm4ge1xuICAgIGg6IHJvdW5kKDYwICogKGhoIDwgMCA/IGhoICsgNiA6IGhoKSksXG4gICAgczogcm91bmQobWF4ID8gKGRlbHRhIC8gbWF4KSAqIDEwMCA6IDApLFxuICAgIHY6IHJvdW5kKChtYXggLyAyNTUpICogMTAwKSxcbiAgICBhLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJvdW5kSHN2YSA9IChoc3ZhOiBIc3ZhQ29sb3IpOiBIc3ZhQ29sb3IgPT4gKHtcbiAgaDogcm91bmQoaHN2YS5oKSxcbiAgczogcm91bmQoaHN2YS5zKSxcbiAgdjogcm91bmQoaHN2YS52KSxcbiAgYTogcm91bmQoaHN2YS5hLCAyKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgcmdiYVRvUmdiID0gKHsgciwgZywgYiB9OiBSZ2JhQ29sb3IpOiBSZ2JDb2xvciA9PiAoeyByLCBnLCBiIH0pO1xuXG5leHBvcnQgY29uc3QgaHNsYVRvSHNsID0gKHsgaCwgcywgbCB9OiBIc2xhQ29sb3IpOiBIc2xDb2xvciA9PiAoeyBoLCBzLCBsIH0pO1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHN2ID0gKGhzdmE6IEhzdmFDb2xvcik6IEhzdkNvbG9yID0+IHtcbiAgY29uc3QgeyBoLCBzLCB2IH0gPSByb3VuZEhzdmEoaHN2YSk7XG4gIHJldHVybiB7IGgsIHMsIHYgfTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEludGVyYWN0aXZlLCBJbnRlcmFjdGlvbiB9IGZyb20gXCIuL0ludGVyYWN0aXZlXCI7XG5pbXBvcnQgeyBQb2ludGVyIH0gZnJvbSBcIi4vUG9pbnRlclwiO1xuXG5pbXBvcnQgeyBoc3ZhVG9Ic2xTdHJpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29udmVydFwiO1xuaW1wb3J0IHsgZm9ybWF0Q2xhc3NOYW1lIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Zvcm1hdFwiO1xuaW1wb3J0IHsgY2xhbXAgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY2xhbXBcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3JvdW5kXCI7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaHVlOiBudW1iZXI7XG4gIG9uQ2hhbmdlOiAobmV3SHVlOiB7IGg6IG51bWJlciB9KSA9PiB2b2lkO1xufVxuXG5jb25zdCBIdWVCYXNlID0gKHsgY2xhc3NOYW1lLCBodWUsIG9uQ2hhbmdlIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IGhhbmRsZU1vdmUgPSAoaW50ZXJhY3Rpb246IEludGVyYWN0aW9uKSA9PiB7XG4gICAgb25DaGFuZ2UoeyBoOiAzNjAgKiBpbnRlcmFjdGlvbi5sZWZ0IH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleSA9IChvZmZzZXQ6IEludGVyYWN0aW9uKSA9PiB7XG4gICAgLy8gSHVlIG1lYXN1cmVkIGluIGRlZ3JlZXMgb2YgdGhlIGNvbG9yIGNpcmNsZSByYW5naW5nIGZyb20gMCB0byAzNjBcbiAgICBvbkNoYW5nZSh7XG4gICAgICBoOiBjbGFtcChodWUgKyBvZmZzZXQubGVmdCAqIDM2MCwgMCwgMzYwKSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBub2RlQ2xhc3NOYW1lID0gZm9ybWF0Q2xhc3NOYW1lKFtcInJlYWN0LWNvbG9yZnVsX19odWVcIiwgY2xhc3NOYW1lXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17bm9kZUNsYXNzTmFtZX0+XG4gICAgICA8SW50ZXJhY3RpdmVcbiAgICAgICAgb25Nb3ZlPXtoYW5kbGVNb3ZlfVxuICAgICAgICBvbktleT17aGFuZGxlS2V5fVxuICAgICAgICBhcmlhLWxhYmVsPVwiSHVlXCJcbiAgICAgICAgYXJpYS12YWx1ZXRleHQ9e3JvdW5kKGh1ZSl9XG4gICAgICA+XG4gICAgICAgIDxQb2ludGVyXG4gICAgICAgICAgY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX2h1ZS1wb2ludGVyXCJcbiAgICAgICAgICBsZWZ0PXtodWUgLyAzNjB9XG4gICAgICAgICAgY29sb3I9e2hzdmFUb0hzbFN0cmluZyh7IGg6IGh1ZSwgczogMTAwLCB2OiAxMDAsIGE6IDEgfSl9XG4gICAgICAgIC8+XG4gICAgICA8L0ludGVyYWN0aXZlPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IEh1ZSA9IFJlYWN0Lm1lbW8oSHVlQmFzZSk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBJbnRlcmFjdGl2ZSwgSW50ZXJhY3Rpb24gfSBmcm9tIFwiLi9JbnRlcmFjdGl2ZVwiO1xuaW1wb3J0IHsgUG9pbnRlciB9IGZyb20gXCIuL1BvaW50ZXJcIjtcbmltcG9ydCB7IEhzdmFDb2xvciB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgaHN2YVRvSHNsU3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnZlcnRcIjtcbmltcG9ydCB7IGNsYW1wIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NsYW1wXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi8uLi91dGlscy9yb3VuZFwiO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBoc3ZhOiBIc3ZhQ29sb3I7XG4gIG9uQ2hhbmdlOiAobmV3Q29sb3I6IHsgczogbnVtYmVyOyB2OiBudW1iZXIgfSkgPT4gdm9pZDtcbn1cblxuY29uc3QgU2F0dXJhdGlvbkJhc2UgPSAoeyBoc3ZhLCBvbkNoYW5nZSB9OiBQcm9wcykgPT4ge1xuICBjb25zdCBoYW5kbGVNb3ZlID0gKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4ge1xuICAgIG9uQ2hhbmdlKHtcbiAgICAgIHM6IGludGVyYWN0aW9uLmxlZnQgKiAxMDAsXG4gICAgICB2OiAxMDAgLSBpbnRlcmFjdGlvbi50b3AgKiAxMDAsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlS2V5ID0gKG9mZnNldDogSW50ZXJhY3Rpb24pID0+IHtcbiAgICAvLyBTYXR1cmF0aW9uIGFuZCBicmlnaHRuZXNzIGFsd2F5cyBmaXQgaW50byBbMCwgMTAwXSByYW5nZVxuICAgIG9uQ2hhbmdlKHtcbiAgICAgIHM6IGNsYW1wKGhzdmEucyArIG9mZnNldC5sZWZ0ICogMTAwLCAwLCAxMDApLFxuICAgICAgdjogY2xhbXAoaHN2YS52IC0gb2Zmc2V0LnRvcCAqIDEwMCwgMCwgMTAwKSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBjb250YWluZXJTdHlsZSA9IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGhzdmFUb0hzbFN0cmluZyh7IGg6IGhzdmEuaCwgczogMTAwLCB2OiAxMDAsIGE6IDEgfSksXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlYWN0LWNvbG9yZnVsX19zYXR1cmF0aW9uXCIgc3R5bGU9e2NvbnRhaW5lclN0eWxlfT5cbiAgICAgIDxJbnRlcmFjdGl2ZVxuICAgICAgICBvbk1vdmU9e2hhbmRsZU1vdmV9XG4gICAgICAgIG9uS2V5PXtoYW5kbGVLZXl9XG4gICAgICAgIGFyaWEtbGFiZWw9XCJDb2xvclwiXG4gICAgICAgIGFyaWEtdmFsdWV0ZXh0PXtgU2F0dXJhdGlvbiAke3JvdW5kKGhzdmEucyl9JSwgQnJpZ2h0bmVzcyAke3JvdW5kKGhzdmEudil9JWB9XG4gICAgICA+XG4gICAgICAgIDxQb2ludGVyXG4gICAgICAgICAgY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX3NhdHVyYXRpb24tcG9pbnRlclwiXG4gICAgICAgICAgdG9wPXsxIC0gaHN2YS52IC8gMTAwfVxuICAgICAgICAgIGxlZnQ9e2hzdmEucyAvIDEwMH1cbiAgICAgICAgICBjb2xvcj17aHN2YVRvSHNsU3RyaW5nKGhzdmEpfVxuICAgICAgICAvPlxuICAgICAgPC9JbnRlcmFjdGl2ZT5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBTYXR1cmF0aW9uID0gUmVhY3QubWVtbyhTYXR1cmF0aW9uQmFzZSk7XG4iLCJpbXBvcnQgeyBoZXhUb1JnYmEgfSBmcm9tIFwiLi9jb252ZXJ0XCI7XG5pbXBvcnQgeyBPYmplY3RDb2xvciB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgZXF1YWxDb2xvck9iamVjdHMgPSAoZmlyc3Q6IE9iamVjdENvbG9yLCBzZWNvbmQ6IE9iamVjdENvbG9yKTogYm9vbGVhbiA9PiB7XG4gIGlmIChmaXJzdCA9PT0gc2Vjb25kKSByZXR1cm4gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IHByb3AgaW4gZmlyc3QpIHtcbiAgICAvLyBUaGUgZm9sbG93aW5nIGFsbG93cyBmb3IgYSB0eXBlLXNhZmUgY2FsbGluZyBvZiB0aGlzIGZ1bmN0aW9uIChmaXJzdCAmIHNlY29uZCBoYXZlIHRvIGJlIEhTTCwgSFNWLCBvciBSR0IpXG4gICAgLy8gd2l0aCB0eXBlLXVuc2FmZSBpdGVyYXRpbmcgb3ZlciBvYmplY3Qga2V5cy4gVFMgZG9lcyBub3QgYWxsb3cgdGhpcyB3aXRob3V0IGFuIGluZGV4IChgW2tleTogc3RyaW5nXTogbnVtYmVyYClcbiAgICAvLyBvbiBhbiBvYmplY3QgdG8gZGVmaW5lIGhvdyBpdGVyYXRpb24gaXMgbm9ybWFsbHkgZG9uZS4gVG8gZW5zdXJlIGV4dHJhIGtleXMgYXJlIG5vdCBhbGxvd2VkIG9uIG91ciB0eXBlcyxcbiAgICAvLyB3ZSBtdXN0IGNhc3Qgb3VyIG9iamVjdCB0byB1bmtub3duIChhcyBSR0IgZGVtYW5kcyBgcmAgYmUgYSBrZXksIHdoaWxlIGBSZWNvcmQ8c3RyaW5nLCB4PmAgZG9lcyBub3QgY2FyZSBpZlxuICAgIC8vIHRoZXJlIGlzIG9yIG5vdCksIGFuZCB0aGVuIGFzIGEgdHlwZSBUUyBjYW4gaXRlcmF0ZSBvdmVyLlxuICAgIGlmIChcbiAgICAgICgoZmlyc3QgYXMgdW5rbm93bikgYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPilbcHJvcF0gIT09XG4gICAgICAoKHNlY29uZCBhcyB1bmtub3duKSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KVtwcm9wXVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGVxdWFsQ29sb3JTdHJpbmcgPSAoZmlyc3Q6IHN0cmluZywgc2Vjb25kOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGZpcnN0LnJlcGxhY2UoL1xccy9nLCBcIlwiKSA9PT0gc2Vjb25kLnJlcGxhY2UoL1xccy9nLCBcIlwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBlcXVhbEhleCA9IChmaXJzdDogc3RyaW5nLCBzZWNvbmQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBpZiAoZmlyc3QudG9Mb3dlckNhc2UoKSA9PT0gc2Vjb25kLnRvTG93ZXJDYXNlKCkpIHJldHVybiB0cnVlO1xuXG4gIC8vIFRvIGNvbXBhcmUgY29sb3JzIGxpa2UgYCNGRkZgIGFuZCBgZmZmZmZmYCB3ZSBjb252ZXJ0IHRoZW0gaW50byBSR0Igb2JqZWN0c1xuICByZXR1cm4gZXF1YWxDb2xvck9iamVjdHMoaGV4VG9SZ2JhKGZpcnN0KSwgaGV4VG9SZ2JhKHNlY29uZCkpO1xufTtcbiIsImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIEFueUNvbG9yLCBIc3ZhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tIFwiLi91c2VFdmVudENhbGxiYWNrXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb2xvck1hbmlwdWxhdGlvbjxUIGV4dGVuZHMgQW55Q29sb3I+KFxuICBjb2xvck1vZGVsOiBDb2xvck1vZGVsPFQ+LFxuICBjb2xvcjogVCxcbiAgb25DaGFuZ2U/OiAoY29sb3I6IFQpID0+IHZvaWRcbik6IFtIc3ZhQ29sb3IsIChjb2xvcjogUGFydGlhbDxIc3ZhQ29sb3I+KSA9PiB2b2lkXSB7XG4gIC8vIFNhdmUgb25DaGFuZ2UgY2FsbGJhY2sgaW4gdGhlIHJlZiBmb3IgYXZvaWRpbmcgXCJ1c2VDYWxsYmFjayBoZWxsXCJcbiAgY29uc3Qgb25DaGFuZ2VDYWxsYmFjayA9IHVzZUV2ZW50Q2FsbGJhY2s8VD4ob25DaGFuZ2UpO1xuXG4gIC8vIE5vIG1hdHRlciB3aGljaCBjb2xvciBtb2RlbCBpcyB1c2VkIChIRVgsIFJHQihBKSBvciBIU0woQSkpLFxuICAvLyBhbGwgaW50ZXJuYWwgY2FsY3VsYXRpb25zIGFyZSBiYXNlZCBvbiBIU1ZBIG1vZGVsXG4gIGNvbnN0IFtoc3ZhLCB1cGRhdGVIc3ZhXSA9IHVzZVN0YXRlPEhzdmFDb2xvcj4oKCkgPT4gY29sb3JNb2RlbC50b0hzdmEoY29sb3IpKTtcblxuICAvLyBCeSB1c2luZyB0aGlzIHJlZiB3ZSdyZSBhYmxlIHRvIHByZXZlbnQgZXh0cmEgdXBkYXRlc1xuICAvLyBhbmQgdGhlIGVmZmVjdHMgcmVjdXJzaW9uIGR1cmluZyB0aGUgY29sb3IgY29udmVyc2lvblxuICBjb25zdCBjYWNoZSA9IHVzZVJlZih7IGNvbG9yLCBoc3ZhIH0pO1xuXG4gIC8vIFVwZGF0ZSBsb2NhbCBIU1ZBLXZhbHVlIGlmIGBjb2xvcmAgcHJvcGVydHkgdmFsdWUgaXMgY2hhbmdlZCxcbiAgLy8gYnV0IG9ubHkgaWYgdGhhdCdzIG5vdCB0aGUgc2FtZSBjb2xvciB0aGF0IHdlIGp1c3Qgc2VudCB0byB0aGUgcGFyZW50XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjb2xvck1vZGVsLmVxdWFsKGNvbG9yLCBjYWNoZS5jdXJyZW50LmNvbG9yKSkge1xuICAgICAgY29uc3QgbmV3SHN2YSA9IGNvbG9yTW9kZWwudG9Ic3ZhKGNvbG9yKTtcbiAgICAgIGNhY2hlLmN1cnJlbnQgPSB7IGhzdmE6IG5ld0hzdmEsIGNvbG9yIH07XG4gICAgICB1cGRhdGVIc3ZhKG5ld0hzdmEpO1xuICAgIH1cbiAgfSwgW2NvbG9yLCBjb2xvck1vZGVsXSk7XG5cbiAgLy8gVHJpZ2dlciBgb25DaGFuZ2VgIGNhbGxiYWNrIG9ubHkgaWYgYW4gdXBkYXRlZCBjb2xvciBpcyBkaWZmZXJlbnQgZnJvbSBjYWNoZWQgb25lO1xuICAvLyBzYXZlIHRoZSBuZXcgY29sb3IgdG8gdGhlIHJlZiB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHVwZGF0ZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgbmV3Q29sb3I7XG4gICAgaWYgKFxuICAgICAgIWVxdWFsQ29sb3JPYmplY3RzKGhzdmEsIGNhY2hlLmN1cnJlbnQuaHN2YSkgJiZcbiAgICAgICFjb2xvck1vZGVsLmVxdWFsKChuZXdDb2xvciA9IGNvbG9yTW9kZWwuZnJvbUhzdmEoaHN2YSkpLCBjYWNoZS5jdXJyZW50LmNvbG9yKVxuICAgICkge1xuICAgICAgY2FjaGUuY3VycmVudCA9IHsgaHN2YSwgY29sb3I6IG5ld0NvbG9yIH07XG4gICAgICBvbkNoYW5nZUNhbGxiYWNrKG5ld0NvbG9yKTtcbiAgICB9XG4gIH0sIFtoc3ZhLCBjb2xvck1vZGVsLCBvbkNoYW5nZUNhbGxiYWNrXSk7XG5cbiAgLy8gTWVyZ2UgdGhlIGN1cnJlbnQgSFNWQSBjb2xvciBvYmplY3Qgd2l0aCB1cGRhdGVkIHBhcmFtcy5cbiAgLy8gRm9yIGV4YW1wbGUsIHdoZW4gYSBjaGlsZCBjb21wb25lbnQgc2VuZHMgYGhgIG9yIGBzYCBvbmx5XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChwYXJhbXM6IFBhcnRpYWw8SHN2YUNvbG9yPikgPT4ge1xuICAgIHVwZGF0ZUhzdmEoKGN1cnJlbnQpID0+IE9iamVjdC5hc3NpZ24oe30sIGN1cnJlbnQsIHBhcmFtcykpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIFtoc3ZhLCBoYW5kbGVDaGFuZ2VdO1xufVxuIiwiZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfbm9uY2VfXzogc3RyaW5nIHwgdW5kZWZpbmVkO1xubGV0IG5vbmNlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogUmV0dXJucyBhIG5vbmNlIGhhc2ggaW5jbHVkZWQgYnkgV2VicGFjayBvciB0aGUgb25lIGRlZmluZWQgbWFudWFsbHkgYnkgZGV2ZWxvcGVyLlxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9ub25jZVxuICogaHR0cHM6Ly93ZWJwYWNrLmpzLm9yZy9ndWlkZXMvY3NwL1xuICovXG5leHBvcnQgY29uc3QgZ2V0Tm9uY2UgPSAoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vbmNlKSByZXR1cm4gbm9uY2U7XG4gIGlmICh0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBfX3dlYnBhY2tfbm9uY2VfXztcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogU2lnbnMgdGhlIHN0eWxlIHRhZyB3aXRoIGEgYmFzZTY0LWVuY29kZWQgc3RyaW5nIChub25jZSkgdG8gY29uZm9ybXMgdG8gQ29udGVudCBTZWN1cml0eSBQb2xpY2llcy5cbiAqIFRoaXMgZnVuY3Rpb24gaGFzIHRvIGJlIGludm9rZWQgYmVmb3JlIGFueSBwaWNrZXIgaXMgcmVuZGVyZWQgaWYgeW91IGFyZW4ndCB1c2luZyBXZWJwYWNrIGZvciBDU1AuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXROb25jZSA9IChoYXNoOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgbm9uY2UgPSBoYXNoO1xufTtcbiIsImltcG9ydCB7IHVzZUxheW91dEVmZmVjdCwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8vIFJlYWN0IGN1cnJlbnRseSB0aHJvd3MgYSB3YXJuaW5nIHdoZW4gdXNpbmcgdXNlTGF5b3V0RWZmZWN0IG9uIHRoZSBzZXJ2ZXIuXG4vLyBUbyBnZXQgYXJvdW5kIGl0LCB3ZSBjYW4gY29uZGl0aW9uYWxseSB1c2VFZmZlY3Qgb24gdGhlIHNlcnZlciAobm8tb3ApIGFuZFxuLy8gdXNlTGF5b3V0RWZmZWN0IGluIHRoZSBicm93c2VyLlxuZXhwb3J0IGNvbnN0IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgPVxuICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gdXNlTGF5b3V0RWZmZWN0IDogdXNlRWZmZWN0O1xuIiwiaW1wb3J0IHsgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgfSBmcm9tIFwiLi91c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0XCI7XG5pbXBvcnQgeyBnZXROb25jZSB9IGZyb20gXCIuLi91dGlscy9ub25jZVwiO1xuXG4vLyBCdW5kbGVyIGlzIGNvbmZpZ3VyZWQgdG8gbG9hZCB0aGlzIGFzIGEgcHJvY2Vzc2VkIG1pbmlmaWVkIENTUy1zdHJpbmdcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4uL2Nzcy9zdHlsZXMuY3NzXCI7XG5cbmNvbnN0IHN0eWxlRWxlbWVudE1hcDogTWFwPERvY3VtZW50LCBIVE1MU3R5bGVFbGVtZW50PiA9IG5ldyBNYXAoKTtcblxuLyoqXG4gKiBJbmplY3RzIENTUyBjb2RlIGludG8gdGhlIGRvY3VtZW50J3MgPGhlYWQ+XG4gKi9cbmV4cG9ydCBjb25zdCB1c2VTdHlsZVNoZWV0ID0gKG5vZGVSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4pOiB2b2lkID0+IHtcbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcGFyZW50RG9jdW1lbnQgPSBub2RlUmVmLmN1cnJlbnQgPyBub2RlUmVmLmN1cnJlbnQub3duZXJEb2N1bWVudCA6IGRvY3VtZW50O1xuXG4gICAgaWYgKHR5cGVvZiBwYXJlbnREb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIiAmJiAhc3R5bGVFbGVtZW50TWFwLmhhcyhwYXJlbnREb2N1bWVudCkpIHtcbiAgICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IHBhcmVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgIHN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBzdHlsZXM7XG4gICAgICBzdHlsZUVsZW1lbnRNYXAuc2V0KHBhcmVudERvY3VtZW50LCBzdHlsZUVsZW1lbnQpO1xuXG4gICAgICAvLyBDb25mb3JtIHRvIENTUCBydWxlcyBieSBzZXR0aW5nIGBub25jZWAgYXR0cmlidXRlIHRvIHRoZSBpbmxpbmUgc3R5bGVzXG4gICAgICBjb25zdCBub25jZSA9IGdldE5vbmNlKCk7XG4gICAgICBpZiAobm9uY2UpIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG5cbiAgICAgIHBhcmVudERvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEh1ZSB9IGZyb20gXCIuL0h1ZVwiO1xuaW1wb3J0IHsgU2F0dXJhdGlvbiB9IGZyb20gXCIuL1NhdHVyYXRpb25cIjtcblxuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMsIEFueUNvbG9yIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyB1c2VDb2xvck1hbmlwdWxhdGlvbiB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VDb2xvck1hbmlwdWxhdGlvblwiO1xuaW1wb3J0IHsgdXNlU3R5bGVTaGVldCB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VTdHlsZVNoZWV0XCI7XG5pbXBvcnQgeyBmb3JtYXRDbGFzc05hbWUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZm9ybWF0XCI7XG5cbmludGVyZmFjZSBQcm9wczxUIGV4dGVuZHMgQW55Q29sb3I+IGV4dGVuZHMgUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxUPj4ge1xuICBjb2xvck1vZGVsOiBDb2xvck1vZGVsPFQ+O1xufVxuXG5leHBvcnQgY29uc3QgQ29sb3JQaWNrZXIgPSA8VCBleHRlbmRzIEFueUNvbG9yPih7XG4gIGNsYXNzTmFtZSxcbiAgY29sb3JNb2RlbCxcbiAgY29sb3IgPSBjb2xvck1vZGVsLmRlZmF1bHRDb2xvcixcbiAgb25DaGFuZ2UsXG4gIC4uLnJlc3Rcbn06IFByb3BzPFQ+KTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCBub2RlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgdXNlU3R5bGVTaGVldChub2RlUmVmKTtcblxuICBjb25zdCBbaHN2YSwgdXBkYXRlSHN2YV0gPSB1c2VDb2xvck1hbmlwdWxhdGlvbjxUPihjb2xvck1vZGVsLCBjb2xvciwgb25DaGFuZ2UpO1xuXG4gIGNvbnN0IG5vZGVDbGFzc05hbWUgPSBmb3JtYXRDbGFzc05hbWUoW1wicmVhY3QtY29sb3JmdWxcIiwgY2xhc3NOYW1lXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHsuLi5yZXN0fSByZWY9e25vZGVSZWZ9IGNsYXNzTmFtZT17bm9kZUNsYXNzTmFtZX0+XG4gICAgICA8U2F0dXJhdGlvbiBoc3ZhPXtoc3ZhfSBvbkNoYW5nZT17dXBkYXRlSHN2YX0gLz5cbiAgICAgIDxIdWUgaHVlPXtoc3ZhLmh9IG9uQ2hhbmdlPXt1cGRhdGVIc3ZhfSBjbGFzc05hbWU9XCJyZWFjdC1jb2xvcmZ1bF9fbGFzdC1jb250cm9sXCIgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0NvbG9yUGlja2VyXCI7XG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgZXF1YWxIZXggfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaGV4VG9Ic3ZhLCBoc3ZhVG9IZXggfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPHN0cmluZz4gPSB7XG4gIGRlZmF1bHRDb2xvcjogXCIwMDBcIixcbiAgdG9Ic3ZhOiBoZXhUb0hzdmEsXG4gIGZyb21Ic3ZhOiBoc3ZhVG9IZXgsXG4gIGVxdWFsOiBlcXVhbEhleCxcbn07XG5cbmV4cG9ydCBjb25zdCBIZXhDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxzdHJpbmc+Pik6IEpTWC5FbGVtZW50ID0+IChcbiAgPENvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEludGVyYWN0aXZlLCBJbnRlcmFjdGlvbiB9IGZyb20gXCIuL0ludGVyYWN0aXZlXCI7XG5pbXBvcnQgeyBQb2ludGVyIH0gZnJvbSBcIi4vUG9pbnRlclwiO1xuXG5pbXBvcnQgeyBoc3ZhVG9Ic2xhU3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnZlcnRcIjtcbmltcG9ydCB7IGZvcm1hdENsYXNzTmFtZSB9IGZyb20gXCIuLi8uLi91dGlscy9mb3JtYXRcIjtcbmltcG9ydCB7IGNsYW1wIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NsYW1wXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi8uLi91dGlscy9yb3VuZFwiO1xuaW1wb3J0IHsgSHN2YUNvbG9yIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaHN2YTogSHN2YUNvbG9yO1xuICBvbkNoYW5nZTogKG5ld0FscGhhOiB7IGE6IG51bWJlciB9KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQWxwaGEgPSAoeyBjbGFzc05hbWUsIGhzdmEsIG9uQ2hhbmdlIH06IFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCBoYW5kbGVNb3ZlID0gKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4ge1xuICAgIG9uQ2hhbmdlKHsgYTogaW50ZXJhY3Rpb24ubGVmdCB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVLZXkgPSAob2Zmc2V0OiBJbnRlcmFjdGlvbikgPT4ge1xuICAgIC8vIEFscGhhIGFsd2F5cyBmaXQgaW50byBbMCwgMV0gcmFuZ2VcbiAgICBvbkNoYW5nZSh7IGE6IGNsYW1wKGhzdmEuYSArIG9mZnNldC5sZWZ0KSB9KTtcbiAgfTtcblxuICAvLyBXZSB1c2UgYE9iamVjdC5hc3NpZ25gIGluc3RlYWQgb2YgdGhlIHNwcmVhZCBvcGVyYXRvclxuICAvLyB0byBwcmV2ZW50IGFkZGluZyB0aGUgcG9seWZpbGwgKGFib3V0IDE1MCBieXRlcyBnemlwcGVkKVxuICBjb25zdCBjb2xvckZyb20gPSBoc3ZhVG9Ic2xhU3RyaW5nKE9iamVjdC5hc3NpZ24oe30sIGhzdmEsIHsgYTogMCB9KSk7XG4gIGNvbnN0IGNvbG9yVG8gPSBoc3ZhVG9Ic2xhU3RyaW5nKE9iamVjdC5hc3NpZ24oe30sIGhzdmEsIHsgYTogMSB9KSk7XG5cbiAgY29uc3QgZ3JhZGllbnRTdHlsZSA9IHtcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IGBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICR7Y29sb3JGcm9tfSwgJHtjb2xvclRvfSlgLFxuICB9O1xuXG4gIGNvbnN0IG5vZGVDbGFzc05hbWUgPSBmb3JtYXRDbGFzc05hbWUoW1wicmVhY3QtY29sb3JmdWxfX2FscGhhXCIsIGNsYXNzTmFtZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e25vZGVDbGFzc05hbWV9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWFjdC1jb2xvcmZ1bF9fYWxwaGEtZ3JhZGllbnRcIiBzdHlsZT17Z3JhZGllbnRTdHlsZX0gLz5cbiAgICAgIDxJbnRlcmFjdGl2ZVxuICAgICAgICBvbk1vdmU9e2hhbmRsZU1vdmV9XG4gICAgICAgIG9uS2V5PXtoYW5kbGVLZXl9XG4gICAgICAgIGFyaWEtbGFiZWw9XCJBbHBoYVwiXG4gICAgICAgIGFyaWEtdmFsdWV0ZXh0PXtgJHtyb3VuZChoc3ZhLmEgKiAxMDApfSVgfVxuICAgICAgPlxuICAgICAgICA8UG9pbnRlclxuICAgICAgICAgIGNsYXNzTmFtZT1cInJlYWN0LWNvbG9yZnVsX19hbHBoYS1wb2ludGVyXCJcbiAgICAgICAgICBsZWZ0PXtoc3ZhLmF9XG4gICAgICAgICAgY29sb3I9e2hzdmFUb0hzbGFTdHJpbmcoaHN2YSl9XG4gICAgICAgIC8+XG4gICAgICA8L0ludGVyYWN0aXZlPlxuICAgIDwvZGl2PlxuICApO1xufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgSHVlIH0gZnJvbSBcIi4vSHVlXCI7XG5pbXBvcnQgeyBTYXR1cmF0aW9uIH0gZnJvbSBcIi4vU2F0dXJhdGlvblwiO1xuaW1wb3J0IHsgQWxwaGEgfSBmcm9tIFwiLi9BbHBoYVwiO1xuXG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcywgQW55Q29sb3IgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IHVzZUNvbG9yTWFuaXB1bGF0aW9uIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUNvbG9yTWFuaXB1bGF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTdHlsZVNoZWV0IH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVN0eWxlU2hlZXRcIjtcbmltcG9ydCB7IGZvcm1hdENsYXNzTmFtZSB9IGZyb20gXCIuLi8uLi91dGlscy9mb3JtYXRcIjtcblxuaW50ZXJmYWNlIFByb3BzPFQgZXh0ZW5kcyBBbnlDb2xvcj4gZXh0ZW5kcyBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPFQ+PiB7XG4gIGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8VD47XG59XG5cbmV4cG9ydCBjb25zdCBBbHBoYUNvbG9yUGlja2VyID0gPFQgZXh0ZW5kcyBBbnlDb2xvcj4oe1xuICBjbGFzc05hbWUsXG4gIGNvbG9yTW9kZWwsXG4gIGNvbG9yID0gY29sb3JNb2RlbC5kZWZhdWx0Q29sb3IsXG4gIG9uQ2hhbmdlLFxuICAuLi5yZXN0XG59OiBQcm9wczxUPik6IEpTWC5FbGVtZW50ID0+IHtcbiAgY29uc3Qgbm9kZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIHVzZVN0eWxlU2hlZXQobm9kZVJlZik7XG5cbiAgY29uc3QgW2hzdmEsIHVwZGF0ZUhzdmFdID0gdXNlQ29sb3JNYW5pcHVsYXRpb248VD4oY29sb3JNb2RlbCwgY29sb3IsIG9uQ2hhbmdlKTtcblxuICBjb25zdCBub2RlQ2xhc3NOYW1lID0gZm9ybWF0Q2xhc3NOYW1lKFtcInJlYWN0LWNvbG9yZnVsXCIsIGNsYXNzTmFtZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiB7Li4ucmVzdH0gcmVmPXtub2RlUmVmfSBjbGFzc05hbWU9e25vZGVDbGFzc05hbWV9PlxuICAgICAgPFNhdHVyYXRpb24gaHN2YT17aHN2YX0gb25DaGFuZ2U9e3VwZGF0ZUhzdmF9IC8+XG4gICAgICA8SHVlIGh1ZT17aHN2YS5ofSBvbkNoYW5nZT17dXBkYXRlSHN2YX0gLz5cbiAgICAgIDxBbHBoYSBoc3ZhPXtoc3ZhfSBvbkNoYW5nZT17dXBkYXRlSHN2YX0gY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX2xhc3QtY29udHJvbFwiIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBbHBoYUNvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0FscGhhQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBIc2xhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IGhzbGFUb0hzdmEsIGhzdmFUb0hzbGEgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPEhzbGFDb2xvcj4gPSB7XG4gIGRlZmF1bHRDb2xvcjogeyBoOiAwLCBzOiAwLCBsOiAwLCBhOiAxIH0sXG4gIHRvSHN2YTogaHNsYVRvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzbGEsXG4gIGVxdWFsOiBlcXVhbENvbG9yT2JqZWN0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBIc2xhQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8SHNsYUNvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxBbHBoYUNvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEFscGhhQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQWxwaGFDb2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaHNsYVN0cmluZ1RvSHN2YSwgaHN2YVRvSHNsYVN0cmluZyB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8c3RyaW5nPiA9IHtcbiAgZGVmYXVsdENvbG9yOiBcImhzbGEoMCwgMCUsIDAlLCAxKVwiLFxuICB0b0hzdmE6IGhzbGFTdHJpbmdUb0hzdmEsXG4gIGZyb21Ic3ZhOiBoc3ZhVG9Ic2xhU3RyaW5nLFxuICBlcXVhbDogZXF1YWxDb2xvclN0cmluZyxcbn07XG5cbmV4cG9ydCBjb25zdCBIc2xhU3RyaW5nQ29sb3JQaWNrZXIgPSAoXG4gIHByb3BzOiBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPHN0cmluZz4+XG4pOiBKU1guRWxlbWVudCA9PiA8QWxwaGFDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9Db2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMsIEhzbENvbG9yIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBlcXVhbENvbG9yT2JqZWN0cyB9IGZyb20gXCIuLi91dGlscy9jb21wYXJlXCI7XG5pbXBvcnQgeyBoc2xhVG9Ic3ZhLCBoc3ZhVG9Ic2xhLCBoc2xhVG9Ic2wgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPEhzbENvbG9yPiA9IHtcbiAgZGVmYXVsdENvbG9yOiB7IGg6IDAsIHM6IDAsIGw6IDAgfSxcbiAgdG9Ic3ZhOiAoeyBoLCBzLCBsIH0pID0+IGhzbGFUb0hzdmEoeyBoLCBzLCBsLCBhOiAxIH0pLFxuICBmcm9tSHN2YTogKGhzdmEpID0+IGhzbGFUb0hzbChoc3ZhVG9Ic2xhKGhzdmEpKSxcbiAgZXF1YWw6IGVxdWFsQ29sb3JPYmplY3RzLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzbENvbG9yUGlja2VyID0gKHByb3BzOiBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPEhzbENvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9Db2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaHNsU3RyaW5nVG9Ic3ZhLCBoc3ZhVG9Ic2xTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPHN0cmluZz4gPSB7XG4gIGRlZmF1bHRDb2xvcjogXCJoc2woMCwgMCUsIDAlKVwiLFxuICB0b0hzdmE6IGhzbFN0cmluZ1RvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzbFN0cmluZyxcbiAgZXF1YWw6IGVxdWFsQ29sb3JTdHJpbmcsXG59O1xuXG5leHBvcnQgY29uc3QgSHNsU3RyaW5nQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8c3RyaW5nPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBbHBoYUNvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0FscGhhQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBIc3ZhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHJvdW5kSHN2YSB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8SHN2YUNvbG9yPiA9IHtcbiAgZGVmYXVsdENvbG9yOiB7IGg6IDAsIHM6IDAsIHY6IDAsIGE6IDEgfSxcbiAgdG9Ic3ZhOiAoaHN2YSkgPT4gaHN2YSxcbiAgZnJvbUhzdmE6IHJvdW5kSHN2YSxcbiAgZXF1YWw6IGVxdWFsQ29sb3JPYmplY3RzLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzdmFDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxIc3ZhQ29sb3I+Pik6IEpTWC5FbGVtZW50ID0+IChcbiAgPEFscGhhQ29sb3JQaWNrZXIgey4uLnByb3BzfSBjb2xvck1vZGVsPXtjb2xvck1vZGVsfSAvPlxuKTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQWxwaGFDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9BbHBoYUNvbG9yUGlja2VyXCI7XG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgZXF1YWxDb2xvclN0cmluZyB9IGZyb20gXCIuLi91dGlscy9jb21wYXJlXCI7XG5pbXBvcnQgeyBoc3ZhU3RyaW5nVG9Ic3ZhLCBoc3ZhVG9Ic3ZhU3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnZlcnRcIjtcblxuY29uc3QgY29sb3JNb2RlbDogQ29sb3JNb2RlbDxzdHJpbmc+ID0ge1xuICBkZWZhdWx0Q29sb3I6IFwiaHN2YSgwLCAwJSwgMCUsIDEpXCIsXG4gIHRvSHN2YTogaHN2YVN0cmluZ1RvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzdmFTdHJpbmcsXG4gIGVxdWFsOiBlcXVhbENvbG9yU3RyaW5nLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzdmFTdHJpbmdDb2xvclBpY2tlciA9IChcbiAgcHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8c3RyaW5nPj5cbik6IEpTWC5FbGVtZW50ID0+IDxBbHBoYUNvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz47XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0NvbG9yUGlja2VyXCI7XG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcywgSHN2Q29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IGhzdmFUb0hzdiB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8SHN2Q29sb3I+ID0ge1xuICBkZWZhdWx0Q29sb3I6IHsgaDogMCwgczogMCwgdjogMCB9LFxuICB0b0hzdmE6ICh7IGgsIHMsIHYgfSkgPT4gKHsgaCwgcywgdiwgYTogMSB9KSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzdixcbiAgZXF1YWw6IGVxdWFsQ29sb3JPYmplY3RzLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzdkNvbG9yUGlja2VyID0gKHByb3BzOiBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPEhzdkNvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9Db2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaHN2U3RyaW5nVG9Ic3ZhLCBoc3ZhVG9Ic3ZTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPHN0cmluZz4gPSB7XG4gIGRlZmF1bHRDb2xvcjogXCJoc3YoMCwgMCUsIDAlKVwiLFxuICB0b0hzdmE6IGhzdlN0cmluZ1RvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzdlN0cmluZyxcbiAgZXF1YWw6IGVxdWFsQ29sb3JTdHJpbmcsXG59O1xuXG5leHBvcnQgY29uc3QgSHN2U3RyaW5nQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8c3RyaW5nPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBbHBoYUNvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0FscGhhQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBSZ2JhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHJnYmFUb0hzdmEsIGhzdmFUb1JnYmEgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPFJnYmFDb2xvcj4gPSB7XG4gIGRlZmF1bHRDb2xvcjogeyByOiAwLCBnOiAwLCBiOiAwLCBhOiAxIH0sXG4gIHRvSHN2YTogcmdiYVRvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb1JnYmEsXG4gIGVxdWFsOiBlcXVhbENvbG9yT2JqZWN0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBSZ2JhQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8UmdiYUNvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxBbHBoYUNvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEFscGhhQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQWxwaGFDb2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgcmdiYVN0cmluZ1RvSHN2YSwgaHN2YVRvUmdiYVN0cmluZyB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8c3RyaW5nPiA9IHtcbiAgZGVmYXVsdENvbG9yOiBcInJnYmEoMCwgMCwgMCwgMSlcIixcbiAgdG9Ic3ZhOiByZ2JhU3RyaW5nVG9Ic3ZhLFxuICBmcm9tSHN2YTogaHN2YVRvUmdiYVN0cmluZyxcbiAgZXF1YWw6IGVxdWFsQ29sb3JTdHJpbmcsXG59O1xuXG5leHBvcnQgY29uc3QgUmdiYVN0cmluZ0NvbG9yUGlja2VyID0gKFxuICBwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxzdHJpbmc+PlxuKTogSlNYLkVsZW1lbnQgPT4gPEFscGhhQ29sb3JQaWNrZXIgey4uLnByb3BzfSBjb2xvck1vZGVsPXtjb2xvck1vZGVsfSAvPjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBSZ2JDb2xvciB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgZXF1YWxDb2xvck9iamVjdHMgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgcmdiYVRvSHN2YSwgaHN2YVRvUmdiYSwgcmdiYVRvUmdiIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnZlcnRcIjtcblxuY29uc3QgY29sb3JNb2RlbDogQ29sb3JNb2RlbDxSZ2JDb2xvcj4gPSB7XG4gIGRlZmF1bHRDb2xvcjogeyByOiAwLCBnOiAwLCBiOiAwIH0sXG4gIHRvSHN2YTogKHsgciwgZywgYiB9KSA9PiByZ2JhVG9Ic3ZhKHsgciwgZywgYiwgYTogMSB9KSxcbiAgZnJvbUhzdmE6IChoc3ZhKSA9PiByZ2JhVG9SZ2IoaHN2YVRvUmdiYShoc3ZhKSksXG4gIGVxdWFsOiBlcXVhbENvbG9yT2JqZWN0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBSZ2JDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxSZ2JDb2xvcj4+KTogSlNYLkVsZW1lbnQgPT4gKFxuICA8Q29sb3JQaWNrZXIgey4uLnByb3BzfSBjb2xvck1vZGVsPXtjb2xvck1vZGVsfSAvPlxuKTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBlcXVhbENvbG9yU3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHJnYlN0cmluZ1RvSHN2YSwgaHN2YVRvUmdiU3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnZlcnRcIjtcblxuY29uc3QgY29sb3JNb2RlbDogQ29sb3JNb2RlbDxzdHJpbmc+ID0ge1xuICBkZWZhdWx0Q29sb3I6IFwicmdiKDAsIDAsIDApXCIsXG4gIHRvSHN2YTogcmdiU3RyaW5nVG9Ic3ZhLFxuICBmcm9tSHN2YTogaHN2YVRvUmdiU3RyaW5nLFxuICBlcXVhbDogZXF1YWxDb2xvclN0cmluZyxcbn07XG5cbmV4cG9ydCBjb25zdCBSZ2JTdHJpbmdDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxzdHJpbmc+Pik6IEpTWC5FbGVtZW50ID0+IChcbiAgPENvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJjb25zdCBtYXRjaGVyID0gL14jPyhbMC05QS1GXXszLDh9KSQvaTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkSGV4ID0gKHZhbHVlOiBzdHJpbmcsIGFscGhhPzogYm9vbGVhbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBtYXRjaCA9IG1hdGNoZXIuZXhlYyh2YWx1ZSk7XG4gIGNvbnN0IGxlbmd0aCA9IG1hdGNoID8gbWF0Y2hbMV0ubGVuZ3RoIDogMDtcblxuICByZXR1cm4gKFxuICAgIGxlbmd0aCA9PT0gMyB8fCAvLyAnI3JnYicgZm9ybWF0XG4gICAgbGVuZ3RoID09PSA2IHx8IC8vICcjcnJnZ2JiJyBmb3JtYXRcbiAgICAoISFhbHBoYSAmJiBsZW5ndGggPT09IDQpIHx8IC8vICcjcmdiYScgZm9ybWF0XG4gICAgKCEhYWxwaGEgJiYgbGVuZ3RoID09PSA4KSAvLyAnI3JyZ2diYmFhJyBmb3JtYXRcbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VFdmVudENhbGxiYWNrXCI7XG5pbXBvcnQgeyBDb2xvcklucHV0QmFzZVByb3BzIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbmludGVyZmFjZSBQcm9wcyBleHRlbmRzIENvbG9ySW5wdXRCYXNlUHJvcHMge1xuICAvKiogQmxvY2tzIHR5cGluZyBpbnZhbGlkIGNoYXJhY3RlcnMgYW5kIGxpbWl0cyBzdHJpbmcgbGVuZ3RoICovXG4gIGVzY2FwZTogKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcbiAgLyoqIENoZWNrcyB0aGF0IHZhbHVlIGlzIHZhbGlkIGNvbG9yIHN0cmluZyAqL1xuICB2YWxpZGF0ZTogKHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIC8qKiBQcm9jZXNzZXMgdmFsdWUgYmVmb3JlIGRpc3BsYXlpbmcgaXQgaW4gdGhlIGlucHV0ICovXG4gIGZvcm1hdD86ICh2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIC8qKiBQcm9jZXNzZXMgdmFsdWUgYmVmb3JlIHNlbmRpbmcgaXQgaW4gYG9uQ2hhbmdlYCAqL1xuICBwcm9jZXNzPzogKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IENvbG9ySW5wdXQgPSAocHJvcHM6IFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCB7IGNvbG9yID0gXCJcIiwgb25DaGFuZ2UsIG9uQmx1ciwgZXNjYXBlLCB2YWxpZGF0ZSwgZm9ybWF0LCBwcm9jZXNzLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiBlc2NhcGUoY29sb3IpKTtcbiAgY29uc3Qgb25DaGFuZ2VDYWxsYmFjayA9IHVzZUV2ZW50Q2FsbGJhY2s8c3RyaW5nPihvbkNoYW5nZSk7XG4gIGNvbnN0IG9uQmx1ckNhbGxiYWNrID0gdXNlRXZlbnRDYWxsYmFjazxSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+PihvbkJsdXIpO1xuXG4gIC8vIFRyaWdnZXIgYG9uQ2hhbmdlYCBoYW5kbGVyIG9ubHkgaWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgdmFsaWQgY29sb3JcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBpbnB1dFZhbHVlID0gZXNjYXBlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgIHNldFZhbHVlKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKHZhbGlkYXRlKGlucHV0VmFsdWUpKSBvbkNoYW5nZUNhbGxiYWNrKHByb2Nlc3MgPyBwcm9jZXNzKGlucHV0VmFsdWUpIDogaW5wdXRWYWx1ZSk7XG4gICAgfSxcbiAgICBbZXNjYXBlLCBwcm9jZXNzLCB2YWxpZGF0ZSwgb25DaGFuZ2VDYWxsYmFja11cbiAgKTtcblxuICAvLyBUYWtlIHRoZSBjb2xvciBmcm9tIHByb3BzIGlmIHRoZSBsYXN0IHR5cGVkIGNvbG9yIChpbiBsb2NhbCBzdGF0ZSkgaXMgbm90IHZhbGlkXG4gIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCF2YWxpZGF0ZShlLnRhcmdldC52YWx1ZSkpIHNldFZhbHVlKGVzY2FwZShjb2xvcikpO1xuICAgICAgb25CbHVyQ2FsbGJhY2soZSk7XG4gICAgfSxcbiAgICBbY29sb3IsIGVzY2FwZSwgdmFsaWRhdGUsIG9uQmx1ckNhbGxiYWNrXVxuICApO1xuXG4gIC8vIFVwZGF0ZSB0aGUgbG9jYWwgc3RhdGUgd2hlbiBgY29sb3JgIHByb3BlcnR5IHZhbHVlIGlzIGNoYW5nZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRWYWx1ZShlc2NhcGUoY29sb3IpKTtcbiAgfSwgW2NvbG9yLCBlc2NhcGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxpbnB1dFxuICAgICAgey4uLnJlc3R9XG4gICAgICB2YWx1ZT17Zm9ybWF0ID8gZm9ybWF0KHZhbHVlKSA6IHZhbHVlfVxuICAgICAgc3BlbGxDaGVjaz1cImZhbHNlXCIgLy8gdGhlIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBjaGVja2VkIGZvciBzcGVsbGluZyBlcnJvcnNcbiAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgLz5cbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbG9ySW5wdXRCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgdmFsaWRIZXggfSBmcm9tIFwiLi4vdXRpbHMvdmFsaWRhdGVcIjtcbmltcG9ydCB7IENvbG9ySW5wdXQgfSBmcm9tIFwiLi9jb21tb24vQ29sb3JJbnB1dFwiO1xuXG5pbnRlcmZhY2UgSGV4Q29sb3JJbnB1dFByb3BzIGV4dGVuZHMgQ29sb3JJbnB1dEJhc2VQcm9wcyB7XG4gIC8qKiBFbmFibGVzIGAjYCBwcmVmaXggZGlzcGxheWluZyAqL1xuICBwcmVmaXhlZD86IGJvb2xlYW47XG4gIC8qKiBBbGxvd3MgYCNyZ2JhYCBhbmQgYCNycmdnYmJhYWAgY29sb3IgZm9ybWF0cyAqL1xuICBhbHBoYT86IGJvb2xlYW47XG59XG5cbi8qKiBBZGRzIFwiI1wiIHN5bWJvbCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgKi9cbmNvbnN0IHByZWZpeCA9ICh2YWx1ZTogc3RyaW5nKSA9PiBcIiNcIiArIHZhbHVlO1xuXG5leHBvcnQgY29uc3QgSGV4Q29sb3JJbnB1dCA9IChwcm9wczogSGV4Q29sb3JJbnB1dFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCB7IHByZWZpeGVkLCBhbHBoYSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgLyoqIEVzY2FwZXMgYWxsIG5vbi1oZXhhZGVjaW1hbCBjaGFyYWN0ZXJzIGluY2x1ZGluZyBcIiNcIiAqL1xuICBjb25zdCBlc2NhcGUgPSB1c2VDYWxsYmFjayhcbiAgICAodmFsdWU6IHN0cmluZykgPT4gdmFsdWUucmVwbGFjZSgvKFteMC05QS1GXSspL2dpLCBcIlwiKS5zdWJzdHIoMCwgYWxwaGEgPyA4IDogNiksXG4gICAgW2FscGhhXVxuICApO1xuXG4gIC8qKiBWYWxpZGF0ZXMgaGV4YWRlY2ltYWwgc3RyaW5ncyAqL1xuICBjb25zdCB2YWxpZGF0ZSA9IHVzZUNhbGxiYWNrKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWxpZEhleCh2YWx1ZSwgYWxwaGEpLCBbYWxwaGFdKTtcblxuICByZXR1cm4gKFxuICAgIDxDb2xvcklucHV0XG4gICAgICB7Li4ucmVzdH1cbiAgICAgIGVzY2FwZT17ZXNjYXBlfVxuICAgICAgZm9ybWF0PXtwcmVmaXhlZCA/IHByZWZpeCA6IHVuZGVmaW5lZH1cbiAgICAgIHByb2Nlc3M9e3ByZWZpeH1cbiAgICAgIHZhbGlkYXRlPXt2YWxpZGF0ZX1cbiAgICAvPlxuICApO1xufTtcbiIsImltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbi5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuaXRlcmF0b3IuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mcm9tLmpzXCI7XG5cbnZhciBfQ29sb3JQaWNrZXIsIF9mYWxsYmFja0NvbG9yO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkpIHJldHVybjsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmFzc2lnbi5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC52YWx1ZXMuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcubWF0Y2guanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnN0YXJ0cy13aXRoLmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNwbGl0LmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIZXhDb2xvclBpY2tlciwgSHNsYVN0cmluZ0NvbG9yUGlja2VyLCBSZ2JhU3RyaW5nQ29sb3JQaWNrZXIgfSBmcm9tICdyZWFjdC1jb2xvcmZ1bCc7XG5pbXBvcnQgY29udmVydCBmcm9tICdjb2xvci1jb252ZXJ0JztcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gvdGhyb3R0bGUnO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnQHN0b3J5Ym9vay90aGVtaW5nJztcbmltcG9ydCB7IFRvb2x0aXBOb3RlIH0gZnJvbSAnLi4vdG9vbHRpcC9Ub29sdGlwTm90ZSc7XG5pbXBvcnQgeyBXaXRoVG9vbHRpcCB9IGZyb20gJy4uL3Rvb2x0aXAvbGF6eS1XaXRoVG9vbHRpcCc7XG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vZm9ybSc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uL2ljb24vaWNvbic7XG5pbXBvcnQgeyBnZXRDb250cm9sSWQgfSBmcm9tICcuL2hlbHBlcnMnO1xudmFyIFdyYXBwZXIgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIG1heFdpZHRoOiAyNTBcbn0pO1xudmFyIFBpY2tlclRvb2x0aXAgPSBzdHlsZWQoV2l0aFRvb2x0aXApKHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIHpJbmRleDogMSxcbiAgdG9wOiA0LFxuICBsZWZ0OiA0XG59KTtcbnZhciBUb29sdGlwQ29udGVudCA9IHN0eWxlZC5kaXYoe1xuICB3aWR0aDogMjAwLFxuICBtYXJnaW46IDUsXG4gICcucmVhY3QtY29sb3JmdWxfX3NhdHVyYXRpb24nOiB7XG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4IDRweCAwIDAnXG4gIH0sXG4gICcucmVhY3QtY29sb3JmdWxfX2h1ZSc6IHtcbiAgICBib3hTaGFkb3c6ICdpbnNldCAwIDAgMCAxcHggcmdiKDAgMCAwIC8gNSUpJ1xuICB9LFxuICAnLnJlYWN0LWNvbG9yZnVsX19sYXN0LWNvbnRyb2wnOiB7XG4gICAgYm9yZGVyUmFkaXVzOiAnMCAwIDRweCA0cHgnXG4gIH1cbn0pO1xudmFyIE5vdGUgPSBzdHlsZWQoVG9vbHRpcE5vdGUpKGZ1bmN0aW9uIChfcmVmKSB7XG4gIHZhciB0aGVtZSA9IF9yZWYudGhlbWU7XG4gIHJldHVybiB7XG4gICAgZm9udEZhbWlseTogdGhlbWUudHlwb2dyYXBoeS5mb250cy5iYXNlXG4gIH07XG59KTtcbnZhciBTd2F0Y2hlcyA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiAnZ3JpZCcsXG4gIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOSwgMTZweCknLFxuICBnYXA6IDYsXG4gIHBhZGRpbmc6IDMsXG4gIG1hcmdpblRvcDogNSxcbiAgd2lkdGg6IDIwMFxufSk7XG52YXIgU3dhdGNoQ29sb3IgPSBzdHlsZWQuZGl2KGZ1bmN0aW9uIChfcmVmMikge1xuICB2YXIgdGhlbWUgPSBfcmVmMi50aGVtZSxcbiAgICAgIGFjdGl2ZSA9IF9yZWYyLmFjdGl2ZTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogMTYsXG4gICAgaGVpZ2h0OiAxNixcbiAgICBib3hTaGFkb3c6IGFjdGl2ZSA/IFwiXCIuY29uY2F0KHRoZW1lLmFwcEJvcmRlckNvbG9yLCBcIiAwIDAgMCAxcHggaW5zZXQsIFwiKS5jb25jYXQodGhlbWUuY29sb3IubWVkaXVtZGFyaywgXCI1MCAwIDAgMCA0cHhcIikgOiBcIlwiLmNvbmNhdCh0aGVtZS5hcHBCb3JkZXJDb2xvciwgXCIgMCAwIDAgMXB4IGluc2V0XCIpLFxuICAgIGJvcmRlclJhZGl1czogdGhlbWUuYXBwQm9yZGVyUmFkaXVzXG4gIH07XG59KTtcbnZhciBzd2F0Y2hCYWNrZ3JvdW5kID0gXCJ1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMTZcXFwiIGhlaWdodD1cXFwiMTZcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjA1XFxcIj48cGF0aCBkPVxcXCJNOCAwaDh2OEg4ek0wIDhoOHY4SDB6XFxcIi8+PC9zdmc+JylcIjtcblxudmFyIFN3YXRjaCA9IGZ1bmN0aW9uIFN3YXRjaChfcmVmMykge1xuICB2YXIgdmFsdWUgPSBfcmVmMy52YWx1ZSxcbiAgICAgIGFjdGl2ZSA9IF9yZWYzLmFjdGl2ZSxcbiAgICAgIG9uQ2xpY2sgPSBfcmVmMy5vbkNsaWNrLFxuICAgICAgc3R5bGUgPSBfcmVmMy5zdHlsZSxcbiAgICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYzLCBbXCJ2YWx1ZVwiLCBcImFjdGl2ZVwiLCBcIm9uQ2xpY2tcIiwgXCJzdHlsZVwiXSk7XG5cbiAgdmFyIGJhY2tncm91bmRJbWFnZSA9IFwibGluZWFyLWdyYWRpZW50KFwiLmNvbmNhdCh2YWx1ZSwgXCIsIFwiKS5jb25jYXQodmFsdWUsIFwiKSwgXCIpLmNvbmNhdChzd2F0Y2hCYWNrZ3JvdW5kLCBcIiwgbGluZWFyLWdyYWRpZW50KCNmZmYsICNmZmYpXCIpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3dhdGNoQ29sb3IsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGFjdGl2ZTogYWN0aXZlLFxuICAgIG9uQ2xpY2s6IG9uQ2xpY2ssXG4gICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIHN0eWxlLCB7XG4gICAgICBiYWNrZ3JvdW5kSW1hZ2U6IGJhY2tncm91bmRJbWFnZVxuICAgIH0pXG4gIH0pKTtcbn07XG5cblN3YXRjaC5kaXNwbGF5TmFtZSA9IFwiU3dhdGNoXCI7XG52YXIgSW5wdXQgPSBzdHlsZWQoRm9ybS5JbnB1dCkoZnVuY3Rpb24gKF9yZWY0KSB7XG4gIHZhciB0aGVtZSA9IF9yZWY0LnRoZW1lO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcGFkZGluZ0xlZnQ6IDMwLFxuICAgIHBhZGRpbmdSaWdodDogMzAsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgZm9udEZhbWlseTogdGhlbWUudHlwb2dyYXBoeS5mb250cy5iYXNlXG4gIH07XG59KTtcbnZhciBUb2dnbGVJY29uID0gc3R5bGVkKEljb25zKShmdW5jdGlvbiAoX3JlZjUpIHtcbiAgdmFyIHRoZW1lID0gX3JlZjUudGhlbWU7XG4gIHJldHVybiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgekluZGV4OiAxLFxuICAgIHRvcDogNixcbiAgICByaWdodDogNyxcbiAgICB3aWR0aDogMjAsXG4gICAgaGVpZ2h0OiAyMCxcbiAgICBwYWRkaW5nOiA0LFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGNvbG9yOiB0aGVtZS5pbnB1dC5jb2xvclxuICB9O1xufSk7XG52YXIgQ29sb3JTcGFjZTtcblxuKGZ1bmN0aW9uIChDb2xvclNwYWNlKSB7XG4gIENvbG9yU3BhY2VbXCJSR0JcIl0gPSBcInJnYlwiO1xuICBDb2xvclNwYWNlW1wiSFNMXCJdID0gXCJoc2xcIjtcbiAgQ29sb3JTcGFjZVtcIkhFWFwiXSA9IFwiaGV4XCI7XG59KShDb2xvclNwYWNlIHx8IChDb2xvclNwYWNlID0ge30pKTtcblxudmFyIENPTE9SX1NQQUNFUyA9IE9iamVjdC52YWx1ZXMoQ29sb3JTcGFjZSk7XG52YXIgQ09MT1JfUkVHRVhQID0gL1xcKChbMC05XSspLFxccyooWzAtOV0rKSU/LFxccyooWzAtOV0rKSU/LD9cXHMqKFswLTkuXSspP1xcKS87XG52YXIgUkdCX1JFR0VYUCA9IC9eXFxzKnJnYmE/XFwoKFswLTldKyksXFxzKihbMC05XSspLFxccyooWzAtOV0rKSw/XFxzKihbMC05Ll0rKT9cXClcXHMqJC9pO1xudmFyIEhTTF9SRUdFWFAgPSAvXlxccypoc2xhP1xcKChbMC05XSspLFxccyooWzAtOV0rKSUsXFxzKihbMC05XSspJSw/XFxzKihbMC05Ll0rKT9cXClcXHMqJC9pO1xudmFyIEhFWF9SRUdFWFAgPSAvXlxccyojPyhbMC05YS1mXXszfXxbMC05YS1mXXs2fSlcXHMqJC9pO1xudmFyIFNIT1JUSEVYX1JFR0VYUCA9IC9eXFxzKiM/KFswLTlhLWZdezN9KVxccyokL2k7XG52YXIgQ29sb3JQaWNrZXIgPSAoX0NvbG9yUGlja2VyID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfQ29sb3JQaWNrZXIsIENvbG9yU3BhY2UuSEVYLCBIZXhDb2xvclBpY2tlciksIF9kZWZpbmVQcm9wZXJ0eShfQ29sb3JQaWNrZXIsIENvbG9yU3BhY2UuUkdCLCBSZ2JhU3RyaW5nQ29sb3JQaWNrZXIpLCBfZGVmaW5lUHJvcGVydHkoX0NvbG9yUGlja2VyLCBDb2xvclNwYWNlLkhTTCwgSHNsYVN0cmluZ0NvbG9yUGlja2VyKSwgX0NvbG9yUGlja2VyKTtcbnZhciBmYWxsYmFja0NvbG9yID0gKF9mYWxsYmFja0NvbG9yID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfZmFsbGJhY2tDb2xvciwgQ29sb3JTcGFjZS5IRVgsICd0cmFuc3BhcmVudCcpLCBfZGVmaW5lUHJvcGVydHkoX2ZhbGxiYWNrQ29sb3IsIENvbG9yU3BhY2UuUkdCLCAncmdiYSgwLCAwLCAwLCAwKScpLCBfZGVmaW5lUHJvcGVydHkoX2ZhbGxiYWNrQ29sb3IsIENvbG9yU3BhY2UuSFNMLCAnaHNsYSgwLCAwJSwgMCUsIDApJyksIF9mYWxsYmFja0NvbG9yKTtcblxudmFyIHN0cmluZ1RvQXJncyA9IGZ1bmN0aW9uIHN0cmluZ1RvQXJncyh2YWx1ZSkge1xuICB2YXIgbWF0Y2ggPSB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmFsdWUubWF0Y2goQ09MT1JfUkVHRVhQKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIFswLCAwLCAwLCAxXTtcblxuICB2YXIgX21hdGNoID0gX3NsaWNlZFRvQXJyYXkobWF0Y2gsIDUpLFxuICAgICAgeCA9IF9tYXRjaFsxXSxcbiAgICAgIHkgPSBfbWF0Y2hbMl0sXG4gICAgICB6ID0gX21hdGNoWzNdLFxuICAgICAgX21hdGNoJCA9IF9tYXRjaFs0XSxcbiAgICAgIGEgPSBfbWF0Y2gkID09PSB2b2lkIDAgPyAxIDogX21hdGNoJDtcblxuICByZXR1cm4gW3gsIHksIHosIGFdLm1hcChOdW1iZXIpO1xufTtcblxudmFyIHBhcnNlVmFsdWUgPSBmdW5jdGlvbiBwYXJzZVZhbHVlKHZhbHVlKSB7XG4gIHZhciBfcmVmMTI7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdmFyIHZhbGlkID0gdHJ1ZTtcblxuICBpZiAoUkdCX1JFR0VYUC50ZXN0KHZhbHVlKSkge1xuICAgIHZhciBfcmVmODtcblxuICAgIHZhciBfc3RyaW5nVG9BcmdzID0gc3RyaW5nVG9BcmdzKHZhbHVlKSxcbiAgICAgICAgX3N0cmluZ1RvQXJnczIgPSBfc2xpY2VkVG9BcnJheShfc3RyaW5nVG9BcmdzLCA0KSxcbiAgICAgICAgciA9IF9zdHJpbmdUb0FyZ3MyWzBdLFxuICAgICAgICBnID0gX3N0cmluZ1RvQXJnczJbMV0sXG4gICAgICAgIGIgPSBfc3RyaW5nVG9BcmdzMlsyXSxcbiAgICAgICAgYSA9IF9zdHJpbmdUb0FyZ3MyWzNdO1xuXG4gICAgdmFyIF9yZWY2ID0gY29udmVydC5yZ2IuaHNsKFtyLCBnLCBiXSkgfHwgWzAsIDAsIDBdLFxuICAgICAgICBfcmVmNyA9IF9zbGljZWRUb0FycmF5KF9yZWY2LCAzKSxcbiAgICAgICAgaCA9IF9yZWY3WzBdLFxuICAgICAgICBzID0gX3JlZjdbMV0sXG4gICAgICAgIGwgPSBfcmVmN1syXTtcblxuICAgIHJldHVybiBfcmVmOCA9IHtcbiAgICAgIHZhbGlkOiB2YWxpZCxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGtleXdvcmQ6IGNvbnZlcnQucmdiLmtleXdvcmQoW3IsIGcsIGJdKSxcbiAgICAgIGNvbG9yU3BhY2U6IENvbG9yU3BhY2UuUkdCXG4gICAgfSwgX2RlZmluZVByb3BlcnR5KF9yZWY4LCBDb2xvclNwYWNlLlJHQiwgdmFsdWUpLCBfZGVmaW5lUHJvcGVydHkoX3JlZjgsIENvbG9yU3BhY2UuSFNMLCBcImhzbGEoXCIuY29uY2F0KGgsIFwiLCBcIikuY29uY2F0KHMsIFwiJSwgXCIpLmNvbmNhdChsLCBcIiUsIFwiKS5jb25jYXQoYSwgXCIpXCIpKSwgX2RlZmluZVByb3BlcnR5KF9yZWY4LCBDb2xvclNwYWNlLkhFWCwgXCIjXCIuY29uY2F0KGNvbnZlcnQucmdiLmhleChbciwgZywgYl0pLnRvTG93ZXJDYXNlKCkpKSwgX3JlZjg7XG4gIH1cblxuICBpZiAoSFNMX1JFR0VYUC50ZXN0KHZhbHVlKSkge1xuICAgIHZhciBfcmVmMTE7XG5cbiAgICB2YXIgX3N0cmluZ1RvQXJnczMgPSBzdHJpbmdUb0FyZ3ModmFsdWUpLFxuICAgICAgICBfc3RyaW5nVG9BcmdzNCA9IF9zbGljZWRUb0FycmF5KF9zdHJpbmdUb0FyZ3MzLCA0KSxcbiAgICAgICAgX2ggPSBfc3RyaW5nVG9BcmdzNFswXSxcbiAgICAgICAgX3MyID0gX3N0cmluZ1RvQXJnczRbMV0sXG4gICAgICAgIF9sID0gX3N0cmluZ1RvQXJnczRbMl0sXG4gICAgICAgIF9hID0gX3N0cmluZ1RvQXJnczRbM107XG5cbiAgICB2YXIgX3JlZjkgPSBjb252ZXJ0LmhzbC5yZ2IoW19oLCBfczIsIF9sXSkgfHwgWzAsIDAsIDBdLFxuICAgICAgICBfcmVmMTAgPSBfc2xpY2VkVG9BcnJheShfcmVmOSwgMyksXG4gICAgICAgIF9yID0gX3JlZjEwWzBdLFxuICAgICAgICBfZyA9IF9yZWYxMFsxXSxcbiAgICAgICAgX2IgPSBfcmVmMTBbMl07XG5cbiAgICByZXR1cm4gX3JlZjExID0ge1xuICAgICAgdmFsaWQ6IHZhbGlkLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAga2V5d29yZDogY29udmVydC5oc2wua2V5d29yZChbX2gsIF9zMiwgX2xdKSxcbiAgICAgIGNvbG9yU3BhY2U6IENvbG9yU3BhY2UuSFNMXG4gICAgfSwgX2RlZmluZVByb3BlcnR5KF9yZWYxMSwgQ29sb3JTcGFjZS5SR0IsIFwicmdiYShcIi5jb25jYXQoX3IsIFwiLCBcIikuY29uY2F0KF9nLCBcIiwgXCIpLmNvbmNhdChfYiwgXCIsIFwiKS5jb25jYXQoX2EsIFwiKVwiKSksIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTEsIENvbG9yU3BhY2UuSFNMLCB2YWx1ZSksIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTEsIENvbG9yU3BhY2UuSEVYLCBcIiNcIi5jb25jYXQoY29udmVydC5oc2wuaGV4KFtfaCwgX3MyLCBfbF0pLnRvTG93ZXJDYXNlKCkpKSwgX3JlZjExO1xuICB9XG5cbiAgdmFyIHBsYWluID0gdmFsdWUucmVwbGFjZSgnIycsICcnKTtcbiAgdmFyIHJnYiA9IGNvbnZlcnQua2V5d29yZC5yZ2IocGxhaW4pIHx8IGNvbnZlcnQuaGV4LnJnYihwbGFpbik7XG4gIHZhciBoc2wgPSBjb252ZXJ0LnJnYi5oc2wocmdiKTtcbiAgdmFyIG1hcHBlZCA9IHZhbHVlO1xuICBpZiAoL1teI2EtZjAtOV0vaS50ZXN0KHZhbHVlKSkgbWFwcGVkID0gcGxhaW47ZWxzZSBpZiAoSEVYX1JFR0VYUC50ZXN0KHZhbHVlKSkgbWFwcGVkID0gXCIjXCIuY29uY2F0KHBsYWluKTtcblxuICBpZiAobWFwcGVkLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgIHZhbGlkID0gSEVYX1JFR0VYUC50ZXN0KG1hcHBlZCk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnZlcnQua2V5d29yZC5oZXgobWFwcGVkKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB2YWxpZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfcmVmMTIgPSB7XG4gICAgdmFsaWQ6IHZhbGlkLFxuICAgIHZhbHVlOiBtYXBwZWQsXG4gICAga2V5d29yZDogY29udmVydC5yZ2Iua2V5d29yZChyZ2IpLFxuICAgIGNvbG9yU3BhY2U6IENvbG9yU3BhY2UuSEVYXG4gIH0sIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTIsIENvbG9yU3BhY2UuUkdCLCBcInJnYmEoXCIuY29uY2F0KHJnYlswXSwgXCIsIFwiKS5jb25jYXQocmdiWzFdLCBcIiwgXCIpLmNvbmNhdChyZ2JbMl0sIFwiLCAxKVwiKSksIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTIsIENvbG9yU3BhY2UuSFNMLCBcImhzbGEoXCIuY29uY2F0KGhzbFswXSwgXCIsIFwiKS5jb25jYXQoaHNsWzFdLCBcIiUsIFwiKS5jb25jYXQoaHNsWzJdLCBcIiUsIDEpXCIpKSwgX2RlZmluZVByb3BlcnR5KF9yZWYxMiwgQ29sb3JTcGFjZS5IRVgsIG1hcHBlZCksIF9yZWYxMjtcbn07XG5cbnZhciBnZXRSZWFsVmFsdWUgPSBmdW5jdGlvbiBnZXRSZWFsVmFsdWUodmFsdWUsIGNvbG9yLCBjb2xvclNwYWNlKSB7XG4gIGlmICghdmFsdWUgfHwgIShjb2xvciAhPT0gbnVsbCAmJiBjb2xvciAhPT0gdm9pZCAwICYmIGNvbG9yLnZhbGlkKSkgcmV0dXJuIGZhbGxiYWNrQ29sb3JbY29sb3JTcGFjZV07XG4gIGlmIChjb2xvclNwYWNlICE9PSBDb2xvclNwYWNlLkhFWCkgcmV0dXJuIChjb2xvciA9PT0gbnVsbCB8fCBjb2xvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29sb3JbY29sb3JTcGFjZV0pIHx8IGZhbGxiYWNrQ29sb3JbY29sb3JTcGFjZV07XG5cbiAgaWYgKCFjb2xvci5oZXguc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBcIiNcIi5jb25jYXQoY29udmVydC5rZXl3b3JkLmhleChjb2xvci5oZXgpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2tDb2xvci5oZXg7XG4gICAgfVxuICB9XG5cbiAgdmFyIHNob3J0ID0gY29sb3IuaGV4Lm1hdGNoKFNIT1JUSEVYX1JFR0VYUCk7XG4gIGlmICghc2hvcnQpIHJldHVybiBIRVhfUkVHRVhQLnRlc3QoY29sb3IuaGV4KSA/IGNvbG9yLmhleCA6IGZhbGxiYWNrQ29sb3IuaGV4O1xuXG4gIHZhciBfc2hvcnQkMSRzcGxpdCA9IHNob3J0WzFdLnNwbGl0KCcnKSxcbiAgICAgIF9zaG9ydCQxJHNwbGl0MiA9IF9zbGljZWRUb0FycmF5KF9zaG9ydCQxJHNwbGl0LCAzKSxcbiAgICAgIHIgPSBfc2hvcnQkMSRzcGxpdDJbMF0sXG4gICAgICBnID0gX3Nob3J0JDEkc3BsaXQyWzFdLFxuICAgICAgYiA9IF9zaG9ydCQxJHNwbGl0MlsyXTtcblxuICByZXR1cm4gXCIjXCIuY29uY2F0KHIpLmNvbmNhdChyKS5jb25jYXQoZykuY29uY2F0KGcpLmNvbmNhdChiKS5jb25jYXQoYik7XG59O1xuXG52YXIgdXNlQ29sb3JJbnB1dCA9IGZ1bmN0aW9uIHVzZUNvbG9ySW5wdXQoaW5pdGlhbFZhbHVlLCBvbkNoYW5nZSkge1xuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlIHx8ICcnKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgdmFsdWUgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0VmFsdWUgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBfdXNlU3RhdGUzID0gdXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBwYXJzZVZhbHVlKHZhbHVlKTtcbiAgfSksXG4gICAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgICBjb2xvciA9IF91c2VTdGF0ZTRbMF0sXG4gICAgICBzZXRDb2xvciA9IF91c2VTdGF0ZTRbMV07XG5cbiAgdmFyIF91c2VTdGF0ZTUgPSB1c2VTdGF0ZSgoY29sb3IgPT09IG51bGwgfHwgY29sb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbG9yLmNvbG9yU3BhY2UpIHx8IENvbG9yU3BhY2UuSEVYKSxcbiAgICAgIF91c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU1LCAyKSxcbiAgICAgIGNvbG9yU3BhY2UgPSBfdXNlU3RhdGU2WzBdLFxuICAgICAgc2V0Q29sb3JTcGFjZSA9IF91c2VTdGF0ZTZbMV07IC8vIFJlc2V0IHN0YXRlIHdoZW4gaW5pdGlhbFZhbHVlIGJlY29tZXMgdW5kZWZpbmVkICh3aGVuIHJlc2V0dGluZyBjb250cm9scylcblxuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGluaXRpYWxWYWx1ZSAhPT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgc2V0VmFsdWUoJycpO1xuICAgIHNldENvbG9yKHVuZGVmaW5lZCk7XG4gICAgc2V0Q29sb3JTcGFjZShDb2xvclNwYWNlLkhFWCk7XG4gIH0sIFtpbml0aWFsVmFsdWVdKTtcbiAgdmFyIHJlYWxWYWx1ZSA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRSZWFsVmFsdWUodmFsdWUsIGNvbG9yLCBjb2xvclNwYWNlKS50b0xvd2VyQ2FzZSgpO1xuICB9LCBbdmFsdWUsIGNvbG9yLCBjb2xvclNwYWNlXSk7XG4gIHZhciB1cGRhdGVWYWx1ZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICh1cGRhdGUpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VWYWx1ZSh1cGRhdGUpO1xuICAgIHNldFZhbHVlKChwYXJzZWQgPT09IG51bGwgfHwgcGFyc2VkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJzZWQudmFsdWUpIHx8IHVwZGF0ZSB8fCAnJyk7XG4gICAgaWYgKCFwYXJzZWQpIHJldHVybjtcbiAgICBzZXRDb2xvcihwYXJzZWQpO1xuICAgIHNldENvbG9yU3BhY2UocGFyc2VkLmNvbG9yU3BhY2UpO1xuICAgIG9uQ2hhbmdlKHBhcnNlZC52YWx1ZSk7XG4gIH0sIFtvbkNoYW5nZV0pO1xuICB2YXIgY3ljbGVDb2xvclNwYWNlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBuZXh0ID0gQ09MT1JfU1BBQ0VTLmluZGV4T2YoY29sb3JTcGFjZSkgKyAxO1xuICAgIGlmIChuZXh0ID49IENPTE9SX1NQQUNFUy5sZW5ndGgpIG5leHQgPSAwO1xuICAgIHNldENvbG9yU3BhY2UoQ09MT1JfU1BBQ0VTW25leHRdKTtcbiAgICB2YXIgdXBkYXRlID0gKGNvbG9yID09PSBudWxsIHx8IGNvbG9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb2xvcltDT0xPUl9TUEFDRVNbbmV4dF1dKSB8fCAnJztcbiAgICBzZXRWYWx1ZSh1cGRhdGUpO1xuICAgIG9uQ2hhbmdlKHVwZGF0ZSk7XG4gIH0sIFtjb2xvciwgY29sb3JTcGFjZSwgb25DaGFuZ2VdKTtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgcmVhbFZhbHVlOiByZWFsVmFsdWUsXG4gICAgdXBkYXRlVmFsdWU6IHVwZGF0ZVZhbHVlLFxuICAgIGNvbG9yOiBjb2xvcixcbiAgICBjb2xvclNwYWNlOiBjb2xvclNwYWNlLFxuICAgIGN5Y2xlQ29sb3JTcGFjZTogY3ljbGVDb2xvclNwYWNlXG4gIH07XG59O1xuXG52YXIgaWQgPSBmdW5jdGlvbiBpZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvXFxzKi8sICcnKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIHVzZVByZXNldHMgPSBmdW5jdGlvbiB1c2VQcmVzZXRzKHByZXNldENvbG9ycywgY3VycmVudENvbG9yLCBjb2xvclNwYWNlKSB7XG4gIHZhciBfdXNlU3RhdGU3ID0gdXNlU3RhdGUoY3VycmVudENvbG9yICE9PSBudWxsICYmIGN1cnJlbnRDb2xvciAhPT0gdm9pZCAwICYmIGN1cnJlbnRDb2xvci52YWxpZCA/IFtjdXJyZW50Q29sb3JdIDogW10pLFxuICAgICAgX3VzZVN0YXRlOCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTcsIDIpLFxuICAgICAgc2VsZWN0ZWRDb2xvcnMgPSBfdXNlU3RhdGU4WzBdLFxuICAgICAgc2V0U2VsZWN0ZWRDb2xvcnMgPSBfdXNlU3RhdGU4WzFdOyAvLyBSZXNldCBzdGF0ZSB3aGVuIGN1cnJlbnRDb2xvciBiZWNvbWVzIHVuZGVmaW5lZCAod2hlbiByZXNldHRpbmcgY29udHJvbHMpXG5cblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjdXJyZW50Q29sb3IgIT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIHNldFNlbGVjdGVkQ29sb3JzKFtdKTtcbiAgfSwgW2N1cnJlbnRDb2xvcl0pO1xuICB2YXIgcHJlc2V0cyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBpbml0aWFsUHJlc2V0cyA9IChwcmVzZXRDb2xvcnMgfHwgW10pLm1hcChmdW5jdGlvbiAocHJlc2V0KSB7XG4gICAgICBpZiAodHlwZW9mIHByZXNldCA9PT0gJ3N0cmluZycpIHJldHVybiBwYXJzZVZhbHVlKHByZXNldCk7XG4gICAgICBpZiAocHJlc2V0LnRpdGxlKSByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcGFyc2VWYWx1ZShwcmVzZXQuY29sb3IpLCB7XG4gICAgICAgIGtleXdvcmQ6IHByZXNldC50aXRsZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcGFyc2VWYWx1ZShwcmVzZXQuY29sb3IpO1xuICAgIH0pO1xuICAgIHJldHVybiBpbml0aWFsUHJlc2V0cy5jb25jYXQoc2VsZWN0ZWRDb2xvcnMpLmZpbHRlcihCb29sZWFuKS5zbGljZSgtMjcpO1xuICB9LCBbcHJlc2V0Q29sb3JzLCBzZWxlY3RlZENvbG9yc10pO1xuICB2YXIgYWRkUHJlc2V0ID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGNvbG9yKSB7XG4gICAgaWYgKCEoY29sb3IgIT09IG51bGwgJiYgY29sb3IgIT09IHZvaWQgMCAmJiBjb2xvci52YWxpZCkpIHJldHVybjtcbiAgICBpZiAocHJlc2V0cy5zb21lKGZ1bmN0aW9uIChwcmVzZXQpIHtcbiAgICAgIHJldHVybiBpZChwcmVzZXRbY29sb3JTcGFjZV0pID09PSBpZChjb2xvcltjb2xvclNwYWNlXSk7XG4gICAgfSkpIHJldHVybjtcbiAgICBzZXRTZWxlY3RlZENvbG9ycyhmdW5jdGlvbiAoYXJyKSB7XG4gICAgICByZXR1cm4gYXJyLmNvbmNhdChjb2xvcik7XG4gICAgfSk7XG4gIH0sIFtjb2xvclNwYWNlLCBwcmVzZXRzXSk7XG4gIHJldHVybiB7XG4gICAgcHJlc2V0czogcHJlc2V0cyxcbiAgICBhZGRQcmVzZXQ6IGFkZFByZXNldFxuICB9O1xufTtcblxuZXhwb3J0IHZhciBDb2xvckNvbnRyb2wgPSBmdW5jdGlvbiBDb2xvckNvbnRyb2woX3JlZjEzKSB7XG4gIHZhciBuYW1lID0gX3JlZjEzLm5hbWUsXG4gICAgICBpbml0aWFsVmFsdWUgPSBfcmVmMTMudmFsdWUsXG4gICAgICBvbkNoYW5nZSA9IF9yZWYxMy5vbkNoYW5nZSxcbiAgICAgIG9uRm9jdXMgPSBfcmVmMTMub25Gb2N1cyxcbiAgICAgIG9uQmx1ciA9IF9yZWYxMy5vbkJsdXIsXG4gICAgICBwcmVzZXRDb2xvcnMgPSBfcmVmMTMucHJlc2V0Q29sb3JzLFxuICAgICAgc3RhcnRPcGVuID0gX3JlZjEzLnN0YXJ0T3BlbjtcblxuICB2YXIgX3VzZUNvbG9ySW5wdXQgPSB1c2VDb2xvcklucHV0KGluaXRpYWxWYWx1ZSwgdGhyb3R0bGUob25DaGFuZ2UsIDIwMCkpLFxuICAgICAgdmFsdWUgPSBfdXNlQ29sb3JJbnB1dC52YWx1ZSxcbiAgICAgIHJlYWxWYWx1ZSA9IF91c2VDb2xvcklucHV0LnJlYWxWYWx1ZSxcbiAgICAgIHVwZGF0ZVZhbHVlID0gX3VzZUNvbG9ySW5wdXQudXBkYXRlVmFsdWUsXG4gICAgICBjb2xvciA9IF91c2VDb2xvcklucHV0LmNvbG9yLFxuICAgICAgY29sb3JTcGFjZSA9IF91c2VDb2xvcklucHV0LmNvbG9yU3BhY2UsXG4gICAgICBjeWNsZUNvbG9yU3BhY2UgPSBfdXNlQ29sb3JJbnB1dC5jeWNsZUNvbG9yU3BhY2U7XG5cbiAgdmFyIF91c2VQcmVzZXRzID0gdXNlUHJlc2V0cyhwcmVzZXRDb2xvcnMsIGNvbG9yLCBjb2xvclNwYWNlKSxcbiAgICAgIHByZXNldHMgPSBfdXNlUHJlc2V0cy5wcmVzZXRzLFxuICAgICAgYWRkUHJlc2V0ID0gX3VzZVByZXNldHMuYWRkUHJlc2V0O1xuXG4gIHZhciBQaWNrZXIgPSBDb2xvclBpY2tlcltjb2xvclNwYWNlXTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZXIsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFBpY2tlclRvb2x0aXAsIHtcbiAgICB0cmlnZ2VyOiBcImNsaWNrXCIsXG4gICAgc3RhcnRPcGVuOiBzdGFydE9wZW4sXG4gICAgY2xvc2VPbkNsaWNrOiB0cnVlLFxuICAgIG9uVmlzaWJpbGl0eUNoYW5nZTogZnVuY3Rpb24gb25WaXNpYmlsaXR5Q2hhbmdlKCkge1xuICAgICAgcmV0dXJuIGFkZFByZXNldChjb2xvcik7XG4gICAgfSxcbiAgICB0b29sdGlwOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwQ29udGVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGlja2VyLCB7XG4gICAgICBjb2xvcjogcmVhbFZhbHVlID09PSAndHJhbnNwYXJlbnQnID8gJyMwMDAwMDAnIDogcmVhbFZhbHVlLFxuICAgICAgb25DaGFuZ2U6IHVwZGF0ZVZhbHVlLFxuICAgICAgb25Gb2N1czogb25Gb2N1cyxcbiAgICAgIG9uQmx1cjogb25CbHVyXG4gICAgfSksIHByZXNldHMubGVuZ3RoID4gMCAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTd2F0Y2hlcywgbnVsbCwgcHJlc2V0cy5tYXAoZnVuY3Rpb24gKHByZXNldCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChXaXRoVG9vbHRpcCAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAsIHtcbiAgICAgICAga2V5OiBcIlwiLmNvbmNhdChwcmVzZXQudmFsdWUsIFwiLVwiKS5jb25jYXQoaW5kZXgpLFxuICAgICAgICBoYXNDaHJvbWU6IGZhbHNlLFxuICAgICAgICB0b29sdGlwOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChOb3RlLCB7XG4gICAgICAgICAgbm90ZTogcHJlc2V0LmtleXdvcmQgfHwgcHJlc2V0LnZhbHVlXG4gICAgICAgIH0pXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTd2F0Y2gsIHtcbiAgICAgICAgdmFsdWU6IHByZXNldFtjb2xvclNwYWNlXSxcbiAgICAgICAgYWN0aXZlOiBjb2xvciAmJiBpZChwcmVzZXRbY29sb3JTcGFjZV0pID09PSBpZChjb2xvcltjb2xvclNwYWNlXSksXG4gICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZVZhbHVlKHByZXNldC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KSkpXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFN3YXRjaCwge1xuICAgIHZhbHVlOiByZWFsVmFsdWUsXG4gICAgc3R5bGU6IHtcbiAgICAgIG1hcmdpbjogNFxuICAgIH1cbiAgfSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dCwge1xuICAgIGlkOiBnZXRDb250cm9sSWQobmFtZSksXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShlKSB7XG4gICAgICByZXR1cm4gdXBkYXRlVmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgb25Gb2N1czogZnVuY3Rpb24gb25Gb2N1cyhlKSB7XG4gICAgICByZXR1cm4gZS50YXJnZXQuc2VsZWN0KCk7XG4gICAgfSxcbiAgICBwbGFjZWhvbGRlcjogXCJDaG9vc2UgY29sb3IuLi5cIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlSWNvbiwge1xuICAgIGljb246IFwibWFya3VwXCIsXG4gICAgb25DbGljazogY3ljbGVDb2xvclNwYWNlXG4gIH0pKTtcbn07XG5Db2xvckNvbnRyb2wuZGlzcGxheU5hbWUgPSBcIkNvbG9yQ29udHJvbFwiO1xuZXhwb3J0IGRlZmF1bHQgQ29sb3JDb250cm9sOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1013\n')},1038:function(module,exports,__webpack_require__){eval("/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = __webpack_require__(1082);\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L2NvbnZlcnNpb25zLmpzP2QyNTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLG9CQUFvQixtQkFBTyxDQUFDLElBQVk7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sMkJBQTJCO0FBQ2xDLFFBQVEsNEJBQTRCO0FBQ3BDLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sNkJBQTZCO0FBQ3BDLFdBQVcsaUNBQWlDO0FBQzVDLFVBQVUsZ0NBQWdDO0FBQzFDLFdBQVcsaUNBQWlDO0FBQzVDLE9BQU8scUNBQXFDO0FBQzVDLFNBQVMsMkNBQTJDO0FBQ3BELFFBQVE7QUFDUjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSxpQkFBaUI7QUFDekI7QUFDQTtBQUNBLG9EQUFvRCxnQkFBZ0I7QUFDcEUsa0RBQWtELGNBQWM7QUFDaEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFFBQVEsU0FBUztBQUNqQyxnQkFBZ0IsUUFBUSxTQUFTO0FBQ2pDLGlCQUFpQixPQUFPLFFBQVE7QUFDaEMsaUJBQWlCLE9BQU8sUUFBUTtBQUNoQyxnQkFBZ0IsU0FBUyxPQUFPO0FBQ2hDLGdCQUFnQixTQUFTLE9BQU87QUFDaEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUVBQXlFOztBQUV6RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaURBQWlELEVBQUUsVUFBVSxFQUFFO0FBQy9EO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsYUFBYSxhQUFhO0FBQ3pDO0FBQ0EsZUFBZSxhQUFhLGFBQWE7QUFDekM7QUFDQSxlQUFlLGFBQWEsYUFBYTtBQUN6QztBQUNBLGVBQWUsYUFBYSxhQUFhO0FBQ3pDO0FBQ0EsZUFBZSxhQUFhLGFBQWE7QUFDekM7QUFDQSxlQUFlLGFBQWE7QUFDNUI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjEwMzguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBNSVQgbGljZW5zZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbWl4ZWQtb3BlcmF0b3JzICovXG5jb25zdCBjc3NLZXl3b3JkcyA9IHJlcXVpcmUoJ2NvbG9yLW5hbWUnKTtcblxuLy8gTk9URTogY29udmVyc2lvbnMgc2hvdWxkIG9ubHkgcmV0dXJuIHByaW1pdGl2ZSB2YWx1ZXMgKGkuZS4gYXJyYXlzLCBvclxuLy8gICAgICAgdmFsdWVzIHRoYXQgZ2l2ZSBjb3JyZWN0IGB0eXBlb2ZgIHJlc3VsdHMpLlxuLy8gICAgICAgZG8gbm90IHVzZSBib3ggdmFsdWVzIHR5cGVzIChpLmUuIE51bWJlcigpLCBTdHJpbmcoKSwgZXRjLilcblxuY29uc3QgcmV2ZXJzZUtleXdvcmRzID0ge307XG5mb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjc3NLZXl3b3JkcykpIHtcblx0cmV2ZXJzZUtleXdvcmRzW2Nzc0tleXdvcmRzW2tleV1dID0ga2V5O1xufVxuXG5jb25zdCBjb252ZXJ0ID0ge1xuXHRyZ2I6IHtjaGFubmVsczogMywgbGFiZWxzOiAncmdiJ30sXG5cdGhzbDoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdoc2wnfSxcblx0aHN2OiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2hzdid9LFxuXHRod2I6IHtjaGFubmVsczogMywgbGFiZWxzOiAnaHdiJ30sXG5cdGNteWs6IHtjaGFubmVsczogNCwgbGFiZWxzOiAnY215ayd9LFxuXHR4eXo6IHtjaGFubmVsczogMywgbGFiZWxzOiAneHl6J30sXG5cdGxhYjoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdsYWInfSxcblx0bGNoOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2xjaCd9LFxuXHRoZXg6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2hleCddfSxcblx0a2V5d29yZDoge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsna2V5d29yZCddfSxcblx0YW5zaTE2OiB7Y2hhbm5lbHM6IDEsIGxhYmVsczogWydhbnNpMTYnXX0sXG5cdGFuc2kyNTY6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2Fuc2kyNTYnXX0sXG5cdGhjZzoge2NoYW5uZWxzOiAzLCBsYWJlbHM6IFsnaCcsICdjJywgJ2cnXX0sXG5cdGFwcGxlOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogWydyMTYnLCAnZzE2JywgJ2IxNiddfSxcblx0Z3JheToge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsnZ3JheSddfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0O1xuXG4vLyBIaWRlIC5jaGFubmVscyBhbmQgLmxhYmVscyBwcm9wZXJ0aWVzXG5mb3IgKGNvbnN0IG1vZGVsIG9mIE9iamVjdC5rZXlzKGNvbnZlcnQpKSB7XG5cdGlmICghKCdjaGFubmVscycgaW4gY29udmVydFttb2RlbF0pKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGNoYW5uZWxzIHByb3BlcnR5OiAnICsgbW9kZWwpO1xuXHR9XG5cblx0aWYgKCEoJ2xhYmVscycgaW4gY29udmVydFttb2RlbF0pKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGNoYW5uZWwgbGFiZWxzIHByb3BlcnR5OiAnICsgbW9kZWwpO1xuXHR9XG5cblx0aWYgKGNvbnZlcnRbbW9kZWxdLmxhYmVscy5sZW5ndGggIT09IGNvbnZlcnRbbW9kZWxdLmNoYW5uZWxzKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdjaGFubmVsIGFuZCBsYWJlbCBjb3VudHMgbWlzbWF0Y2g6ICcgKyBtb2RlbCk7XG5cdH1cblxuXHRjb25zdCB7Y2hhbm5lbHMsIGxhYmVsc30gPSBjb252ZXJ0W21vZGVsXTtcblx0ZGVsZXRlIGNvbnZlcnRbbW9kZWxdLmNoYW5uZWxzO1xuXHRkZWxldGUgY29udmVydFttb2RlbF0ubGFiZWxzO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFttb2RlbF0sICdjaGFubmVscycsIHt2YWx1ZTogY2hhbm5lbHN9KTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbbW9kZWxdLCAnbGFiZWxzJywge3ZhbHVlOiBsYWJlbHN9KTtcbn1cblxuY29udmVydC5yZ2IuaHNsID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXHRjb25zdCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcblx0Y29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG5cdGNvbnN0IGRlbHRhID0gbWF4IC0gbWluO1xuXHRsZXQgaDtcblx0bGV0IHM7XG5cblx0aWYgKG1heCA9PT0gbWluKSB7XG5cdFx0aCA9IDA7XG5cdH0gZWxzZSBpZiAociA9PT0gbWF4KSB7XG5cdFx0aCA9IChnIC0gYikgLyBkZWx0YTtcblx0fSBlbHNlIGlmIChnID09PSBtYXgpIHtcblx0XHRoID0gMiArIChiIC0gcikgLyBkZWx0YTtcblx0fSBlbHNlIGlmIChiID09PSBtYXgpIHtcblx0XHRoID0gNCArIChyIC0gZykgLyBkZWx0YTtcblx0fVxuXG5cdGggPSBNYXRoLm1pbihoICogNjAsIDM2MCk7XG5cblx0aWYgKGggPCAwKSB7XG5cdFx0aCArPSAzNjA7XG5cdH1cblxuXHRjb25zdCBsID0gKG1pbiArIG1heCkgLyAyO1xuXG5cdGlmIChtYXggPT09IG1pbikge1xuXHRcdHMgPSAwO1xuXHR9IGVsc2UgaWYgKGwgPD0gMC41KSB7XG5cdFx0cyA9IGRlbHRhIC8gKG1heCArIG1pbik7XG5cdH0gZWxzZSB7XG5cdFx0cyA9IGRlbHRhIC8gKDIgLSBtYXggLSBtaW4pO1xuXHR9XG5cblx0cmV0dXJuIFtoLCBzICogMTAwLCBsICogMTAwXTtcbn07XG5cbmNvbnZlcnQucmdiLmhzdiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0bGV0IHJkaWY7XG5cdGxldCBnZGlmO1xuXHRsZXQgYmRpZjtcblx0bGV0IGg7XG5cdGxldCBzO1xuXG5cdGNvbnN0IHIgPSByZ2JbMF0gLyAyNTU7XG5cdGNvbnN0IGcgPSByZ2JbMV0gLyAyNTU7XG5cdGNvbnN0IGIgPSByZ2JbMl0gLyAyNTU7XG5cdGNvbnN0IHYgPSBNYXRoLm1heChyLCBnLCBiKTtcblx0Y29uc3QgZGlmZiA9IHYgLSBNYXRoLm1pbihyLCBnLCBiKTtcblx0Y29uc3QgZGlmZmMgPSBmdW5jdGlvbiAoYykge1xuXHRcdHJldHVybiAodiAtIGMpIC8gNiAvIGRpZmYgKyAxIC8gMjtcblx0fTtcblxuXHRpZiAoZGlmZiA9PT0gMCkge1xuXHRcdGggPSAwO1xuXHRcdHMgPSAwO1xuXHR9IGVsc2Uge1xuXHRcdHMgPSBkaWZmIC8gdjtcblx0XHRyZGlmID0gZGlmZmMocik7XG5cdFx0Z2RpZiA9IGRpZmZjKGcpO1xuXHRcdGJkaWYgPSBkaWZmYyhiKTtcblxuXHRcdGlmIChyID09PSB2KSB7XG5cdFx0XHRoID0gYmRpZiAtIGdkaWY7XG5cdFx0fSBlbHNlIGlmIChnID09PSB2KSB7XG5cdFx0XHRoID0gKDEgLyAzKSArIHJkaWYgLSBiZGlmO1xuXHRcdH0gZWxzZSBpZiAoYiA9PT0gdikge1xuXHRcdFx0aCA9ICgyIC8gMykgKyBnZGlmIC0gcmRpZjtcblx0XHR9XG5cblx0XHRpZiAoaCA8IDApIHtcblx0XHRcdGggKz0gMTtcblx0XHR9IGVsc2UgaWYgKGggPiAxKSB7XG5cdFx0XHRoIC09IDE7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIFtcblx0XHRoICogMzYwLFxuXHRcdHMgKiAxMDAsXG5cdFx0diAqIDEwMFxuXHRdO1xufTtcblxuY29udmVydC5yZ2IuaHdiID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdO1xuXHRjb25zdCBnID0gcmdiWzFdO1xuXHRsZXQgYiA9IHJnYlsyXTtcblx0Y29uc3QgaCA9IGNvbnZlcnQucmdiLmhzbChyZ2IpWzBdO1xuXHRjb25zdCB3ID0gMSAvIDI1NSAqIE1hdGgubWluKHIsIE1hdGgubWluKGcsIGIpKTtcblxuXHRiID0gMSAtIDEgLyAyNTUgKiBNYXRoLm1heChyLCBNYXRoLm1heChnLCBiKSk7XG5cblx0cmV0dXJuIFtoLCB3ICogMTAwLCBiICogMTAwXTtcbn07XG5cbmNvbnZlcnQucmdiLmNteWsgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHIgPSByZ2JbMF0gLyAyNTU7XG5cdGNvbnN0IGcgPSByZ2JbMV0gLyAyNTU7XG5cdGNvbnN0IGIgPSByZ2JbMl0gLyAyNTU7XG5cblx0Y29uc3QgayA9IE1hdGgubWluKDEgLSByLCAxIC0gZywgMSAtIGIpO1xuXHRjb25zdCBjID0gKDEgLSByIC0gaykgLyAoMSAtIGspIHx8IDA7XG5cdGNvbnN0IG0gPSAoMSAtIGcgLSBrKSAvICgxIC0gaykgfHwgMDtcblx0Y29uc3QgeSA9ICgxIC0gYiAtIGspIC8gKDEgLSBrKSB8fCAwO1xuXG5cdHJldHVybiBbYyAqIDEwMCwgbSAqIDEwMCwgeSAqIDEwMCwgayAqIDEwMF07XG59O1xuXG5mdW5jdGlvbiBjb21wYXJhdGl2ZURpc3RhbmNlKHgsIHkpIHtcblx0Lypcblx0XHRTZWUgaHR0cHM6Ly9lbi5tLndpa2lwZWRpYS5vcmcvd2lraS9FdWNsaWRlYW5fZGlzdGFuY2UjU3F1YXJlZF9FdWNsaWRlYW5fZGlzdGFuY2Vcblx0Ki9cblx0cmV0dXJuIChcblx0XHQoKHhbMF0gLSB5WzBdKSAqKiAyKSArXG5cdFx0KCh4WzFdIC0geVsxXSkgKiogMikgK1xuXHRcdCgoeFsyXSAtIHlbMl0pICoqIDIpXG5cdCk7XG59XG5cbmNvbnZlcnQucmdiLmtleXdvcmQgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHJldmVyc2VkID0gcmV2ZXJzZUtleXdvcmRzW3JnYl07XG5cdGlmIChyZXZlcnNlZCkge1xuXHRcdHJldHVybiByZXZlcnNlZDtcblx0fVxuXG5cdGxldCBjdXJyZW50Q2xvc2VzdERpc3RhbmNlID0gSW5maW5pdHk7XG5cdGxldCBjdXJyZW50Q2xvc2VzdEtleXdvcmQ7XG5cblx0Zm9yIChjb25zdCBrZXl3b3JkIG9mIE9iamVjdC5rZXlzKGNzc0tleXdvcmRzKSkge1xuXHRcdGNvbnN0IHZhbHVlID0gY3NzS2V5d29yZHNba2V5d29yZF07XG5cblx0XHQvLyBDb21wdXRlIGNvbXBhcmF0aXZlIGRpc3RhbmNlXG5cdFx0Y29uc3QgZGlzdGFuY2UgPSBjb21wYXJhdGl2ZURpc3RhbmNlKHJnYiwgdmFsdWUpO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgaXRzIGxlc3MsIGlmIHNvIHNldCBhcyBjbG9zZXN0XG5cdFx0aWYgKGRpc3RhbmNlIDwgY3VycmVudENsb3Nlc3REaXN0YW5jZSkge1xuXHRcdFx0Y3VycmVudENsb3Nlc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xuXHRcdFx0Y3VycmVudENsb3Nlc3RLZXl3b3JkID0ga2V5d29yZDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gY3VycmVudENsb3Nlc3RLZXl3b3JkO1xufTtcblxuY29udmVydC5rZXl3b3JkLnJnYiA9IGZ1bmN0aW9uIChrZXl3b3JkKSB7XG5cdHJldHVybiBjc3NLZXl3b3Jkc1trZXl3b3JkXTtcbn07XG5cbmNvbnZlcnQucmdiLnh5eiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0bGV0IHIgPSByZ2JbMF0gLyAyNTU7XG5cdGxldCBnID0gcmdiWzFdIC8gMjU1O1xuXHRsZXQgYiA9IHJnYlsyXSAvIDI1NTtcblxuXHQvLyBBc3N1bWUgc1JHQlxuXHRyID0gciA+IDAuMDQwNDUgPyAoKChyICsgMC4wNTUpIC8gMS4wNTUpICoqIDIuNCkgOiAociAvIDEyLjkyKTtcblx0ZyA9IGcgPiAwLjA0MDQ1ID8gKCgoZyArIDAuMDU1KSAvIDEuMDU1KSAqKiAyLjQpIDogKGcgLyAxMi45Mik7XG5cdGIgPSBiID4gMC4wNDA0NSA/ICgoKGIgKyAwLjA1NSkgLyAxLjA1NSkgKiogMi40KSA6IChiIC8gMTIuOTIpO1xuXG5cdGNvbnN0IHggPSAociAqIDAuNDEyNCkgKyAoZyAqIDAuMzU3NikgKyAoYiAqIDAuMTgwNSk7XG5cdGNvbnN0IHkgPSAociAqIDAuMjEyNikgKyAoZyAqIDAuNzE1MikgKyAoYiAqIDAuMDcyMik7XG5cdGNvbnN0IHogPSAociAqIDAuMDE5MykgKyAoZyAqIDAuMTE5MikgKyAoYiAqIDAuOTUwNSk7XG5cblx0cmV0dXJuIFt4ICogMTAwLCB5ICogMTAwLCB6ICogMTAwXTtcbn07XG5cbmNvbnZlcnQucmdiLmxhYiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgeHl6ID0gY29udmVydC5yZ2IueHl6KHJnYik7XG5cdGxldCB4ID0geHl6WzBdO1xuXHRsZXQgeSA9IHh5elsxXTtcblx0bGV0IHogPSB4eXpbMl07XG5cblx0eCAvPSA5NS4wNDc7XG5cdHkgLz0gMTAwO1xuXHR6IC89IDEwOC44ODM7XG5cblx0eCA9IHggPiAwLjAwODg1NiA/ICh4ICoqICgxIC8gMykpIDogKDcuNzg3ICogeCkgKyAoMTYgLyAxMTYpO1xuXHR5ID0geSA+IDAuMDA4ODU2ID8gKHkgKiogKDEgLyAzKSkgOiAoNy43ODcgKiB5KSArICgxNiAvIDExNik7XG5cdHogPSB6ID4gMC4wMDg4NTYgPyAoeiAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHopICsgKDE2IC8gMTE2KTtcblxuXHRjb25zdCBsID0gKDExNiAqIHkpIC0gMTY7XG5cdGNvbnN0IGEgPSA1MDAgKiAoeCAtIHkpO1xuXHRjb25zdCBiID0gMjAwICogKHkgLSB6KTtcblxuXHRyZXR1cm4gW2wsIGEsIGJdO1xufTtcblxuY29udmVydC5oc2wucmdiID0gZnVuY3Rpb24gKGhzbCkge1xuXHRjb25zdCBoID0gaHNsWzBdIC8gMzYwO1xuXHRjb25zdCBzID0gaHNsWzFdIC8gMTAwO1xuXHRjb25zdCBsID0gaHNsWzJdIC8gMTAwO1xuXHRsZXQgdDI7XG5cdGxldCB0Mztcblx0bGV0IHZhbDtcblxuXHRpZiAocyA9PT0gMCkge1xuXHRcdHZhbCA9IGwgKiAyNTU7XG5cdFx0cmV0dXJuIFt2YWwsIHZhbCwgdmFsXTtcblx0fVxuXG5cdGlmIChsIDwgMC41KSB7XG5cdFx0dDIgPSBsICogKDEgKyBzKTtcblx0fSBlbHNlIHtcblx0XHR0MiA9IGwgKyBzIC0gbCAqIHM7XG5cdH1cblxuXHRjb25zdCB0MSA9IDIgKiBsIC0gdDI7XG5cblx0Y29uc3QgcmdiID0gWzAsIDAsIDBdO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuXHRcdHQzID0gaCArIDEgLyAzICogLShpIC0gMSk7XG5cdFx0aWYgKHQzIDwgMCkge1xuXHRcdFx0dDMrKztcblx0XHR9XG5cblx0XHRpZiAodDMgPiAxKSB7XG5cdFx0XHR0My0tO1xuXHRcdH1cblxuXHRcdGlmICg2ICogdDMgPCAxKSB7XG5cdFx0XHR2YWwgPSB0MSArICh0MiAtIHQxKSAqIDYgKiB0Mztcblx0XHR9IGVsc2UgaWYgKDIgKiB0MyA8IDEpIHtcblx0XHRcdHZhbCA9IHQyO1xuXHRcdH0gZWxzZSBpZiAoMyAqIHQzIDwgMikge1xuXHRcdFx0dmFsID0gdDEgKyAodDIgLSB0MSkgKiAoMiAvIDMgLSB0MykgKiA2O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YWwgPSB0MTtcblx0XHR9XG5cblx0XHRyZ2JbaV0gPSB2YWwgKiAyNTU7XG5cdH1cblxuXHRyZXR1cm4gcmdiO1xufTtcblxuY29udmVydC5oc2wuaHN2ID0gZnVuY3Rpb24gKGhzbCkge1xuXHRjb25zdCBoID0gaHNsWzBdO1xuXHRsZXQgcyA9IGhzbFsxXSAvIDEwMDtcblx0bGV0IGwgPSBoc2xbMl0gLyAxMDA7XG5cdGxldCBzbWluID0gcztcblx0Y29uc3QgbG1pbiA9IE1hdGgubWF4KGwsIDAuMDEpO1xuXG5cdGwgKj0gMjtcblx0cyAqPSAobCA8PSAxKSA/IGwgOiAyIC0gbDtcblx0c21pbiAqPSBsbWluIDw9IDEgPyBsbWluIDogMiAtIGxtaW47XG5cdGNvbnN0IHYgPSAobCArIHMpIC8gMjtcblx0Y29uc3Qgc3YgPSBsID09PSAwID8gKDIgKiBzbWluKSAvIChsbWluICsgc21pbikgOiAoMiAqIHMpIC8gKGwgKyBzKTtcblxuXHRyZXR1cm4gW2gsIHN2ICogMTAwLCB2ICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaHN2LnJnYiA9IGZ1bmN0aW9uIChoc3YpIHtcblx0Y29uc3QgaCA9IGhzdlswXSAvIDYwO1xuXHRjb25zdCBzID0gaHN2WzFdIC8gMTAwO1xuXHRsZXQgdiA9IGhzdlsyXSAvIDEwMDtcblx0Y29uc3QgaGkgPSBNYXRoLmZsb29yKGgpICUgNjtcblxuXHRjb25zdCBmID0gaCAtIE1hdGguZmxvb3IoaCk7XG5cdGNvbnN0IHAgPSAyNTUgKiB2ICogKDEgLSBzKTtcblx0Y29uc3QgcSA9IDI1NSAqIHYgKiAoMSAtIChzICogZikpO1xuXHRjb25zdCB0ID0gMjU1ICogdiAqICgxIC0gKHMgKiAoMSAtIGYpKSk7XG5cdHYgKj0gMjU1O1xuXG5cdHN3aXRjaCAoaGkpIHtcblx0XHRjYXNlIDA6XG5cdFx0XHRyZXR1cm4gW3YsIHQsIHBdO1xuXHRcdGNhc2UgMTpcblx0XHRcdHJldHVybiBbcSwgdiwgcF07XG5cdFx0Y2FzZSAyOlxuXHRcdFx0cmV0dXJuIFtwLCB2LCB0XTtcblx0XHRjYXNlIDM6XG5cdFx0XHRyZXR1cm4gW3AsIHEsIHZdO1xuXHRcdGNhc2UgNDpcblx0XHRcdHJldHVybiBbdCwgcCwgdl07XG5cdFx0Y2FzZSA1OlxuXHRcdFx0cmV0dXJuIFt2LCBwLCBxXTtcblx0fVxufTtcblxuY29udmVydC5oc3YuaHNsID0gZnVuY3Rpb24gKGhzdikge1xuXHRjb25zdCBoID0gaHN2WzBdO1xuXHRjb25zdCBzID0gaHN2WzFdIC8gMTAwO1xuXHRjb25zdCB2ID0gaHN2WzJdIC8gMTAwO1xuXHRjb25zdCB2bWluID0gTWF0aC5tYXgodiwgMC4wMSk7XG5cdGxldCBzbDtcblx0bGV0IGw7XG5cblx0bCA9ICgyIC0gcykgKiB2O1xuXHRjb25zdCBsbWluID0gKDIgLSBzKSAqIHZtaW47XG5cdHNsID0gcyAqIHZtaW47XG5cdHNsIC89IChsbWluIDw9IDEpID8gbG1pbiA6IDIgLSBsbWluO1xuXHRzbCA9IHNsIHx8IDA7XG5cdGwgLz0gMjtcblxuXHRyZXR1cm4gW2gsIHNsICogMTAwLCBsICogMTAwXTtcbn07XG5cbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1jb2xvci8jaHdiLXRvLXJnYlxuY29udmVydC5od2IucmdiID0gZnVuY3Rpb24gKGh3Yikge1xuXHRjb25zdCBoID0gaHdiWzBdIC8gMzYwO1xuXHRsZXQgd2ggPSBod2JbMV0gLyAxMDA7XG5cdGxldCBibCA9IGh3YlsyXSAvIDEwMDtcblx0Y29uc3QgcmF0aW8gPSB3aCArIGJsO1xuXHRsZXQgZjtcblxuXHQvLyBXaCArIGJsIGNhbnQgYmUgPiAxXG5cdGlmIChyYXRpbyA+IDEpIHtcblx0XHR3aCAvPSByYXRpbztcblx0XHRibCAvPSByYXRpbztcblx0fVxuXG5cdGNvbnN0IGkgPSBNYXRoLmZsb29yKDYgKiBoKTtcblx0Y29uc3QgdiA9IDEgLSBibDtcblx0ZiA9IDYgKiBoIC0gaTtcblxuXHRpZiAoKGkgJiAweDAxKSAhPT0gMCkge1xuXHRcdGYgPSAxIC0gZjtcblx0fVxuXG5cdGNvbnN0IG4gPSB3aCArIGYgKiAodiAtIHdoKTsgLy8gTGluZWFyIGludGVycG9sYXRpb25cblxuXHRsZXQgcjtcblx0bGV0IGc7XG5cdGxldCBiO1xuXHQvKiBlc2xpbnQtZGlzYWJsZSBtYXgtc3RhdGVtZW50cy1wZXItbGluZSxuby1tdWx0aS1zcGFjZXMgKi9cblx0c3dpdGNoIChpKSB7XG5cdFx0ZGVmYXVsdDpcblx0XHRjYXNlIDY6XG5cdFx0Y2FzZSAwOiByID0gdjsgIGcgPSBuOyAgYiA9IHdoOyBicmVhaztcblx0XHRjYXNlIDE6IHIgPSBuOyAgZyA9IHY7ICBiID0gd2g7IGJyZWFrO1xuXHRcdGNhc2UgMjogciA9IHdoOyBnID0gdjsgIGIgPSBuOyBicmVhaztcblx0XHRjYXNlIDM6IHIgPSB3aDsgZyA9IG47ICBiID0gdjsgYnJlYWs7XG5cdFx0Y2FzZSA0OiByID0gbjsgIGcgPSB3aDsgYiA9IHY7IGJyZWFrO1xuXHRcdGNhc2UgNTogciA9IHY7ICBnID0gd2g7IGIgPSBuOyBicmVhaztcblx0fVxuXHQvKiBlc2xpbnQtZW5hYmxlIG1heC1zdGF0ZW1lbnRzLXBlci1saW5lLG5vLW11bHRpLXNwYWNlcyAqL1xuXG5cdHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG59O1xuXG5jb252ZXJ0LmNteWsucmdiID0gZnVuY3Rpb24gKGNteWspIHtcblx0Y29uc3QgYyA9IGNteWtbMF0gLyAxMDA7XG5cdGNvbnN0IG0gPSBjbXlrWzFdIC8gMTAwO1xuXHRjb25zdCB5ID0gY215a1syXSAvIDEwMDtcblx0Y29uc3QgayA9IGNteWtbM10gLyAxMDA7XG5cblx0Y29uc3QgciA9IDEgLSBNYXRoLm1pbigxLCBjICogKDEgLSBrKSArIGspO1xuXHRjb25zdCBnID0gMSAtIE1hdGgubWluKDEsIG0gKiAoMSAtIGspICsgayk7XG5cdGNvbnN0IGIgPSAxIC0gTWF0aC5taW4oMSwgeSAqICgxIC0gaykgKyBrKTtcblxuXHRyZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdO1xufTtcblxuY29udmVydC54eXoucmdiID0gZnVuY3Rpb24gKHh5eikge1xuXHRjb25zdCB4ID0geHl6WzBdIC8gMTAwO1xuXHRjb25zdCB5ID0geHl6WzFdIC8gMTAwO1xuXHRjb25zdCB6ID0geHl6WzJdIC8gMTAwO1xuXHRsZXQgcjtcblx0bGV0IGc7XG5cdGxldCBiO1xuXG5cdHIgPSAoeCAqIDMuMjQwNikgKyAoeSAqIC0xLjUzNzIpICsgKHogKiAtMC40OTg2KTtcblx0ZyA9ICh4ICogLTAuOTY4OSkgKyAoeSAqIDEuODc1OCkgKyAoeiAqIDAuMDQxNSk7XG5cdGIgPSAoeCAqIDAuMDU1NykgKyAoeSAqIC0wLjIwNDApICsgKHogKiAxLjA1NzApO1xuXG5cdC8vIEFzc3VtZSBzUkdCXG5cdHIgPSByID4gMC4wMDMxMzA4XG5cdFx0PyAoKDEuMDU1ICogKHIgKiogKDEuMCAvIDIuNCkpKSAtIDAuMDU1KVxuXHRcdDogciAqIDEyLjkyO1xuXG5cdGcgPSBnID4gMC4wMDMxMzA4XG5cdFx0PyAoKDEuMDU1ICogKGcgKiogKDEuMCAvIDIuNCkpKSAtIDAuMDU1KVxuXHRcdDogZyAqIDEyLjkyO1xuXG5cdGIgPSBiID4gMC4wMDMxMzA4XG5cdFx0PyAoKDEuMDU1ICogKGIgKiogKDEuMCAvIDIuNCkpKSAtIDAuMDU1KVxuXHRcdDogYiAqIDEyLjkyO1xuXG5cdHIgPSBNYXRoLm1pbihNYXRoLm1heCgwLCByKSwgMSk7XG5cdGcgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBnKSwgMSk7XG5cdGIgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBiKSwgMSk7XG5cblx0cmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XTtcbn07XG5cbmNvbnZlcnQueHl6LmxhYiA9IGZ1bmN0aW9uICh4eXopIHtcblx0bGV0IHggPSB4eXpbMF07XG5cdGxldCB5ID0geHl6WzFdO1xuXHRsZXQgeiA9IHh5elsyXTtcblxuXHR4IC89IDk1LjA0Nztcblx0eSAvPSAxMDA7XG5cdHogLz0gMTA4Ljg4MztcblxuXHR4ID0geCA+IDAuMDA4ODU2ID8gKHggKiogKDEgLyAzKSkgOiAoNy43ODcgKiB4KSArICgxNiAvIDExNik7XG5cdHkgPSB5ID4gMC4wMDg4NTYgPyAoeSAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHkpICsgKDE2IC8gMTE2KTtcblx0eiA9IHogPiAwLjAwODg1NiA/ICh6ICoqICgxIC8gMykpIDogKDcuNzg3ICogeikgKyAoMTYgLyAxMTYpO1xuXG5cdGNvbnN0IGwgPSAoMTE2ICogeSkgLSAxNjtcblx0Y29uc3QgYSA9IDUwMCAqICh4IC0geSk7XG5cdGNvbnN0IGIgPSAyMDAgKiAoeSAtIHopO1xuXG5cdHJldHVybiBbbCwgYSwgYl07XG59O1xuXG5jb252ZXJ0LmxhYi54eXogPSBmdW5jdGlvbiAobGFiKSB7XG5cdGNvbnN0IGwgPSBsYWJbMF07XG5cdGNvbnN0IGEgPSBsYWJbMV07XG5cdGNvbnN0IGIgPSBsYWJbMl07XG5cdGxldCB4O1xuXHRsZXQgeTtcblx0bGV0IHo7XG5cblx0eSA9IChsICsgMTYpIC8gMTE2O1xuXHR4ID0gYSAvIDUwMCArIHk7XG5cdHogPSB5IC0gYiAvIDIwMDtcblxuXHRjb25zdCB5MiA9IHkgKiogMztcblx0Y29uc3QgeDIgPSB4ICoqIDM7XG5cdGNvbnN0IHoyID0geiAqKiAzO1xuXHR5ID0geTIgPiAwLjAwODg1NiA/IHkyIDogKHkgLSAxNiAvIDExNikgLyA3Ljc4Nztcblx0eCA9IHgyID4gMC4wMDg4NTYgPyB4MiA6ICh4IC0gMTYgLyAxMTYpIC8gNy43ODc7XG5cdHogPSB6MiA+IDAuMDA4ODU2ID8gejIgOiAoeiAtIDE2IC8gMTE2KSAvIDcuNzg3O1xuXG5cdHggKj0gOTUuMDQ3O1xuXHR5ICo9IDEwMDtcblx0eiAqPSAxMDguODgzO1xuXG5cdHJldHVybiBbeCwgeSwgel07XG59O1xuXG5jb252ZXJ0LmxhYi5sY2ggPSBmdW5jdGlvbiAobGFiKSB7XG5cdGNvbnN0IGwgPSBsYWJbMF07XG5cdGNvbnN0IGEgPSBsYWJbMV07XG5cdGNvbnN0IGIgPSBsYWJbMl07XG5cdGxldCBoO1xuXG5cdGNvbnN0IGhyID0gTWF0aC5hdGFuMihiLCBhKTtcblx0aCA9IGhyICogMzYwIC8gMiAvIE1hdGguUEk7XG5cblx0aWYgKGggPCAwKSB7XG5cdFx0aCArPSAzNjA7XG5cdH1cblxuXHRjb25zdCBjID0gTWF0aC5zcXJ0KGEgKiBhICsgYiAqIGIpO1xuXG5cdHJldHVybiBbbCwgYywgaF07XG59O1xuXG5jb252ZXJ0LmxjaC5sYWIgPSBmdW5jdGlvbiAobGNoKSB7XG5cdGNvbnN0IGwgPSBsY2hbMF07XG5cdGNvbnN0IGMgPSBsY2hbMV07XG5cdGNvbnN0IGggPSBsY2hbMl07XG5cblx0Y29uc3QgaHIgPSBoIC8gMzYwICogMiAqIE1hdGguUEk7XG5cdGNvbnN0IGEgPSBjICogTWF0aC5jb3MoaHIpO1xuXHRjb25zdCBiID0gYyAqIE1hdGguc2luKGhyKTtcblxuXHRyZXR1cm4gW2wsIGEsIGJdO1xufTtcblxuY29udmVydC5yZ2IuYW5zaTE2ID0gZnVuY3Rpb24gKGFyZ3MsIHNhdHVyYXRpb24gPSBudWxsKSB7XG5cdGNvbnN0IFtyLCBnLCBiXSA9IGFyZ3M7XG5cdGxldCB2YWx1ZSA9IHNhdHVyYXRpb24gPT09IG51bGwgPyBjb252ZXJ0LnJnYi5oc3YoYXJncylbMl0gOiBzYXR1cmF0aW9uOyAvLyBIc3YgLT4gYW5zaTE2IG9wdGltaXphdGlvblxuXG5cdHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSAvIDUwKTtcblxuXHRpZiAodmFsdWUgPT09IDApIHtcblx0XHRyZXR1cm4gMzA7XG5cdH1cblxuXHRsZXQgYW5zaSA9IDMwXG5cdFx0KyAoKE1hdGgucm91bmQoYiAvIDI1NSkgPDwgMilcblx0XHR8IChNYXRoLnJvdW5kKGcgLyAyNTUpIDw8IDEpXG5cdFx0fCBNYXRoLnJvdW5kKHIgLyAyNTUpKTtcblxuXHRpZiAodmFsdWUgPT09IDIpIHtcblx0XHRhbnNpICs9IDYwO1xuXHR9XG5cblx0cmV0dXJuIGFuc2k7XG59O1xuXG5jb252ZXJ0Lmhzdi5hbnNpMTYgPSBmdW5jdGlvbiAoYXJncykge1xuXHQvLyBPcHRpbWl6YXRpb24gaGVyZTsgd2UgYWxyZWFkeSBrbm93IHRoZSB2YWx1ZSBhbmQgZG9uJ3QgbmVlZCB0byBnZXRcblx0Ly8gaXQgY29udmVydGVkIGZvciB1cy5cblx0cmV0dXJuIGNvbnZlcnQucmdiLmFuc2kxNihjb252ZXJ0Lmhzdi5yZ2IoYXJncyksIGFyZ3NbMl0pO1xufTtcblxuY29udmVydC5yZ2IuYW5zaTI1NiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGNvbnN0IHIgPSBhcmdzWzBdO1xuXHRjb25zdCBnID0gYXJnc1sxXTtcblx0Y29uc3QgYiA9IGFyZ3NbMl07XG5cblx0Ly8gV2UgdXNlIHRoZSBleHRlbmRlZCBncmV5c2NhbGUgcGFsZXR0ZSBoZXJlLCB3aXRoIHRoZSBleGNlcHRpb24gb2Zcblx0Ly8gYmxhY2sgYW5kIHdoaXRlLiBub3JtYWwgcGFsZXR0ZSBvbmx5IGhhcyA0IGdyZXlzY2FsZSBzaGFkZXMuXG5cdGlmIChyID09PSBnICYmIGcgPT09IGIpIHtcblx0XHRpZiAociA8IDgpIHtcblx0XHRcdHJldHVybiAxNjtcblx0XHR9XG5cblx0XHRpZiAociA+IDI0OCkge1xuXHRcdFx0cmV0dXJuIDIzMTtcblx0XHR9XG5cblx0XHRyZXR1cm4gTWF0aC5yb3VuZCgoKHIgLSA4KSAvIDI0NykgKiAyNCkgKyAyMzI7XG5cdH1cblxuXHRjb25zdCBhbnNpID0gMTZcblx0XHQrICgzNiAqIE1hdGgucm91bmQociAvIDI1NSAqIDUpKVxuXHRcdCsgKDYgKiBNYXRoLnJvdW5kKGcgLyAyNTUgKiA1KSlcblx0XHQrIE1hdGgucm91bmQoYiAvIDI1NSAqIDUpO1xuXG5cdHJldHVybiBhbnNpO1xufTtcblxuY29udmVydC5hbnNpMTYucmdiID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0bGV0IGNvbG9yID0gYXJncyAlIDEwO1xuXG5cdC8vIEhhbmRsZSBncmV5c2NhbGVcblx0aWYgKGNvbG9yID09PSAwIHx8IGNvbG9yID09PSA3KSB7XG5cdFx0aWYgKGFyZ3MgPiA1MCkge1xuXHRcdFx0Y29sb3IgKz0gMy41O1xuXHRcdH1cblxuXHRcdGNvbG9yID0gY29sb3IgLyAxMC41ICogMjU1O1xuXG5cdFx0cmV0dXJuIFtjb2xvciwgY29sb3IsIGNvbG9yXTtcblx0fVxuXG5cdGNvbnN0IG11bHQgPSAofn4oYXJncyA+IDUwKSArIDEpICogMC41O1xuXHRjb25zdCByID0gKChjb2xvciAmIDEpICogbXVsdCkgKiAyNTU7XG5cdGNvbnN0IGcgPSAoKChjb2xvciA+PiAxKSAmIDEpICogbXVsdCkgKiAyNTU7XG5cdGNvbnN0IGIgPSAoKChjb2xvciA+PiAyKSAmIDEpICogbXVsdCkgKiAyNTU7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQuYW5zaTI1Ni5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHQvLyBIYW5kbGUgZ3JleXNjYWxlXG5cdGlmIChhcmdzID49IDIzMikge1xuXHRcdGNvbnN0IGMgPSAoYXJncyAtIDIzMikgKiAxMCArIDg7XG5cdFx0cmV0dXJuIFtjLCBjLCBjXTtcblx0fVxuXG5cdGFyZ3MgLT0gMTY7XG5cblx0bGV0IHJlbTtcblx0Y29uc3QgciA9IE1hdGguZmxvb3IoYXJncyAvIDM2KSAvIDUgKiAyNTU7XG5cdGNvbnN0IGcgPSBNYXRoLmZsb29yKChyZW0gPSBhcmdzICUgMzYpIC8gNikgLyA1ICogMjU1O1xuXHRjb25zdCBiID0gKHJlbSAlIDYpIC8gNSAqIDI1NTtcblxuXHRyZXR1cm4gW3IsIGcsIGJdO1xufTtcblxuY29udmVydC5yZ2IuaGV4ID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0Y29uc3QgaW50ZWdlciA9ICgoTWF0aC5yb3VuZChhcmdzWzBdKSAmIDB4RkYpIDw8IDE2KVxuXHRcdCsgKChNYXRoLnJvdW5kKGFyZ3NbMV0pICYgMHhGRikgPDwgOClcblx0XHQrIChNYXRoLnJvdW5kKGFyZ3NbMl0pICYgMHhGRik7XG5cblx0Y29uc3Qgc3RyaW5nID0gaW50ZWdlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblx0cmV0dXJuICcwMDAwMDAnLnN1YnN0cmluZyhzdHJpbmcubGVuZ3RoKSArIHN0cmluZztcbn07XG5cbmNvbnZlcnQuaGV4LnJnYiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGNvbnN0IG1hdGNoID0gYXJncy50b1N0cmluZygxNikubWF0Y2goL1thLWYwLTldezZ9fFthLWYwLTldezN9L2kpO1xuXHRpZiAoIW1hdGNoKSB7XG5cdFx0cmV0dXJuIFswLCAwLCAwXTtcblx0fVxuXG5cdGxldCBjb2xvclN0cmluZyA9IG1hdGNoWzBdO1xuXG5cdGlmIChtYXRjaFswXS5sZW5ndGggPT09IDMpIHtcblx0XHRjb2xvclN0cmluZyA9IGNvbG9yU3RyaW5nLnNwbGl0KCcnKS5tYXAoY2hhciA9PiB7XG5cdFx0XHRyZXR1cm4gY2hhciArIGNoYXI7XG5cdFx0fSkuam9pbignJyk7XG5cdH1cblxuXHRjb25zdCBpbnRlZ2VyID0gcGFyc2VJbnQoY29sb3JTdHJpbmcsIDE2KTtcblx0Y29uc3QgciA9IChpbnRlZ2VyID4+IDE2KSAmIDB4RkY7XG5cdGNvbnN0IGcgPSAoaW50ZWdlciA+PiA4KSAmIDB4RkY7XG5cdGNvbnN0IGIgPSBpbnRlZ2VyICYgMHhGRjtcblxuXHRyZXR1cm4gW3IsIGcsIGJdO1xufTtcblxuY29udmVydC5yZ2IuaGNnID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXHRjb25zdCBtYXggPSBNYXRoLm1heChNYXRoLm1heChyLCBnKSwgYik7XG5cdGNvbnN0IG1pbiA9IE1hdGgubWluKE1hdGgubWluKHIsIGcpLCBiKTtcblx0Y29uc3QgY2hyb21hID0gKG1heCAtIG1pbik7XG5cdGxldCBncmF5c2NhbGU7XG5cdGxldCBodWU7XG5cblx0aWYgKGNocm9tYSA8IDEpIHtcblx0XHRncmF5c2NhbGUgPSBtaW4gLyAoMSAtIGNocm9tYSk7XG5cdH0gZWxzZSB7XG5cdFx0Z3JheXNjYWxlID0gMDtcblx0fVxuXG5cdGlmIChjaHJvbWEgPD0gMCkge1xuXHRcdGh1ZSA9IDA7XG5cdH0gZWxzZVxuXHRpZiAobWF4ID09PSByKSB7XG5cdFx0aHVlID0gKChnIC0gYikgLyBjaHJvbWEpICUgNjtcblx0fSBlbHNlXG5cdGlmIChtYXggPT09IGcpIHtcblx0XHRodWUgPSAyICsgKGIgLSByKSAvIGNocm9tYTtcblx0fSBlbHNlIHtcblx0XHRodWUgPSA0ICsgKHIgLSBnKSAvIGNocm9tYTtcblx0fVxuXG5cdGh1ZSAvPSA2O1xuXHRodWUgJT0gMTtcblxuXHRyZXR1cm4gW2h1ZSAqIDM2MCwgY2hyb21hICogMTAwLCBncmF5c2NhbGUgKiAxMDBdO1xufTtcblxuY29udmVydC5oc2wuaGNnID0gZnVuY3Rpb24gKGhzbCkge1xuXHRjb25zdCBzID0gaHNsWzFdIC8gMTAwO1xuXHRjb25zdCBsID0gaHNsWzJdIC8gMTAwO1xuXG5cdGNvbnN0IGMgPSBsIDwgMC41ID8gKDIuMCAqIHMgKiBsKSA6ICgyLjAgKiBzICogKDEuMCAtIGwpKTtcblxuXHRsZXQgZiA9IDA7XG5cdGlmIChjIDwgMS4wKSB7XG5cdFx0ZiA9IChsIC0gMC41ICogYykgLyAoMS4wIC0gYyk7XG5cdH1cblxuXHRyZXR1cm4gW2hzbFswXSwgYyAqIDEwMCwgZiAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmhzdi5oY2cgPSBmdW5jdGlvbiAoaHN2KSB7XG5cdGNvbnN0IHMgPSBoc3ZbMV0gLyAxMDA7XG5cdGNvbnN0IHYgPSBoc3ZbMl0gLyAxMDA7XG5cblx0Y29uc3QgYyA9IHMgKiB2O1xuXHRsZXQgZiA9IDA7XG5cblx0aWYgKGMgPCAxLjApIHtcblx0XHRmID0gKHYgLSBjKSAvICgxIC0gYyk7XG5cdH1cblxuXHRyZXR1cm4gW2hzdlswXSwgYyAqIDEwMCwgZiAqIDEwMF07XG59O1xuXG5jb252ZXJ0LmhjZy5yZ2IgPSBmdW5jdGlvbiAoaGNnKSB7XG5cdGNvbnN0IGggPSBoY2dbMF0gLyAzNjA7XG5cdGNvbnN0IGMgPSBoY2dbMV0gLyAxMDA7XG5cdGNvbnN0IGcgPSBoY2dbMl0gLyAxMDA7XG5cblx0aWYgKGMgPT09IDAuMCkge1xuXHRcdHJldHVybiBbZyAqIDI1NSwgZyAqIDI1NSwgZyAqIDI1NV07XG5cdH1cblxuXHRjb25zdCBwdXJlID0gWzAsIDAsIDBdO1xuXHRjb25zdCBoaSA9IChoICUgMSkgKiA2O1xuXHRjb25zdCB2ID0gaGkgJSAxO1xuXHRjb25zdCB3ID0gMSAtIHY7XG5cdGxldCBtZyA9IDA7XG5cblx0LyogZXNsaW50LWRpc2FibGUgbWF4LXN0YXRlbWVudHMtcGVyLWxpbmUgKi9cblx0c3dpdGNoIChNYXRoLmZsb29yKGhpKSkge1xuXHRcdGNhc2UgMDpcblx0XHRcdHB1cmVbMF0gPSAxOyBwdXJlWzFdID0gdjsgcHVyZVsyXSA9IDA7IGJyZWFrO1xuXHRcdGNhc2UgMTpcblx0XHRcdHB1cmVbMF0gPSB3OyBwdXJlWzFdID0gMTsgcHVyZVsyXSA9IDA7IGJyZWFrO1xuXHRcdGNhc2UgMjpcblx0XHRcdHB1cmVbMF0gPSAwOyBwdXJlWzFdID0gMTsgcHVyZVsyXSA9IHY7IGJyZWFrO1xuXHRcdGNhc2UgMzpcblx0XHRcdHB1cmVbMF0gPSAwOyBwdXJlWzFdID0gdzsgcHVyZVsyXSA9IDE7IGJyZWFrO1xuXHRcdGNhc2UgNDpcblx0XHRcdHB1cmVbMF0gPSB2OyBwdXJlWzFdID0gMDsgcHVyZVsyXSA9IDE7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRwdXJlWzBdID0gMTsgcHVyZVsxXSA9IDA7IHB1cmVbMl0gPSB3O1xuXHR9XG5cdC8qIGVzbGludC1lbmFibGUgbWF4LXN0YXRlbWVudHMtcGVyLWxpbmUgKi9cblxuXHRtZyA9ICgxLjAgLSBjKSAqIGc7XG5cblx0cmV0dXJuIFtcblx0XHQoYyAqIHB1cmVbMF0gKyBtZykgKiAyNTUsXG5cdFx0KGMgKiBwdXJlWzFdICsgbWcpICogMjU1LFxuXHRcdChjICogcHVyZVsyXSArIG1nKSAqIDI1NVxuXHRdO1xufTtcblxuY29udmVydC5oY2cuaHN2ID0gZnVuY3Rpb24gKGhjZykge1xuXHRjb25zdCBjID0gaGNnWzFdIC8gMTAwO1xuXHRjb25zdCBnID0gaGNnWzJdIC8gMTAwO1xuXG5cdGNvbnN0IHYgPSBjICsgZyAqICgxLjAgLSBjKTtcblx0bGV0IGYgPSAwO1xuXG5cdGlmICh2ID4gMC4wKSB7XG5cdFx0ZiA9IGMgLyB2O1xuXHR9XG5cblx0cmV0dXJuIFtoY2dbMF0sIGYgKiAxMDAsIHYgKiAxMDBdO1xufTtcblxuY29udmVydC5oY2cuaHNsID0gZnVuY3Rpb24gKGhjZykge1xuXHRjb25zdCBjID0gaGNnWzFdIC8gMTAwO1xuXHRjb25zdCBnID0gaGNnWzJdIC8gMTAwO1xuXG5cdGNvbnN0IGwgPSBnICogKDEuMCAtIGMpICsgMC41ICogYztcblx0bGV0IHMgPSAwO1xuXG5cdGlmIChsID4gMC4wICYmIGwgPCAwLjUpIHtcblx0XHRzID0gYyAvICgyICogbCk7XG5cdH0gZWxzZVxuXHRpZiAobCA+PSAwLjUgJiYgbCA8IDEuMCkge1xuXHRcdHMgPSBjIC8gKDIgKiAoMSAtIGwpKTtcblx0fVxuXG5cdHJldHVybiBbaGNnWzBdLCBzICogMTAwLCBsICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaGNnLmh3YiA9IGZ1bmN0aW9uIChoY2cpIHtcblx0Y29uc3QgYyA9IGhjZ1sxXSAvIDEwMDtcblx0Y29uc3QgZyA9IGhjZ1syXSAvIDEwMDtcblx0Y29uc3QgdiA9IGMgKyBnICogKDEuMCAtIGMpO1xuXHRyZXR1cm4gW2hjZ1swXSwgKHYgLSBjKSAqIDEwMCwgKDEgLSB2KSAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmh3Yi5oY2cgPSBmdW5jdGlvbiAoaHdiKSB7XG5cdGNvbnN0IHcgPSBod2JbMV0gLyAxMDA7XG5cdGNvbnN0IGIgPSBod2JbMl0gLyAxMDA7XG5cdGNvbnN0IHYgPSAxIC0gYjtcblx0Y29uc3QgYyA9IHYgLSB3O1xuXHRsZXQgZyA9IDA7XG5cblx0aWYgKGMgPCAxKSB7XG5cdFx0ZyA9ICh2IC0gYykgLyAoMSAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtod2JbMF0sIGMgKiAxMDAsIGcgKiAxMDBdO1xufTtcblxuY29udmVydC5hcHBsZS5yZ2IgPSBmdW5jdGlvbiAoYXBwbGUpIHtcblx0cmV0dXJuIFsoYXBwbGVbMF0gLyA2NTUzNSkgKiAyNTUsIChhcHBsZVsxXSAvIDY1NTM1KSAqIDI1NSwgKGFwcGxlWzJdIC8gNjU1MzUpICogMjU1XTtcbn07XG5cbmNvbnZlcnQucmdiLmFwcGxlID0gZnVuY3Rpb24gKHJnYikge1xuXHRyZXR1cm4gWyhyZ2JbMF0gLyAyNTUpICogNjU1MzUsIChyZ2JbMV0gLyAyNTUpICogNjU1MzUsIChyZ2JbMl0gLyAyNTUpICogNjU1MzVdO1xufTtcblxuY29udmVydC5ncmF5LnJnYiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdHJldHVybiBbYXJnc1swXSAvIDEwMCAqIDI1NSwgYXJnc1swXSAvIDEwMCAqIDI1NSwgYXJnc1swXSAvIDEwMCAqIDI1NV07XG59O1xuXG5jb252ZXJ0LmdyYXkuaHNsID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0cmV0dXJuIFswLCAwLCBhcmdzWzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5oc3YgPSBjb252ZXJ0LmdyYXkuaHNsO1xuXG5jb252ZXJ0LmdyYXkuaHdiID0gZnVuY3Rpb24gKGdyYXkpIHtcblx0cmV0dXJuIFswLCAxMDAsIGdyYXlbMF1dO1xufTtcblxuY29udmVydC5ncmF5LmNteWsgPSBmdW5jdGlvbiAoZ3JheSkge1xuXHRyZXR1cm4gWzAsIDAsIDAsIGdyYXlbMF1dO1xufTtcblxuY29udmVydC5ncmF5LmxhYiA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdHJldHVybiBbZ3JheVswXSwgMCwgMF07XG59O1xuXG5jb252ZXJ0LmdyYXkuaGV4ID0gZnVuY3Rpb24gKGdyYXkpIHtcblx0Y29uc3QgdmFsID0gTWF0aC5yb3VuZChncmF5WzBdIC8gMTAwICogMjU1KSAmIDB4RkY7XG5cdGNvbnN0IGludGVnZXIgPSAodmFsIDw8IDE2KSArICh2YWwgPDwgOCkgKyB2YWw7XG5cblx0Y29uc3Qgc3RyaW5nID0gaW50ZWdlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblx0cmV0dXJuICcwMDAwMDAnLnN1YnN0cmluZyhzdHJpbmcubGVuZ3RoKSArIHN0cmluZztcbn07XG5cbmNvbnZlcnQucmdiLmdyYXkgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHZhbCA9IChyZ2JbMF0gKyByZ2JbMV0gKyByZ2JbMl0pIC8gMztcblx0cmV0dXJuIFt2YWwgLyAyNTUgKiAxMDBdO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1038\n")},1081:function(module,exports,__webpack_require__){eval("const conversions = __webpack_require__(1038);\nconst route = __webpack_require__(1083);\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L2luZGV4LmpzPzlmMDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CLG1CQUFPLENBQUMsSUFBZTtBQUMzQyxjQUFjLG1CQUFPLENBQUMsSUFBUzs7QUFFL0I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBLHVDQUF1QyxTQUFTO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3REFBd0QsdUNBQXVDO0FBQy9GLHNEQUFzRCxxQ0FBcUM7O0FBRTNGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGLENBQUM7O0FBRUQiLCJmaWxlIjoiMTA4MS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbnZlcnNpb25zID0gcmVxdWlyZSgnLi9jb252ZXJzaW9ucycpO1xuY29uc3Qgcm91dGUgPSByZXF1aXJlKCcuL3JvdXRlJyk7XG5cbmNvbnN0IGNvbnZlcnQgPSB7fTtcblxuY29uc3QgbW9kZWxzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnMpO1xuXG5mdW5jdGlvbiB3cmFwUmF3KGZuKSB7XG5cdGNvbnN0IHdyYXBwZWRGbiA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG5cdFx0Y29uc3QgYXJnMCA9IGFyZ3NbMF07XG5cdFx0aWYgKGFyZzAgPT09IHVuZGVmaW5lZCB8fCBhcmcwID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gYXJnMDtcblx0XHR9XG5cblx0XHRpZiAoYXJnMC5sZW5ndGggPiAxKSB7XG5cdFx0XHRhcmdzID0gYXJnMDtcblx0XHR9XG5cblx0XHRyZXR1cm4gZm4oYXJncyk7XG5cdH07XG5cblx0Ly8gUHJlc2VydmUgLmNvbnZlcnNpb24gcHJvcGVydHkgaWYgdGhlcmUgaXMgb25lXG5cdGlmICgnY29udmVyc2lvbicgaW4gZm4pIHtcblx0XHR3cmFwcGVkRm4uY29udmVyc2lvbiA9IGZuLmNvbnZlcnNpb247XG5cdH1cblxuXHRyZXR1cm4gd3JhcHBlZEZuO1xufVxuXG5mdW5jdGlvbiB3cmFwUm91bmRlZChmbikge1xuXHRjb25zdCB3cmFwcGVkRm4gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuXHRcdGNvbnN0IGFyZzAgPSBhcmdzWzBdO1xuXG5cdFx0aWYgKGFyZzAgPT09IHVuZGVmaW5lZCB8fCBhcmcwID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gYXJnMDtcblx0XHR9XG5cblx0XHRpZiAoYXJnMC5sZW5ndGggPiAxKSB7XG5cdFx0XHRhcmdzID0gYXJnMDtcblx0XHR9XG5cblx0XHRjb25zdCByZXN1bHQgPSBmbihhcmdzKTtcblxuXHRcdC8vIFdlJ3JlIGFzc3VtaW5nIHRoZSByZXN1bHQgaXMgYW4gYXJyYXkgaGVyZS5cblx0XHQvLyBzZWUgbm90aWNlIGluIGNvbnZlcnNpb25zLmpzOyBkb24ndCB1c2UgYm94IHR5cGVzXG5cdFx0Ly8gaW4gY29udmVyc2lvbiBmdW5jdGlvbnMuXG5cdFx0aWYgKHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRmb3IgKGxldCBsZW4gPSByZXN1bHQubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRcdHJlc3VsdFtpXSA9IE1hdGgucm91bmQocmVzdWx0W2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9O1xuXG5cdC8vIFByZXNlcnZlIC5jb252ZXJzaW9uIHByb3BlcnR5IGlmIHRoZXJlIGlzIG9uZVxuXHRpZiAoJ2NvbnZlcnNpb24nIGluIGZuKSB7XG5cdFx0d3JhcHBlZEZuLmNvbnZlcnNpb24gPSBmbi5jb252ZXJzaW9uO1xuXHR9XG5cblx0cmV0dXJuIHdyYXBwZWRGbjtcbn1cblxubW9kZWxzLmZvckVhY2goZnJvbU1vZGVsID0+IHtcblx0Y29udmVydFtmcm9tTW9kZWxdID0ge307XG5cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbZnJvbU1vZGVsXSwgJ2NoYW5uZWxzJywge3ZhbHVlOiBjb252ZXJzaW9uc1tmcm9tTW9kZWxdLmNoYW5uZWxzfSk7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W2Zyb21Nb2RlbF0sICdsYWJlbHMnLCB7dmFsdWU6IGNvbnZlcnNpb25zW2Zyb21Nb2RlbF0ubGFiZWxzfSk7XG5cblx0Y29uc3Qgcm91dGVzID0gcm91dGUoZnJvbU1vZGVsKTtcblx0Y29uc3Qgcm91dGVNb2RlbHMgPSBPYmplY3Qua2V5cyhyb3V0ZXMpO1xuXG5cdHJvdXRlTW9kZWxzLmZvckVhY2godG9Nb2RlbCA9PiB7XG5cdFx0Y29uc3QgZm4gPSByb3V0ZXNbdG9Nb2RlbF07XG5cblx0XHRjb252ZXJ0W2Zyb21Nb2RlbF1bdG9Nb2RlbF0gPSB3cmFwUm91bmRlZChmbik7XG5cdFx0Y29udmVydFtmcm9tTW9kZWxdW3RvTW9kZWxdLnJhdyA9IHdyYXBSYXcoZm4pO1xuXHR9KTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnZlcnQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1081\n")},1082:function(module,exports,__webpack_require__){"use strict";eval('\r\n\r\nmodule.exports = {\r\n\t"aliceblue": [240, 248, 255],\r\n\t"antiquewhite": [250, 235, 215],\r\n\t"aqua": [0, 255, 255],\r\n\t"aquamarine": [127, 255, 212],\r\n\t"azure": [240, 255, 255],\r\n\t"beige": [245, 245, 220],\r\n\t"bisque": [255, 228, 196],\r\n\t"black": [0, 0, 0],\r\n\t"blanchedalmond": [255, 235, 205],\r\n\t"blue": [0, 0, 255],\r\n\t"blueviolet": [138, 43, 226],\r\n\t"brown": [165, 42, 42],\r\n\t"burlywood": [222, 184, 135],\r\n\t"cadetblue": [95, 158, 160],\r\n\t"chartreuse": [127, 255, 0],\r\n\t"chocolate": [210, 105, 30],\r\n\t"coral": [255, 127, 80],\r\n\t"cornflowerblue": [100, 149, 237],\r\n\t"cornsilk": [255, 248, 220],\r\n\t"crimson": [220, 20, 60],\r\n\t"cyan": [0, 255, 255],\r\n\t"darkblue": [0, 0, 139],\r\n\t"darkcyan": [0, 139, 139],\r\n\t"darkgoldenrod": [184, 134, 11],\r\n\t"darkgray": [169, 169, 169],\r\n\t"darkgreen": [0, 100, 0],\r\n\t"darkgrey": [169, 169, 169],\r\n\t"darkkhaki": [189, 183, 107],\r\n\t"darkmagenta": [139, 0, 139],\r\n\t"darkolivegreen": [85, 107, 47],\r\n\t"darkorange": [255, 140, 0],\r\n\t"darkorchid": [153, 50, 204],\r\n\t"darkred": [139, 0, 0],\r\n\t"darksalmon": [233, 150, 122],\r\n\t"darkseagreen": [143, 188, 143],\r\n\t"darkslateblue": [72, 61, 139],\r\n\t"darkslategray": [47, 79, 79],\r\n\t"darkslategrey": [47, 79, 79],\r\n\t"darkturquoise": [0, 206, 209],\r\n\t"darkviolet": [148, 0, 211],\r\n\t"deeppink": [255, 20, 147],\r\n\t"deepskyblue": [0, 191, 255],\r\n\t"dimgray": [105, 105, 105],\r\n\t"dimgrey": [105, 105, 105],\r\n\t"dodgerblue": [30, 144, 255],\r\n\t"firebrick": [178, 34, 34],\r\n\t"floralwhite": [255, 250, 240],\r\n\t"forestgreen": [34, 139, 34],\r\n\t"fuchsia": [255, 0, 255],\r\n\t"gainsboro": [220, 220, 220],\r\n\t"ghostwhite": [248, 248, 255],\r\n\t"gold": [255, 215, 0],\r\n\t"goldenrod": [218, 165, 32],\r\n\t"gray": [128, 128, 128],\r\n\t"green": [0, 128, 0],\r\n\t"greenyellow": [173, 255, 47],\r\n\t"grey": [128, 128, 128],\r\n\t"honeydew": [240, 255, 240],\r\n\t"hotpink": [255, 105, 180],\r\n\t"indianred": [205, 92, 92],\r\n\t"indigo": [75, 0, 130],\r\n\t"ivory": [255, 255, 240],\r\n\t"khaki": [240, 230, 140],\r\n\t"lavender": [230, 230, 250],\r\n\t"lavenderblush": [255, 240, 245],\r\n\t"lawngreen": [124, 252, 0],\r\n\t"lemonchiffon": [255, 250, 205],\r\n\t"lightblue": [173, 216, 230],\r\n\t"lightcoral": [240, 128, 128],\r\n\t"lightcyan": [224, 255, 255],\r\n\t"lightgoldenrodyellow": [250, 250, 210],\r\n\t"lightgray": [211, 211, 211],\r\n\t"lightgreen": [144, 238, 144],\r\n\t"lightgrey": [211, 211, 211],\r\n\t"lightpink": [255, 182, 193],\r\n\t"lightsalmon": [255, 160, 122],\r\n\t"lightseagreen": [32, 178, 170],\r\n\t"lightskyblue": [135, 206, 250],\r\n\t"lightslategray": [119, 136, 153],\r\n\t"lightslategrey": [119, 136, 153],\r\n\t"lightsteelblue": [176, 196, 222],\r\n\t"lightyellow": [255, 255, 224],\r\n\t"lime": [0, 255, 0],\r\n\t"limegreen": [50, 205, 50],\r\n\t"linen": [250, 240, 230],\r\n\t"magenta": [255, 0, 255],\r\n\t"maroon": [128, 0, 0],\r\n\t"mediumaquamarine": [102, 205, 170],\r\n\t"mediumblue": [0, 0, 205],\r\n\t"mediumorchid": [186, 85, 211],\r\n\t"mediumpurple": [147, 112, 219],\r\n\t"mediumseagreen": [60, 179, 113],\r\n\t"mediumslateblue": [123, 104, 238],\r\n\t"mediumspringgreen": [0, 250, 154],\r\n\t"mediumturquoise": [72, 209, 204],\r\n\t"mediumvioletred": [199, 21, 133],\r\n\t"midnightblue": [25, 25, 112],\r\n\t"mintcream": [245, 255, 250],\r\n\t"mistyrose": [255, 228, 225],\r\n\t"moccasin": [255, 228, 181],\r\n\t"navajowhite": [255, 222, 173],\r\n\t"navy": [0, 0, 128],\r\n\t"oldlace": [253, 245, 230],\r\n\t"olive": [128, 128, 0],\r\n\t"olivedrab": [107, 142, 35],\r\n\t"orange": [255, 165, 0],\r\n\t"orangered": [255, 69, 0],\r\n\t"orchid": [218, 112, 214],\r\n\t"palegoldenrod": [238, 232, 170],\r\n\t"palegreen": [152, 251, 152],\r\n\t"paleturquoise": [175, 238, 238],\r\n\t"palevioletred": [219, 112, 147],\r\n\t"papayawhip": [255, 239, 213],\r\n\t"peachpuff": [255, 218, 185],\r\n\t"peru": [205, 133, 63],\r\n\t"pink": [255, 192, 203],\r\n\t"plum": [221, 160, 221],\r\n\t"powderblue": [176, 224, 230],\r\n\t"purple": [128, 0, 128],\r\n\t"rebeccapurple": [102, 51, 153],\r\n\t"red": [255, 0, 0],\r\n\t"rosybrown": [188, 143, 143],\r\n\t"royalblue": [65, 105, 225],\r\n\t"saddlebrown": [139, 69, 19],\r\n\t"salmon": [250, 128, 114],\r\n\t"sandybrown": [244, 164, 96],\r\n\t"seagreen": [46, 139, 87],\r\n\t"seashell": [255, 245, 238],\r\n\t"sienna": [160, 82, 45],\r\n\t"silver": [192, 192, 192],\r\n\t"skyblue": [135, 206, 235],\r\n\t"slateblue": [106, 90, 205],\r\n\t"slategray": [112, 128, 144],\r\n\t"slategrey": [112, 128, 144],\r\n\t"snow": [255, 250, 250],\r\n\t"springgreen": [0, 255, 127],\r\n\t"steelblue": [70, 130, 180],\r\n\t"tan": [210, 180, 140],\r\n\t"teal": [0, 128, 128],\r\n\t"thistle": [216, 191, 216],\r\n\t"tomato": [255, 99, 71],\r\n\t"turquoise": [64, 224, 208],\r\n\t"violet": [238, 130, 238],\r\n\t"wheat": [245, 222, 179],\r\n\t"white": [255, 255, 255],\r\n\t"whitesmoke": [245, 245, 245],\r\n\t"yellow": [255, 255, 0],\r\n\t"yellowgreen": [154, 205, 50]\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L25vZGVfbW9kdWxlcy9jb2xvci1uYW1lL2luZGV4LmpzP2I4MjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjEwODIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG5cdFwiYWxpY2VibHVlXCI6IFsyNDAsIDI0OCwgMjU1XSxcclxuXHRcImFudGlxdWV3aGl0ZVwiOiBbMjUwLCAyMzUsIDIxNV0sXHJcblx0XCJhcXVhXCI6IFswLCAyNTUsIDI1NV0sXHJcblx0XCJhcXVhbWFyaW5lXCI6IFsxMjcsIDI1NSwgMjEyXSxcclxuXHRcImF6dXJlXCI6IFsyNDAsIDI1NSwgMjU1XSxcclxuXHRcImJlaWdlXCI6IFsyNDUsIDI0NSwgMjIwXSxcclxuXHRcImJpc3F1ZVwiOiBbMjU1LCAyMjgsIDE5Nl0sXHJcblx0XCJibGFja1wiOiBbMCwgMCwgMF0sXHJcblx0XCJibGFuY2hlZGFsbW9uZFwiOiBbMjU1LCAyMzUsIDIwNV0sXHJcblx0XCJibHVlXCI6IFswLCAwLCAyNTVdLFxyXG5cdFwiYmx1ZXZpb2xldFwiOiBbMTM4LCA0MywgMjI2XSxcclxuXHRcImJyb3duXCI6IFsxNjUsIDQyLCA0Ml0sXHJcblx0XCJidXJseXdvb2RcIjogWzIyMiwgMTg0LCAxMzVdLFxyXG5cdFwiY2FkZXRibHVlXCI6IFs5NSwgMTU4LCAxNjBdLFxyXG5cdFwiY2hhcnRyZXVzZVwiOiBbMTI3LCAyNTUsIDBdLFxyXG5cdFwiY2hvY29sYXRlXCI6IFsyMTAsIDEwNSwgMzBdLFxyXG5cdFwiY29yYWxcIjogWzI1NSwgMTI3LCA4MF0sXHJcblx0XCJjb3JuZmxvd2VyYmx1ZVwiOiBbMTAwLCAxNDksIDIzN10sXHJcblx0XCJjb3Juc2lsa1wiOiBbMjU1LCAyNDgsIDIyMF0sXHJcblx0XCJjcmltc29uXCI6IFsyMjAsIDIwLCA2MF0sXHJcblx0XCJjeWFuXCI6IFswLCAyNTUsIDI1NV0sXHJcblx0XCJkYXJrYmx1ZVwiOiBbMCwgMCwgMTM5XSxcclxuXHRcImRhcmtjeWFuXCI6IFswLCAxMzksIDEzOV0sXHJcblx0XCJkYXJrZ29sZGVucm9kXCI6IFsxODQsIDEzNCwgMTFdLFxyXG5cdFwiZGFya2dyYXlcIjogWzE2OSwgMTY5LCAxNjldLFxyXG5cdFwiZGFya2dyZWVuXCI6IFswLCAxMDAsIDBdLFxyXG5cdFwiZGFya2dyZXlcIjogWzE2OSwgMTY5LCAxNjldLFxyXG5cdFwiZGFya2toYWtpXCI6IFsxODksIDE4MywgMTA3XSxcclxuXHRcImRhcmttYWdlbnRhXCI6IFsxMzksIDAsIDEzOV0sXHJcblx0XCJkYXJrb2xpdmVncmVlblwiOiBbODUsIDEwNywgNDddLFxyXG5cdFwiZGFya29yYW5nZVwiOiBbMjU1LCAxNDAsIDBdLFxyXG5cdFwiZGFya29yY2hpZFwiOiBbMTUzLCA1MCwgMjA0XSxcclxuXHRcImRhcmtyZWRcIjogWzEzOSwgMCwgMF0sXHJcblx0XCJkYXJrc2FsbW9uXCI6IFsyMzMsIDE1MCwgMTIyXSxcclxuXHRcImRhcmtzZWFncmVlblwiOiBbMTQzLCAxODgsIDE0M10sXHJcblx0XCJkYXJrc2xhdGVibHVlXCI6IFs3MiwgNjEsIDEzOV0sXHJcblx0XCJkYXJrc2xhdGVncmF5XCI6IFs0NywgNzksIDc5XSxcclxuXHRcImRhcmtzbGF0ZWdyZXlcIjogWzQ3LCA3OSwgNzldLFxyXG5cdFwiZGFya3R1cnF1b2lzZVwiOiBbMCwgMjA2LCAyMDldLFxyXG5cdFwiZGFya3Zpb2xldFwiOiBbMTQ4LCAwLCAyMTFdLFxyXG5cdFwiZGVlcHBpbmtcIjogWzI1NSwgMjAsIDE0N10sXHJcblx0XCJkZWVwc2t5Ymx1ZVwiOiBbMCwgMTkxLCAyNTVdLFxyXG5cdFwiZGltZ3JheVwiOiBbMTA1LCAxMDUsIDEwNV0sXHJcblx0XCJkaW1ncmV5XCI6IFsxMDUsIDEwNSwgMTA1XSxcclxuXHRcImRvZGdlcmJsdWVcIjogWzMwLCAxNDQsIDI1NV0sXHJcblx0XCJmaXJlYnJpY2tcIjogWzE3OCwgMzQsIDM0XSxcclxuXHRcImZsb3JhbHdoaXRlXCI6IFsyNTUsIDI1MCwgMjQwXSxcclxuXHRcImZvcmVzdGdyZWVuXCI6IFszNCwgMTM5LCAzNF0sXHJcblx0XCJmdWNoc2lhXCI6IFsyNTUsIDAsIDI1NV0sXHJcblx0XCJnYWluc2Jvcm9cIjogWzIyMCwgMjIwLCAyMjBdLFxyXG5cdFwiZ2hvc3R3aGl0ZVwiOiBbMjQ4LCAyNDgsIDI1NV0sXHJcblx0XCJnb2xkXCI6IFsyNTUsIDIxNSwgMF0sXHJcblx0XCJnb2xkZW5yb2RcIjogWzIxOCwgMTY1LCAzMl0sXHJcblx0XCJncmF5XCI6IFsxMjgsIDEyOCwgMTI4XSxcclxuXHRcImdyZWVuXCI6IFswLCAxMjgsIDBdLFxyXG5cdFwiZ3JlZW55ZWxsb3dcIjogWzE3MywgMjU1LCA0N10sXHJcblx0XCJncmV5XCI6IFsxMjgsIDEyOCwgMTI4XSxcclxuXHRcImhvbmV5ZGV3XCI6IFsyNDAsIDI1NSwgMjQwXSxcclxuXHRcImhvdHBpbmtcIjogWzI1NSwgMTA1LCAxODBdLFxyXG5cdFwiaW5kaWFucmVkXCI6IFsyMDUsIDkyLCA5Ml0sXHJcblx0XCJpbmRpZ29cIjogWzc1LCAwLCAxMzBdLFxyXG5cdFwiaXZvcnlcIjogWzI1NSwgMjU1LCAyNDBdLFxyXG5cdFwia2hha2lcIjogWzI0MCwgMjMwLCAxNDBdLFxyXG5cdFwibGF2ZW5kZXJcIjogWzIzMCwgMjMwLCAyNTBdLFxyXG5cdFwibGF2ZW5kZXJibHVzaFwiOiBbMjU1LCAyNDAsIDI0NV0sXHJcblx0XCJsYXduZ3JlZW5cIjogWzEyNCwgMjUyLCAwXSxcclxuXHRcImxlbW9uY2hpZmZvblwiOiBbMjU1LCAyNTAsIDIwNV0sXHJcblx0XCJsaWdodGJsdWVcIjogWzE3MywgMjE2LCAyMzBdLFxyXG5cdFwibGlnaHRjb3JhbFwiOiBbMjQwLCAxMjgsIDEyOF0sXHJcblx0XCJsaWdodGN5YW5cIjogWzIyNCwgMjU1LCAyNTVdLFxyXG5cdFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIjogWzI1MCwgMjUwLCAyMTBdLFxyXG5cdFwibGlnaHRncmF5XCI6IFsyMTEsIDIxMSwgMjExXSxcclxuXHRcImxpZ2h0Z3JlZW5cIjogWzE0NCwgMjM4LCAxNDRdLFxyXG5cdFwibGlnaHRncmV5XCI6IFsyMTEsIDIxMSwgMjExXSxcclxuXHRcImxpZ2h0cGlua1wiOiBbMjU1LCAxODIsIDE5M10sXHJcblx0XCJsaWdodHNhbG1vblwiOiBbMjU1LCAxNjAsIDEyMl0sXHJcblx0XCJsaWdodHNlYWdyZWVuXCI6IFszMiwgMTc4LCAxNzBdLFxyXG5cdFwibGlnaHRza3libHVlXCI6IFsxMzUsIDIwNiwgMjUwXSxcclxuXHRcImxpZ2h0c2xhdGVncmF5XCI6IFsxMTksIDEzNiwgMTUzXSxcclxuXHRcImxpZ2h0c2xhdGVncmV5XCI6IFsxMTksIDEzNiwgMTUzXSxcclxuXHRcImxpZ2h0c3RlZWxibHVlXCI6IFsxNzYsIDE5NiwgMjIyXSxcclxuXHRcImxpZ2h0eWVsbG93XCI6IFsyNTUsIDI1NSwgMjI0XSxcclxuXHRcImxpbWVcIjogWzAsIDI1NSwgMF0sXHJcblx0XCJsaW1lZ3JlZW5cIjogWzUwLCAyMDUsIDUwXSxcclxuXHRcImxpbmVuXCI6IFsyNTAsIDI0MCwgMjMwXSxcclxuXHRcIm1hZ2VudGFcIjogWzI1NSwgMCwgMjU1XSxcclxuXHRcIm1hcm9vblwiOiBbMTI4LCAwLCAwXSxcclxuXHRcIm1lZGl1bWFxdWFtYXJpbmVcIjogWzEwMiwgMjA1LCAxNzBdLFxyXG5cdFwibWVkaXVtYmx1ZVwiOiBbMCwgMCwgMjA1XSxcclxuXHRcIm1lZGl1bW9yY2hpZFwiOiBbMTg2LCA4NSwgMjExXSxcclxuXHRcIm1lZGl1bXB1cnBsZVwiOiBbMTQ3LCAxMTIsIDIxOV0sXHJcblx0XCJtZWRpdW1zZWFncmVlblwiOiBbNjAsIDE3OSwgMTEzXSxcclxuXHRcIm1lZGl1bXNsYXRlYmx1ZVwiOiBbMTIzLCAxMDQsIDIzOF0sXHJcblx0XCJtZWRpdW1zcHJpbmdncmVlblwiOiBbMCwgMjUwLCAxNTRdLFxyXG5cdFwibWVkaXVtdHVycXVvaXNlXCI6IFs3MiwgMjA5LCAyMDRdLFxyXG5cdFwibWVkaXVtdmlvbGV0cmVkXCI6IFsxOTksIDIxLCAxMzNdLFxyXG5cdFwibWlkbmlnaHRibHVlXCI6IFsyNSwgMjUsIDExMl0sXHJcblx0XCJtaW50Y3JlYW1cIjogWzI0NSwgMjU1LCAyNTBdLFxyXG5cdFwibWlzdHlyb3NlXCI6IFsyNTUsIDIyOCwgMjI1XSxcclxuXHRcIm1vY2Nhc2luXCI6IFsyNTUsIDIyOCwgMTgxXSxcclxuXHRcIm5hdmFqb3doaXRlXCI6IFsyNTUsIDIyMiwgMTczXSxcclxuXHRcIm5hdnlcIjogWzAsIDAsIDEyOF0sXHJcblx0XCJvbGRsYWNlXCI6IFsyNTMsIDI0NSwgMjMwXSxcclxuXHRcIm9saXZlXCI6IFsxMjgsIDEyOCwgMF0sXHJcblx0XCJvbGl2ZWRyYWJcIjogWzEwNywgMTQyLCAzNV0sXHJcblx0XCJvcmFuZ2VcIjogWzI1NSwgMTY1LCAwXSxcclxuXHRcIm9yYW5nZXJlZFwiOiBbMjU1LCA2OSwgMF0sXHJcblx0XCJvcmNoaWRcIjogWzIxOCwgMTEyLCAyMTRdLFxyXG5cdFwicGFsZWdvbGRlbnJvZFwiOiBbMjM4LCAyMzIsIDE3MF0sXHJcblx0XCJwYWxlZ3JlZW5cIjogWzE1MiwgMjUxLCAxNTJdLFxyXG5cdFwicGFsZXR1cnF1b2lzZVwiOiBbMTc1LCAyMzgsIDIzOF0sXHJcblx0XCJwYWxldmlvbGV0cmVkXCI6IFsyMTksIDExMiwgMTQ3XSxcclxuXHRcInBhcGF5YXdoaXBcIjogWzI1NSwgMjM5LCAyMTNdLFxyXG5cdFwicGVhY2hwdWZmXCI6IFsyNTUsIDIxOCwgMTg1XSxcclxuXHRcInBlcnVcIjogWzIwNSwgMTMzLCA2M10sXHJcblx0XCJwaW5rXCI6IFsyNTUsIDE5MiwgMjAzXSxcclxuXHRcInBsdW1cIjogWzIyMSwgMTYwLCAyMjFdLFxyXG5cdFwicG93ZGVyYmx1ZVwiOiBbMTc2LCAyMjQsIDIzMF0sXHJcblx0XCJwdXJwbGVcIjogWzEyOCwgMCwgMTI4XSxcclxuXHRcInJlYmVjY2FwdXJwbGVcIjogWzEwMiwgNTEsIDE1M10sXHJcblx0XCJyZWRcIjogWzI1NSwgMCwgMF0sXHJcblx0XCJyb3N5YnJvd25cIjogWzE4OCwgMTQzLCAxNDNdLFxyXG5cdFwicm95YWxibHVlXCI6IFs2NSwgMTA1LCAyMjVdLFxyXG5cdFwic2FkZGxlYnJvd25cIjogWzEzOSwgNjksIDE5XSxcclxuXHRcInNhbG1vblwiOiBbMjUwLCAxMjgsIDExNF0sXHJcblx0XCJzYW5keWJyb3duXCI6IFsyNDQsIDE2NCwgOTZdLFxyXG5cdFwic2VhZ3JlZW5cIjogWzQ2LCAxMzksIDg3XSxcclxuXHRcInNlYXNoZWxsXCI6IFsyNTUsIDI0NSwgMjM4XSxcclxuXHRcInNpZW5uYVwiOiBbMTYwLCA4MiwgNDVdLFxyXG5cdFwic2lsdmVyXCI6IFsxOTIsIDE5MiwgMTkyXSxcclxuXHRcInNreWJsdWVcIjogWzEzNSwgMjA2LCAyMzVdLFxyXG5cdFwic2xhdGVibHVlXCI6IFsxMDYsIDkwLCAyMDVdLFxyXG5cdFwic2xhdGVncmF5XCI6IFsxMTIsIDEyOCwgMTQ0XSxcclxuXHRcInNsYXRlZ3JleVwiOiBbMTEyLCAxMjgsIDE0NF0sXHJcblx0XCJzbm93XCI6IFsyNTUsIDI1MCwgMjUwXSxcclxuXHRcInNwcmluZ2dyZWVuXCI6IFswLCAyNTUsIDEyN10sXHJcblx0XCJzdGVlbGJsdWVcIjogWzcwLCAxMzAsIDE4MF0sXHJcblx0XCJ0YW5cIjogWzIxMCwgMTgwLCAxNDBdLFxyXG5cdFwidGVhbFwiOiBbMCwgMTI4LCAxMjhdLFxyXG5cdFwidGhpc3RsZVwiOiBbMjE2LCAxOTEsIDIxNl0sXHJcblx0XCJ0b21hdG9cIjogWzI1NSwgOTksIDcxXSxcclxuXHRcInR1cnF1b2lzZVwiOiBbNjQsIDIyNCwgMjA4XSxcclxuXHRcInZpb2xldFwiOiBbMjM4LCAxMzAsIDIzOF0sXHJcblx0XCJ3aGVhdFwiOiBbMjQ1LCAyMjIsIDE3OV0sXHJcblx0XCJ3aGl0ZVwiOiBbMjU1LCAyNTUsIDI1NV0sXHJcblx0XCJ3aGl0ZXNtb2tlXCI6IFsyNDUsIDI0NSwgMjQ1XSxcclxuXHRcInllbGxvd1wiOiBbMjU1LCAyNTUsIDBdLFxyXG5cdFwieWVsbG93Z3JlZW5cIjogWzE1NCwgMjA1LCA1MF1cclxufTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1082\n')},1083:function(module,exports,__webpack_require__){eval("const conversions = __webpack_require__(1038);\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L3JvdXRlLmpzPzRmYjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CLG1CQUFPLENBQUMsSUFBZTs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQyxTQUFTO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEseUNBQXlDLFNBQVM7QUFDbEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDLFNBQVM7QUFDOUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiMTA4My5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbnZlcnNpb25zID0gcmVxdWlyZSgnLi9jb252ZXJzaW9ucycpO1xuXG4vKlxuXHRUaGlzIGZ1bmN0aW9uIHJvdXRlcyBhIG1vZGVsIHRvIGFsbCBvdGhlciBtb2RlbHMuXG5cblx0YWxsIGZ1bmN0aW9ucyB0aGF0IGFyZSByb3V0ZWQgaGF2ZSBhIHByb3BlcnR5IGAuY29udmVyc2lvbmAgYXR0YWNoZWRcblx0dG8gdGhlIHJldHVybmVkIHN5bnRoZXRpYyBmdW5jdGlvbi4gVGhpcyBwcm9wZXJ0eSBpcyBhbiBhcnJheVxuXHRvZiBzdHJpbmdzLCBlYWNoIHdpdGggdGhlIHN0ZXBzIGluIGJldHdlZW4gdGhlICdmcm9tJyBhbmQgJ3RvJ1xuXHRjb2xvciBtb2RlbHMgKGluY2x1c2l2ZSkuXG5cblx0Y29udmVyc2lvbnMgdGhhdCBhcmUgbm90IHBvc3NpYmxlIHNpbXBseSBhcmUgbm90IGluY2x1ZGVkLlxuKi9cblxuZnVuY3Rpb24gYnVpbGRHcmFwaCgpIHtcblx0Y29uc3QgZ3JhcGggPSB7fTtcblx0Ly8gaHR0cHM6Ly9qc3BlcmYuY29tL29iamVjdC1rZXlzLXZzLWZvci1pbi13aXRoLWNsb3N1cmUvM1xuXHRjb25zdCBtb2RlbHMgPSBPYmplY3Qua2V5cyhjb252ZXJzaW9ucyk7XG5cblx0Zm9yIChsZXQgbGVuID0gbW9kZWxzLmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdGdyYXBoW21vZGVsc1tpXV0gPSB7XG5cdFx0XHQvLyBodHRwOi8vanNwZXJmLmNvbS8xLXZzLWluZmluaXR5XG5cdFx0XHQvLyBtaWNyby1vcHQsIGJ1dCB0aGlzIGlzIHNpbXBsZS5cblx0XHRcdGRpc3RhbmNlOiAtMSxcblx0XHRcdHBhcmVudDogbnVsbFxuXHRcdH07XG5cdH1cblxuXHRyZXR1cm4gZ3JhcGg7XG59XG5cbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JyZWFkdGgtZmlyc3Rfc2VhcmNoXG5mdW5jdGlvbiBkZXJpdmVCRlMoZnJvbU1vZGVsKSB7XG5cdGNvbnN0IGdyYXBoID0gYnVpbGRHcmFwaCgpO1xuXHRjb25zdCBxdWV1ZSA9IFtmcm9tTW9kZWxdOyAvLyBVbnNoaWZ0IC0+IHF1ZXVlIC0+IHBvcFxuXG5cdGdyYXBoW2Zyb21Nb2RlbF0uZGlzdGFuY2UgPSAwO1xuXG5cdHdoaWxlIChxdWV1ZS5sZW5ndGgpIHtcblx0XHRjb25zdCBjdXJyZW50ID0gcXVldWUucG9wKCk7XG5cdFx0Y29uc3QgYWRqYWNlbnRzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnNbY3VycmVudF0pO1xuXG5cdFx0Zm9yIChsZXQgbGVuID0gYWRqYWNlbnRzLmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0Y29uc3QgYWRqYWNlbnQgPSBhZGphY2VudHNbaV07XG5cdFx0XHRjb25zdCBub2RlID0gZ3JhcGhbYWRqYWNlbnRdO1xuXG5cdFx0XHRpZiAobm9kZS5kaXN0YW5jZSA9PT0gLTEpIHtcblx0XHRcdFx0bm9kZS5kaXN0YW5jZSA9IGdyYXBoW2N1cnJlbnRdLmRpc3RhbmNlICsgMTtcblx0XHRcdFx0bm9kZS5wYXJlbnQgPSBjdXJyZW50O1xuXHRcdFx0XHRxdWV1ZS51bnNoaWZ0KGFkamFjZW50KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZ3JhcGg7XG59XG5cbmZ1bmN0aW9uIGxpbmsoZnJvbSwgdG8pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG5cdFx0cmV0dXJuIHRvKGZyb20oYXJncykpO1xuXHR9O1xufVxuXG5mdW5jdGlvbiB3cmFwQ29udmVyc2lvbih0b01vZGVsLCBncmFwaCkge1xuXHRjb25zdCBwYXRoID0gW2dyYXBoW3RvTW9kZWxdLnBhcmVudCwgdG9Nb2RlbF07XG5cdGxldCBmbiA9IGNvbnZlcnNpb25zW2dyYXBoW3RvTW9kZWxdLnBhcmVudF1bdG9Nb2RlbF07XG5cblx0bGV0IGN1ciA9IGdyYXBoW3RvTW9kZWxdLnBhcmVudDtcblx0d2hpbGUgKGdyYXBoW2N1cl0ucGFyZW50KSB7XG5cdFx0cGF0aC51bnNoaWZ0KGdyYXBoW2N1cl0ucGFyZW50KTtcblx0XHRmbiA9IGxpbmsoY29udmVyc2lvbnNbZ3JhcGhbY3VyXS5wYXJlbnRdW2N1cl0sIGZuKTtcblx0XHRjdXIgPSBncmFwaFtjdXJdLnBhcmVudDtcblx0fVxuXG5cdGZuLmNvbnZlcnNpb24gPSBwYXRoO1xuXHRyZXR1cm4gZm47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZyb21Nb2RlbCkge1xuXHRjb25zdCBncmFwaCA9IGRlcml2ZUJGUyhmcm9tTW9kZWwpO1xuXHRjb25zdCBjb252ZXJzaW9uID0ge307XG5cblx0Y29uc3QgbW9kZWxzID0gT2JqZWN0LmtleXMoZ3JhcGgpO1xuXHRmb3IgKGxldCBsZW4gPSBtb2RlbHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0Y29uc3QgdG9Nb2RlbCA9IG1vZGVsc1tpXTtcblx0XHRjb25zdCBub2RlID0gZ3JhcGhbdG9Nb2RlbF07XG5cblx0XHRpZiAobm9kZS5wYXJlbnQgPT09IG51bGwpIHtcblx0XHRcdC8vIE5vIHBvc3NpYmxlIGNvbnZlcnNpb24sIG9yIHRoaXMgbm9kZSBpcyB0aGUgc291cmNlIG1vZGVsLlxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Y29udmVyc2lvblt0b01vZGVsXSA9IHdyYXBDb252ZXJzaW9uKHRvTW9kZWwsIGdyYXBoKTtcblx0fVxuXG5cdHJldHVybiBjb252ZXJzaW9uO1xufTtcblxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1083\n")},1084:function(module,exports,__webpack_require__){eval("var debounce = __webpack_require__(1085),\n isObject = __webpack_require__(156);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvdGhyb3R0bGUuanM/YmVmOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsSUFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsR0FBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTyxZQUFZO0FBQzlCLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsb0JBQW9CO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsImZpbGUiOiIxMDg0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlYm91bmNlID0gcmVxdWlyZSgnLi9kZWJvdW5jZScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB0aHJvdHRsZWQgZnVuY3Rpb24gdGhhdCBvbmx5IGludm9rZXMgYGZ1bmNgIGF0IG1vc3Qgb25jZSBwZXJcbiAqIGV2ZXJ5IGB3YWl0YCBtaWxsaXNlY29uZHMuIFRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgXG4gKiBtZXRob2QgdG8gY2FuY2VsIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvXG4gKiBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS4gUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2BcbiAqIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZSBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGBcbiAqIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZCB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGVcbiAqIHRocm90dGxlZCBmdW5jdGlvbi4gU3Vic2VxdWVudCBjYWxscyB0byB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHJldHVybiB0aGVcbiAqIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIHRocm90dGxlZCBmdW5jdGlvblxuICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICpcbiAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICpcbiAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy50aHJvdHRsZWAgYW5kIGBfLmRlYm91bmNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHRocm90dGxlLlxuICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRocm90dGxlIGludm9jYXRpb25zIHRvLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHRocm90dGxlZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQXZvaWQgZXhjZXNzaXZlbHkgdXBkYXRpbmcgdGhlIHBvc2l0aW9uIHdoaWxlIHNjcm9sbGluZy5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdzY3JvbGwnLCBfLnRocm90dGxlKHVwZGF0ZVBvc2l0aW9uLCAxMDApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHJlbmV3VG9rZW5gIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBidXQgbm90IG1vcmUgdGhhbiBvbmNlIGV2ZXJ5IDUgbWludXRlcy5cbiAqIHZhciB0aHJvdHRsZWQgPSBfLnRocm90dGxlKHJlbmV3VG9rZW4sIDMwMDAwMCwgeyAndHJhaWxpbmcnOiBmYWxzZSB9KTtcbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB0aHJvdHRsZWQpO1xuICpcbiAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgdGhyb3R0bGVkIGludm9jYXRpb24uXG4gKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCB0aHJvdHRsZWQuY2FuY2VsKTtcbiAqL1xuZnVuY3Rpb24gdGhyb3R0bGUoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICB2YXIgbGVhZGluZyA9IHRydWUsXG4gICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgbGVhZGluZyA9ICdsZWFkaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLmxlYWRpbmcgOiBsZWFkaW5nO1xuICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gIH1cbiAgcmV0dXJuIGRlYm91bmNlKGZ1bmMsIHdhaXQsIHtcbiAgICAnbGVhZGluZyc6IGxlYWRpbmcsXG4gICAgJ21heFdhaXQnOiB3YWl0LFxuICAgICd0cmFpbGluZyc6IHRyYWlsaW5nXG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRocm90dGxlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1084\n")},1085:function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(156),\n now = __webpack_require__(1086),\n toNumber = __webpack_require__(1087);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVib3VuY2UuanM/NjI1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsR0FBWTtBQUNuQyxVQUFVLG1CQUFPLENBQUMsSUFBTztBQUN6QixlQUFlLG1CQUFPLENBQUMsSUFBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTyxZQUFZO0FBQzlCLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLDhDQUE4QyxrQkFBa0I7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIxMDg1LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIG5vdyA9IHJlcXVpcmUoJy4vbm93JyksXG4gICAgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICB0aW1lV2FpdGluZyA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgIHJldHVybiBtYXhpbmdcbiAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgIDogdGltZVdhaXRpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICB9XG4gICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgIH1cbiAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICByZXR1cm4gZGVib3VuY2VkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1085\n")},1086:function(module,exports,__webpack_require__){eval("var root = __webpack_require__(119);\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvbm93LmpzPzgyZDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsV0FBVyxtQkFBTyxDQUFDLEdBQVM7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIxMDg2LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1086\n")},1087:function(module,exports,__webpack_require__){eval("var baseTrim = __webpack_require__(1088),\n isObject = __webpack_require__(156),\n isSymbol = __webpack_require__(298);\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanM/NjM4MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsSUFBYTtBQUNwQyxlQUFlLG1CQUFPLENBQUMsR0FBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsR0FBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6IjEwODcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVRyaW0gPSByZXF1aXJlKCcuL19iYXNlVHJpbScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gYmFzZVRyaW0odmFsdWUpO1xuICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1087\n")},1088:function(module,exports,__webpack_require__){eval("var trimmedEndIndex = __webpack_require__(1089);\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUcmltLmpzPzU4NWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCLG1CQUFPLENBQUMsSUFBb0I7O0FBRWxEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIxMDg4LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRyaW1tZWRFbmRJbmRleCA9IHJlcXVpcmUoJy4vX3RyaW1tZWRFbmRJbmRleCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltU3RhcnQgPSAvXlxccysvO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRyaW1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVHJpbShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZ1xuICAgID8gc3RyaW5nLnNsaWNlKDAsIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpICsgMSkucmVwbGFjZShyZVRyaW1TdGFydCwgJycpXG4gICAgOiBzdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRyaW07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1088\n")},1089:function(module,exports){eval("/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RyaW1tZWRFbmRJbmRleC5qcz9jODgwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIxMDg5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgdG8gbWF0Y2ggYSBzaW5nbGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuICovXG52YXIgcmVXaGl0ZXNwYWNlID0gL1xccy87XG5cbi8qKlxuICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZVxuICogY2hhcmFjdGVyIG9mIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3Rlci5cbiAqL1xuZnVuY3Rpb24gdHJpbW1lZEVuZEluZGV4KHN0cmluZykge1xuICB2YXIgaW5kZXggPSBzdHJpbmcubGVuZ3RoO1xuXG4gIHdoaWxlIChpbmRleC0tICYmIHJlV2hpdGVzcGFjZS50ZXN0KHN0cmluZy5jaGFyQXQoaW5kZXgpKSkge31cbiAgcmV0dXJuIGluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRyaW1tZWRFbmRJbmRleDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1089\n")},576:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return TooltipNote; });\n/* harmony import */ var core_js_modules_es_string_bold_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(172);\n/* harmony import */ var core_js_modules_es_string_bold_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_bold_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _storybook_theming__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3);\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\nvar Note = _storybook_theming__WEBPACK_IMPORTED_MODULE_4__[\"styled\"].div(function (_ref) {\n var theme = _ref.theme;\n return {\n padding: '2px 6px',\n lineHeight: '16px',\n fontSize: 10,\n fontWeight: theme.typography.weight.bold,\n color: theme.color.lightest,\n boxShadow: '0 0 5px 0 rgba(0, 0, 0, 0.3)',\n borderRadius: 4,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n zIndex: -1,\n background: 'rgba(0, 0, 0, 0.4)',\n margin: 6\n };\n});\nvar TooltipNote = function TooltipNote(_ref2) {\n var note = _ref2.note,\n props = _objectWithoutProperties(_ref2, [\"note\"]);\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(Note, props, note);\n};\nTooltipNote.displayName = \"TooltipNote\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHN0b3J5Ym9vay9jb21wb25lbnRzL2Rpc3QvZXNtL3Rvb2x0aXAvVG9vbHRpcE5vdGUuanM/N2Q5NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFEQUFxRCwrQkFBK0IsOERBQThELFlBQVksb0NBQW9DLDZEQUE2RCxZQUFZLDZCQUE2QixPQUFPLDJCQUEyQiwwQ0FBMEMsd0VBQXdFLDJCQUEyQixFQUFFLEVBQUUsZUFBZTs7QUFFMWUsMERBQTBELCtCQUErQixpQkFBaUIsc0NBQXNDLFlBQVksWUFBWSx1QkFBdUIsT0FBTyxxQkFBcUIsMENBQTBDLDJCQUEyQixFQUFFLGVBQWU7O0FBRXRRO0FBQ0E7QUFDTDtBQUNaO0FBQ2tCO0FBQzVDLFdBQVcseURBQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNNO0FBQ1A7QUFDQTs7QUFFQSxzQkFBc0IsNENBQUs7QUFDM0I7QUFDQSIsImZpbGUiOiI1NzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmJvbGQuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5qc1wiO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJ0BzdG9yeWJvb2svdGhlbWluZyc7XG52YXIgTm90ZSA9IHN0eWxlZC5kaXYoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIHRoZW1lID0gX3JlZi50aGVtZTtcbiAgcmV0dXJuIHtcbiAgICBwYWRkaW5nOiAnMnB4IDZweCcsXG4gICAgbGluZUhlaWdodDogJzE2cHgnLFxuICAgIGZvbnRTaXplOiAxMCxcbiAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LndlaWdodC5ib2xkLFxuICAgIGNvbG9yOiB0aGVtZS5jb2xvci5saWdodGVzdCxcbiAgICBib3hTaGFkb3c6ICcwIDAgNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjMpJyxcbiAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgIHpJbmRleDogLTEsXG4gICAgYmFja2dyb3VuZDogJ3JnYmEoMCwgMCwgMCwgMC40KScsXG4gICAgbWFyZ2luOiA2XG4gIH07XG59KTtcbmV4cG9ydCB2YXIgVG9vbHRpcE5vdGUgPSBmdW5jdGlvbiBUb29sdGlwTm90ZShfcmVmMikge1xuICB2YXIgbm90ZSA9IF9yZWYyLm5vdGUsXG4gICAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmMiwgW1wibm90ZVwiXSk7XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE5vdGUsIHByb3BzLCBub3RlKTtcbn07XG5Ub29sdGlwTm90ZS5kaXNwbGF5TmFtZSA9IFwiVG9vbHRpcE5vdGVcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///576\n")}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[10],{1014:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, "ColorControl", function() { return /* binding */ Color_ColorControl; });\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.object.keys.js\nvar es_object_keys = __webpack_require__(18);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.symbol.js\nvar es_symbol = __webpack_require__(4);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.symbol.description.js\nvar es_symbol_description = __webpack_require__(11);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __webpack_require__(12);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.symbol.iterator.js\nvar es_symbol_iterator = __webpack_require__(19);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __webpack_require__(15);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.iterator.js\nvar es_array_iterator = __webpack_require__(13);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/web.dom-collections.iterator.js\nvar web_dom_collections_iterator = __webpack_require__(14);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.from.js\nvar es_array_from = __webpack_require__(22);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __webpack_require__(20);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.object.assign.js\nvar es_object_assign = __webpack_require__(9);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.object.values.js\nvar es_object_values = __webpack_require__(131);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.string.match.js\nvar es_string_match = __webpack_require__(118);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __webpack_require__(30);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __webpack_require__(24);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.number.constructor.js\nvar es_number_constructor = __webpack_require__(158);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __webpack_require__(48);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.string.starts-with.js\nvar es_string_starts_with = __webpack_require__(157);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __webpack_require__(71);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __webpack_require__(8);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __webpack_require__(51);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __webpack_require__(7);\n\n// EXTERNAL MODULE: ./node_modules/react/index.js\nvar react = __webpack_require__(1);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// CONCATENATED MODULE: ./node_modules/react-colorful/dist/index.module.js\nfunction index_module_u(){return(index_module_u=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function index_module_c(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r.indexOf(t=a[n])>=0||(o[t]=e[t]);return o}function index_module_i(e){var t=Object(react["useRef"])(e),n=Object(react["useRef"])(function(e){t.current&&t.current(e)});return t.current=e,n.current}var index_module_s=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=1),e>t?t:e<r?r:e},index_module_f=function(e){return"touches"in e},index_module_v=function(e){return e&&e.ownerDocument.defaultView||self},index_module_d=function(e,r,t){var n=e.getBoundingClientRect(),o=index_module_f(r)?function(e,r){for(var t=0;t<e.length;t++)if(e[t].identifier===r)return e[t];return e[0]}(r.touches,t):r;return{left:index_module_s((o.pageX-(n.left+index_module_v(e).pageXOffset))/n.width),top:index_module_s((o.pageY-(n.top+index_module_v(e).pageYOffset))/n.height)}},index_module_h=function(e){!index_module_f(e)&&e.preventDefault()},index_module_m=react_default.a.memo(function(o){var a=o.onMove,l=o.onKey,s=index_module_c(o,["onMove","onKey"]),m=Object(react["useRef"])(null),g=index_module_i(a),p=index_module_i(l),b=Object(react["useRef"])(null),_=Object(react["useRef"])(!1),x=Object(react["useMemo"])(function(){var e=function(e){index_module_h(e),(index_module_f(e)?e.touches.length>0:e.buttons>0)&&m.current?g(index_module_d(m.current,e,b.current)):t(!1)},r=function(){return t(!1)};function t(t){var n=_.current,o=index_module_v(m.current),a=t?o.addEventListener:o.removeEventListener;a(n?"touchmove":"mousemove",e),a(n?"touchend":"mouseup",r)}return[function(e){var r=e.nativeEvent,n=m.current;if(n&&(index_module_h(r),!function(e,r){return r&&!index_module_f(e)}(r,_.current)&&n)){if(index_module_f(r)){_.current=!0;var o=r.changedTouches||[];o.length&&(b.current=o[0].identifier)}n.focus(),g(index_module_d(n,r,b.current)),t(!0)}},function(e){var r=e.which||e.keyCode;r<37||r>40||(e.preventDefault(),p({left:39===r?.05:37===r?-.05:0,top:40===r?.05:38===r?-.05:0}))},t]},[p,g]),C=x[0],E=x[1],H=x[2];return Object(react["useEffect"])(function(){return H},[H]),react_default.a.createElement("div",index_module_u({},s,{onTouchStart:C,onMouseDown:C,className:"react-colorful__interactive",ref:m,onKeyDown:E,tabIndex:0,role:"slider"}))}),index_module_g=function(e){return e.filter(Boolean).join(" ")},index_module_p=function(r){var t=r.color,n=r.left,o=r.top,a=void 0===o?.5:o,l=index_module_g(["react-colorful__pointer",r.className]);return react_default.a.createElement("div",{className:l,style:{top:100*a+"%",left:100*n+"%"}},react_default.a.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},index_module_b=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=Math.pow(10,r)),Math.round(t*e)/t},index_module_={grad:.9,turn:360,rad:360/(2*Math.PI)},index_module_x=function(e){return"#"===e[0]&&(e=e.substr(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:1}:{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:1}},index_module_C=function(e,r){return void 0===r&&(r="deg"),Number(e)*(index_module_[r]||1)},index_module_E=function(e){var r=/hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?M({h:index_module_C(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:void 0===r[5]?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},index_module_H=index_module_E,M=function(e){var r=e.s,t=e.l;return{h:e.h,s:(r*=(t<50?t:100-t)/100)>0?2*r/(t+r)*100:0,v:t+r,a:e.a}},N=function(e){var r=e.s,t=e.v,n=e.a,o=(200-r)*t/100;return{h:index_module_b(e.h),s:index_module_b(o>0&&o<200?r*t/100/(o<=100?o:200-o)*100:0),l:index_module_b(o/2),a:index_module_b(n,2)}},w=function(e){var r=N(e);return"hsl("+r.h+", "+r.s+"%, "+r.l+"%)"},y=function(e){var r=N(e);return"hsla("+r.h+", "+r.s+"%, "+r.l+"%, "+r.a+")"},q=function(e){var r=e.h,t=e.s,n=e.v,o=e.a;r=r/360*6,t/=100,n/=100;var a=Math.floor(r),l=n*(1-t),u=n*(1-(r-a)*t),c=n*(1-(1-r+a)*t),i=a%6;return{r:index_module_b(255*[n,u,l,l,c,n][i]),g:index_module_b(255*[c,n,n,u,l,l][i]),b:index_module_b(255*[l,l,c,n,n,u][i]),a:index_module_b(o,2)}},k=function(e){var r=/hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?D({h:index_module_C(r[1],r[2]),s:Number(r[3]),v:Number(r[4]),a:void 0===r[5]?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},O=k,I=function(e){var r=/rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?B({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:void 0===r[7]?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},j=I,z=function(e){var r=e.toString(16);return r.length<2?"0"+r:r},B=function(e){var r=e.r,t=e.g,n=e.b,o=e.a,a=Math.max(r,t,n),l=a-Math.min(r,t,n),u=l?a===r?(t-n)/l:a===t?2+(n-r)/l:4+(r-t)/l:0;return{h:index_module_b(60*(u<0?u+6:u)),s:index_module_b(a?l/a*100:0),v:index_module_b(a/255*100),a:o}},D=function(e){return{h:index_module_b(e.h),s:index_module_b(e.s),v:index_module_b(e.v),a:index_module_b(e.a,2)}},K=react_default.a.memo(function(r){var t=r.hue,n=r.onChange,o=index_module_g(["react-colorful__hue",r.className]);return react_default.a.createElement("div",{className:o},react_default.a.createElement(index_module_m,{onMove:function(e){n({h:360*e.left})},onKey:function(e){n({h:index_module_s(t+360*e.left,0,360)})},"aria-label":"Hue","aria-valuetext":index_module_b(t)},react_default.a.createElement(index_module_p,{className:"react-colorful__hue-pointer",left:t/360,color:w({h:t,s:100,v:100,a:1})})))}),L=react_default.a.memo(function(r){var t=r.hsva,n=r.onChange,o={backgroundColor:w({h:t.h,s:100,v:100,a:1})};return react_default.a.createElement("div",{className:"react-colorful__saturation",style:o},react_default.a.createElement(index_module_m,{onMove:function(e){n({s:100*e.left,v:100-100*e.top})},onKey:function(e){n({s:index_module_s(t.s+100*e.left,0,100),v:index_module_s(t.v-100*e.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+index_module_b(t.s)+"%, Brightness "+index_module_b(t.v)+"%"},react_default.a.createElement(index_module_p,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:w(t)})))}),A=function(e,r){if(e===r)return!0;for(var t in e)if(e[t]!==r[t])return!1;return!0},S=function(e,r){return e.replace(/\\s/g,"")===r.replace(/\\s/g,"")};function T(e,t,l){var u=index_module_i(l),c=Object(react["useState"])(function(){return e.toHsva(t)}),s=c[0],f=c[1],v=Object(react["useRef"])({color:t,hsva:s});Object(react["useEffect"])(function(){if(!e.equal(t,v.current.color)){var r=e.toHsva(t);v.current={hsva:r,color:t},f(r)}},[t,e]),Object(react["useEffect"])(function(){var r;A(s,v.current.hsva)||e.equal(r=e.fromHsva(s),v.current.color)||(v.current={hsva:s,color:r},u(r))},[s,e,u]);var d=Object(react["useCallback"])(function(e){f(function(r){return Object.assign({},r,e)})},[]);return[s,d]}var F,P="undefined"!=typeof window?react["useLayoutEffect"]:react["useEffect"],X=function(){return F||( true?__webpack_require__.nc:undefined)},Y=function(e){F=e},R=new Map,V=function(e){P(function(){var r=e.current?e.current.ownerDocument:document;if(void 0!==r&&!R.has(r)){var t=r.createElement("style");t.innerHTML=\'.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url(\\\'data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>\\\')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}\',R.set(r,t);var n=X();n&&t.setAttribute("nonce",n),r.head.appendChild(t)}},[])},$=function(t){var n=t.className,o=t.colorModel,a=t.color,l=void 0===a?o.defaultColor:a,i=t.onChange,s=index_module_c(t,["className","colorModel","color","onChange"]),f=Object(react["useRef"])(null);V(f);var v=T(o,l,i),d=v[0],h=v[1],m=index_module_g(["react-colorful",n]);return react_default.a.createElement("div",index_module_u({},s,{ref:f,className:m}),react_default.a.createElement(L,{hsva:d,onChange:h}),react_default.a.createElement(K,{hue:d.h,onChange:h,className:"react-colorful__last-control"}))},G={defaultColor:"000",toHsva:function(e){return B(index_module_x(e))},fromHsva:function(e){return t=(r=q(e)).g,n=r.b,"#"+z(r.r)+z(t)+z(n);var r,t,n},equal:function(e,r){return e.toLowerCase()===r.toLowerCase()||A(index_module_x(e),index_module_x(r))}},J=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:G}))},Q=function(r){var t=r.className,n=r.hsva,o=r.onChange,a={backgroundImage:"linear-gradient(90deg, "+y(Object.assign({},n,{a:0}))+", "+y(Object.assign({},n,{a:1}))+")"},l=index_module_g(["react-colorful__alpha",t]);return react_default.a.createElement("div",{className:l},react_default.a.createElement("div",{className:"react-colorful__alpha-gradient",style:a}),react_default.a.createElement(index_module_m,{onMove:function(e){o({a:e.left})},onKey:function(e){o({a:index_module_s(n.a+e.left)})},"aria-label":"Alpha","aria-valuetext":index_module_b(100*n.a)+"%"},react_default.a.createElement(index_module_p,{className:"react-colorful__alpha-pointer",left:n.a,color:y(n)})))},U=function(t){var n=t.className,o=t.colorModel,a=t.color,l=void 0===a?o.defaultColor:a,i=t.onChange,s=index_module_c(t,["className","colorModel","color","onChange"]),f=Object(react["useRef"])(null);V(f);var v=T(o,l,i),d=v[0],h=v[1],m=index_module_g(["react-colorful",n]);return react_default.a.createElement("div",index_module_u({},s,{ref:f,className:m}),react_default.a.createElement(L,{hsva:d,onChange:h}),react_default.a.createElement(K,{hue:d.h,onChange:h}),react_default.a.createElement(Q,{hsva:d,onChange:h,className:"react-colorful__last-control"}))},W={defaultColor:{h:0,s:0,l:0,a:1},toHsva:M,fromHsva:N,equal:A},Z=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:W}))},ee={defaultColor:"hsla(0, 0%, 0%, 1)",toHsva:index_module_E,fromHsva:y,equal:S},re=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:ee}))},te={defaultColor:{h:0,s:0,l:0},toHsva:function(e){return M({h:e.h,s:e.s,l:e.l,a:1})},fromHsva:function(e){return{h:(r=N(e)).h,s:r.s,l:r.l};var r},equal:A},ne=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:te}))},oe={defaultColor:"hsl(0, 0%, 0%)",toHsva:index_module_H,fromHsva:w,equal:S},ae=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:oe}))},le={defaultColor:{h:0,s:0,v:0,a:1},toHsva:function(e){return e},fromHsva:D,equal:A},ue=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:le}))},ce={defaultColor:"hsva(0, 0%, 0%, 1)",toHsva:k,fromHsva:function(e){var r=D(e);return"hsva("+r.h+", "+r.s+"%, "+r.v+"%, "+r.a+")"},equal:S},ie=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:ce}))},se={defaultColor:{h:0,s:0,v:0},toHsva:function(e){return{h:e.h,s:e.s,v:e.v,a:1}},fromHsva:function(e){var r=D(e);return{h:r.h,s:r.s,v:r.v}},equal:A},fe=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:se}))},ve={defaultColor:"hsv(0, 0%, 0%)",toHsva:O,fromHsva:function(e){var r=D(e);return"hsv("+r.h+", "+r.s+"%, "+r.v+"%)"},equal:S},de=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:ve}))},he={defaultColor:{r:0,g:0,b:0,a:1},toHsva:B,fromHsva:q,equal:A},me=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:he}))},ge={defaultColor:"rgba(0, 0, 0, 1)",toHsva:I,fromHsva:function(e){var r=q(e);return"rgba("+r.r+", "+r.g+", "+r.b+", "+r.a+")"},equal:S},pe=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:ge}))},be={defaultColor:{r:0,g:0,b:0},toHsva:function(e){return B({r:e.r,g:e.g,b:e.b,a:1})},fromHsva:function(e){return{r:(r=q(e)).r,g:r.g,b:r.b};var r},equal:A},_e=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:be}))},xe={defaultColor:"rgb(0, 0, 0)",toHsva:j,fromHsva:function(e){var r=q(e);return"rgb("+r.r+", "+r.g+", "+r.b+")"},equal:S},Ce=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:xe}))},Ee=/^#?([0-9A-F]{3,8})$/i,He=function(r){var t=r.color,l=void 0===t?"":t,s=r.onChange,f=r.onBlur,v=r.escape,d=r.validate,h=r.format,m=r.process,g=index_module_c(r,["color","onChange","onBlur","escape","validate","format","process"]),p=Object(react["useState"])(function(){return v(l)}),b=p[0],_=p[1],x=index_module_i(s),C=index_module_i(f),E=Object(react["useCallback"])(function(e){var r=v(e.target.value);_(r),d(r)&&x(m?m(r):r)},[v,m,d,x]),H=Object(react["useCallback"])(function(e){d(e.target.value)||_(v(l)),C(e)},[l,v,d,C]);return Object(react["useEffect"])(function(){_(v(l))},[l,v]),react_default.a.createElement("input",index_module_u({},g,{value:h?h(b):b,spellCheck:"false",onChange:E,onBlur:H}))},Me=function(e){return"#"+e},Ne=function(r){var t=r.prefixed,n=r.alpha,o=index_module_c(r,["prefixed","alpha"]),l=Object(react["useCallback"])(function(e){return e.replace(/([^0-9A-F]+)/gi,"").substr(0,n?8:6)},[n]),i=Object(react["useCallback"])(function(e){return function(e,r){var t=Ee.exec(e),n=t?t[1].length:0;return 3===n||6===n||!!r&&4===n||!!r&&8===n}(e,n)},[n]);return react_default.a.createElement(He,index_module_u({},o,{escape:l,format:t?Me:void 0,process:Me,validate:i}))};\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/color-convert/index.js\nvar color_convert = __webpack_require__(1082);\nvar color_convert_default = /*#__PURE__*/__webpack_require__.n(color_convert);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_main/node_modules/lodash/throttle.js\nvar throttle = __webpack_require__(1085);\nvar throttle_default = /*#__PURE__*/__webpack_require__.n(throttle);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/theming/dist/esm/index.js\nvar esm = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/tooltip/TooltipNote.js\nvar TooltipNote = __webpack_require__(577);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/tooltip/lazy-WithTooltip.js\nvar lazy_WithTooltip = __webpack_require__(218);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/form/index.js + 2 modules\nvar esm_form = __webpack_require__(78);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/icon/icon.js + 2 modules\nvar icon = __webpack_require__(66);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/controls/helpers.js\nvar helpers = __webpack_require__(65);\n\n// CONCATENATED MODULE: ./node_modules/@storybook/components/dist/esm/controls/Color.js\n\n\n\n\n\n\n\n\n\n\nvar _ColorPicker, _fallbackColor;\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Wrapper = esm["styled"].div({\n position: \'relative\',\n maxWidth: 250\n});\nvar PickerTooltip = Object(esm["styled"])(lazy_WithTooltip["a" /* WithTooltip */])({\n position: \'absolute\',\n zIndex: 1,\n top: 4,\n left: 4\n});\nvar TooltipContent = esm["styled"].div({\n width: 200,\n margin: 5,\n \'.react-colorful__saturation\': {\n borderRadius: \'4px 4px 0 0\'\n },\n \'.react-colorful__hue\': {\n boxShadow: \'inset 0 0 0 1px rgb(0 0 0 / 5%)\'\n },\n \'.react-colorful__last-control\': {\n borderRadius: \'0 0 4px 4px\'\n }\n});\nvar Note = Object(esm["styled"])(TooltipNote["a" /* TooltipNote */])(function (_ref) {\n var theme = _ref.theme;\n return {\n fontFamily: theme.typography.fonts.base\n };\n});\nvar Swatches = esm["styled"].div({\n display: \'grid\',\n gridTemplateColumns: \'repeat(9, 16px)\',\n gap: 6,\n padding: 3,\n marginTop: 5,\n width: 200\n});\nvar SwatchColor = esm["styled"].div(function (_ref2) {\n var theme = _ref2.theme,\n active = _ref2.active;\n return {\n width: 16,\n height: 16,\n boxShadow: active ? "".concat(theme.appBorderColor, " 0 0 0 1px inset, ").concat(theme.color.mediumdark, "50 0 0 0 4px") : "".concat(theme.appBorderColor, " 0 0 0 1px inset"),\n borderRadius: theme.appBorderRadius\n };\n});\nvar swatchBackground = "url(\'data:image/svg+xml;charset=utf-8,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"16\\" height=\\"16\\" fill-opacity=\\".05\\"><path d=\\"M8 0h8v8H8zM0 8h8v8H0z\\"/></svg>\')";\n\nvar Color_Swatch = function Swatch(_ref3) {\n var value = _ref3.value,\n active = _ref3.active,\n onClick = _ref3.onClick,\n style = _ref3.style,\n props = _objectWithoutProperties(_ref3, ["value", "active", "onClick", "style"]);\n\n var backgroundImage = "linear-gradient(".concat(value, ", ").concat(value, "), ").concat(swatchBackground, ", linear-gradient(#fff, #fff)");\n return /*#__PURE__*/react_default.a.createElement(SwatchColor, _extends({}, props, {\n active: active,\n onClick: onClick,\n style: Object.assign({}, style, {\n backgroundImage: backgroundImage\n })\n }));\n};\n\nColor_Swatch.displayName = "Swatch";\nvar Input = Object(esm["styled"])(esm_form["a" /* Form */].Input)(function (_ref4) {\n var theme = _ref4.theme;\n return {\n width: \'100%\',\n paddingLeft: 30,\n paddingRight: 30,\n boxSizing: \'border-box\',\n fontFamily: theme.typography.fonts.base\n };\n});\nvar ToggleIcon = Object(esm["styled"])(icon["a" /* Icons */])(function (_ref5) {\n var theme = _ref5.theme;\n return {\n position: \'absolute\',\n zIndex: 1,\n top: 6,\n right: 7,\n width: 20,\n height: 20,\n padding: 4,\n boxSizing: \'border-box\',\n cursor: \'pointer\',\n color: theme.input.color\n };\n});\nvar ColorSpace;\n\n(function (ColorSpace) {\n ColorSpace["RGB"] = "rgb";\n ColorSpace["HSL"] = "hsl";\n ColorSpace["HEX"] = "hex";\n})(ColorSpace || (ColorSpace = {}));\n\nvar COLOR_SPACES = Object.values(ColorSpace);\nvar COLOR_REGEXP = /\\(([0-9]+),\\s*([0-9]+)%?,\\s*([0-9]+)%?,?\\s*([0-9.]+)?\\)/;\nvar RGB_REGEXP = /^\\s*rgba?\\(([0-9]+),\\s*([0-9]+),\\s*([0-9]+),?\\s*([0-9.]+)?\\)\\s*$/i;\nvar HSL_REGEXP = /^\\s*hsla?\\(([0-9]+),\\s*([0-9]+)%,\\s*([0-9]+)%,?\\s*([0-9.]+)?\\)\\s*$/i;\nvar HEX_REGEXP = /^\\s*#?([0-9a-f]{3}|[0-9a-f]{6})\\s*$/i;\nvar SHORTHEX_REGEXP = /^\\s*#?([0-9a-f]{3})\\s*$/i;\nvar ColorPicker = (_ColorPicker = {}, _defineProperty(_ColorPicker, ColorSpace.HEX, J), _defineProperty(_ColorPicker, ColorSpace.RGB, pe), _defineProperty(_ColorPicker, ColorSpace.HSL, re), _ColorPicker);\nvar fallbackColor = (_fallbackColor = {}, _defineProperty(_fallbackColor, ColorSpace.HEX, \'transparent\'), _defineProperty(_fallbackColor, ColorSpace.RGB, \'rgba(0, 0, 0, 0)\'), _defineProperty(_fallbackColor, ColorSpace.HSL, \'hsla(0, 0%, 0%, 0)\'), _fallbackColor);\n\nvar stringToArgs = function stringToArgs(value) {\n var match = value === null || value === void 0 ? void 0 : value.match(COLOR_REGEXP);\n if (!match) return [0, 0, 0, 1];\n\n var _match = _slicedToArray(match, 5),\n x = _match[1],\n y = _match[2],\n z = _match[3],\n _match$ = _match[4],\n a = _match$ === void 0 ? 1 : _match$;\n\n return [x, y, z, a].map(Number);\n};\n\nvar Color_parseValue = function parseValue(value) {\n var _ref12;\n\n if (!value) return undefined;\n var valid = true;\n\n if (RGB_REGEXP.test(value)) {\n var _ref8;\n\n var _stringToArgs = stringToArgs(value),\n _stringToArgs2 = _slicedToArray(_stringToArgs, 4),\n r = _stringToArgs2[0],\n g = _stringToArgs2[1],\n b = _stringToArgs2[2],\n a = _stringToArgs2[3];\n\n var _ref6 = color_convert_default.a.rgb.hsl([r, g, b]) || [0, 0, 0],\n _ref7 = _slicedToArray(_ref6, 3),\n h = _ref7[0],\n s = _ref7[1],\n l = _ref7[2];\n\n return _ref8 = {\n valid: valid,\n value: value,\n keyword: color_convert_default.a.rgb.keyword([r, g, b]),\n colorSpace: ColorSpace.RGB\n }, _defineProperty(_ref8, ColorSpace.RGB, value), _defineProperty(_ref8, ColorSpace.HSL, "hsla(".concat(h, ", ").concat(s, "%, ").concat(l, "%, ").concat(a, ")")), _defineProperty(_ref8, ColorSpace.HEX, "#".concat(color_convert_default.a.rgb.hex([r, g, b]).toLowerCase())), _ref8;\n }\n\n if (HSL_REGEXP.test(value)) {\n var _ref11;\n\n var _stringToArgs3 = stringToArgs(value),\n _stringToArgs4 = _slicedToArray(_stringToArgs3, 4),\n _h = _stringToArgs4[0],\n _s2 = _stringToArgs4[1],\n _l = _stringToArgs4[2],\n _a = _stringToArgs4[3];\n\n var _ref9 = color_convert_default.a.hsl.rgb([_h, _s2, _l]) || [0, 0, 0],\n _ref10 = _slicedToArray(_ref9, 3),\n _r = _ref10[0],\n _g = _ref10[1],\n _b = _ref10[2];\n\n return _ref11 = {\n valid: valid,\n value: value,\n keyword: color_convert_default.a.hsl.keyword([_h, _s2, _l]),\n colorSpace: ColorSpace.HSL\n }, _defineProperty(_ref11, ColorSpace.RGB, "rgba(".concat(_r, ", ").concat(_g, ", ").concat(_b, ", ").concat(_a, ")")), _defineProperty(_ref11, ColorSpace.HSL, value), _defineProperty(_ref11, ColorSpace.HEX, "#".concat(color_convert_default.a.hsl.hex([_h, _s2, _l]).toLowerCase())), _ref11;\n }\n\n var plain = value.replace(\'#\', \'\');\n var rgb = color_convert_default.a.keyword.rgb(plain) || color_convert_default.a.hex.rgb(plain);\n var hsl = color_convert_default.a.rgb.hsl(rgb);\n var mapped = value;\n if (/[^#a-f0-9]/i.test(value)) mapped = plain;else if (HEX_REGEXP.test(value)) mapped = "#".concat(plain);\n\n if (mapped.startsWith(\'#\')) {\n valid = HEX_REGEXP.test(mapped);\n } else {\n try {\n color_convert_default.a.keyword.hex(mapped);\n } catch (e) {\n valid = false;\n }\n }\n\n return _ref12 = {\n valid: valid,\n value: mapped,\n keyword: color_convert_default.a.rgb.keyword(rgb),\n colorSpace: ColorSpace.HEX\n }, _defineProperty(_ref12, ColorSpace.RGB, "rgba(".concat(rgb[0], ", ").concat(rgb[1], ", ").concat(rgb[2], ", 1)")), _defineProperty(_ref12, ColorSpace.HSL, "hsla(".concat(hsl[0], ", ").concat(hsl[1], "%, ").concat(hsl[2], "%, 1)")), _defineProperty(_ref12, ColorSpace.HEX, mapped), _ref12;\n};\n\nvar Color_getRealValue = function getRealValue(value, color, colorSpace) {\n if (!value || !(color !== null && color !== void 0 && color.valid)) return fallbackColor[colorSpace];\n if (colorSpace !== ColorSpace.HEX) return (color === null || color === void 0 ? void 0 : color[colorSpace]) || fallbackColor[colorSpace];\n\n if (!color.hex.startsWith(\'#\')) {\n try {\n return "#".concat(color_convert_default.a.keyword.hex(color.hex));\n } catch (e) {\n return fallbackColor.hex;\n }\n }\n\n var short = color.hex.match(SHORTHEX_REGEXP);\n if (!short) return HEX_REGEXP.test(color.hex) ? color.hex : fallbackColor.hex;\n\n var _short$1$split = short[1].split(\'\'),\n _short$1$split2 = _slicedToArray(_short$1$split, 3),\n r = _short$1$split2[0],\n g = _short$1$split2[1],\n b = _short$1$split2[2];\n\n return "#".concat(r).concat(r).concat(g).concat(g).concat(b).concat(b);\n};\n\nvar Color_useColorInput = function useColorInput(initialValue, onChange) {\n var _useState = Object(react["useState"])(initialValue || \'\'),\n _useState2 = _slicedToArray(_useState, 2),\n value = _useState2[0],\n setValue = _useState2[1];\n\n var _useState3 = Object(react["useState"])(function () {\n return Color_parseValue(value);\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n color = _useState4[0],\n setColor = _useState4[1];\n\n var _useState5 = Object(react["useState"])((color === null || color === void 0 ? void 0 : color.colorSpace) || ColorSpace.HEX),\n _useState6 = _slicedToArray(_useState5, 2),\n colorSpace = _useState6[0],\n setColorSpace = _useState6[1]; // Reset state when initialValue becomes undefined (when resetting controls)\n\n\n Object(react["useEffect"])(function () {\n if (initialValue !== undefined) return;\n setValue(\'\');\n setColor(undefined);\n setColorSpace(ColorSpace.HEX);\n }, [initialValue]);\n var realValue = Object(react["useMemo"])(function () {\n return Color_getRealValue(value, color, colorSpace).toLowerCase();\n }, [value, color, colorSpace]);\n var updateValue = Object(react["useCallback"])(function (update) {\n var parsed = Color_parseValue(update);\n setValue((parsed === null || parsed === void 0 ? void 0 : parsed.value) || update || \'\');\n if (!parsed) return;\n setColor(parsed);\n setColorSpace(parsed.colorSpace);\n onChange(parsed.value);\n }, [onChange]);\n var cycleColorSpace = Object(react["useCallback"])(function () {\n var next = COLOR_SPACES.indexOf(colorSpace) + 1;\n if (next >= COLOR_SPACES.length) next = 0;\n setColorSpace(COLOR_SPACES[next]);\n var update = (color === null || color === void 0 ? void 0 : color[COLOR_SPACES[next]]) || \'\';\n setValue(update);\n onChange(update);\n }, [color, colorSpace, onChange]);\n return {\n value: value,\n realValue: realValue,\n updateValue: updateValue,\n color: color,\n colorSpace: colorSpace,\n cycleColorSpace: cycleColorSpace\n };\n};\n\nvar id = function id(value) {\n return value.replace(/\\s*/, \'\').toLowerCase();\n};\n\nvar Color_usePresets = function usePresets(presetColors, currentColor, colorSpace) {\n var _useState7 = Object(react["useState"])(currentColor !== null && currentColor !== void 0 && currentColor.valid ? [currentColor] : []),\n _useState8 = _slicedToArray(_useState7, 2),\n selectedColors = _useState8[0],\n setSelectedColors = _useState8[1]; // Reset state when currentColor becomes undefined (when resetting controls)\n\n\n Object(react["useEffect"])(function () {\n if (currentColor !== undefined) return;\n setSelectedColors([]);\n }, [currentColor]);\n var presets = Object(react["useMemo"])(function () {\n var initialPresets = (presetColors || []).map(function (preset) {\n if (typeof preset === \'string\') return Color_parseValue(preset);\n if (preset.title) return Object.assign({}, Color_parseValue(preset.color), {\n keyword: preset.title\n });\n return Color_parseValue(preset.color);\n });\n return initialPresets.concat(selectedColors).filter(Boolean).slice(-27);\n }, [presetColors, selectedColors]);\n var addPreset = Object(react["useCallback"])(function (color) {\n if (!(color !== null && color !== void 0 && color.valid)) return;\n if (presets.some(function (preset) {\n return id(preset[colorSpace]) === id(color[colorSpace]);\n })) return;\n setSelectedColors(function (arr) {\n return arr.concat(color);\n });\n }, [colorSpace, presets]);\n return {\n presets: presets,\n addPreset: addPreset\n };\n};\n\nvar Color_ColorControl = function ColorControl(_ref13) {\n var name = _ref13.name,\n initialValue = _ref13.value,\n onChange = _ref13.onChange,\n onFocus = _ref13.onFocus,\n onBlur = _ref13.onBlur,\n presetColors = _ref13.presetColors,\n startOpen = _ref13.startOpen;\n\n var _useColorInput = Color_useColorInput(initialValue, throttle_default()(onChange, 200)),\n value = _useColorInput.value,\n realValue = _useColorInput.realValue,\n updateValue = _useColorInput.updateValue,\n color = _useColorInput.color,\n colorSpace = _useColorInput.colorSpace,\n cycleColorSpace = _useColorInput.cycleColorSpace;\n\n var _usePresets = Color_usePresets(presetColors, color, colorSpace),\n presets = _usePresets.presets,\n addPreset = _usePresets.addPreset;\n\n var Picker = ColorPicker[colorSpace];\n return /*#__PURE__*/react_default.a.createElement(Wrapper, null, /*#__PURE__*/react_default.a.createElement(PickerTooltip, {\n trigger: "click",\n startOpen: startOpen,\n closeOnClick: true,\n onVisibilityChange: function onVisibilityChange() {\n return addPreset(color);\n },\n tooltip: /*#__PURE__*/react_default.a.createElement(TooltipContent, null, /*#__PURE__*/react_default.a.createElement(Picker, {\n color: realValue === \'transparent\' ? \'#000000\' : realValue,\n onChange: updateValue,\n onFocus: onFocus,\n onBlur: onBlur\n }), presets.length > 0 && /*#__PURE__*/react_default.a.createElement(Swatches, null, presets.map(function (preset, index) {\n return /*#__PURE__*/react_default.a.createElement(lazy_WithTooltip["a" /* WithTooltip */] // eslint-disable-next-line react/no-array-index-key\n , {\n key: "".concat(preset.value, "-").concat(index),\n hasChrome: false,\n tooltip: /*#__PURE__*/react_default.a.createElement(Note, {\n note: preset.keyword || preset.value\n })\n }, /*#__PURE__*/react_default.a.createElement(Color_Swatch, {\n value: preset[colorSpace],\n active: color && id(preset[colorSpace]) === id(color[colorSpace]),\n onClick: function onClick() {\n return updateValue(preset.value);\n }\n }));\n })))\n }, /*#__PURE__*/react_default.a.createElement(Color_Swatch, {\n value: realValue,\n style: {\n margin: 4\n }\n })), /*#__PURE__*/react_default.a.createElement(Input, {\n id: Object(helpers["a" /* getControlId */])(name),\n value: value,\n onChange: function onChange(e) {\n return updateValue(e.target.value);\n },\n onFocus: function onFocus(e) {\n return e.target.select();\n },\n placeholder: "Choose color..."\n }), /*#__PURE__*/react_default.a.createElement(ToggleIcon, {\n icon: "markup",\n onClick: cycleColorSpace\n }));\n};\nColor_ColorControl.displayName = "ColorControl";\n/* harmony default export */ var Color = __webpack_exports__["default"] = (Color_ColorControl);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2sudHM/MmM3YyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL2NsYW1wLnRzPzI3MTkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9JbnRlcmFjdGl2ZS50c3g/MjFkOSIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL2Zvcm1hdC50cz82MWIxIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9jb21tb24vUG9pbnRlci50c3g/ODM1YyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL3JvdW5kLnRzPzU5ZDkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy91dGlscy9jb252ZXJ0LnRzP2NiMzkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9IdWUudHN4P2NlNzEiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9TYXR1cmF0aW9uLnRzeD8wNGVhIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvdXRpbHMvY29tcGFyZS50cz9lZjM1Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvaG9va3MvdXNlQ29sb3JNYW5pcHVsYXRpb24udHM/YzM4YiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL25vbmNlLnRzPzU5MjMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9ob29rcy91c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0LnRzP2I5NDkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9ob29rcy91c2VTdHlsZVNoZWV0LnRzPzNlMzciLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9Db2xvclBpY2tlci50c3g/YjhjOSIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSGV4Q29sb3JQaWNrZXIudHN4PzM1ZmIiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9BbHBoYS50c3g/NWQ0OCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvY29tbW9uL0FscGhhQ29sb3JQaWNrZXIudHN4P2YzZjEiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL0hzbGFDb2xvclBpY2tlci50c3g/MzA1MCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHNsYVN0cmluZ0NvbG9yUGlja2VyLnRzeD9mYTEwIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9Ic2xDb2xvclBpY2tlci50c3g/Mzg4NiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHNsU3RyaW5nQ29sb3JQaWNrZXIudHN4PzI0NWMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL0hzdmFDb2xvclBpY2tlci50c3g/N2RmZiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHN2YVN0cmluZ0NvbG9yUGlja2VyLnRzeD9kYTQ5Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9Ic3ZDb2xvclBpY2tlci50c3g/OTJmYyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHN2U3RyaW5nQ29sb3JQaWNrZXIudHN4P2IyOTAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL1JnYmFDb2xvclBpY2tlci50c3g/ZmQzNiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvUmdiYVN0cmluZ0NvbG9yUGlja2VyLnRzeD8xNzJkIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9SZ2JDb2xvclBpY2tlci50c3g/NDg2OCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvUmdiU3RyaW5nQ29sb3JQaWNrZXIudHN4PzQ5YmUiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy91dGlscy92YWxpZGF0ZS50cz80OGM1Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9jb21tb24vQ29sb3JJbnB1dC50c3g/NmQ2MiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSGV4Q29sb3JJbnB1dC50c3g/ZmY0MCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHN0b3J5Ym9vay9jb21wb25lbnRzL2Rpc3QvZXNtL2NvbnRyb2xzL0NvbG9yLmpzPzk3MmMiXSwibmFtZXMiOlsidXNlRXZlbnRDYWxsYmFjayIsImhhbmRsZXIiLCJjYWxsYmFja1JlZiIsInVzZVJlZiIsImZuIiwidmFsdWUiLCJjdXJyZW50IiwiY2xhbXAiLCJudW1iZXIiLCJtaW4iLCJtYXgiLCJpc1RvdWNoIiwiZXZlbnQiLCJnZXRQYXJlbnRXaW5kb3ciLCJub2RlIiwib3duZXJEb2N1bWVudCIsImRlZmF1bHRWaWV3Iiwic2VsZiIsImdldFJlbGF0aXZlUG9zaXRpb24iLCJ0b3VjaElkIiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInBvaW50ZXIiLCJ0b3VjaGVzIiwiaSIsImxlbmd0aCIsImlkZW50aWZpZXIiLCJnZXRUb3VjaFBvaW50IiwibGVmdCIsInBhZ2VYIiwicGFnZVhPZmZzZXQiLCJ3aWR0aCIsInRvcCIsInBhZ2VZIiwicGFnZVlPZmZzZXQiLCJoZWlnaHQiLCJwcmV2ZW50RGVmYXVsdE1vdmUiLCJwcmV2ZW50RGVmYXVsdCIsIkludGVyYWN0aXZlIiwiUmVhY3QiLCJtZW1vIiwib25Nb3ZlIiwib25LZXkiLCJyZXN0IiwiY29udGFpbmVyIiwib25Nb3ZlQ2FsbGJhY2siLCJvbktleUNhbGxiYWNrIiwiaGFzVG91Y2giLCJ1c2VNZW1vIiwiaGFuZGxlTW92ZSIsImJ1dHRvbnMiLCJ0b2dnbGVEb2N1bWVudEV2ZW50cyIsImhhbmRsZU1vdmVFbmQiLCJzdGF0ZSIsInRvdWNoIiwicGFyZW50V2luZG93IiwidG9nZ2xlRXZlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5hdGl2ZUV2ZW50IiwiZWwiLCJpc0ludmFsaWQiLCJjaGFuZ2VkVG91Y2hlcyIsImZvY3VzIiwia2V5Q29kZSIsIndoaWNoIiwiaGFuZGxlTW92ZVN0YXJ0IiwiaGFuZGxlS2V5RG93biIsInVzZUVmZmVjdCIsIm9uVG91Y2hTdGFydCIsIm9uTW91c2VEb3duIiwiY2xhc3NOYW1lIiwicmVmIiwib25LZXlEb3duIiwidGFiSW5kZXgiLCJyb2xlIiwiZm9ybWF0Q2xhc3NOYW1lIiwibmFtZXMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsIlBvaW50ZXIiLCJjb2xvciIsIm5vZGVDbGFzc05hbWUiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsInJvdW5kIiwiZGlnaXRzIiwiYmFzZSIsIk1hdGgiLCJwb3ciLCJhbmdsZVVuaXRzIiwiZ3JhZCIsInR1cm4iLCJyYWQiLCJQSSIsImhleFRvUmdiYSIsImhleCIsInN1YnN0ciIsInIiLCJwYXJzZUludCIsImciLCJiIiwiYSIsInBhcnNlSHVlIiwidW5pdCIsIk51bWJlciIsImhzbGFTdHJpbmdUb0hzdmEiLCJoc2xTdHJpbmciLCJtYXRjaCIsImV4ZWMiLCJoc2xhVG9Ic3ZhIiwiaCIsInMiLCJsIiwidW5kZWZpbmVkIiwidiIsImhzbFN0cmluZ1RvSHN2YSIsImhzdmFUb0hzbGEiLCJoaCIsImhzdmFUb0hzbFN0cmluZyIsImhzdmEiLCJoc3ZhVG9Ic2xhU3RyaW5nIiwiaHN2YVRvUmdiYSIsImZsb29yIiwiYyIsImQiLCJtb2R1bGUiLCJoc3ZhU3RyaW5nVG9Ic3ZhIiwiaHN2U3RyaW5nIiwicm91bmRIc3ZhIiwiaHN2U3RyaW5nVG9Ic3ZhIiwicmdiYVN0cmluZ1RvSHN2YSIsInJnYmFTdHJpbmciLCJyZ2JhVG9Ic3ZhIiwicmdiU3RyaW5nVG9Ic3ZhIiwiZm9ybWF0IiwidG9TdHJpbmciLCJkZWx0YSIsIkh1ZSIsImh1ZSIsIm9uQ2hhbmdlIiwiaW50ZXJhY3Rpb24iLCJvZmZzZXQiLCJhcmlhLWxhYmVsIiwiYXJpYS12YWx1ZXRleHQiLCJTYXR1cmF0aW9uIiwiY29udGFpbmVyU3R5bGUiLCJlcXVhbENvbG9yT2JqZWN0cyIsImZpcnN0Iiwic2Vjb25kIiwicHJvcCIsImVxdWFsQ29sb3JTdHJpbmciLCJyZXBsYWNlIiwidXNlQ29sb3JNYW5pcHVsYXRpb24iLCJjb2xvck1vZGVsIiwib25DaGFuZ2VDYWxsYmFjayIsInVzZVN0YXRlIiwidG9Ic3ZhIiwidXBkYXRlSHN2YSIsImNhY2hlIiwiZXF1YWwiLCJuZXdIc3ZhIiwibmV3Q29sb3IiLCJmcm9tSHN2YSIsImhhbmRsZUNoYW5nZSIsInVzZUNhbGxiYWNrIiwicGFyYW1zIiwiT2JqZWN0IiwiYXNzaWduIiwibm9uY2UiLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0Iiwid2luZG93IiwidXNlTGF5b3V0RWZmZWN0IiwiZ2V0Tm9uY2UiLCJfX3dlYnBhY2tfbm9uY2VfXyIsInNldE5vbmNlIiwiaGFzaCIsInN0eWxlRWxlbWVudE1hcCIsIk1hcCIsInVzZVN0eWxlU2hlZXQiLCJub2RlUmVmIiwicGFyZW50RG9jdW1lbnQiLCJkb2N1bWVudCIsImhhcyIsInN0eWxlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJzZXQiLCJzZXRBdHRyaWJ1dGUiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJDb2xvclBpY2tlciIsImRlZmF1bHRDb2xvciIsInRvTG93ZXJDYXNlIiwiSGV4Q29sb3JQaWNrZXIiLCJwcm9wcyIsIkFscGhhIiwiZ3JhZGllbnRTdHlsZSIsImJhY2tncm91bmRJbWFnZSIsIkFscGhhQ29sb3JQaWNrZXIiLCJIc2xhQ29sb3JQaWNrZXIiLCJIc2xhU3RyaW5nQ29sb3JQaWNrZXIiLCJIc2xDb2xvclBpY2tlciIsIkhzbFN0cmluZ0NvbG9yUGlja2VyIiwiSHN2YUNvbG9yUGlja2VyIiwiSHN2YVN0cmluZ0NvbG9yUGlja2VyIiwiSHN2Q29sb3JQaWNrZXIiLCJIc3ZTdHJpbmdDb2xvclBpY2tlciIsIlJnYmFDb2xvclBpY2tlciIsIlJnYmFTdHJpbmdDb2xvclBpY2tlciIsIlJnYkNvbG9yUGlja2VyIiwiUmdiU3RyaW5nQ29sb3JQaWNrZXIiLCJtYXRjaGVyIiwiQ29sb3JJbnB1dCIsIm9uQmx1ciIsImVzY2FwZSIsInZhbGlkYXRlIiwicHJvY2VzcyIsInNldFZhbHVlIiwib25CbHVyQ2FsbGJhY2siLCJlIiwiaW5wdXRWYWx1ZSIsInRhcmdldCIsImhhbmRsZUJsdXIiLCJzcGVsbENoZWNrIiwicHJlZml4IiwiSGV4Q29sb3JJbnB1dCIsInByZWZpeGVkIiwiYWxwaGEiLCJ2YWxpZEhleCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bVlBR2dCQSxlQUFvQkMsR0FDbEMsSUFBTUMsRUFBY0Msd0JBQU9GLEdBQ3JCRyxFQUFLRCx3QkFBTyxTQUFDRSxHQUNqQkgsRUFBWUksU0FBV0osRUFBWUksUUFBUUQsS0FJN0MsT0FGQUgsRUFBWUksUUFBVUwsRUFFZkcsRUFBR0UsWUNQQ0MsZUFBUSxTQUFDQyxFQUFnQkMsRUFBU0MsR0FDN0MsZ0JBRG9DRCxNQUFNLFlBQUdDLE1BQU0sR0FDNUNGLEVBQVNFLEVBQU1BLEVBQU1GLEVBQVNDLEVBQU1BLEVBQU1ELEdDTzdDRyxlQUFVLFNBQUNDLFNBQXdELFlBQWFBLEdBV2hGQyxlQUFrQixTQUFDQyxHQUN2QixPQUFRQSxHQUFRQSxFQUFLQyxjQUFjQyxhQUFnQkMsTUFJL0NDLGVBQXNCLFNBQzFCSixFQUNBRixFQUNBTyxHQUVBLElBQU1DLEVBQU9OLEVBQUtPLHdCQUdaQyxFQUFVWCxlQUFRQyxHQXJCSixTQUFDVyxFQUFvQkosR0FDekMsSUFBSyxJQUFJSyxFQUFJLEVBQUdBLEVBQUlELEVBQVFFLE9BQVFELElBQ2xDLEdBQUlELEVBQVFDLEdBQUdFLGFBQWVQLEVBQVMsT0FBT0ksRUFBUUMsR0FFeEQsT0FBT0QsRUFBUSxHQWlCa0JJLENBQWNmLEVBQU1XLFFBQVNKLEdBQVlQLEVBRTFFLE1BQU8sQ0FDTGdCLEtBQU1yQixnQkFBT2UsRUFBUU8sT0FBU1QsRUFBS1EsS0FBT2YsZUFBZ0JDLEdBQU1nQixjQUFnQlYsRUFBS1csT0FDckZDLElBQUt6QixnQkFBT2UsRUFBUVcsT0FBU2IsRUFBS1ksSUFBTW5CLGVBQWdCQyxHQUFNb0Is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Q3ZCLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSCxrQkFBa0IsNEJBQVc7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU8sSUFBSSxrQkFBWTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsbUJBQWEsZUFBZSxrQkFBUTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGdCQUFVO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0IsZUFBSywyQ0FBMkMsZUFBSztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLDBCQUEwQixlQUFLLGtEQUFrRCxlQUFLO0FBQ3RGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxzQ0FBc0MsZUFBSztBQUNoRCwwQkFBMEIsZUFBSyxlQUFlLHVDQUFXO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixlQUFLO0FBQ25DO0FBQ0EsU0FBUztBQUNULE9BQU8sZUFBZSxlQUFLLGVBQWUsWUFBTTtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHLGVBQWUsZUFBSyxlQUFlLFlBQU07QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLGlCQUFpQixlQUFLO0FBQ3pCLFFBQVEsdUNBQVk7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHLGdCQUFnQixlQUFLO0FBQ3hCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxrQkFBWTtBQUNHLDZGQUFZIiwiZmlsZSI6IjEwMTQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU2F2ZXMgaW5jb21pbmcgaGFuZGxlciB0byB0aGUgcmVmIGluIG9yZGVyIHRvIGF2b2lkIFwidXNlQ2FsbGJhY2sgaGVsbFwiXG5leHBvcnQgZnVuY3Rpb24gdXNlRXZlbnRDYWxsYmFjazxUPihoYW5kbGVyPzogKHZhbHVlOiBUKSA9PiB2b2lkKTogKHZhbHVlOiBUKSA9PiB2b2lkIHtcbiAgY29uc3QgY2FsbGJhY2tSZWYgPSB1c2VSZWYoaGFuZGxlcik7XG4gIGNvbnN0IGZuID0gdXNlUmVmKCh2YWx1ZTogVCkgPT4ge1xuICAgIGNhbGxiYWNrUmVmLmN1cnJlbnQgJiYgY2FsbGJhY2tSZWYuY3VycmVudCh2YWx1ZSk7XG4gIH0pO1xuICBjYWxsYmFja1JlZi5jdXJyZW50ID0gaGFuZGxlcjtcblxuICByZXR1cm4gZm4uY3VycmVudDtcbn1cbiIsIi8vIENsYW1wcyBhIHZhbHVlIGJldHdlZW4gYW4gdXBwZXIgYW5kIGxvd2VyIGJvdW5kLlxuLy8gV2UgdXNlIHRlcm5hcnkgb3BlcmF0b3JzIGJlY2F1c2UgaXQgbWFrZXMgdGhlIG1pbmlmaWVkIGNvZGVcbi8vIDIgdGltZXMgc2hvcnRlciB0aGVuIGBNYXRoLm1pbihNYXRoLm1heChhLGIpLGMpYFxuZXhwb3J0IGNvbnN0IGNsYW1wID0gKG51bWJlcjogbnVtYmVyLCBtaW4gPSAwLCBtYXggPSAxKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIG51bWJlciA+IG1heCA/IG1heCA6IG51bWJlciA8IG1pbiA/IG1pbiA6IG51bWJlcjtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VNZW1vLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VFdmVudENhbGxiYWNrXCI7XG5pbXBvcnQgeyBjbGFtcCB9IGZyb20gXCIuLi8uLi91dGlscy9jbGFtcFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aW9uIHtcbiAgbGVmdDogbnVtYmVyO1xuICB0b3A6IG51bWJlcjtcbn1cblxuLy8gQ2hlY2sgaWYgYW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBieSB0b3VjaFxuY29uc3QgaXNUb3VjaCA9IChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBldmVudCBpcyBUb3VjaEV2ZW50ID0+IFwidG91Y2hlc1wiIGluIGV2ZW50O1xuXG4vLyBGaW5kcyBhIHByb3BlciB0b3VjaCBwb2ludCBieSBpdHMgaWRlbnRpZmllclxuY29uc3QgZ2V0VG91Y2hQb2ludCA9ICh0b3VjaGVzOiBUb3VjaExpc3QsIHRvdWNoSWQ6IG51bGwgfCBudW1iZXIpOiBUb3VjaCA9PiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG91Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0b3VjaGVzW2ldLmlkZW50aWZpZXIgPT09IHRvdWNoSWQpIHJldHVybiB0b3VjaGVzW2ldO1xuICB9XG4gIHJldHVybiB0b3VjaGVzWzBdO1xufTtcblxuLy8gRmluZHMgdGhlIHByb3BlciB3aW5kb3cgb2JqZWN0IHRvIGZpeCBpZnJhbWUgZW1iZWRkaW5nIGlzc3Vlc1xuY29uc3QgZ2V0UGFyZW50V2luZG93ID0gKG5vZGU/OiBIVE1MRGl2RWxlbWVudCB8IG51bGwpOiBXaW5kb3cgPT4ge1xuICByZXR1cm4gKG5vZGUgJiYgbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCBzZWxmO1xufTtcblxuLy8gUmV0dXJucyBhIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSBwb2ludGVyIGluc2lkZSB0aGUgbm9kZSdzIGJvdW5kaW5nIGJveFxuY29uc3QgZ2V0UmVsYXRpdmVQb3NpdGlvbiA9IChcbiAgbm9kZTogSFRNTERpdkVsZW1lbnQsXG4gIGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCxcbiAgdG91Y2hJZDogbnVsbCB8IG51bWJlclxuKTogSW50ZXJhY3Rpb24gPT4ge1xuICBjb25zdCByZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAvLyBHZXQgdXNlcidzIHBvaW50ZXIgcG9zaXRpb24gZnJvbSBgdG91Y2hlc2AgYXJyYXkgaWYgaXQncyBhIGBUb3VjaEV2ZW50YFxuICBjb25zdCBwb2ludGVyID0gaXNUb3VjaChldmVudCkgPyBnZXRUb3VjaFBvaW50KGV2ZW50LnRvdWNoZXMsIHRvdWNoSWQpIDogKGV2ZW50IGFzIE1vdXNlRXZlbnQpO1xuXG4gIHJldHVybiB7XG4gICAgbGVmdDogY2xhbXAoKHBvaW50ZXIucGFnZVggLSAocmVjdC5sZWZ0ICsgZ2V0UGFyZW50V2luZG93KG5vZGUpLnBhZ2VYT2Zmc2V0KSkgLyByZWN0LndpZHRoKSxcbiAgICB0b3A6IGNsYW1wKChwb2ludGVyLnBhZ2VZIC0gKHJlY3QudG9wICsgZ2V0UGFyZW50V2luZG93KG5vZGUpLnBhZ2VZT2Zmc2V0KSkgLyByZWN0LmhlaWdodCksXG4gIH07XG59O1xuXG4vLyBCcm93c2VycyBpbnRyb2R1Y2VkIGFuIGludGVydmVudGlvbiwgbWFraW5nIHRvdWNoIGV2ZW50cyBwYXNzaXZlIGJ5IGRlZmF1bHQuXG4vLyBUaGlzIHdvcmthcm91bmQgcmVtb3ZlcyBgcHJldmVudERlZmF1bHRgIGNhbGwgZnJvbSB0aGUgdG91Y2ggaGFuZGxlcnMuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5NjUxXG5jb25zdCBwcmV2ZW50RGVmYXVsdE1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogdm9pZCA9PiB7XG4gICFpc1RvdWNoKGV2ZW50KSAmJiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xufTtcblxuLy8gUHJldmVudCBtb2JpbGUgYnJvd3NlcnMgZnJvbSBoYW5kbGluZyBtb3VzZSBldmVudHMgKGNvbmZsaWN0aW5nIHdpdGggdG91Y2ggb25lcykuXG4vLyBJZiB3ZSBkZXRlY3RlZCBhIHRvdWNoIGludGVyYWN0aW9uIGJlZm9yZSwgd2UgcHJlZmVyIHJlYWN0aW5nIHRvIHRvdWNoIGV2ZW50cyBvbmx5LlxuY29uc3QgaXNJbnZhbGlkID0gKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgaGFzVG91Y2g6IGJvb2xlYW4pOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGhhc1RvdWNoICYmICFpc1RvdWNoKGV2ZW50KTtcbn07XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIG9uTW92ZTogKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4gdm9pZDtcbiAgb25LZXk6IChvZmZzZXQ6IEludGVyYWN0aW9uKSA9PiB2b2lkO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5jb25zdCBJbnRlcmFjdGl2ZUJhc2UgPSAoeyBvbk1vdmUsIG9uS2V5LCAuLi5yZXN0IH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IGNvbnRhaW5lciA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG9uTW92ZUNhbGxiYWNrID0gdXNlRXZlbnRDYWxsYmFjazxJbnRlcmFjdGlvbj4ob25Nb3ZlKTtcbiAgY29uc3Qgb25LZXlDYWxsYmFjayA9IHVzZUV2ZW50Q2FsbGJhY2s8SW50ZXJhY3Rpb24+KG9uS2V5KTtcbiAgY29uc3QgdG91Y2hJZCA9IHVzZVJlZjxudWxsIHwgbnVtYmVyPihudWxsKTtcbiAgY29uc3QgaGFzVG91Y2ggPSB1c2VSZWYoZmFsc2UpO1xuXG4gIGNvbnN0IFtoYW5kbGVNb3ZlU3RhcnQsIGhhbmRsZUtleURvd24sIHRvZ2dsZURvY3VtZW50RXZlbnRzXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU1vdmVTdGFydCA9ICh7IG5hdGl2ZUV2ZW50IH06IFJlYWN0Lk1vdXNlRXZlbnQgfCBSZWFjdC5Ub3VjaEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGNvbnRhaW5lci5jdXJyZW50O1xuICAgICAgaWYgKCFlbCkgcmV0dXJuO1xuXG4gICAgICAvLyBQcmV2ZW50IHRleHQgc2VsZWN0aW9uXG4gICAgICBwcmV2ZW50RGVmYXVsdE1vdmUobmF0aXZlRXZlbnQpO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkKG5hdGl2ZUV2ZW50LCBoYXNUb3VjaC5jdXJyZW50KSB8fCAhZWwpIHJldHVybjtcblxuICAgICAgaWYgKGlzVG91Y2gobmF0aXZlRXZlbnQpKSB7XG4gICAgICAgIGhhc1RvdWNoLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBjb25zdCBjaGFuZ2VkVG91Y2hlcyA9IG5hdGl2ZUV2ZW50LmNoYW5nZWRUb3VjaGVzIHx8IFtdO1xuICAgICAgICBpZiAoY2hhbmdlZFRvdWNoZXMubGVuZ3RoKSB0b3VjaElkLmN1cnJlbnQgPSBjaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyO1xuICAgICAgfVxuXG4gICAgICBlbC5mb2N1cygpO1xuICAgICAgb25Nb3ZlQ2FsbGJhY2soZ2V0UmVsYXRpdmVQb3NpdGlvbihlbCwgbmF0aXZlRXZlbnQsIHRvdWNoSWQuY3VycmVudCkpO1xuICAgICAgdG9nZ2xlRG9jdW1lbnRFdmVudHModHJ1ZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRleHQgc2VsZWN0aW9uXG4gICAgICBwcmV2ZW50RGVmYXVsdE1vdmUoZXZlbnQpO1xuXG4gICAgICAvLyBJZiB1c2VyIG1vdmVzIHRoZSBwb2ludGVyIG91dHNpZGUgb2YgdGhlIHdpbmRvdyBvciBpZnJhbWUgYm91bmRzIGFuZCByZWxlYXNlIGl0IHRoZXJlLFxuICAgICAgLy8gYG1vdXNldXBgL2B0b3VjaGVuZGAgd29uJ3QgYmUgZmlyZWQuIEluIG9yZGVyIHRvIHN0b3AgdGhlIHBpY2tlciBmcm9tIGZvbGxvd2luZyB0aGUgY3Vyc29yXG4gICAgICAvLyBhZnRlciB0aGUgdXNlciBoYXMgbW92ZWQgdGhlIG1vdXNlL2ZpbmdlciBiYWNrIHRvIHRoZSBkb2N1bWVudCwgd2UgY2hlY2sgYGV2ZW50LmJ1dHRvbnNgXG4gICAgICAvLyBhbmQgYGV2ZW50LnRvdWNoZXNgLiBJdCBhbGxvd3MgdXMgdG8gZGV0ZWN0IHRoYXQgdGhlIHVzZXIgaXMganVzdCBtb3ZpbmcgaGlzIHBvaW50ZXJcbiAgICAgIC8vIHdpdGhvdXQgcHJlc3NpbmcgaXQgZG93blxuICAgICAgY29uc3QgaXNEb3duID0gaXNUb3VjaChldmVudCkgPyBldmVudC50b3VjaGVzLmxlbmd0aCA+IDAgOiBldmVudC5idXR0b25zID4gMDtcblxuICAgICAgaWYgKGlzRG93biAmJiBjb250YWluZXIuY3VycmVudCkge1xuICAgICAgICBvbk1vdmVDYWxsYmFjayhnZXRSZWxhdGl2ZVBvc2l0aW9uKGNvbnRhaW5lci5jdXJyZW50LCBldmVudCwgdG91Y2hJZC5jdXJyZW50KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2dnbGVEb2N1bWVudEV2ZW50cyhmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU1vdmVFbmQgPSAoKSA9PiB0b2dnbGVEb2N1bWVudEV2ZW50cyhmYWxzZSk7XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQud2hpY2ggfHwgZXZlbnQua2V5Q29kZTtcblxuICAgICAgLy8gSWdub3JlIGFsbCBrZXlzIGV4Y2VwdCBhcnJvdyBvbmVzXG4gICAgICBpZiAoa2V5Q29kZSA8IDM3IHx8IGtleUNvZGUgPiA0MCkgcmV0dXJuO1xuICAgICAgLy8gRG8gbm90IHNjcm9sbCBwYWdlIGJ5IGFycm93IGtleXMgd2hlbiBkb2N1bWVudCBpcyBmb2N1c2VkIG9uIHRoZSBlbGVtZW50XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gU2VuZCByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAgICAvLyBXZSB1c2UgY29kZXMgKDM34oaQLCAzOOKGkSwgMznihpIsIDQw4oaTKSBpbnN0ZWFkIG9mIGtleXMgKCdBcnJvd1JpZ2h0JywgJ0Fycm93RG93bicsIGV0YylcbiAgICAgIC8vIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgbGlicmFyeVxuICAgICAgb25LZXlDYWxsYmFjayh7XG4gICAgICAgIGxlZnQ6IGtleUNvZGUgPT09IDM5ID8gMC4wNSA6IGtleUNvZGUgPT09IDM3ID8gLTAuMDUgOiAwLFxuICAgICAgICB0b3A6IGtleUNvZGUgPT09IDQwID8gMC4wNSA6IGtleUNvZGUgPT09IDM4ID8gLTAuMDUgOiAwLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHRvZ2dsZURvY3VtZW50RXZlbnRzKHN0YXRlPzogYm9vbGVhbikge1xuICAgICAgY29uc3QgdG91Y2ggPSBoYXNUb3VjaC5jdXJyZW50O1xuICAgICAgY29uc3QgZWwgPSBjb250YWluZXIuY3VycmVudDtcbiAgICAgIGNvbnN0IHBhcmVudFdpbmRvdyA9IGdldFBhcmVudFdpbmRvdyhlbCk7XG5cbiAgICAgIC8vIEFkZCBvciByZW1vdmUgYWRkaXRpb25hbCBwb2ludGVyIGV2ZW50IGxpc3RlbmVyc1xuICAgICAgY29uc3QgdG9nZ2xlRXZlbnQgPSBzdGF0ZSA/IHBhcmVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyIDogcGFyZW50V2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXI7XG4gICAgICB0b2dnbGVFdmVudCh0b3VjaCA/IFwidG91Y2htb3ZlXCIgOiBcIm1vdXNlbW92ZVwiLCBoYW5kbGVNb3ZlKTtcbiAgICAgIHRvZ2dsZUV2ZW50KHRvdWNoID8gXCJ0b3VjaGVuZFwiIDogXCJtb3VzZXVwXCIsIGhhbmRsZU1vdmVFbmQpO1xuICAgIH1cblxuICAgIHJldHVybiBbaGFuZGxlTW92ZVN0YXJ0LCBoYW5kbGVLZXlEb3duLCB0b2dnbGVEb2N1bWVudEV2ZW50c107XG4gIH0sIFtvbktleUNhbGxiYWNrLCBvbk1vdmVDYWxsYmFja10pO1xuXG4gIC8vIFJlbW92ZSB3aW5kb3cgZXZlbnQgbGlzdGVuZXJzIGJlZm9yZSB1bm1vdW50aW5nXG4gIHVzZUVmZmVjdCgoKSA9PiB0b2dnbGVEb2N1bWVudEV2ZW50cywgW3RvZ2dsZURvY3VtZW50RXZlbnRzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4ucmVzdH1cbiAgICAgIG9uVG91Y2hTdGFydD17aGFuZGxlTW92ZVN0YXJ0fVxuICAgICAgb25Nb3VzZURvd249e2hhbmRsZU1vdmVTdGFydH1cbiAgICAgIGNsYXNzTmFtZT1cInJlYWN0LWNvbG9yZnVsX19pbnRlcmFjdGl2ZVwiXG4gICAgICByZWY9e2NvbnRhaW5lcn1cbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cInNsaWRlclwiXG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBJbnRlcmFjdGl2ZSA9IFJlYWN0Lm1lbW8oSW50ZXJhY3RpdmVCYXNlKTtcbiIsImV4cG9ydCBjb25zdCBmb3JtYXRDbGFzc05hbWUgPSAobmFtZXM6IHVua25vd25bXSk6IHN0cmluZyA9PiBuYW1lcy5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb3JtYXRDbGFzc05hbWUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZm9ybWF0XCI7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgdG9wPzogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIGNvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBQb2ludGVyID0gKHsgY2xhc3NOYW1lLCBjb2xvciwgbGVmdCwgdG9wID0gMC41IH06IFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCBub2RlQ2xhc3NOYW1lID0gZm9ybWF0Q2xhc3NOYW1lKFtcInJlYWN0LWNvbG9yZnVsX19wb2ludGVyXCIsIGNsYXNzTmFtZV0pO1xuXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIHRvcDogYCR7dG9wICogMTAwfSVgLFxuICAgIGxlZnQ6IGAke2xlZnQgKiAxMDB9JWAsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17bm9kZUNsYXNzTmFtZX0gc3R5bGU9e3N0eWxlfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX3BvaW50ZXItZmlsbFwiIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogY29sb3IgfX0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCJleHBvcnQgY29uc3Qgcm91bmQgPSAobnVtYmVyOiBudW1iZXIsIGRpZ2l0cyA9IDAsIGJhc2UgPSBNYXRoLnBvdygxMCwgZGlnaXRzKSk6IG51bWJlciA9PiB7XG4gIHJldHVybiBNYXRoLnJvdW5kKGJhc2UgKiBudW1iZXIpIC8gYmFzZTtcbn07XG4iLCJpbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuL3JvdW5kXCI7XG5pbXBvcnQgeyBSZ2JhQ29sb3IsIFJnYkNvbG9yLCBIc2xhQ29sb3IsIEhzbENvbG9yLCBIc3ZhQ29sb3IsIEhzdkNvbG9yIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbi8qKlxuICogVmFsaWQgQ1NTIDxhbmdsZT4gdW5pdHMuXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYW5nbGVcbiAqL1xuY29uc3QgYW5nbGVVbml0czogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgZ3JhZDogMzYwIC8gNDAwLFxuICB0dXJuOiAzNjAsXG4gIHJhZDogMzYwIC8gKE1hdGguUEkgKiAyKSxcbn07XG5cbmV4cG9ydCBjb25zdCBoZXhUb0hzdmEgPSAoaGV4OiBzdHJpbmcpOiBIc3ZhQ29sb3IgPT4gcmdiYVRvSHN2YShoZXhUb1JnYmEoaGV4KSk7XG5cbmV4cG9ydCBjb25zdCBoZXhUb1JnYmEgPSAoaGV4OiBzdHJpbmcpOiBSZ2JhQ29sb3IgPT4ge1xuICBpZiAoaGV4WzBdID09PSBcIiNcIikgaGV4ID0gaGV4LnN1YnN0cigxKTtcblxuICBpZiAoaGV4Lmxlbmd0aCA8IDYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcjogcGFyc2VJbnQoaGV4WzBdICsgaGV4WzBdLCAxNiksXG4gICAgICBnOiBwYXJzZUludChoZXhbMV0gKyBoZXhbMV0sIDE2KSxcbiAgICAgIGI6IHBhcnNlSW50KGhleFsyXSArIGhleFsyXSwgMTYpLFxuICAgICAgYTogMSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByOiBwYXJzZUludChoZXguc3Vic3RyKDAsIDIpLCAxNiksXG4gICAgZzogcGFyc2VJbnQoaGV4LnN1YnN0cigyLCAyKSwgMTYpLFxuICAgIGI6IHBhcnNlSW50KGhleC5zdWJzdHIoNCwgMiksIDE2KSxcbiAgICBhOiAxLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlSHVlID0gKHZhbHVlOiBzdHJpbmcsIHVuaXQgPSBcImRlZ1wiKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIE51bWJlcih2YWx1ZSkgKiAoYW5nbGVVbml0c1t1bml0XSB8fCAxKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoc2xhU3RyaW5nVG9Ic3ZhID0gKGhzbFN0cmluZzogc3RyaW5nKTogSHN2YUNvbG9yID0+IHtcbiAgY29uc3QgbWF0Y2hlciA9IC9oc2xhP1xcKD9cXHMqKC0/XFxkKlxcLj9cXGQrKShkZWd8cmFkfGdyYWR8dHVybik/WyxcXHNdKygtP1xcZCpcXC4/XFxkKyklP1ssXFxzXSsoLT9cXGQqXFwuP1xcZCspJT8sP1xccypbL1xcc10qKC0/XFxkKlxcLj9cXGQrKT8oJSk/XFxzKlxcKT8vaTtcbiAgY29uc3QgbWF0Y2ggPSBtYXRjaGVyLmV4ZWMoaHNsU3RyaW5nKTtcblxuICBpZiAoIW1hdGNoKSByZXR1cm4geyBoOiAwLCBzOiAwLCB2OiAwLCBhOiAxIH07XG5cbiAgcmV0dXJuIGhzbGFUb0hzdmEoe1xuICAgIGg6IHBhcnNlSHVlKG1hdGNoWzFdLCBtYXRjaFsyXSksXG4gICAgczogTnVtYmVyKG1hdGNoWzNdKSxcbiAgICBsOiBOdW1iZXIobWF0Y2hbNF0pLFxuICAgIGE6IG1hdGNoWzVdID09PSB1bmRlZmluZWQgPyAxIDogTnVtYmVyKG1hdGNoWzVdKSAvIChtYXRjaFs2XSA/IDEwMCA6IDEpLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBoc2xTdHJpbmdUb0hzdmEgPSBoc2xhU3RyaW5nVG9Ic3ZhO1xuXG5leHBvcnQgY29uc3QgaHNsYVRvSHN2YSA9ICh7IGgsIHMsIGwsIGEgfTogSHNsYUNvbG9yKTogSHN2YUNvbG9yID0+IHtcbiAgcyAqPSAobCA8IDUwID8gbCA6IDEwMCAtIGwpIC8gMTAwO1xuXG4gIHJldHVybiB7XG4gICAgaDogaCxcbiAgICBzOiBzID4gMCA/ICgoMiAqIHMpIC8gKGwgKyBzKSkgKiAxMDAgOiAwLFxuICAgIHY6IGwgKyBzLFxuICAgIGEsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSGV4ID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiByZ2JhVG9IZXgoaHN2YVRvUmdiYShoc3ZhKSk7XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9Ic2xhID0gKHsgaCwgcywgdiwgYSB9OiBIc3ZhQ29sb3IpOiBIc2xhQ29sb3IgPT4ge1xuICBjb25zdCBoaCA9ICgoMjAwIC0gcykgKiB2KSAvIDEwMDtcblxuICByZXR1cm4ge1xuICAgIGg6IHJvdW5kKGgpLFxuICAgIHM6IHJvdW5kKGhoID4gMCAmJiBoaCA8IDIwMCA/ICgocyAqIHYpIC8gMTAwIC8gKGhoIDw9IDEwMCA/IGhoIDogMjAwIC0gaGgpKSAqIDEwMCA6IDApLFxuICAgIGw6IHJvdW5kKGhoIC8gMiksXG4gICAgYTogcm91bmQoYSwgMiksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHNsU3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgaCwgcywgbCB9ID0gaHN2YVRvSHNsYShoc3ZhKTtcbiAgcmV0dXJuIGBoc2woJHtofSwgJHtzfSUsICR7bH0lKWA7XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHN2U3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgaCwgcywgdiB9ID0gcm91bmRIc3ZhKGhzdmEpO1xuICByZXR1cm4gYGhzdigke2h9LCAke3N9JSwgJHt2fSUpYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9Ic3ZhU3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgaCwgcywgdiwgYSB9ID0gcm91bmRIc3ZhKGhzdmEpO1xuICByZXR1cm4gYGhzdmEoJHtofSwgJHtzfSUsICR7dn0lLCAke2F9KWA7XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHNsYVN0cmluZyA9IChoc3ZhOiBIc3ZhQ29sb3IpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7IGgsIHMsIGwsIGEgfSA9IGhzdmFUb0hzbGEoaHN2YSk7XG4gIHJldHVybiBgaHNsYSgke2h9LCAke3N9JSwgJHtsfSUsICR7YX0pYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9SZ2JhID0gKHsgaCwgcywgdiwgYSB9OiBIc3ZhQ29sb3IpOiBSZ2JhQ29sb3IgPT4ge1xuICBoID0gKGggLyAzNjApICogNjtcbiAgcyA9IHMgLyAxMDA7XG4gIHYgPSB2IC8gMTAwO1xuXG4gIGNvbnN0IGhoID0gTWF0aC5mbG9vcihoKSxcbiAgICBiID0gdiAqICgxIC0gcyksXG4gICAgYyA9IHYgKiAoMSAtIChoIC0gaGgpICogcyksXG4gICAgZCA9IHYgKiAoMSAtICgxIC0gaCArIGhoKSAqIHMpLFxuICAgIG1vZHVsZSA9IGhoICUgNjtcblxuICByZXR1cm4ge1xuICAgIHI6IHJvdW5kKFt2LCBjLCBiLCBiLCBkLCB2XVttb2R1bGVdICogMjU1KSxcbiAgICBnOiByb3VuZChbZCwgdiwgdiwgYywgYiwgYl1bbW9kdWxlXSAqIDI1NSksXG4gICAgYjogcm91bmQoW2IsIGIsIGQsIHYsIHYsIGNdW21vZHVsZV0gKiAyNTUpLFxuICAgIGE6IHJvdW5kKGEsIDIpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGhzdmFUb1JnYlN0cmluZyA9IChoc3ZhOiBIc3ZhQ29sb3IpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7IHIsIGcsIGIgfSA9IGhzdmFUb1JnYmEoaHN2YSk7XG4gIHJldHVybiBgcmdiKCR7cn0sICR7Z30sICR7Yn0pYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9SZ2JhU3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgciwgZywgYiwgYSB9ID0gaHN2YVRvUmdiYShoc3ZhKTtcbiAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7YX0pYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhU3RyaW5nVG9Ic3ZhID0gKGhzdlN0cmluZzogc3RyaW5nKTogSHN2YUNvbG9yID0+IHtcbiAgY29uc3QgbWF0Y2hlciA9IC9oc3ZhP1xcKD9cXHMqKC0/XFxkKlxcLj9cXGQrKShkZWd8cmFkfGdyYWR8dHVybik/WyxcXHNdKygtP1xcZCpcXC4/XFxkKyklP1ssXFxzXSsoLT9cXGQqXFwuP1xcZCspJT8sP1xccypbL1xcc10qKC0/XFxkKlxcLj9cXGQrKT8oJSk/XFxzKlxcKT8vaTtcbiAgY29uc3QgbWF0Y2ggPSBtYXRjaGVyLmV4ZWMoaHN2U3RyaW5nKTtcblxuICBpZiAoIW1hdGNoKSByZXR1cm4geyBoOiAwLCBzOiAwLCB2OiAwLCBhOiAxIH07XG5cbiAgcmV0dXJuIHJvdW5kSHN2YSh7XG4gICAgaDogcGFyc2VIdWUobWF0Y2hbMV0sIG1hdGNoWzJdKSxcbiAgICBzOiBOdW1iZXIobWF0Y2hbM10pLFxuICAgIHY6IE51bWJlcihtYXRjaFs0XSksXG4gICAgYTogbWF0Y2hbNV0gPT09IHVuZGVmaW5lZCA/IDEgOiBOdW1iZXIobWF0Y2hbNV0pIC8gKG1hdGNoWzZdID8gMTAwIDogMSksXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGhzdlN0cmluZ1RvSHN2YSA9IGhzdmFTdHJpbmdUb0hzdmE7XG5cbmV4cG9ydCBjb25zdCByZ2JhU3RyaW5nVG9Ic3ZhID0gKHJnYmFTdHJpbmc6IHN0cmluZyk6IEhzdmFDb2xvciA9PiB7XG4gIGNvbnN0IG1hdGNoZXIgPSAvcmdiYT9cXCg/XFxzKigtP1xcZCpcXC4/XFxkKykoJSk/WyxcXHNdKygtP1xcZCpcXC4/XFxkKykoJSk/WyxcXHNdKygtP1xcZCpcXC4/XFxkKykoJSk/LD9cXHMqWy9cXHNdKigtP1xcZCpcXC4/XFxkKyk/KCUpP1xccypcXCk/L2k7XG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hlci5leGVjKHJnYmFTdHJpbmcpO1xuXG4gIGlmICghbWF0Y2gpIHJldHVybiB7IGg6IDAsIHM6IDAsIHY6IDAsIGE6IDEgfTtcblxuICByZXR1cm4gcmdiYVRvSHN2YSh7XG4gICAgcjogTnVtYmVyKG1hdGNoWzFdKSAvIChtYXRjaFsyXSA/IDEwMCAvIDI1NSA6IDEpLFxuICAgIGc6IE51bWJlcihtYXRjaFszXSkgLyAobWF0Y2hbNF0gPyAxMDAgLyAyNTUgOiAxKSxcbiAgICBiOiBOdW1iZXIobWF0Y2hbNV0pIC8gKG1hdGNoWzZdID8gMTAwIC8gMjU1IDogMSksXG4gICAgYTogbWF0Y2hbN10gPT09IHVuZGVmaW5lZCA/IDEgOiBOdW1iZXIobWF0Y2hbN10pIC8gKG1hdGNoWzhdID8gMTAwIDogMSksXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJnYlN0cmluZ1RvSHN2YSA9IHJnYmFTdHJpbmdUb0hzdmE7XG5cbmNvbnN0IGZvcm1hdCA9IChudW1iZXI6IG51bWJlcikgPT4ge1xuICBjb25zdCBoZXggPSBudW1iZXIudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gaGV4Lmxlbmd0aCA8IDIgPyBcIjBcIiArIGhleCA6IGhleDtcbn07XG5cbmV4cG9ydCBjb25zdCByZ2JhVG9IZXggPSAoeyByLCBnLCBiIH06IFJnYmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIHJldHVybiBcIiNcIiArIGZvcm1hdChyKSArIGZvcm1hdChnKSArIGZvcm1hdChiKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZ2JhVG9Ic3ZhID0gKHsgciwgZywgYiwgYSB9OiBSZ2JhQ29sb3IpOiBIc3ZhQ29sb3IgPT4ge1xuICBjb25zdCBtYXggPSBNYXRoLm1heChyLCBnLCBiKTtcbiAgY29uc3QgZGVsdGEgPSBtYXggLSBNYXRoLm1pbihyLCBnLCBiKTtcblxuICAvLyBwcmV0dGllci1pZ25vcmVcbiAgY29uc3QgaGggPSBkZWx0YVxuICAgID8gbWF4ID09PSByXG4gICAgICA/IChnIC0gYikgLyBkZWx0YVxuICAgICAgOiBtYXggPT09IGdcbiAgICAgICAgPyAyICsgKGIgLSByKSAvIGRlbHRhXG4gICAgICAgIDogNCArIChyIC0gZykgLyBkZWx0YVxuICAgIDogMDtcblxuICByZXR1cm4ge1xuICAgIGg6IHJvdW5kKDYwICogKGhoIDwgMCA/IGhoICsgNiA6IGhoKSksXG4gICAgczogcm91bmQobWF4ID8gKGRlbHRhIC8gbWF4KSAqIDEwMCA6IDApLFxuICAgIHY6IHJvdW5kKChtYXggLyAyNTUpICogMTAwKSxcbiAgICBhLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJvdW5kSHN2YSA9IChoc3ZhOiBIc3ZhQ29sb3IpOiBIc3ZhQ29sb3IgPT4gKHtcbiAgaDogcm91bmQoaHN2YS5oKSxcbiAgczogcm91bmQoaHN2YS5zKSxcbiAgdjogcm91bmQoaHN2YS52KSxcbiAgYTogcm91bmQoaHN2YS5hLCAyKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgcmdiYVRvUmdiID0gKHsgciwgZywgYiB9OiBSZ2JhQ29sb3IpOiBSZ2JDb2xvciA9PiAoeyByLCBnLCBiIH0pO1xuXG5leHBvcnQgY29uc3QgaHNsYVRvSHNsID0gKHsgaCwgcywgbCB9OiBIc2xhQ29sb3IpOiBIc2xDb2xvciA9PiAoeyBoLCBzLCBsIH0pO1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHN2ID0gKGhzdmE6IEhzdmFDb2xvcik6IEhzdkNvbG9yID0+IHtcbiAgY29uc3QgeyBoLCBzLCB2IH0gPSByb3VuZEhzdmEoaHN2YSk7XG4gIHJldHVybiB7IGgsIHMsIHYgfTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEludGVyYWN0aXZlLCBJbnRlcmFjdGlvbiB9IGZyb20gXCIuL0ludGVyYWN0aXZlXCI7XG5pbXBvcnQgeyBQb2ludGVyIH0gZnJvbSBcIi4vUG9pbnRlclwiO1xuXG5pbXBvcnQgeyBoc3ZhVG9Ic2xTdHJpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29udmVydFwiO1xuaW1wb3J0IHsgZm9ybWF0Q2xhc3NOYW1lIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Zvcm1hdFwiO1xuaW1wb3J0IHsgY2xhbXAgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY2xhbXBcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3JvdW5kXCI7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaHVlOiBudW1iZXI7XG4gIG9uQ2hhbmdlOiAobmV3SHVlOiB7IGg6IG51bWJlciB9KSA9PiB2b2lkO1xufVxuXG5jb25zdCBIdWVCYXNlID0gKHsgY2xhc3NOYW1lLCBodWUsIG9uQ2hhbmdlIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IGhhbmRsZU1vdmUgPSAoaW50ZXJhY3Rpb246IEludGVyYWN0aW9uKSA9PiB7XG4gICAgb25DaGFuZ2UoeyBoOiAzNjAgKiBpbnRlcmFjdGlvbi5sZWZ0IH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleSA9IChvZmZzZXQ6IEludGVyYWN0aW9uKSA9PiB7XG4gICAgLy8gSHVlIG1lYXN1cmVkIGluIGRlZ3JlZXMgb2YgdGhlIGNvbG9yIGNpcmNsZSByYW5naW5nIGZyb20gMCB0byAzNjBcbiAgICBvbkNoYW5nZSh7XG4gICAgICBoOiBjbGFtcChodWUgKyBvZmZzZXQubGVmdCAqIDM2MCwgMCwgMzYwKSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBub2RlQ2xhc3NOYW1lID0gZm9ybWF0Q2xhc3NOYW1lKFtcInJlYWN0LWNvbG9yZnVsX19odWVcIiwgY2xhc3NOYW1lXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17bm9kZUNsYXNzTmFtZX0+XG4gICAgICA8SW50ZXJhY3RpdmVcbiAgICAgICAgb25Nb3ZlPXtoYW5kbGVNb3ZlfVxuICAgICAgICBvbktleT17aGFuZGxlS2V5fVxuICAgICAgICBhcmlhLWxhYmVsPVwiSHVlXCJcbiAgICAgICAgYXJpYS12YWx1ZXRleHQ9e3JvdW5kKGh1ZSl9XG4gICAgICA+XG4gICAgICAgIDxQb2ludGVyXG4gICAgICAgICAgY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX2h1ZS1wb2ludGVyXCJcbiAgICAgICAgICBsZWZ0PXtodWUgLyAzNjB9XG4gICAgICAgICAgY29sb3I9e2hzdmFUb0hzbFN0cmluZyh7IGg6IGh1ZSwgczogMTAwLCB2OiAxMDAsIGE6IDEgfSl9XG4gICAgICAgIC8+XG4gICAgICA8L0ludGVyYWN0aXZlPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IEh1ZSA9IFJlYWN0Lm1lbW8oSHVlQmFzZSk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBJbnRlcmFjdGl2ZSwgSW50ZXJhY3Rpb24gfSBmcm9tIFwiLi9JbnRlcmFjdGl2ZVwiO1xuaW1wb3J0IHsgUG9pbnRlciB9IGZyb20gXCIuL1BvaW50ZXJcIjtcbmltcG9ydCB7IEhzdmFDb2xvciB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgaHN2YVRvSHNsU3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnZlcnRcIjtcbmltcG9ydCB7IGNsYW1wIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NsYW1wXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi8uLi91dGlscy9yb3VuZFwiO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBoc3ZhOiBIc3ZhQ29sb3I7XG4gIG9uQ2hhbmdlOiAobmV3Q29sb3I6IHsgczogbnVtYmVyOyB2OiBudW1iZXIgfSkgPT4gdm9pZDtcbn1cblxuY29uc3QgU2F0dXJhdGlvbkJhc2UgPSAoeyBoc3ZhLCBvbkNoYW5nZSB9OiBQcm9wcykgPT4ge1xuICBjb25zdCBoYW5kbGVNb3ZlID0gKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4ge1xuICAgIG9uQ2hhbmdlKHtcbiAgICAgIHM6IGludGVyYWN0aW9uLmxlZnQgKiAxMDAsXG4gICAgICB2OiAxMDAgLSBpbnRlcmFjdGlvbi50b3AgKiAxMDAsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlS2V5ID0gKG9mZnNldDogSW50ZXJhY3Rpb24pID0+IHtcbiAgICAvLyBTYXR1cmF0aW9uIGFuZCBicmlnaHRuZXNzIGFsd2F5cyBmaXQgaW50byBbMCwgMTAwXSByYW5nZVxuICAgIG9uQ2hhbmdlKHtcbiAgICAgIHM6IGNsYW1wKGhzdmEucyArIG9mZnNldC5sZWZ0ICogMTAwLCAwLCAxMDApLFxuICAgICAgdjogY2xhbXAoaHN2YS52IC0gb2Zmc2V0LnRvcCAqIDEwMCwgMCwgMTAwKSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBjb250YWluZXJTdHlsZSA9IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGhzdmFUb0hzbFN0cmluZyh7IGg6IGhzdmEuaCwgczogMTAwLCB2OiAxMDAsIGE6IDEgfSksXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlYWN0LWNvbG9yZnVsX19zYXR1cmF0aW9uXCIgc3R5bGU9e2NvbnRhaW5lclN0eWxlfT5cbiAgICAgIDxJbnRlcmFjdGl2ZVxuICAgICAgICBvbk1vdmU9e2hhbmRsZU1vdmV9XG4gICAgICAgIG9uS2V5PXtoYW5kbGVLZXl9XG4gICAgICAgIGFyaWEtbGFiZWw9XCJDb2xvclwiXG4gICAgICAgIGFyaWEtdmFsdWV0ZXh0PXtgU2F0dXJhdGlvbiAke3JvdW5kKGhzdmEucyl9JSwgQnJpZ2h0bmVzcyAke3JvdW5kKGhzdmEudil9JWB9XG4gICAgICA+XG4gICAgICAgIDxQb2ludGVyXG4gICAgICAgICAgY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX3NhdHVyYXRpb24tcG9pbnRlclwiXG4gICAgICAgICAgdG9wPXsxIC0gaHN2YS52IC8gMTAwfVxuICAgICAgICAgIGxlZnQ9e2hzdmEucyAvIDEwMH1cbiAgICAgICAgICBjb2xvcj17aHN2YVRvSHNsU3RyaW5nKGhzdmEpfVxuICAgICAgICAvPlxuICAgICAgPC9JbnRlcmFjdGl2ZT5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBTYXR1cmF0aW9uID0gUmVhY3QubWVtbyhTYXR1cmF0aW9uQmFzZSk7XG4iLCJpbXBvcnQgeyBoZXhUb1JnYmEgfSBmcm9tIFwiLi9jb252ZXJ0XCI7XG5pbXBvcnQgeyBPYmplY3RDb2xvciB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgZXF1YWxDb2xvck9iamVjdHMgPSAoZmlyc3Q6IE9iamVjdENvbG9yLCBzZWNvbmQ6IE9iamVjdENvbG9yKTogYm9vbGVhbiA9PiB7XG4gIGlmIChmaXJzdCA9PT0gc2Vjb25kKSByZXR1cm4gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IHByb3AgaW4gZmlyc3QpIHtcbiAgICAvLyBUaGUgZm9sbG93aW5nIGFsbG93cyBmb3IgYSB0eXBlLXNhZmUgY2FsbGluZyBvZiB0aGlzIGZ1bmN0aW9uIChmaXJzdCAmIHNlY29uZCBoYXZlIHRvIGJlIEhTTCwgSFNWLCBvciBSR0IpXG4gICAgLy8gd2l0aCB0eXBlLXVuc2FmZSBpdGVyYXRpbmcgb3ZlciBvYmplY3Qga2V5cy4gVFMgZG9lcyBub3QgYWxsb3cgdGhpcyB3aXRob3V0IGFuIGluZGV4IChgW2tleTogc3RyaW5nXTogbnVtYmVyYClcbiAgICAvLyBvbiBhbiBvYmplY3QgdG8gZGVmaW5lIGhvdyBpdGVyYXRpb24gaXMgbm9ybWFsbHkgZG9uZS4gVG8gZW5zdXJlIGV4dHJhIGtleXMgYXJlIG5vdCBhbGxvd2VkIG9uIG91ciB0eXBlcyxcbiAgICAvLyB3ZSBtdXN0IGNhc3Qgb3VyIG9iamVjdCB0byB1bmtub3duIChhcyBSR0IgZGVtYW5kcyBgcmAgYmUgYSBrZXksIHdoaWxlIGBSZWNvcmQ8c3RyaW5nLCB4PmAgZG9lcyBub3QgY2FyZSBpZlxuICAgIC8vIHRoZXJlIGlzIG9yIG5vdCksIGFuZCB0aGVuIGFzIGEgdHlwZSBUUyBjYW4gaXRlcmF0ZSBvdmVyLlxuICAgIGlmIChcbiAgICAgICgoZmlyc3QgYXMgdW5rbm93bikgYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPilbcHJvcF0gIT09XG4gICAgICAoKHNlY29uZCBhcyB1bmtub3duKSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KVtwcm9wXVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGVxdWFsQ29sb3JTdHJpbmcgPSAoZmlyc3Q6IHN0cmluZywgc2Vjb25kOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGZpcnN0LnJlcGxhY2UoL1xccy9nLCBcIlwiKSA9PT0gc2Vjb25kLnJlcGxhY2UoL1xccy9nLCBcIlwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBlcXVhbEhleCA9IChmaXJzdDogc3RyaW5nLCBzZWNvbmQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBpZiAoZmlyc3QudG9Mb3dlckNhc2UoKSA9PT0gc2Vjb25kLnRvTG93ZXJDYXNlKCkpIHJldHVybiB0cnVlO1xuXG4gIC8vIFRvIGNvbXBhcmUgY29sb3JzIGxpa2UgYCNGRkZgIGFuZCBgZmZmZmZmYCB3ZSBjb252ZXJ0IHRoZW0gaW50byBSR0Igb2JqZWN0c1xuICByZXR1cm4gZXF1YWxDb2xvck9iamVjdHMoaGV4VG9SZ2JhKGZpcnN0KSwgaGV4VG9SZ2JhKHNlY29uZCkpO1xufTtcbiIsImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIEFueUNvbG9yLCBIc3ZhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tIFwiLi91c2VFdmVudENhbGxiYWNrXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb2xvck1hbmlwdWxhdGlvbjxUIGV4dGVuZHMgQW55Q29sb3I+KFxuICBjb2xvck1vZGVsOiBDb2xvck1vZGVsPFQ+LFxuICBjb2xvcjogVCxcbiAgb25DaGFuZ2U/OiAoY29sb3I6IFQpID0+IHZvaWRcbik6IFtIc3ZhQ29sb3IsIChjb2xvcjogUGFydGlhbDxIc3ZhQ29sb3I+KSA9PiB2b2lkXSB7XG4gIC8vIFNhdmUgb25DaGFuZ2UgY2FsbGJhY2sgaW4gdGhlIHJlZiBmb3IgYXZvaWRpbmcgXCJ1c2VDYWxsYmFjayBoZWxsXCJcbiAgY29uc3Qgb25DaGFuZ2VDYWxsYmFjayA9IHVzZUV2ZW50Q2FsbGJhY2s8VD4ob25DaGFuZ2UpO1xuXG4gIC8vIE5vIG1hdHRlciB3aGljaCBjb2xvciBtb2RlbCBpcyB1c2VkIChIRVgsIFJHQihBKSBvciBIU0woQSkpLFxuICAvLyBhbGwgaW50ZXJuYWwgY2FsY3VsYXRpb25zIGFyZSBiYXNlZCBvbiBIU1ZBIG1vZGVsXG4gIGNvbnN0IFtoc3ZhLCB1cGRhdGVIc3ZhXSA9IHVzZVN0YXRlPEhzdmFDb2xvcj4oKCkgPT4gY29sb3JNb2RlbC50b0hzdmEoY29sb3IpKTtcblxuICAvLyBCeSB1c2luZyB0aGlzIHJlZiB3ZSdyZSBhYmxlIHRvIHByZXZlbnQgZXh0cmEgdXBkYXRlc1xuICAvLyBhbmQgdGhlIGVmZmVjdHMgcmVjdXJzaW9uIGR1cmluZyB0aGUgY29sb3IgY29udmVyc2lvblxuICBjb25zdCBjYWNoZSA9IHVzZVJlZih7IGNvbG9yLCBoc3ZhIH0pO1xuXG4gIC8vIFVwZGF0ZSBsb2NhbCBIU1ZBLXZhbHVlIGlmIGBjb2xvcmAgcHJvcGVydHkgdmFsdWUgaXMgY2hhbmdlZCxcbiAgLy8gYnV0IG9ubHkgaWYgdGhhdCdzIG5vdCB0aGUgc2FtZSBjb2xvciB0aGF0IHdlIGp1c3Qgc2VudCB0byB0aGUgcGFyZW50XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjb2xvck1vZGVsLmVxdWFsKGNvbG9yLCBjYWNoZS5jdXJyZW50LmNvbG9yKSkge1xuICAgICAgY29uc3QgbmV3SHN2YSA9IGNvbG9yTW9kZWwudG9Ic3ZhKGNvbG9yKTtcbiAgICAgIGNhY2hlLmN1cnJlbnQgPSB7IGhzdmE6IG5ld0hzdmEsIGNvbG9yIH07XG4gICAgICB1cGRhdGVIc3ZhKG5ld0hzdmEpO1xuICAgIH1cbiAgfSwgW2NvbG9yLCBjb2xvck1vZGVsXSk7XG5cbiAgLy8gVHJpZ2dlciBgb25DaGFuZ2VgIGNhbGxiYWNrIG9ubHkgaWYgYW4gdXBkYXRlZCBjb2xvciBpcyBkaWZmZXJlbnQgZnJvbSBjYWNoZWQgb25lO1xuICAvLyBzYXZlIHRoZSBuZXcgY29sb3IgdG8gdGhlIHJlZiB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHVwZGF0ZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgbmV3Q29sb3I7XG4gICAgaWYgKFxuICAgICAgIWVxdWFsQ29sb3JPYmplY3RzKGhzdmEsIGNhY2hlLmN1cnJlbnQuaHN2YSkgJiZcbiAgICAgICFjb2xvck1vZGVsLmVxdWFsKChuZXdDb2xvciA9IGNvbG9yTW9kZWwuZnJvbUhzdmEoaHN2YSkpLCBjYWNoZS5jdXJyZW50LmNvbG9yKVxuICAgICkge1xuICAgICAgY2FjaGUuY3VycmVudCA9IHsgaHN2YSwgY29sb3I6IG5ld0NvbG9yIH07XG4gICAgICBvbkNoYW5nZUNhbGxiYWNrKG5ld0NvbG9yKTtcbiAgICB9XG4gIH0sIFtoc3ZhLCBjb2xvck1vZGVsLCBvbkNoYW5nZUNhbGxiYWNrXSk7XG5cbiAgLy8gTWVyZ2UgdGhlIGN1cnJlbnQgSFNWQSBjb2xvciBvYmplY3Qgd2l0aCB1cGRhdGVkIHBhcmFtcy5cbiAgLy8gRm9yIGV4YW1wbGUsIHdoZW4gYSBjaGlsZCBjb21wb25lbnQgc2VuZHMgYGhgIG9yIGBzYCBvbmx5XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChwYXJhbXM6IFBhcnRpYWw8SHN2YUNvbG9yPikgPT4ge1xuICAgIHVwZGF0ZUhzdmEoKGN1cnJlbnQpID0+IE9iamVjdC5hc3NpZ24oe30sIGN1cnJlbnQsIHBhcmFtcykpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIFtoc3ZhLCBoYW5kbGVDaGFuZ2VdO1xufVxuIiwiZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfbm9uY2VfXzogc3RyaW5nIHwgdW5kZWZpbmVkO1xubGV0IG5vbmNlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogUmV0dXJucyBhIG5vbmNlIGhhc2ggaW5jbHVkZWQgYnkgV2VicGFjayBvciB0aGUgb25lIGRlZmluZWQgbWFudWFsbHkgYnkgZGV2ZWxvcGVyLlxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9ub25jZVxuICogaHR0cHM6Ly93ZWJwYWNrLmpzLm9yZy9ndWlkZXMvY3NwL1xuICovXG5leHBvcnQgY29uc3QgZ2V0Tm9uY2UgPSAoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vbmNlKSByZXR1cm4gbm9uY2U7XG4gIGlmICh0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBfX3dlYnBhY2tfbm9uY2VfXztcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogU2lnbnMgdGhlIHN0eWxlIHRhZyB3aXRoIGEgYmFzZTY0LWVuY29kZWQgc3RyaW5nIChub25jZSkgdG8gY29uZm9ybXMgdG8gQ29udGVudCBTZWN1cml0eSBQb2xpY2llcy5cbiAqIFRoaXMgZnVuY3Rpb24gaGFzIHRvIGJlIGludm9rZWQgYmVmb3JlIGFueSBwaWNrZXIgaXMgcmVuZGVyZWQgaWYgeW91IGFyZW4ndCB1c2luZyBXZWJwYWNrIGZvciBDU1AuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXROb25jZSA9IChoYXNoOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgbm9uY2UgPSBoYXNoO1xufTtcbiIsImltcG9ydCB7IHVzZUxheW91dEVmZmVjdCwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8vIFJlYWN0IGN1cnJlbnRseSB0aHJvd3MgYSB3YXJuaW5nIHdoZW4gdXNpbmcgdXNlTGF5b3V0RWZmZWN0IG9uIHRoZSBzZXJ2ZXIuXG4vLyBUbyBnZXQgYXJvdW5kIGl0LCB3ZSBjYW4gY29uZGl0aW9uYWxseSB1c2VFZmZlY3Qgb24gdGhlIHNlcnZlciAobm8tb3ApIGFuZFxuLy8gdXNlTGF5b3V0RWZmZWN0IGluIHRoZSBicm93c2VyLlxuZXhwb3J0IGNvbnN0IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgPVxuICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gdXNlTGF5b3V0RWZmZWN0IDogdXNlRWZmZWN0O1xuIiwiaW1wb3J0IHsgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgfSBmcm9tIFwiLi91c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0XCI7XG5pbXBvcnQgeyBnZXROb25jZSB9IGZyb20gXCIuLi91dGlscy9ub25jZVwiO1xuXG4vLyBCdW5kbGVyIGlzIGNvbmZpZ3VyZWQgdG8gbG9hZCB0aGlzIGFzIGEgcHJvY2Vzc2VkIG1pbmlmaWVkIENTUy1zdHJpbmdcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4uL2Nzcy9zdHlsZXMuY3NzXCI7XG5cbmNvbnN0IHN0eWxlRWxlbWVudE1hcDogTWFwPERvY3VtZW50LCBIVE1MU3R5bGVFbGVtZW50PiA9IG5ldyBNYXAoKTtcblxuLyoqXG4gKiBJbmplY3RzIENTUyBjb2RlIGludG8gdGhlIGRvY3VtZW50J3MgPGhlYWQ+XG4gKi9cbmV4cG9ydCBjb25zdCB1c2VTdHlsZVNoZWV0ID0gKG5vZGVSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4pOiB2b2lkID0+IHtcbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcGFyZW50RG9jdW1lbnQgPSBub2RlUmVmLmN1cnJlbnQgPyBub2RlUmVmLmN1cnJlbnQub3duZXJEb2N1bWVudCA6IGRvY3VtZW50O1xuXG4gICAgaWYgKHR5cGVvZiBwYXJlbnREb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIiAmJiAhc3R5bGVFbGVtZW50TWFwLmhhcyhwYXJlbnREb2N1bWVudCkpIHtcbiAgICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IHBhcmVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgIHN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBzdHlsZXM7XG4gICAgICBzdHlsZUVsZW1lbnRNYXAuc2V0KHBhcmVudERvY3VtZW50LCBzdHlsZUVsZW1lbnQpO1xuXG4gICAgICAvLyBDb25mb3JtIHRvIENTUCBydWxlcyBieSBzZXR0aW5nIGBub25jZWAgYXR0cmlidXRlIHRvIHRoZSBpbmxpbmUgc3R5bGVzXG4gICAgICBjb25zdCBub25jZSA9IGdldE5vbmNlKCk7XG4gICAgICBpZiAobm9uY2UpIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG5cbiAgICAgIHBhcmVudERvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEh1ZSB9IGZyb20gXCIuL0h1ZVwiO1xuaW1wb3J0IHsgU2F0dXJhdGlvbiB9IGZyb20gXCIuL1NhdHVyYXRpb25cIjtcblxuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMsIEFueUNvbG9yIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyB1c2VDb2xvck1hbmlwdWxhdGlvbiB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VDb2xvck1hbmlwdWxhdGlvblwiO1xuaW1wb3J0IHsgdXNlU3R5bGVTaGVldCB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VTdHlsZVNoZWV0XCI7XG5pbXBvcnQgeyBmb3JtYXRDbGFzc05hbWUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZm9ybWF0XCI7XG5cbmludGVyZmFjZSBQcm9wczxUIGV4dGVuZHMgQW55Q29sb3I+IGV4dGVuZHMgUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxUPj4ge1xuICBjb2xvck1vZGVsOiBDb2xvck1vZGVsPFQ+O1xufVxuXG5leHBvcnQgY29uc3QgQ29sb3JQaWNrZXIgPSA8VCBleHRlbmRzIEFueUNvbG9yPih7XG4gIGNsYXNzTmFtZSxcbiAgY29sb3JNb2RlbCxcbiAgY29sb3IgPSBjb2xvck1vZGVsLmRlZmF1bHRDb2xvcixcbiAgb25DaGFuZ2UsXG4gIC4uLnJlc3Rcbn06IFByb3BzPFQ+KTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCBub2RlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgdXNlU3R5bGVTaGVldChub2RlUmVmKTtcblxuICBjb25zdCBbaHN2YSwgdXBkYXRlSHN2YV0gPSB1c2VDb2xvck1hbmlwdWxhdGlvbjxUPihjb2xvck1vZGVsLCBjb2xvciwgb25DaGFuZ2UpO1xuXG4gIGNvbnN0IG5vZGVDbGFzc05hbWUgPSBmb3JtYXRDbGFzc05hbWUoW1wicmVhY3QtY29sb3JmdWxcIiwgY2xhc3NOYW1lXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHsuLi5yZXN0fSByZWY9e25vZGVSZWZ9IGNsYXNzTmFtZT17bm9kZUNsYXNzTmFtZX0+XG4gICAgICA8U2F0dXJhdGlvbiBoc3ZhPXtoc3ZhfSBvbkNoYW5nZT17dXBkYXRlSHN2YX0gLz5cbiAgICAgIDxIdWUgaHVlPXtoc3ZhLmh9IG9uQ2hhbmdlPXt1cGRhdGVIc3ZhfSBjbGFzc05hbWU9XCJyZWFjdC1jb2xvcmZ1bF9fbGFzdC1jb250cm9sXCIgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0NvbG9yUGlja2VyXCI7XG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgZXF1YWxIZXggfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaGV4VG9Ic3ZhLCBoc3ZhVG9IZXggfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPHN0cmluZz4gPSB7XG4gIGRlZmF1bHRDb2xvcjogXCIwMDBcIixcbiAgdG9Ic3ZhOiBoZXhUb0hzdmEsXG4gIGZyb21Ic3ZhOiBoc3ZhVG9IZXgsXG4gIGVxdWFsOiBlcXVhbEhleCxcbn07XG5cbmV4cG9ydCBjb25zdCBIZXhDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxzdHJpbmc+Pik6IEpTWC5FbGVtZW50ID0+IChcbiAgPENvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEludGVyYWN0aXZlLCBJbnRlcmFjdGlvbiB9IGZyb20gXCIuL0ludGVyYWN0aXZlXCI7XG5pbXBvcnQgeyBQb2ludGVyIH0gZnJvbSBcIi4vUG9pbnRlclwiO1xuXG5pbXBvcnQgeyBoc3ZhVG9Ic2xhU3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnZlcnRcIjtcbmltcG9ydCB7IGZvcm1hdENsYXNzTmFtZSB9IGZyb20gXCIuLi8uLi91dGlscy9mb3JtYXRcIjtcbmltcG9ydCB7IGNsYW1wIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NsYW1wXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi8uLi91dGlscy9yb3VuZFwiO1xuaW1wb3J0IHsgSHN2YUNvbG9yIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaHN2YTogSHN2YUNvbG9yO1xuICBvbkNoYW5nZTogKG5ld0FscGhhOiB7IGE6IG51bWJlciB9KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQWxwaGEgPSAoeyBjbGFzc05hbWUsIGhzdmEsIG9uQ2hhbmdlIH06IFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCBoYW5kbGVNb3ZlID0gKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4ge1xuICAgIG9uQ2hhbmdlKHsgYTogaW50ZXJhY3Rpb24ubGVmdCB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVLZXkgPSAob2Zmc2V0OiBJbnRlcmFjdGlvbikgPT4ge1xuICAgIC8vIEFscGhhIGFsd2F5cyBmaXQgaW50byBbMCwgMV0gcmFuZ2VcbiAgICBvbkNoYW5nZSh7IGE6IGNsYW1wKGhzdmEuYSArIG9mZnNldC5sZWZ0KSB9KTtcbiAgfTtcblxuICAvLyBXZSB1c2UgYE9iamVjdC5hc3NpZ25gIGluc3RlYWQgb2YgdGhlIHNwcmVhZCBvcGVyYXRvclxuICAvLyB0byBwcmV2ZW50IGFkZGluZyB0aGUgcG9seWZpbGwgKGFib3V0IDE1MCBieXRlcyBnemlwcGVkKVxuICBjb25zdCBjb2xvckZyb20gPSBoc3ZhVG9Ic2xhU3RyaW5nKE9iamVjdC5hc3NpZ24oe30sIGhzdmEsIHsgYTogMCB9KSk7XG4gIGNvbnN0IGNvbG9yVG8gPSBoc3ZhVG9Ic2xhU3RyaW5nKE9iamVjdC5hc3NpZ24oe30sIGhzdmEsIHsgYTogMSB9KSk7XG5cbiAgY29uc3QgZ3JhZGllbnRTdHlsZSA9IHtcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IGBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICR7Y29sb3JGcm9tfSwgJHtjb2xvclRvfSlgLFxuICB9O1xuXG4gIGNvbnN0IG5vZGVDbGFzc05hbWUgPSBmb3JtYXRDbGFzc05hbWUoW1wicmVhY3QtY29sb3JmdWxfX2FscGhhXCIsIGNsYXNzTmFtZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e25vZGVDbGFzc05hbWV9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWFjdC1jb2xvcmZ1bF9fYWxwaGEtZ3JhZGllbnRcIiBzdHlsZT17Z3JhZGllbnRTdHlsZX0gLz5cbiAgICAgIDxJbnRlcmFjdGl2ZVxuICAgICAgICBvbk1vdmU9e2hhbmRsZU1vdmV9XG4gICAgICAgIG9uS2V5PXtoYW5kbGVLZXl9XG4gICAgICAgIGFyaWEtbGFiZWw9XCJBbHBoYVwiXG4gICAgICAgIGFyaWEtdmFsdWV0ZXh0PXtgJHtyb3VuZChoc3ZhLmEgKiAxMDApfSVgfVxuICAgICAgPlxuICAgICAgICA8UG9pbnRlclxuICAgICAgICAgIGNsYXNzTmFtZT1cInJlYWN0LWNvbG9yZnVsX19hbHBoYS1wb2ludGVyXCJcbiAgICAgICAgICBsZWZ0PXtoc3ZhLmF9XG4gICAgICAgICAgY29sb3I9e2hzdmFUb0hzbGFTdHJpbmcoaHN2YSl9XG4gICAgICAgIC8+XG4gICAgICA8L0ludGVyYWN0aXZlPlxuICAgIDwvZGl2PlxuICApO1xufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgSHVlIH0gZnJvbSBcIi4vSHVlXCI7XG5pbXBvcnQgeyBTYXR1cmF0aW9uIH0gZnJvbSBcIi4vU2F0dXJhdGlvblwiO1xuaW1wb3J0IHsgQWxwaGEgfSBmcm9tIFwiLi9BbHBoYVwiO1xuXG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcywgQW55Q29sb3IgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IHVzZUNvbG9yTWFuaXB1bGF0aW9uIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUNvbG9yTWFuaXB1bGF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTdHlsZVNoZWV0IH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVN0eWxlU2hlZXRcIjtcbmltcG9ydCB7IGZvcm1hdENsYXNzTmFtZSB9IGZyb20gXCIuLi8uLi91dGlscy9mb3JtYXRcIjtcblxuaW50ZXJmYWNlIFByb3BzPFQgZXh0ZW5kcyBBbnlDb2xvcj4gZXh0ZW5kcyBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPFQ+PiB7XG4gIGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8VD47XG59XG5cbmV4cG9ydCBjb25zdCBBbHBoYUNvbG9yUGlja2VyID0gPFQgZXh0ZW5kcyBBbnlDb2xvcj4oe1xuICBjbGFzc05hbWUsXG4gIGNvbG9yTW9kZWwsXG4gIGNvbG9yID0gY29sb3JNb2RlbC5kZWZhdWx0Q29sb3IsXG4gIG9uQ2hhbmdlLFxuICAuLi5yZXN0XG59OiBQcm9wczxUPik6IEpTWC5FbGVtZW50ID0+IHtcbiAgY29uc3Qgbm9kZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIHVzZVN0eWxlU2hlZXQobm9kZVJlZik7XG5cbiAgY29uc3QgW2hzdmEsIHVwZGF0ZUhzdmFdID0gdXNlQ29sb3JNYW5pcHVsYXRpb248VD4oY29sb3JNb2RlbCwgY29sb3IsIG9uQ2hhbmdlKTtcblxuICBjb25zdCBub2RlQ2xhc3NOYW1lID0gZm9ybWF0Q2xhc3NOYW1lKFtcInJlYWN0LWNvbG9yZnVsXCIsIGNsYXNzTmFtZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiB7Li4ucmVzdH0gcmVmPXtub2RlUmVmfSBjbGFzc05hbWU9e25vZGVDbGFzc05hbWV9PlxuICAgICAgPFNhdHVyYXRpb24gaHN2YT17aHN2YX0gb25DaGFuZ2U9e3VwZGF0ZUhzdmF9IC8+XG4gICAgICA8SHVlIGh1ZT17aHN2YS5ofSBvbkNoYW5nZT17dXBkYXRlSHN2YX0gLz5cbiAgICAgIDxBbHBoYSBoc3ZhPXtoc3ZhfSBvbkNoYW5nZT17dXBkYXRlSHN2YX0gY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX2xhc3QtY29udHJvbFwiIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBbHBoYUNvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0FscGhhQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBIc2xhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IGhzbGFUb0hzdmEsIGhzdmFUb0hzbGEgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPEhzbGFDb2xvcj4gPSB7XG4gIGRlZmF1bHRDb2xvcjogeyBoOiAwLCBzOiAwLCBsOiAwLCBhOiAxIH0sXG4gIHRvSHN2YTogaHNsYVRvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzbGEsXG4gIGVxdWFsOiBlcXVhbENvbG9yT2JqZWN0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBIc2xhQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8SHNsYUNvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxBbHBoYUNvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEFscGhhQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQWxwaGFDb2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaHNsYVN0cmluZ1RvSHN2YSwgaHN2YVRvSHNsYVN0cmluZyB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8c3RyaW5nPiA9IHtcbiAgZGVmYXVsdENvbG9yOiBcImhzbGEoMCwgMCUsIDAlLCAxKVwiLFxuICB0b0hzdmE6IGhzbGFTdHJpbmdUb0hzdmEsXG4gIGZyb21Ic3ZhOiBoc3ZhVG9Ic2xhU3RyaW5nLFxuICBlcXVhbDogZXF1YWxDb2xvclN0cmluZyxcbn07XG5cbmV4cG9ydCBjb25zdCBIc2xhU3RyaW5nQ29sb3JQaWNrZXIgPSAoXG4gIHByb3BzOiBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPHN0cmluZz4+XG4pOiBKU1guRWxlbWVudCA9PiA8QWxwaGFDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9Db2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMsIEhzbENvbG9yIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBlcXVhbENvbG9yT2JqZWN0cyB9IGZyb20gXCIuLi91dGlscy9jb21wYXJlXCI7XG5pbXBvcnQgeyBoc2xhVG9Ic3ZhLCBoc3ZhVG9Ic2xhLCBoc2xhVG9Ic2wgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPEhzbENvbG9yPiA9IHtcbiAgZGVmYXVsdENvbG9yOiB7IGg6IDAsIHM6IDAsIGw6IDAgfSxcbiAgdG9Ic3ZhOiAoeyBoLCBzLCBsIH0pID0+IGhzbGFUb0hzdmEoeyBoLCBzLCBsLCBhOiAxIH0pLFxuICBmcm9tSHN2YTogKGhzdmEpID0+IGhzbGFUb0hzbChoc3ZhVG9Ic2xhKGhzdmEpKSxcbiAgZXF1YWw6IGVxdWFsQ29sb3JPYmplY3RzLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzbENvbG9yUGlja2VyID0gKHByb3BzOiBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPEhzbENvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9Db2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaHNsU3RyaW5nVG9Ic3ZhLCBoc3ZhVG9Ic2xTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPHN0cmluZz4gPSB7XG4gIGRlZmF1bHRDb2xvcjogXCJoc2woMCwgMCUsIDAlKVwiLFxuICB0b0hzdmE6IGhzbFN0cmluZ1RvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzbFN0cmluZyxcbiAgZXF1YWw6IGVxdWFsQ29sb3JTdHJpbmcsXG59O1xuXG5leHBvcnQgY29uc3QgSHNsU3RyaW5nQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8c3RyaW5nPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBbHBoYUNvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0FscGhhQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBIc3ZhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHJvdW5kSHN2YSB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8SHN2YUNvbG9yPiA9IHtcbiAgZGVmYXVsdENvbG9yOiB7IGg6IDAsIHM6IDAsIHY6IDAsIGE6IDEgfSxcbiAgdG9Ic3ZhOiAoaHN2YSkgPT4gaHN2YSxcbiAgZnJvbUhzdmE6IHJvdW5kSHN2YSxcbiAgZXF1YWw6IGVxdWFsQ29sb3JPYmplY3RzLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzdmFDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxIc3ZhQ29sb3I+Pik6IEpTWC5FbGVtZW50ID0+IChcbiAgPEFscGhhQ29sb3JQaWNrZXIgey4uLnByb3BzfSBjb2xvck1vZGVsPXtjb2xvck1vZGVsfSAvPlxuKTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQWxwaGFDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9BbHBoYUNvbG9yUGlja2VyXCI7XG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgZXF1YWxDb2xvclN0cmluZyB9IGZyb20gXCIuLi91dGlscy9jb21wYXJlXCI7XG5pbXBvcnQgeyBoc3ZhU3RyaW5nVG9Ic3ZhLCBoc3ZhVG9Ic3ZhU3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnZlcnRcIjtcblxuY29uc3QgY29sb3JNb2RlbDogQ29sb3JNb2RlbDxzdHJpbmc+ID0ge1xuICBkZWZhdWx0Q29sb3I6IFwiaHN2YSgwLCAwJSwgMCUsIDEpXCIsXG4gIHRvSHN2YTogaHN2YVN0cmluZ1RvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzdmFTdHJpbmcsXG4gIGVxdWFsOiBlcXVhbENvbG9yU3RyaW5nLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzdmFTdHJpbmdDb2xvclBpY2tlciA9IChcbiAgcHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8c3RyaW5nPj5cbik6IEpTWC5FbGVtZW50ID0+IDxBbHBoYUNvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz47XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0NvbG9yUGlja2VyXCI7XG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcywgSHN2Q29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IGhzdmFUb0hzdiB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8SHN2Q29sb3I+ID0ge1xuICBkZWZhdWx0Q29sb3I6IHsgaDogMCwgczogMCwgdjogMCB9LFxuICB0b0hzdmE6ICh7IGgsIHMsIHYgfSkgPT4gKHsgaCwgcywgdiwgYTogMSB9KSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzdixcbiAgZXF1YWw6IGVxdWFsQ29sb3JPYmplY3RzLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzdkNvbG9yUGlja2VyID0gKHByb3BzOiBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPEhzdkNvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9Db2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaHN2U3RyaW5nVG9Ic3ZhLCBoc3ZhVG9Ic3ZTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPHN0cmluZz4gPSB7XG4gIGRlZmF1bHRDb2xvcjogXCJoc3YoMCwgMCUsIDAlKVwiLFxuICB0b0hzdmE6IGhzdlN0cmluZ1RvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzdlN0cmluZyxcbiAgZXF1YWw6IGVxdWFsQ29sb3JTdHJpbmcsXG59O1xuXG5leHBvcnQgY29uc3QgSHN2U3RyaW5nQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8c3RyaW5nPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBbHBoYUNvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0FscGhhQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBSZ2JhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHJnYmFUb0hzdmEsIGhzdmFUb1JnYmEgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPFJnYmFDb2xvcj4gPSB7XG4gIGRlZmF1bHRDb2xvcjogeyByOiAwLCBnOiAwLCBiOiAwLCBhOiAxIH0sXG4gIHRvSHN2YTogcmdiYVRvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb1JnYmEsXG4gIGVxdWFsOiBlcXVhbENvbG9yT2JqZWN0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBSZ2JhQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8UmdiYUNvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxBbHBoYUNvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEFscGhhQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQWxwaGFDb2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgcmdiYVN0cmluZ1RvSHN2YSwgaHN2YVRvUmdiYVN0cmluZyB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8c3RyaW5nPiA9IHtcbiAgZGVmYXVsdENvbG9yOiBcInJnYmEoMCwgMCwgMCwgMSlcIixcbiAgdG9Ic3ZhOiByZ2JhU3RyaW5nVG9Ic3ZhLFxuICBmcm9tSHN2YTogaHN2YVRvUmdiYVN0cmluZyxcbiAgZXF1YWw6IGVxdWFsQ29sb3JTdHJpbmcsXG59O1xuXG5leHBvcnQgY29uc3QgUmdiYVN0cmluZ0NvbG9yUGlja2VyID0gKFxuICBwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxzdHJpbmc+PlxuKTogSlNYLkVsZW1lbnQgPT4gPEFscGhhQ29sb3JQaWNrZXIgey4uLnByb3BzfSBjb2xvck1vZGVsPXtjb2xvck1vZGVsfSAvPjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBSZ2JDb2xvciB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgZXF1YWxDb2xvck9iamVjdHMgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgcmdiYVRvSHN2YSwgaHN2YVRvUmdiYSwgcmdiYVRvUmdiIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnZlcnRcIjtcblxuY29uc3QgY29sb3JNb2RlbDogQ29sb3JNb2RlbDxSZ2JDb2xvcj4gPSB7XG4gIGRlZmF1bHRDb2xvcjogeyByOiAwLCBnOiAwLCBiOiAwIH0sXG4gIHRvSHN2YTogKHsgciwgZywgYiB9KSA9PiByZ2JhVG9Ic3ZhKHsgciwgZywgYiwgYTogMSB9KSxcbiAgZnJvbUhzdmE6IChoc3ZhKSA9PiByZ2JhVG9SZ2IoaHN2YVRvUmdiYShoc3ZhKSksXG4gIGVxdWFsOiBlcXVhbENvbG9yT2JqZWN0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBSZ2JDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxSZ2JDb2xvcj4+KTogSlNYLkVsZW1lbnQgPT4gKFxuICA8Q29sb3JQaWNrZXIgey4uLnByb3BzfSBjb2xvck1vZGVsPXtjb2xvck1vZGVsfSAvPlxuKTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBlcXVhbENvbG9yU3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHJnYlN0cmluZ1RvSHN2YSwgaHN2YVRvUmdiU3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnZlcnRcIjtcblxuY29uc3QgY29sb3JNb2RlbDogQ29sb3JNb2RlbDxzdHJpbmc+ID0ge1xuICBkZWZhdWx0Q29sb3I6IFwicmdiKDAsIDAsIDApXCIsXG4gIHRvSHN2YTogcmdiU3RyaW5nVG9Ic3ZhLFxuICBmcm9tSHN2YTogaHN2YVRvUmdiU3RyaW5nLFxuICBlcXVhbDogZXF1YWxDb2xvclN0cmluZyxcbn07XG5cbmV4cG9ydCBjb25zdCBSZ2JTdHJpbmdDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxzdHJpbmc+Pik6IEpTWC5FbGVtZW50ID0+IChcbiAgPENvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJjb25zdCBtYXRjaGVyID0gL14jPyhbMC05QS1GXXszLDh9KSQvaTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkSGV4ID0gKHZhbHVlOiBzdHJpbmcsIGFscGhhPzogYm9vbGVhbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBtYXRjaCA9IG1hdGNoZXIuZXhlYyh2YWx1ZSk7XG4gIGNvbnN0IGxlbmd0aCA9IG1hdGNoID8gbWF0Y2hbMV0ubGVuZ3RoIDogMDtcblxuICByZXR1cm4gKFxuICAgIGxlbmd0aCA9PT0gMyB8fCAvLyAnI3JnYicgZm9ybWF0XG4gICAgbGVuZ3RoID09PSA2IHx8IC8vICcjcnJnZ2JiJyBmb3JtYXRcbiAgICAoISFhbHBoYSAmJiBsZW5ndGggPT09IDQpIHx8IC8vICcjcmdiYScgZm9ybWF0XG4gICAgKCEhYWxwaGEgJiYgbGVuZ3RoID09PSA4KSAvLyAnI3JyZ2diYmFhJyBmb3JtYXRcbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VFdmVudENhbGxiYWNrXCI7XG5pbXBvcnQgeyBDb2xvcklucHV0QmFzZVByb3BzIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbmludGVyZmFjZSBQcm9wcyBleHRlbmRzIENvbG9ySW5wdXRCYXNlUHJvcHMge1xuICAvKiogQmxvY2tzIHR5cGluZyBpbnZhbGlkIGNoYXJhY3RlcnMgYW5kIGxpbWl0cyBzdHJpbmcgbGVuZ3RoICovXG4gIGVzY2FwZTogKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcbiAgLyoqIENoZWNrcyB0aGF0IHZhbHVlIGlzIHZhbGlkIGNvbG9yIHN0cmluZyAqL1xuICB2YWxpZGF0ZTogKHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIC8qKiBQcm9jZXNzZXMgdmFsdWUgYmVmb3JlIGRpc3BsYXlpbmcgaXQgaW4gdGhlIGlucHV0ICovXG4gIGZvcm1hdD86ICh2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIC8qKiBQcm9jZXNzZXMgdmFsdWUgYmVmb3JlIHNlbmRpbmcgaXQgaW4gYG9uQ2hhbmdlYCAqL1xuICBwcm9jZXNzPzogKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IENvbG9ySW5wdXQgPSAocHJvcHM6IFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCB7IGNvbG9yID0gXCJcIiwgb25DaGFuZ2UsIG9uQmx1ciwgZXNjYXBlLCB2YWxpZGF0ZSwgZm9ybWF0LCBwcm9jZXNzLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiBlc2NhcGUoY29sb3IpKTtcbiAgY29uc3Qgb25DaGFuZ2VDYWxsYmFjayA9IHVzZUV2ZW50Q2FsbGJhY2s8c3RyaW5nPihvbkNoYW5nZSk7XG4gIGNvbnN0IG9uQmx1ckNhbGxiYWNrID0gdXNlRXZlbnRDYWxsYmFjazxSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+PihvbkJsdXIpO1xuXG4gIC8vIFRyaWdnZXIgYG9uQ2hhbmdlYCBoYW5kbGVyIG9ubHkgaWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgdmFsaWQgY29sb3JcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBpbnB1dFZhbHVlID0gZXNjYXBlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgIHNldFZhbHVlKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKHZhbGlkYXRlKGlucHV0VmFsdWUpKSBvbkNoYW5nZUNhbGxiYWNrKHByb2Nlc3MgPyBwcm9jZXNzKGlucHV0VmFsdWUpIDogaW5wdXRWYWx1ZSk7XG4gICAgfSxcbiAgICBbZXNjYXBlLCBwcm9jZXNzLCB2YWxpZGF0ZSwgb25DaGFuZ2VDYWxsYmFja11cbiAgKTtcblxuICAvLyBUYWtlIHRoZSBjb2xvciBmcm9tIHByb3BzIGlmIHRoZSBsYXN0IHR5cGVkIGNvbG9yIChpbiBsb2NhbCBzdGF0ZSkgaXMgbm90IHZhbGlkXG4gIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCF2YWxpZGF0ZShlLnRhcmdldC52YWx1ZSkpIHNldFZhbHVlKGVzY2FwZShjb2xvcikpO1xuICAgICAgb25CbHVyQ2FsbGJhY2soZSk7XG4gICAgfSxcbiAgICBbY29sb3IsIGVzY2FwZSwgdmFsaWRhdGUsIG9uQmx1ckNhbGxiYWNrXVxuICApO1xuXG4gIC8vIFVwZGF0ZSB0aGUgbG9jYWwgc3RhdGUgd2hlbiBgY29sb3JgIHByb3BlcnR5IHZhbHVlIGlzIGNoYW5nZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRWYWx1ZShlc2NhcGUoY29sb3IpKTtcbiAgfSwgW2NvbG9yLCBlc2NhcGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxpbnB1dFxuICAgICAgey4uLnJlc3R9XG4gICAgICB2YWx1ZT17Zm9ybWF0ID8gZm9ybWF0KHZhbHVlKSA6IHZhbHVlfVxuICAgICAgc3BlbGxDaGVjaz1cImZhbHNlXCIgLy8gdGhlIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBjaGVja2VkIGZvciBzcGVsbGluZyBlcnJvcnNcbiAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgLz5cbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbG9ySW5wdXRCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgdmFsaWRIZXggfSBmcm9tIFwiLi4vdXRpbHMvdmFsaWRhdGVcIjtcbmltcG9ydCB7IENvbG9ySW5wdXQgfSBmcm9tIFwiLi9jb21tb24vQ29sb3JJbnB1dFwiO1xuXG5pbnRlcmZhY2UgSGV4Q29sb3JJbnB1dFByb3BzIGV4dGVuZHMgQ29sb3JJbnB1dEJhc2VQcm9wcyB7XG4gIC8qKiBFbmFibGVzIGAjYCBwcmVmaXggZGlzcGxheWluZyAqL1xuICBwcmVmaXhlZD86IGJvb2xlYW47XG4gIC8qKiBBbGxvd3MgYCNyZ2JhYCBhbmQgYCNycmdnYmJhYWAgY29sb3IgZm9ybWF0cyAqL1xuICBhbHBoYT86IGJvb2xlYW47XG59XG5cbi8qKiBBZGRzIFwiI1wiIHN5bWJvbCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgKi9cbmNvbnN0IHByZWZpeCA9ICh2YWx1ZTogc3RyaW5nKSA9PiBcIiNcIiArIHZhbHVlO1xuXG5leHBvcnQgY29uc3QgSGV4Q29sb3JJbnB1dCA9IChwcm9wczogSGV4Q29sb3JJbnB1dFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCB7IHByZWZpeGVkLCBhbHBoYSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgLyoqIEVzY2FwZXMgYWxsIG5vbi1oZXhhZGVjaW1hbCBjaGFyYWN0ZXJzIGluY2x1ZGluZyBcIiNcIiAqL1xuICBjb25zdCBlc2NhcGUgPSB1c2VDYWxsYmFjayhcbiAgICAodmFsdWU6IHN0cmluZykgPT4gdmFsdWUucmVwbGFjZSgvKFteMC05QS1GXSspL2dpLCBcIlwiKS5zdWJzdHIoMCwgYWxwaGEgPyA4IDogNiksXG4gICAgW2FscGhhXVxuICApO1xuXG4gIC8qKiBWYWxpZGF0ZXMgaGV4YWRlY2ltYWwgc3RyaW5ncyAqL1xuICBjb25zdCB2YWxpZGF0ZSA9IHVzZUNhbGxiYWNrKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWxpZEhleCh2YWx1ZSwgYWxwaGEpLCBbYWxwaGFdKTtcblxuICByZXR1cm4gKFxuICAgIDxDb2xvcklucHV0XG4gICAgICB7Li4ucmVzdH1cbiAgICAgIGVzY2FwZT17ZXNjYXBlfVxuICAgICAgZm9ybWF0PXtwcmVmaXhlZCA/IHByZWZpeCA6IHVuZGVmaW5lZH1cbiAgICAgIHByb2Nlc3M9e3ByZWZpeH1cbiAgICAgIHZhbGlkYXRlPXt2YWxpZGF0ZX1cbiAgICAvPlxuICApO1xufTtcbiIsImltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbi5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuaXRlcmF0b3IuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mcm9tLmpzXCI7XG5cbnZhciBfQ29sb3JQaWNrZXIsIF9mYWxsYmFja0NvbG9yO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkpIHJldHVybjsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmFzc2lnbi5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC52YWx1ZXMuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcubWF0Y2guanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnN0YXJ0cy13aXRoLmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNwbGl0LmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIZXhDb2xvclBpY2tlciwgSHNsYVN0cmluZ0NvbG9yUGlja2VyLCBSZ2JhU3RyaW5nQ29sb3JQaWNrZXIgfSBmcm9tICdyZWFjdC1jb2xvcmZ1bCc7XG5pbXBvcnQgY29udmVydCBmcm9tICdjb2xvci1jb252ZXJ0JztcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gvdGhyb3R0bGUnO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnQHN0b3J5Ym9vay90aGVtaW5nJztcbmltcG9ydCB7IFRvb2x0aXBOb3RlIH0gZnJvbSAnLi4vdG9vbHRpcC9Ub29sdGlwTm90ZSc7XG5pbXBvcnQgeyBXaXRoVG9vbHRpcCB9IGZyb20gJy4uL3Rvb2x0aXAvbGF6eS1XaXRoVG9vbHRpcCc7XG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vZm9ybSc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uL2ljb24vaWNvbic7XG5pbXBvcnQgeyBnZXRDb250cm9sSWQgfSBmcm9tICcuL2hlbHBlcnMnO1xudmFyIFdyYXBwZXIgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIG1heFdpZHRoOiAyNTBcbn0pO1xudmFyIFBpY2tlclRvb2x0aXAgPSBzdHlsZWQoV2l0aFRvb2x0aXApKHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIHpJbmRleDogMSxcbiAgdG9wOiA0LFxuICBsZWZ0OiA0XG59KTtcbnZhciBUb29sdGlwQ29udGVudCA9IHN0eWxlZC5kaXYoe1xuICB3aWR0aDogMjAwLFxuICBtYXJnaW46IDUsXG4gICcucmVhY3QtY29sb3JmdWxfX3NhdHVyYXRpb24nOiB7XG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4IDRweCAwIDAnXG4gIH0sXG4gICcucmVhY3QtY29sb3JmdWxfX2h1ZSc6IHtcbiAgICBib3hTaGFkb3c6ICdpbnNldCAwIDAgMCAxcHggcmdiKDAgMCAwIC8gNSUpJ1xuICB9LFxuICAnLnJlYWN0LWNvbG9yZnVsX19sYXN0LWNvbnRyb2wnOiB7XG4gICAgYm9yZGVyUmFkaXVzOiAnMCAwIDRweCA0cHgnXG4gIH1cbn0pO1xudmFyIE5vdGUgPSBzdHlsZWQoVG9vbHRpcE5vdGUpKGZ1bmN0aW9uIChfcmVmKSB7XG4gIHZhciB0aGVtZSA9IF9yZWYudGhlbWU7XG4gIHJldHVybiB7XG4gICAgZm9udEZhbWlseTogdGhlbWUudHlwb2dyYXBoeS5mb250cy5iYXNlXG4gIH07XG59KTtcbnZhciBTd2F0Y2hlcyA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiAnZ3JpZCcsXG4gIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOSwgMTZweCknLFxuICBnYXA6IDYsXG4gIHBhZGRpbmc6IDMsXG4gIG1hcmdpblRvcDogNSxcbiAgd2lkdGg6IDIwMFxufSk7XG52YXIgU3dhdGNoQ29sb3IgPSBzdHlsZWQuZGl2KGZ1bmN0aW9uIChfcmVmMikge1xuICB2YXIgdGhlbWUgPSBfcmVmMi50aGVtZSxcbiAgICAgIGFjdGl2ZSA9IF9yZWYyLmFjdGl2ZTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogMTYsXG4gICAgaGVpZ2h0OiAxNixcbiAgICBib3hTaGFkb3c6IGFjdGl2ZSA/IFwiXCIuY29uY2F0KHRoZW1lLmFwcEJvcmRlckNvbG9yLCBcIiAwIDAgMCAxcHggaW5zZXQsIFwiKS5jb25jYXQodGhlbWUuY29sb3IubWVkaXVtZGFyaywgXCI1MCAwIDAgMCA0cHhcIikgOiBcIlwiLmNvbmNhdCh0aGVtZS5hcHBCb3JkZXJDb2xvciwgXCIgMCAwIDAgMXB4IGluc2V0XCIpLFxuICAgIGJvcmRlclJhZGl1czogdGhlbWUuYXBwQm9yZGVyUmFkaXVzXG4gIH07XG59KTtcbnZhciBzd2F0Y2hCYWNrZ3JvdW5kID0gXCJ1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMTZcXFwiIGhlaWdodD1cXFwiMTZcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjA1XFxcIj48cGF0aCBkPVxcXCJNOCAwaDh2OEg4ek0wIDhoOHY4SDB6XFxcIi8+PC9zdmc+JylcIjtcblxudmFyIFN3YXRjaCA9IGZ1bmN0aW9uIFN3YXRjaChfcmVmMykge1xuICB2YXIgdmFsdWUgPSBfcmVmMy52YWx1ZSxcbiAgICAgIGFjdGl2ZSA9IF9yZWYzLmFjdGl2ZSxcbiAgICAgIG9uQ2xpY2sgPSBfcmVmMy5vbkNsaWNrLFxuICAgICAgc3R5bGUgPSBfcmVmMy5zdHlsZSxcbiAgICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYzLCBbXCJ2YWx1ZVwiLCBcImFjdGl2ZVwiLCBcIm9uQ2xpY2tcIiwgXCJzdHlsZVwiXSk7XG5cbiAgdmFyIGJhY2tncm91bmRJbWFnZSA9IFwibGluZWFyLWdyYWRpZW50KFwiLmNvbmNhdCh2YWx1ZSwgXCIsIFwiKS5jb25jYXQodmFsdWUsIFwiKSwgXCIpLmNvbmNhdChzd2F0Y2hCYWNrZ3JvdW5kLCBcIiwgbGluZWFyLWdyYWRpZW50KCNmZmYsICNmZmYpXCIpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3dhdGNoQ29sb3IsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGFjdGl2ZTogYWN0aXZlLFxuICAgIG9uQ2xpY2s6IG9uQ2xpY2ssXG4gICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIHN0eWxlLCB7XG4gICAgICBiYWNrZ3JvdW5kSW1hZ2U6IGJhY2tncm91bmRJbWFnZVxuICAgIH0pXG4gIH0pKTtcbn07XG5cblN3YXRjaC5kaXNwbGF5TmFtZSA9IFwiU3dhdGNoXCI7XG52YXIgSW5wdXQgPSBzdHlsZWQoRm9ybS5JbnB1dCkoZnVuY3Rpb24gKF9yZWY0KSB7XG4gIHZhciB0aGVtZSA9IF9yZWY0LnRoZW1lO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcGFkZGluZ0xlZnQ6IDMwLFxuICAgIHBhZGRpbmdSaWdodDogMzAsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgZm9udEZhbWlseTogdGhlbWUudHlwb2dyYXBoeS5mb250cy5iYXNlXG4gIH07XG59KTtcbnZhciBUb2dnbGVJY29uID0gc3R5bGVkKEljb25zKShmdW5jdGlvbiAoX3JlZjUpIHtcbiAgdmFyIHRoZW1lID0gX3JlZjUudGhlbWU7XG4gIHJldHVybiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgekluZGV4OiAxLFxuICAgIHRvcDogNixcbiAgICByaWdodDogNyxcbiAgICB3aWR0aDogMjAsXG4gICAgaGVpZ2h0OiAyMCxcbiAgICBwYWRkaW5nOiA0LFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGNvbG9yOiB0aGVtZS5pbnB1dC5jb2xvclxuICB9O1xufSk7XG52YXIgQ29sb3JTcGFjZTtcblxuKGZ1bmN0aW9uIChDb2xvclNwYWNlKSB7XG4gIENvbG9yU3BhY2VbXCJSR0JcIl0gPSBcInJnYlwiO1xuICBDb2xvclNwYWNlW1wiSFNMXCJdID0gXCJoc2xcIjtcbiAgQ29sb3JTcGFjZVtcIkhFWFwiXSA9IFwiaGV4XCI7XG59KShDb2xvclNwYWNlIHx8IChDb2xvclNwYWNlID0ge30pKTtcblxudmFyIENPTE9SX1NQQUNFUyA9IE9iamVjdC52YWx1ZXMoQ29sb3JTcGFjZSk7XG52YXIgQ09MT1JfUkVHRVhQID0gL1xcKChbMC05XSspLFxccyooWzAtOV0rKSU/LFxccyooWzAtOV0rKSU/LD9cXHMqKFswLTkuXSspP1xcKS87XG52YXIgUkdCX1JFR0VYUCA9IC9eXFxzKnJnYmE/XFwoKFswLTldKyksXFxzKihbMC05XSspLFxccyooWzAtOV0rKSw/XFxzKihbMC05Ll0rKT9cXClcXHMqJC9pO1xudmFyIEhTTF9SRUdFWFAgPSAvXlxccypoc2xhP1xcKChbMC05XSspLFxccyooWzAtOV0rKSUsXFxzKihbMC05XSspJSw/XFxzKihbMC05Ll0rKT9cXClcXHMqJC9pO1xudmFyIEhFWF9SRUdFWFAgPSAvXlxccyojPyhbMC05YS1mXXszfXxbMC05YS1mXXs2fSlcXHMqJC9pO1xudmFyIFNIT1JUSEVYX1JFR0VYUCA9IC9eXFxzKiM/KFswLTlhLWZdezN9KVxccyokL2k7XG52YXIgQ29sb3JQaWNrZXIgPSAoX0NvbG9yUGlja2VyID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfQ29sb3JQaWNrZXIsIENvbG9yU3BhY2UuSEVYLCBIZXhDb2xvclBpY2tlciksIF9kZWZpbmVQcm9wZXJ0eShfQ29sb3JQaWNrZXIsIENvbG9yU3BhY2UuUkdCLCBSZ2JhU3RyaW5nQ29sb3JQaWNrZXIpLCBfZGVmaW5lUHJvcGVydHkoX0NvbG9yUGlja2VyLCBDb2xvclNwYWNlLkhTTCwgSHNsYVN0cmluZ0NvbG9yUGlja2VyKSwgX0NvbG9yUGlja2VyKTtcbnZhciBmYWxsYmFja0NvbG9yID0gKF9mYWxsYmFja0NvbG9yID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfZmFsbGJhY2tDb2xvciwgQ29sb3JTcGFjZS5IRVgsICd0cmFuc3BhcmVudCcpLCBfZGVmaW5lUHJvcGVydHkoX2ZhbGxiYWNrQ29sb3IsIENvbG9yU3BhY2UuUkdCLCAncmdiYSgwLCAwLCAwLCAwKScpLCBfZGVmaW5lUHJvcGVydHkoX2ZhbGxiYWNrQ29sb3IsIENvbG9yU3BhY2UuSFNMLCAnaHNsYSgwLCAwJSwgMCUsIDApJyksIF9mYWxsYmFja0NvbG9yKTtcblxudmFyIHN0cmluZ1RvQXJncyA9IGZ1bmN0aW9uIHN0cmluZ1RvQXJncyh2YWx1ZSkge1xuICB2YXIgbWF0Y2ggPSB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmFsdWUubWF0Y2goQ09MT1JfUkVHRVhQKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIFswLCAwLCAwLCAxXTtcblxuICB2YXIgX21hdGNoID0gX3NsaWNlZFRvQXJyYXkobWF0Y2gsIDUpLFxuICAgICAgeCA9IF9tYXRjaFsxXSxcbiAgICAgIHkgPSBfbWF0Y2hbMl0sXG4gICAgICB6ID0gX21hdGNoWzNdLFxuICAgICAgX21hdGNoJCA9IF9tYXRjaFs0XSxcbiAgICAgIGEgPSBfbWF0Y2gkID09PSB2b2lkIDAgPyAxIDogX21hdGNoJDtcblxuICByZXR1cm4gW3gsIHksIHosIGFdLm1hcChOdW1iZXIpO1xufTtcblxudmFyIHBhcnNlVmFsdWUgPSBmdW5jdGlvbiBwYXJzZVZhbHVlKHZhbHVlKSB7XG4gIHZhciBfcmVmMTI7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdmFyIHZhbGlkID0gdHJ1ZTtcblxuICBpZiAoUkdCX1JFR0VYUC50ZXN0KHZhbHVlKSkge1xuICAgIHZhciBfcmVmODtcblxuICAgIHZhciBfc3RyaW5nVG9BcmdzID0gc3RyaW5nVG9BcmdzKHZhbHVlKSxcbiAgICAgICAgX3N0cmluZ1RvQXJnczIgPSBfc2xpY2VkVG9BcnJheShfc3RyaW5nVG9BcmdzLCA0KSxcbiAgICAgICAgciA9IF9zdHJpbmdUb0FyZ3MyWzBdLFxuICAgICAgICBnID0gX3N0cmluZ1RvQXJnczJbMV0sXG4gICAgICAgIGIgPSBfc3RyaW5nVG9BcmdzMlsyXSxcbiAgICAgICAgYSA9IF9zdHJpbmdUb0FyZ3MyWzNdO1xuXG4gICAgdmFyIF9yZWY2ID0gY29udmVydC5yZ2IuaHNsKFtyLCBnLCBiXSkgfHwgWzAsIDAsIDBdLFxuICAgICAgICBfcmVmNyA9IF9zbGljZWRUb0FycmF5KF9yZWY2LCAzKSxcbiAgICAgICAgaCA9IF9yZWY3WzBdLFxuICAgICAgICBzID0gX3JlZjdbMV0sXG4gICAgICAgIGwgPSBfcmVmN1syXTtcblxuICAgIHJldHVybiBfcmVmOCA9IHtcbiAgICAgIHZhbGlkOiB2YWxpZCxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGtleXdvcmQ6IGNvbnZlcnQucmdiLmtleXdvcmQoW3IsIGcsIGJdKSxcbiAgICAgIGNvbG9yU3BhY2U6IENvbG9yU3BhY2UuUkdCXG4gICAgfSwgX2RlZmluZVByb3BlcnR5KF9yZWY4LCBDb2xvclNwYWNlLlJHQiwgdmFsdWUpLCBfZGVmaW5lUHJvcGVydHkoX3JlZjgsIENvbG9yU3BhY2UuSFNMLCBcImhzbGEoXCIuY29uY2F0KGgsIFwiLCBcIikuY29uY2F0KHMsIFwiJSwgXCIpLmNvbmNhdChsLCBcIiUsIFwiKS5jb25jYXQoYSwgXCIpXCIpKSwgX2RlZmluZVByb3BlcnR5KF9yZWY4LCBDb2xvclNwYWNlLkhFWCwgXCIjXCIuY29uY2F0KGNvbnZlcnQucmdiLmhleChbciwgZywgYl0pLnRvTG93ZXJDYXNlKCkpKSwgX3JlZjg7XG4gIH1cblxuICBpZiAoSFNMX1JFR0VYUC50ZXN0KHZhbHVlKSkge1xuICAgIHZhciBfcmVmMTE7XG5cbiAgICB2YXIgX3N0cmluZ1RvQXJnczMgPSBzdHJpbmdUb0FyZ3ModmFsdWUpLFxuICAgICAgICBfc3RyaW5nVG9BcmdzNCA9IF9zbGljZWRUb0FycmF5KF9zdHJpbmdUb0FyZ3MzLCA0KSxcbiAgICAgICAgX2ggPSBfc3RyaW5nVG9BcmdzNFswXSxcbiAgICAgICAgX3MyID0gX3N0cmluZ1RvQXJnczRbMV0sXG4gICAgICAgIF9sID0gX3N0cmluZ1RvQXJnczRbMl0sXG4gICAgICAgIF9hID0gX3N0cmluZ1RvQXJnczRbM107XG5cbiAgICB2YXIgX3JlZjkgPSBjb252ZXJ0LmhzbC5yZ2IoW19oLCBfczIsIF9sXSkgfHwgWzAsIDAsIDBdLFxuICAgICAgICBfcmVmMTAgPSBfc2xpY2VkVG9BcnJheShfcmVmOSwgMyksXG4gICAgICAgIF9yID0gX3JlZjEwWzBdLFxuICAgICAgICBfZyA9IF9yZWYxMFsxXSxcbiAgICAgICAgX2IgPSBfcmVmMTBbMl07XG5cbiAgICByZXR1cm4gX3JlZjExID0ge1xuICAgICAgdmFsaWQ6IHZhbGlkLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAga2V5d29yZDogY29udmVydC5oc2wua2V5d29yZChbX2gsIF9zMiwgX2xdKSxcbiAgICAgIGNvbG9yU3BhY2U6IENvbG9yU3BhY2UuSFNMXG4gICAgfSwgX2RlZmluZVByb3BlcnR5KF9yZWYxMSwgQ29sb3JTcGFjZS5SR0IsIFwicmdiYShcIi5jb25jYXQoX3IsIFwiLCBcIikuY29uY2F0KF9nLCBcIiwgXCIpLmNvbmNhdChfYiwgXCIsIFwiKS5jb25jYXQoX2EsIFwiKVwiKSksIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTEsIENvbG9yU3BhY2UuSFNMLCB2YWx1ZSksIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTEsIENvbG9yU3BhY2UuSEVYLCBcIiNcIi5jb25jYXQoY29udmVydC5oc2wuaGV4KFtfaCwgX3MyLCBfbF0pLnRvTG93ZXJDYXNlKCkpKSwgX3JlZjExO1xuICB9XG5cbiAgdmFyIHBsYWluID0gdmFsdWUucmVwbGFjZSgnIycsICcnKTtcbiAgdmFyIHJnYiA9IGNvbnZlcnQua2V5d29yZC5yZ2IocGxhaW4pIHx8IGNvbnZlcnQuaGV4LnJnYihwbGFpbik7XG4gIHZhciBoc2wgPSBjb252ZXJ0LnJnYi5oc2wocmdiKTtcbiAgdmFyIG1hcHBlZCA9IHZhbHVlO1xuICBpZiAoL1teI2EtZjAtOV0vaS50ZXN0KHZhbHVlKSkgbWFwcGVkID0gcGxhaW47ZWxzZSBpZiAoSEVYX1JFR0VYUC50ZXN0KHZhbHVlKSkgbWFwcGVkID0gXCIjXCIuY29uY2F0KHBsYWluKTtcblxuICBpZiAobWFwcGVkLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgIHZhbGlkID0gSEVYX1JFR0VYUC50ZXN0KG1hcHBlZCk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnZlcnQua2V5d29yZC5oZXgobWFwcGVkKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB2YWxpZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfcmVmMTIgPSB7XG4gICAgdmFsaWQ6IHZhbGlkLFxuICAgIHZhbHVlOiBtYXBwZWQsXG4gICAga2V5d29yZDogY29udmVydC5yZ2Iua2V5d29yZChyZ2IpLFxuICAgIGNvbG9yU3BhY2U6IENvbG9yU3BhY2UuSEVYXG4gIH0sIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTIsIENvbG9yU3BhY2UuUkdCLCBcInJnYmEoXCIuY29uY2F0KHJnYlswXSwgXCIsIFwiKS5jb25jYXQocmdiWzFdLCBcIiwgXCIpLmNvbmNhdChyZ2JbMl0sIFwiLCAxKVwiKSksIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTIsIENvbG9yU3BhY2UuSFNMLCBcImhzbGEoXCIuY29uY2F0KGhzbFswXSwgXCIsIFwiKS5jb25jYXQoaHNsWzFdLCBcIiUsIFwiKS5jb25jYXQoaHNsWzJdLCBcIiUsIDEpXCIpKSwgX2RlZmluZVByb3BlcnR5KF9yZWYxMiwgQ29sb3JTcGFjZS5IRVgsIG1hcHBlZCksIF9yZWYxMjtcbn07XG5cbnZhciBnZXRSZWFsVmFsdWUgPSBmdW5jdGlvbiBnZXRSZWFsVmFsdWUodmFsdWUsIGNvbG9yLCBjb2xvclNwYWNlKSB7XG4gIGlmICghdmFsdWUgfHwgIShjb2xvciAhPT0gbnVsbCAmJiBjb2xvciAhPT0gdm9pZCAwICYmIGNvbG9yLnZhbGlkKSkgcmV0dXJuIGZhbGxiYWNrQ29sb3JbY29sb3JTcGFjZV07XG4gIGlmIChjb2xvclNwYWNlICE9PSBDb2xvclNwYWNlLkhFWCkgcmV0dXJuIChjb2xvciA9PT0gbnVsbCB8fCBjb2xvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29sb3JbY29sb3JTcGFjZV0pIHx8IGZhbGxiYWNrQ29sb3JbY29sb3JTcGFjZV07XG5cbiAgaWYgKCFjb2xvci5oZXguc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBcIiNcIi5jb25jYXQoY29udmVydC5rZXl3b3JkLmhleChjb2xvci5oZXgpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2tDb2xvci5oZXg7XG4gICAgfVxuICB9XG5cbiAgdmFyIHNob3J0ID0gY29sb3IuaGV4Lm1hdGNoKFNIT1JUSEVYX1JFR0VYUCk7XG4gIGlmICghc2hvcnQpIHJldHVybiBIRVhfUkVHRVhQLnRlc3QoY29sb3IuaGV4KSA/IGNvbG9yLmhleCA6IGZhbGxiYWNrQ29sb3IuaGV4O1xuXG4gIHZhciBfc2hvcnQkMSRzcGxpdCA9IHNob3J0WzFdLnNwbGl0KCcnKSxcbiAgICAgIF9zaG9ydCQxJHNwbGl0MiA9IF9zbGljZWRUb0FycmF5KF9zaG9ydCQxJHNwbGl0LCAzKSxcbiAgICAgIHIgPSBfc2hvcnQkMSRzcGxpdDJbMF0sXG4gICAgICBnID0gX3Nob3J0JDEkc3BsaXQyWzFdLFxuICAgICAgYiA9IF9zaG9ydCQxJHNwbGl0MlsyXTtcblxuICByZXR1cm4gXCIjXCIuY29uY2F0KHIpLmNvbmNhdChyKS5jb25jYXQoZykuY29uY2F0KGcpLmNvbmNhdChiKS5jb25jYXQoYik7XG59O1xuXG52YXIgdXNlQ29sb3JJbnB1dCA9IGZ1bmN0aW9uIHVzZUNvbG9ySW5wdXQoaW5pdGlhbFZhbHVlLCBvbkNoYW5nZSkge1xuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlIHx8ICcnKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgdmFsdWUgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0VmFsdWUgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBfdXNlU3RhdGUzID0gdXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBwYXJzZVZhbHVlKHZhbHVlKTtcbiAgfSksXG4gICAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgICBjb2xvciA9IF91c2VTdGF0ZTRbMF0sXG4gICAgICBzZXRDb2xvciA9IF91c2VTdGF0ZTRbMV07XG5cbiAgdmFyIF91c2VTdGF0ZTUgPSB1c2VTdGF0ZSgoY29sb3IgPT09IG51bGwgfHwgY29sb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbG9yLmNvbG9yU3BhY2UpIHx8IENvbG9yU3BhY2UuSEVYKSxcbiAgICAgIF91c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU1LCAyKSxcbiAgICAgIGNvbG9yU3BhY2UgPSBfdXNlU3RhdGU2WzBdLFxuICAgICAgc2V0Q29sb3JTcGFjZSA9IF91c2VTdGF0ZTZbMV07IC8vIFJlc2V0IHN0YXRlIHdoZW4gaW5pdGlhbFZhbHVlIGJlY29tZXMgdW5kZWZpbmVkICh3aGVuIHJlc2V0dGluZyBjb250cm9scylcblxuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGluaXRpYWxWYWx1ZSAhPT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgc2V0VmFsdWUoJycpO1xuICAgIHNldENvbG9yKHVuZGVmaW5lZCk7XG4gICAgc2V0Q29sb3JTcGFjZShDb2xvclNwYWNlLkhFWCk7XG4gIH0sIFtpbml0aWFsVmFsdWVdKTtcbiAgdmFyIHJlYWxWYWx1ZSA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRSZWFsVmFsdWUodmFsdWUsIGNvbG9yLCBjb2xvclNwYWNlKS50b0xvd2VyQ2FzZSgpO1xuICB9LCBbdmFsdWUsIGNvbG9yLCBjb2xvclNwYWNlXSk7XG4gIHZhciB1cGRhdGVWYWx1ZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICh1cGRhdGUpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VWYWx1ZSh1cGRhdGUpO1xuICAgIHNldFZhbHVlKChwYXJzZWQgPT09IG51bGwgfHwgcGFyc2VkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJzZWQudmFsdWUpIHx8IHVwZGF0ZSB8fCAnJyk7XG4gICAgaWYgKCFwYXJzZWQpIHJldHVybjtcbiAgICBzZXRDb2xvcihwYXJzZWQpO1xuICAgIHNldENvbG9yU3BhY2UocGFyc2VkLmNvbG9yU3BhY2UpO1xuICAgIG9uQ2hhbmdlKHBhcnNlZC52YWx1ZSk7XG4gIH0sIFtvbkNoYW5nZV0pO1xuICB2YXIgY3ljbGVDb2xvclNwYWNlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBuZXh0ID0gQ09MT1JfU1BBQ0VTLmluZGV4T2YoY29sb3JTcGFjZSkgKyAxO1xuICAgIGlmIChuZXh0ID49IENPTE9SX1NQQUNFUy5sZW5ndGgpIG5leHQgPSAwO1xuICAgIHNldENvbG9yU3BhY2UoQ09MT1JfU1BBQ0VTW25leHRdKTtcbiAgICB2YXIgdXBkYXRlID0gKGNvbG9yID09PSBudWxsIHx8IGNvbG9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb2xvcltDT0xPUl9TUEFDRVNbbmV4dF1dKSB8fCAnJztcbiAgICBzZXRWYWx1ZSh1cGRhdGUpO1xuICAgIG9uQ2hhbmdlKHVwZGF0ZSk7XG4gIH0sIFtjb2xvciwgY29sb3JTcGFjZSwgb25DaGFuZ2VdKTtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgcmVhbFZhbHVlOiByZWFsVmFsdWUsXG4gICAgdXBkYXRlVmFsdWU6IHVwZGF0ZVZhbHVlLFxuICAgIGNvbG9yOiBjb2xvcixcbiAgICBjb2xvclNwYWNlOiBjb2xvclNwYWNlLFxuICAgIGN5Y2xlQ29sb3JTcGFjZTogY3ljbGVDb2xvclNwYWNlXG4gIH07XG59O1xuXG52YXIgaWQgPSBmdW5jdGlvbiBpZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvXFxzKi8sICcnKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIHVzZVByZXNldHMgPSBmdW5jdGlvbiB1c2VQcmVzZXRzKHByZXNldENvbG9ycywgY3VycmVudENvbG9yLCBjb2xvclNwYWNlKSB7XG4gIHZhciBfdXNlU3RhdGU3ID0gdXNlU3RhdGUoY3VycmVudENvbG9yICE9PSBudWxsICYmIGN1cnJlbnRDb2xvciAhPT0gdm9pZCAwICYmIGN1cnJlbnRDb2xvci52YWxpZCA/IFtjdXJyZW50Q29sb3JdIDogW10pLFxuICAgICAgX3VzZVN0YXRlOCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTcsIDIpLFxuICAgICAgc2VsZWN0ZWRDb2xvcnMgPSBfdXNlU3RhdGU4WzBdLFxuICAgICAgc2V0U2VsZWN0ZWRDb2xvcnMgPSBfdXNlU3RhdGU4WzFdOyAvLyBSZXNldCBzdGF0ZSB3aGVuIGN1cnJlbnRDb2xvciBiZWNvbWVzIHVuZGVmaW5lZCAod2hlbiByZXNldHRpbmcgY29udHJvbHMpXG5cblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjdXJyZW50Q29sb3IgIT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIHNldFNlbGVjdGVkQ29sb3JzKFtdKTtcbiAgfSwgW2N1cnJlbnRDb2xvcl0pO1xuICB2YXIgcHJlc2V0cyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBpbml0aWFsUHJlc2V0cyA9IChwcmVzZXRDb2xvcnMgfHwgW10pLm1hcChmdW5jdGlvbiAocHJlc2V0KSB7XG4gICAgICBpZiAodHlwZW9mIHByZXNldCA9PT0gJ3N0cmluZycpIHJldHVybiBwYXJzZVZhbHVlKHByZXNldCk7XG4gICAgICBpZiAocHJlc2V0LnRpdGxlKSByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcGFyc2VWYWx1ZShwcmVzZXQuY29sb3IpLCB7XG4gICAgICAgIGtleXdvcmQ6IHByZXNldC50aXRsZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcGFyc2VWYWx1ZShwcmVzZXQuY29sb3IpO1xuICAgIH0pO1xuICAgIHJldHVybiBpbml0aWFsUHJlc2V0cy5jb25jYXQoc2VsZWN0ZWRDb2xvcnMpLmZpbHRlcihCb29sZWFuKS5zbGljZSgtMjcpO1xuICB9LCBbcHJlc2V0Q29sb3JzLCBzZWxlY3RlZENvbG9yc10pO1xuICB2YXIgYWRkUHJlc2V0ID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGNvbG9yKSB7XG4gICAgaWYgKCEoY29sb3IgIT09IG51bGwgJiYgY29sb3IgIT09IHZvaWQgMCAmJiBjb2xvci52YWxpZCkpIHJldHVybjtcbiAgICBpZiAocHJlc2V0cy5zb21lKGZ1bmN0aW9uIChwcmVzZXQpIHtcbiAgICAgIHJldHVybiBpZChwcmVzZXRbY29sb3JTcGFjZV0pID09PSBpZChjb2xvcltjb2xvclNwYWNlXSk7XG4gICAgfSkpIHJldHVybjtcbiAgICBzZXRTZWxlY3RlZENvbG9ycyhmdW5jdGlvbiAoYXJyKSB7XG4gICAgICByZXR1cm4gYXJyLmNvbmNhdChjb2xvcik7XG4gICAgfSk7XG4gIH0sIFtjb2xvclNwYWNlLCBwcmVzZXRzXSk7XG4gIHJldHVybiB7XG4gICAgcHJlc2V0czogcHJlc2V0cyxcbiAgICBhZGRQcmVzZXQ6IGFkZFByZXNldFxuICB9O1xufTtcblxuZXhwb3J0IHZhciBDb2xvckNvbnRyb2wgPSBmdW5jdGlvbiBDb2xvckNvbnRyb2woX3JlZjEzKSB7XG4gIHZhciBuYW1lID0gX3JlZjEzLm5hbWUsXG4gICAgICBpbml0aWFsVmFsdWUgPSBfcmVmMTMudmFsdWUsXG4gICAgICBvbkNoYW5nZSA9IF9yZWYxMy5vbkNoYW5nZSxcbiAgICAgIG9uRm9jdXMgPSBfcmVmMTMub25Gb2N1cyxcbiAgICAgIG9uQmx1ciA9IF9yZWYxMy5vbkJsdXIsXG4gICAgICBwcmVzZXRDb2xvcnMgPSBfcmVmMTMucHJlc2V0Q29sb3JzLFxuICAgICAgc3RhcnRPcGVuID0gX3JlZjEzLnN0YXJ0T3BlbjtcblxuICB2YXIgX3VzZUNvbG9ySW5wdXQgPSB1c2VDb2xvcklucHV0KGluaXRpYWxWYWx1ZSwgdGhyb3R0bGUob25DaGFuZ2UsIDIwMCkpLFxuICAgICAgdmFsdWUgPSBfdXNlQ29sb3JJbnB1dC52YWx1ZSxcbiAgICAgIHJlYWxWYWx1ZSA9IF91c2VDb2xvcklucHV0LnJlYWxWYWx1ZSxcbiAgICAgIHVwZGF0ZVZhbHVlID0gX3VzZUNvbG9ySW5wdXQudXBkYXRlVmFsdWUsXG4gICAgICBjb2xvciA9IF91c2VDb2xvcklucHV0LmNvbG9yLFxuICAgICAgY29sb3JTcGFjZSA9IF91c2VDb2xvcklucHV0LmNvbG9yU3BhY2UsXG4gICAgICBjeWNsZUNvbG9yU3BhY2UgPSBfdXNlQ29sb3JJbnB1dC5jeWNsZUNvbG9yU3BhY2U7XG5cbiAgdmFyIF91c2VQcmVzZXRzID0gdXNlUHJlc2V0cyhwcmVzZXRDb2xvcnMsIGNvbG9yLCBjb2xvclNwYWNlKSxcbiAgICAgIHByZXNldHMgPSBfdXNlUHJlc2V0cy5wcmVzZXRzLFxuICAgICAgYWRkUHJlc2V0ID0gX3VzZVByZXNldHMuYWRkUHJlc2V0O1xuXG4gIHZhciBQaWNrZXIgPSBDb2xvclBpY2tlcltjb2xvclNwYWNlXTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZXIsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFBpY2tlclRvb2x0aXAsIHtcbiAgICB0cmlnZ2VyOiBcImNsaWNrXCIsXG4gICAgc3RhcnRPcGVuOiBzdGFydE9wZW4sXG4gICAgY2xvc2VPbkNsaWNrOiB0cnVlLFxuICAgIG9uVmlzaWJpbGl0eUNoYW5nZTogZnVuY3Rpb24gb25WaXNpYmlsaXR5Q2hhbmdlKCkge1xuICAgICAgcmV0dXJuIGFkZFByZXNldChjb2xvcik7XG4gICAgfSxcbiAgICB0b29sdGlwOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwQ29udGVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGlja2VyLCB7XG4gICAgICBjb2xvcjogcmVhbFZhbHVlID09PSAndHJhbnNwYXJlbnQnID8gJyMwMDAwMDAnIDogcmVhbFZhbHVlLFxuICAgICAgb25DaGFuZ2U6IHVwZGF0ZVZhbHVlLFxuICAgICAgb25Gb2N1czogb25Gb2N1cyxcbiAgICAgIG9uQmx1cjogb25CbHVyXG4gICAgfSksIHByZXNldHMubGVuZ3RoID4gMCAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTd2F0Y2hlcywgbnVsbCwgcHJlc2V0cy5tYXAoZnVuY3Rpb24gKHByZXNldCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChXaXRoVG9vbHRpcCAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAsIHtcbiAgICAgICAga2V5OiBcIlwiLmNvbmNhdChwcmVzZXQudmFsdWUsIFwiLVwiKS5jb25jYXQoaW5kZXgpLFxuICAgICAgICBoYXNDaHJvbWU6IGZhbHNlLFxuICAgICAgICB0b29sdGlwOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChOb3RlLCB7XG4gICAgICAgICAgbm90ZTogcHJlc2V0LmtleXdvcmQgfHwgcHJlc2V0LnZhbHVlXG4gICAgICAgIH0pXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTd2F0Y2gsIHtcbiAgICAgICAgdmFsdWU6IHByZXNldFtjb2xvclNwYWNlXSxcbiAgICAgICAgYWN0aXZlOiBjb2xvciAmJiBpZChwcmVzZXRbY29sb3JTcGFjZV0pID09PSBpZChjb2xvcltjb2xvclNwYWNlXSksXG4gICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZVZhbHVlKHByZXNldC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KSkpXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFN3YXRjaCwge1xuICAgIHZhbHVlOiByZWFsVmFsdWUsXG4gICAgc3R5bGU6IHtcbiAgICAgIG1hcmdpbjogNFxuICAgIH1cbiAgfSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dCwge1xuICAgIGlkOiBnZXRDb250cm9sSWQobmFtZSksXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShlKSB7XG4gICAgICByZXR1cm4gdXBkYXRlVmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgb25Gb2N1czogZnVuY3Rpb24gb25Gb2N1cyhlKSB7XG4gICAgICByZXR1cm4gZS50YXJnZXQuc2VsZWN0KCk7XG4gICAgfSxcbiAgICBwbGFjZWhvbGRlcjogXCJDaG9vc2UgY29sb3IuLi5cIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlSWNvbiwge1xuICAgIGljb246IFwibWFya3VwXCIsXG4gICAgb25DbGljazogY3ljbGVDb2xvclNwYWNlXG4gIH0pKTtcbn07XG5Db2xvckNvbnRyb2wuZGlzcGxheU5hbWUgPSBcIkNvbG9yQ29udHJvbFwiO1xuZXhwb3J0IGRlZmF1bHQgQ29sb3JDb250cm9sOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1014\n')},1039:function(module,exports,__webpack_require__){eval("/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = __webpack_require__(1083);\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L2NvbnZlcnNpb25zLmpzP2QyNTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLG9CQUFvQixtQkFBTyxDQUFDLElBQVk7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sMkJBQTJCO0FBQ2xDLFFBQVEsNEJBQTRCO0FBQ3BDLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sNkJBQTZCO0FBQ3BDLFdBQVcsaUNBQWlDO0FBQzVDLFVBQVUsZ0NBQWdDO0FBQzFDLFdBQVcsaUNBQWlDO0FBQzVDLE9BQU8scUNBQXFDO0FBQzVDLFNBQVMsMkNBQTJDO0FBQ3BELFFBQVE7QUFDUjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSxpQkFBaUI7QUFDekI7QUFDQTtBQUNBLG9EQUFvRCxnQkFBZ0I7QUFDcEUsa0RBQWtELGNBQWM7QUFDaEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFFBQVEsU0FBUztBQUNqQyxnQkFBZ0IsUUFBUSxTQUFTO0FBQ2pDLGlCQUFpQixPQUFPLFFBQVE7QUFDaEMsaUJBQWlCLE9BQU8sUUFBUTtBQUNoQyxnQkFBZ0IsU0FBUyxPQUFPO0FBQ2hDLGdCQUFnQixTQUFTLE9BQU87QUFDaEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUVBQXlFOztBQUV6RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaURBQWlELEVBQUUsVUFBVSxFQUFFO0FBQy9EO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsYUFBYSxhQUFhO0FBQ3pDO0FBQ0EsZUFBZSxhQUFhLGFBQWE7QUFDekM7QUFDQSxlQUFlLGFBQWEsYUFBYTtBQUN6QztBQUNBLGVBQWUsYUFBYSxhQUFhO0FBQ3pDO0FBQ0EsZUFBZSxhQUFhLGFBQWE7QUFDekM7QUFDQSxlQUFlLGFBQWE7QUFDNUI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjEwMzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBNSVQgbGljZW5zZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbWl4ZWQtb3BlcmF0b3JzICovXG5jb25zdCBjc3NLZXl3b3JkcyA9IHJlcXVpcmUoJ2NvbG9yLW5hbWUnKTtcblxuLy8gTk9URTogY29udmVyc2lvbnMgc2hvdWxkIG9ubHkgcmV0dXJuIHByaW1pdGl2ZSB2YWx1ZXMgKGkuZS4gYXJyYXlzLCBvclxuLy8gICAgICAgdmFsdWVzIHRoYXQgZ2l2ZSBjb3JyZWN0IGB0eXBlb2ZgIHJlc3VsdHMpLlxuLy8gICAgICAgZG8gbm90IHVzZSBib3ggdmFsdWVzIHR5cGVzIChpLmUuIE51bWJlcigpLCBTdHJpbmcoKSwgZXRjLilcblxuY29uc3QgcmV2ZXJzZUtleXdvcmRzID0ge307XG5mb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjc3NLZXl3b3JkcykpIHtcblx0cmV2ZXJzZUtleXdvcmRzW2Nzc0tleXdvcmRzW2tleV1dID0ga2V5O1xufVxuXG5jb25zdCBjb252ZXJ0ID0ge1xuXHRyZ2I6IHtjaGFubmVsczogMywgbGFiZWxzOiAncmdiJ30sXG5cdGhzbDoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdoc2wnfSxcblx0aHN2OiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2hzdid9LFxuXHRod2I6IHtjaGFubmVsczogMywgbGFiZWxzOiAnaHdiJ30sXG5cdGNteWs6IHtjaGFubmVsczogNCwgbGFiZWxzOiAnY215ayd9LFxuXHR4eXo6IHtjaGFubmVsczogMywgbGFiZWxzOiAneHl6J30sXG5cdGxhYjoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdsYWInfSxcblx0bGNoOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2xjaCd9LFxuXHRoZXg6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2hleCddfSxcblx0a2V5d29yZDoge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsna2V5d29yZCddfSxcblx0YW5zaTE2OiB7Y2hhbm5lbHM6IDEsIGxhYmVsczogWydhbnNpMTYnXX0sXG5cdGFuc2kyNTY6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2Fuc2kyNTYnXX0sXG5cdGhjZzoge2NoYW5uZWxzOiAzLCBsYWJlbHM6IFsnaCcsICdjJywgJ2cnXX0sXG5cdGFwcGxlOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogWydyMTYnLCAnZzE2JywgJ2IxNiddfSxcblx0Z3JheToge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsnZ3JheSddfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0O1xuXG4vLyBIaWRlIC5jaGFubmVscyBhbmQgLmxhYmVscyBwcm9wZXJ0aWVzXG5mb3IgKGNvbnN0IG1vZGVsIG9mIE9iamVjdC5rZXlzKGNvbnZlcnQpKSB7XG5cdGlmICghKCdjaGFubmVscycgaW4gY29udmVydFttb2RlbF0pKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGNoYW5uZWxzIHByb3BlcnR5OiAnICsgbW9kZWwpO1xuXHR9XG5cblx0aWYgKCEoJ2xhYmVscycgaW4gY29udmVydFttb2RlbF0pKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGNoYW5uZWwgbGFiZWxzIHByb3BlcnR5OiAnICsgbW9kZWwpO1xuXHR9XG5cblx0aWYgKGNvbnZlcnRbbW9kZWxdLmxhYmVscy5sZW5ndGggIT09IGNvbnZlcnRbbW9kZWxdLmNoYW5uZWxzKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdjaGFubmVsIGFuZCBsYWJlbCBjb3VudHMgbWlzbWF0Y2g6ICcgKyBtb2RlbCk7XG5cdH1cblxuXHRjb25zdCB7Y2hhbm5lbHMsIGxhYmVsc30gPSBjb252ZXJ0W21vZGVsXTtcblx0ZGVsZXRlIGNvbnZlcnRbbW9kZWxdLmNoYW5uZWxzO1xuXHRkZWxldGUgY29udmVydFttb2RlbF0ubGFiZWxzO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFttb2RlbF0sICdjaGFubmVscycsIHt2YWx1ZTogY2hhbm5lbHN9KTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbbW9kZWxdLCAnbGFiZWxzJywge3ZhbHVlOiBsYWJlbHN9KTtcbn1cblxuY29udmVydC5yZ2IuaHNsID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXHRjb25zdCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcblx0Y29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG5cdGNvbnN0IGRlbHRhID0gbWF4IC0gbWluO1xuXHRsZXQgaDtcblx0bGV0IHM7XG5cblx0aWYgKG1heCA9PT0gbWluKSB7XG5cdFx0aCA9IDA7XG5cdH0gZWxzZSBpZiAociA9PT0gbWF4KSB7XG5cdFx0aCA9IChnIC0gYikgLyBkZWx0YTtcblx0fSBlbHNlIGlmIChnID09PSBtYXgpIHtcblx0XHRoID0gMiArIChiIC0gcikgLyBkZWx0YTtcblx0fSBlbHNlIGlmIChiID09PSBtYXgpIHtcblx0XHRoID0gNCArIChyIC0gZykgLyBkZWx0YTtcblx0fVxuXG5cdGggPSBNYXRoLm1pbihoICogNjAsIDM2MCk7XG5cblx0aWYgKGggPCAwKSB7XG5cdFx0aCArPSAzNjA7XG5cdH1cblxuXHRjb25zdCBsID0gKG1pbiArIG1heCkgLyAyO1xuXG5cdGlmIChtYXggPT09IG1pbikge1xuXHRcdHMgPSAwO1xuXHR9IGVsc2UgaWYgKGwgPD0gMC41KSB7XG5cdFx0cyA9IGRlbHRhIC8gKG1heCArIG1pbik7XG5cdH0gZWxzZSB7XG5cdFx0cyA9IGRlbHRhIC8gKDIgLSBtYXggLSBtaW4pO1xuXHR9XG5cblx0cmV0dXJuIFtoLCBzICogMTAwLCBsICogMTAwXTtcbn07XG5cbmNvbnZlcnQucmdiLmhzdiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0bGV0IHJkaWY7XG5cdGxldCBnZGlmO1xuXHRsZXQgYmRpZjtcblx0bGV0IGg7XG5cdGxldCBzO1xuXG5cdGNvbnN0IHIgPSByZ2JbMF0gLyAyNTU7XG5cdGNvbnN0IGcgPSByZ2JbMV0gLyAyNTU7XG5cdGNvbnN0IGIgPSByZ2JbMl0gLyAyNTU7XG5cdGNvbnN0IHYgPSBNYXRoLm1heChyLCBnLCBiKTtcblx0Y29uc3QgZGlmZiA9IHYgLSBNYXRoLm1pbihyLCBnLCBiKTtcblx0Y29uc3QgZGlmZmMgPSBmdW5jdGlvbiAoYykge1xuXHRcdHJldHVybiAodiAtIGMpIC8gNiAvIGRpZmYgKyAxIC8gMjtcblx0fTtcblxuXHRpZiAoZGlmZiA9PT0gMCkge1xuXHRcdGggPSAwO1xuXHRcdHMgPSAwO1xuXHR9IGVsc2Uge1xuXHRcdHMgPSBkaWZmIC8gdjtcblx0XHRyZGlmID0gZGlmZmMocik7XG5cdFx0Z2RpZiA9IGRpZmZjKGcpO1xuXHRcdGJkaWYgPSBkaWZmYyhiKTtcblxuXHRcdGlmIChyID09PSB2KSB7XG5cdFx0XHRoID0gYmRpZiAtIGdkaWY7XG5cdFx0fSBlbHNlIGlmIChnID09PSB2KSB7XG5cdFx0XHRoID0gKDEgLyAzKSArIHJkaWYgLSBiZGlmO1xuXHRcdH0gZWxzZSBpZiAoYiA9PT0gdikge1xuXHRcdFx0aCA9ICgyIC8gMykgKyBnZGlmIC0gcmRpZjtcblx0XHR9XG5cblx0XHRpZiAoaCA8IDApIHtcblx0XHRcdGggKz0gMTtcblx0XHR9IGVsc2UgaWYgKGggPiAxKSB7XG5cdFx0XHRoIC09IDE7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIFtcblx0XHRoICogMzYwLFxuXHRcdHMgKiAxMDAsXG5cdFx0diAqIDEwMFxuXHRdO1xufTtcblxuY29udmVydC5yZ2IuaHdiID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdO1xuXHRjb25zdCBnID0gcmdiWzFdO1xuXHRsZXQgYiA9IHJnYlsyXTtcblx0Y29uc3QgaCA9IGNvbnZlcnQucmdiLmhzbChyZ2IpWzBdO1xuXHRjb25zdCB3ID0gMSAvIDI1NSAqIE1hdGgubWluKHIsIE1hdGgubWluKGcsIGIpKTtcblxuXHRiID0gMSAtIDEgLyAyNTUgKiBNYXRoLm1heChyLCBNYXRoLm1heChnLCBiKSk7XG5cblx0cmV0dXJuIFtoLCB3ICogMTAwLCBiICogMTAwXTtcbn07XG5cbmNvbnZlcnQucmdiLmNteWsgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHIgPSByZ2JbMF0gLyAyNTU7XG5cdGNvbnN0IGcgPSByZ2JbMV0gLyAyNTU7XG5cdGNvbnN0IGIgPSByZ2JbMl0gLyAyNTU7XG5cblx0Y29uc3QgayA9IE1hdGgubWluKDEgLSByLCAxIC0gZywgMSAtIGIpO1xuXHRjb25zdCBjID0gKDEgLSByIC0gaykgLyAoMSAtIGspIHx8IDA7XG5cdGNvbnN0IG0gPSAoMSAtIGcgLSBrKSAvICgxIC0gaykgfHwgMDtcblx0Y29uc3QgeSA9ICgxIC0gYiAtIGspIC8gKDEgLSBrKSB8fCAwO1xuXG5cdHJldHVybiBbYyAqIDEwMCwgbSAqIDEwMCwgeSAqIDEwMCwgayAqIDEwMF07XG59O1xuXG5mdW5jdGlvbiBjb21wYXJhdGl2ZURpc3RhbmNlKHgsIHkpIHtcblx0Lypcblx0XHRTZWUgaHR0cHM6Ly9lbi5tLndpa2lwZWRpYS5vcmcvd2lraS9FdWNsaWRlYW5fZGlzdGFuY2UjU3F1YXJlZF9FdWNsaWRlYW5fZGlzdGFuY2Vcblx0Ki9cblx0cmV0dXJuIChcblx0XHQoKHhbMF0gLSB5WzBdKSAqKiAyKSArXG5cdFx0KCh4WzFdIC0geVsxXSkgKiogMikgK1xuXHRcdCgoeFsyXSAtIHlbMl0pICoqIDIpXG5cdCk7XG59XG5cbmNvbnZlcnQucmdiLmtleXdvcmQgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHJldmVyc2VkID0gcmV2ZXJzZUtleXdvcmRzW3JnYl07XG5cdGlmIChyZXZlcnNlZCkge1xuXHRcdHJldHVybiByZXZlcnNlZDtcblx0fVxuXG5cdGxldCBjdXJyZW50Q2xvc2VzdERpc3RhbmNlID0gSW5maW5pdHk7XG5cdGxldCBjdXJyZW50Q2xvc2VzdEtleXdvcmQ7XG5cblx0Zm9yIChjb25zdCBrZXl3b3JkIG9mIE9iamVjdC5rZXlzKGNzc0tleXdvcmRzKSkge1xuXHRcdGNvbnN0IHZhbHVlID0gY3NzS2V5d29yZHNba2V5d29yZF07XG5cblx0XHQvLyBDb21wdXRlIGNvbXBhcmF0aXZlIGRpc3RhbmNlXG5cdFx0Y29uc3QgZGlzdGFuY2UgPSBjb21wYXJhdGl2ZURpc3RhbmNlKHJnYiwgdmFsdWUpO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgaXRzIGxlc3MsIGlmIHNvIHNldCBhcyBjbG9zZXN0XG5cdFx0aWYgKGRpc3RhbmNlIDwgY3VycmVudENsb3Nlc3REaXN0YW5jZSkge1xuXHRcdFx0Y3VycmVudENsb3Nlc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xuXHRcdFx0Y3VycmVudENsb3Nlc3RLZXl3b3JkID0ga2V5d29yZDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gY3VycmVudENsb3Nlc3RLZXl3b3JkO1xufTtcblxuY29udmVydC5rZXl3b3JkLnJnYiA9IGZ1bmN0aW9uIChrZXl3b3JkKSB7XG5cdHJldHVybiBjc3NLZXl3b3Jkc1trZXl3b3JkXTtcbn07XG5cbmNvbnZlcnQucmdiLnh5eiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0bGV0IHIgPSByZ2JbMF0gLyAyNTU7XG5cdGxldCBnID0gcmdiWzFdIC8gMjU1O1xuXHRsZXQgYiA9IHJnYlsyXSAvIDI1NTtcblxuXHQvLyBBc3N1bWUgc1JHQlxuXHRyID0gciA+IDAuMDQwNDUgPyAoKChyICsgMC4wNTUpIC8gMS4wNTUpICoqIDIuNCkgOiAociAvIDEyLjkyKTtcblx0ZyA9IGcgPiAwLjA0MDQ1ID8gKCgoZyArIDAuMDU1KSAvIDEuMDU1KSAqKiAyLjQpIDogKGcgLyAxMi45Mik7XG5cdGIgPSBiID4gMC4wNDA0NSA/ICgoKGIgKyAwLjA1NSkgLyAxLjA1NSkgKiogMi40KSA6IChiIC8gMTIuOTIpO1xuXG5cdGNvbnN0IHggPSAociAqIDAuNDEyNCkgKyAoZyAqIDAuMzU3NikgKyAoYiAqIDAuMTgwNSk7XG5cdGNvbnN0IHkgPSAociAqIDAuMjEyNikgKyAoZyAqIDAuNzE1MikgKyAoYiAqIDAuMDcyMik7XG5cdGNvbnN0IHogPSAociAqIDAuMDE5MykgKyAoZyAqIDAuMTE5MikgKyAoYiAqIDAuOTUwNSk7XG5cblx0cmV0dXJuIFt4ICogMTAwLCB5ICogMTAwLCB6ICogMTAwXTtcbn07XG5cbmNvbnZlcnQucmdiLmxhYiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgeHl6ID0gY29udmVydC5yZ2IueHl6KHJnYik7XG5cdGxldCB4ID0geHl6WzBdO1xuXHRsZXQgeSA9IHh5elsxXTtcblx0bGV0IHogPSB4eXpbMl07XG5cblx0eCAvPSA5NS4wNDc7XG5cdHkgLz0gMTAwO1xuXHR6IC89IDEwOC44ODM7XG5cblx0eCA9IHggPiAwLjAwODg1NiA/ICh4ICoqICgxIC8gMykpIDogKDcuNzg3ICogeCkgKyAoMTYgLyAxMTYpO1xuXHR5ID0geSA+IDAuMDA4ODU2ID8gKHkgKiogKDEgLyAzKSkgOiAoNy43ODcgKiB5KSArICgxNiAvIDExNik7XG5cdHogPSB6ID4gMC4wMDg4NTYgPyAoeiAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHopICsgKDE2IC8gMTE2KTtcblxuXHRjb25zdCBsID0gKDExNiAqIHkpIC0gMTY7XG5cdGNvbnN0IGEgPSA1MDAgKiAoeCAtIHkpO1xuXHRjb25zdCBiID0gMjAwICogKHkgLSB6KTtcblxuXHRyZXR1cm4gW2wsIGEsIGJdO1xufTtcblxuY29udmVydC5oc2wucmdiID0gZnVuY3Rpb24gKGhzbCkge1xuXHRjb25zdCBoID0gaHNsWzBdIC8gMzYwO1xuXHRjb25zdCBzID0gaHNsWzFdIC8gMTAwO1xuXHRjb25zdCBsID0gaHNsWzJdIC8gMTAwO1xuXHRsZXQgdDI7XG5cdGxldCB0Mztcblx0bGV0IHZhbDtcblxuXHRpZiAocyA9PT0gMCkge1xuXHRcdHZhbCA9IGwgKiAyNTU7XG5cdFx0cmV0dXJuIFt2YWwsIHZhbCwgdmFsXTtcblx0fVxuXG5cdGlmIChsIDwgMC41KSB7XG5cdFx0dDIgPSBsICogKDEgKyBzKTtcblx0fSBlbHNlIHtcblx0XHR0MiA9IGwgKyBzIC0gbCAqIHM7XG5cdH1cblxuXHRjb25zdCB0MSA9IDIgKiBsIC0gdDI7XG5cblx0Y29uc3QgcmdiID0gWzAsIDAsIDBdO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuXHRcdHQzID0gaCArIDEgLyAzICogLShpIC0gMSk7XG5cdFx0aWYgKHQzIDwgMCkge1xuXHRcdFx0dDMrKztcblx0XHR9XG5cblx0XHRpZiAodDMgPiAxKSB7XG5cdFx0XHR0My0tO1xuXHRcdH1cblxuXHRcdGlmICg2ICogdDMgPCAxKSB7XG5cdFx0XHR2YWwgPSB0MSArICh0MiAtIHQxKSAqIDYgKiB0Mztcblx0XHR9IGVsc2UgaWYgKDIgKiB0MyA8IDEpIHtcblx0XHRcdHZhbCA9IHQyO1xuXHRcdH0gZWxzZSBpZiAoMyAqIHQzIDwgMikge1xuXHRcdFx0dmFsID0gdDEgKyAodDIgLSB0MSkgKiAoMiAvIDMgLSB0MykgKiA2O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YWwgPSB0MTtcblx0XHR9XG5cblx0XHRyZ2JbaV0gPSB2YWwgKiAyNTU7XG5cdH1cblxuXHRyZXR1cm4gcmdiO1xufTtcblxuY29udmVydC5oc2wuaHN2ID0gZnVuY3Rpb24gKGhzbCkge1xuXHRjb25zdCBoID0gaHNsWzBdO1xuXHRsZXQgcyA9IGhzbFsxXSAvIDEwMDtcblx0bGV0IGwgPSBoc2xbMl0gLyAxMDA7XG5cdGxldCBzbWluID0gcztcblx0Y29uc3QgbG1pbiA9IE1hdGgubWF4KGwsIDAuMDEpO1xuXG5cdGwgKj0gMjtcblx0cyAqPSAobCA8PSAxKSA/IGwgOiAyIC0gbDtcblx0c21pbiAqPSBsbWluIDw9IDEgPyBsbWluIDogMiAtIGxtaW47XG5cdGNvbnN0IHYgPSAobCArIHMpIC8gMjtcblx0Y29uc3Qgc3YgPSBsID09PSAwID8gKDIgKiBzbWluKSAvIChsbWluICsgc21pbikgOiAoMiAqIHMpIC8gKGwgKyBzKTtcblxuXHRyZXR1cm4gW2gsIHN2ICogMTAwLCB2ICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaHN2LnJnYiA9IGZ1bmN0aW9uIChoc3YpIHtcblx0Y29uc3QgaCA9IGhzdlswXSAvIDYwO1xuXHRjb25zdCBzID0gaHN2WzFdIC8gMTAwO1xuXHRsZXQgdiA9IGhzdlsyXSAvIDEwMDtcblx0Y29uc3QgaGkgPSBNYXRoLmZsb29yKGgpICUgNjtcblxuXHRjb25zdCBmID0gaCAtIE1hdGguZmxvb3IoaCk7XG5cdGNvbnN0IHAgPSAyNTUgKiB2ICogKDEgLSBzKTtcblx0Y29uc3QgcSA9IDI1NSAqIHYgKiAoMSAtIChzICogZikpO1xuXHRjb25zdCB0ID0gMjU1ICogdiAqICgxIC0gKHMgKiAoMSAtIGYpKSk7XG5cdHYgKj0gMjU1O1xuXG5cdHN3aXRjaCAoaGkpIHtcblx0XHRjYXNlIDA6XG5cdFx0XHRyZXR1cm4gW3YsIHQsIHBdO1xuXHRcdGNhc2UgMTpcblx0XHRcdHJldHVybiBbcSwgdiwgcF07XG5cdFx0Y2FzZSAyOlxuXHRcdFx0cmV0dXJuIFtwLCB2LCB0XTtcblx0XHRjYXNlIDM6XG5cdFx0XHRyZXR1cm4gW3AsIHEsIHZdO1xuXHRcdGNhc2UgNDpcblx0XHRcdHJldHVybiBbdCwgcCwgdl07XG5cdFx0Y2FzZSA1OlxuXHRcdFx0cmV0dXJuIFt2LCBwLCBxXTtcblx0fVxufTtcblxuY29udmVydC5oc3YuaHNsID0gZnVuY3Rpb24gKGhzdikge1xuXHRjb25zdCBoID0gaHN2WzBdO1xuXHRjb25zdCBzID0gaHN2WzFdIC8gMTAwO1xuXHRjb25zdCB2ID0gaHN2WzJdIC8gMTAwO1xuXHRjb25zdCB2bWluID0gTWF0aC5tYXgodiwgMC4wMSk7XG5cdGxldCBzbDtcblx0bGV0IGw7XG5cblx0bCA9ICgyIC0gcykgKiB2O1xuXHRjb25zdCBsbWluID0gKDIgLSBzKSAqIHZtaW47XG5cdHNsID0gcyAqIHZtaW47XG5cdHNsIC89IChsbWluIDw9IDEpID8gbG1pbiA6IDIgLSBsbWluO1xuXHRzbCA9IHNsIHx8IDA7XG5cdGwgLz0gMjtcblxuXHRyZXR1cm4gW2gsIHNsICogMTAwLCBsICogMTAwXTtcbn07XG5cbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1jb2xvci8jaHdiLXRvLXJnYlxuY29udmVydC5od2IucmdiID0gZnVuY3Rpb24gKGh3Yikge1xuXHRjb25zdCBoID0gaHdiWzBdIC8gMzYwO1xuXHRsZXQgd2ggPSBod2JbMV0gLyAxMDA7XG5cdGxldCBibCA9IGh3YlsyXSAvIDEwMDtcblx0Y29uc3QgcmF0aW8gPSB3aCArIGJsO1xuXHRsZXQgZjtcblxuXHQvLyBXaCArIGJsIGNhbnQgYmUgPiAxXG5cdGlmIChyYXRpbyA+IDEpIHtcblx0XHR3aCAvPSByYXRpbztcblx0XHRibCAvPSByYXRpbztcblx0fVxuXG5cdGNvbnN0IGkgPSBNYXRoLmZsb29yKDYgKiBoKTtcblx0Y29uc3QgdiA9IDEgLSBibDtcblx0ZiA9IDYgKiBoIC0gaTtcblxuXHRpZiAoKGkgJiAweDAxKSAhPT0gMCkge1xuXHRcdGYgPSAxIC0gZjtcblx0fVxuXG5cdGNvbnN0IG4gPSB3aCArIGYgKiAodiAtIHdoKTsgLy8gTGluZWFyIGludGVycG9sYXRpb25cblxuXHRsZXQgcjtcblx0bGV0IGc7XG5cdGxldCBiO1xuXHQvKiBlc2xpbnQtZGlzYWJsZSBtYXgtc3RhdGVtZW50cy1wZXItbGluZSxuby1tdWx0aS1zcGFjZXMgKi9cblx0c3dpdGNoIChpKSB7XG5cdFx0ZGVmYXVsdDpcblx0XHRjYXNlIDY6XG5cdFx0Y2FzZSAwOiByID0gdjsgIGcgPSBuOyAgYiA9IHdoOyBicmVhaztcblx0XHRjYXNlIDE6IHIgPSBuOyAgZyA9IHY7ICBiID0gd2g7IGJyZWFrO1xuXHRcdGNhc2UgMjogciA9IHdoOyBnID0gdjsgIGIgPSBuOyBicmVhaztcblx0XHRjYXNlIDM6IHIgPSB3aDsgZyA9IG47ICBiID0gdjsgYnJlYWs7XG5cdFx0Y2FzZSA0OiByID0gbjsgIGcgPSB3aDsgYiA9IHY7IGJyZWFrO1xuXHRcdGNhc2UgNTogciA9IHY7ICBnID0gd2g7IGIgPSBuOyBicmVhaztcblx0fVxuXHQvKiBlc2xpbnQtZW5hYmxlIG1heC1zdGF0ZW1lbnRzLXBlci1saW5lLG5vLW11bHRpLXNwYWNlcyAqL1xuXG5cdHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG59O1xuXG5jb252ZXJ0LmNteWsucmdiID0gZnVuY3Rpb24gKGNteWspIHtcblx0Y29uc3QgYyA9IGNteWtbMF0gLyAxMDA7XG5cdGNvbnN0IG0gPSBjbXlrWzFdIC8gMTAwO1xuXHRjb25zdCB5ID0gY215a1syXSAvIDEwMDtcblx0Y29uc3QgayA9IGNteWtbM10gLyAxMDA7XG5cblx0Y29uc3QgciA9IDEgLSBNYXRoLm1pbigxLCBjICogKDEgLSBrKSArIGspO1xuXHRjb25zdCBnID0gMSAtIE1hdGgubWluKDEsIG0gKiAoMSAtIGspICsgayk7XG5cdGNvbnN0IGIgPSAxIC0gTWF0aC5taW4oMSwgeSAqICgxIC0gaykgKyBrKTtcblxuXHRyZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdO1xufTtcblxuY29udmVydC54eXoucmdiID0gZnVuY3Rpb24gKHh5eikge1xuXHRjb25zdCB4ID0geHl6WzBdIC8gMTAwO1xuXHRjb25zdCB5ID0geHl6WzFdIC8gMTAwO1xuXHRjb25zdCB6ID0geHl6WzJdIC8gMTAwO1xuXHRsZXQgcjtcblx0bGV0IGc7XG5cdGxldCBiO1xuXG5cdHIgPSAoeCAqIDMuMjQwNikgKyAoeSAqIC0xLjUzNzIpICsgKHogKiAtMC40OTg2KTtcblx0ZyA9ICh4ICogLTAuOTY4OSkgKyAoeSAqIDEuODc1OCkgKyAoeiAqIDAuMDQxNSk7XG5cdGIgPSAoeCAqIDAuMDU1NykgKyAoeSAqIC0wLjIwNDApICsgKHogKiAxLjA1NzApO1xuXG5cdC8vIEFzc3VtZSBzUkdCXG5cdHIgPSByID4gMC4wMDMxMzA4XG5cdFx0PyAoKDEuMDU1ICogKHIgKiogKDEuMCAvIDIuNCkpKSAtIDAuMDU1KVxuXHRcdDogciAqIDEyLjkyO1xuXG5cdGcgPSBnID4gMC4wMDMxMzA4XG5cdFx0PyAoKDEuMDU1ICogKGcgKiogKDEuMCAvIDIuNCkpKSAtIDAuMDU1KVxuXHRcdDogZyAqIDEyLjkyO1xuXG5cdGIgPSBiID4gMC4wMDMxMzA4XG5cdFx0PyAoKDEuMDU1ICogKGIgKiogKDEuMCAvIDIuNCkpKSAtIDAuMDU1KVxuXHRcdDogYiAqIDEyLjkyO1xuXG5cdHIgPSBNYXRoLm1pbihNYXRoLm1heCgwLCByKSwgMSk7XG5cdGcgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBnKSwgMSk7XG5cdGIgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBiKSwgMSk7XG5cblx0cmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XTtcbn07XG5cbmNvbnZlcnQueHl6LmxhYiA9IGZ1bmN0aW9uICh4eXopIHtcblx0bGV0IHggPSB4eXpbMF07XG5cdGxldCB5ID0geHl6WzFdO1xuXHRsZXQgeiA9IHh5elsyXTtcblxuXHR4IC89IDk1LjA0Nztcblx0eSAvPSAxMDA7XG5cdHogLz0gMTA4Ljg4MztcblxuXHR4ID0geCA+IDAuMDA4ODU2ID8gKHggKiogKDEgLyAzKSkgOiAoNy43ODcgKiB4KSArICgxNiAvIDExNik7XG5cdHkgPSB5ID4gMC4wMDg4NTYgPyAoeSAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHkpICsgKDE2IC8gMTE2KTtcblx0eiA9IHogPiAwLjAwODg1NiA/ICh6ICoqICgxIC8gMykpIDogKDcuNzg3ICogeikgKyAoMTYgLyAxMTYpO1xuXG5cdGNvbnN0IGwgPSAoMTE2ICogeSkgLSAxNjtcblx0Y29uc3QgYSA9IDUwMCAqICh4IC0geSk7XG5cdGNvbnN0IGIgPSAyMDAgKiAoeSAtIHopO1xuXG5cdHJldHVybiBbbCwgYSwgYl07XG59O1xuXG5jb252ZXJ0LmxhYi54eXogPSBmdW5jdGlvbiAobGFiKSB7XG5cdGNvbnN0IGwgPSBsYWJbMF07XG5cdGNvbnN0IGEgPSBsYWJbMV07XG5cdGNvbnN0IGIgPSBsYWJbMl07XG5cdGxldCB4O1xuXHRsZXQgeTtcblx0bGV0IHo7XG5cblx0eSA9IChsICsgMTYpIC8gMTE2O1xuXHR4ID0gYSAvIDUwMCArIHk7XG5cdHogPSB5IC0gYiAvIDIwMDtcblxuXHRjb25zdCB5MiA9IHkgKiogMztcblx0Y29uc3QgeDIgPSB4ICoqIDM7XG5cdGNvbnN0IHoyID0geiAqKiAzO1xuXHR5ID0geTIgPiAwLjAwODg1NiA/IHkyIDogKHkgLSAxNiAvIDExNikgLyA3Ljc4Nztcblx0eCA9IHgyID4gMC4wMDg4NTYgPyB4MiA6ICh4IC0gMTYgLyAxMTYpIC8gNy43ODc7XG5cdHogPSB6MiA+IDAuMDA4ODU2ID8gejIgOiAoeiAtIDE2IC8gMTE2KSAvIDcuNzg3O1xuXG5cdHggKj0gOTUuMDQ3O1xuXHR5ICo9IDEwMDtcblx0eiAqPSAxMDguODgzO1xuXG5cdHJldHVybiBbeCwgeSwgel07XG59O1xuXG5jb252ZXJ0LmxhYi5sY2ggPSBmdW5jdGlvbiAobGFiKSB7XG5cdGNvbnN0IGwgPSBsYWJbMF07XG5cdGNvbnN0IGEgPSBsYWJbMV07XG5cdGNvbnN0IGIgPSBsYWJbMl07XG5cdGxldCBoO1xuXG5cdGNvbnN0IGhyID0gTWF0aC5hdGFuMihiLCBhKTtcblx0aCA9IGhyICogMzYwIC8gMiAvIE1hdGguUEk7XG5cblx0aWYgKGggPCAwKSB7XG5cdFx0aCArPSAzNjA7XG5cdH1cblxuXHRjb25zdCBjID0gTWF0aC5zcXJ0KGEgKiBhICsgYiAqIGIpO1xuXG5cdHJldHVybiBbbCwgYywgaF07XG59O1xuXG5jb252ZXJ0LmxjaC5sYWIgPSBmdW5jdGlvbiAobGNoKSB7XG5cdGNvbnN0IGwgPSBsY2hbMF07XG5cdGNvbnN0IGMgPSBsY2hbMV07XG5cdGNvbnN0IGggPSBsY2hbMl07XG5cblx0Y29uc3QgaHIgPSBoIC8gMzYwICogMiAqIE1hdGguUEk7XG5cdGNvbnN0IGEgPSBjICogTWF0aC5jb3MoaHIpO1xuXHRjb25zdCBiID0gYyAqIE1hdGguc2luKGhyKTtcblxuXHRyZXR1cm4gW2wsIGEsIGJdO1xufTtcblxuY29udmVydC5yZ2IuYW5zaTE2ID0gZnVuY3Rpb24gKGFyZ3MsIHNhdHVyYXRpb24gPSBudWxsKSB7XG5cdGNvbnN0IFtyLCBnLCBiXSA9IGFyZ3M7XG5cdGxldCB2YWx1ZSA9IHNhdHVyYXRpb24gPT09IG51bGwgPyBjb252ZXJ0LnJnYi5oc3YoYXJncylbMl0gOiBzYXR1cmF0aW9uOyAvLyBIc3YgLT4gYW5zaTE2IG9wdGltaXphdGlvblxuXG5cdHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSAvIDUwKTtcblxuXHRpZiAodmFsdWUgPT09IDApIHtcblx0XHRyZXR1cm4gMzA7XG5cdH1cblxuXHRsZXQgYW5zaSA9IDMwXG5cdFx0KyAoKE1hdGgucm91bmQoYiAvIDI1NSkgPDwgMilcblx0XHR8IChNYXRoLnJvdW5kKGcgLyAyNTUpIDw8IDEpXG5cdFx0fCBNYXRoLnJvdW5kKHIgLyAyNTUpKTtcblxuXHRpZiAodmFsdWUgPT09IDIpIHtcblx0XHRhbnNpICs9IDYwO1xuXHR9XG5cblx0cmV0dXJuIGFuc2k7XG59O1xuXG5jb252ZXJ0Lmhzdi5hbnNpMTYgPSBmdW5jdGlvbiAoYXJncykge1xuXHQvLyBPcHRpbWl6YXRpb24gaGVyZTsgd2UgYWxyZWFkeSBrbm93IHRoZSB2YWx1ZSBhbmQgZG9uJ3QgbmVlZCB0byBnZXRcblx0Ly8gaXQgY29udmVydGVkIGZvciB1cy5cblx0cmV0dXJuIGNvbnZlcnQucmdiLmFuc2kxNihjb252ZXJ0Lmhzdi5yZ2IoYXJncyksIGFyZ3NbMl0pO1xufTtcblxuY29udmVydC5yZ2IuYW5zaTI1NiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGNvbnN0IHIgPSBhcmdzWzBdO1xuXHRjb25zdCBnID0gYXJnc1sxXTtcblx0Y29uc3QgYiA9IGFyZ3NbMl07XG5cblx0Ly8gV2UgdXNlIHRoZSBleHRlbmRlZCBncmV5c2NhbGUgcGFsZXR0ZSBoZXJlLCB3aXRoIHRoZSBleGNlcHRpb24gb2Zcblx0Ly8gYmxhY2sgYW5kIHdoaXRlLiBub3JtYWwgcGFsZXR0ZSBvbmx5IGhhcyA0IGdyZXlzY2FsZSBzaGFkZXMuXG5cdGlmIChyID09PSBnICYmIGcgPT09IGIpIHtcblx0XHRpZiAociA8IDgpIHtcblx0XHRcdHJldHVybiAxNjtcblx0XHR9XG5cblx0XHRpZiAociA+IDI0OCkge1xuXHRcdFx0cmV0dXJuIDIzMTtcblx0XHR9XG5cblx0XHRyZXR1cm4gTWF0aC5yb3VuZCgoKHIgLSA4KSAvIDI0NykgKiAyNCkgKyAyMzI7XG5cdH1cblxuXHRjb25zdCBhbnNpID0gMTZcblx0XHQrICgzNiAqIE1hdGgucm91bmQociAvIDI1NSAqIDUpKVxuXHRcdCsgKDYgKiBNYXRoLnJvdW5kKGcgLyAyNTUgKiA1KSlcblx0XHQrIE1hdGgucm91bmQoYiAvIDI1NSAqIDUpO1xuXG5cdHJldHVybiBhbnNpO1xufTtcblxuY29udmVydC5hbnNpMTYucmdiID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0bGV0IGNvbG9yID0gYXJncyAlIDEwO1xuXG5cdC8vIEhhbmRsZSBncmV5c2NhbGVcblx0aWYgKGNvbG9yID09PSAwIHx8IGNvbG9yID09PSA3KSB7XG5cdFx0aWYgKGFyZ3MgPiA1MCkge1xuXHRcdFx0Y29sb3IgKz0gMy41O1xuXHRcdH1cblxuXHRcdGNvbG9yID0gY29sb3IgLyAxMC41ICogMjU1O1xuXG5cdFx0cmV0dXJuIFtjb2xvciwgY29sb3IsIGNvbG9yXTtcblx0fVxuXG5cdGNvbnN0IG11bHQgPSAofn4oYXJncyA+IDUwKSArIDEpICogMC41O1xuXHRjb25zdCByID0gKChjb2xvciAmIDEpICogbXVsdCkgKiAyNTU7XG5cdGNvbnN0IGcgPSAoKChjb2xvciA+PiAxKSAmIDEpICogbXVsdCkgKiAyNTU7XG5cdGNvbnN0IGIgPSAoKChjb2xvciA+PiAyKSAmIDEpICogbXVsdCkgKiAyNTU7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQuYW5zaTI1Ni5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHQvLyBIYW5kbGUgZ3JleXNjYWxlXG5cdGlmIChhcmdzID49IDIzMikge1xuXHRcdGNvbnN0IGMgPSAoYXJncyAtIDIzMikgKiAxMCArIDg7XG5cdFx0cmV0dXJuIFtjLCBjLCBjXTtcblx0fVxuXG5cdGFyZ3MgLT0gMTY7XG5cblx0bGV0IHJlbTtcblx0Y29uc3QgciA9IE1hdGguZmxvb3IoYXJncyAvIDM2KSAvIDUgKiAyNTU7XG5cdGNvbnN0IGcgPSBNYXRoLmZsb29yKChyZW0gPSBhcmdzICUgMzYpIC8gNikgLyA1ICogMjU1O1xuXHRjb25zdCBiID0gKHJlbSAlIDYpIC8gNSAqIDI1NTtcblxuXHRyZXR1cm4gW3IsIGcsIGJdO1xufTtcblxuY29udmVydC5yZ2IuaGV4ID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0Y29uc3QgaW50ZWdlciA9ICgoTWF0aC5yb3VuZChhcmdzWzBdKSAmIDB4RkYpIDw8IDE2KVxuXHRcdCsgKChNYXRoLnJvdW5kKGFyZ3NbMV0pICYgMHhGRikgPDwgOClcblx0XHQrIChNYXRoLnJvdW5kKGFyZ3NbMl0pICYgMHhGRik7XG5cblx0Y29uc3Qgc3RyaW5nID0gaW50ZWdlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblx0cmV0dXJuICcwMDAwMDAnLnN1YnN0cmluZyhzdHJpbmcubGVuZ3RoKSArIHN0cmluZztcbn07XG5cbmNvbnZlcnQuaGV4LnJnYiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGNvbnN0IG1hdGNoID0gYXJncy50b1N0cmluZygxNikubWF0Y2goL1thLWYwLTldezZ9fFthLWYwLTldezN9L2kpO1xuXHRpZiAoIW1hdGNoKSB7XG5cdFx0cmV0dXJuIFswLCAwLCAwXTtcblx0fVxuXG5cdGxldCBjb2xvclN0cmluZyA9IG1hdGNoWzBdO1xuXG5cdGlmIChtYXRjaFswXS5sZW5ndGggPT09IDMpIHtcblx0XHRjb2xvclN0cmluZyA9IGNvbG9yU3RyaW5nLnNwbGl0KCcnKS5tYXAoY2hhciA9PiB7XG5cdFx0XHRyZXR1cm4gY2hhciArIGNoYXI7XG5cdFx0fSkuam9pbignJyk7XG5cdH1cblxuXHRjb25zdCBpbnRlZ2VyID0gcGFyc2VJbnQoY29sb3JTdHJpbmcsIDE2KTtcblx0Y29uc3QgciA9IChpbnRlZ2VyID4+IDE2KSAmIDB4RkY7XG5cdGNvbnN0IGcgPSAoaW50ZWdlciA+PiA4KSAmIDB4RkY7XG5cdGNvbnN0IGIgPSBpbnRlZ2VyICYgMHhGRjtcblxuXHRyZXR1cm4gW3IsIGcsIGJdO1xufTtcblxuY29udmVydC5yZ2IuaGNnID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXHRjb25zdCBtYXggPSBNYXRoLm1heChNYXRoLm1heChyLCBnKSwgYik7XG5cdGNvbnN0IG1pbiA9IE1hdGgubWluKE1hdGgubWluKHIsIGcpLCBiKTtcblx0Y29uc3QgY2hyb21hID0gKG1heCAtIG1pbik7XG5cdGxldCBncmF5c2NhbGU7XG5cdGxldCBodWU7XG5cblx0aWYgKGNocm9tYSA8IDEpIHtcblx0XHRncmF5c2NhbGUgPSBtaW4gLyAoMSAtIGNocm9tYSk7XG5cdH0gZWxzZSB7XG5cdFx0Z3JheXNjYWxlID0gMDtcblx0fVxuXG5cdGlmIChjaHJvbWEgPD0gMCkge1xuXHRcdGh1ZSA9IDA7XG5cdH0gZWxzZVxuXHRpZiAobWF4ID09PSByKSB7XG5cdFx0aHVlID0gKChnIC0gYikgLyBjaHJvbWEpICUgNjtcblx0fSBlbHNlXG5cdGlmIChtYXggPT09IGcpIHtcblx0XHRodWUgPSAyICsgKGIgLSByKSAvIGNocm9tYTtcblx0fSBlbHNlIHtcblx0XHRodWUgPSA0ICsgKHIgLSBnKSAvIGNocm9tYTtcblx0fVxuXG5cdGh1ZSAvPSA2O1xuXHRodWUgJT0gMTtcblxuXHRyZXR1cm4gW2h1ZSAqIDM2MCwgY2hyb21hICogMTAwLCBncmF5c2NhbGUgKiAxMDBdO1xufTtcblxuY29udmVydC5oc2wuaGNnID0gZnVuY3Rpb24gKGhzbCkge1xuXHRjb25zdCBzID0gaHNsWzFdIC8gMTAwO1xuXHRjb25zdCBsID0gaHNsWzJdIC8gMTAwO1xuXG5cdGNvbnN0IGMgPSBsIDwgMC41ID8gKDIuMCAqIHMgKiBsKSA6ICgyLjAgKiBzICogKDEuMCAtIGwpKTtcblxuXHRsZXQgZiA9IDA7XG5cdGlmIChjIDwgMS4wKSB7XG5cdFx0ZiA9IChsIC0gMC41ICogYykgLyAoMS4wIC0gYyk7XG5cdH1cblxuXHRyZXR1cm4gW2hzbFswXSwgYyAqIDEwMCwgZiAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmhzdi5oY2cgPSBmdW5jdGlvbiAoaHN2KSB7XG5cdGNvbnN0IHMgPSBoc3ZbMV0gLyAxMDA7XG5cdGNvbnN0IHYgPSBoc3ZbMl0gLyAxMDA7XG5cblx0Y29uc3QgYyA9IHMgKiB2O1xuXHRsZXQgZiA9IDA7XG5cblx0aWYgKGMgPCAxLjApIHtcblx0XHRmID0gKHYgLSBjKSAvICgxIC0gYyk7XG5cdH1cblxuXHRyZXR1cm4gW2hzdlswXSwgYyAqIDEwMCwgZiAqIDEwMF07XG59O1xuXG5jb252ZXJ0LmhjZy5yZ2IgPSBmdW5jdGlvbiAoaGNnKSB7XG5cdGNvbnN0IGggPSBoY2dbMF0gLyAzNjA7XG5cdGNvbnN0IGMgPSBoY2dbMV0gLyAxMDA7XG5cdGNvbnN0IGcgPSBoY2dbMl0gLyAxMDA7XG5cblx0aWYgKGMgPT09IDAuMCkge1xuXHRcdHJldHVybiBbZyAqIDI1NSwgZyAqIDI1NSwgZyAqIDI1NV07XG5cdH1cblxuXHRjb25zdCBwdXJlID0gWzAsIDAsIDBdO1xuXHRjb25zdCBoaSA9IChoICUgMSkgKiA2O1xuXHRjb25zdCB2ID0gaGkgJSAxO1xuXHRjb25zdCB3ID0gMSAtIHY7XG5cdGxldCBtZyA9IDA7XG5cblx0LyogZXNsaW50LWRpc2FibGUgbWF4LXN0YXRlbWVudHMtcGVyLWxpbmUgKi9cblx0c3dpdGNoIChNYXRoLmZsb29yKGhpKSkge1xuXHRcdGNhc2UgMDpcblx0XHRcdHB1cmVbMF0gPSAxOyBwdXJlWzFdID0gdjsgcHVyZVsyXSA9IDA7IGJyZWFrO1xuXHRcdGNhc2UgMTpcblx0XHRcdHB1cmVbMF0gPSB3OyBwdXJlWzFdID0gMTsgcHVyZVsyXSA9IDA7IGJyZWFrO1xuXHRcdGNhc2UgMjpcblx0XHRcdHB1cmVbMF0gPSAwOyBwdXJlWzFdID0gMTsgcHVyZVsyXSA9IHY7IGJyZWFrO1xuXHRcdGNhc2UgMzpcblx0XHRcdHB1cmVbMF0gPSAwOyBwdXJlWzFdID0gdzsgcHVyZVsyXSA9IDE7IGJyZWFrO1xuXHRcdGNhc2UgNDpcblx0XHRcdHB1cmVbMF0gPSB2OyBwdXJlWzFdID0gMDsgcHVyZVsyXSA9IDE7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRwdXJlWzBdID0gMTsgcHVyZVsxXSA9IDA7IHB1cmVbMl0gPSB3O1xuXHR9XG5cdC8qIGVzbGludC1lbmFibGUgbWF4LXN0YXRlbWVudHMtcGVyLWxpbmUgKi9cblxuXHRtZyA9ICgxLjAgLSBjKSAqIGc7XG5cblx0cmV0dXJuIFtcblx0XHQoYyAqIHB1cmVbMF0gKyBtZykgKiAyNTUsXG5cdFx0KGMgKiBwdXJlWzFdICsgbWcpICogMjU1LFxuXHRcdChjICogcHVyZVsyXSArIG1nKSAqIDI1NVxuXHRdO1xufTtcblxuY29udmVydC5oY2cuaHN2ID0gZnVuY3Rpb24gKGhjZykge1xuXHRjb25zdCBjID0gaGNnWzFdIC8gMTAwO1xuXHRjb25zdCBnID0gaGNnWzJdIC8gMTAwO1xuXG5cdGNvbnN0IHYgPSBjICsgZyAqICgxLjAgLSBjKTtcblx0bGV0IGYgPSAwO1xuXG5cdGlmICh2ID4gMC4wKSB7XG5cdFx0ZiA9IGMgLyB2O1xuXHR9XG5cblx0cmV0dXJuIFtoY2dbMF0sIGYgKiAxMDAsIHYgKiAxMDBdO1xufTtcblxuY29udmVydC5oY2cuaHNsID0gZnVuY3Rpb24gKGhjZykge1xuXHRjb25zdCBjID0gaGNnWzFdIC8gMTAwO1xuXHRjb25zdCBnID0gaGNnWzJdIC8gMTAwO1xuXG5cdGNvbnN0IGwgPSBnICogKDEuMCAtIGMpICsgMC41ICogYztcblx0bGV0IHMgPSAwO1xuXG5cdGlmIChsID4gMC4wICYmIGwgPCAwLjUpIHtcblx0XHRzID0gYyAvICgyICogbCk7XG5cdH0gZWxzZVxuXHRpZiAobCA+PSAwLjUgJiYgbCA8IDEuMCkge1xuXHRcdHMgPSBjIC8gKDIgKiAoMSAtIGwpKTtcblx0fVxuXG5cdHJldHVybiBbaGNnWzBdLCBzICogMTAwLCBsICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaGNnLmh3YiA9IGZ1bmN0aW9uIChoY2cpIHtcblx0Y29uc3QgYyA9IGhjZ1sxXSAvIDEwMDtcblx0Y29uc3QgZyA9IGhjZ1syXSAvIDEwMDtcblx0Y29uc3QgdiA9IGMgKyBnICogKDEuMCAtIGMpO1xuXHRyZXR1cm4gW2hjZ1swXSwgKHYgLSBjKSAqIDEwMCwgKDEgLSB2KSAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmh3Yi5oY2cgPSBmdW5jdGlvbiAoaHdiKSB7XG5cdGNvbnN0IHcgPSBod2JbMV0gLyAxMDA7XG5cdGNvbnN0IGIgPSBod2JbMl0gLyAxMDA7XG5cdGNvbnN0IHYgPSAxIC0gYjtcblx0Y29uc3QgYyA9IHYgLSB3O1xuXHRsZXQgZyA9IDA7XG5cblx0aWYgKGMgPCAxKSB7XG5cdFx0ZyA9ICh2IC0gYykgLyAoMSAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtod2JbMF0sIGMgKiAxMDAsIGcgKiAxMDBdO1xufTtcblxuY29udmVydC5hcHBsZS5yZ2IgPSBmdW5jdGlvbiAoYXBwbGUpIHtcblx0cmV0dXJuIFsoYXBwbGVbMF0gLyA2NTUzNSkgKiAyNTUsIChhcHBsZVsxXSAvIDY1NTM1KSAqIDI1NSwgKGFwcGxlWzJdIC8gNjU1MzUpICogMjU1XTtcbn07XG5cbmNvbnZlcnQucmdiLmFwcGxlID0gZnVuY3Rpb24gKHJnYikge1xuXHRyZXR1cm4gWyhyZ2JbMF0gLyAyNTUpICogNjU1MzUsIChyZ2JbMV0gLyAyNTUpICogNjU1MzUsIChyZ2JbMl0gLyAyNTUpICogNjU1MzVdO1xufTtcblxuY29udmVydC5ncmF5LnJnYiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdHJldHVybiBbYXJnc1swXSAvIDEwMCAqIDI1NSwgYXJnc1swXSAvIDEwMCAqIDI1NSwgYXJnc1swXSAvIDEwMCAqIDI1NV07XG59O1xuXG5jb252ZXJ0LmdyYXkuaHNsID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0cmV0dXJuIFswLCAwLCBhcmdzWzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5oc3YgPSBjb252ZXJ0LmdyYXkuaHNsO1xuXG5jb252ZXJ0LmdyYXkuaHdiID0gZnVuY3Rpb24gKGdyYXkpIHtcblx0cmV0dXJuIFswLCAxMDAsIGdyYXlbMF1dO1xufTtcblxuY29udmVydC5ncmF5LmNteWsgPSBmdW5jdGlvbiAoZ3JheSkge1xuXHRyZXR1cm4gWzAsIDAsIDAsIGdyYXlbMF1dO1xufTtcblxuY29udmVydC5ncmF5LmxhYiA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdHJldHVybiBbZ3JheVswXSwgMCwgMF07XG59O1xuXG5jb252ZXJ0LmdyYXkuaGV4ID0gZnVuY3Rpb24gKGdyYXkpIHtcblx0Y29uc3QgdmFsID0gTWF0aC5yb3VuZChncmF5WzBdIC8gMTAwICogMjU1KSAmIDB4RkY7XG5cdGNvbnN0IGludGVnZXIgPSAodmFsIDw8IDE2KSArICh2YWwgPDwgOCkgKyB2YWw7XG5cblx0Y29uc3Qgc3RyaW5nID0gaW50ZWdlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblx0cmV0dXJuICcwMDAwMDAnLnN1YnN0cmluZyhzdHJpbmcubGVuZ3RoKSArIHN0cmluZztcbn07XG5cbmNvbnZlcnQucmdiLmdyYXkgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHZhbCA9IChyZ2JbMF0gKyByZ2JbMV0gKyByZ2JbMl0pIC8gMztcblx0cmV0dXJuIFt2YWwgLyAyNTUgKiAxMDBdO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1039\n")},1082:function(module,exports,__webpack_require__){eval("const conversions = __webpack_require__(1039);\nconst route = __webpack_require__(1084);\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L2luZGV4LmpzPzlmMDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CLG1CQUFPLENBQUMsSUFBZTtBQUMzQyxjQUFjLG1CQUFPLENBQUMsSUFBUzs7QUFFL0I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBLHVDQUF1QyxTQUFTO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3REFBd0QsdUNBQXVDO0FBQy9GLHNEQUFzRCxxQ0FBcUM7O0FBRTNGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGLENBQUM7O0FBRUQiLCJmaWxlIjoiMTA4Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbnZlcnNpb25zID0gcmVxdWlyZSgnLi9jb252ZXJzaW9ucycpO1xuY29uc3Qgcm91dGUgPSByZXF1aXJlKCcuL3JvdXRlJyk7XG5cbmNvbnN0IGNvbnZlcnQgPSB7fTtcblxuY29uc3QgbW9kZWxzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnMpO1xuXG5mdW5jdGlvbiB3cmFwUmF3KGZuKSB7XG5cdGNvbnN0IHdyYXBwZWRGbiA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG5cdFx0Y29uc3QgYXJnMCA9IGFyZ3NbMF07XG5cdFx0aWYgKGFyZzAgPT09IHVuZGVmaW5lZCB8fCBhcmcwID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gYXJnMDtcblx0XHR9XG5cblx0XHRpZiAoYXJnMC5sZW5ndGggPiAxKSB7XG5cdFx0XHRhcmdzID0gYXJnMDtcblx0XHR9XG5cblx0XHRyZXR1cm4gZm4oYXJncyk7XG5cdH07XG5cblx0Ly8gUHJlc2VydmUgLmNvbnZlcnNpb24gcHJvcGVydHkgaWYgdGhlcmUgaXMgb25lXG5cdGlmICgnY29udmVyc2lvbicgaW4gZm4pIHtcblx0XHR3cmFwcGVkRm4uY29udmVyc2lvbiA9IGZuLmNvbnZlcnNpb247XG5cdH1cblxuXHRyZXR1cm4gd3JhcHBlZEZuO1xufVxuXG5mdW5jdGlvbiB3cmFwUm91bmRlZChmbikge1xuXHRjb25zdCB3cmFwcGVkRm4gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuXHRcdGNvbnN0IGFyZzAgPSBhcmdzWzBdO1xuXG5cdFx0aWYgKGFyZzAgPT09IHVuZGVmaW5lZCB8fCBhcmcwID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gYXJnMDtcblx0XHR9XG5cblx0XHRpZiAoYXJnMC5sZW5ndGggPiAxKSB7XG5cdFx0XHRhcmdzID0gYXJnMDtcblx0XHR9XG5cblx0XHRjb25zdCByZXN1bHQgPSBmbihhcmdzKTtcblxuXHRcdC8vIFdlJ3JlIGFzc3VtaW5nIHRoZSByZXN1bHQgaXMgYW4gYXJyYXkgaGVyZS5cblx0XHQvLyBzZWUgbm90aWNlIGluIGNvbnZlcnNpb25zLmpzOyBkb24ndCB1c2UgYm94IHR5cGVzXG5cdFx0Ly8gaW4gY29udmVyc2lvbiBmdW5jdGlvbnMuXG5cdFx0aWYgKHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRmb3IgKGxldCBsZW4gPSByZXN1bHQubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRcdHJlc3VsdFtpXSA9IE1hdGgucm91bmQocmVzdWx0W2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9O1xuXG5cdC8vIFByZXNlcnZlIC5jb252ZXJzaW9uIHByb3BlcnR5IGlmIHRoZXJlIGlzIG9uZVxuXHRpZiAoJ2NvbnZlcnNpb24nIGluIGZuKSB7XG5cdFx0d3JhcHBlZEZuLmNvbnZlcnNpb24gPSBmbi5jb252ZXJzaW9uO1xuXHR9XG5cblx0cmV0dXJuIHdyYXBwZWRGbjtcbn1cblxubW9kZWxzLmZvckVhY2goZnJvbU1vZGVsID0+IHtcblx0Y29udmVydFtmcm9tTW9kZWxdID0ge307XG5cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbZnJvbU1vZGVsXSwgJ2NoYW5uZWxzJywge3ZhbHVlOiBjb252ZXJzaW9uc1tmcm9tTW9kZWxdLmNoYW5uZWxzfSk7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W2Zyb21Nb2RlbF0sICdsYWJlbHMnLCB7dmFsdWU6IGNvbnZlcnNpb25zW2Zyb21Nb2RlbF0ubGFiZWxzfSk7XG5cblx0Y29uc3Qgcm91dGVzID0gcm91dGUoZnJvbU1vZGVsKTtcblx0Y29uc3Qgcm91dGVNb2RlbHMgPSBPYmplY3Qua2V5cyhyb3V0ZXMpO1xuXG5cdHJvdXRlTW9kZWxzLmZvckVhY2godG9Nb2RlbCA9PiB7XG5cdFx0Y29uc3QgZm4gPSByb3V0ZXNbdG9Nb2RlbF07XG5cblx0XHRjb252ZXJ0W2Zyb21Nb2RlbF1bdG9Nb2RlbF0gPSB3cmFwUm91bmRlZChmbik7XG5cdFx0Y29udmVydFtmcm9tTW9kZWxdW3RvTW9kZWxdLnJhdyA9IHdyYXBSYXcoZm4pO1xuXHR9KTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnZlcnQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1082\n")},1083:function(module,exports,__webpack_require__){"use strict";eval('\r\n\r\nmodule.exports = {\r\n\t"aliceblue": [240, 248, 255],\r\n\t"antiquewhite": [250, 235, 215],\r\n\t"aqua": [0, 255, 255],\r\n\t"aquamarine": [127, 255, 212],\r\n\t"azure": [240, 255, 255],\r\n\t"beige": [245, 245, 220],\r\n\t"bisque": [255, 228, 196],\r\n\t"black": [0, 0, 0],\r\n\t"blanchedalmond": [255, 235, 205],\r\n\t"blue": [0, 0, 255],\r\n\t"blueviolet": [138, 43, 226],\r\n\t"brown": [165, 42, 42],\r\n\t"burlywood": [222, 184, 135],\r\n\t"cadetblue": [95, 158, 160],\r\n\t"chartreuse": [127, 255, 0],\r\n\t"chocolate": [210, 105, 30],\r\n\t"coral": [255, 127, 80],\r\n\t"cornflowerblue": [100, 149, 237],\r\n\t"cornsilk": [255, 248, 220],\r\n\t"crimson": [220, 20, 60],\r\n\t"cyan": [0, 255, 255],\r\n\t"darkblue": [0, 0, 139],\r\n\t"darkcyan": [0, 139, 139],\r\n\t"darkgoldenrod": [184, 134, 11],\r\n\t"darkgray": [169, 169, 169],\r\n\t"darkgreen": [0, 100, 0],\r\n\t"darkgrey": [169, 169, 169],\r\n\t"darkkhaki": [189, 183, 107],\r\n\t"darkmagenta": [139, 0, 139],\r\n\t"darkolivegreen": [85, 107, 47],\r\n\t"darkorange": [255, 140, 0],\r\n\t"darkorchid": [153, 50, 204],\r\n\t"darkred": [139, 0, 0],\r\n\t"darksalmon": [233, 150, 122],\r\n\t"darkseagreen": [143, 188, 143],\r\n\t"darkslateblue": [72, 61, 139],\r\n\t"darkslategray": [47, 79, 79],\r\n\t"darkslategrey": [47, 79, 79],\r\n\t"darkturquoise": [0, 206, 209],\r\n\t"darkviolet": [148, 0, 211],\r\n\t"deeppink": [255, 20, 147],\r\n\t"deepskyblue": [0, 191, 255],\r\n\t"dimgray": [105, 105, 105],\r\n\t"dimgrey": [105, 105, 105],\r\n\t"dodgerblue": [30, 144, 255],\r\n\t"firebrick": [178, 34, 34],\r\n\t"floralwhite": [255, 250, 240],\r\n\t"forestgreen": [34, 139, 34],\r\n\t"fuchsia": [255, 0, 255],\r\n\t"gainsboro": [220, 220, 220],\r\n\t"ghostwhite": [248, 248, 255],\r\n\t"gold": [255, 215, 0],\r\n\t"goldenrod": [218, 165, 32],\r\n\t"gray": [128, 128, 128],\r\n\t"green": [0, 128, 0],\r\n\t"greenyellow": [173, 255, 47],\r\n\t"grey": [128, 128, 128],\r\n\t"honeydew": [240, 255, 240],\r\n\t"hotpink": [255, 105, 180],\r\n\t"indianred": [205, 92, 92],\r\n\t"indigo": [75, 0, 130],\r\n\t"ivory": [255, 255, 240],\r\n\t"khaki": [240, 230, 140],\r\n\t"lavender": [230, 230, 250],\r\n\t"lavenderblush": [255, 240, 245],\r\n\t"lawngreen": [124, 252, 0],\r\n\t"lemonchiffon": [255, 250, 205],\r\n\t"lightblue": [173, 216, 230],\r\n\t"lightcoral": [240, 128, 128],\r\n\t"lightcyan": [224, 255, 255],\r\n\t"lightgoldenrodyellow": [250, 250, 210],\r\n\t"lightgray": [211, 211, 211],\r\n\t"lightgreen": [144, 238, 144],\r\n\t"lightgrey": [211, 211, 211],\r\n\t"lightpink": [255, 182, 193],\r\n\t"lightsalmon": [255, 160, 122],\r\n\t"lightseagreen": [32, 178, 170],\r\n\t"lightskyblue": [135, 206, 250],\r\n\t"lightslategray": [119, 136, 153],\r\n\t"lightslategrey": [119, 136, 153],\r\n\t"lightsteelblue": [176, 196, 222],\r\n\t"lightyellow": [255, 255, 224],\r\n\t"lime": [0, 255, 0],\r\n\t"limegreen": [50, 205, 50],\r\n\t"linen": [250, 240, 230],\r\n\t"magenta": [255, 0, 255],\r\n\t"maroon": [128, 0, 0],\r\n\t"mediumaquamarine": [102, 205, 170],\r\n\t"mediumblue": [0, 0, 205],\r\n\t"mediumorchid": [186, 85, 211],\r\n\t"mediumpurple": [147, 112, 219],\r\n\t"mediumseagreen": [60, 179, 113],\r\n\t"mediumslateblue": [123, 104, 238],\r\n\t"mediumspringgreen": [0, 250, 154],\r\n\t"mediumturquoise": [72, 209, 204],\r\n\t"mediumvioletred": [199, 21, 133],\r\n\t"midnightblue": [25, 25, 112],\r\n\t"mintcream": [245, 255, 250],\r\n\t"mistyrose": [255, 228, 225],\r\n\t"moccasin": [255, 228, 181],\r\n\t"navajowhite": [255, 222, 173],\r\n\t"navy": [0, 0, 128],\r\n\t"oldlace": [253, 245, 230],\r\n\t"olive": [128, 128, 0],\r\n\t"olivedrab": [107, 142, 35],\r\n\t"orange": [255, 165, 0],\r\n\t"orangered": [255, 69, 0],\r\n\t"orchid": [218, 112, 214],\r\n\t"palegoldenrod": [238, 232, 170],\r\n\t"palegreen": [152, 251, 152],\r\n\t"paleturquoise": [175, 238, 238],\r\n\t"palevioletred": [219, 112, 147],\r\n\t"papayawhip": [255, 239, 213],\r\n\t"peachpuff": [255, 218, 185],\r\n\t"peru": [205, 133, 63],\r\n\t"pink": [255, 192, 203],\r\n\t"plum": [221, 160, 221],\r\n\t"powderblue": [176, 224, 230],\r\n\t"purple": [128, 0, 128],\r\n\t"rebeccapurple": [102, 51, 153],\r\n\t"red": [255, 0, 0],\r\n\t"rosybrown": [188, 143, 143],\r\n\t"royalblue": [65, 105, 225],\r\n\t"saddlebrown": [139, 69, 19],\r\n\t"salmon": [250, 128, 114],\r\n\t"sandybrown": [244, 164, 96],\r\n\t"seagreen": [46, 139, 87],\r\n\t"seashell": [255, 245, 238],\r\n\t"sienna": [160, 82, 45],\r\n\t"silver": [192, 192, 192],\r\n\t"skyblue": [135, 206, 235],\r\n\t"slateblue": [106, 90, 205],\r\n\t"slategray": [112, 128, 144],\r\n\t"slategrey": [112, 128, 144],\r\n\t"snow": [255, 250, 250],\r\n\t"springgreen": [0, 255, 127],\r\n\t"steelblue": [70, 130, 180],\r\n\t"tan": [210, 180, 140],\r\n\t"teal": [0, 128, 128],\r\n\t"thistle": [216, 191, 216],\r\n\t"tomato": [255, 99, 71],\r\n\t"turquoise": [64, 224, 208],\r\n\t"violet": [238, 130, 238],\r\n\t"wheat": [245, 222, 179],\r\n\t"white": [255, 255, 255],\r\n\t"whitesmoke": [245, 245, 245],\r\n\t"yellow": [255, 255, 0],\r\n\t"yellowgreen": [154, 205, 50]\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L25vZGVfbW9kdWxlcy9jb2xvci1uYW1lL2luZGV4LmpzP2I4MjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjEwODMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG5cdFwiYWxpY2VibHVlXCI6IFsyNDAsIDI0OCwgMjU1XSxcclxuXHRcImFudGlxdWV3aGl0ZVwiOiBbMjUwLCAyMzUsIDIxNV0sXHJcblx0XCJhcXVhXCI6IFswLCAyNTUsIDI1NV0sXHJcblx0XCJhcXVhbWFyaW5lXCI6IFsxMjcsIDI1NSwgMjEyXSxcclxuXHRcImF6dXJlXCI6IFsyNDAsIDI1NSwgMjU1XSxcclxuXHRcImJlaWdlXCI6IFsyNDUsIDI0NSwgMjIwXSxcclxuXHRcImJpc3F1ZVwiOiBbMjU1LCAyMjgsIDE5Nl0sXHJcblx0XCJibGFja1wiOiBbMCwgMCwgMF0sXHJcblx0XCJibGFuY2hlZGFsbW9uZFwiOiBbMjU1LCAyMzUsIDIwNV0sXHJcblx0XCJibHVlXCI6IFswLCAwLCAyNTVdLFxyXG5cdFwiYmx1ZXZpb2xldFwiOiBbMTM4LCA0MywgMjI2XSxcclxuXHRcImJyb3duXCI6IFsxNjUsIDQyLCA0Ml0sXHJcblx0XCJidXJseXdvb2RcIjogWzIyMiwgMTg0LCAxMzVdLFxyXG5cdFwiY2FkZXRibHVlXCI6IFs5NSwgMTU4LCAxNjBdLFxyXG5cdFwiY2hhcnRyZXVzZVwiOiBbMTI3LCAyNTUsIDBdLFxyXG5cdFwiY2hvY29sYXRlXCI6IFsyMTAsIDEwNSwgMzBdLFxyXG5cdFwiY29yYWxcIjogWzI1NSwgMTI3LCA4MF0sXHJcblx0XCJjb3JuZmxvd2VyYmx1ZVwiOiBbMTAwLCAxNDksIDIzN10sXHJcblx0XCJjb3Juc2lsa1wiOiBbMjU1LCAyNDgsIDIyMF0sXHJcblx0XCJjcmltc29uXCI6IFsyMjAsIDIwLCA2MF0sXHJcblx0XCJjeWFuXCI6IFswLCAyNTUsIDI1NV0sXHJcblx0XCJkYXJrYmx1ZVwiOiBbMCwgMCwgMTM5XSxcclxuXHRcImRhcmtjeWFuXCI6IFswLCAxMzksIDEzOV0sXHJcblx0XCJkYXJrZ29sZGVucm9kXCI6IFsxODQsIDEzNCwgMTFdLFxyXG5cdFwiZGFya2dyYXlcIjogWzE2OSwgMTY5LCAxNjldLFxyXG5cdFwiZGFya2dyZWVuXCI6IFswLCAxMDAsIDBdLFxyXG5cdFwiZGFya2dyZXlcIjogWzE2OSwgMTY5LCAxNjldLFxyXG5cdFwiZGFya2toYWtpXCI6IFsxODksIDE4MywgMTA3XSxcclxuXHRcImRhcmttYWdlbnRhXCI6IFsxMzksIDAsIDEzOV0sXHJcblx0XCJkYXJrb2xpdmVncmVlblwiOiBbODUsIDEwNywgNDddLFxyXG5cdFwiZGFya29yYW5nZVwiOiBbMjU1LCAxNDAsIDBdLFxyXG5cdFwiZGFya29yY2hpZFwiOiBbMTUzLCA1MCwgMjA0XSxcclxuXHRcImRhcmtyZWRcIjogWzEzOSwgMCwgMF0sXHJcblx0XCJkYXJrc2FsbW9uXCI6IFsyMzMsIDE1MCwgMTIyXSxcclxuXHRcImRhcmtzZWFncmVlblwiOiBbMTQzLCAxODgsIDE0M10sXHJcblx0XCJkYXJrc2xhdGVibHVlXCI6IFs3MiwgNjEsIDEzOV0sXHJcblx0XCJkYXJrc2xhdGVncmF5XCI6IFs0NywgNzksIDc5XSxcclxuXHRcImRhcmtzbGF0ZWdyZXlcIjogWzQ3LCA3OSwgNzldLFxyXG5cdFwiZGFya3R1cnF1b2lzZVwiOiBbMCwgMjA2LCAyMDldLFxyXG5cdFwiZGFya3Zpb2xldFwiOiBbMTQ4LCAwLCAyMTFdLFxyXG5cdFwiZGVlcHBpbmtcIjogWzI1NSwgMjAsIDE0N10sXHJcblx0XCJkZWVwc2t5Ymx1ZVwiOiBbMCwgMTkxLCAyNTVdLFxyXG5cdFwiZGltZ3JheVwiOiBbMTA1LCAxMDUsIDEwNV0sXHJcblx0XCJkaW1ncmV5XCI6IFsxMDUsIDEwNSwgMTA1XSxcclxuXHRcImRvZGdlcmJsdWVcIjogWzMwLCAxNDQsIDI1NV0sXHJcblx0XCJmaXJlYnJpY2tcIjogWzE3OCwgMzQsIDM0XSxcclxuXHRcImZsb3JhbHdoaXRlXCI6IFsyNTUsIDI1MCwgMjQwXSxcclxuXHRcImZvcmVzdGdyZWVuXCI6IFszNCwgMTM5LCAzNF0sXHJcblx0XCJmdWNoc2lhXCI6IFsyNTUsIDAsIDI1NV0sXHJcblx0XCJnYWluc2Jvcm9cIjogWzIyMCwgMjIwLCAyMjBdLFxyXG5cdFwiZ2hvc3R3aGl0ZVwiOiBbMjQ4LCAyNDgsIDI1NV0sXHJcblx0XCJnb2xkXCI6IFsyNTUsIDIxNSwgMF0sXHJcblx0XCJnb2xkZW5yb2RcIjogWzIxOCwgMTY1LCAzMl0sXHJcblx0XCJncmF5XCI6IFsxMjgsIDEyOCwgMTI4XSxcclxuXHRcImdyZWVuXCI6IFswLCAxMjgsIDBdLFxyXG5cdFwiZ3JlZW55ZWxsb3dcIjogWzE3MywgMjU1LCA0N10sXHJcblx0XCJncmV5XCI6IFsxMjgsIDEyOCwgMTI4XSxcclxuXHRcImhvbmV5ZGV3XCI6IFsyNDAsIDI1NSwgMjQwXSxcclxuXHRcImhvdHBpbmtcIjogWzI1NSwgMTA1LCAxODBdLFxyXG5cdFwiaW5kaWFucmVkXCI6IFsyMDUsIDkyLCA5Ml0sXHJcblx0XCJpbmRpZ29cIjogWzc1LCAwLCAxMzBdLFxyXG5cdFwiaXZvcnlcIjogWzI1NSwgMjU1LCAyNDBdLFxyXG5cdFwia2hha2lcIjogWzI0MCwgMjMwLCAxNDBdLFxyXG5cdFwibGF2ZW5kZXJcIjogWzIzMCwgMjMwLCAyNTBdLFxyXG5cdFwibGF2ZW5kZXJibHVzaFwiOiBbMjU1LCAyNDAsIDI0NV0sXHJcblx0XCJsYXduZ3JlZW5cIjogWzEyNCwgMjUyLCAwXSxcclxuXHRcImxlbW9uY2hpZmZvblwiOiBbMjU1LCAyNTAsIDIwNV0sXHJcblx0XCJsaWdodGJsdWVcIjogWzE3MywgMjE2LCAyMzBdLFxyXG5cdFwibGlnaHRjb3JhbFwiOiBbMjQwLCAxMjgsIDEyOF0sXHJcblx0XCJsaWdodGN5YW5cIjogWzIyNCwgMjU1LCAyNTVdLFxyXG5cdFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIjogWzI1MCwgMjUwLCAyMTBdLFxyXG5cdFwibGlnaHRncmF5XCI6IFsyMTEsIDIxMSwgMjExXSxcclxuXHRcImxpZ2h0Z3JlZW5cIjogWzE0NCwgMjM4LCAxNDRdLFxyXG5cdFwibGlnaHRncmV5XCI6IFsyMTEsIDIxMSwgMjExXSxcclxuXHRcImxpZ2h0cGlua1wiOiBbMjU1LCAxODIsIDE5M10sXHJcblx0XCJsaWdodHNhbG1vblwiOiBbMjU1LCAxNjAsIDEyMl0sXHJcblx0XCJsaWdodHNlYWdyZWVuXCI6IFszMiwgMTc4LCAxNzBdLFxyXG5cdFwibGlnaHRza3libHVlXCI6IFsxMzUsIDIwNiwgMjUwXSxcclxuXHRcImxpZ2h0c2xhdGVncmF5XCI6IFsxMTksIDEzNiwgMTUzXSxcclxuXHRcImxpZ2h0c2xhdGVncmV5XCI6IFsxMTksIDEzNiwgMTUzXSxcclxuXHRcImxpZ2h0c3RlZWxibHVlXCI6IFsxNzYsIDE5NiwgMjIyXSxcclxuXHRcImxpZ2h0eWVsbG93XCI6IFsyNTUsIDI1NSwgMjI0XSxcclxuXHRcImxpbWVcIjogWzAsIDI1NSwgMF0sXHJcblx0XCJsaW1lZ3JlZW5cIjogWzUwLCAyMDUsIDUwXSxcclxuXHRcImxpbmVuXCI6IFsyNTAsIDI0MCwgMjMwXSxcclxuXHRcIm1hZ2VudGFcIjogWzI1NSwgMCwgMjU1XSxcclxuXHRcIm1hcm9vblwiOiBbMTI4LCAwLCAwXSxcclxuXHRcIm1lZGl1bWFxdWFtYXJpbmVcIjogWzEwMiwgMjA1LCAxNzBdLFxyXG5cdFwibWVkaXVtYmx1ZVwiOiBbMCwgMCwgMjA1XSxcclxuXHRcIm1lZGl1bW9yY2hpZFwiOiBbMTg2LCA4NSwgMjExXSxcclxuXHRcIm1lZGl1bXB1cnBsZVwiOiBbMTQ3LCAxMTIsIDIxOV0sXHJcblx0XCJtZWRpdW1zZWFncmVlblwiOiBbNjAsIDE3OSwgMTEzXSxcclxuXHRcIm1lZGl1bXNsYXRlYmx1ZVwiOiBbMTIzLCAxMDQsIDIzOF0sXHJcblx0XCJtZWRpdW1zcHJpbmdncmVlblwiOiBbMCwgMjUwLCAxNTRdLFxyXG5cdFwibWVkaXVtdHVycXVvaXNlXCI6IFs3MiwgMjA5LCAyMDRdLFxyXG5cdFwibWVkaXVtdmlvbGV0cmVkXCI6IFsxOTksIDIxLCAxMzNdLFxyXG5cdFwibWlkbmlnaHRibHVlXCI6IFsyNSwgMjUsIDExMl0sXHJcblx0XCJtaW50Y3JlYW1cIjogWzI0NSwgMjU1LCAyNTBdLFxyXG5cdFwibWlzdHlyb3NlXCI6IFsyNTUsIDIyOCwgMjI1XSxcclxuXHRcIm1vY2Nhc2luXCI6IFsyNTUsIDIyOCwgMTgxXSxcclxuXHRcIm5hdmFqb3doaXRlXCI6IFsyNTUsIDIyMiwgMTczXSxcclxuXHRcIm5hdnlcIjogWzAsIDAsIDEyOF0sXHJcblx0XCJvbGRsYWNlXCI6IFsyNTMsIDI0NSwgMjMwXSxcclxuXHRcIm9saXZlXCI6IFsxMjgsIDEyOCwgMF0sXHJcblx0XCJvbGl2ZWRyYWJcIjogWzEwNywgMTQyLCAzNV0sXHJcblx0XCJvcmFuZ2VcIjogWzI1NSwgMTY1LCAwXSxcclxuXHRcIm9yYW5nZXJlZFwiOiBbMjU1LCA2OSwgMF0sXHJcblx0XCJvcmNoaWRcIjogWzIxOCwgMTEyLCAyMTRdLFxyXG5cdFwicGFsZWdvbGRlbnJvZFwiOiBbMjM4LCAyMzIsIDE3MF0sXHJcblx0XCJwYWxlZ3JlZW5cIjogWzE1MiwgMjUxLCAxNTJdLFxyXG5cdFwicGFsZXR1cnF1b2lzZVwiOiBbMTc1LCAyMzgsIDIzOF0sXHJcblx0XCJwYWxldmlvbGV0cmVkXCI6IFsyMTksIDExMiwgMTQ3XSxcclxuXHRcInBhcGF5YXdoaXBcIjogWzI1NSwgMjM5LCAyMTNdLFxyXG5cdFwicGVhY2hwdWZmXCI6IFsyNTUsIDIxOCwgMTg1XSxcclxuXHRcInBlcnVcIjogWzIwNSwgMTMzLCA2M10sXHJcblx0XCJwaW5rXCI6IFsyNTUsIDE5MiwgMjAzXSxcclxuXHRcInBsdW1cIjogWzIyMSwgMTYwLCAyMjFdLFxyXG5cdFwicG93ZGVyYmx1ZVwiOiBbMTc2LCAyMjQsIDIzMF0sXHJcblx0XCJwdXJwbGVcIjogWzEyOCwgMCwgMTI4XSxcclxuXHRcInJlYmVjY2FwdXJwbGVcIjogWzEwMiwgNTEsIDE1M10sXHJcblx0XCJyZWRcIjogWzI1NSwgMCwgMF0sXHJcblx0XCJyb3N5YnJvd25cIjogWzE4OCwgMTQzLCAxNDNdLFxyXG5cdFwicm95YWxibHVlXCI6IFs2NSwgMTA1LCAyMjVdLFxyXG5cdFwic2FkZGxlYnJvd25cIjogWzEzOSwgNjksIDE5XSxcclxuXHRcInNhbG1vblwiOiBbMjUwLCAxMjgsIDExNF0sXHJcblx0XCJzYW5keWJyb3duXCI6IFsyNDQsIDE2NCwgOTZdLFxyXG5cdFwic2VhZ3JlZW5cIjogWzQ2LCAxMzksIDg3XSxcclxuXHRcInNlYXNoZWxsXCI6IFsyNTUsIDI0NSwgMjM4XSxcclxuXHRcInNpZW5uYVwiOiBbMTYwLCA4MiwgNDVdLFxyXG5cdFwic2lsdmVyXCI6IFsxOTIsIDE5MiwgMTkyXSxcclxuXHRcInNreWJsdWVcIjogWzEzNSwgMjA2LCAyMzVdLFxyXG5cdFwic2xhdGVibHVlXCI6IFsxMDYsIDkwLCAyMDVdLFxyXG5cdFwic2xhdGVncmF5XCI6IFsxMTIsIDEyOCwgMTQ0XSxcclxuXHRcInNsYXRlZ3JleVwiOiBbMTEyLCAxMjgsIDE0NF0sXHJcblx0XCJzbm93XCI6IFsyNTUsIDI1MCwgMjUwXSxcclxuXHRcInNwcmluZ2dyZWVuXCI6IFswLCAyNTUsIDEyN10sXHJcblx0XCJzdGVlbGJsdWVcIjogWzcwLCAxMzAsIDE4MF0sXHJcblx0XCJ0YW5cIjogWzIxMCwgMTgwLCAxNDBdLFxyXG5cdFwidGVhbFwiOiBbMCwgMTI4LCAxMjhdLFxyXG5cdFwidGhpc3RsZVwiOiBbMjE2LCAxOTEsIDIxNl0sXHJcblx0XCJ0b21hdG9cIjogWzI1NSwgOTksIDcxXSxcclxuXHRcInR1cnF1b2lzZVwiOiBbNjQsIDIyNCwgMjA4XSxcclxuXHRcInZpb2xldFwiOiBbMjM4LCAxMzAsIDIzOF0sXHJcblx0XCJ3aGVhdFwiOiBbMjQ1LCAyMjIsIDE3OV0sXHJcblx0XCJ3aGl0ZVwiOiBbMjU1LCAyNTUsIDI1NV0sXHJcblx0XCJ3aGl0ZXNtb2tlXCI6IFsyNDUsIDI0NSwgMjQ1XSxcclxuXHRcInllbGxvd1wiOiBbMjU1LCAyNTUsIDBdLFxyXG5cdFwieWVsbG93Z3JlZW5cIjogWzE1NCwgMjA1LCA1MF1cclxufTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1083\n')},1084:function(module,exports,__webpack_require__){eval("const conversions = __webpack_require__(1039);\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L3JvdXRlLmpzPzRmYjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CLG1CQUFPLENBQUMsSUFBZTs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQyxTQUFTO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEseUNBQXlDLFNBQVM7QUFDbEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDLFNBQVM7QUFDOUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiMTA4NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbnZlcnNpb25zID0gcmVxdWlyZSgnLi9jb252ZXJzaW9ucycpO1xuXG4vKlxuXHRUaGlzIGZ1bmN0aW9uIHJvdXRlcyBhIG1vZGVsIHRvIGFsbCBvdGhlciBtb2RlbHMuXG5cblx0YWxsIGZ1bmN0aW9ucyB0aGF0IGFyZSByb3V0ZWQgaGF2ZSBhIHByb3BlcnR5IGAuY29udmVyc2lvbmAgYXR0YWNoZWRcblx0dG8gdGhlIHJldHVybmVkIHN5bnRoZXRpYyBmdW5jdGlvbi4gVGhpcyBwcm9wZXJ0eSBpcyBhbiBhcnJheVxuXHRvZiBzdHJpbmdzLCBlYWNoIHdpdGggdGhlIHN0ZXBzIGluIGJldHdlZW4gdGhlICdmcm9tJyBhbmQgJ3RvJ1xuXHRjb2xvciBtb2RlbHMgKGluY2x1c2l2ZSkuXG5cblx0Y29udmVyc2lvbnMgdGhhdCBhcmUgbm90IHBvc3NpYmxlIHNpbXBseSBhcmUgbm90IGluY2x1ZGVkLlxuKi9cblxuZnVuY3Rpb24gYnVpbGRHcmFwaCgpIHtcblx0Y29uc3QgZ3JhcGggPSB7fTtcblx0Ly8gaHR0cHM6Ly9qc3BlcmYuY29tL29iamVjdC1rZXlzLXZzLWZvci1pbi13aXRoLWNsb3N1cmUvM1xuXHRjb25zdCBtb2RlbHMgPSBPYmplY3Qua2V5cyhjb252ZXJzaW9ucyk7XG5cblx0Zm9yIChsZXQgbGVuID0gbW9kZWxzLmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdGdyYXBoW21vZGVsc1tpXV0gPSB7XG5cdFx0XHQvLyBodHRwOi8vanNwZXJmLmNvbS8xLXZzLWluZmluaXR5XG5cdFx0XHQvLyBtaWNyby1vcHQsIGJ1dCB0aGlzIGlzIHNpbXBsZS5cblx0XHRcdGRpc3RhbmNlOiAtMSxcblx0XHRcdHBhcmVudDogbnVsbFxuXHRcdH07XG5cdH1cblxuXHRyZXR1cm4gZ3JhcGg7XG59XG5cbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JyZWFkdGgtZmlyc3Rfc2VhcmNoXG5mdW5jdGlvbiBkZXJpdmVCRlMoZnJvbU1vZGVsKSB7XG5cdGNvbnN0IGdyYXBoID0gYnVpbGRHcmFwaCgpO1xuXHRjb25zdCBxdWV1ZSA9IFtmcm9tTW9kZWxdOyAvLyBVbnNoaWZ0IC0+IHF1ZXVlIC0+IHBvcFxuXG5cdGdyYXBoW2Zyb21Nb2RlbF0uZGlzdGFuY2UgPSAwO1xuXG5cdHdoaWxlIChxdWV1ZS5sZW5ndGgpIHtcblx0XHRjb25zdCBjdXJyZW50ID0gcXVldWUucG9wKCk7XG5cdFx0Y29uc3QgYWRqYWNlbnRzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnNbY3VycmVudF0pO1xuXG5cdFx0Zm9yIChsZXQgbGVuID0gYWRqYWNlbnRzLmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0Y29uc3QgYWRqYWNlbnQgPSBhZGphY2VudHNbaV07XG5cdFx0XHRjb25zdCBub2RlID0gZ3JhcGhbYWRqYWNlbnRdO1xuXG5cdFx0XHRpZiAobm9kZS5kaXN0YW5jZSA9PT0gLTEpIHtcblx0XHRcdFx0bm9kZS5kaXN0YW5jZSA9IGdyYXBoW2N1cnJlbnRdLmRpc3RhbmNlICsgMTtcblx0XHRcdFx0bm9kZS5wYXJlbnQgPSBjdXJyZW50O1xuXHRcdFx0XHRxdWV1ZS51bnNoaWZ0KGFkamFjZW50KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZ3JhcGg7XG59XG5cbmZ1bmN0aW9uIGxpbmsoZnJvbSwgdG8pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG5cdFx0cmV0dXJuIHRvKGZyb20oYXJncykpO1xuXHR9O1xufVxuXG5mdW5jdGlvbiB3cmFwQ29udmVyc2lvbih0b01vZGVsLCBncmFwaCkge1xuXHRjb25zdCBwYXRoID0gW2dyYXBoW3RvTW9kZWxdLnBhcmVudCwgdG9Nb2RlbF07XG5cdGxldCBmbiA9IGNvbnZlcnNpb25zW2dyYXBoW3RvTW9kZWxdLnBhcmVudF1bdG9Nb2RlbF07XG5cblx0bGV0IGN1ciA9IGdyYXBoW3RvTW9kZWxdLnBhcmVudDtcblx0d2hpbGUgKGdyYXBoW2N1cl0ucGFyZW50KSB7XG5cdFx0cGF0aC51bnNoaWZ0KGdyYXBoW2N1cl0ucGFyZW50KTtcblx0XHRmbiA9IGxpbmsoY29udmVyc2lvbnNbZ3JhcGhbY3VyXS5wYXJlbnRdW2N1cl0sIGZuKTtcblx0XHRjdXIgPSBncmFwaFtjdXJdLnBhcmVudDtcblx0fVxuXG5cdGZuLmNvbnZlcnNpb24gPSBwYXRoO1xuXHRyZXR1cm4gZm47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZyb21Nb2RlbCkge1xuXHRjb25zdCBncmFwaCA9IGRlcml2ZUJGUyhmcm9tTW9kZWwpO1xuXHRjb25zdCBjb252ZXJzaW9uID0ge307XG5cblx0Y29uc3QgbW9kZWxzID0gT2JqZWN0LmtleXMoZ3JhcGgpO1xuXHRmb3IgKGxldCBsZW4gPSBtb2RlbHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0Y29uc3QgdG9Nb2RlbCA9IG1vZGVsc1tpXTtcblx0XHRjb25zdCBub2RlID0gZ3JhcGhbdG9Nb2RlbF07XG5cblx0XHRpZiAobm9kZS5wYXJlbnQgPT09IG51bGwpIHtcblx0XHRcdC8vIE5vIHBvc3NpYmxlIGNvbnZlcnNpb24sIG9yIHRoaXMgbm9kZSBpcyB0aGUgc291cmNlIG1vZGVsLlxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Y29udmVyc2lvblt0b01vZGVsXSA9IHdyYXBDb252ZXJzaW9uKHRvTW9kZWwsIGdyYXBoKTtcblx0fVxuXG5cdHJldHVybiBjb252ZXJzaW9uO1xufTtcblxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1084\n")},1085:function(module,exports,__webpack_require__){eval("var debounce = __webpack_require__(1086),\n isObject = __webpack_require__(156);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvdGhyb3R0bGUuanM/YmVmOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsSUFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsR0FBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTyxZQUFZO0FBQzlCLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsb0JBQW9CO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsImZpbGUiOiIxMDg1LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlYm91bmNlID0gcmVxdWlyZSgnLi9kZWJvdW5jZScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB0aHJvdHRsZWQgZnVuY3Rpb24gdGhhdCBvbmx5IGludm9rZXMgYGZ1bmNgIGF0IG1vc3Qgb25jZSBwZXJcbiAqIGV2ZXJ5IGB3YWl0YCBtaWxsaXNlY29uZHMuIFRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgXG4gKiBtZXRob2QgdG8gY2FuY2VsIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvXG4gKiBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS4gUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2BcbiAqIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZSBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGBcbiAqIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZCB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGVcbiAqIHRocm90dGxlZCBmdW5jdGlvbi4gU3Vic2VxdWVudCBjYWxscyB0byB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHJldHVybiB0aGVcbiAqIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIHRocm90dGxlZCBmdW5jdGlvblxuICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICpcbiAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICpcbiAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy50aHJvdHRsZWAgYW5kIGBfLmRlYm91bmNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHRocm90dGxlLlxuICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRocm90dGxlIGludm9jYXRpb25zIHRvLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHRocm90dGxlZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQXZvaWQgZXhjZXNzaXZlbHkgdXBkYXRpbmcgdGhlIHBvc2l0aW9uIHdoaWxlIHNjcm9sbGluZy5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdzY3JvbGwnLCBfLnRocm90dGxlKHVwZGF0ZVBvc2l0aW9uLCAxMDApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHJlbmV3VG9rZW5gIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBidXQgbm90IG1vcmUgdGhhbiBvbmNlIGV2ZXJ5IDUgbWludXRlcy5cbiAqIHZhciB0aHJvdHRsZWQgPSBfLnRocm90dGxlKHJlbmV3VG9rZW4sIDMwMDAwMCwgeyAndHJhaWxpbmcnOiBmYWxzZSB9KTtcbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB0aHJvdHRsZWQpO1xuICpcbiAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgdGhyb3R0bGVkIGludm9jYXRpb24uXG4gKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCB0aHJvdHRsZWQuY2FuY2VsKTtcbiAqL1xuZnVuY3Rpb24gdGhyb3R0bGUoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICB2YXIgbGVhZGluZyA9IHRydWUsXG4gICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgbGVhZGluZyA9ICdsZWFkaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLmxlYWRpbmcgOiBsZWFkaW5nO1xuICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gIH1cbiAgcmV0dXJuIGRlYm91bmNlKGZ1bmMsIHdhaXQsIHtcbiAgICAnbGVhZGluZyc6IGxlYWRpbmcsXG4gICAgJ21heFdhaXQnOiB3YWl0LFxuICAgICd0cmFpbGluZyc6IHRyYWlsaW5nXG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRocm90dGxlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1085\n")},1086:function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(156),\n now = __webpack_require__(1087),\n toNumber = __webpack_require__(1088);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVib3VuY2UuanM/NjI1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsR0FBWTtBQUNuQyxVQUFVLG1CQUFPLENBQUMsSUFBTztBQUN6QixlQUFlLG1CQUFPLENBQUMsSUFBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTyxZQUFZO0FBQzlCLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLDhDQUE4QyxrQkFBa0I7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIxMDg2LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIG5vdyA9IHJlcXVpcmUoJy4vbm93JyksXG4gICAgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICB0aW1lV2FpdGluZyA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgIHJldHVybiBtYXhpbmdcbiAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgIDogdGltZVdhaXRpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICB9XG4gICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgIH1cbiAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICByZXR1cm4gZGVib3VuY2VkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1086\n")},1087:function(module,exports,__webpack_require__){eval("var root = __webpack_require__(119);\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvbm93LmpzPzgyZDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsV0FBVyxtQkFBTyxDQUFDLEdBQVM7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIxMDg3LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1087\n")},1088:function(module,exports,__webpack_require__){eval("var baseTrim = __webpack_require__(1089),\n isObject = __webpack_require__(156),\n isSymbol = __webpack_require__(299);\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanM/NjM4MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsSUFBYTtBQUNwQyxlQUFlLG1CQUFPLENBQUMsR0FBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsR0FBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6IjEwODguanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVRyaW0gPSByZXF1aXJlKCcuL19iYXNlVHJpbScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gYmFzZVRyaW0odmFsdWUpO1xuICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1088\n")},1089:function(module,exports,__webpack_require__){eval("var trimmedEndIndex = __webpack_require__(1090);\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUcmltLmpzPzU4NWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCLG1CQUFPLENBQUMsSUFBb0I7O0FBRWxEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIxMDg5LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRyaW1tZWRFbmRJbmRleCA9IHJlcXVpcmUoJy4vX3RyaW1tZWRFbmRJbmRleCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltU3RhcnQgPSAvXlxccysvO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRyaW1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVHJpbShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZ1xuICAgID8gc3RyaW5nLnNsaWNlKDAsIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpICsgMSkucmVwbGFjZShyZVRyaW1TdGFydCwgJycpXG4gICAgOiBzdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRyaW07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1089\n")},1090:function(module,exports){eval("/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9tYWluL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RyaW1tZWRFbmRJbmRleC5qcz9jODgwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIxMDkwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgdG8gbWF0Y2ggYSBzaW5nbGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuICovXG52YXIgcmVXaGl0ZXNwYWNlID0gL1xccy87XG5cbi8qKlxuICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZVxuICogY2hhcmFjdGVyIG9mIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3Rlci5cbiAqL1xuZnVuY3Rpb24gdHJpbW1lZEVuZEluZGV4KHN0cmluZykge1xuICB2YXIgaW5kZXggPSBzdHJpbmcubGVuZ3RoO1xuXG4gIHdoaWxlIChpbmRleC0tICYmIHJlV2hpdGVzcGFjZS50ZXN0KHN0cmluZy5jaGFyQXQoaW5kZXgpKSkge31cbiAgcmV0dXJuIGluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRyaW1tZWRFbmRJbmRleDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1090\n")},577:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return TooltipNote; });\n/* harmony import */ var core_js_modules_es_string_bold_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(172);\n/* harmony import */ var core_js_modules_es_string_bold_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_bold_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _storybook_theming__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3);\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\nvar Note = _storybook_theming__WEBPACK_IMPORTED_MODULE_4__[\"styled\"].div(function (_ref) {\n var theme = _ref.theme;\n return {\n padding: '2px 6px',\n lineHeight: '16px',\n fontSize: 10,\n fontWeight: theme.typography.weight.bold,\n color: theme.color.lightest,\n boxShadow: '0 0 5px 0 rgba(0, 0, 0, 0.3)',\n borderRadius: 4,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n zIndex: -1,\n background: 'rgba(0, 0, 0, 0.4)',\n margin: 6\n };\n});\nvar TooltipNote = function TooltipNote(_ref2) {\n var note = _ref2.note,\n props = _objectWithoutProperties(_ref2, [\"note\"]);\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(Note, props, note);\n};\nTooltipNote.displayName = \"TooltipNote\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHN0b3J5Ym9vay9jb21wb25lbnRzL2Rpc3QvZXNtL3Rvb2x0aXAvVG9vbHRpcE5vdGUuanM/N2Q5NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFEQUFxRCwrQkFBK0IsOERBQThELFlBQVksb0NBQW9DLDZEQUE2RCxZQUFZLDZCQUE2QixPQUFPLDJCQUEyQiwwQ0FBMEMsd0VBQXdFLDJCQUEyQixFQUFFLEVBQUUsZUFBZTs7QUFFMWUsMERBQTBELCtCQUErQixpQkFBaUIsc0NBQXNDLFlBQVksWUFBWSx1QkFBdUIsT0FBTyxxQkFBcUIsMENBQTBDLDJCQUEyQixFQUFFLGVBQWU7O0FBRXRRO0FBQ0E7QUFDTDtBQUNaO0FBQ2tCO0FBQzVDLFdBQVcseURBQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNNO0FBQ1A7QUFDQTs7QUFFQSxzQkFBc0IsNENBQUs7QUFDM0I7QUFDQSIsImZpbGUiOiI1NzcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmJvbGQuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5qc1wiO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJ0BzdG9yeWJvb2svdGhlbWluZyc7XG52YXIgTm90ZSA9IHN0eWxlZC5kaXYoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIHRoZW1lID0gX3JlZi50aGVtZTtcbiAgcmV0dXJuIHtcbiAgICBwYWRkaW5nOiAnMnB4IDZweCcsXG4gICAgbGluZUhlaWdodDogJzE2cHgnLFxuICAgIGZvbnRTaXplOiAxMCxcbiAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LndlaWdodC5ib2xkLFxuICAgIGNvbG9yOiB0aGVtZS5jb2xvci5saWdodGVzdCxcbiAgICBib3hTaGFkb3c6ICcwIDAgNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjMpJyxcbiAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgIHpJbmRleDogLTEsXG4gICAgYmFja2dyb3VuZDogJ3JnYmEoMCwgMCwgMCwgMC40KScsXG4gICAgbWFyZ2luOiA2XG4gIH07XG59KTtcbmV4cG9ydCB2YXIgVG9vbHRpcE5vdGUgPSBmdW5jdGlvbiBUb29sdGlwTm90ZShfcmVmMikge1xuICB2YXIgbm90ZSA9IF9yZWYyLm5vdGUsXG4gICAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmMiwgW1wibm90ZVwiXSk7XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE5vdGUsIHByb3BzLCBub3RlKTtcbn07XG5Ub29sdGlwTm90ZS5kaXNwbGF5TmFtZSA9IFwiVG9vbHRpcE5vdGVcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///577\n")}}]);