coloration-lib
Advanced tools
Comparing version 0.1.1 to 0.1.2
@@ -130,3 +130,3 @@ (function (global, factory) { | ||
return this.calcColor ? this.value(function () { return '#' + (0x1000000 + _this.calcColor.intColor).toString(16).slice(1) | ||
+ (_this.calcColor.alpha < 1 ? (0x100 + Math.round(_this.calcColor.alpha * 256)).toString(16).slice(1) : ''); }) : null; | ||
+ (_this.calcColor.alpha < 1 ? (0x100 + Math.round(_this.calcColor.alpha * 255)).toString(16).slice(1) : ''); }) : null; | ||
}; | ||
@@ -185,3 +185,3 @@ /** | ||
intColor = parseInt(hexaColor, 16); | ||
alpha = hexaAlpha !== undefined ? parseInt(hexaAlpha, 16) / 256 : 1; | ||
alpha = hexaAlpha !== undefined ? parseInt(hexaAlpha, 16) / 255 : 1; | ||
} | ||
@@ -188,0 +188,0 @@ if (intColor === undefined) { |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define("coloration-lib",["exports"],t):t((e=e||self)["coloration-lib"]={})}(this,(function(e){"use strict";var t=/^#?(([\da-f]{3})(([\da-f]{3})([\da-f]{2})?|[\da-f]{1})?)$/i,r=/^rgba?\(([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)((,\s*)([\d]*(\.[\d]+)?))?\)$/i,a=/^hsla?\(([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)\%(,?\s*|\s+)([\d]*(\.[\d]+)?)\%((,\s*)([\d]*(\.[\d]+)?))?\)$/i,o=function(){function e(e){this.color=e,this.rgb={r:0,g:0,b:0,a:1},this.hsv={h:0,s:0,v:0,a:1},this.reset()}return e.prototype.reset=function(){this.color&&(this.calcColor=this.parseColor(this.color),this.updateColor())},e.prototype.changeLuminosity=function(e){return e=this.minmax(e,-1,1),this.maskColor(e<0?"#000":"#FFF",Math.abs(e)),this},e.prototype.maskColor=function(e,t){if(void 0===t&&(t=1),this.calcColor){var r=this.calcColor,a=this.parseColor(e),o=this.minmax(t,0,1),i=r.intColor>>16,f=r.intColor>>8&255,s=255&r.intColor;a.alpha&&(this.calcColor.alpha=this.minmax(r.alpha+a.alpha*t,0,1)),this.calcColor.intColor=this.rgbToInt(Math.round(((a.intColor>>16)-i)*o)+i,Math.round(((a.intColor>>8&255)-f)*o)+f,Math.round(((255&a.intColor)-s)*o)+s),this.updateColor()}return this},e.prototype.addColor=function(e){return this.calcColor&&(e.luminosity&&this.changeLuminosity(e.luminosity),e.maskColor&&this.maskColor(e.maskColor,this.minmax(e.maskOpacity||0,0,1)),(e.r||e.g||e.b)&&(e.r&&(this.rgb.r=this.minmax(this.rgb.r+ +e.r,0,255)),e.g&&(this.rgb.g=this.minmax(this.rgb.g+ +e.g,0,255)),e.b&&(this.rgb.b=this.minmax(this.rgb.b+ +e.b,0,255)),this.calcColor.intColor=this.rgbToInt(this.rgb.r,this.rgb.g,this.rgb.b),this.updateColor()),(e.h||e.s||e.v)&&(e.h&&(this.hsv.h=(this.hsv.h+ +e.h+360)%360),e.s&&(this.hsv.s=this.minmax(this.hsv.s+ +e.s,0,100)),e.v&&(this.hsv.v=this.minmax(this.hsv.v+ +e.v,0,100)),this.calcColor.intColor=this.hsvToInt(this.hsv.h,this.hsv.s,this.hsv.v),this.updateColor()),e.alpha&&(this.hsv.a=this.rgb.a=this.calcColor.alpha=this.minmax(this.calcColor.alpha+ +e.alpha,0,1))),this},e.prototype.getRGB=function(){var e=this;return this.calcColor?this.value((function(){return Object.assign({},e.rgb)})):null},e.prototype.getHSV=function(){var e=this;return this.calcColor?this.value((function(){return Object.assign({},e.hsv)})):null},e.prototype.toHEX=function(){var e=this;return this.calcColor?this.value((function(){return"#"+(16777216+e.calcColor.intColor).toString(16).slice(1)+(e.calcColor.alpha<1?(256+Math.round(256*e.calcColor.alpha)).toString(16).slice(1):"")})):null},e.prototype.toHSL=function(){var e=this;return this.calcColor?this.value((function(){return"hsl("+e.hsv.h+", "+e.hsv.s+"%, "+e.hsv.v+"%"+(e.hsv.a<1?", "+e.hsv.a:"")+")"})):null},e.prototype.toRGB=function(){var e=this;return this.calcColor?this.value((function(){return"rgb("+e.rgb.r+", "+e.rgb.g+", "+e.rgb.b+(e.rgb.a<1?", "+e.rgb.a:"")+")"})):null},e.prototype.updateColor=function(){var e=this.calcColor.intColor;this.rgb.r=e>>16,this.rgb.g=e>>8&255,this.rgb.b=255&e,this.rgb.a=this.calcColor.alpha,this.hsv=this.rgb2hsv(this.rgb.r,this.rgb.g,this.rgb.b),this.hsv.a=this.calcColor.alpha},e.prototype.parseColor=function(o){e.colorsName[o]&&(o=e.colorsName[o]);var i,f=String(o).match(t),s=1;if(f){var l=f[4]?f[2]+f[4]:f[2][0]+f[2][0]+f[2][1]+f[2][1]+f[2][2]+f[2][2],n=f[4]?f[5]:f[3]?f[3][1]+f[3][1]:void 0;i=parseInt(l,16),s=void 0!==n?parseInt(n,16)/256:1}if(void 0===i){var h=String(o).match(r);h&&(i=this.rgbToInt(parseInt(h[1],10),parseInt(h[4],10),parseInt(h[7],10)),s=void 0!==h[11]?parseFloat(h[11]):1)}if(void 0===i){var d=String(o).match(a);d&&(i=this.hsvToInt(parseInt(d[1],10),parseInt(d[4],10),parseInt(d[7],10)),s=void 0!==d[11]?parseFloat(d[11]):1)}return{intColor:i,alpha:s}},e.prototype.hsvToInt=function(e,t,r){var a=(t=Math.max(0,t))/100,o=r/100,i=e/360;if(0===t)return this.rgbToInt(256*o,256*o,256*o);var f=o<.5?o*(1+a):o+a-o*a,s=2*o-f,l=this.hue2rgb(s,f,i+1/3),n=this.hue2rgb(s,f,i),h=this.hue2rgb(s,f,i-1/3);return this.rgbToInt(Math.round(255*l),Math.round(255*n),Math.round(255*h))},e.prototype.hue2rgb=function(e,t,r){return r<0?r+=1:r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e},e.prototype.rgb2hsv=function(e,t,r){e/=255,t/=255,r/=255;var a,o,i=Math.max(e,t,r),f=Math.min(e,t,r),s=(i+f)/2;if(i===f)a=0,o=0;else{var l=i-f;switch(o=l/(1-Math.abs(2*s-1)),i){case e:a=(t-r)/l+(t<r?6:0);break;case t:a=(r-e)/l+2;break;case r:a=(e-t)/l+4}}return{h:Math.round(60*a),s:Math.round(100*o),v:Math.round(100*s)}},e.prototype.rgbToInt=function(e,t,r){return 65536*Math.round(e)+256*Math.round(t)+Math.round(r)},e.prototype.minmax=function(e,t,r,a){return void 0===a&&(a=0),Math.min(Math.max(e||a,t),r)},e.prototype.value=function(e){return isNaN(this.calcColor.intColor)?null:e()},e.colorsName={black:"#000000",silver:"#c0c0c0",gray:"#808080",white:"#ffffff",maroon:"#800000",red:"#ff0000",purple:"#800080",fuchsia:"#ff00ff",green:"#008000",lime:"#00ff00",olive:"#808000",yellow:"#ffff00",navy:"#000080",blue:"#0000ff",teal:"#008080",aqua:"#00ffff",orange:"#ffa500",aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",deaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",defuchsia:"#ff00ff",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",oldlace:"#fdf5e6",olivedrab:"#6b8e23",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellowgreen:"#9acd32",rebeccapurple:"#663399"},e}();e.Coloration=o,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define("coloration-lib",["exports"],t):t((e=e||self)["coloration-lib"]={})}(this,(function(e){"use strict";var t=/^#?(([\da-f]{3})(([\da-f]{3})([\da-f]{2})?|[\da-f]{1})?)$/i,r=/^rgba?\(([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)((,\s*)([\d]*(\.[\d]+)?))?\)$/i,a=/^hsla?\(([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)\%(,?\s*|\s+)([\d]*(\.[\d]+)?)\%((,\s*)([\d]*(\.[\d]+)?))?\)$/i,o=function(){function e(e){this.color=e,this.rgb={r:0,g:0,b:0,a:1},this.hsv={h:0,s:0,v:0,a:1},this.reset()}return e.prototype.reset=function(){this.color&&(this.calcColor=this.parseColor(this.color),this.updateColor())},e.prototype.changeLuminosity=function(e){return e=this.minmax(e,-1,1),this.maskColor(e<0?"#000":"#FFF",Math.abs(e)),this},e.prototype.maskColor=function(e,t){if(void 0===t&&(t=1),this.calcColor){var r=this.calcColor,a=this.parseColor(e),o=this.minmax(t,0,1),i=r.intColor>>16,f=r.intColor>>8&255,s=255&r.intColor;a.alpha&&(this.calcColor.alpha=this.minmax(r.alpha+a.alpha*t,0,1)),this.calcColor.intColor=this.rgbToInt(Math.round(((a.intColor>>16)-i)*o)+i,Math.round(((a.intColor>>8&255)-f)*o)+f,Math.round(((255&a.intColor)-s)*o)+s),this.updateColor()}return this},e.prototype.addColor=function(e){return this.calcColor&&(e.luminosity&&this.changeLuminosity(e.luminosity),e.maskColor&&this.maskColor(e.maskColor,this.minmax(e.maskOpacity||0,0,1)),(e.r||e.g||e.b)&&(e.r&&(this.rgb.r=this.minmax(this.rgb.r+ +e.r,0,255)),e.g&&(this.rgb.g=this.minmax(this.rgb.g+ +e.g,0,255)),e.b&&(this.rgb.b=this.minmax(this.rgb.b+ +e.b,0,255)),this.calcColor.intColor=this.rgbToInt(this.rgb.r,this.rgb.g,this.rgb.b),this.updateColor()),(e.h||e.s||e.v)&&(e.h&&(this.hsv.h=(this.hsv.h+ +e.h+360)%360),e.s&&(this.hsv.s=this.minmax(this.hsv.s+ +e.s,0,100)),e.v&&(this.hsv.v=this.minmax(this.hsv.v+ +e.v,0,100)),this.calcColor.intColor=this.hsvToInt(this.hsv.h,this.hsv.s,this.hsv.v),this.updateColor()),e.alpha&&(this.hsv.a=this.rgb.a=this.calcColor.alpha=this.minmax(this.calcColor.alpha+ +e.alpha,0,1))),this},e.prototype.getRGB=function(){var e=this;return this.calcColor?this.value((function(){return Object.assign({},e.rgb)})):null},e.prototype.getHSV=function(){var e=this;return this.calcColor?this.value((function(){return Object.assign({},e.hsv)})):null},e.prototype.toHEX=function(){var e=this;return this.calcColor?this.value((function(){return"#"+(16777216+e.calcColor.intColor).toString(16).slice(1)+(e.calcColor.alpha<1?(256+Math.round(255*e.calcColor.alpha)).toString(16).slice(1):"")})):null},e.prototype.toHSL=function(){var e=this;return this.calcColor?this.value((function(){return"hsl("+e.hsv.h+", "+e.hsv.s+"%, "+e.hsv.v+"%"+(e.hsv.a<1?", "+e.hsv.a:"")+")"})):null},e.prototype.toRGB=function(){var e=this;return this.calcColor?this.value((function(){return"rgb("+e.rgb.r+", "+e.rgb.g+", "+e.rgb.b+(e.rgb.a<1?", "+e.rgb.a:"")+")"})):null},e.prototype.updateColor=function(){var e=this.calcColor.intColor;this.rgb.r=e>>16,this.rgb.g=e>>8&255,this.rgb.b=255&e,this.rgb.a=this.calcColor.alpha,this.hsv=this.rgb2hsv(this.rgb.r,this.rgb.g,this.rgb.b),this.hsv.a=this.calcColor.alpha},e.prototype.parseColor=function(o){e.colorsName[o]&&(o=e.colorsName[o]);var i,f=String(o).match(t),s=1;if(f){var l=f[4]?f[2]+f[4]:f[2][0]+f[2][0]+f[2][1]+f[2][1]+f[2][2]+f[2][2],n=f[4]?f[5]:f[3]?f[3][1]+f[3][1]:void 0;i=parseInt(l,16),s=void 0!==n?parseInt(n,16)/255:1}if(void 0===i){var h=String(o).match(r);h&&(i=this.rgbToInt(parseInt(h[1],10),parseInt(h[4],10),parseInt(h[7],10)),s=void 0!==h[11]?parseFloat(h[11]):1)}if(void 0===i){var d=String(o).match(a);d&&(i=this.hsvToInt(parseInt(d[1],10),parseInt(d[4],10),parseInt(d[7],10)),s=void 0!==d[11]?parseFloat(d[11]):1)}return{intColor:i,alpha:s}},e.prototype.hsvToInt=function(e,t,r){var a=(t=Math.max(0,t))/100,o=r/100,i=e/360;if(0===t)return this.rgbToInt(256*o,256*o,256*o);var f=o<.5?o*(1+a):o+a-o*a,s=2*o-f,l=this.hue2rgb(s,f,i+1/3),n=this.hue2rgb(s,f,i),h=this.hue2rgb(s,f,i-1/3);return this.rgbToInt(Math.round(255*l),Math.round(255*n),Math.round(255*h))},e.prototype.hue2rgb=function(e,t,r){return r<0?r+=1:r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e},e.prototype.rgb2hsv=function(e,t,r){e/=255,t/=255,r/=255;var a,o,i=Math.max(e,t,r),f=Math.min(e,t,r),s=(i+f)/2;if(i===f)a=0,o=0;else{var l=i-f;switch(o=l/(1-Math.abs(2*s-1)),i){case e:a=(t-r)/l+(t<r?6:0);break;case t:a=(r-e)/l+2;break;case r:a=(e-t)/l+4}}return{h:Math.round(60*a),s:Math.round(100*o),v:Math.round(100*s)}},e.prototype.rgbToInt=function(e,t,r){return 65536*Math.round(e)+256*Math.round(t)+Math.round(r)},e.prototype.minmax=function(e,t,r,a){return void 0===a&&(a=0),Math.min(Math.max(e||a,t),r)},e.prototype.value=function(e){return isNaN(this.calcColor.intColor)?null:e()},e.colorsName={black:"#000000",silver:"#c0c0c0",gray:"#808080",white:"#ffffff",maroon:"#800000",red:"#ff0000",purple:"#800080",fuchsia:"#ff00ff",green:"#008000",lime:"#00ff00",olive:"#808000",yellow:"#ffff00",navy:"#000080",blue:"#0000ff",teal:"#008080",aqua:"#00ffff",orange:"#ffa500",aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",deaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",defuchsia:"#ff00ff",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",oldlace:"#fdf5e6",olivedrab:"#6b8e23",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellowgreen:"#9acd32",rebeccapurple:"#663399"},e}();e.Coloration=o,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=coloration-lib.umd.min.js.map |
# Changelog of coloration-lib | ||
## V0.1.2 (2020-05-04) | ||
### Corrections | ||
- fix alpha calculation for `toHEX()` | ||
## V0.1.1 (2020-05-02) | ||
@@ -12,3 +18,3 @@ | ||
- fix calculation when no alpha | ||
- fix calculation alpha with mask opacity | ||
- fix alpha calculation with mask opacity | ||
@@ -15,0 +21,0 @@ ## V0.1.0 (2020-05-01) |
@@ -120,3 +120,3 @@ // tslint:disable:no-bitwise | ||
return this.calcColor ? this.value(() => '#' + (0x1000000 + this.calcColor.intColor).toString(16).slice(1) | ||
+ (this.calcColor.alpha < 1 ? (0x100 + Math.round(this.calcColor.alpha * 256)).toString(16).slice(1) : '')) : null; | ||
+ (this.calcColor.alpha < 1 ? (0x100 + Math.round(this.calcColor.alpha * 255)).toString(16).slice(1) : '')) : null; | ||
} | ||
@@ -173,3 +173,3 @@ /** | ||
intColor = parseInt(hexaColor, 16); | ||
alpha = hexaAlpha !== undefined ? parseInt(hexaAlpha, 16) / 256 : 1; | ||
alpha = hexaAlpha !== undefined ? parseInt(hexaAlpha, 16) / 255 : 1; | ||
} | ||
@@ -363,2 +363,2 @@ if (intColor === undefined) { | ||
}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbG9yYXRpb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbG9yYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBRTVCLE1BQU0sT0FBTyxHQUFHO0lBQ1osSUFBSSxFQUFFLDREQUE0RDtJQUNsRSxJQUFJLEVBQUUsaUhBQWlIO0lBQ3ZILElBQUksRUFBRSxxSEFBcUg7Q0FDOUgsQ0FBQztBQW9DRixNQUFNLE9BQU8sVUFBVTtJQWtEbkIsWUFBbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFIeEIsUUFBRyxHQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3RDLFFBQUcsR0FBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUcxQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ3hCLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FB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QUMsS0FBSyxDQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEYsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUs7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQzlCLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2NBQ2pFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ2pILENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUM5QixHQUFHLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FDdkcsQ0FBQyxDQUFDLENB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VUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVM7SUFDMUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUztJQUNyRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTO0lBQ3JHLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVM7SUFDbkcsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUztJQUN4RyxRQUFRO0lBQ1IsYUFBYSxFQUFFLFNBQVM7Q0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZVxuXG5jb25zdCBwYXR0ZXJuID0ge1xuICAgIGhleGE6IC9eIz8oKFtcXGRhLWZdezN9KSgoW1xcZGEtZl17M30pKFtcXGRhLWZdezJ9KT98W1xcZGEtZl17MX0pPykkL2ksXG4gICAgcmdiYTogL15yZ2JhP1xcKChbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCgsXFxzKikoW1xcZF0qKFxcLltcXGRdKyk/KSk/XFwpJC9pLFxuICAgIGhzdmE6IC9eaHNsYT9cXCgoW1xcZF0qKFxcLltcXGRdKyk/KSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgoLFxccyopKFtcXGRdKihcXC5bXFxkXSspPykpP1xcKSQvaVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBSR0Ige1xuICAgIC8qKiBSZWQgY29sb3IgdmFsdWUgWzAsMjU1XSAgICovIHI6IG51bWJlcjtcbiAgICAvKiogR3JlZW4gY29sb3IgdmFsdWUgWzAsMjU1XSAqLyBnOiBudW1iZXI7XG4gICAgLyoqIEJsdWUgY29sb3IgdmFsdWUgWzAsMjU1XSAgKi8gYjogbnVtYmVyO1xuICAgIC8qKiBBbHBoYSBjb2xvciB2YWx1ZSBbMCwxXSAgICovIGE/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEhTViB7XG4gICAgLyoqIEh1ZSBjb2xvciB2YWx1ZSBbMCwzNjBdICAgICAgICAgICAgICovIGg6IG51bWJlcjtcbiAgICAvKiogU2FsdXJhdGlvbiBjb2xvciB2YWx1ZSBbMCwxMDBdICAgICAgKi8gczogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgY29sb3IgdmFsdWUgWzAsMTAwXSAqLyB2OiBudW1iZXI7XG4gICAgLyoqIEFscGhhIGNvbG9yIHZhbHVlIFswLDFdICAgICAgICAgICAgICovIGE/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbG9yRGF0YSB7XG4gICAgLy8gUkdCXG4gICAgLyoqIFJlZCBjb2xvciB2YWx1ZSBbLTI1NiwyNTVdICAgICAgICovIHI/OiBudW1iZXI7XG4gICAgLyoqIEdyZWVuIGNvbG9yIHZhbHVlIFstMjU2LDI1NV0gICAgICovIGc/OiBudW1iZXI7XG4gICAgLyoqIEJsdWUgY29sb3IgdmFsdWUgWy0yNTYsMjU1XSAgICAgICovIGI/OiBudW1iZXI7XG4gICAgLy8gSFNWL0hTTFxuICAgIC8qKiBIdWUgdmFsdWUgWy0zNjAsMzYwXSAgICAgICAgICAgICAqLyBoPzogbnVtYmVyO1xuICAgIC8qKiBTYWx1cmF0aW9uIHZhbHVlIFstMTAwLDEwMF0gICAgICAqLyBzPzogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgdmFsdWUgWy0xMDAsMTAwXSAqLyB2PzogbnVtYmVyO1xuICAgIC8vIE90aGVyXG4gICAgLyoqIGx1bWlub3NpdHkgdmFsdWUgWy0xLDFdICAgICAgICAgICovIGx1bWlub3NpdHk/OiBudW1iZXI7XG4gICAgLyoqIGNvbG9yIG1hc2sgICAgICAgICAgICAgICAgICAgICAgICovIG1hc2tDb2xvcj86IHN0cmluZztcbiAgICAvKiogY29sb3IgbWFzayBvcGFjaXR5IFswLDFdICAgICAgICAgKi8gbWFza09wYWNpdHk/OiBudW1iZXI7XG4gICAgLy8gYWxwaGFcbiAgICAvKiogY29sb3IgbWFzayBhbHBoYSBbLTEsMV0gICAgICAgICAgKi8gYWxwaGE/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JOdW1iZXIge1xuICAgICAvKiogaW50Y29sb3IgKi8gaW50Q29sb3I6IG51bWJlcjtcbiAgICAgLyoqIEFscGhhIGNvbG9yIHZhbHVlIFswLDFdICovIGFscGhhOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xvcmF0aW9uIHtcblxuICAgIC8qKlxuICAgICAqIENTUyBjb2xvciBsaXN0XG4gICAgICovXG4gICAgc3RhdGljIGNvbG9yc05hbWU6IGFueSA9IHtcbiAgICAgICAgLy8gQ1NTIDFcbiAgICAgICAgYmxhY2s6ICcjMDAwMDAwJywgc2lsdmVyOiAnI2MwYzBjMCcsIGdyYXk6ICcjODA4MDgwJywgd2hpdGU6ICcjZmZmZmZmJywgbWFyb29uOiAnIzgwMDAwMCcsIHJlZDogJyNmZjAwMDAnLFxuICAgICAgICBwdXJwbGU6ICcjODAwMDgwJywgZnVjaHNpYTogJyNmZjAwZmYnLCBncmVlbjogJyMwMDgwMDAnLCBsaW1lOiAnIzAwZmYwMCcsIG9saXZlOiAnIzgwODAwMCcsIHllbGxvdzogJyNmZmZmMDAnLFxuICAgICAgICBuYXZ5OiAnIzAwMDA4MCcsIGJsdWU6ICcjMDAwMGZmJywgdGVhbDogJyMwMDgwODAnLCBhcXVhOiAnIzAwZmZmZicsXG4gICAgICAgIC8vIENTUyAyIChSZXZpc2lvbiAxKVxuICAgICAgICBvcmFuZ2U6ICcjZmZhNTAwJyxcbiAgICAgICAgLy8gQ1NTIDNcbiAgICAgICAgYWxpY2VibHVlOiAnI2YwZjhmZicsIGFudGlxdWV3aGl0ZTogJyNmYWViZDcnLCBhcXVhbWFyaW5lOiAnIzdmZmZkNCcsIGF6dXJlOiAnI2YwZmZmZicsIGJlaWdlOiAnI2Y1ZjVkYycsXG4gICAgICAgIGJpc3F1ZTogJyNmZmU0YzQnLCBibGFuY2hlZGFsbW9uZDogJyNmZmViY2QnLCBibHVldmlvbGV0OiAnIzhhMmJlMicsIGJyb3duOiAnI2E1MmEyYScsIGJ1cmx5d29vZDogJyNkZWI4ODcnLFxuICAgICAgICBjYWRldGJsdWU6ICcjNWY5ZWEwJywgY2hhcnRyZXVzZTogJyM3ZmZmMDAnLCBjaG9jb2xhdGU6ICcjZDI2OTFlJywgY29yYWw6ICcjZmY3ZjUwJywgY29ybmZsb3dlcmJsdWU6ICcjNjQ5NWVkJyxcbiAgICAgICAgY29ybnNpbGs6ICcjZmZmOGRjJywgY3JpbXNvbjogJyNkYzE0M2MnLCBjeWFuOiAnIzAwZmZmZicsIGRlYXF1YTogJyMwMGZmZmYnLCBkYXJrYmx1ZTogJyMwMDAwOGInLFxuICAgICAgICBkYXJrY3lhbjogJyMwMDhiOGInLCBkYXJrZ29sZGVucm9kOiAnI2I4ODYwYicsIGRhcmtncmF5OiAnI2E5YTlhOScsIGRhcmtncmVlbjogJyMwMDY0MDAnLCBkYXJrZ3JleTogJyNhOWE5YTknLFxuICAgICAgICBkYXJra2hha2k6ICcjYmRiNzZiJywgZGFya21hZ2VudGE6ICcjOGIwMDhiJywgZGFya29saXZlZ3JlZW46ICcjNTU2YjJmJywgZGFya29yYW5nZTogJyNmZjhjMDAnLFxuICAgICAgICBkYXJrb3JjaGlkOiAnIzk5MzJjYycsIGRhcmtyZWQ6ICcjOGIwMDAwJywgZGFya3NhbG1vbjogJyNlOTk2N2EnLCBkYXJrc2VhZ3JlZW46ICcjOGZiYzhmJyxcbiAgICAgICAgZGFya3NsYXRlYmx1ZTogJyM0ODNkOGInLCBkYXJrc2xhdGVncmF5OiAnIzJmNGY0ZicsIGRhcmtzbGF0ZWdyZXk6ICcjMmY0ZjRmJywgZGFya3R1cnF1b2lzZTogJyMwMGNlZDEnLFxuICAgICAgICBkYXJrdmlvbGV0OiAnIzk0MDBkMycsIGRlZXBwaW5rOiAnI2ZmMTQ5MycsIGRlZXBza3libHVlOiAnIzAwYmZmZicsIGRpbWdyYXk6ICcjNjk2OTY5JywgZGltZ3JleTogJyM2OTY5NjknLFxuICAgICAgICBkb2RnZXJibHVlOiAnIzFlOTBmZicsIGZpcmVicmljazogJyNiMjIyMjInLCBmbG9yYWx3aGl0ZTogJyNmZmZhZjAnLCBmb3Jlc3RncmVlbjogJyMyMjhiMjInLFxuICAgICAgICBnYWluc2Jvcm86ICcjZGNkY2RjJywgZ2hvc3R3aGl0ZTogJyNmOGY4ZmYnLCBnb2xkOiAnI2ZmZDcwMCcsIGdvbGRlbnJvZDogJyNkYWE1MjAnLCBncmVlbnllbGxvdzogJyNhZGZmMmYnLFxuICAgICAgICBncmV5OiAnIzgwODA4MCcsIGhvbmV5ZGV3OiAnI2YwZmZmMCcsIGhvdHBpbms6ICcjZmY2OWI0JywgaW5kaWFucmVkOiAnI2NkNWM1YycsIGluZGlnbzogJyM0YjAwODInLFxuICAgICAgICBpdm9yeTogJyNmZmZmZjAnLCBraGFraTogJyNmMGU2OGMnLCBsYXZlbmRlcjogJyNlNmU2ZmEnLCBsYXZlbmRlcmJsdXNoOiAnI2ZmZjBmNScsIGxhd25ncmVlbjogJyM3Y2ZjMDAnLFxuICAgICAgICBsZW1vbmNoaWZmb246ICcjZmZmYWNkJywgbGlnaHRibHVlOiAnI2FkZDhlNicsIGxpZ2h0Y29yYWw6ICcjZjA4MDgwJywgbGlnaHRjeWFuOiAnI2UwZmZmZicsXG4gICAgICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiAnI2ZhZmFkMicsIGxpZ2h0Z3JheTogJyNkM2QzZDMnLCBsaWdodGdyZWVuOiAnIzkwZWU5MCcsIGxpZ2h0Z3JleTogJyNkM2QzZDMnLFxuICAgICAgICBsaWdodHBpbms6ICcjZmZiNmMxJywgbGlnaHRzYWxtb246ICcjZmZhMDdhJywgbGlnaHRzZWFncmVlbjogJyMyMGIyYWEnLCBsaWdodHNreWJsdWU6ICcjODdjZWZhJyxcbiAgICAgICAgbGlnaHRzbGF0ZWdyYXk6ICcjNzc4ODk5JywgbGlnaHRzbGF0ZWdyZXk6ICcjNzc4ODk5JywgbGlnaHRzdGVlbGJsdWU6ICcjYjBjNGRlJywgbGlnaHR5ZWxsb3c6ICcjZmZmZmUwJyxcbiAgICAgICAgbGltZWdyZWVuOiAnIzMyY2QzMicsIGxpbmVuOiAnI2ZhZjBlNicsIG1hZ2VudGE6ICcjZmYwMGZmJywgZGVmdWNoc2lhOiAnI2ZmMDBmZicsIG1lZGl1bWFxdWFtYXJpbmU6ICcjNjZjZGFhJyxcbiAgICAgICAgbWVkaXVtYmx1ZTogJyMwMDAwY2QnLCBtZWRpdW1vcmNoaWQ6ICcjYmE1NWQzJywgbWVkaXVtcHVycGxlOiAnIzkzNzBkYicsIG1lZGl1bXNlYWdyZWVuOiAnIzNjYjM3MScsXG4gICAgICAgIG1lZGl1bXNsYXRlYmx1ZTogJyM3YjY4ZWUnLCBtZWRpdW1zcHJpbmdncmVlbjogJyMwMGZhOWEnLCBtZWRpdW10dXJxdW9pc2U6ICcjNDhkMWNjJyxcbiAgICAgICAgbWVkaXVtdmlvbGV0cmVkOiAnI2M3MTU4NScsIG1pZG5pZ2h0Ymx1ZTogJyMxOTE5NzAnLCBtaW50Y3JlYW06ICcjZjVmZmZhJywgbWlzdHlyb3NlOiAnI2ZmZTRlMScsXG4gICAgICAgIG1vY2Nhc2luOiAnI2ZmZTRiNScsIG5hdmFqb3doaXRlOiAnI2ZmZGVhZCcsIG9sZGxhY2U6ICcjZmRmNWU2Jywgb2xpdmVkcmFiOiAnIzZiOGUyMycsIG9yYW5nZXJlZDogJyNmZjQ1MDAnLFxuICAgICAgICBvcmNoaWQ6ICcjZGE3MGQ2JywgcGFsZWdvbGRlbnJvZDogJyNlZWU4YWEnLCBwYWxlZ3JlZW46ICcjOThmYjk4JywgcGFsZXR1cnF1b2lzZTogJyNhZmVlZWUnLFxuICAgICAgICBwYWxldmlvbGV0cmVkOiAnI2RiNzA5MycsIHBhcGF5YXdoaXA6ICcjZmZlZmQ1JywgcGVhY2hwdWZmOiAnI2ZmZGFiOScsIHBlcnU6ICcjY2Q4NTNmJywgcGluazogJyNmZmMwY2InLFxuICAgICAgICBwbHVtOiAnI2RkYTBkZCcsIHBvd2RlcmJsdWU6ICcjYjBlMGU2Jywgcm9zeWJyb3duOiAnI2JjOGY4ZicsIHJveWFsYmx1ZTogJyM0MTY5ZTEnLCBzYWRkbGVicm93bjogJyM4YjQ1MTMnLFxuICAgICAgICBzYWxtb246ICcjZmE4MDcyJywgc2FuZHlicm93bjogJyNmNGE0NjAnLCBzZWFncmVlbjogJyMyZThiNTcnLCBzZWFzaGVsbDogJyNmZmY1ZWUnLCBzaWVubmE6ICcjYTA1MjJkJyxcbiAgICAgICAgc2t5Ymx1ZTogJyM4N2NlZWInLCBzbGF0ZWJsdWU6ICcjNmE1YWNkJywgc2xhdGVncmF5OiAnIzcwODA5MCcsIHNsYXRlZ3JleTogJyM3MDgwOTAnLCBzbm93OiAnI2ZmZmFmYScsXG4gICAgICAgIHNwcmluZ2dyZWVuOiAnIzAwZmY3ZicsIHN0ZWVsYmx1ZTogJyM0NjgyYjQnLCB0YW46ICcjZDJiNDhjJywgdGhpc3RsZTogJyNkOGJmZDgnLCB0b21hdG86ICcjZmY2MzQ3JyxcbiAgICAgICAgdHVycXVvaXNlOiAnIzQwZTBkMCcsIHZpb2xldDogJyNlZTgyZWUnLCB3aGVhdDogJyNmNWRlYjMnLCB3aGl0ZXNtb2tlOiAnI2Y1ZjVmNScsIHllbGxvd2dyZWVuOiAnIzlhY2QzMicsXG4gICAgICAgIC8vIENTUyA0XG4gICAgICAgIHJlYmVjY2FwdXJwbGU6ICcjNjYzMzk5J1xuICAgIH07XG5cbiAgICBwcml2YXRlIGNhbGNDb2xvcjogQ29sb3JOdW1iZXI7XG4gICAgcHJpdmF0ZSByZ2I6IFJHQiA9IHsgcjogMCwgZzogMCwgYjogMCwgYTogMSB9O1xuICAgIHByaXZhdGUgaHN2OiBIU1YgPSB7IGg6IDAsIHM6IDAsIHY6IDAsIGE6IDEgfTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb2xvcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZWluaXQgdG8gYmFzZSBjb2xvclxuICAgICAqL1xuICAgIHJlc2V0KCkge1xuICAgICAgICBpZiAodGhpcy5jb2xvcikge1xuICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IgPSB0aGlzLnBhcnNlQ29sb3IodGhpcy5jb2xvcik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgdGhlIGx1bWlub3NpdHkgb2YgYSBjb2xvclxuICAgICAqIEBwYXJhbSBsdW0gdmFsdWUgYmV0d2VlbiAtMSBhbmQgMVxuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBjaGFuZ2VMdW1pbm9zaXR5KGx1bTogbnVtYmVyKTogQ29sb3JhdGlvbiB7XG4gICAgICAgIGx1bSA9IHRoaXMubWlubWF4KGx1bSwgLTEsIDEpO1xuICAgICAgICB0aGlzLm1hc2tDb2xvcihsdW0gPCAwID8gJyMwMDAnIDogJyNGRkYnLCBNYXRoLmFicyhsdW0pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWRkIGNvbG9yIHdpdGggYSBtYXJrXG4gICAgICogQHBhcmFtIGNvbG9yIGFkZGl0aW9uYWwgY29sb3JcbiAgICAgKiBAcGFyYW0gb3BhY2l0eSB2YWx1ZSBvZiBvcGFjaXR5IGJldHdlZW4gMCBhbmQgMSBmb3IgdGhlIGFkZGl0aW9uYWwgY29sb3JcbiAgICAgKiBAcmV0dXJucyBDb2xvcmF0aW9uXG4gICAgICovXG4gICAgbWFza0NvbG9yKGNvbG9yOiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlciA9IDEpOiBDb2xvcmF0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuY2FsY0NvbG9yKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlQ29sb3IgPSB0aGlzLmNhbGNDb2xvcjtcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDb2xvciA9IHRoaXMucGFyc2VDb2xvcihjb2xvcik7XG5cbiAgICAgICAgICAgIGNvbnN0IGx1bSA9IHRoaXMubWlubWF4KG9wYWNpdHksIDAsIDEpO1xuXG4gICAgICAgICAgICBjb25zdCBSID0gYmFzZUNvbG9yLmludENvbG9yID4+IDE2O1xuICAgICAgICAgICAgY29uc3QgRyA9IGJhc2VDb2xvci5pbnRDb2xvciA+PiA4ICYgMHgwMEZGO1xuICAgICAgICAgICAgY29uc3QgQiA9IGJhc2VDb2xvci5pbnRDb2xvciAmIDB4MDAwMEZGO1xuXG4gICAgICAgICAgICBpZiAoYWRkaXRpb25hbENvbG9yLmFscGhhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IuYWxwaGEgPSB0aGlzLm1pbm1heChiYXNlQ29sb3IuYWxwaGEgKyBhZGRpdGlvbmFsQ29sb3IuYWxwaGEgKiBvcGFjaXR5LCAwLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2FsY0NvbG9yLmludENvbG9yID0gdGhpcy5yZ2JUb0ludChcbiAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKCgoYWRkaXRpb25hbENvbG9yLmludENvbG9yID4+IDE2KSAtIFIpICogbHVtKSArIFIsXG4gICAgICAgICAgICAgICAgTWF0aC5yb3VuZCgoKGFkZGl0aW9uYWxDb2xvci5pbnRDb2xvciA+PiA4ICYgMHgwMEZGKSAtIEcpICogbHVtKSArIEcsXG4gICAgICAgICAgICAgICAgTWF0aC5yb3VuZCgoKGFkZGl0aW9uYWxDb2xvci5pbnRDb2xvciAmIDB4MDAwMEZGKSAtIEIpICogbHVtKSArIEJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2hhbmdlIGNvbG9yIHdpdGggY29sb3IgcGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBjb2xvckRhdGEgYWRkaXRpb25uYWwgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBhZGRDb2xvcihjb2xvckRhdGE6IENvbG9yRGF0YSkge1xuICAgICAgICBpZiAodGhpcy5jYWxjQ29sb3IpIHtcbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEubHVtaW5vc2l0eSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlTHVtaW5vc2l0eShjb2xvckRhdGEubHVtaW5vc2l0eSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEubWFza0NvbG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrQ29sb3IoY29sb3JEYXRhLm1hc2tDb2xvciwgdGhpcy5taW5tYXgoY29sb3JEYXRhLm1hc2tPcGFjaXR5IHx8IDAsIDAsIDEpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5yIHx8IGNvbG9yRGF0YS5nIHx8IGNvbG9yRGF0YS5iKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmdiLnIgPSB0aGlzLm1pbm1heCh0aGlzLnJnYi5yICsgKCtjb2xvckRhdGEuciksIDAsIDI1NSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2xvckRhdGEuZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJnYi5nID0gdGhpcy5taW5tYXgodGhpcy5yZ2IuZyArICgrY29sb3JEYXRhLmcpLCAwLCAyNTUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sb3JEYXRhLmIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZ2IuYiA9IHRoaXMubWlubWF4KHRoaXMucmdiLmIgKyAoK2NvbG9yRGF0YS5iKSwgMCwgMjU1KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IuaW50Q29sb3IgPSB0aGlzLnJnYlRvSW50KHRoaXMucmdiLnIsIHRoaXMucmdiLmcsIHRoaXMucmdiLmIpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ29sb3IoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5oIHx8IGNvbG9yRGF0YS5zIHx8IGNvbG9yRGF0YS52KSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaHN2LmggPSAodGhpcy5oc3YuaCArICgrY29sb3JEYXRhLmgpICsgMzYwKSAlIDM2MDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaHN2LnMgPSB0aGlzLm1pbm1heCh0aGlzLmhzdi5zICsgKCtjb2xvckRhdGEucyksIDAsIDEwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2xvckRhdGEudikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhzdi52ID0gdGhpcy5taW5tYXgodGhpcy5oc3YudiArICgrY29sb3JEYXRhLnYpLCAwLCAxMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNhbGNDb2xvci5pbnRDb2xvciA9IHRoaXMuaHN2VG9JbnQodGhpcy5oc3YuaCwgdGhpcy5oc3YucywgdGhpcy5oc3Yudik7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDb2xvcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLmFscGhhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oc3YuYSA9IHRoaXMucmdiLmEgPSB0aGlzLmNhbGNDb2xvci5hbHBoYSA9IHRoaXMubWlubWF4KHRoaXMuY2FsY0NvbG9yLmFscGhhICsgKCtjb2xvckRhdGEuYWxwaGEpLCAwLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSR0IgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgUkdCXG4gICAgICovXG4gICAgZ2V0UkdCKCk6IFJHQiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8UkdCPigoKSA9PiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJnYikpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIU1YgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgSFNWXG4gICAgICovXG4gICAgZ2V0SFNWKCk6IEhTViB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8SFNWPigoKSA9PiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmhzdikpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb2xvciBpbiAjSEVYIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiAjSEVYXG4gICAgICovXG4gICAgdG9IRVgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY0NvbG9yID8gdGhpcy52YWx1ZTxzdHJpbmc+KFxuICAgICAgICAgICAgKCkgPT4gJyMnICsgKDB4MTAwMDAwMCArIHRoaXMuY2FsY0NvbG9yLmludENvbG9yKS50b1N0cmluZygxNikuc2xpY2UoMSlcbiAgICAgICAgICAgICAgICArICh0aGlzLmNhbGNDb2xvci5hbHBoYSA8IDEgPyAoMHgxMDAgKyBNYXRoLnJvdW5kKHRoaXMuY2FsY0NvbG9yLmFscGhhICogMjU2KSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpIDogJycpXG4gICAgICAgICkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbG9yIGluIEhWTCgpIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiBIVkwoSCwgUyUsIFYlKVxuICAgICAqL1xuICAgIHRvSFNMKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8c3RyaW5nPihcbiAgICAgICAgICAgICgpID0+IGBoc2woJHt0aGlzLmhzdi5ofSwgJHt0aGlzLmhzdi5zfSUsICR7dGhpcy5oc3Yudn0lJHt0aGlzLmhzdi5hIDwgMSA/ICcsICcgKyB0aGlzLmhzdi5hIDogJyd9KWBcbiAgICAgICAgKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29sb3IgaW4gUkdCKCkgZm9ybWF0XG4gICAgICogQHJldHVybnMgc3RyaW5nIG9mIFJHQihSLCBHLCBCKVxuICAgICAqL1xuICAgIHRvUkdCKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8c3RyaW5nPihcbiAgICAgICAgICAgICgpID0+IGByZ2IoJHt0aGlzLnJnYi5yfSwgJHt0aGlzLnJnYi5nfSwgJHt0aGlzLnJnYi5ifSR7dGhpcy5yZ2IuYSA8IDEgPyAnLCAnICsgdGhpcy5yZ2IuYSA6ICcnfSlgXG4gICAgICAgICkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHVwZGF0ZSBjb2xvcnMgZGF0YSA6IFJHQiBhbmQgSFNMXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVDb2xvcigpIHtcbiAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLmNhbGNDb2xvci5pbnRDb2xvcjtcbiAgICAgICAgLy8gdXBkYXRlIFJHQlxuICAgICAgICB0aGlzLnJnYi5yID0gY29sb3IgPj4gMTY7XG4gICAgICAgIHRoaXMucmdiLmcgPSBjb2xvciA+PiA4ICYgMHgwMEZGO1xuICAgICAgICB0aGlzLnJnYi5iID0gY29sb3IgJiAweDAwMDBGRjtcbiAgICAgICAgdGhpcy5yZ2IuYSA9IHRoaXMuY2FsY0NvbG9yLmFscGhhO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBIU0xcbiAgICAgICAgdGhpcy5oc3YgPSB0aGlzLnJnYjJoc3YodGhpcy5yZ2IuciwgdGhpcy5yZ2IuZywgdGhpcy5yZ2IuYik7XG4gICAgICAgIHRoaXMuaHN2LmEgPSB0aGlzLmNhbGNDb2xvci5hbHBoYTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgY29sb3JcbiAgICAgKiBAcGFyYW0gY29sb3IgcGFyc2UgY29sb3IgOiBuYW1lLCAjSEVYQSwgcmdiYSgpXG4gICAgICogQHJldHVybnMgaW50IGNvbG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYXJzZUNvbG9yKGNvbG9yOiBzdHJpbmcpOiBDb2xvck51bWJlciB7XG5cbiAgICAgICAgLy8gc2kgbmFtZWQgY29sb3JcbiAgICAgICAgaWYgKENvbG9yYXRpb24uY29sb3JzTmFtZVtjb2xvcl0pIHtcbiAgICAgICAgICAgIGNvbG9yID0gQ29sb3JhdGlvbi5jb2xvcnNOYW1lW2NvbG9yXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkYXRlIGhleGEgc3RyaW5nICNSR0IsICNSR0JBLCAjUlJHR0JCLCAjUlJHR0JCQUEgKGlnbm9yZSBhbHBoYSlcbiAgICAgICAgY29uc3QgbWF0Y2hIZXggPSBTdHJpbmcoY29sb3IpLm1hdGNoKHBhdHRlcm4uaGV4YSk7XG4gICAgICAgIGxldCBpbnRDb2xvcjogbnVtYmVyO1xuICAgICAgICBsZXQgYWxwaGEgPSAxO1xuICAgICAgICBpZiAobWF0Y2hIZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IGhleGFDb2xvciA9IG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgPyBtYXRjaEhleFsyXSArIG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgOiBtYXRjaEhleFsyXVswXSArIG1hdGNoSGV4WzJdWzBdICsgbWF0Y2hIZXhbMl1bMV0gKyBtYXRjaEhleFsyXVsxXSArIG1hdGNoSGV4WzJdWzJdICsgbWF0Y2hIZXhbMl1bMl07XG4gICAgICAgICAgICBjb25zdCBoZXhhQWxwaGEgPSBtYXRjaEhleFs0XVxuICAgICAgICAgICAgICAgID8gbWF0Y2hIZXhbNV1cbiAgICAgICAgICAgICAgICA6IChtYXRjaEhleFszXSA/IG1hdGNoSGV4WzNdWzFdICsgbWF0Y2hIZXhbM11bMV0gOiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgaW50Q29sb3IgPSBwYXJzZUludChoZXhhQ29sb3IsIDE2KTtcbiAgICAgICAgICAgIGFscGhhID0gaGV4YUFscGhhICE9PSB1bmRlZmluZWQgPyBwYXJzZUludChoZXhhQWxwaGEsIDE2KSAvIDI1NiA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW50Q29sb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdmFsaWRhdGUgcmdiKCkgLyByZ2JhKClcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoUmdiID0gU3RyaW5nKGNvbG9yKS5tYXRjaChwYXR0ZXJuLnJnYmEpO1xuICAgICAgICAgICAgaWYgKG1hdGNoUmdiKSB7XG4gICAgICAgICAgICAgICAgaW50Q29sb3IgPSB0aGlzLnJnYlRvSW50KHBhcnNlSW50KG1hdGNoUmdiWzFdLCAxMCksIHBhcnNlSW50KG1hdGNoUmdiWzRdLCAxMCksIHBhcnNlSW50KG1hdGNoUmdiWzddLCAxMCkpO1xuICAgICAgICAgICAgICAgIGFscGhhID0gbWF0Y2hSZ2JbMTFdICE9PSB1bmRlZmluZWQgPyBwYXJzZUZsb2F0KG1hdGNoUmdiWzExXSkgOiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGludENvbG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlIGhzdigpIC8gaHN2YSgpXG4gICAgICAgICAgICBjb25zdCBtYXRjaEhzdiA9IFN0cmluZyhjb2xvcikubWF0Y2gocGF0dGVybi5oc3ZhKTtcbiAgICAgICAgICAgIGlmIChtYXRjaEhzdikge1xuICAgICAgICAgICAgICAgIGludENvbG9yID0gdGhpcy5oc3ZUb0ludChwYXJzZUludChtYXRjaEhzdlsxXSwgMTApLCBwYXJzZUludChtYXRjaEhzdls0XSwgMTApLCBwYXJzZUludChtYXRjaEhzdls3XSwgMTApKTtcbiAgICAgICAgICAgICAgICBhbHBoYSA9IG1hdGNoSHN2WzExXSAhPT0gdW5kZWZpbmVkID8gcGFyc2VGbG9hdChtYXRjaEhzdlsxMV0pIDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGludENvbG9yLCBhbHBoYSB9O1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydCBIU1YvSFNMIHRvIGludCBSR0JcbiAgICAgKiBAcGFyYW0gaHVlIEh1ZSBbMCwgMzYwXVxuICAgICAqIEBwYXJhbSBzYXR1cmF0aW9uIFNhdHVyYXRpb24gWzAsIDEwMF1cbiAgICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgWzAsIDEwMF1cbiAgICAgKiBAcmV0dXJucyBpbnQgUkdCXG4gICAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMzUzMjExL2hzbC10by1yZ2ItY29sb3ItY29udmVyc2lvblxuICAgICAqL1xuICAgIHByaXZhdGUgaHN2VG9JbnQoaHVlOiBudW1iZXIsIHNhdHVyYXRpb246IG51bWJlciwgdmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHNhdHVyYXRpb24gPSBNYXRoLm1heCgwLCBzYXR1cmF0aW9uKTtcblxuICAgICAgICBjb25zdCBzID0gc2F0dXJhdGlvbiAvIDEwMDtcbiAgICAgICAgY29uc3QgdiA9IHZhbHVlIC8gMTAwO1xuICAgICAgICBjb25zdCBoID0gaHVlIC8gMzYwO1xuXG4gICAgICAgIGlmIChzYXR1cmF0aW9uID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZ2JUb0ludCh2ICogMjU2LCB2ICogMjU2LCB2ICogMjU2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHEgPSB2IDwgMC41ID8gdiAqICgxICsgcykgOiB2ICsgcyAtIHYgKiBzO1xuICAgICAgICBjb25zdCBwID0gMiAqIHYgLSBxO1xuICAgICAgICBjb25zdCByID0gdGhpcy5odWUycmdiKHAsIHEsIGggKyAxIC8gMyk7XG4gICAgICAgIGNvbnN0IGcgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCk7XG4gICAgICAgIGNvbnN0IGIgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCAtIDEgLyAzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5yZ2JUb0ludChNYXRoLnJvdW5kKHIgKiAyNTUpLCBNYXRoLnJvdW5kKGcgKiAyNTUpLCBNYXRoLnJvdW5kKGIgKiAyNTUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBodWUgY29sb3IgY2FsY3VsYXRpb25cbiAgICAgKiBAcGFyYW0gcCBudW1iZXJcbiAgICAgKiBAcGFyYW0gcSBudW1iZXJcbiAgICAgKiBAcGFyYW0gdCBudW1iZXJcbiAgICAgKiBAcmV0dXJucyBpbnQgY29sb3IgWzAsIDI1NV1cbiAgICAgKi9cbiAgICBwcml2YXRlIGh1ZTJyZ2IocDogbnVtYmVyLCBxOiBudW1iZXIsIHQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICh0IDwgMCkgeyB0ICs9IDE7IH0gZWxzZSBpZiAodCA+IDEpIHsgdCAtPSAxOyB9XG4gICAgICAgIGlmICh0IDwgMSAvIDYpIHsgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7IH1cbiAgICAgICAgaWYgKHQgPCAxIC8gMikgeyByZXR1cm4gcTsgfVxuICAgICAgICBpZiAodCA8IDIgLyAzKSB7IHJldHVybiBwICsgKHEgLSBwKSAqICgyIC8gMyAtIHQpICogNjsgfVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFJHQiB0byBIU1ZcbiAgICAgKiBAcGFyYW0gciByZWQgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gZyBncmVlbiBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBiIGJsdWUgWzAsIDI1NV1cbiAgICAgKiBAcmV0dXJucyBIU1YgZGF0YVxuICAgICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzkxMTg1MjgvcmdiLXRvLWhzbC1jb252ZXJzaW9uXG4gICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IU0xfYW5kX0hTViNGb3JtYWxfZGVyaXZhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgcmdiMmhzdihyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKTogSFNWIHtcblxuICAgICAgICAvLyBjb252ZXJ0IHIsZyxiIFswLDI1NV0gcmFuZ2UgdG8gWzAsMV1cbiAgICAgICAgciA9IHIgLyAyNTU7XG4gICAgICAgIGcgPSBnIC8gMjU1O1xuICAgICAgICBiID0gYiAvIDI1NTtcblxuICAgICAgICAvLyBnZXQgdGhlIG1pbiBhbmQgbWF4IG9mIHIsZyxiXG4gICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuICAgICAgICBjb25zdCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcblxuICAgICAgICAvLyBsaWdodG5lc3MgaXMgdGhlIGF2ZXJhZ2Ugb2YgdGhlIGxhcmdlc3QgYW5kIHNtYWxsZXN0IGNvbG9yIGNvbXBvbmVudHNcbiAgICAgICAgY29uc3QgdmFsID0gKG1heCArIG1pbikgLyAyO1xuICAgICAgICBsZXQgaHVlOiBudW1iZXI7XG4gICAgICAgIGxldCBzYXQ6IG51bWJlcjtcblxuICAgICAgICBpZiAobWF4ID09PSBtaW4pIHsgLy8gbm8gc2F0dXJhdGlvblxuICAgICAgICAgICAgaHVlID0gMDtcbiAgICAgICAgICAgIHNhdCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjID0gbWF4IC0gbWluOyAvLyBjaHJvbWFcbiAgICAgICAgICAgIC8vIHNhdHVyYXRpb24gaXMgc2ltcGx5IHRoZSBjaHJvbWEgc2NhbGVkIHRvIGZpbGxcbiAgICAgICAgICAgIC8vIHRoZSBpbnRlcnZhbCBbMCwgMV0gZm9yIGV2ZXJ5IGNvbWJpbmF0aW9uIG9mIGh1ZSBhbmQgbGlnaHRuZXNzXG4gICAgICAgICAgICBzYXQgPSBjIC8gKDEgLSBNYXRoLmFicygyICogdmFsIC0gMSkpO1xuICAgICAgICAgICAgc3dpdGNoIChtYXgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHI6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChnIC0gYikgLyBjICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIGc6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChiIC0gcikgLyBjICsgMjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBiOlxuICAgICAgICAgICAgICAgICAgICBodWUgPSAociAtIGcpIC8gYyArIDQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGg6IE1hdGgucm91bmQoaHVlICogNjApLCAgLy8gwrBcbiAgICAgICAgICAgIHM6IE1hdGgucm91bmQoc2F0ICogMTAwKSwgLy8gJVxuICAgICAgICAgICAgdjogTWF0aC5yb3VuZCh2YWwgKiAxMDApICAvLyAlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydCBSR0IgZGF0YSB0byBpbnQgdmFsdWVcbiAgICAgKiBAcGFyYW0gciByZWQgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gZyBncmVlbiBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBiIGJsdWUgWzAsIDI1NV1cbiAgICAgKiBAcmV0dXJucyBpbnQgdmFsdWVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJnYlRvSW50KHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChyKSAqIDB4MTAwMDAgKyBNYXRoLnJvdW5kKGcpICogMHgxMDAgKyBNYXRoLnJvdW5kKGIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGJvdW5kIGEgdmFsdWUgYmV0d2VlbiB0d28gdmFsdWVzXG4gICAgICogQHBhcmFtIHZhbHVlIHZhbHVlXG4gICAgICogQHBhcmFtIG1pbiBtaW4gdmFsdWVcbiAgICAgKiBAcGFyYW0gbWF4IG1heCB2YWx1ZVxuICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgcmVwbGFjZSBhbiBpbnZhbGlkIHZ2YWx1ZVxuICAgICAqIEByZXR1cm5zIHZhbHVlIGJldHdlZW4gbWluIGFuZCBtYXhcbiAgICAgKi9cbiAgICBwcml2YXRlIG1pbm1heCh2YWx1ZTogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGRlZmF1bHRWYWx1ZSA9IDApIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHZhbHVlIHx8IGRlZmF1bHRWYWx1ZSwgbWluKSwgbWF4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0ZXN0IGlzIGludENvbG9yIGlzIHZhbGlkIGZvciByZXR1cm4gYSB2bGF1ZVxuICAgICAqIEBwYXJhbSB2YWx1ZSBjYWxsYmFjayBvZiB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHZhbHVlIG9yIG51bGxcbiAgICAgKi9cbiAgICBwcml2YXRlIHZhbHVlPEw+KHZhbHVlOiAoKSA9PiBMKTogTCB7XG4gICAgICAgIHJldHVybiAhaXNOYU4odGhpcy5jYWxjQ29sb3IuaW50Q29sb3IpID8gdmFsdWUoKSA6IG51bGw7XG4gICAgfVxuXG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbG9yYXRpb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbG9yYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBRTVCLE1BQU0sT0FBTyxHQUFHO0lBQ1osSUFBSSxFQUFFLDREQUE0RDtJQUNsRSxJQUFJLEVBQUUsaUhBQWlIO0lBQ3ZILElBQUksRUFBRSxxSEFBcUg7Q0FDOUgsQ0FBQztBQW9DRixNQUFNLE9BQU8sVUFBVTtJQWtEbkIsWUFBbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFIeEIsUUFBRyxHQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3RDLFFBQUcsR0FBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUcxQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ3hCLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FB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QUMsS0FBSyxDQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEYsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUs7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQzlCLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2NBQ2pFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ2pILENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUM5QixHQUFHLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FDdkcsQ0FBQyxDQUFDLENB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VUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVM7SUFDMUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUztJQUNyRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTO0lBQ3JHLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVM7SUFDbkcsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUztJQUN4RyxRQUFRO0lBQ1IsYUFBYSxFQUFFLFNBQVM7Q0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZVxuXG5jb25zdCBwYXR0ZXJuID0ge1xuICAgIGhleGE6IC9eIz8oKFtcXGRhLWZdezN9KSgoW1xcZGEtZl17M30pKFtcXGRhLWZdezJ9KT98W1xcZGEtZl17MX0pPykkL2ksXG4gICAgcmdiYTogL15yZ2JhP1xcKChbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCgsXFxzKikoW1xcZF0qKFxcLltcXGRdKyk/KSk/XFwpJC9pLFxuICAgIGhzdmE6IC9eaHNsYT9cXCgoW1xcZF0qKFxcLltcXGRdKyk/KSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgoLFxccyopKFtcXGRdKihcXC5bXFxkXSspPykpP1xcKSQvaVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBSR0Ige1xuICAgIC8qKiBSZWQgY29sb3IgdmFsdWUgWzAsMjU1XSAgICovIHI6IG51bWJlcjtcbiAgICAvKiogR3JlZW4gY29sb3IgdmFsdWUgWzAsMjU1XSAqLyBnOiBudW1iZXI7XG4gICAgLyoqIEJsdWUgY29sb3IgdmFsdWUgWzAsMjU1XSAgKi8gYjogbnVtYmVyO1xuICAgIC8qKiBBbHBoYSBjb2xvciB2YWx1ZSBbMCwxXSAgICovIGE/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEhTViB7XG4gICAgLyoqIEh1ZSBjb2xvciB2YWx1ZSBbMCwzNjBdICAgICAgICAgICAgICovIGg6IG51bWJlcjtcbiAgICAvKiogU2FsdXJhdGlvbiBjb2xvciB2YWx1ZSBbMCwxMDBdICAgICAgKi8gczogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgY29sb3IgdmFsdWUgWzAsMTAwXSAqLyB2OiBudW1iZXI7XG4gICAgLyoqIEFscGhhIGNvbG9yIHZhbHVlIFswLDFdICAgICAgICAgICAgICovIGE/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbG9yRGF0YSB7XG4gICAgLy8gUkdCXG4gICAgLyoqIFJlZCBjb2xvciB2YWx1ZSBbLTI1NiwyNTVdICAgICAgICovIHI/OiBudW1iZXI7XG4gICAgLyoqIEdyZWVuIGNvbG9yIHZhbHVlIFstMjU2LDI1NV0gICAgICovIGc/OiBudW1iZXI7XG4gICAgLyoqIEJsdWUgY29sb3IgdmFsdWUgWy0yNTYsMjU1XSAgICAgICovIGI/OiBudW1iZXI7XG4gICAgLy8gSFNWL0hTTFxuICAgIC8qKiBIdWUgdmFsdWUgWy0zNjAsMzYwXSAgICAgICAgICAgICAqLyBoPzogbnVtYmVyO1xuICAgIC8qKiBTYWx1cmF0aW9uIHZhbHVlIFstMTAwLDEwMF0gICAgICAqLyBzPzogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgdmFsdWUgWy0xMDAsMTAwXSAqLyB2PzogbnVtYmVyO1xuICAgIC8vIE90aGVyXG4gICAgLyoqIGx1bWlub3NpdHkgdmFsdWUgWy0xLDFdICAgICAgICAgICovIGx1bWlub3NpdHk/OiBudW1iZXI7XG4gICAgLyoqIGNvbG9yIG1hc2sgICAgICAgICAgICAgICAgICAgICAgICovIG1hc2tDb2xvcj86IHN0cmluZztcbiAgICAvKiogY29sb3IgbWFzayBvcGFjaXR5IFswLDFdICAgICAgICAgKi8gbWFza09wYWNpdHk/OiBudW1iZXI7XG4gICAgLy8gYWxwaGFcbiAgICAvKiogY29sb3IgbWFzayBhbHBoYSBbLTEsMV0gICAgICAgICAgKi8gYWxwaGE/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JOdW1iZXIge1xuICAgICAvKiogaW50Y29sb3IgKi8gaW50Q29sb3I6IG51bWJlcjtcbiAgICAgLyoqIEFscGhhIGNvbG9yIHZhbHVlIFswLDFdICovIGFscGhhOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xvcmF0aW9uIHtcblxuICAgIC8qKlxuICAgICAqIENTUyBjb2xvciBsaXN0XG4gICAgICovXG4gICAgc3RhdGljIGNvbG9yc05hbWU6IGFueSA9IHtcbiAgICAgICAgLy8gQ1NTIDFcbiAgICAgICAgYmxhY2s6ICcjMDAwMDAwJywgc2lsdmVyOiAnI2MwYzBjMCcsIGdyYXk6ICcjODA4MDgwJywgd2hpdGU6ICcjZmZmZmZmJywgbWFyb29uOiAnIzgwMDAwMCcsIHJlZDogJyNmZjAwMDAnLFxuICAgICAgICBwdXJwbGU6ICcjODAwMDgwJywgZnVjaHNpYTogJyNmZjAwZmYnLCBncmVlbjogJyMwMDgwMDAnLCBsaW1lOiAnIzAwZmYwMCcsIG9saXZlOiAnIzgwODAwMCcsIHllbGxvdzogJyNmZmZmMDAnLFxuICAgICAgICBuYXZ5OiAnIzAwMDA4MCcsIGJsdWU6ICcjMDAwMGZmJywgdGVhbDogJyMwMDgwODAnLCBhcXVhOiAnIzAwZmZmZicsXG4gICAgICAgIC8vIENTUyAyIChSZXZpc2lvbiAxKVxuICAgICAgICBvcmFuZ2U6ICcjZmZhNTAwJyxcbiAgICAgICAgLy8gQ1NTIDNcbiAgICAgICAgYWxpY2VibHVlOiAnI2YwZjhmZicsIGFudGlxdWV3aGl0ZTogJyNmYWViZDcnLCBhcXVhbWFyaW5lOiAnIzdmZmZkNCcsIGF6dXJlOiAnI2YwZmZmZicsIGJlaWdlOiAnI2Y1ZjVkYycsXG4gICAgICAgIGJpc3F1ZTogJyNmZmU0YzQnLCBibGFuY2hlZGFsbW9uZDogJyNmZmViY2QnLCBibHVldmlvbGV0OiAnIzhhMmJlMicsIGJyb3duOiAnI2E1MmEyYScsIGJ1cmx5d29vZDogJyNkZWI4ODcnLFxuICAgICAgICBjYWRldGJsdWU6ICcjNWY5ZWEwJywgY2hhcnRyZXVzZTogJyM3ZmZmMDAnLCBjaG9jb2xhdGU6ICcjZDI2OTFlJywgY29yYWw6ICcjZmY3ZjUwJywgY29ybmZsb3dlcmJsdWU6ICcjNjQ5NWVkJyxcbiAgICAgICAgY29ybnNpbGs6ICcjZmZmOGRjJywgY3JpbXNvbjogJyNkYzE0M2MnLCBjeWFuOiAnIzAwZmZmZicsIGRlYXF1YTogJyMwMGZmZmYnLCBkYXJrYmx1ZTogJyMwMDAwOGInLFxuICAgICAgICBkYXJrY3lhbjogJyMwMDhiOGInLCBkYXJrZ29sZGVucm9kOiAnI2I4ODYwYicsIGRhcmtncmF5OiAnI2E5YTlhOScsIGRhcmtncmVlbjogJyMwMDY0MDAnLCBkYXJrZ3JleTogJyNhOWE5YTknLFxuICAgICAgICBkYXJra2hha2k6ICcjYmRiNzZiJywgZGFya21hZ2VudGE6ICcjOGIwMDhiJywgZGFya29saXZlZ3JlZW46ICcjNTU2YjJmJywgZGFya29yYW5nZTogJyNmZjhjMDAnLFxuICAgICAgICBkYXJrb3JjaGlkOiAnIzk5MzJjYycsIGRhcmtyZWQ6ICcjOGIwMDAwJywgZGFya3NhbG1vbjogJyNlOTk2N2EnLCBkYXJrc2VhZ3JlZW46ICcjOGZiYzhmJyxcbiAgICAgICAgZGFya3NsYXRlYmx1ZTogJyM0ODNkOGInLCBkYXJrc2xhdGVncmF5OiAnIzJmNGY0ZicsIGRhcmtzbGF0ZWdyZXk6ICcjMmY0ZjRmJywgZGFya3R1cnF1b2lzZTogJyMwMGNlZDEnLFxuICAgICAgICBkYXJrdmlvbGV0OiAnIzk0MDBkMycsIGRlZXBwaW5rOiAnI2ZmMTQ5MycsIGRlZXBza3libHVlOiAnIzAwYmZmZicsIGRpbWdyYXk6ICcjNjk2OTY5JywgZGltZ3JleTogJyM2OTY5NjknLFxuICAgICAgICBkb2RnZXJibHVlOiAnIzFlOTBmZicsIGZpcmVicmljazogJyNiMjIyMjInLCBmbG9yYWx3aGl0ZTogJyNmZmZhZjAnLCBmb3Jlc3RncmVlbjogJyMyMjhiMjInLFxuICAgICAgICBnYWluc2Jvcm86ICcjZGNkY2RjJywgZ2hvc3R3aGl0ZTogJyNmOGY4ZmYnLCBnb2xkOiAnI2ZmZDcwMCcsIGdvbGRlbnJvZDogJyNkYWE1MjAnLCBncmVlbnllbGxvdzogJyNhZGZmMmYnLFxuICAgICAgICBncmV5OiAnIzgwODA4MCcsIGhvbmV5ZGV3OiAnI2YwZmZmMCcsIGhvdHBpbms6ICcjZmY2OWI0JywgaW5kaWFucmVkOiAnI2NkNWM1YycsIGluZGlnbzogJyM0YjAwODInLFxuICAgICAgICBpdm9yeTogJyNmZmZmZjAnLCBraGFraTogJyNmMGU2OGMnLCBsYXZlbmRlcjogJyNlNmU2ZmEnLCBsYXZlbmRlcmJsdXNoOiAnI2ZmZjBmNScsIGxhd25ncmVlbjogJyM3Y2ZjMDAnLFxuICAgICAgICBsZW1vbmNoaWZmb246ICcjZmZmYWNkJywgbGlnaHRibHVlOiAnI2FkZDhlNicsIGxpZ2h0Y29yYWw6ICcjZjA4MDgwJywgbGlnaHRjeWFuOiAnI2UwZmZmZicsXG4gICAgICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiAnI2ZhZmFkMicsIGxpZ2h0Z3JheTogJyNkM2QzZDMnLCBsaWdodGdyZWVuOiAnIzkwZWU5MCcsIGxpZ2h0Z3JleTogJyNkM2QzZDMnLFxuICAgICAgICBsaWdodHBpbms6ICcjZmZiNmMxJywgbGlnaHRzYWxtb246ICcjZmZhMDdhJywgbGlnaHRzZWFncmVlbjogJyMyMGIyYWEnLCBsaWdodHNreWJsdWU6ICcjODdjZWZhJyxcbiAgICAgICAgbGlnaHRzbGF0ZWdyYXk6ICcjNzc4ODk5JywgbGlnaHRzbGF0ZWdyZXk6ICcjNzc4ODk5JywgbGlnaHRzdGVlbGJsdWU6ICcjYjBjNGRlJywgbGlnaHR5ZWxsb3c6ICcjZmZmZmUwJyxcbiAgICAgICAgbGltZWdyZWVuOiAnIzMyY2QzMicsIGxpbmVuOiAnI2ZhZjBlNicsIG1hZ2VudGE6ICcjZmYwMGZmJywgZGVmdWNoc2lhOiAnI2ZmMDBmZicsIG1lZGl1bWFxdWFtYXJpbmU6ICcjNjZjZGFhJyxcbiAgICAgICAgbWVkaXVtYmx1ZTogJyMwMDAwY2QnLCBtZWRpdW1vcmNoaWQ6ICcjYmE1NWQzJywgbWVkaXVtcHVycGxlOiAnIzkzNzBkYicsIG1lZGl1bXNlYWdyZWVuOiAnIzNjYjM3MScsXG4gICAgICAgIG1lZGl1bXNsYXRlYmx1ZTogJyM3YjY4ZWUnLCBtZWRpdW1zcHJpbmdncmVlbjogJyMwMGZhOWEnLCBtZWRpdW10dXJxdW9pc2U6ICcjNDhkMWNjJyxcbiAgICAgICAgbWVkaXVtdmlvbGV0cmVkOiAnI2M3MTU4NScsIG1pZG5pZ2h0Ymx1ZTogJyMxOTE5NzAnLCBtaW50Y3JlYW06ICcjZjVmZmZhJywgbWlzdHlyb3NlOiAnI2ZmZTRlMScsXG4gICAgICAgIG1vY2Nhc2luOiAnI2ZmZTRiNScsIG5hdmFqb3doaXRlOiAnI2ZmZGVhZCcsIG9sZGxhY2U6ICcjZmRmNWU2Jywgb2xpdmVkcmFiOiAnIzZiOGUyMycsIG9yYW5nZXJlZDogJyNmZjQ1MDAnLFxuICAgICAgICBvcmNoaWQ6ICcjZGE3MGQ2JywgcGFsZWdvbGRlbnJvZDogJyNlZWU4YWEnLCBwYWxlZ3JlZW46ICcjOThmYjk4JywgcGFsZXR1cnF1b2lzZTogJyNhZmVlZWUnLFxuICAgICAgICBwYWxldmlvbGV0cmVkOiAnI2RiNzA5MycsIHBhcGF5YXdoaXA6ICcjZmZlZmQ1JywgcGVhY2hwdWZmOiAnI2ZmZGFiOScsIHBlcnU6ICcjY2Q4NTNmJywgcGluazogJyNmZmMwY2InLFxuICAgICAgICBwbHVtOiAnI2RkYTBkZCcsIHBvd2RlcmJsdWU6ICcjYjBlMGU2Jywgcm9zeWJyb3duOiAnI2JjOGY4ZicsIHJveWFsYmx1ZTogJyM0MTY5ZTEnLCBzYWRkbGVicm93bjogJyM4YjQ1MTMnLFxuICAgICAgICBzYWxtb246ICcjZmE4MDcyJywgc2FuZHlicm93bjogJyNmNGE0NjAnLCBzZWFncmVlbjogJyMyZThiNTcnLCBzZWFzaGVsbDogJyNmZmY1ZWUnLCBzaWVubmE6ICcjYTA1MjJkJyxcbiAgICAgICAgc2t5Ymx1ZTogJyM4N2NlZWInLCBzbGF0ZWJsdWU6ICcjNmE1YWNkJywgc2xhdGVncmF5OiAnIzcwODA5MCcsIHNsYXRlZ3JleTogJyM3MDgwOTAnLCBzbm93OiAnI2ZmZmFmYScsXG4gICAgICAgIHNwcmluZ2dyZWVuOiAnIzAwZmY3ZicsIHN0ZWVsYmx1ZTogJyM0NjgyYjQnLCB0YW46ICcjZDJiNDhjJywgdGhpc3RsZTogJyNkOGJmZDgnLCB0b21hdG86ICcjZmY2MzQ3JyxcbiAgICAgICAgdHVycXVvaXNlOiAnIzQwZTBkMCcsIHZpb2xldDogJyNlZTgyZWUnLCB3aGVhdDogJyNmNWRlYjMnLCB3aGl0ZXNtb2tlOiAnI2Y1ZjVmNScsIHllbGxvd2dyZWVuOiAnIzlhY2QzMicsXG4gICAgICAgIC8vIENTUyA0XG4gICAgICAgIHJlYmVjY2FwdXJwbGU6ICcjNjYzMzk5J1xuICAgIH07XG5cbiAgICBwcml2YXRlIGNhbGNDb2xvcjogQ29sb3JOdW1iZXI7XG4gICAgcHJpdmF0ZSByZ2I6IFJHQiA9IHsgcjogMCwgZzogMCwgYjogMCwgYTogMSB9O1xuICAgIHByaXZhdGUgaHN2OiBIU1YgPSB7IGg6IDAsIHM6IDAsIHY6IDAsIGE6IDEgfTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb2xvcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZWluaXQgdG8gYmFzZSBjb2xvclxuICAgICAqL1xuICAgIHJlc2V0KCkge1xuICAgICAgICBpZiAodGhpcy5jb2xvcikge1xuICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IgPSB0aGlzLnBhcnNlQ29sb3IodGhpcy5jb2xvcik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgdGhlIGx1bWlub3NpdHkgb2YgYSBjb2xvclxuICAgICAqIEBwYXJhbSBsdW0gdmFsdWUgYmV0d2VlbiAtMSBhbmQgMVxuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBjaGFuZ2VMdW1pbm9zaXR5KGx1bTogbnVtYmVyKTogQ29sb3JhdGlvbiB7XG4gICAgICAgIGx1bSA9IHRoaXMubWlubWF4KGx1bSwgLTEsIDEpO1xuICAgICAgICB0aGlzLm1hc2tDb2xvcihsdW0gPCAwID8gJyMwMDAnIDogJyNGRkYnLCBNYXRoLmFicyhsdW0pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWRkIGNvbG9yIHdpdGggYSBtYXJrXG4gICAgICogQHBhcmFtIGNvbG9yIGFkZGl0aW9uYWwgY29sb3JcbiAgICAgKiBAcGFyYW0gb3BhY2l0eSB2YWx1ZSBvZiBvcGFjaXR5IGJldHdlZW4gMCBhbmQgMSBmb3IgdGhlIGFkZGl0aW9uYWwgY29sb3JcbiAgICAgKiBAcmV0dXJucyBDb2xvcmF0aW9uXG4gICAgICovXG4gICAgbWFza0NvbG9yKGNvbG9yOiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlciA9IDEpOiBDb2xvcmF0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuY2FsY0NvbG9yKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlQ29sb3IgPSB0aGlzLmNhbGNDb2xvcjtcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDb2xvciA9IHRoaXMucGFyc2VDb2xvcihjb2xvcik7XG5cbiAgICAgICAgICAgIGNvbnN0IGx1bSA9IHRoaXMubWlubWF4KG9wYWNpdHksIDAsIDEpO1xuXG4gICAgICAgICAgICBjb25zdCBSID0gYmFzZUNvbG9yLmludENvbG9yID4+IDE2O1xuICAgICAgICAgICAgY29uc3QgRyA9IGJhc2VDb2xvci5pbnRDb2xvciA+PiA4ICYgMHgwMEZGO1xuICAgICAgICAgICAgY29uc3QgQiA9IGJhc2VDb2xvci5pbnRDb2xvciAmIDB4MDAwMEZGO1xuXG4gICAgICAgICAgICBpZiAoYWRkaXRpb25hbENvbG9yLmFscGhhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IuYWxwaGEgPSB0aGlzLm1pbm1heChiYXNlQ29sb3IuYWxwaGEgKyBhZGRpdGlvbmFsQ29sb3IuYWxwaGEgKiBvcGFjaXR5LCAwLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2FsY0NvbG9yLmludENvbG9yID0gdGhpcy5yZ2JUb0ludChcbiAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKCgoYWRkaXRpb25hbENvbG9yLmludENvbG9yID4+IDE2KSAtIFIpICogbHVtKSArIFIsXG4gICAgICAgICAgICAgICAgTWF0aC5yb3VuZCgoKGFkZGl0aW9uYWxDb2xvci5pbnRDb2xvciA+PiA4ICYgMHgwMEZGKSAtIEcpICogbHVtKSArIEcsXG4gICAgICAgICAgICAgICAgTWF0aC5yb3VuZCgoKGFkZGl0aW9uYWxDb2xvci5pbnRDb2xvciAmIDB4MDAwMEZGKSAtIEIpICogbHVtKSArIEJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2hhbmdlIGNvbG9yIHdpdGggY29sb3IgcGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBjb2xvckRhdGEgYWRkaXRpb25uYWwgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBhZGRDb2xvcihjb2xvckRhdGE6IENvbG9yRGF0YSkge1xuICAgICAgICBpZiAodGhpcy5jYWxjQ29sb3IpIHtcbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEubHVtaW5vc2l0eSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlTHVtaW5vc2l0eShjb2xvckRhdGEubHVtaW5vc2l0eSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEubWFza0NvbG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrQ29sb3IoY29sb3JEYXRhLm1hc2tDb2xvciwgdGhpcy5taW5tYXgoY29sb3JEYXRhLm1hc2tPcGFjaXR5IHx8IDAsIDAsIDEpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5yIHx8IGNvbG9yRGF0YS5nIHx8IGNvbG9yRGF0YS5iKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmdiLnIgPSB0aGlzLm1pbm1heCh0aGlzLnJnYi5yICsgKCtjb2xvckRhdGEuciksIDAsIDI1NSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2xvckRhdGEuZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJnYi5nID0gdGhpcy5taW5tYXgodGhpcy5yZ2IuZyArICgrY29sb3JEYXRhLmcpLCAwLCAyNTUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sb3JEYXRhLmIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZ2IuYiA9IHRoaXMubWlubWF4KHRoaXMucmdiLmIgKyAoK2NvbG9yRGF0YS5iKSwgMCwgMjU1KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IuaW50Q29sb3IgPSB0aGlzLnJnYlRvSW50KHRoaXMucmdiLnIsIHRoaXMucmdiLmcsIHRoaXMucmdiLmIpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ29sb3IoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5oIHx8IGNvbG9yRGF0YS5zIHx8IGNvbG9yRGF0YS52KSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaHN2LmggPSAodGhpcy5oc3YuaCArICgrY29sb3JEYXRhLmgpICsgMzYwKSAlIDM2MDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaHN2LnMgPSB0aGlzLm1pbm1heCh0aGlzLmhzdi5zICsgKCtjb2xvckRhdGEucyksIDAsIDEwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2xvckRhdGEudikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhzdi52ID0gdGhpcy5taW5tYXgodGhpcy5oc3YudiArICgrY29sb3JEYXRhLnYpLCAwLCAxMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNhbGNDb2xvci5pbnRDb2xvciA9IHRoaXMuaHN2VG9JbnQodGhpcy5oc3YuaCwgdGhpcy5oc3YucywgdGhpcy5oc3Yudik7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDb2xvcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLmFscGhhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oc3YuYSA9IHRoaXMucmdiLmEgPSB0aGlzLmNhbGNDb2xvci5hbHBoYSA9IHRoaXMubWlubWF4KHRoaXMuY2FsY0NvbG9yLmFscGhhICsgKCtjb2xvckRhdGEuYWxwaGEpLCAwLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSR0IgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgUkdCXG4gICAgICovXG4gICAgZ2V0UkdCKCk6IFJHQiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8UkdCPigoKSA9PiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJnYikpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIU1YgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgSFNWXG4gICAgICovXG4gICAgZ2V0SFNWKCk6IEhTViB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8SFNWPigoKSA9PiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmhzdikpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb2xvciBpbiAjSEVYIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiAjSEVYXG4gICAgICovXG4gICAgdG9IRVgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY0NvbG9yID8gdGhpcy52YWx1ZTxzdHJpbmc+KFxuICAgICAgICAgICAgKCkgPT4gJyMnICsgKDB4MTAwMDAwMCArIHRoaXMuY2FsY0NvbG9yLmludENvbG9yKS50b1N0cmluZygxNikuc2xpY2UoMSlcbiAgICAgICAgICAgICAgICArICh0aGlzLmNhbGNDb2xvci5hbHBoYSA8IDEgPyAoMHgxMDAgKyBNYXRoLnJvdW5kKHRoaXMuY2FsY0NvbG9yLmFscGhhICogMjU1KSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpIDogJycpXG4gICAgICAgICkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbG9yIGluIEhWTCgpIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiBIVkwoSCwgUyUsIFYlKVxuICAgICAqL1xuICAgIHRvSFNMKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8c3RyaW5nPihcbiAgICAgICAgICAgICgpID0+IGBoc2woJHt0aGlzLmhzdi5ofSwgJHt0aGlzLmhzdi5zfSUsICR7dGhpcy5oc3Yudn0lJHt0aGlzLmhzdi5hIDwgMSA/ICcsICcgKyB0aGlzLmhzdi5hIDogJyd9KWBcbiAgICAgICAgKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29sb3IgaW4gUkdCKCkgZm9ybWF0XG4gICAgICogQHJldHVybnMgc3RyaW5nIG9mIFJHQihSLCBHLCBCKVxuICAgICAqL1xuICAgIHRvUkdCKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8c3RyaW5nPihcbiAgICAgICAgICAgICgpID0+IGByZ2IoJHt0aGlzLnJnYi5yfSwgJHt0aGlzLnJnYi5nfSwgJHt0aGlzLnJnYi5ifSR7dGhpcy5yZ2IuYSA8IDEgPyAnLCAnICsgdGhpcy5yZ2IuYSA6ICcnfSlgXG4gICAgICAgICkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHVwZGF0ZSBjb2xvcnMgZGF0YSA6IFJHQiBhbmQgSFNMXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVDb2xvcigpIHtcbiAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLmNhbGNDb2xvci5pbnRDb2xvcjtcbiAgICAgICAgLy8gdXBkYXRlIFJHQlxuICAgICAgICB0aGlzLnJnYi5yID0gY29sb3IgPj4gMTY7XG4gICAgICAgIHRoaXMucmdiLmcgPSBjb2xvciA+PiA4ICYgMHgwMEZGO1xuICAgICAgICB0aGlzLnJnYi5iID0gY29sb3IgJiAweDAwMDBGRjtcbiAgICAgICAgdGhpcy5yZ2IuYSA9IHRoaXMuY2FsY0NvbG9yLmFscGhhO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBIU0xcbiAgICAgICAgdGhpcy5oc3YgPSB0aGlzLnJnYjJoc3YodGhpcy5yZ2IuciwgdGhpcy5yZ2IuZywgdGhpcy5yZ2IuYik7XG4gICAgICAgIHRoaXMuaHN2LmEgPSB0aGlzLmNhbGNDb2xvci5hbHBoYTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgY29sb3JcbiAgICAgKiBAcGFyYW0gY29sb3IgcGFyc2UgY29sb3IgOiBuYW1lLCAjSEVYQSwgcmdiYSgpXG4gICAgICogQHJldHVybnMgaW50IGNvbG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYXJzZUNvbG9yKGNvbG9yOiBzdHJpbmcpOiBDb2xvck51bWJlciB7XG5cbiAgICAgICAgLy8gc2kgbmFtZWQgY29sb3JcbiAgICAgICAgaWYgKENvbG9yYXRpb24uY29sb3JzTmFtZVtjb2xvcl0pIHtcbiAgICAgICAgICAgIGNvbG9yID0gQ29sb3JhdGlvbi5jb2xvcnNOYW1lW2NvbG9yXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkYXRlIGhleGEgc3RyaW5nICNSR0IsICNSR0JBLCAjUlJHR0JCLCAjUlJHR0JCQUEgKGlnbm9yZSBhbHBoYSlcbiAgICAgICAgY29uc3QgbWF0Y2hIZXggPSBTdHJpbmcoY29sb3IpLm1hdGNoKHBhdHRlcm4uaGV4YSk7XG4gICAgICAgIGxldCBpbnRDb2xvcjogbnVtYmVyO1xuICAgICAgICBsZXQgYWxwaGEgPSAxO1xuICAgICAgICBpZiAobWF0Y2hIZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IGhleGFDb2xvciA9IG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgPyBtYXRjaEhleFsyXSArIG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgOiBtYXRjaEhleFsyXVswXSArIG1hdGNoSGV4WzJdWzBdICsgbWF0Y2hIZXhbMl1bMV0gKyBtYXRjaEhleFsyXVsxXSArIG1hdGNoSGV4WzJdWzJdICsgbWF0Y2hIZXhbMl1bMl07XG4gICAgICAgICAgICBjb25zdCBoZXhhQWxwaGEgPSBtYXRjaEhleFs0XVxuICAgICAgICAgICAgICAgID8gbWF0Y2hIZXhbNV1cbiAgICAgICAgICAgICAgICA6IChtYXRjaEhleFszXSA/IG1hdGNoSGV4WzNdWzFdICsgbWF0Y2hIZXhbM11bMV0gOiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgaW50Q29sb3IgPSBwYXJzZUludChoZXhhQ29sb3IsIDE2KTtcbiAgICAgICAgICAgIGFscGhhID0gaGV4YUFscGhhICE9PSB1bmRlZmluZWQgPyBwYXJzZUludChoZXhhQWxwaGEsIDE2KSAvIDI1NSA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW50Q29sb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdmFsaWRhdGUgcmdiKCkgLyByZ2JhKClcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoUmdiID0gU3RyaW5nKGNvbG9yKS5tYXRjaChwYXR0ZXJuLnJnYmEpO1xuICAgICAgICAgICAgaWYgKG1hdGNoUmdiKSB7XG4gICAgICAgICAgICAgICAgaW50Q29sb3IgPSB0aGlzLnJnYlRvSW50KHBhcnNlSW50KG1hdGNoUmdiWzFdLCAxMCksIHBhcnNlSW50KG1hdGNoUmdiWzRdLCAxMCksIHBhcnNlSW50KG1hdGNoUmdiWzddLCAxMCkpO1xuICAgICAgICAgICAgICAgIGFscGhhID0gbWF0Y2hSZ2JbMTFdICE9PSB1bmRlZmluZWQgPyBwYXJzZUZsb2F0KG1hdGNoUmdiWzExXSkgOiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGludENvbG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlIGhzdigpIC8gaHN2YSgpXG4gICAgICAgICAgICBjb25zdCBtYXRjaEhzdiA9IFN0cmluZyhjb2xvcikubWF0Y2gocGF0dGVybi5oc3ZhKTtcbiAgICAgICAgICAgIGlmIChtYXRjaEhzdikge1xuICAgICAgICAgICAgICAgIGludENvbG9yID0gdGhpcy5oc3ZUb0ludChwYXJzZUludChtYXRjaEhzdlsxXSwgMTApLCBwYXJzZUludChtYXRjaEhzdls0XSwgMTApLCBwYXJzZUludChtYXRjaEhzdls3XSwgMTApKTtcbiAgICAgICAgICAgICAgICBhbHBoYSA9IG1hdGNoSHN2WzExXSAhPT0gdW5kZWZpbmVkID8gcGFyc2VGbG9hdChtYXRjaEhzdlsxMV0pIDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGludENvbG9yLCBhbHBoYSB9O1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydCBIU1YvSFNMIHRvIGludCBSR0JcbiAgICAgKiBAcGFyYW0gaHVlIEh1ZSBbMCwgMzYwXVxuICAgICAqIEBwYXJhbSBzYXR1cmF0aW9uIFNhdHVyYXRpb24gWzAsIDEwMF1cbiAgICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgWzAsIDEwMF1cbiAgICAgKiBAcmV0dXJucyBpbnQgUkdCXG4gICAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMzUzMjExL2hzbC10by1yZ2ItY29sb3ItY29udmVyc2lvblxuICAgICAqL1xuICAgIHByaXZhdGUgaHN2VG9JbnQoaHVlOiBudW1iZXIsIHNhdHVyYXRpb246IG51bWJlciwgdmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHNhdHVyYXRpb24gPSBNYXRoLm1heCgwLCBzYXR1cmF0aW9uKTtcblxuICAgICAgICBjb25zdCBzID0gc2F0dXJhdGlvbiAvIDEwMDtcbiAgICAgICAgY29uc3QgdiA9IHZhbHVlIC8gMTAwO1xuICAgICAgICBjb25zdCBoID0gaHVlIC8gMzYwO1xuXG4gICAgICAgIGlmIChzYXR1cmF0aW9uID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZ2JUb0ludCh2ICogMjU2LCB2ICogMjU2LCB2ICogMjU2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHEgPSB2IDwgMC41ID8gdiAqICgxICsgcykgOiB2ICsgcyAtIHYgKiBzO1xuICAgICAgICBjb25zdCBwID0gMiAqIHYgLSBxO1xuICAgICAgICBjb25zdCByID0gdGhpcy5odWUycmdiKHAsIHEsIGggKyAxIC8gMyk7XG4gICAgICAgIGNvbnN0IGcgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCk7XG4gICAgICAgIGNvbnN0IGIgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCAtIDEgLyAzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5yZ2JUb0ludChNYXRoLnJvdW5kKHIgKiAyNTUpLCBNYXRoLnJvdW5kKGcgKiAyNTUpLCBNYXRoLnJvdW5kKGIgKiAyNTUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBodWUgY29sb3IgY2FsY3VsYXRpb25cbiAgICAgKiBAcGFyYW0gcCBudW1iZXJcbiAgICAgKiBAcGFyYW0gcSBudW1iZXJcbiAgICAgKiBAcGFyYW0gdCBudW1iZXJcbiAgICAgKiBAcmV0dXJucyBpbnQgY29sb3IgWzAsIDI1NV1cbiAgICAgKi9cbiAgICBwcml2YXRlIGh1ZTJyZ2IocDogbnVtYmVyLCBxOiBudW1iZXIsIHQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICh0IDwgMCkgeyB0ICs9IDE7IH0gZWxzZSBpZiAodCA+IDEpIHsgdCAtPSAxOyB9XG4gICAgICAgIGlmICh0IDwgMSAvIDYpIHsgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7IH1cbiAgICAgICAgaWYgKHQgPCAxIC8gMikgeyByZXR1cm4gcTsgfVxuICAgICAgICBpZiAodCA8IDIgLyAzKSB7IHJldHVybiBwICsgKHEgLSBwKSAqICgyIC8gMyAtIHQpICogNjsgfVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFJHQiB0byBIU1ZcbiAgICAgKiBAcGFyYW0gciByZWQgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gZyBncmVlbiBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBiIGJsdWUgWzAsIDI1NV1cbiAgICAgKiBAcmV0dXJucyBIU1YgZGF0YVxuICAgICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzkxMTg1MjgvcmdiLXRvLWhzbC1jb252ZXJzaW9uXG4gICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IU0xfYW5kX0hTViNGb3JtYWxfZGVyaXZhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgcmdiMmhzdihyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKTogSFNWIHtcblxuICAgICAgICAvLyBjb252ZXJ0IHIsZyxiIFswLDI1NV0gcmFuZ2UgdG8gWzAsMV1cbiAgICAgICAgciA9IHIgLyAyNTU7XG4gICAgICAgIGcgPSBnIC8gMjU1O1xuICAgICAgICBiID0gYiAvIDI1NTtcblxuICAgICAgICAvLyBnZXQgdGhlIG1pbiBhbmQgbWF4IG9mIHIsZyxiXG4gICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuICAgICAgICBjb25zdCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcblxuICAgICAgICAvLyBsaWdodG5lc3MgaXMgdGhlIGF2ZXJhZ2Ugb2YgdGhlIGxhcmdlc3QgYW5kIHNtYWxsZXN0IGNvbG9yIGNvbXBvbmVudHNcbiAgICAgICAgY29uc3QgdmFsID0gKG1heCArIG1pbikgLyAyO1xuICAgICAgICBsZXQgaHVlOiBudW1iZXI7XG4gICAgICAgIGxldCBzYXQ6IG51bWJlcjtcblxuICAgICAgICBpZiAobWF4ID09PSBtaW4pIHsgLy8gbm8gc2F0dXJhdGlvblxuICAgICAgICAgICAgaHVlID0gMDtcbiAgICAgICAgICAgIHNhdCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjID0gbWF4IC0gbWluOyAvLyBjaHJvbWFcbiAgICAgICAgICAgIC8vIHNhdHVyYXRpb24gaXMgc2ltcGx5IHRoZSBjaHJvbWEgc2NhbGVkIHRvIGZpbGxcbiAgICAgICAgICAgIC8vIHRoZSBpbnRlcnZhbCBbMCwgMV0gZm9yIGV2ZXJ5IGNvbWJpbmF0aW9uIG9mIGh1ZSBhbmQgbGlnaHRuZXNzXG4gICAgICAgICAgICBzYXQgPSBjIC8gKDEgLSBNYXRoLmFicygyICogdmFsIC0gMSkpO1xuICAgICAgICAgICAgc3dpdGNoIChtYXgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHI6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChnIC0gYikgLyBjICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIGc6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChiIC0gcikgLyBjICsgMjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBiOlxuICAgICAgICAgICAgICAgICAgICBodWUgPSAociAtIGcpIC8gYyArIDQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGg6IE1hdGgucm91bmQoaHVlICogNjApLCAgLy8gwrBcbiAgICAgICAgICAgIHM6IE1hdGgucm91bmQoc2F0ICogMTAwKSwgLy8gJVxuICAgICAgICAgICAgdjogTWF0aC5yb3VuZCh2YWwgKiAxMDApICAvLyAlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydCBSR0IgZGF0YSB0byBpbnQgdmFsdWVcbiAgICAgKiBAcGFyYW0gciByZWQgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gZyBncmVlbiBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBiIGJsdWUgWzAsIDI1NV1cbiAgICAgKiBAcmV0dXJucyBpbnQgdmFsdWVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJnYlRvSW50KHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChyKSAqIDB4MTAwMDAgKyBNYXRoLnJvdW5kKGcpICogMHgxMDAgKyBNYXRoLnJvdW5kKGIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGJvdW5kIGEgdmFsdWUgYmV0d2VlbiB0d28gdmFsdWVzXG4gICAgICogQHBhcmFtIHZhbHVlIHZhbHVlXG4gICAgICogQHBhcmFtIG1pbiBtaW4gdmFsdWVcbiAgICAgKiBAcGFyYW0gbWF4IG1heCB2YWx1ZVxuICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgcmVwbGFjZSBhbiBpbnZhbGlkIHZ2YWx1ZVxuICAgICAqIEByZXR1cm5zIHZhbHVlIGJldHdlZW4gbWluIGFuZCBtYXhcbiAgICAgKi9cbiAgICBwcml2YXRlIG1pbm1heCh2YWx1ZTogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGRlZmF1bHRWYWx1ZSA9IDApIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHZhbHVlIHx8IGRlZmF1bHRWYWx1ZSwgbWluKSwgbWF4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0ZXN0IGlzIGludENvbG9yIGlzIHZhbGlkIGZvciByZXR1cm4gYSB2bGF1ZVxuICAgICAqIEBwYXJhbSB2YWx1ZSBjYWxsYmFjayBvZiB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHZhbHVlIG9yIG51bGxcbiAgICAgKi9cbiAgICBwcml2YXRlIHZhbHVlPEw+KHZhbHVlOiAoKSA9PiBMKTogTCB7XG4gICAgICAgIHJldHVybiAhaXNOYU4odGhpcy5jYWxjQ29sb3IuaW50Q29sb3IpID8gdmFsdWUoKSA6IG51bGw7XG4gICAgfVxuXG59XG4iXX0= |
@@ -124,3 +124,3 @@ // tslint:disable:no-bitwise | ||
return this.calcColor ? this.value(function () { return '#' + (0x1000000 + _this.calcColor.intColor).toString(16).slice(1) | ||
+ (_this.calcColor.alpha < 1 ? (0x100 + Math.round(_this.calcColor.alpha * 256)).toString(16).slice(1) : ''); }) : null; | ||
+ (_this.calcColor.alpha < 1 ? (0x100 + Math.round(_this.calcColor.alpha * 255)).toString(16).slice(1) : ''); }) : null; | ||
}; | ||
@@ -179,3 +179,3 @@ /** | ||
intColor = parseInt(hexaColor, 16); | ||
alpha = hexaAlpha !== undefined ? parseInt(hexaAlpha, 16) / 256 : 1; | ||
alpha = hexaAlpha !== undefined ? parseInt(hexaAlpha, 16) / 255 : 1; | ||
} | ||
@@ -372,2 +372,2 @@ if (intColor === undefined) { | ||
export { Coloration }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbG9yYXRpb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbG9yYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBRTVCLElBQU0sT0FBTyxHQUFHO0lBQ1osSUFBSSxFQUFFLDREQUE0RDtJQUNsRSxJQUFJLEVBQUUsaUhBQWlIO0lBQ3ZILElBQUksRUFBRSxxSEFBcUg7Q0FDOUgsQ0FBQztBQW9DRjtJQWtESSxvQkFBbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFIeEIsUUFBRyxHQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3RDLFFBQUcsR0FBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUcxQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsMEJBQUssR0FBTDtRQUNJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxxQ0FBZ0IsR0FBaEIsVUFBaUIsR0FBVztRQUN4QixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMs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UyxFQUFFLFNBQVMsRUFBRSxTQUFTO1FBQzNHLE1BQU0sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTO1FBQzNGLGFBQWEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVM7UUFDdkcsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUztRQUMxRyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTO1FBQ3JHLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVM7UUFDckcsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUztRQUNuRyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTO1FBQ3hHLFFBQVE7UUFDUixhQUFhLEVBQUUsU0FBUztLQUMzQixDQUFDO0lBK1ZOLGlCQUFDO0NBQUEsQUEzWUQsSUEyWUM7U0EzWVksVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZVxuXG5jb25zdCBwYXR0ZXJuID0ge1xuICAgIGhleGE6IC9eIz8oKFtcXGRhLWZdezN9KSgoW1xcZGEtZl17M30pKFtcXGRhLWZdezJ9KT98W1xcZGEtZl17MX0pPykkL2ksXG4gICAgcmdiYTogL15yZ2JhP1xcKChbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCgsXFxzKikoW1xcZF0qKFxcLltcXGRdKyk/KSk/XFwpJC9pLFxuICAgIGhzdmE6IC9eaHNsYT9cXCgoW1xcZF0qKFxcLltcXGRdKyk/KSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgoLFxccyopKFtcXGRdKihcXC5bXFxkXSspPykpP1xcKSQvaVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBSR0Ige1xuICAgIC8qKiBSZWQgY29sb3IgdmFsdWUgWzAsMjU1XSAgICovIHI6IG51bWJlcjtcbiAgICAvKiogR3JlZW4gY29sb3IgdmFsdWUgWzAsMjU1XSAqLyBnOiBudW1iZXI7XG4gICAgLyoqIEJsdWUgY29sb3IgdmFsdWUgWzAsMjU1XSAgKi8gYjogbnVtYmVyO1xuICAgIC8qKiBBbHBoYSBjb2xvciB2YWx1ZSBbMCwxXSAgICovIGE/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEhTViB7XG4gICAgLyoqIEh1ZSBjb2xvciB2YWx1ZSBbMCwzNjBdICAgICAgICAgICAgICovIGg6IG51bWJlcjtcbiAgICAvKiogU2FsdXJhdGlvbiBjb2xvciB2YWx1ZSBbMCwxMDBdICAgICAgKi8gczogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgY29sb3IgdmFsdWUgWzAsMTAwXSAqLyB2OiBudW1iZXI7XG4gICAgLyoqIEFscGhhIGNvbG9yIHZhbHVlIFswLDFdICAgICAgICAgICAgICovIGE/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbG9yRGF0YSB7XG4gICAgLy8gUkdCXG4gICAgLyoqIFJlZCBjb2xvciB2YWx1ZSBbLTI1NiwyNTVdICAgICAgICovIHI/OiBudW1iZXI7XG4gICAgLyoqIEdyZWVuIGNvbG9yIHZhbHVlIFstMjU2LDI1NV0gICAgICovIGc/OiBudW1iZXI7XG4gICAgLyoqIEJsdWUgY29sb3IgdmFsdWUgWy0yNTYsMjU1XSAgICAgICovIGI/OiBudW1iZXI7XG4gICAgLy8gSFNWL0hTTFxuICAgIC8qKiBIdWUgdmFsdWUgWy0zNjAsMzYwXSAgICAgICAgICAgICAqLyBoPzogbnVtYmVyO1xuICAgIC8qKiBTYWx1cmF0aW9uIHZhbHVlIFstMTAwLDEwMF0gICAgICAqLyBzPzogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgdmFsdWUgWy0xMDAsMTAwXSAqLyB2PzogbnVtYmVyO1xuICAgIC8vIE90aGVyXG4gICAgLyoqIGx1bWlub3NpdHkgdmFsdWUgWy0xLDFdICAgICAgICAgICovIGx1bWlub3NpdHk/OiBudW1iZXI7XG4gICAgLyoqIGNvbG9yIG1hc2sgICAgICAgICAgICAgICAgICAgICAgICovIG1hc2tDb2xvcj86IHN0cmluZztcbiAgICAvKiogY29sb3IgbWFzayBvcGFjaXR5IFswLDFdICAgICAgICAgKi8gbWFza09wYWNpdHk/OiBudW1iZXI7XG4gICAgLy8gYWxwaGFcbiAgICAvKiogY29sb3IgbWFzayBhbHBoYSBbLTEsMV0gICAgICAgICAgKi8gYWxwaGE/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JOdW1iZXIge1xuICAgICAvKiogaW50Y29sb3IgKi8gaW50Q29sb3I6IG51bWJlcjtcbiAgICAgLyoqIEFscGhhIGNvbG9yIHZhbHVlIFswLDFdICovIGFscGhhOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xvcmF0aW9uIHtcblxuICAgIC8qKlxuICAgICAqIENTUyBjb2xvciBsaXN0XG4gICAgICovXG4gICAgc3RhdGljIGNvbG9yc05hbWU6IGFueSA9IHtcbiAgICAgICAgLy8gQ1NTIDFcbiAgICAgICAgYmxhY2s6ICcjMDAwMDAwJywgc2lsdmVyOiAnI2MwYzBjMCcsIGdyYXk6ICcjODA4MDgwJywgd2hpdGU6ICcjZmZmZmZmJywgbWFyb29uOiAnIzgwMDAwMCcsIHJlZDogJyNmZjAwMDAnLFxuICAgICAgICBwdXJwbGU6ICcjODAwMDgwJywgZnVjaHNpYTogJyNmZjAwZmYnLCBncmVlbjogJyMwMDgwMDAnLCBsaW1lOiAnIzAwZmYwMCcsIG9saXZlOiAnIzgwODAwMCcsIHllbGxvdzogJyNmZmZmMDAnLFxuICAgICAgICBuYXZ5OiAnIzAwMDA4MCcsIGJsdWU6ICcjMDAwMGZmJywgdGVhbDogJyMwMDgwODAnLCBhcXVhOiAnIzAwZmZmZicsXG4gICAgICAgIC8vIENTUyAyIChSZXZpc2lvbiAxKVxuICAgICAgICBvcmFuZ2U6ICcjZmZhNTAwJyxcbiAgICAgICAgLy8gQ1NTIDNcbiAgICAgICAgYWxpY2VibHVlOiAnI2YwZjhmZicsIGFudGlxdWV3aGl0ZTogJyNmYWViZDcnLCBhcXVhbWFyaW5lOiAnIzdmZmZkNCcsIGF6dXJlOiAnI2YwZmZmZicsIGJlaWdlOiAnI2Y1ZjVkYycsXG4gICAgICAgIGJpc3F1ZTogJyNmZmU0YzQnLCBibGFuY2hlZGFsbW9uZDogJyNmZmViY2QnLCBibHVldmlvbGV0OiAnIzhhMmJlMicsIGJyb3duOiAnI2E1MmEyYScsIGJ1cmx5d29vZDogJyNkZWI4ODcnLFxuICAgICAgICBjYWRldGJsdWU6ICcjNWY5ZWEwJywgY2hhcnRyZXVzZTogJyM3ZmZmMDAnLCBjaG9jb2xhdGU6ICcjZDI2OTFlJywgY29yYWw6ICcjZmY3ZjUwJywgY29ybmZsb3dlcmJsdWU6ICcjNjQ5NWVkJyxcbiAgICAgICAgY29ybnNpbGs6ICcjZmZmOGRjJywgY3JpbXNvbjogJyNkYzE0M2MnLCBjeWFuOiAnIzAwZmZmZicsIGRlYXF1YTogJyMwMGZmZmYnLCBkYXJrYmx1ZTogJyMwMDAwOGInLFxuICAgICAgICBkYXJrY3lhbjogJyMwMDhiOGInLCBkYXJrZ29sZGVucm9kOiAnI2I4ODYwYicsIGRhcmtncmF5OiAnI2E5YTlhOScsIGRhcmtncmVlbjogJyMwMDY0MDAnLCBkYXJrZ3JleTogJyNhOWE5YTknLFxuICAgICAgICBkYXJra2hha2k6ICcjYmRiNzZiJywgZGFya21hZ2VudGE6ICcjOGIwMDhiJywgZGFya29saXZlZ3JlZW46ICcjNTU2YjJmJywgZGFya29yYW5nZTogJyNmZjhjMDAnLFxuICAgICAgICBkYXJrb3JjaGlkOiAnIzk5MzJjYycsIGRhcmtyZWQ6ICcjOGIwMDAwJywgZGFya3NhbG1vbjogJyNlOTk2N2EnLCBkYXJrc2VhZ3JlZW46ICcjOGZiYzhmJyxcbiAgICAgICAgZGFya3NsYXRlYmx1ZTogJyM0ODNkOGInLCBkYXJrc2xhdGVncmF5OiAnIzJmNGY0ZicsIGRhcmtzbGF0ZWdyZXk6ICcjMmY0ZjRmJywgZGFya3R1cnF1b2lzZTogJyMwMGNlZDEnLFxuICAgICAgICBkYXJrdmlvbGV0OiAnIzk0MDBkMycsIGRlZXBwaW5rOiAnI2ZmMTQ5MycsIGRlZXBza3libHVlOiAnIzAwYmZmZicsIGRpbWdyYXk6ICcjNjk2OTY5JywgZGltZ3JleTogJyM2OTY5NjknLFxuICAgICAgICBkb2RnZXJibHVlOiAnIzFlOTBmZicsIGZpcmVicmljazogJyNiMjIyMjInLCBmbG9yYWx3aGl0ZTogJyNmZmZhZjAnLCBmb3Jlc3RncmVlbjogJyMyMjhiMjInLFxuICAgICAgICBnYWluc2Jvcm86ICcjZGNkY2RjJywgZ2hvc3R3aGl0ZTogJyNmOGY4ZmYnLCBnb2xkOiAnI2ZmZDcwMCcsIGdvbGRlbnJvZDogJyNkYWE1MjAnLCBncmVlbnllbGxvdzogJyNhZGZmMmYnLFxuICAgICAgICBncmV5OiAnIzgwODA4MCcsIGhvbmV5ZGV3OiAnI2YwZmZmMCcsIGhvdHBpbms6ICcjZmY2OWI0JywgaW5kaWFucmVkOiAnI2NkNWM1YycsIGluZGlnbzogJyM0YjAwODInLFxuICAgICAgICBpdm9yeTogJyNmZmZmZjAnLCBraGFraTogJyNmMGU2OGMnLCBsYXZlbmRlcjogJyNlNmU2ZmEnLCBsYXZlbmRlcmJsdXNoOiAnI2ZmZjBmNScsIGxhd25ncmVlbjogJyM3Y2ZjMDAnLFxuICAgICAgICBsZW1vbmNoaWZmb246ICcjZmZmYWNkJywgbGlnaHRibHVlOiAnI2FkZDhlNicsIGxpZ2h0Y29yYWw6ICcjZjA4MDgwJywgbGlnaHRjeWFuOiAnI2UwZmZmZicsXG4gICAgICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiAnI2ZhZmFkMicsIGxpZ2h0Z3JheTogJyNkM2QzZDMnLCBsaWdodGdyZWVuOiAnIzkwZWU5MCcsIGxpZ2h0Z3JleTogJyNkM2QzZDMnLFxuICAgICAgICBsaWdodHBpbms6ICcjZmZiNmMxJywgbGlnaHRzYWxtb246ICcjZmZhMDdhJywgbGlnaHRzZWFncmVlbjogJyMyMGIyYWEnLCBsaWdodHNreWJsdWU6ICcjODdjZWZhJyxcbiAgICAgICAgbGlnaHRzbGF0ZWdyYXk6ICcjNzc4ODk5JywgbGlnaHRzbGF0ZWdyZXk6ICcjNzc4ODk5JywgbGlnaHRzdGVlbGJsdWU6ICcjYjBjNGRlJywgbGlnaHR5ZWxsb3c6ICcjZmZmZmUwJyxcbiAgICAgICAgbGltZWdyZWVuOiAnIzMyY2QzMicsIGxpbmVuOiAnI2ZhZjBlNicsIG1hZ2VudGE6ICcjZmYwMGZmJywgZGVmdWNoc2lhOiAnI2ZmMDBmZicsIG1lZGl1bWFxdWFtYXJpbmU6ICcjNjZjZGFhJyxcbiAgICAgICAgbWVkaXVtYmx1ZTogJyMwMDAwY2QnLCBtZWRpdW1vcmNoaWQ6ICcjYmE1NWQzJywgbWVkaXVtcHVycGxlOiAnIzkzNzBkYicsIG1lZGl1bXNlYWdyZWVuOiAnIzNjYjM3MScsXG4gICAgICAgIG1lZGl1bXNsYXRlYmx1ZTogJyM3YjY4ZWUnLCBtZWRpdW1zcHJpbmdncmVlbjogJyMwMGZhOWEnLCBtZWRpdW10dXJxdW9pc2U6ICcjNDhkMWNjJyxcbiAgICAgICAgbWVkaXVtdmlvbGV0cmVkOiAnI2M3MTU4NScsIG1pZG5pZ2h0Ymx1ZTogJyMxOTE5NzAnLCBtaW50Y3JlYW06ICcjZjVmZmZhJywgbWlzdHlyb3NlOiAnI2ZmZTRlMScsXG4gICAgICAgIG1vY2Nhc2luOiAnI2ZmZTRiNScsIG5hdmFqb3doaXRlOiAnI2ZmZGVhZCcsIG9sZGxhY2U6ICcjZmRmNWU2Jywgb2xpdmVkcmFiOiAnIzZiOGUyMycsIG9yYW5nZXJlZDogJyNmZjQ1MDAnLFxuICAgICAgICBvcmNoaWQ6ICcjZGE3MGQ2JywgcGFsZWdvbGRlbnJvZDogJyNlZWU4YWEnLCBwYWxlZ3JlZW46ICcjOThmYjk4JywgcGFsZXR1cnF1b2lzZTogJyNhZmVlZWUnLFxuICAgICAgICBwYWxldmlvbGV0cmVkOiAnI2RiNzA5MycsIHBhcGF5YXdoaXA6ICcjZmZlZmQ1JywgcGVhY2hwdWZmOiAnI2ZmZGFiOScsIHBlcnU6ICcjY2Q4NTNmJywgcGluazogJyNmZmMwY2InLFxuICAgICAgICBwbHVtOiAnI2RkYTBkZCcsIHBvd2RlcmJsdWU6ICcjYjBlMGU2Jywgcm9zeWJyb3duOiAnI2JjOGY4ZicsIHJveWFsYmx1ZTogJyM0MTY5ZTEnLCBzYWRkbGVicm93bjogJyM4YjQ1MTMnLFxuICAgICAgICBzYWxtb246ICcjZmE4MDcyJywgc2FuZHlicm93bjogJyNmNGE0NjAnLCBzZWFncmVlbjogJyMyZThiNTcnLCBzZWFzaGVsbDogJyNmZmY1ZWUnLCBzaWVubmE6ICcjYTA1MjJkJyxcbiAgICAgICAgc2t5Ymx1ZTogJyM4N2NlZWInLCBzbGF0ZWJsdWU6ICcjNmE1YWNkJywgc2xhdGVncmF5OiAnIzcwODA5MCcsIHNsYXRlZ3JleTogJyM3MDgwOTAnLCBzbm93OiAnI2ZmZmFmYScsXG4gICAgICAgIHNwcmluZ2dyZWVuOiAnIzAwZmY3ZicsIHN0ZWVsYmx1ZTogJyM0NjgyYjQnLCB0YW46ICcjZDJiNDhjJywgdGhpc3RsZTogJyNkOGJmZDgnLCB0b21hdG86ICcjZmY2MzQ3JyxcbiAgICAgICAgdHVycXVvaXNlOiAnIzQwZTBkMCcsIHZpb2xldDogJyNlZTgyZWUnLCB3aGVhdDogJyNmNWRlYjMnLCB3aGl0ZXNtb2tlOiAnI2Y1ZjVmNScsIHllbGxvd2dyZWVuOiAnIzlhY2QzMicsXG4gICAgICAgIC8vIENTUyA0XG4gICAgICAgIHJlYmVjY2FwdXJwbGU6ICcjNjYzMzk5J1xuICAgIH07XG5cbiAgICBwcml2YXRlIGNhbGNDb2xvcjogQ29sb3JOdW1iZXI7XG4gICAgcHJpdmF0ZSByZ2I6IFJHQiA9IHsgcjogMCwgZzogMCwgYjogMCwgYTogMSB9O1xuICAgIHByaXZhdGUgaHN2OiBIU1YgPSB7IGg6IDAsIHM6IDAsIHY6IDAsIGE6IDEgfTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb2xvcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZWluaXQgdG8gYmFzZSBjb2xvclxuICAgICAqL1xuICAgIHJlc2V0KCkge1xuICAgICAgICBpZiAodGhpcy5jb2xvcikge1xuICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IgPSB0aGlzLnBhcnNlQ29sb3IodGhpcy5jb2xvcik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgdGhlIGx1bWlub3NpdHkgb2YgYSBjb2xvclxuICAgICAqIEBwYXJhbSBsdW0gdmFsdWUgYmV0d2VlbiAtMSBhbmQgMVxuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBjaGFuZ2VMdW1pbm9zaXR5KGx1bTogbnVtYmVyKTogQ29sb3JhdGlvbiB7XG4gICAgICAgIGx1bSA9IHRoaXMubWlubWF4KGx1bSwgLTEsIDEpO1xuICAgICAgICB0aGlzLm1hc2tDb2xvcihsdW0gPCAwID8gJyMwMDAnIDogJyNGRkYnLCBNYXRoLmFicyhsdW0pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWRkIGNvbG9yIHdpdGggYSBtYXJrXG4gICAgICogQHBhcmFtIGNvbG9yIGFkZGl0aW9uYWwgY29sb3JcbiAgICAgKiBAcGFyYW0gb3BhY2l0eSB2YWx1ZSBvZiBvcGFjaXR5IGJldHdlZW4gMCBhbmQgMSBmb3IgdGhlIGFkZGl0aW9uYWwgY29sb3JcbiAgICAgKiBAcmV0dXJucyBDb2xvcmF0aW9uXG4gICAgICovXG4gICAgbWFza0NvbG9yKGNvbG9yOiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlciA9IDEpOiBDb2xvcmF0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuY2FsY0NvbG9yKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlQ29sb3IgPSB0aGlzLmNhbGNDb2xvcjtcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDb2xvciA9IHRoaXMucGFyc2VDb2xvcihjb2xvcik7XG5cbiAgICAgICAgICAgIGNvbnN0IGx1bSA9IHRoaXMubWlubWF4KG9wYWNpdHksIDAsIDEpO1xuXG4gICAgICAgICAgICBjb25zdCBSID0gYmFzZUNvbG9yLmludENvbG9yID4+IDE2O1xuICAgICAgICAgICAgY29uc3QgRyA9IGJhc2VDb2xvci5pbnRDb2xvciA+PiA4ICYgMHgwMEZGO1xuICAgICAgICAgICAgY29uc3QgQiA9IGJhc2VDb2xvci5pbnRDb2xvciAmIDB4MDAwMEZGO1xuXG4gICAgICAgICAgICBpZiAoYWRkaXRpb25hbENvbG9yLmFscGhhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IuYWxwaGEgPSB0aGlzLm1pbm1heChiYXNlQ29sb3IuYWxwaGEgKyBhZGRpdGlvbmFsQ29sb3IuYWxwaGEgKiBvcGFjaXR5LCAwLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2FsY0NvbG9yLmludENvbG9yID0gdGhpcy5yZ2JUb0ludChcbiAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKCgoYWRkaXRpb25hbENvbG9yLmludENvbG9yID4+IDE2KSAtIFIpICogbHVtKSArIFIsXG4gICAgICAgICAgICAgICAgTWF0aC5yb3VuZCgoKGFkZGl0aW9uYWxDb2xvci5pbnRDb2xvciA+PiA4ICYgMHgwMEZGKSAtIEcpICogbHVtKSArIEcsXG4gICAgICAgICAgICAgICAgTWF0aC5yb3VuZCgoKGFkZGl0aW9uYWxDb2xvci5pbnRDb2xvciAmIDB4MDAwMEZGKSAtIEIpICogbHVtKSArIEJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2hhbmdlIGNvbG9yIHdpdGggY29sb3IgcGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBjb2xvckRhdGEgYWRkaXRpb25uYWwgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBhZGRDb2xvcihjb2xvckRhdGE6IENvbG9yRGF0YSkge1xuICAgICAgICBpZiAodGhpcy5jYWxjQ29sb3IpIHtcbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEubHVtaW5vc2l0eSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlTHVtaW5vc2l0eShjb2xvckRhdGEubHVtaW5vc2l0eSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEubWFza0NvbG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrQ29sb3IoY29sb3JEYXRhLm1hc2tDb2xvciwgdGhpcy5taW5tYXgoY29sb3JEYXRhLm1hc2tPcGFjaXR5IHx8IDAsIDAsIDEpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5yIHx8IGNvbG9yRGF0YS5nIHx8IGNvbG9yRGF0YS5iKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmdiLnIgPSB0aGlzLm1pbm1heCh0aGlzLnJnYi5yICsgKCtjb2xvckRhdGEuciksIDAsIDI1NSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2xvckRhdGEuZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJnYi5nID0gdGhpcy5taW5tYXgodGhpcy5yZ2IuZyArICgrY29sb3JEYXRhLmcpLCAwLCAyNTUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sb3JEYXRhLmIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZ2IuYiA9IHRoaXMubWlubWF4KHRoaXMucmdiLmIgKyAoK2NvbG9yRGF0YS5iKSwgMCwgMjU1KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IuaW50Q29sb3IgPSB0aGlzLnJnYlRvSW50KHRoaXMucmdiLnIsIHRoaXMucmdiLmcsIHRoaXMucmdiLmIpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ29sb3IoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5oIHx8IGNvbG9yRGF0YS5zIHx8IGNvbG9yRGF0YS52KSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaHN2LmggPSAodGhpcy5oc3YuaCArICgrY29sb3JEYXRhLmgpICsgMzYwKSAlIDM2MDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaHN2LnMgPSB0aGlzLm1pbm1heCh0aGlzLmhzdi5zICsgKCtjb2xvckRhdGEucyksIDAsIDEwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2xvckRhdGEudikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhzdi52ID0gdGhpcy5taW5tYXgodGhpcy5oc3YudiArICgrY29sb3JEYXRhLnYpLCAwLCAxMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNhbGNDb2xvci5pbnRDb2xvciA9IHRoaXMuaHN2VG9JbnQodGhpcy5oc3YuaCwgdGhpcy5oc3YucywgdGhpcy5oc3Yudik7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDb2xvcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLmFscGhhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oc3YuYSA9IHRoaXMucmdiLmEgPSB0aGlzLmNhbGNDb2xvci5hbHBoYSA9IHRoaXMubWlubWF4KHRoaXMuY2FsY0NvbG9yLmFscGhhICsgKCtjb2xvckRhdGEuYWxwaGEpLCAwLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSR0IgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgUkdCXG4gICAgICovXG4gICAgZ2V0UkdCKCk6IFJHQiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8UkdCPigoKSA9PiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJnYikpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIU1YgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgSFNWXG4gICAgICovXG4gICAgZ2V0SFNWKCk6IEhTViB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8SFNWPigoKSA9PiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmhzdikpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb2xvciBpbiAjSEVYIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiAjSEVYXG4gICAgICovXG4gICAgdG9IRVgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY0NvbG9yID8gdGhpcy52YWx1ZTxzdHJpbmc+KFxuICAgICAgICAgICAgKCkgPT4gJyMnICsgKDB4MTAwMDAwMCArIHRoaXMuY2FsY0NvbG9yLmludENvbG9yKS50b1N0cmluZygxNikuc2xpY2UoMSlcbiAgICAgICAgICAgICAgICArICh0aGlzLmNhbGNDb2xvci5hbHBoYSA8IDEgPyAoMHgxMDAgKyBNYXRoLnJvdW5kKHRoaXMuY2FsY0NvbG9yLmFscGhhICogMjU2KSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpIDogJycpXG4gICAgICAgICkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbG9yIGluIEhWTCgpIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiBIVkwoSCwgUyUsIFYlKVxuICAgICAqL1xuICAgIHRvSFNMKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8c3RyaW5nPihcbiAgICAgICAgICAgICgpID0+IGBoc2woJHt0aGlzLmhzdi5ofSwgJHt0aGlzLmhzdi5zfSUsICR7dGhpcy5oc3Yudn0lJHt0aGlzLmhzdi5hIDwgMSA/ICcsICcgKyB0aGlzLmhzdi5hIDogJyd9KWBcbiAgICAgICAgKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29sb3IgaW4gUkdCKCkgZm9ybWF0XG4gICAgICogQHJldHVybnMgc3RyaW5nIG9mIFJHQihSLCBHLCBCKVxuICAgICAqL1xuICAgIHRvUkdCKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8c3RyaW5nPihcbiAgICAgICAgICAgICgpID0+IGByZ2IoJHt0aGlzLnJnYi5yfSwgJHt0aGlzLnJnYi5nfSwgJHt0aGlzLnJnYi5ifSR7dGhpcy5yZ2IuYSA8IDEgPyAnLCAnICsgdGhpcy5yZ2IuYSA6ICcnfSlgXG4gICAgICAgICkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHVwZGF0ZSBjb2xvcnMgZGF0YSA6IFJHQiBhbmQgSFNMXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVDb2xvcigpIHtcbiAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLmNhbGNDb2xvci5pbnRDb2xvcjtcbiAgICAgICAgLy8gdXBkYXRlIFJHQlxuICAgICAgICB0aGlzLnJnYi5yID0gY29sb3IgPj4gMTY7XG4gICAgICAgIHRoaXMucmdiLmcgPSBjb2xvciA+PiA4ICYgMHgwMEZGO1xuICAgICAgICB0aGlzLnJnYi5iID0gY29sb3IgJiAweDAwMDBGRjtcbiAgICAgICAgdGhpcy5yZ2IuYSA9IHRoaXMuY2FsY0NvbG9yLmFscGhhO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBIU0xcbiAgICAgICAgdGhpcy5oc3YgPSB0aGlzLnJnYjJoc3YodGhpcy5yZ2IuciwgdGhpcy5yZ2IuZywgdGhpcy5yZ2IuYik7XG4gICAgICAgIHRoaXMuaHN2LmEgPSB0aGlzLmNhbGNDb2xvci5hbHBoYTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgY29sb3JcbiAgICAgKiBAcGFyYW0gY29sb3IgcGFyc2UgY29sb3IgOiBuYW1lLCAjSEVYQSwgcmdiYSgpXG4gICAgICogQHJldHVybnMgaW50IGNvbG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYXJzZUNvbG9yKGNvbG9yOiBzdHJpbmcpOiBDb2xvck51bWJlciB7XG5cbiAgICAgICAgLy8gc2kgbmFtZWQgY29sb3JcbiAgICAgICAgaWYgKENvbG9yYXRpb24uY29sb3JzTmFtZVtjb2xvcl0pIHtcbiAgICAgICAgICAgIGNvbG9yID0gQ29sb3JhdGlvbi5jb2xvcnNOYW1lW2NvbG9yXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkYXRlIGhleGEgc3RyaW5nICNSR0IsICNSR0JBLCAjUlJHR0JCLCAjUlJHR0JCQUEgKGlnbm9yZSBhbHBoYSlcbiAgICAgICAgY29uc3QgbWF0Y2hIZXggPSBTdHJpbmcoY29sb3IpLm1hdGNoKHBhdHRlcm4uaGV4YSk7XG4gICAgICAgIGxldCBpbnRDb2xvcjogbnVtYmVyO1xuICAgICAgICBsZXQgYWxwaGEgPSAxO1xuICAgICAgICBpZiAobWF0Y2hIZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IGhleGFDb2xvciA9IG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgPyBtYXRjaEhleFsyXSArIG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgOiBtYXRjaEhleFsyXVswXSArIG1hdGNoSGV4WzJdWzBdICsgbWF0Y2hIZXhbMl1bMV0gKyBtYXRjaEhleFsyXVsxXSArIG1hdGNoSGV4WzJdWzJdICsgbWF0Y2hIZXhbMl1bMl07XG4gICAgICAgICAgICBjb25zdCBoZXhhQWxwaGEgPSBtYXRjaEhleFs0XVxuICAgICAgICAgICAgICAgID8gbWF0Y2hIZXhbNV1cbiAgICAgICAgICAgICAgICA6IChtYXRjaEhleFszXSA/IG1hdGNoSGV4WzNdWzFdICsgbWF0Y2hIZXhbM11bMV0gOiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgaW50Q29sb3IgPSBwYXJzZUludChoZXhhQ29sb3IsIDE2KTtcbiAgICAgICAgICAgIGFscGhhID0gaGV4YUFscGhhICE9PSB1bmRlZmluZWQgPyBwYXJzZUludChoZXhhQWxwaGEsIDE2KSAvIDI1NiA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW50Q29sb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdmFsaWRhdGUgcmdiKCkgLyByZ2JhKClcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoUmdiID0gU3RyaW5nKGNvbG9yKS5tYXRjaChwYXR0ZXJuLnJnYmEpO1xuICAgICAgICAgICAgaWYgKG1hdGNoUmdiKSB7XG4gICAgICAgICAgICAgICAgaW50Q29sb3IgPSB0aGlzLnJnYlRvSW50KHBhcnNlSW50KG1hdGNoUmdiWzFdLCAxMCksIHBhcnNlSW50KG1hdGNoUmdiWzRdLCAxMCksIHBhcnNlSW50KG1hdGNoUmdiWzddLCAxMCkpO1xuICAgICAgICAgICAgICAgIGFscGhhID0gbWF0Y2hSZ2JbMTFdICE9PSB1bmRlZmluZWQgPyBwYXJzZUZsb2F0KG1hdGNoUmdiWzExXSkgOiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGludENvbG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlIGhzdigpIC8gaHN2YSgpXG4gICAgICAgICAgICBjb25zdCBtYXRjaEhzdiA9IFN0cmluZyhjb2xvcikubWF0Y2gocGF0dGVybi5oc3ZhKTtcbiAgICAgICAgICAgIGlmIChtYXRjaEhzdikge1xuICAgICAgICAgICAgICAgIGludENvbG9yID0gdGhpcy5oc3ZUb0ludChwYXJzZUludChtYXRjaEhzdlsxXSwgMTApLCBwYXJzZUludChtYXRjaEhzdls0XSwgMTApLCBwYXJzZUludChtYXRjaEhzdls3XSwgMTApKTtcbiAgICAgICAgICAgICAgICBhbHBoYSA9IG1hdGNoSHN2WzExXSAhPT0gdW5kZWZpbmVkID8gcGFyc2VGbG9hdChtYXRjaEhzdlsxMV0pIDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGludENvbG9yLCBhbHBoYSB9O1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydCBIU1YvSFNMIHRvIGludCBSR0JcbiAgICAgKiBAcGFyYW0gaHVlIEh1ZSBbMCwgMzYwXVxuICAgICAqIEBwYXJhbSBzYXR1cmF0aW9uIFNhdHVyYXRpb24gWzAsIDEwMF1cbiAgICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgWzAsIDEwMF1cbiAgICAgKiBAcmV0dXJucyBpbnQgUkdCXG4gICAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMzUzMjExL2hzbC10by1yZ2ItY29sb3ItY29udmVyc2lvblxuICAgICAqL1xuICAgIHByaXZhdGUgaHN2VG9JbnQoaHVlOiBudW1iZXIsIHNhdHVyYXRpb246IG51bWJlciwgdmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHNhdHVyYXRpb24gPSBNYXRoLm1heCgwLCBzYXR1cmF0aW9uKTtcblxuICAgICAgICBjb25zdCBzID0gc2F0dXJhdGlvbiAvIDEwMDtcbiAgICAgICAgY29uc3QgdiA9IHZhbHVlIC8gMTAwO1xuICAgICAgICBjb25zdCBoID0gaHVlIC8gMzYwO1xuXG4gICAgICAgIGlmIChzYXR1cmF0aW9uID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZ2JUb0ludCh2ICogMjU2LCB2ICogMjU2LCB2ICogMjU2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHEgPSB2IDwgMC41ID8gdiAqICgxICsgcykgOiB2ICsgcyAtIHYgKiBzO1xuICAgICAgICBjb25zdCBwID0gMiAqIHYgLSBxO1xuICAgICAgICBjb25zdCByID0gdGhpcy5odWUycmdiKHAsIHEsIGggKyAxIC8gMyk7XG4gICAgICAgIGNvbnN0IGcgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCk7XG4gICAgICAgIGNvbnN0IGIgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCAtIDEgLyAzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5yZ2JUb0ludChNYXRoLnJvdW5kKHIgKiAyNTUpLCBNYXRoLnJvdW5kKGcgKiAyNTUpLCBNYXRoLnJvdW5kKGIgKiAyNTUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBodWUgY29sb3IgY2FsY3VsYXRpb25cbiAgICAgKiBAcGFyYW0gcCBudW1iZXJcbiAgICAgKiBAcGFyYW0gcSBudW1iZXJcbiAgICAgKiBAcGFyYW0gdCBudW1iZXJcbiAgICAgKiBAcmV0dXJucyBpbnQgY29sb3IgWzAsIDI1NV1cbiAgICAgKi9cbiAgICBwcml2YXRlIGh1ZTJyZ2IocDogbnVtYmVyLCBxOiBudW1iZXIsIHQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICh0IDwgMCkgeyB0ICs9IDE7IH0gZWxzZSBpZiAodCA+IDEpIHsgdCAtPSAxOyB9XG4gICAgICAgIGlmICh0IDwgMSAvIDYpIHsgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7IH1cbiAgICAgICAgaWYgKHQgPCAxIC8gMikgeyByZXR1cm4gcTsgfVxuICAgICAgICBpZiAodCA8IDIgLyAzKSB7IHJldHVybiBwICsgKHEgLSBwKSAqICgyIC8gMyAtIHQpICogNjsgfVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFJHQiB0byBIU1ZcbiAgICAgKiBAcGFyYW0gciByZWQgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gZyBncmVlbiBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBiIGJsdWUgWzAsIDI1NV1cbiAgICAgKiBAcmV0dXJucyBIU1YgZGF0YVxuICAgICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzkxMTg1MjgvcmdiLXRvLWhzbC1jb252ZXJzaW9uXG4gICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IU0xfYW5kX0hTViNGb3JtYWxfZGVyaXZhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgcmdiMmhzdihyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKTogSFNWIHtcblxuICAgICAgICAvLyBjb252ZXJ0IHIsZyxiIFswLDI1NV0gcmFuZ2UgdG8gWzAsMV1cbiAgICAgICAgciA9IHIgLyAyNTU7XG4gICAgICAgIGcgPSBnIC8gMjU1O1xuICAgICAgICBiID0gYiAvIDI1NTtcblxuICAgICAgICAvLyBnZXQgdGhlIG1pbiBhbmQgbWF4IG9mIHIsZyxiXG4gICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuICAgICAgICBjb25zdCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcblxuICAgICAgICAvLyBsaWdodG5lc3MgaXMgdGhlIGF2ZXJhZ2Ugb2YgdGhlIGxhcmdlc3QgYW5kIHNtYWxsZXN0IGNvbG9yIGNvbXBvbmVudHNcbiAgICAgICAgY29uc3QgdmFsID0gKG1heCArIG1pbikgLyAyO1xuICAgICAgICBsZXQgaHVlOiBudW1iZXI7XG4gICAgICAgIGxldCBzYXQ6IG51bWJlcjtcblxuICAgICAgICBpZiAobWF4ID09PSBtaW4pIHsgLy8gbm8gc2F0dXJhdGlvblxuICAgICAgICAgICAgaHVlID0gMDtcbiAgICAgICAgICAgIHNhdCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjID0gbWF4IC0gbWluOyAvLyBjaHJvbWFcbiAgICAgICAgICAgIC8vIHNhdHVyYXRpb24gaXMgc2ltcGx5IHRoZSBjaHJvbWEgc2NhbGVkIHRvIGZpbGxcbiAgICAgICAgICAgIC8vIHRoZSBpbnRlcnZhbCBbMCwgMV0gZm9yIGV2ZXJ5IGNvbWJpbmF0aW9uIG9mIGh1ZSBhbmQgbGlnaHRuZXNzXG4gICAgICAgICAgICBzYXQgPSBjIC8gKDEgLSBNYXRoLmFicygyICogdmFsIC0gMSkpO1xuICAgICAgICAgICAgc3dpdGNoIChtYXgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHI6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChnIC0gYikgLyBjICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIGc6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChiIC0gcikgLyBjICsgMjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBiOlxuICAgICAgICAgICAgICAgICAgICBodWUgPSAociAtIGcpIC8gYyArIDQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGg6IE1hdGgucm91bmQoaHVlICogNjApLCAgLy8gwrBcbiAgICAgICAgICAgIHM6IE1hdGgucm91bmQoc2F0ICogMTAwKSwgLy8gJVxuICAgICAgICAgICAgdjogTWF0aC5yb3VuZCh2YWwgKiAxMDApICAvLyAlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydCBSR0IgZGF0YSB0byBpbnQgdmFsdWVcbiAgICAgKiBAcGFyYW0gciByZWQgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gZyBncmVlbiBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBiIGJsdWUgWzAsIDI1NV1cbiAgICAgKiBAcmV0dXJucyBpbnQgdmFsdWVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJnYlRvSW50KHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChyKSAqIDB4MTAwMDAgKyBNYXRoLnJvdW5kKGcpICogMHgxMDAgKyBNYXRoLnJvdW5kKGIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGJvdW5kIGEgdmFsdWUgYmV0d2VlbiB0d28gdmFsdWVzXG4gICAgICogQHBhcmFtIHZhbHVlIHZhbHVlXG4gICAgICogQHBhcmFtIG1pbiBtaW4gdmFsdWVcbiAgICAgKiBAcGFyYW0gbWF4IG1heCB2YWx1ZVxuICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgcmVwbGFjZSBhbiBpbnZhbGlkIHZ2YWx1ZVxuICAgICAqIEByZXR1cm5zIHZhbHVlIGJldHdlZW4gbWluIGFuZCBtYXhcbiAgICAgKi9cbiAgICBwcml2YXRlIG1pbm1heCh2YWx1ZTogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGRlZmF1bHRWYWx1ZSA9IDApIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHZhbHVlIHx8IGRlZmF1bHRWYWx1ZSwgbWluKSwgbWF4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0ZXN0IGlzIGludENvbG9yIGlzIHZhbGlkIGZvciByZXR1cm4gYSB2bGF1ZVxuICAgICAqIEBwYXJhbSB2YWx1ZSBjYWxsYmFjayBvZiB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHZhbHVlIG9yIG51bGxcbiAgICAgKi9cbiAgICBwcml2YXRlIHZhbHVlPEw+KHZhbHVlOiAoKSA9PiBMKTogTCB7XG4gICAgICAgIHJldHVybiAhaXNOYU4odGhpcy5jYWxjQ29sb3IuaW50Q29sb3IpID8gdmFsdWUoKSA6IG51bGw7XG4gICAgfVxuXG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbG9yYXRpb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbG9yYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBRTVCLElBQU0sT0FBTyxHQUFHO0lBQ1osSUFBSSxFQUFFLDREQUE0RDtJQUNsRSxJQUFJLEVBQUUsaUhBQWlIO0lBQ3ZILElBQUksRUFBRSxxSEFBcUg7Q0FDOUgsQ0FBQztBQW9DRjtJQWtESSxvQkFBbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFIeEIsUUFBRyxHQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3RDLFFBQUcsR0FBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUcxQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsMEJBQUssR0FBTDtRQUNJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxxQ0FBZ0IsR0FBaEIsVUFBaUIsR0FBVztRQUN4QixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMs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UyxFQUFFLFNBQVMsRUFBRSxTQUFTO1FBQzNHLE1BQU0sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTO1FBQzNGLGFBQWEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVM7UUFDdkcsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUztRQUMxRyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTO1FBQ3JHLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVM7UUFDckcsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUztRQUNuRyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTO1FBQ3hHLFFBQVE7UUFDUixhQUFhLEVBQUUsU0FBUztLQUMzQixDQUFDO0lBK1ZOLGlCQUFDO0NBQUEsQUEzWUQsSUEyWUM7U0EzWVksVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZVxuXG5jb25zdCBwYXR0ZXJuID0ge1xuICAgIGhleGE6IC9eIz8oKFtcXGRhLWZdezN9KSgoW1xcZGEtZl17M30pKFtcXGRhLWZdezJ9KT98W1xcZGEtZl17MX0pPykkL2ksXG4gICAgcmdiYTogL15yZ2JhP1xcKChbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCgsXFxzKikoW1xcZF0qKFxcLltcXGRdKyk/KSk/XFwpJC9pLFxuICAgIGhzdmE6IC9eaHNsYT9cXCgoW1xcZF0qKFxcLltcXGRdKyk/KSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgoLFxccyopKFtcXGRdKihcXC5bXFxkXSspPykpP1xcKSQvaVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBSR0Ige1xuICAgIC8qKiBSZWQgY29sb3IgdmFsdWUgWzAsMjU1XSAgICovIHI6IG51bWJlcjtcbiAgICAvKiogR3JlZW4gY29sb3IgdmFsdWUgWzAsMjU1XSAqLyBnOiBudW1iZXI7XG4gICAgLyoqIEJsdWUgY29sb3IgdmFsdWUgWzAsMjU1XSAgKi8gYjogbnVtYmVyO1xuICAgIC8qKiBBbHBoYSBjb2xvciB2YWx1ZSBbMCwxXSAgICovIGE/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEhTViB7XG4gICAgLyoqIEh1ZSBjb2xvciB2YWx1ZSBbMCwzNjBdICAgICAgICAgICAgICovIGg6IG51bWJlcjtcbiAgICAvKiogU2FsdXJhdGlvbiBjb2xvciB2YWx1ZSBbMCwxMDBdICAgICAgKi8gczogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgY29sb3IgdmFsdWUgWzAsMTAwXSAqLyB2OiBudW1iZXI7XG4gICAgLyoqIEFscGhhIGNvbG9yIHZhbHVlIFswLDFdICAgICAgICAgICAgICovIGE/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbG9yRGF0YSB7XG4gICAgLy8gUkdCXG4gICAgLyoqIFJlZCBjb2xvciB2YWx1ZSBbLTI1NiwyNTVdICAgICAgICovIHI/OiBudW1iZXI7XG4gICAgLyoqIEdyZWVuIGNvbG9yIHZhbHVlIFstMjU2LDI1NV0gICAgICovIGc/OiBudW1iZXI7XG4gICAgLyoqIEJsdWUgY29sb3IgdmFsdWUgWy0yNTYsMjU1XSAgICAgICovIGI/OiBudW1iZXI7XG4gICAgLy8gSFNWL0hTTFxuICAgIC8qKiBIdWUgdmFsdWUgWy0zNjAsMzYwXSAgICAgICAgICAgICAqLyBoPzogbnVtYmVyO1xuICAgIC8qKiBTYWx1cmF0aW9uIHZhbHVlIFstMTAwLDEwMF0gICAgICAqLyBzPzogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgdmFsdWUgWy0xMDAsMTAwXSAqLyB2PzogbnVtYmVyO1xuICAgIC8vIE90aGVyXG4gICAgLyoqIGx1bWlub3NpdHkgdmFsdWUgWy0xLDFdICAgICAgICAgICovIGx1bWlub3NpdHk/OiBudW1iZXI7XG4gICAgLyoqIGNvbG9yIG1hc2sgICAgICAgICAgICAgICAgICAgICAgICovIG1hc2tDb2xvcj86IHN0cmluZztcbiAgICAvKiogY29sb3IgbWFzayBvcGFjaXR5IFswLDFdICAgICAgICAgKi8gbWFza09wYWNpdHk/OiBudW1iZXI7XG4gICAgLy8gYWxwaGFcbiAgICAvKiogY29sb3IgbWFzayBhbHBoYSBbLTEsMV0gICAgICAgICAgKi8gYWxwaGE/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JOdW1iZXIge1xuICAgICAvKiogaW50Y29sb3IgKi8gaW50Q29sb3I6IG51bWJlcjtcbiAgICAgLyoqIEFscGhhIGNvbG9yIHZhbHVlIFswLDFdICovIGFscGhhOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xvcmF0aW9uIHtcblxuICAgIC8qKlxuICAgICAqIENTUyBjb2xvciBsaXN0XG4gICAgICovXG4gICAgc3RhdGljIGNvbG9yc05hbWU6IGFueSA9IHtcbiAgICAgICAgLy8gQ1NTIDFcbiAgICAgICAgYmxhY2s6ICcjMDAwMDAwJywgc2lsdmVyOiAnI2MwYzBjMCcsIGdyYXk6ICcjODA4MDgwJywgd2hpdGU6ICcjZmZmZmZmJywgbWFyb29uOiAnIzgwMDAwMCcsIHJlZDogJyNmZjAwMDAnLFxuICAgICAgICBwdXJwbGU6ICcjODAwMDgwJywgZnVjaHNpYTogJyNmZjAwZmYnLCBncmVlbjogJyMwMDgwMDAnLCBsaW1lOiAnIzAwZmYwMCcsIG9saXZlOiAnIzgwODAwMCcsIHllbGxvdzogJyNmZmZmMDAnLFxuICAgICAgICBuYXZ5OiAnIzAwMDA4MCcsIGJsdWU6ICcjMDAwMGZmJywgdGVhbDogJyMwMDgwODAnLCBhcXVhOiAnIzAwZmZmZicsXG4gICAgICAgIC8vIENTUyAyIChSZXZpc2lvbiAxKVxuICAgICAgICBvcmFuZ2U6ICcjZmZhNTAwJyxcbiAgICAgICAgLy8gQ1NTIDNcbiAgICAgICAgYWxpY2VibHVlOiAnI2YwZjhmZicsIGFudGlxdWV3aGl0ZTogJyNmYWViZDcnLCBhcXVhbWFyaW5lOiAnIzdmZmZkNCcsIGF6dXJlOiAnI2YwZmZmZicsIGJlaWdlOiAnI2Y1ZjVkYycsXG4gICAgICAgIGJpc3F1ZTogJyNmZmU0YzQnLCBibGFuY2hlZGFsbW9uZDogJyNmZmViY2QnLCBibHVldmlvbGV0OiAnIzhhMmJlMicsIGJyb3duOiAnI2E1MmEyYScsIGJ1cmx5d29vZDogJyNkZWI4ODcnLFxuICAgICAgICBjYWRldGJsdWU6ICcjNWY5ZWEwJywgY2hhcnRyZXVzZTogJyM3ZmZmMDAnLCBjaG9jb2xhdGU6ICcjZDI2OTFlJywgY29yYWw6ICcjZmY3ZjUwJywgY29ybmZsb3dlcmJsdWU6ICcjNjQ5NWVkJyxcbiAgICAgICAgY29ybnNpbGs6ICcjZmZmOGRjJywgY3JpbXNvbjogJyNkYzE0M2MnLCBjeWFuOiAnIzAwZmZmZicsIGRlYXF1YTogJyMwMGZmZmYnLCBkYXJrYmx1ZTogJyMwMDAwOGInLFxuICAgICAgICBkYXJrY3lhbjogJyMwMDhiOGInLCBkYXJrZ29sZGVucm9kOiAnI2I4ODYwYicsIGRhcmtncmF5OiAnI2E5YTlhOScsIGRhcmtncmVlbjogJyMwMDY0MDAnLCBkYXJrZ3JleTogJyNhOWE5YTknLFxuICAgICAgICBkYXJra2hha2k6ICcjYmRiNzZiJywgZGFya21hZ2VudGE6ICcjOGIwMDhiJywgZGFya29saXZlZ3JlZW46ICcjNTU2YjJmJywgZGFya29yYW5nZTogJyNmZjhjMDAnLFxuICAgICAgICBkYXJrb3JjaGlkOiAnIzk5MzJjYycsIGRhcmtyZWQ6ICcjOGIwMDAwJywgZGFya3NhbG1vbjogJyNlOTk2N2EnLCBkYXJrc2VhZ3JlZW46ICcjOGZiYzhmJyxcbiAgICAgICAgZGFya3NsYXRlYmx1ZTogJyM0ODNkOGInLCBkYXJrc2xhdGVncmF5OiAnIzJmNGY0ZicsIGRhcmtzbGF0ZWdyZXk6ICcjMmY0ZjRmJywgZGFya3R1cnF1b2lzZTogJyMwMGNlZDEnLFxuICAgICAgICBkYXJrdmlvbGV0OiAnIzk0MDBkMycsIGRlZXBwaW5rOiAnI2ZmMTQ5MycsIGRlZXBza3libHVlOiAnIzAwYmZmZicsIGRpbWdyYXk6ICcjNjk2OTY5JywgZGltZ3JleTogJyM2OTY5NjknLFxuICAgICAgICBkb2RnZXJibHVlOiAnIzFlOTBmZicsIGZpcmVicmljazogJyNiMjIyMjInLCBmbG9yYWx3aGl0ZTogJyNmZmZhZjAnLCBmb3Jlc3RncmVlbjogJyMyMjhiMjInLFxuICAgICAgICBnYWluc2Jvcm86ICcjZGNkY2RjJywgZ2hvc3R3aGl0ZTogJyNmOGY4ZmYnLCBnb2xkOiAnI2ZmZDcwMCcsIGdvbGRlbnJvZDogJyNkYWE1MjAnLCBncmVlbnllbGxvdzogJyNhZGZmMmYnLFxuICAgICAgICBncmV5OiAnIzgwODA4MCcsIGhvbmV5ZGV3OiAnI2YwZmZmMCcsIGhvdHBpbms6ICcjZmY2OWI0JywgaW5kaWFucmVkOiAnI2NkNWM1YycsIGluZGlnbzogJyM0YjAwODInLFxuICAgICAgICBpdm9yeTogJyNmZmZmZjAnLCBraGFraTogJyNmMGU2OGMnLCBsYXZlbmRlcjogJyNlNmU2ZmEnLCBsYXZlbmRlcmJsdXNoOiAnI2ZmZjBmNScsIGxhd25ncmVlbjogJyM3Y2ZjMDAnLFxuICAgICAgICBsZW1vbmNoaWZmb246ICcjZmZmYWNkJywgbGlnaHRibHVlOiAnI2FkZDhlNicsIGxpZ2h0Y29yYWw6ICcjZjA4MDgwJywgbGlnaHRjeWFuOiAnI2UwZmZmZicsXG4gICAgICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiAnI2ZhZmFkMicsIGxpZ2h0Z3JheTogJyNkM2QzZDMnLCBsaWdodGdyZWVuOiAnIzkwZWU5MCcsIGxpZ2h0Z3JleTogJyNkM2QzZDMnLFxuICAgICAgICBsaWdodHBpbms6ICcjZmZiNmMxJywgbGlnaHRzYWxtb246ICcjZmZhMDdhJywgbGlnaHRzZWFncmVlbjogJyMyMGIyYWEnLCBsaWdodHNreWJsdWU6ICcjODdjZWZhJyxcbiAgICAgICAgbGlnaHRzbGF0ZWdyYXk6ICcjNzc4ODk5JywgbGlnaHRzbGF0ZWdyZXk6ICcjNzc4ODk5JywgbGlnaHRzdGVlbGJsdWU6ICcjYjBjNGRlJywgbGlnaHR5ZWxsb3c6ICcjZmZmZmUwJyxcbiAgICAgICAgbGltZWdyZWVuOiAnIzMyY2QzMicsIGxpbmVuOiAnI2ZhZjBlNicsIG1hZ2VudGE6ICcjZmYwMGZmJywgZGVmdWNoc2lhOiAnI2ZmMDBmZicsIG1lZGl1bWFxdWFtYXJpbmU6ICcjNjZjZGFhJyxcbiAgICAgICAgbWVkaXVtYmx1ZTogJyMwMDAwY2QnLCBtZWRpdW1vcmNoaWQ6ICcjYmE1NWQzJywgbWVkaXVtcHVycGxlOiAnIzkzNzBkYicsIG1lZGl1bXNlYWdyZWVuOiAnIzNjYjM3MScsXG4gICAgICAgIG1lZGl1bXNsYXRlYmx1ZTogJyM3YjY4ZWUnLCBtZWRpdW1zcHJpbmdncmVlbjogJyMwMGZhOWEnLCBtZWRpdW10dXJxdW9pc2U6ICcjNDhkMWNjJyxcbiAgICAgICAgbWVkaXVtdmlvbGV0cmVkOiAnI2M3MTU4NScsIG1pZG5pZ2h0Ymx1ZTogJyMxOTE5NzAnLCBtaW50Y3JlYW06ICcjZjVmZmZhJywgbWlzdHlyb3NlOiAnI2ZmZTRlMScsXG4gICAgICAgIG1vY2Nhc2luOiAnI2ZmZTRiNScsIG5hdmFqb3doaXRlOiAnI2ZmZGVhZCcsIG9sZGxhY2U6ICcjZmRmNWU2Jywgb2xpdmVkcmFiOiAnIzZiOGUyMycsIG9yYW5nZXJlZDogJyNmZjQ1MDAnLFxuICAgICAgICBvcmNoaWQ6ICcjZGE3MGQ2JywgcGFsZWdvbGRlbnJvZDogJyNlZWU4YWEnLCBwYWxlZ3JlZW46ICcjOThmYjk4JywgcGFsZXR1cnF1b2lzZTogJyNhZmVlZWUnLFxuICAgICAgICBwYWxldmlvbGV0cmVkOiAnI2RiNzA5MycsIHBhcGF5YXdoaXA6ICcjZmZlZmQ1JywgcGVhY2hwdWZmOiAnI2ZmZGFiOScsIHBlcnU6ICcjY2Q4NTNmJywgcGluazogJyNmZmMwY2InLFxuICAgICAgICBwbHVtOiAnI2RkYTBkZCcsIHBvd2RlcmJsdWU6ICcjYjBlMGU2Jywgcm9zeWJyb3duOiAnI2JjOGY4ZicsIHJveWFsYmx1ZTogJyM0MTY5ZTEnLCBzYWRkbGVicm93bjogJyM4YjQ1MTMnLFxuICAgICAgICBzYWxtb246ICcjZmE4MDcyJywgc2FuZHlicm93bjogJyNmNGE0NjAnLCBzZWFncmVlbjogJyMyZThiNTcnLCBzZWFzaGVsbDogJyNmZmY1ZWUnLCBzaWVubmE6ICcjYTA1MjJkJyxcbiAgICAgICAgc2t5Ymx1ZTogJyM4N2NlZWInLCBzbGF0ZWJsdWU6ICcjNmE1YWNkJywgc2xhdGVncmF5OiAnIzcwODA5MCcsIHNsYXRlZ3JleTogJyM3MDgwOTAnLCBzbm93OiAnI2ZmZmFmYScsXG4gICAgICAgIHNwcmluZ2dyZWVuOiAnIzAwZmY3ZicsIHN0ZWVsYmx1ZTogJyM0NjgyYjQnLCB0YW46ICcjZDJiNDhjJywgdGhpc3RsZTogJyNkOGJmZDgnLCB0b21hdG86ICcjZmY2MzQ3JyxcbiAgICAgICAgdHVycXVvaXNlOiAnIzQwZTBkMCcsIHZpb2xldDogJyNlZTgyZWUnLCB3aGVhdDogJyNmNWRlYjMnLCB3aGl0ZXNtb2tlOiAnI2Y1ZjVmNScsIHllbGxvd2dyZWVuOiAnIzlhY2QzMicsXG4gICAgICAgIC8vIENTUyA0XG4gICAgICAgIHJlYmVjY2FwdXJwbGU6ICcjNjYzMzk5J1xuICAgIH07XG5cbiAgICBwcml2YXRlIGNhbGNDb2xvcjogQ29sb3JOdW1iZXI7XG4gICAgcHJpdmF0ZSByZ2I6IFJHQiA9IHsgcjogMCwgZzogMCwgYjogMCwgYTogMSB9O1xuICAgIHByaXZhdGUgaHN2OiBIU1YgPSB7IGg6IDAsIHM6IDAsIHY6IDAsIGE6IDEgfTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb2xvcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZWluaXQgdG8gYmFzZSBjb2xvclxuICAgICAqL1xuICAgIHJlc2V0KCkge1xuICAgICAgICBpZiAodGhpcy5jb2xvcikge1xuICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IgPSB0aGlzLnBhcnNlQ29sb3IodGhpcy5jb2xvcik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgdGhlIGx1bWlub3NpdHkgb2YgYSBjb2xvclxuICAgICAqIEBwYXJhbSBsdW0gdmFsdWUgYmV0d2VlbiAtMSBhbmQgMVxuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBjaGFuZ2VMdW1pbm9zaXR5KGx1bTogbnVtYmVyKTogQ29sb3JhdGlvbiB7XG4gICAgICAgIGx1bSA9IHRoaXMubWlubWF4KGx1bSwgLTEsIDEpO1xuICAgICAgICB0aGlzLm1hc2tDb2xvcihsdW0gPCAwID8gJyMwMDAnIDogJyNGRkYnLCBNYXRoLmFicyhsdW0pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWRkIGNvbG9yIHdpdGggYSBtYXJrXG4gICAgICogQHBhcmFtIGNvbG9yIGFkZGl0aW9uYWwgY29sb3JcbiAgICAgKiBAcGFyYW0gb3BhY2l0eSB2YWx1ZSBvZiBvcGFjaXR5IGJldHdlZW4gMCBhbmQgMSBmb3IgdGhlIGFkZGl0aW9uYWwgY29sb3JcbiAgICAgKiBAcmV0dXJucyBDb2xvcmF0aW9uXG4gICAgICovXG4gICAgbWFza0NvbG9yKGNvbG9yOiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlciA9IDEpOiBDb2xvcmF0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuY2FsY0NvbG9yKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlQ29sb3IgPSB0aGlzLmNhbGNDb2xvcjtcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDb2xvciA9IHRoaXMucGFyc2VDb2xvcihjb2xvcik7XG5cbiAgICAgICAgICAgIGNvbnN0IGx1bSA9IHRoaXMubWlubWF4KG9wYWNpdHksIDAsIDEpO1xuXG4gICAgICAgICAgICBjb25zdCBSID0gYmFzZUNvbG9yLmludENvbG9yID4+IDE2O1xuICAgICAgICAgICAgY29uc3QgRyA9IGJhc2VDb2xvci5pbnRDb2xvciA+PiA4ICYgMHgwMEZGO1xuICAgICAgICAgICAgY29uc3QgQiA9IGJhc2VDb2xvci5pbnRDb2xvciAmIDB4MDAwMEZGO1xuXG4gICAgICAgICAgICBpZiAoYWRkaXRpb25hbENvbG9yLmFscGhhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IuYWxwaGEgPSB0aGlzLm1pbm1heChiYXNlQ29sb3IuYWxwaGEgKyBhZGRpdGlvbmFsQ29sb3IuYWxwaGEgKiBvcGFjaXR5LCAwLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2FsY0NvbG9yLmludENvbG9yID0gdGhpcy5yZ2JUb0ludChcbiAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKCgoYWRkaXRpb25hbENvbG9yLmludENvbG9yID4+IDE2KSAtIFIpICogbHVtKSArIFIsXG4gICAgICAgICAgICAgICAgTWF0aC5yb3VuZCgoKGFkZGl0aW9uYWxDb2xvci5pbnRDb2xvciA+PiA4ICYgMHgwMEZGKSAtIEcpICogbHVtKSArIEcsXG4gICAgICAgICAgICAgICAgTWF0aC5yb3VuZCgoKGFkZGl0aW9uYWxDb2xvci5pbnRDb2xvciAmIDB4MDAwMEZGKSAtIEIpICogbHVtKSArIEJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2hhbmdlIGNvbG9yIHdpdGggY29sb3IgcGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBjb2xvckRhdGEgYWRkaXRpb25uYWwgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBhZGRDb2xvcihjb2xvckRhdGE6IENvbG9yRGF0YSkge1xuICAgICAgICBpZiAodGhpcy5jYWxjQ29sb3IpIHtcbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEubHVtaW5vc2l0eSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlTHVtaW5vc2l0eShjb2xvckRhdGEubHVtaW5vc2l0eSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEubWFza0NvbG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrQ29sb3IoY29sb3JEYXRhLm1hc2tDb2xvciwgdGhpcy5taW5tYXgoY29sb3JEYXRhLm1hc2tPcGFjaXR5IHx8IDAsIDAsIDEpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5yIHx8IGNvbG9yRGF0YS5nIHx8IGNvbG9yRGF0YS5iKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmdiLnIgPSB0aGlzLm1pbm1heCh0aGlzLnJnYi5yICsgKCtjb2xvckRhdGEuciksIDAsIDI1NSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2xvckRhdGEuZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJnYi5nID0gdGhpcy5taW5tYXgodGhpcy5yZ2IuZyArICgrY29sb3JEYXRhLmcpLCAwLCAyNTUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sb3JEYXRhLmIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZ2IuYiA9IHRoaXMubWlubWF4KHRoaXMucmdiLmIgKyAoK2NvbG9yRGF0YS5iKSwgMCwgMjU1KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjQ29sb3IuaW50Q29sb3IgPSB0aGlzLnJnYlRvSW50KHRoaXMucmdiLnIsIHRoaXMucmdiLmcsIHRoaXMucmdiLmIpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ29sb3IoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5oIHx8IGNvbG9yRGF0YS5zIHx8IGNvbG9yRGF0YS52KSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaHN2LmggPSAodGhpcy5oc3YuaCArICgrY29sb3JEYXRhLmgpICsgMzYwKSAlIDM2MDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaHN2LnMgPSB0aGlzLm1pbm1heCh0aGlzLmhzdi5zICsgKCtjb2xvckRhdGEucyksIDAsIDEwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2xvckRhdGEudikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhzdi52ID0gdGhpcy5taW5tYXgodGhpcy5oc3YudiArICgrY29sb3JEYXRhLnYpLCAwLCAxMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNhbGNDb2xvci5pbnRDb2xvciA9IHRoaXMuaHN2VG9JbnQodGhpcy5oc3YuaCwgdGhpcy5oc3YucywgdGhpcy5oc3Yudik7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDb2xvcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLmFscGhhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oc3YuYSA9IHRoaXMucmdiLmEgPSB0aGlzLmNhbGNDb2xvci5hbHBoYSA9IHRoaXMubWlubWF4KHRoaXMuY2FsY0NvbG9yLmFscGhhICsgKCtjb2xvckRhdGEuYWxwaGEpLCAwLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSR0IgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgUkdCXG4gICAgICovXG4gICAgZ2V0UkdCKCk6IFJHQiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8UkdCPigoKSA9PiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJnYikpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIU1YgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgSFNWXG4gICAgICovXG4gICAgZ2V0SFNWKCk6IEhTViB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8SFNWPigoKSA9PiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmhzdikpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb2xvciBpbiAjSEVYIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiAjSEVYXG4gICAgICovXG4gICAgdG9IRVgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY0NvbG9yID8gdGhpcy52YWx1ZTxzdHJpbmc+KFxuICAgICAgICAgICAgKCkgPT4gJyMnICsgKDB4MTAwMDAwMCArIHRoaXMuY2FsY0NvbG9yLmludENvbG9yKS50b1N0cmluZygxNikuc2xpY2UoMSlcbiAgICAgICAgICAgICAgICArICh0aGlzLmNhbGNDb2xvci5hbHBoYSA8IDEgPyAoMHgxMDAgKyBNYXRoLnJvdW5kKHRoaXMuY2FsY0NvbG9yLmFscGhhICogMjU1KSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpIDogJycpXG4gICAgICAgICkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbG9yIGluIEhWTCgpIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiBIVkwoSCwgUyUsIFYlKVxuICAgICAqL1xuICAgIHRvSFNMKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8c3RyaW5nPihcbiAgICAgICAgICAgICgpID0+IGBoc2woJHt0aGlzLmhzdi5ofSwgJHt0aGlzLmhzdi5zfSUsICR7dGhpcy5oc3Yudn0lJHt0aGlzLmhzdi5hIDwgMSA/ICcsICcgKyB0aGlzLmhzdi5hIDogJyd9KWBcbiAgICAgICAgKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29sb3IgaW4gUkdCKCkgZm9ybWF0XG4gICAgICogQHJldHVybnMgc3RyaW5nIG9mIFJHQihSLCBHLCBCKVxuICAgICAqL1xuICAgIHRvUkdCKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNDb2xvciA/IHRoaXMudmFsdWU8c3RyaW5nPihcbiAgICAgICAgICAgICgpID0+IGByZ2IoJHt0aGlzLnJnYi5yfSwgJHt0aGlzLnJnYi5nfSwgJHt0aGlzLnJnYi5ifSR7dGhpcy5yZ2IuYSA8IDEgPyAnLCAnICsgdGhpcy5yZ2IuYSA6ICcnfSlgXG4gICAgICAgICkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHVwZGF0ZSBjb2xvcnMgZGF0YSA6IFJHQiBhbmQgSFNMXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVDb2xvcigpIHtcbiAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLmNhbGNDb2xvci5pbnRDb2xvcjtcbiAgICAgICAgLy8gdXBkYXRlIFJHQlxuICAgICAgICB0aGlzLnJnYi5yID0gY29sb3IgPj4gMTY7XG4gICAgICAgIHRoaXMucmdiLmcgPSBjb2xvciA+PiA4ICYgMHgwMEZGO1xuICAgICAgICB0aGlzLnJnYi5iID0gY29sb3IgJiAweDAwMDBGRjtcbiAgICAgICAgdGhpcy5yZ2IuYSA9IHRoaXMuY2FsY0NvbG9yLmFscGhhO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBIU0xcbiAgICAgICAgdGhpcy5oc3YgPSB0aGlzLnJnYjJoc3YodGhpcy5yZ2IuciwgdGhpcy5yZ2IuZywgdGhpcy5yZ2IuYik7XG4gICAgICAgIHRoaXMuaHN2LmEgPSB0aGlzLmNhbGNDb2xvci5hbHBoYTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgY29sb3JcbiAgICAgKiBAcGFyYW0gY29sb3IgcGFyc2UgY29sb3IgOiBuYW1lLCAjSEVYQSwgcmdiYSgpXG4gICAgICogQHJldHVybnMgaW50IGNvbG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYXJzZUNvbG9yKGNvbG9yOiBzdHJpbmcpOiBDb2xvck51bWJlciB7XG5cbiAgICAgICAgLy8gc2kgbmFtZWQgY29sb3JcbiAgICAgICAgaWYgKENvbG9yYXRpb24uY29sb3JzTmFtZVtjb2xvcl0pIHtcbiAgICAgICAgICAgIGNvbG9yID0gQ29sb3JhdGlvbi5jb2xvcnNOYW1lW2NvbG9yXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkYXRlIGhleGEgc3RyaW5nICNSR0IsICNSR0JBLCAjUlJHR0JCLCAjUlJHR0JCQUEgKGlnbm9yZSBhbHBoYSlcbiAgICAgICAgY29uc3QgbWF0Y2hIZXggPSBTdHJpbmcoY29sb3IpLm1hdGNoKHBhdHRlcm4uaGV4YSk7XG4gICAgICAgIGxldCBpbnRDb2xvcjogbnVtYmVyO1xuICAgICAgICBsZXQgYWxwaGEgPSAxO1xuICAgICAgICBpZiAobWF0Y2hIZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IGhleGFDb2xvciA9IG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgPyBtYXRjaEhleFsyXSArIG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgOiBtYXRjaEhleFsyXVswXSArIG1hdGNoSGV4WzJdWzBdICsgbWF0Y2hIZXhbMl1bMV0gKyBtYXRjaEhleFsyXVsxXSArIG1hdGNoSGV4WzJdWzJdICsgbWF0Y2hIZXhbMl1bMl07XG4gICAgICAgICAgICBjb25zdCBoZXhhQWxwaGEgPSBtYXRjaEhleFs0XVxuICAgICAgICAgICAgICAgID8gbWF0Y2hIZXhbNV1cbiAgICAgICAgICAgICAgICA6IChtYXRjaEhleFszXSA/IG1hdGNoSGV4WzNdWzFdICsgbWF0Y2hIZXhbM11bMV0gOiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgaW50Q29sb3IgPSBwYXJzZUludChoZXhhQ29sb3IsIDE2KTtcbiAgICAgICAgICAgIGFscGhhID0gaGV4YUFscGhhICE9PSB1bmRlZmluZWQgPyBwYXJzZUludChoZXhhQWxwaGEsIDE2KSAvIDI1NSA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW50Q29sb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdmFsaWRhdGUgcmdiKCkgLyByZ2JhKClcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoUmdiID0gU3RyaW5nKGNvbG9yKS5tYXRjaChwYXR0ZXJuLnJnYmEpO1xuICAgICAgICAgICAgaWYgKG1hdGNoUmdiKSB7XG4gICAgICAgICAgICAgICAgaW50Q29sb3IgPSB0aGlzLnJnYlRvSW50KHBhcnNlSW50KG1hdGNoUmdiWzFdLCAxMCksIHBhcnNlSW50KG1hdGNoUmdiWzRdLCAxMCksIHBhcnNlSW50KG1hdGNoUmdiWzddLCAxMCkpO1xuICAgICAgICAgICAgICAgIGFscGhhID0gbWF0Y2hSZ2JbMTFdICE9PSB1bmRlZmluZWQgPyBwYXJzZUZsb2F0KG1hdGNoUmdiWzExXSkgOiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGludENvbG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlIGhzdigpIC8gaHN2YSgpXG4gICAgICAgICAgICBjb25zdCBtYXRjaEhzdiA9IFN0cmluZyhjb2xvcikubWF0Y2gocGF0dGVybi5oc3ZhKTtcbiAgICAgICAgICAgIGlmIChtYXRjaEhzdikge1xuICAgICAgICAgICAgICAgIGludENvbG9yID0gdGhpcy5oc3ZUb0ludChwYXJzZUludChtYXRjaEhzdlsxXSwgMTApLCBwYXJzZUludChtYXRjaEhzdls0XSwgMTApLCBwYXJzZUludChtYXRjaEhzdls3XSwgMTApKTtcbiAgICAgICAgICAgICAgICBhbHBoYSA9IG1hdGNoSHN2WzExXSAhPT0gdW5kZWZpbmVkID8gcGFyc2VGbG9hdChtYXRjaEhzdlsxMV0pIDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGludENvbG9yLCBhbHBoYSB9O1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydCBIU1YvSFNMIHRvIGludCBSR0JcbiAgICAgKiBAcGFyYW0gaHVlIEh1ZSBbMCwgMzYwXVxuICAgICAqIEBwYXJhbSBzYXR1cmF0aW9uIFNhdHVyYXRpb24gWzAsIDEwMF1cbiAgICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgWzAsIDEwMF1cbiAgICAgKiBAcmV0dXJucyBpbnQgUkdCXG4gICAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMzUzMjExL2hzbC10by1yZ2ItY29sb3ItY29udmVyc2lvblxuICAgICAqL1xuICAgIHByaXZhdGUgaHN2VG9JbnQoaHVlOiBudW1iZXIsIHNhdHVyYXRpb246IG51bWJlciwgdmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHNhdHVyYXRpb24gPSBNYXRoLm1heCgwLCBzYXR1cmF0aW9uKTtcblxuICAgICAgICBjb25zdCBzID0gc2F0dXJhdGlvbiAvIDEwMDtcbiAgICAgICAgY29uc3QgdiA9IHZhbHVlIC8gMTAwO1xuICAgICAgICBjb25zdCBoID0gaHVlIC8gMzYwO1xuXG4gICAgICAgIGlmIChzYXR1cmF0aW9uID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZ2JUb0ludCh2ICogMjU2LCB2ICogMjU2LCB2ICogMjU2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHEgPSB2IDwgMC41ID8gdiAqICgxICsgcykgOiB2ICsgcyAtIHYgKiBzO1xuICAgICAgICBjb25zdCBwID0gMiAqIHYgLSBxO1xuICAgICAgICBjb25zdCByID0gdGhpcy5odWUycmdiKHAsIHEsIGggKyAxIC8gMyk7XG4gICAgICAgIGNvbnN0IGcgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCk7XG4gICAgICAgIGNvbnN0IGIgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCAtIDEgLyAzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5yZ2JUb0ludChNYXRoLnJvdW5kKHIgKiAyNTUpLCBNYXRoLnJvdW5kKGcgKiAyNTUpLCBNYXRoLnJvdW5kKGIgKiAyNTUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBodWUgY29sb3IgY2FsY3VsYXRpb25cbiAgICAgKiBAcGFyYW0gcCBudW1iZXJcbiAgICAgKiBAcGFyYW0gcSBudW1iZXJcbiAgICAgKiBAcGFyYW0gdCBudW1iZXJcbiAgICAgKiBAcmV0dXJucyBpbnQgY29sb3IgWzAsIDI1NV1cbiAgICAgKi9cbiAgICBwcml2YXRlIGh1ZTJyZ2IocDogbnVtYmVyLCBxOiBudW1iZXIsIHQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICh0IDwgMCkgeyB0ICs9IDE7IH0gZWxzZSBpZiAodCA+IDEpIHsgdCAtPSAxOyB9XG4gICAgICAgIGlmICh0IDwgMSAvIDYpIHsgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7IH1cbiAgICAgICAgaWYgKHQgPCAxIC8gMikgeyByZXR1cm4gcTsgfVxuICAgICAgICBpZiAodCA8IDIgLyAzKSB7IHJldHVybiBwICsgKHEgLSBwKSAqICgyIC8gMyAtIHQpICogNjsgfVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFJHQiB0byBIU1ZcbiAgICAgKiBAcGFyYW0gciByZWQgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gZyBncmVlbiBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBiIGJsdWUgWzAsIDI1NV1cbiAgICAgKiBAcmV0dXJucyBIU1YgZGF0YVxuICAgICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzkxMTg1MjgvcmdiLXRvLWhzbC1jb252ZXJzaW9uXG4gICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IU0xfYW5kX0hTViNGb3JtYWxfZGVyaXZhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgcmdiMmhzdihyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKTogSFNWIHtcblxuICAgICAgICAvLyBjb252ZXJ0IHIsZyxiIFswLDI1NV0gcmFuZ2UgdG8gWzAsMV1cbiAgICAgICAgciA9IHIgLyAyNTU7XG4gICAgICAgIGcgPSBnIC8gMjU1O1xuICAgICAgICBiID0gYiAvIDI1NTtcblxuICAgICAgICAvLyBnZXQgdGhlIG1pbiBhbmQgbWF4IG9mIHIsZyxiXG4gICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuICAgICAgICBjb25zdCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcblxuICAgICAgICAvLyBsaWdodG5lc3MgaXMgdGhlIGF2ZXJhZ2Ugb2YgdGhlIGxhcmdlc3QgYW5kIHNtYWxsZXN0IGNvbG9yIGNvbXBvbmVudHNcbiAgICAgICAgY29uc3QgdmFsID0gKG1heCArIG1pbikgLyAyO1xuICAgICAgICBsZXQgaHVlOiBudW1iZXI7XG4gICAgICAgIGxldCBzYXQ6IG51bWJlcjtcblxuICAgICAgICBpZiAobWF4ID09PSBtaW4pIHsgLy8gbm8gc2F0dXJhdGlvblxuICAgICAgICAgICAgaHVlID0gMDtcbiAgICAgICAgICAgIHNhdCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjID0gbWF4IC0gbWluOyAvLyBjaHJvbWFcbiAgICAgICAgICAgIC8vIHNhdHVyYXRpb24gaXMgc2ltcGx5IHRoZSBjaHJvbWEgc2NhbGVkIHRvIGZpbGxcbiAgICAgICAgICAgIC8vIHRoZSBpbnRlcnZhbCBbMCwgMV0gZm9yIGV2ZXJ5IGNvbWJpbmF0aW9uIG9mIGh1ZSBhbmQgbGlnaHRuZXNzXG4gICAgICAgICAgICBzYXQgPSBjIC8gKDEgLSBNYXRoLmFicygyICogdmFsIC0gMSkpO1xuICAgICAgICAgICAgc3dpdGNoIChtYXgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHI6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChnIC0gYikgLyBjICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIGc6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChiIC0gcikgLyBjICsgMjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBiOlxuICAgICAgICAgICAgICAgICAgICBodWUgPSAociAtIGcpIC8gYyArIDQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGg6IE1hdGgucm91bmQoaHVlICogNjApLCAgLy8gwrBcbiAgICAgICAgICAgIHM6IE1hdGgucm91bmQoc2F0ICogMTAwKSwgLy8gJVxuICAgICAgICAgICAgdjogTWF0aC5yb3VuZCh2YWwgKiAxMDApICAvLyAlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydCBSR0IgZGF0YSB0byBpbnQgdmFsdWVcbiAgICAgKiBAcGFyYW0gciByZWQgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gZyBncmVlbiBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBiIGJsdWUgWzAsIDI1NV1cbiAgICAgKiBAcmV0dXJucyBpbnQgdmFsdWVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJnYlRvSW50KHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChyKSAqIDB4MTAwMDAgKyBNYXRoLnJvdW5kKGcpICogMHgxMDAgKyBNYXRoLnJvdW5kKGIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGJvdW5kIGEgdmFsdWUgYmV0d2VlbiB0d28gdmFsdWVzXG4gICAgICogQHBhcmFtIHZhbHVlIHZhbHVlXG4gICAgICogQHBhcmFtIG1pbiBtaW4gdmFsdWVcbiAgICAgKiBAcGFyYW0gbWF4IG1heCB2YWx1ZVxuICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgcmVwbGFjZSBhbiBpbnZhbGlkIHZ2YWx1ZVxuICAgICAqIEByZXR1cm5zIHZhbHVlIGJldHdlZW4gbWluIGFuZCBtYXhcbiAgICAgKi9cbiAgICBwcml2YXRlIG1pbm1heCh2YWx1ZTogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGRlZmF1bHRWYWx1ZSA9IDApIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHZhbHVlIHx8IGRlZmF1bHRWYWx1ZSwgbWluKSwgbWF4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0ZXN0IGlzIGludENvbG9yIGlzIHZhbGlkIGZvciByZXR1cm4gYSB2bGF1ZVxuICAgICAqIEBwYXJhbSB2YWx1ZSBjYWxsYmFjayBvZiB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHZhbHVlIG9yIG51bGxcbiAgICAgKi9cbiAgICBwcml2YXRlIHZhbHVlPEw+KHZhbHVlOiAoKSA9PiBMKTogTCB7XG4gICAgICAgIHJldHVybiAhaXNOYU4odGhpcy5jYWxjQ29sb3IuaW50Q29sb3IpID8gdmFsdWUoKSA6IG51bGw7XG4gICAgfVxuXG59XG4iXX0= |
@@ -120,3 +120,3 @@ // tslint:disable:no-bitwise | ||
return this.calcColor ? this.value(() => '#' + (0x1000000 + this.calcColor.intColor).toString(16).slice(1) | ||
+ (this.calcColor.alpha < 1 ? (0x100 + Math.round(this.calcColor.alpha * 256)).toString(16).slice(1) : '')) : null; | ||
+ (this.calcColor.alpha < 1 ? (0x100 + Math.round(this.calcColor.alpha * 255)).toString(16).slice(1) : '')) : null; | ||
} | ||
@@ -173,3 +173,3 @@ /** | ||
intColor = parseInt(hexaColor, 16); | ||
alpha = hexaAlpha !== undefined ? parseInt(hexaAlpha, 16) / 256 : 1; | ||
alpha = hexaAlpha !== undefined ? parseInt(hexaAlpha, 16) / 255 : 1; | ||
} | ||
@@ -176,0 +176,0 @@ if (intColor === undefined) { |
@@ -124,3 +124,3 @@ // tslint:disable:no-bitwise | ||
return this.calcColor ? this.value(function () { return '#' + (0x1000000 + _this.calcColor.intColor).toString(16).slice(1) | ||
+ (_this.calcColor.alpha < 1 ? (0x100 + Math.round(_this.calcColor.alpha * 256)).toString(16).slice(1) : ''); }) : null; | ||
+ (_this.calcColor.alpha < 1 ? (0x100 + Math.round(_this.calcColor.alpha * 255)).toString(16).slice(1) : ''); }) : null; | ||
}; | ||
@@ -179,3 +179,3 @@ /** | ||
intColor = parseInt(hexaColor, 16); | ||
alpha = hexaAlpha !== undefined ? parseInt(hexaAlpha, 16) / 256 : 1; | ||
alpha = hexaAlpha !== undefined ? parseInt(hexaAlpha, 16) / 255 : 1; | ||
} | ||
@@ -182,0 +182,0 @@ if (intColor === undefined) { |
{ | ||
"name": "coloration-lib", | ||
"version": "0.1.1", | ||
"version": "0.1.2", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -51,3 +51,3 @@ [![npm version](https://badge.fury.io/js/coloration-lib.svg)](https://badge.fury.io/js/coloration-lib) [![Downloads](https://img.shields.io/npm/dm/coloration-lib.svg)](https://www.npmjs.com/package/coloration-lib) [![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](https://git.ikilote.net/angular/coloration/raw/master/LICENSE) | ||
}); | ||
console.log(color.toHEX()); // #ff3381cd | ||
console.log(color.toHEX()); // #ff3381cc | ||
``` | ||
@@ -54,0 +54,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
309340