:root{--font-size-int:1.125;--scale0:1em;--scale-1:calc(var(--scale0)/var(--font-size-int));--scale-2:calc(var(--scale-1)/var(--font-size-int));--scale-3:calc(var(--scale-2)/var(--font-size-int));--scale1:calc(var(--scale0)*var(--font-size-int));--scale2:calc(var(--scale1)*var(--font-size-int));--scale3:calc(var(--scale2)*var(--font-size-int));--scale4:calc(var(--scale3)*var(--font-size-int))}:root{--line-height-int:0.95;--lh0:1.3;--lh-1:calc(var(--lh0)/var(--line-height-int));--lh-2:calc(var(--lh-1)/var(--line-height-int));--lh-3:calc(var(--lh-2)/var(--line-height-int));--lh1:calc(var(--lh0)*var(--line-height-int));--lh2:calc(var(--lh1)*var(--line-height-int));--lh3:calc(var(--lh2)*var(--line-height-int));--lh4:calc(var(--lh3)*var(--line-height-int))}.clearfix:after{content:"";display:table;clear:both}p{orphans:2;widows:2}div.image,figure,table{-moz-column-break-inside:avoid;break-inside:avoid}.acm-ad,.acm-ad-container,.o-site-sidebar .acm-ad,article .acm-ad{display:none!important}.a-site-branding{width:100%;height:auto;position:relative;margin:0 auto .5em}.a-site-branding .a-logo-svg{display:block}header .a-site-branding{margin:0;max-width:30.37975%}header.o-header-support .a-site-branding{margin-right:auto}.m-ad-region,.m-support-cta-bottom,.m-support-cta .a-support-button{display:none!important}.m-support-cta.m-support-cta-top{text-align:left;flex-direction:row;width:auto;font-size:100%;max-width:none}.m-support-cta.m-support-cta-top h2{font-size:var(--scale0);line-height:1.3;font-size-adjust:.495;font-weight:700;font-style:normal;padding-bottom:0;font-family:helvetica, arial, sans-serif}.serif-fonts-loaded .m-support-cta.m-support-cta-top h2{font-family:ff-meta-serif-web-pro}.sans-fonts-loaded .m-support-cta.m-support-cta-top h2{font-family:ff-meta-web-pro}.m-support-cta.m-support-cta-bottom{display:none!important}.o-header-support .m-support-cta.m-support-cta-top{text-align:left;flex-direction:row;width:auto}.o-header-support .m-support-cta.m-support-cta-top h2{margin:0;font-size:var(--scale0);line-height:1.3;font-size-adjust:.495;font-weight:700;font-style:normal;font-family:helvetica, arial, sans-serif}.serif-fonts-loaded .o-header-support .m-support-cta.m-support-cta-top h2{font-family:ff-meta-serif-web-pro}.sans-fonts-loaded .o-header-support .m-support-cta.m-support-cta-top h2{font-family:ff-meta-web-pro}nav{display:none!important}.m-widget-site-branding{max-width:36.70886%}.m-widget-site-branding .a-site-branding{max-width:82.75862%}.m-entry-content{margin-bottom:1.5em;overflow-wrap:break-word}.m-entry-content.m-membership-support-wrapper{font-family:helvetica, arial, sans-serif}.serif-fonts-loaded .m-entry-content.m-membership-support-wrapper{font-family:ff-meta-serif-web-pro}.sans-fonts-loaded .m-entry-content.m-membership-support-wrapper{font-family:ff-meta-web-pro}.o-entry .m-entry-meta{width:15.25424%}.m-entry-header .m-entry-meta,.o-entry .m-entry-meta.m-entry-meta-horizontal{width:100%}.m-archive .m-entry-content{margin-bottom:0;flex:1 0}.m-archive.m-archive-excerpt .m-entry-content{flex:1 0;margin-right:.75em}.m-archive.m-archive-homepage .m-entry-content{order:2;margin-left:0}.m-archive.m-zone-homepage-top .m-entry-content{flex:1 0;margin-right:.75em}.m-archive.m-zone-homepage-top .m-post-image-first .m-entry-content{order:2;flex:1 0;margin-right:0}.m-archive-excerpt .m-post-image,.m-archive-homepage .m-post-image,.m-archive-top .m-post-image{width:100%}.m-archive-excerpt .m-post-image,.m-archive-top .m-post-image{margin-left:0;margin-bottom:.75em;width:auto}.m-archive-excerpt .m-post-image.m-post-thumbnail-full,.m-archive-top .m-post-image.m-post-thumbnail-full{width:100%}.m-post-image-first .m-post-image{margin-right:.75em}.m-homepage-zones .m-zone{flex-wrap:wrap;display:flex;width:100%;max-width:calc(100% - 300px)}.m-homepage-zones .m-zone.m-zone-homepage-top{max-width:calc(93.22034% - 300px)}.m-homepage-zones .m-zone.m-zone-homepage-top article{width:100%;border-bottom:0;padding-bottom:0}.m-homepage-zones .m-zone.m-zone-homepage-more-top article,.m-homepage-zones .m-zone.m-zone-homepage-opinion article{width:47.45763%}.m-widget-group.m-widget-group-homepage{display:flex}.o-wrapper-site-navigation,.o-wrapper-site-navigation *,.o-wrapper-sub-navigation{display:none!important}.o-wrapper.o-wrapper-site-header{align-items:center;justify-content:space-between;flex-direction:row;margin-bottom:.5em}#content{display:block}#content #comments #respond,#content #comments .a-comment-links,#content .m-entry-share,#content .m-form-instory,#content .m-related,#content article .m-form-newsletter-shortcode{display:none}.o-entry{flex-direction:row;justify-content:flex-start}.o-entry .m-entry-content{max-width:83.05085%}.o-site-message-container,body.page .o-site-sidebar .m-minnpost-spills-widget,body.page .o-site-sidebar .m-widget-most-commented,body.page .o-site-sidebar .m-widget-zone-posts,body.single .o-site-sidebar .m-minnpost-spills-widget,body.single .o-site-sidebar .m-widget-most-commented,body.single .o-site-sidebar .m-widget-zone-posts,footer nav{display:none}footer .o-footer .o-footer-hat{display:block}.pum,.wp-message-inserter-message-region-popup{display:none!important}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl92YXJpYWJsZXMuc2NzcyIsIl9taXhpbnMuc2NzcyIsInByaW50LnNjc3MiLCJfY29sdW1uLXNldHRlci5zY3NzIiwiPG5vIHNvdXJjZT4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0ZBLE1BTUMscUJBQWdCLENBQ2hCLFlBQVMsQ0FTTCxrREFBb0IsQ0FBcEIsbURBQW9CLENBQXBCLG1EQUFvQixDQWVwQixpREFBb0IsQ0FBcEIsaURBQW9CLENBQXBCLGlEQUFvQixDQUFwQixpREFBb0IsQ0FVekIsTUFNQyxzQkFBa0IsQ0FDbEIsU0FBTSxDQVNGLDhDQUFjLENBQWQsK0NBQWMsQ0FBZCwrQ0FBYyxDQWVkLDZDQUFjLENBQWQsNkNBQWMsQ0FBZCw2Q0FBYyxDQUFkLDZDQUFjLENDN0psQixnQkFDQyxVQUFXLENBQ1gsYUFBYyxDQUNkLFVBQVcsQ0NFYixFQUNDLFNBQVUsQ0FDVixRQUFTLENBR1YsdUJBR0MsOEJBQW1CLENBQW5CLGtCQUFtQixDQU1wQixrRUFJQyxzQkFBd0IsQ0FHekIsaUJBQ0MsVUFBVyxDQUNYLFdBQVksQ0FDWixpQkFBa0IsQ0FDbEIsa0JBQTJDLENBSjVDLDZCQU9FLGFBQWMsQ0FJaEIsd0JBQ0MsUUFBUyxDQUNULG1CQzhMdUQsQ0QzTHhELHlDQUNDLGlCQUFrQixDQVduQixvRUFDQyxzQkFBd0IsQ0FHekIsaUNBSUUsZUFBZ0IsQ0FDaEIsa0JBQW1CLENBQ25CLFVBQVcsQ0FDWCxjQUFlLENBQ2YsY0FBZSxDQVJqQixvQ0RzQ0UsdUJBQXdDLENBRXhDLGVBQWdCLENBdEJqQixxQkFBdUIsQ0FHdEIsZUFBZ0IsQ0FRaEIsaUJBQWtCLENDaEJqQixnQkFBaUIsQ0UxRXBCLHdDRjBFb0IsQ0FicEIsd0REaUJDLGlDQ0ptQixDQWJwQix1RERpQkMsMkJDSm1CLENBYnBCLG9DQW1CRSxzQkFBd0IsQ0FJMUIsbURBQ0MsZUFBZ0IsQ0FDaEIsa0JBQW1CLENBQ25CLFVBQVcsQ0FIWixzREFPRSxRQUFTLENEUVQsdUJBQXdDLENBRXhDLGVBQWdCLENBdEJqQixxQkFBdUIsQ0FHdEIsZUFBZ0IsQ0FRaEIsaUJBQWtCLENHMUZwQix3Q0gwRm9CLENDTnBCLDBFRE5DLGlDQVltQixDQ05wQix5RUROQywyQkFZbUIsQ0NPcEIsSUFDQyxzQkFBd0IsQ0FJekIsd0JBQ0MsbUJDaUl1RCxDRGxJeEQseUNBSUUsbUJDOEhzRCxDRDFIeEQsaUJBQ0MsbUJGb0k0QixDRW5JNUIsd0JBQXlCLENBRjFCLDhDRTlHQSx3Q0owRStELENFb0MvRCxrRUFLRSxpQ0Z6QzZELENFb0MvRCxpRUFLRSwyQkZ6QzZELENFNkMvRCx1QkFHRSxlQzhHc0QsQ0R0R3hELDZFQUdFLFVDbUdzRCxDRC9GeEQsNEJBR0UsZUFBZ0IsQ0FDaEIsUUFBUyxDQUpYLDhDQVVHLFFBQVMsQ0FDVCxrQkZnRzZCLENFM0doQywrQ0FtQkcsT0FBUSxDQUNSLGFBQWMsQ0FwQmpCLGdEQTJCRyxRQUFTLENBQ1Qsa0JGK0U2QixDRTNHaEMsb0VBaUNJLE9BQVEsQ0FDUixRQUFTLENBQ1QsY0FBZSxDQU1uQixnR0FHQyxVQUFXLENBR1osOERBRUMsYUFBYyxDQUVkLG1CRndEK0IsQ0V2RC9CLFVBQVcsQ0FMWiwwR0FRRSxVQUFXLENBSWIsa0NBQ0Msa0JGK0MrQixDRTVDaEMsMEJBSUUsY0FBZSxDQUNmLFlBQWEsQ0FDYixVQUFXLENBQ1gsNEJBQWlELENBUG5ELDhDQVVHLGlDQUF1RSxDQVYxRSxzREFhSSxVQUFXLENBQ1gsZUFBZ0IsQ0FDaEIsZ0JBQWlCLENBZnJCLHFIQXVCSSxlQ1NvRCxDREh4RCx3Q0FHUSxZQUFhLENBV3JCLGtGQUdDLHNCQUF3QixDQUd6QixpQ0FHRSxrQkFBbUIsQ0FDbkIsNkJBQThCLENBQzlCLGtCQUFtQixDQUNuQixrQkZWNEIsQ0VjOUIsU0FDQyxhQUFjLENBRGYsbUxBMkJFLFlBQWEsQ0FJZixTQUNDLGtCQUFtQixDQUNuQiwwQkFBMkIsQ0FGNUIsMEJBS0UsbUJDL0RzRCxDRHFGeEQsdVZBR0UsWUFBYSxDQUhmLCtCQU9FLGFBQWMsQ0FLaEIsK0NBRUMsc0JBQXdCIiwiZmlsZSI6InByaW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG5cdCNDb2xvcnNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8vIGJyYW5kIGNvbG9yc1xuJGJyYW5kLWNvbG9yczogKFxuXHRyZWQ6IChcblx0XHRkYXJrOiAjNGMxMDE2LFxuXHRcdG1lZGl1bTogIzdmMTIxYywgLy8gbG9nb1xuXHRcdGhpZ2hsaWdodDogI2Q3NzU3ZVxuXHQpLFxuKTtcblxuLy8gdXRpbGl0eSBjb2xvcnNcbiR1dGlsaXR5LWNvbG9yczogKFxuXHRncmVlbjogKFxuXHRcdGRhcms6ICMyNDYxM2IsXG5cdFx0bWVkaXVtOiAjMWM4NzQ1LCAvLyBkb25hdGVcblx0XHRoaWdobGlnaHQ6ICM2MDlmNzgsXG5cdFx0YmFja2dyb3VuZDogI2RkZjhlNyxcblx0KSxcblx0Ymx1ZTogKFxuXHRcdGRhcms6ICMxMzViN2UsIC8vIGxpbmtcblx0XHRtZWRpdW06ICMwYzdiYjAsXG5cdFx0aGlnaGxpZ2h0OiAjNWU5OWI1LFxuXHRcdGJhY2tncm91bmQ6ICNkY2YwZmFcblx0KSxcblx0cHVycGxlOiAoXG5cdFx0ZGFyazogIzYzNTA3NywgLy8gb3BpbmlvblxuXHRcdG1lZGl1bTogIzhjNjRiNCxcblx0XHRoaWdobGlnaHQ6ICNhODgwZDAsXG5cdFx0YmFja2dyb3VuZDogI2ViZTdlZlxuXHQpLFxuXHR5ZWxsb3c6IChcblx0XHRiYWNrZ3JvdW5kOiAjZmJkMzQxXG5cdCksXG5cdG9yYW5nZTogKFxuXHRcdGRhcms6ICM4NzNhMDIsXG5cdFx0bWVkaXVtOiAjYjk0ZjAzLCAvLyBhZHZlcnRpc2luZ1xuXHRcdGhpZ2hsaWdodDogI2ZjOWU1Yixcblx0XHRiYWNrZ3JvdW5kOiAjZmVlM2NmXG5cdCksXG4pO1xuXG4vLyBuZXV0cmFsIGNvbG9yc1xuJG5ldXRyYWwtY29sb3JzOiAoXG5cdGJsYWNrOiAjMWExODE4LCAvLyBsb2dvXG5cdGRhcms6ICM1ZTZlNzYsXG5cdG1lZGl1bTogIzg2OTI5OCxcblx0Ym9yZGVyOiAjZDZkNmRhLFxuXHRoaWdobGlnaHQ6ICNlYmViZmIsXG5cdGxpZ2h0OiAjZWZlZmYwLFxuXHR3aGl0ZTogI2ZmZlxuKTtcblxuLy8gTWVtYmVyc2hpcCBsZXZlbHNcbiRjb2xvcl9fbWlubnBvc3QtYnJvbnplOiAjY2Q3ZjMyO1xuJGNvbG9yX19taW5ucG9zdC1zaWx2ZXI6ICNjMGMwYzA7XG4kY29sb3JfX21pbm5wb3N0LWdvbGQ6ICNmZmQ3MDA7XG4kY29sb3JfX21pbm5wb3N0LXBsYXRpbnVtOiAjZTVlNGUyO1xuXG4kYmFja2dyb3VuZC11bnB1Ymxpc2hlZDogbmV1dHJhbC1jb2xvcih3aGl0ZSkgdXJsKC93cC1jb250ZW50L3RoZW1lcy9taW5ucG9zdC1sYXJnby9hc3NldHMvaW1nL3VucHVibGlzaGVkLnBuZyk7XG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcblx0I1RZUE9HUkFQSFlcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8vIGZvbnQgZmFtaWxpZXNcbiRmb250X19jb2RlOiBtb25hY28sIGNvbnNvbGFzLCBcIkFuZGFsZSBNb25vXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBtb25vc3BhY2U7XG4kZm9udF9fcHJlOiBcIkNvdXJpZXIgMTAgUGl0Y2hcIiwgY291cmllciwgbW9ub3NwYWNlO1xuJGZvbnRfX3NhbnM6IGhlbHZldGljYSwgYXJpYWwsIHNhbnMtc2VyaWY7XG4kZm9udF9fc2VyaWY6IGdlb3JnaWEsIGNhbWJyaWEsIFwiVGltZXMgTmV3IFJvbWFuXCIsIHRpbWVzLCBzZXJpZjtcbiR3ZWJmb250X19zZXJpZjogXCJmZi1tZXRhLXNlcmlmLXdlYi1wcm9cIiwgZ2VvcmdpYSwgY2FtYnJpYSwgXCJUaW1lcyBOZXcgUm9tYW5cIiwgdGltZXMsIHNlcmlmO1xuJHdlYmZvbnRfX3NhbnM6IFwiZmYtbWV0YS13ZWItcHJvXCIsIGhlbHZldGljYSwgYXJpYWwsIHNhbnMtc2VyaWY7XG5cbiRodG1sLXJvb3Qtc2l6ZTogMTI1JTsgLy8gMTAwJSBpcyAxNnB4XG4kaHRtbC1yb290LXNpemUtbGFyZ2Utc2NyZWVuOiAxNTAlO1xuXG4kaW50ZXJmYWNlLWNvcHktc2l6ZTogODAlO1xuJGludGVyZmFjZS1jb3B5LXNpemUtbGFyZ2VyOiA4NSU7XG4kaW50ZXJmYWNlLWNvcHktc2l6ZS1zbWFsbGVyOiA3NSU7XG5cbi8vIHR5cGUgc2NhbGUuXG4vLyB1c2VzIFJvYiBXZXljaGVydCdzIGNvZGUgYXQgaHR0cHM6Ly8yNHdheXMub3JnLzIwMTkvYS1tb2Rlcm4tdHlwb2dyYXBoaWMtc2NhbGUvXG4kaHRtbC1mb250LXNpemU6IDEwMCU7XG4vLyBzdGFydHMgd2l0aCB0aGUgPGh0bWw+IGVsZW1lbnQncyBmb250IHNpemUgdmFsdWUsIHNvIHdlXG4vLyBzaG91bGQgY2hhbmdlIHRoYXQgYmFzZWQgb24gb3VyIG1lZGlhIHF1ZXJpZXNcbjpyb290IHtcblx0JGZvbnQtc2l6ZS1pbnRlcnZhbDogMS4xMjU7ICAgIC8vIFVuaXRsZXNzIGZvciBwcm9wb3J0aW9uYWwsIHVuaXQgZm9yIGZpeGVkXG5cdCRib2R5LXRleHQ6IDFlbTsgIC8vIE11c3QgaGF2ZSBhIHVuaXRcblx0JHNjYWxlLW1pbjogLTM7ICAgIC8vIFVuaXRsZXNzIG5lZ2F0aXZlIGludGVnZXJcblx0JHNjYWxlLW1heDogNDsgICAgIC8vIFVuaXRsZXNzIHBvc2l0aXZlIGludGVnZXJcblxuXHQtLWZvbnQtc2l6ZS1pbnQ6ICN7JGZvbnQtc2l6ZS1pbnRlcnZhbH07XG5cdC0tc2NhbGUwOiAjeyRib2R5LXRleHR9O1xuXG5cdEBpZiAkc2NhbGUtbWluIDwgMCB7XG5cdFx0Ly8gR2VuZXJhdGUgc2NhbGUgdmFyaWFibGVzIHNtYWxsZXIgdGhhbiB0aGUgYmFzZSB0ZXh0IHNpemVcblx0XHRAZm9yICRpIGZyb20gLTEgdGhyb3VnaCAkc2NhbGUtbWluIHtcblxuXHRcdFx0QGlmIHR5cGUtb2YoJGZvbnQtc2l6ZS1pbnRlcnZhbCkgPT0gbnVtYmVyIHtcblxuXHRcdFx0XHRAaWYgdW5pdGxlc3MoJGZvbnQtc2l6ZS1pbnRlcnZhbCkge1xuXHRcdFx0XHRcdC0tc2NhbGUjeyRpfTogY2FsYyh2YXIoLS1zY2FsZSN7JGkgKyAxfSkgLyB2YXIoLS1mb250LXNpemUtaW50KSk7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdC0tc2NhbGUjeyRpfTogY2FsYyh2YXIoLS1zY2FsZSN7JGkgKyAxfSkgLSB2YXIoLS1mb250LXNpemUtaW50KSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRAaWYgJHNjYWxlLW1heCA+IDAge1xuXHRcdC8vIEdlbmVyYXRlIHNjYWxlIHZhcmlhYmxlcyBsYXJnZXIgdGhhbiB0aGUgYmFzZSB0ZXh0IHNpemVcblx0XHRAZm9yICRpIGZyb20gMSB0aHJvdWdoICRzY2FsZS1tYXgge1xuXG5cdFx0XHRAaWYgdHlwZS1vZigkZm9udC1zaXplLWludGVydmFsKSA9PSBudW1iZXIge1xuXG5cdFx0XHRcdEBpZiB1bml0bGVzcygkZm9udC1zaXplLWludGVydmFsKSB7XG5cdFx0XHRcdFx0LS1zY2FsZSN7JGl9OiBjYWxjKHZhcigtLXNjYWxlI3skaSAtIDF9KSAqIHZhcigtLWZvbnQtc2l6ZS1pbnQpKTtcblx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0LS1zY2FsZSN7JGl9OiBjYWxjKHZhcigtLXNjYWxlI3skaSAtIDF9KSArIHZhcigtLWZvbnQtc2l6ZS1pbnQpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLyBsaW5lIGhlaWdodCBzY2FsZVxuOnJvb3Qge1xuXHQkbGluZS1oZWlnaHQtaW50ZXJ2YWw6IDAuOTU7XG5cdCRib2R5LWxpbmUtaGVpZ2h0OiAxLjM7XG5cdCRsaW5lLWhlaWdodC1zY2FsZS1taW46IC0zOyAgICAvLyBVbml0bGVzcyBuZWdhdGl2ZSBpbnRlZ2VyXG5cdCRsaW5lLWhlaWdodC1zY2FsZS1tYXg6IDQ7ICAgICAvLyBVbml0bGVzcyBwb3NpdGl2ZSBpbnRlZ2VyXG5cblx0LS1saW5lLWhlaWdodC1pbnQ6ICN7JGxpbmUtaGVpZ2h0LWludGVydmFsfTtcblx0LS1saDA6ICN7JGJvZHktbGluZS1oZWlnaHR9O1xuXG5cdEBpZiAkbGluZS1oZWlnaHQtc2NhbGUtbWluIDwgMCB7XG5cdFx0Ly8gR2VuZXJhdGUgc2NhbGUgdmFyaWFibGVzIHNtYWxsZXIgdGhhbiB0aGUgYmFzZSB0ZXh0IHNpemVcblx0XHRAZm9yICRpIGZyb20gLTEgdGhyb3VnaCAkbGluZS1oZWlnaHQtc2NhbGUtbWluIHtcblxuXHRcdFx0QGlmIHR5cGUtb2YoJGxpbmUtaGVpZ2h0LWludGVydmFsKSA9PSBudW1iZXIge1xuXG5cdFx0XHRcdEBpZiB1bml0bGVzcygkbGluZS1oZWlnaHQtaW50ZXJ2YWwpIHtcblx0XHRcdFx0XHQtLWxoI3skaX06IGNhbGModmFyKC0tbGgjeyRpICsgMX0pIC8gdmFyKC0tbGluZS1oZWlnaHQtaW50KSk7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdC0tbGgjeyRpfTogY2FsYyh2YXIoLS1saCN7JGkgKyAxfSkgLSB2YXIoLS1saW5lLWhlaWdodC1pbnQpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEBpZiAkbGluZS1oZWlnaHQtc2NhbGUtbWF4ID4gMCB7XG5cdFx0Ly8gR2VuZXJhdGUgc2NhbGUgdmFyaWFibGVzIGxhcmdlciB0aGFuIHRoZSBiYXNlIHRleHQgc2l6ZVxuXHRcdEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxpbmUtaGVpZ2h0LXNjYWxlLW1heCB7XG5cblx0XHRcdEBpZiB0eXBlLW9mKCRsaW5lLWhlaWdodC1pbnRlcnZhbCkgPT0gbnVtYmVyIHtcblxuXHRcdFx0XHRAaWYgdW5pdGxlc3MoJGxpbmUtaGVpZ2h0LWludGVydmFsKSB7XG5cdFx0XHRcdFx0LS1saCN7JGl9OiBjYWxjKHZhcigtLWxoI3skaSAtIDF9KSAqIHZhcigtLWxpbmUtaGVpZ2h0LWludCkpO1xuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHQtLWxoI3skaX06IGNhbGModmFyKC0tbGgjeyRpIC0gMX0pICsgdmFyKC0tbGluZS1oZWlnaHQtaW50KSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcblx0I0xheW91dFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBHUklEIFBST1BPUlRJT05TXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEN1c3RvbWl6ZSB5b3VyIGdyaWTigJlzIHByb3BvcnRpb25zIGJ5IGVkaXRpbmcgdGhlIHZhbHVlcyBvZlxuLy8gdGhlIGZvdXIgdmFyaWFibGVzIGJlbG93LiBVc2Ugb25seSBudW1iZXJzIGZvciB2YWx1ZXMsIG5vXG4vLyB1bml0cyAoZS5nLiBcIjEwXCIsIG5vdCBcIjEwcHhcIikuIElNUE9SVEFOVDogRG9uJ3QgZGVsZXRlIGFueVxuLy8gb2YgdGhlc2UgdmFyaWFibGVzISBGb3IgYW55IHlvdSBkb24ndCBuZWVkIHRvIHVzZSwganVzdFxuLy8gYXNzaWduIGEgdmFsdWUgb2YgMC5cblxuJG1hcjogNDsgLy8gTWFyZ2luIHdpZHRoXG4kY29sOiA0OyAvLyBDb2x1bW4gd2lkdGhcbiRndXQ6IDE7IC8vIEd1dHRlciB3aWR0aFxuJHBhZDogMTsgLy8gUGFkZGluZyB3aWR0aFxuXG4kZ3JpZC1jb2xvcjogcmVkOyAvLyBHcmlkIG92ZXJsYXkgY29sb3JcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCUkVBS1BPSU5UU1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBZb3UgY2FuIGRlZmluZSBhcyBtYW55IChvciBhcyBmZXcpIGJyZWFrcG9pbnRzIGFzIHlvdSBsaWtlLFxuLy8gYW5kIG5hbWUgdGhlbSB3aGF0ZXZlciB5b3Ugd2FudC4gSnVzdCBiZSBzdXJlIHRvOlxuLy9cbi8vIDEuIHVzZSB0aGUgc3ludGF4IHNob3duIGJlbG93LFxuLy8gMi4ga2VlcCB0aGUgYnJlYWtwb2ludHMgaW4gb3JkZXIgKHNtYWxsZXN0IHRvIGxhcmdlc3QpLCBhbmRcbi8vIDMuIGluY2x1ZGUgYSBuYW1lIChlLmcuIFwieGxcIiksIGNvbHVtbiBjb3VudCAoXCJjb2xzXCIsXG4vLyAgICB1bml0bGVzcyksIGFuZCBtaW5pbXVtIHdpZHRoIChcIm1pbi13aWR0aFwiLCB3aXRoIHVuaXRzKVxuLy8gICAgZm9yIGVhY2ggYnJlYWtwb2ludFxuLy9cbi8vIEFsbCBicmVha3BvaW50cyB1c2UgdGhlIHNhbWUgcHJvcG9ydGlvbnMgc3BlY2lmaWVkIGluIHRoZVxuLy8gdmFyaWFibGVzIGFib3ZlLCBidXQgbWFyZ2luIHdpZHRocyBjYW4gYmUgb3B0aW9uYWxseVxuLy8gY3VzdG9taXplZCBmb3IgZWFjaCBicmVha3BvaW50LlxuXG4vLyBleDogQGluY2x1ZGUgYnJlYWtwb2ludC1taW4oIHNtICkgeyB9XG5cbiRicmVha3BvaW50czogKFxuXHR4eHhzOiAoY29sczogIDQsIG1pbi13aWR0aDogIDAsICBtYXJnaW46ICRwYWQpLCAvLyBJbmNsdWRlcyBvcHRpb25hbCBjdXN0b20gbWFyZ2luXG5cdHh4czogKGNvbHM6ICA2LCBtaW4td2lkdGg6IDI0ZW0sIG1hcmdpbjogJGd1dCksIC8vIDM4NHB4XG5cdHhzOiAoY29sczogIDYsIG1pbi13aWR0aDogMzBlbSwgbWFyZ2luOiAkZ3V0KSwgLy8gNDgwcHhcblx0c206IChjb2xzOiAgNiwgbWluLXdpZHRoOiA0MGVtLCBtYXJnaW46ICRndXQpLCAvLyA2NDBweFxuXHRtZDogKGNvbHM6ICA4LCBtaW4td2lkdGg6IDUwZW0sIG1hcmdpbjogJGd1dCksIC8vIDgwMHB4XG5cdGxnOiAoY29sczogMTIsIG1pbi13aWR0aDogNjBlbSwgbWFyZ2luOiAkbWFyKSwgLy8gOTYwcHhcblx0eGw6IChjb2xzOiAxNiwgbWluLXdpZHRoOiA3MGVtLCBtYXJnaW46ICRtYXIpLCAvLyAxMTIwcHhcblx0eHhsOiAoY29sczogMTYsIG1pbi13aWR0aDogODBlbSwgbWFyZ2luOiAkbWFyKSwgLy8gMTI4MHB4XG4gICAgeHh4bDogKGNvbHM6IDE2LCBtaW4td2lkdGg6IDkwZW0sIG1hcmdpbjogJG1hcikgLy8gMTQ0MHB4XG4pO1xuXG4kbWF4LXdpZHRoOiBudWxsOyAvLyBGb3Igbm8gbWF4LXdpZHRoLCB1c2UgJG1heC13aWR0aDogbnVsbDtcblxuJHNpemVfX3NpdGUtc2lkZWJhcjogMzAwcHg7IC8vIHRoaXMgbmVlZHMgdG8gYmUgcGl4ZWwgYmFzZWQgYmVjYXVzZSBvZiBhZCBkaW1lbnNpb25zXG4kbWF4LXdpZHRoLXBhZ2U6IDgwZW07IC8vIHRoaXMgaXMgMTI4MHB4XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gWi1JTkRFWEVTXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHotaW5kZXhfX3h4eGw6IDEwMDAwMDAwMDA7XG4kei1pbmRleF9feHhsOiAxMDAwMDAwMDA7XG4kei1pbmRleF9feGw6IDEwMDAwMDAwO1xuJHotaW5kZXhfX2xnOiAxMDAwMDAwO1xuJHotaW5kZXhfX21kOiAxMDAwMDA7XG4kei1pbmRleF9fc206IDEwMDAwO1xuJHotaW5kZXhfX3hzOiAxMDAwO1xuJHotaW5kZXhfX3h4czogMTAwO1xuJHotaW5kZXhfX3h4eHM6IDEwO1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuXHQjU1BBQ0lOR1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy8gbWFyZ2luL3BhZGRpbmdcbiRzdGFuZGFyZC1ibG9jay1tYXJnaW46IDEuNWVtOyAvLyAzNnB4IGF0IGRlc2t0b3BcbiRzdGFuZGFyZC1oZWFkaW5nLW1hcmdpbjogMC43NWVtOyAvLyAxOHB4IGF0IGRlc2t0b3BcbiRzdGFuZGFyZC1ibG9jay1wYWRkaW5nOiAwLjVlbTsgLy8gMTJweCBhdCBib2R5XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG5cdCNCT1JERVJTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4kYm9yZGVyLXJhZGl1czogNHB4O1xuJGJvcmRlci1kZWZhdWx0LXN0eWxlOiAxcHggc29saWQgbmV1dHJhbC1jb2xvcihib3JkZXIpO1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuXHQjQW5pbWF0aW9uXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4kaG92ZXItdHJhbnNpdGlvbjogLjI1cyBhbGw7XG4kZG91YmxlLXRyYW5zaXRpb246IC41cyBhbGw7XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG5cdCNGaXhlZCBTaXplc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy8gaW1hZ2VzXG4kYXV0aG9yLXRodW1iLXNpemU6IDc1cHg7XG4kYXV0aG9yLXBob3RvLXNpemU6IDE5MHB4O1xuJGF1dGhvci1mdWxsLXNpemU6IDIyNXB4O1xuXG4vLyBpY29uc1xuJHNoYXJlLWljb24tc2l6ZTogMmVtO1xuJGlubGluZS1pY29uLXNpemU6IDFlbTtcblxuLy8gYWRzXG4kYWQtdG9wLXdpZHRoOiA3MjhweDtcbiRhZC10b3AtaGVpZ2h0OiA5MHB4O1xuJGFkLXRvcC1yaWdodC13aWR0aDogMjI4cHg7XG4kYWQtdG9wLXJpZ2h0LWlmcmFtZS1oZWlnaHQ6IDkwcHg7XG4kYWQtZW1iZWQtd2lkdGg6IDMwMHB4O1xuJGFkLWVtYmVkLWhlaWdodDogMjUwcHg7XG4kYWQtaGFsZnBhZ2Utd2lkdGg6IDMwMHB4O1xuJGFkLWhhbGZwYWdlLWhlaWdodDogNjAwcHg7XG5cbi8vIHRvdWNoIHRhcmdldHNcbiR0b3VjaC10YXJnZXQtbWluaW11bS1zaXplOiA0NHB4O1xuJHRvdWNoLXRhcmdldC1taW5pbXVtLXNpemUtZGVza3RvcDogMzJweDtcbiIsIi8vIGNsZWFyZml4XG5AbWl4aW4gY2xlYXJmaXgge1xuXG5cdCY6OmFmdGVyIHtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHRcdGNsZWFyOiBib3RoO1xuXHR9XG59XG4vLyB1c2VkIGxpa2UgdGhpc1xuLmNsZWFyZml4IHtcblxuXHRAaW5jbHVkZSBjbGVhcmZpeDtcbn1cblxuLy8gcmVzcG9uc2l2ZSBpZnJhbWVzIGJ5IHJhdGlvXG5AbWl4aW4gZ2VuZXJhdGVSYXRpb3MoICR3aWR0aCwgJGhlaWdodCwgJHByZWZpeDogXCJyYXRpby1cIiApIHtcblx0JGNsYXNzLW5hbWU6ICRwcmVmaXggKyAkd2lkdGggKyBcInhcIiArICRoZWlnaHQ7XG5cblx0LiN7JGNsYXNzLW5hbWV9IHtcblx0XHRwYWRkaW5nLWJvdHRvbTogcmF0aW8oJHdpZHRoLCAkaGVpZ2h0KTtcblx0fVxuXHQvLyBPdXRwdXQgZXhhbXBsZTogLnJhdGlvLTE2eDkge31cbn1cbi8vIHVzZWQgbGlrZSB0aGlzXG4vL0BpbmNsdWRlIGdlbmVyYXRlUmF0aW9zKDE2LDkpOyAvLyAxNng5XG4vL0BpbmNsdWRlIGdlbmVyYXRlUmF0aW9zKDQsMyk7ICAvLyA0eDNcblxuLy8gZm9udCBmYW1pbGllc1xuXG4vLyBib2R5IHRleHRcbkBtaXhpbiBib2R5LXByZXNldCggJHNpemU6IGluaGVyaXQsICRib2xkOiBpbmhlcml0LCAkaXRhbGljOiBpbmhlcml0LCAkbGluZS1oZWlnaHQ6IGluaGVyaXQgKSB7XG5cblx0QGluY2x1ZGUgdGV4dC1wcmVzZXQoICRzaXplLCAkbGluZS1oZWlnaHQgKTtcblx0Zm9udC1mYW1pbHk6ICR3ZWJmb250X19zZXJpZjtcblx0Zm9udC1zaXplLWFkanVzdDogMC40NjtcblxuXHRAaWYgJGJvbGQgPT0gdHJ1ZSB7XG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0fSBAZWxzZSBpZiAkYm9sZCA9PSBmYWxzZSB7XG5cdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0fVxuXG5cdEBpZiAkaXRhbGljID09IHRydWUge1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0fSBAZWxzZSBpZiAkaXRhbGljID09IGZhbHNlIHtcblx0XHRmb250LXN0eWxlOiBub3JtYWw7XG5cdH1cblx0bGluZS1oZWlnaHQ6IDEuMztcbn1cbi8vIHVzZWQgbGlrZSB0aGlzOiBib2R5LXByZXNldCggJHNpemU6IDMgKTtcblxuLy8gaGVhZGluZyB0ZXh0XG5AbWl4aW4gaGVhZGluZy1wcmVzZXQoICRzaXplOiBpbmhlcml0LCAkYm9sZDogaW5oZXJpdCwgJGl0YWxpYzogaW5oZXJpdCwgJGxpbmUtaGVpZ2h0OiBpbmhlcml0ICkge1xuXG5cdEBpbmNsdWRlIHRleHQtcHJlc2V0KCAkc2l6ZSwgJGxpbmUtaGVpZ2h0ICk7XG5cdGZvbnQtZmFtaWx5OiAkd2ViZm9udF9fc2VyaWY7XG5cdGZvbnQtc2l6ZS1hZGp1c3Q6IDAuNDY7XG5cblx0QGlmICRib2xkID09IHRydWUge1xuXHRcdGZvbnQtd2VpZ2h0OiA5MDA7XG5cdH0gQGVsc2UgaWYgJGJvbGQgPT0gZmFsc2Uge1xuXHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdH1cblxuXHRAaWYgJGl0YWxpYyA9PSB0cnVlIHtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdH0gQGVsc2UgaWYgJGl0YWxpYyA9PSBmYWxzZSB7XG5cdFx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHR9XG5cdGxpbmUtaGVpZ2h0OiAxLjE1O1xufVxuLy8gdXNlZCBsaWtlIHRoaXM6IEBpbmNsdWRlIGhlYWRpbmctcHJlc2V0KCAkc2l6ZTogMywgJGJvbGQ6IGZhbHNlICk7XG5cbi8vIG1ldGEgdGV4dFxuQG1peGluIG1ldGEtcHJlc2V0KCAkc2l6ZTogaW5oZXJpdCwgJGJvbGQ6IGZhbHNlLCAkaXRhbGljOiBmYWxzZSwgJGxpbmUtaGVpZ2h0OiBpbmhlcml0ICkge1xuXG5cdEBpbmNsdWRlIHRleHQtcHJlc2V0KCAkc2l6ZSwgJGxpbmUtaGVpZ2h0ICk7XG5cdGZvbnQtZmFtaWx5OiAkd2ViZm9udF9fc2Fucztcblx0Zm9udC1zaXplLWFkanVzdDogMC40OTU7XG5cblx0QGlmICRib2xkID09IHRydWUge1xuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdH0gQGVsc2UgaWYgJGJvbGQgPT0gZmFsc2Uge1xuXHRcdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdH1cblxuXHRAaWYgJGl0YWxpYyA9PSB0cnVlIHtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdH0gQGVsc2UgaWYgJGl0YWxpYyA9PSBmYWxzZSB7XG5cdFx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHR9XG59XG5cbi8vIHRleHQgc2l6ZXNcbkBtaXhpbiB0ZXh0LXByZXNldCggJHNpemU6IGluaGVyaXQsICRsaW5lLWhlaWdodDogaW5oZXJpdCApIHtcblx0Ly9mb250LXNpemU6IG1hcC1nZXQoICR0ZXh0LXNpemVzLCAkc2l6ZSApICsgcHg7XG5cdC8vZm9udC1zaXplOiBtYXAtZ2V0KCAkdGV4dC1zaXplcywgJHNpemUgKS8xMCArIHJlbTtcblx0QGlmICRzaXplICE9IFwiaW5oZXJpdFwiIHtcblx0XHRmb250LXNpemU6IHZhcigtLXNjYWxlI3sgJHNpemUgfSk7XG5cdFx0Ly9saW5lLWhlaWdodDogdmFyKC0tbGgjeyAkc2l6ZSB9KTtcblx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHR9XG5cdFxuXHQvL2xpbmUtaGVpZ2h0OiBtYXAtZ2V0KCAkbGluZS1oZWlnaHRzLCAkc2l6ZSApO1xuXG5cdC8qQGluY2x1ZGUgYnJlYWtwb2ludC1taW4oIHhzICkge1xuICAgICAgICBsaW5lLWhlaWdodDogbWFwLWdldCggJGxpbmUtaGVpZ2h0cywgJHNpemUgKSAqIDEuMjU7XG4gICAgfSAvLyAxMjUlXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1taW4oIHNtICkge1xuICAgICAgICBsaW5lLWhlaWdodDogbWFwLWdldCggJGxpbmUtaGVpZ2h0cywgJHNpemUgKSAqIDEuNTtcbiAgICB9IC8vIDE1MCUqL1xufVxuLy8gbGluayB1bmRlcmxpbmUgdHJlYXRtZW50XG5AbWl4aW4gbGluay11bmRlcmxpbmUoICRjb2xvcjogdXRpbGl0eS1jb2xvcihibHVlLCBkYXJrKSwgJGhvdmVyOiB1dGlsaXR5LWNvbG9yKGJsdWUsIGhpZ2hsaWdodCkgKSB7XG5cdGNvbG9yOiAkY29sb3I7XG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHR0ZXh0LWRlY29yYXRpb24tY29sb3I6ICRob3Zlcjtcblx0dGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAwLjI1ZW07XG5cdHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDAuMDhlbTtcbn1cblxuLy8gYnV0dG9uIHRyZWF0bWVudFxuQG1peGluIGJ1dHRvbiggJGJhY2tncm91bmQ6IGJyYW5kLWNvbG9yKHJlZCwgbWVkaXVtKSwgJGhvdmVyOiBicmFuZC1jb2xvcihyZWQsIGRhcmspLCAkY29sb3I6IG5ldXRyYWwtY29sb3Iod2hpdGUpKSB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0cGFkZGluZzogJHN0YW5kYXJkLWJsb2NrLXBhZGRpbmcgLyAyO1xuXHRib3JkZXI6IDA7XG5cdG1hcmdpbi1yaWdodDogJHN0YW5kYXJkLWJsb2NrLXBhZGRpbmc7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHR0cmFuc2l0aW9uOiAkaG92ZXItdHJhbnNpdGlvbjtcblx0QGluY2x1ZGUgbWV0YS1wcmVzZXQoICRzaXplOiAxLCAkYm9sZDogdHJ1ZSwgJGl0YWxpYzogZmFsc2UsICRsaW5lLWhlaWdodDogMSApO1xuXHRiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcblx0Y29sb3I6ICRjb2xvcjtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG5cblx0JjpsaW5rLFxuXHQmOnZpc2l0ZWQge1xuXHRcdGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuXHRcdGNvbG9yOiAkY29sb3I7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHR9XG5cblx0Jjpob3Zlcixcblx0Jjpmb2N1cyxcblx0JjphY3RpdmUsXG5cdCYuYWN0aXZlIHtcblx0XHRiYWNrZ3JvdW5kOiAkaG92ZXI7XG5cdFx0Y29sb3I6ICRjb2xvcjtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdH1cbn1cbiIsIkBpbXBvcnQgXCJmdW5jdGlvbnNcIjsgLy8gcHV0IGZ1bmN0aW9ucyBmaXJzdCBiZWNhdXNlIHRoZXkgZ2V0IHVzZWQgaW4gY29sb3IgdmFyaWFibGUgY2FsY3VsYXRpb25zXG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiY29sdW1uLXNldHRlclwiO1xuQGltcG9ydCBcIm1peGluc1wiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJBU0Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxucCB7XG5cdG9ycGhhbnM6IDI7XG5cdHdpZG93czogMjtcbn1cblxuZmlndXJlLFxudGFibGUsXG5kaXYuaW1hZ2Uge1xuXHRicmVhay1pbnNpZGU6IGF2b2lkO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEFUT01TXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi5hY20tYWQtY29udGFpbmVyLFxuLmFjbS1hZCxcbmFydGljbGUgLmFjbS1hZCxcbi5vLXNpdGUtc2lkZWJhciAuYWNtLWFkIHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uYS1zaXRlLWJyYW5kaW5nIHtcblx0d2lkdGg6IDEwMCU7XG5cdGhlaWdodDogYXV0bztcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRtYXJnaW46IDAgYXV0byAkc3RhbmRhcmQtYmxvY2stcGFkZGluZyBhdXRvO1xuXG5cdC5hLWxvZ28tc3ZnIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxufVxuXG5oZWFkZXIgLmEtc2l0ZS1icmFuZGluZyB7XG5cdG1hcmdpbjogMDtcblx0bWF4LXdpZHRoOiBjb2xzcGFuKCA1LCAxNiApO1xufVxuXG5oZWFkZXIuby1oZWFkZXItc3VwcG9ydCAuYS1zaXRlLWJyYW5kaW5nIHtcblx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ubS1zdXBwb3J0LWN0YSAuYS1zdXBwb3J0LWJ1dHRvbixcbi5tLXN1cHBvcnQtY3RhLWJvdHRvbSB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNT0xFQ1VMRVNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLm0tYWQtcmVnaW9uIHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4ubS1zdXBwb3J0LWN0YSB7XG5cblx0Ly8gY3RhIGluIHRoZSBzaXRlIGhlYWRlclxuXHQmLm0tc3VwcG9ydC1jdGEtdG9wIHtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0Zm9udC1zaXplOiAxMDAlO1xuXHRcdG1heC13aWR0aDogbm9uZTtcblxuXHRcdC8vIHRhZ2xpbmVcblx0XHRoMiB7XG5cdFx0XHRAaW5jbHVkZSBtZXRhLXByZXNldCggJHNpemU6IDAsICRib2xkOiB0cnVlLCAkaXRhbGljOiBmYWxzZSwgJGxpbmUtaGVpZ2h0OiAxICk7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0XHR9XG5cdH1cblxuXHQvLyBjdGEgaW4gdGhlIHNpdGUgZm9vdGVyXG5cdCYubS1zdXBwb3J0LWN0YS1ib3R0b20ge1xuXHRcdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblx0fVxufVxuXG4uby1oZWFkZXItc3VwcG9ydCAubS1zdXBwb3J0LWN0YS5tLXN1cHBvcnQtY3RhLXRvcCB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdHdpZHRoOiBhdXRvO1xuXG5cdC8vIHRhZ2xpbmVcblx0aDIge1xuXHRcdG1hcmdpbjogMDtcblx0XHRAaW5jbHVkZSBtZXRhLXByZXNldCggJHNpemU6IDAsICRib2xkOiB0cnVlLCAkaXRhbGljOiBmYWxzZSwgJGxpbmUtaGVpZ2h0OiAxICk7XG5cdH1cbn1cblxuXG5uYXYge1xuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cblxuLm0td2lkZ2V0LXNpdGUtYnJhbmRpbmcge1xuXHRtYXgtd2lkdGg6IGNvbHNwYW4oIDYsIDE2ICk7XG5cblx0LmEtc2l0ZS1icmFuZGluZyB7XG5cdFx0bWF4LXdpZHRoOiBjb2xzcGFuKCA1LCA2ICk7XG5cdH1cbn1cblxuLm0tZW50cnktY29udGVudCB7XG5cdG1hcmdpbi1ib3R0b206ICRzdGFuZGFyZC1ibG9jay1tYXJnaW47XG5cdG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG5cblx0Ji5tLW1lbWJlcnNoaXAtc3VwcG9ydC13cmFwcGVyIHtcblx0XHRmb250LWZhbWlseTogJHdlYmZvbnRfX3NhbnM7XG5cdH1cbn1cblxuLm8tZW50cnkge1xuXG5cdC5tLWVudHJ5LW1ldGEge1xuXHRcdHdpZHRoOiBjb2xzcGFuKCAyLCAxMiApO1xuXG5cdFx0Ji5tLWVudHJ5LW1ldGEtaG9yaXpvbnRhbCB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdH1cbn1cblxuLm0tZW50cnktaGVhZGVyIHtcblxuXHQubS1lbnRyeS1tZXRhIHtcblx0XHR3aWR0aDogY29sc3BhbiggMTIsIDEyICk7XG5cdH1cbn1cblxuLm0tYXJjaGl2ZSB7XG5cblx0Lm0tZW50cnktY29udGVudCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRmbGV4OiAxIDA7XG5cdH1cblxuXHQmLm0tYXJjaGl2ZS1leGNlcnB0IHtcblxuXHRcdC5tLWVudHJ5LWNvbnRlbnQge1xuXHRcdFx0ZmxleDogMSAwO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAkc3RhbmRhcmQtaGVhZGluZy1tYXJnaW47XG5cdFx0fVxuXG5cdH1cblxuXHQmLm0tYXJjaGl2ZS1ob21lcGFnZSB7XG5cblx0XHQubS1lbnRyeS1jb250ZW50IHtcblx0XHRcdG9yZGVyOiAyO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0fVxuXHR9XG5cblx0Ji5tLXpvbmUtaG9tZXBhZ2UtdG9wIHtcblx0XHRcblx0XHQubS1lbnRyeS1jb250ZW50IHtcblx0XHRcdGZsZXg6IDEgMDtcblx0XHRcdG1hcmdpbi1yaWdodDogJHN0YW5kYXJkLWhlYWRpbmctbWFyZ2luO1xuXHRcdH1cblxuXHRcdC5tLXBvc3QtaW1hZ2UtZmlyc3Qge1xuXHRcdFx0Lm0tZW50cnktY29udGVudCB7XG5cdFx0XHRcdG9yZGVyOiAyO1xuXHRcdFx0XHRmbGV4OiAxIDA7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLm0tYXJjaGl2ZS10b3AgLm0tcG9zdC1pbWFnZSxcbi5tLWFyY2hpdmUtZXhjZXJwdCAubS1wb3N0LWltYWdlLFxuLm0tYXJjaGl2ZS1ob21lcGFnZSAubS1wb3N0LWltYWdlIHtcblx0d2lkdGg6IDEwMCU7XG59XG5cbi5tLWFyY2hpdmUtdG9wIC5tLXBvc3QtaW1hZ2UsXG4ubS1hcmNoaXZlLWV4Y2VycHQgLm0tcG9zdC1pbWFnZSB7XG5cdG1hcmdpbi1sZWZ0OiAwO1xuXHRtYXJnaW4tYm90dG9tOiAwO1xuXHRtYXJnaW4tYm90dG9tOiAkc3RhbmRhcmQtaGVhZGluZy1tYXJnaW47XG5cdHdpZHRoOiBhdXRvO1xuXG5cdCYubS1wb3N0LXRodW1ibmFpbC1mdWxsIHtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxufVxuXG4ubS1wb3N0LWltYWdlLWZpcnN0IC5tLXBvc3QtaW1hZ2Uge1xuXHRtYXJnaW4tcmlnaHQ6ICRzdGFuZGFyZC1oZWFkaW5nLW1hcmdpbjtcbn1cblxuLm0taG9tZXBhZ2Utem9uZXMge1xuXG5cdC8vIHdoZXJlIHRoZSB6b25lcyBkaWZmZXIgZnJvbSB0aGUgYXJjaGl2ZXNcblx0Lm0tem9uZSB7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiBjYWxjKCgxMDAlKSAtICN7JHNpemVfX3NpdGUtc2lkZWJhcn0gKTtcblxuXHRcdCYubS16b25lLWhvbWVwYWdlLXRvcCB7IC8vIGJlY2F1c2UgdGhpcyBzZWN0aW9uIGlzIG5vdCB2aXN1YWxseSBzZXBhcmF0ZVxuXHRcdFx0bWF4LXdpZHRoOiBjYWxjKCgxMDAlIC0gI3tjb2xzcGFuKCAxLCAxMiApfSkgLSAjeyRzaXplX19zaXRlLXNpZGViYXJ9ICk7XG5cblx0XHRcdGFydGljbGUge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHRcdFx0cGFkZGluZy1ib3R0b206IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHRcdCYubS16b25lLWhvbWVwYWdlLW1vcmUtdG9wLFxuXHRcdCYubS16b25lLWhvbWVwYWdlLW9waW5pb24ge1xuXG5cdFx0XHRhcnRpY2xlIHtcblx0XHRcdFx0d2lkdGg6IGNvbHNwYW4oIDUuOCwgMTIgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLm0td2lkZ2V0LWdyb3VwIHtcbiAgICBcbiAgICAmLm0td2lkZ2V0LWdyb3VwLWhvbWVwYWdlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG59XG5cblxuXG5cblxuXG5cbi8vIE9SR0FOSVNNU1xuLm8td3JhcHBlci1zaXRlLW5hdmlnYXRpb24sXG4uby13cmFwcGVyLXN1Yi1uYXZpZ2F0aW9uLFxuLm8td3JhcHBlci1zaXRlLW5hdmlnYXRpb24gKiB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLm8td3JhcHBlciB7XG5cdC8vIHNpdGUgaGVhZGVyIHdyYXBwZXJcblx0Ji5vLXdyYXBwZXItc2l0ZS1oZWFkZXIge1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0bWFyZ2luLWJvdHRvbTogJHN0YW5kYXJkLWJsb2NrLXBhZGRpbmc7XG5cdH1cbn1cblxuI2NvbnRlbnQge1xuXHRkaXNwbGF5OiBibG9jaztcblxuXHRhcnRpY2xlIHtcblxuXHRcdC5tLWZvcm0tbmV3c2xldHRlci1zaG9ydGNvZGUge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQjY29tbWVudHMge1xuXHRcdFxuXHRcdC5hLWNvbW1lbnQtbGlua3MsXG5cdFx0I3Jlc3BvbmQge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQubS1lbnRyeS1zaGFyZSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC5tLWZvcm0taW5zdG9yeSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC5tLXJlbGF0ZWQge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cbn1cblxuLm8tZW50cnkge1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cblx0Lm0tZW50cnktY29udGVudCB7XG5cdFx0bWF4LXdpZHRoOiBjb2xzcGFuKCAxMCwgMTIgKTtcblx0fVx0XG59XG5cbi5vLXNpdGUtbWVzc2FnZS1jb250YWluZXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG5cbmJvZHkuc2luZ2xlLFxuYm9keS5wYWdlIHtcblxuXHQuby1zaXRlLXNpZGViYXIge1xuXG5cdFx0Lm0tbWlubnBvc3Qtc3BpbGxzLXdpZGdldCxcblx0XHQubS13aWRnZXQtem9uZS1wb3N0cyxcblx0XHQubS13aWRnZXQtbW9zdC1jb21tZW50ZWQge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cbn1cblxuZm9vdGVyIHtcblxuXHRuYXYge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQuby1mb290ZXIgLm8tZm9vdGVyLWhhdCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cbn1cblxuLy8gZG9uJ3QgcHJpbnQgcG9wdXBzXG4ucHVtLFxuLndwLW1lc3NhZ2UtaW5zZXJ0ZXItbWVzc2FnZS1yZWdpb24tcG9wdXAge1xuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4iLCIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEZVTkNUSU9OU1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBpbnZhbGlkXG4vLyB3cm9uZy10eXBlXG4vLyBtaXNzaW5nXG4vLyBvcHRpb25hbFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29sdW1uIFNldHRlciB1c2VzIHRoZSBcImludmFsaWRcIiwgXCJ3cm9uZy10eXBlXCIsIFwibWlzc2luZ1wiLCBhbmRcbi8vIFwib3B0aW9uYWxcIiBmdW5jdGlvbnMgdG8gYnVpbGQgZXJyb3IgbWVzc2FnZXMuXG5cbkBmdW5jdGlvbiBpbnZhbGlkKCRjYWxsLCAkYXJnMjpudWxsLCAkYXJnMzpudWxsLCAkYXJnNDpudWxsKSB7XG5cblx0QGlmICRhcmcyIGFuZCAkYXJnMyBhbmQgJGFyZzQge1xuXG5cdFx0QHJldHVybiBcIicjeyRjYWxsfSgjeyRhcmcyfSwjeyRhcmczfSwjeyRhcmc0fSknIGlzIGludmFsaWQgYmVjYXVzZSBcIjtcblx0fVxuXG5cdEBpZiAkYXJnMiBhbmQgJGFyZzMgYW5kIG5vdCAkYXJnNCB7XG5cblx0XHRAcmV0dXJuIFwiJyN7JGNhbGx9KCN7JGFyZzJ9LCN7JGFyZzN9KScgaXMgaW52YWxpZCBiZWNhdXNlIFwiO1xuXHR9XG5cblx0QGlmICRhcmcyIGFuZCBub3QgJGFyZzMgYW5kIG5vdCAkYXJnNCB7XG5cblx0XHRAcmV0dXJuIFwiJyN7JGNhbGx9KCN7JGFyZzJ9KScgaXMgaW52YWxpZCBiZWNhdXNlIFwiO1xuXHR9XG5cblx0QGlmIG5vdCAkYXJnMiB7XG5cblx0XHRAcmV0dXJuIFwiJyN7JGNhbGx9KCknIGlzIGludmFsaWQgYmVjYXVzZSBcIjtcblx0fVxufVxuXG5AZnVuY3Rpb24gd3JvbmctdHlwZSgkdHlwZSwgJGFyZzI6bnVsbCwgJGFyZzM6bnVsbCkge1xuXG5cdEBpZiAkYXJnMiBhbmQgJGFyZzMge1xuXG5cdFx0QHJldHVybiBcIicjeyRhcmcyfScgYW5kICcjeyRhcmczfScgYXJlIG5vdCAjeyR0eXBlfXNcIjtcblx0fVxuXG5cdEBpZiBub3QgJGFyZzMge1xuXG5cdFx0QHJldHVybiBcIicjeyRhcmcyfScgaXMgbm90IGEgI3skdHlwZX1cIjtcblx0fVxufVxuXG5AZnVuY3Rpb24gbWlzc2luZygkbnVtYmVyKSB7XG5cblx0QGlmICRudW1iZXIgPCAyIHtcblxuXHRcdEByZXR1cm4gXCJhbiBhcmd1bWVudCBpcyBtaXNzaW5nLiBcIjtcblx0fVxuXG5cdEBpZiAkbnVtYmVyID49IDIge1xuXG5cdFx0QHJldHVybiBcImFyZ3VtZW50cyBhcmUgbWlzc2luZy4gXCI7XG5cdH1cbn1cblxuQGZ1bmN0aW9uIG9wdGlvbmFsKCRudW1iZXIsJGN1cnJlbnQsJGNvcnJlY3QpIHtcblxuXHRAcmV0dXJuIFwidGhlIG9wdGlvbmFsICN7JG51bWJlcn0gYXJndW1lbnQgKGN1cnJlbnRseSAnI3skY3VycmVudH0nKSB3aWxsIG9ubHkgYWNjZXB0IGEgdmFsdWUgb2YgJyN7JGNvcnJlY3R9Jy4gXCI7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGJwLWF0dHJpYnV0ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29sdW1uIFNldHRlciB1c2VzIHRoZSBcImJwLWF0dHJpYnV0ZVwiIGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZVxuLy8gdmFsdWVzIG9mIGJyZWFrcG9pbnQgYXR0cmlidXRlcyAoc3VjaCBhcyBcImNvbHNcIiBhbmQgXCJtaW5cIixcbi8vIGZvdW5kIGluIHRoZSAkYnJlYWtwb2ludHMgbWFwIGluIFwibWFpbi5zY3NzXCIpLlxuLy9cbi8vIEVYQU1QTEU6IFRvIGFjY2VzcyB0aGUgbWluaW11bSBtZWFzdXJlbWVudCBvZiB0aGUgXCJzbVwiXG4vLyBicmVha3BvaW50Li4uXG4vL1xuLy8gYnAtYXR0cmlidXRlKHNtLCBtaW4td2lkdGgpXG4vL1xuLy8gLi4ucmV0dXJucyBzb21ldGhpbmcgbGlrZSB0aGlzOlxuLy9cbi8vIDQwZW1cblxuQGZ1bmN0aW9uIGJwLWF0dHJpYnV0ZSgkYnAtbmFtZSwgJGJwLWF0dHJpYnV0ZSkge1xuXG5cdEByZXR1cm4gbWFwLWdldChtYXAtZ2V0KCRicmVha3BvaW50cywgJGJwLW5hbWUpLCAkYnAtYXR0cmlidXRlKTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gYnAtdmFsaWRhdG9yIChVTkZJTklTSEVEKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29sdW1uIFNldHRlciB1c2VzIHRoZSBcImJwLXZhbGlkYXRvclwiIGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGF0IHRoZXJlXG4vLyBhcmUgbm8gZXJyb3JzIGluIHRoZSAkYnJlYWtwb2ludHMgbWFwIGluIFwibWFpbi5zY3NzXCIuXG5cbkBmdW5jdGlvbiBicC12YWxpZGF0b3IoKSB7XG5cblx0QGlmIHR5cGUtb2YoJG1hcikgIT0gbnVtYmVyIG9yIHVuaXRsZXNzKCRtYXIpID09IGZhbHNlIHtcblxuXHRcdEB3YXJuIFwiSGVyZSBpcyB0aGUgYnAtdmFsaWRhdG9yICRtYXIgd2FybmluZy5cIjtcblx0fVxuXG5cdEBpZiB0eXBlLW9mKCRjb2wpICE9IG51bWJlciBvciB1bml0bGVzcygkY29sKSA9PSBmYWxzZSB7XG5cblx0XHRAd2FybiBcIkhlcmUgaXMgdGhlIGJwLXZhbGlkYXRvciAkY29sIHdhcm5pbmcuXCI7XG5cdH1cblxuXHRAaWYgdHlwZS1vZigkZ3V0KSAhPSBudW1iZXIgb3IgdW5pdGxlc3MoJGd1dCkgPT0gZmFsc2Uge1xuXG5cdFx0QHdhcm4gXCJIZXJlIGlzIHRoZSBicC12YWxpZGF0b3IgJGd1dCB3YXJuaW5nLlwiO1xuXHR9XG5cblx0QGlmIHR5cGUtb2YoJHBhZCkgIT0gbnVtYmVyIG9yIHVuaXRsZXNzKCRwYWQpID09IGZhbHNlIHtcblxuXHRcdEB3YXJuIFwiSGVyZSBpcyB0aGUgYnAtdmFsaWRhdG9yICRwYWQgd2FybmluZy5cIjtcblx0fVxuXG5cdEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRicmVha3BvaW50cykge1xuXG5cdFx0QGlmIHR5cGUtb2YobWFwLWdldChtYXAtZ2V0KCRicmVha3BvaW50cywgKG50aChtYXAta2V5cygkYnJlYWtwb2ludHMpLCAkaSkpKSwgY29scykpICE9IG51bWJlciBvciB1bml0bGVzcyhtYXAtZ2V0KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAobnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksICRpKSkpLCBjb2xzKSkgPT0gZmFsc2Uge1xuXG5cdFx0XHRAd2FybiBcIkhlcmUgaXMgdGhlIGJwLXZhbGlkYXRvciBjb2xzIHdhcm5pbmcuXCI7XG5cdFx0fVxuXHR9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb2x1bW4gU2V0dGVyIHVzZXMgdGhlIFwid2lkdGhcIiBmdW5jdGlvbiB0byBjYWxjdWxhdGUgdGhlIHdpZHRoIG9mIGFcbi8vIHNwYW4gb2YgY29sdW1ucywgZGVyaXZlZCBmcm9tIHRoZSBwcm9wb3J0aW9uYWwgd2lkdGhcbi8vIHZhcmlhYmxlcyB3aG9zZSBjdXN0b21pemFibGUgdmFsdWVzIGFyZSBkZWZpbmVkIGF0IHRoZSB0b3Bcbi8vIG9mIFwibWFpbi5zY3NzXCIuXG4vL1xuLy8gRVhBTVBMRTogRm9yIGEgd2lkdGggc3Bhbm5pbmcgNiBjb2x1bW5zLi4uXG4vL1xuLy8gd2lkdGgoNilcbi8vXG4vLyAuLi5yZXR1cm5zIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4vL1xuLy8gNTM4XG5cbkBmdW5jdGlvbiB3aWR0aCgkd2lkdGgpIHtcblxuXHRAcmV0dXJuICgoJGNvbCAqICR3aWR0aCkgKyAoJGd1dCAqICgkd2lkdGggLSAxKSkpO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBjb2xzcGFuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGUgXCJjb2xzcGFuXCIgZnVuY3Rpb24gYWxsb3dzIHRoZSB1c2VyIHRvIGdlbmVyYXRlXG4vLyBncmlkLWJhc2VkLCBwZXJjZW50YWdlIHdpZHRoIHZhbHVlcywgZGVyaXZlZCBmcm9tIHRoZVxuLy8gcHJvcG9ydGlvbmFsIHdpZHRoIHZhcmlhYmxlcyB3aG9zZSBjdXN0b21pemFibGUgdmFsdWVzIGFyZVxuLy8gZGVmaW5lZCBhdCB0aGUgdG9wIG9mIFwibWFpbi5zY3NzXCIuXG4vL1xuLy8gRVhBTVBMRTogRm9yIGEgd2lkdGggc3Bhbm5pbmcgNiBvZiAxMiBjb2x1bW5zLi4uXG4vL1xuLy8gd2lkdGg6IGNvbHNwYW4oNiwxMik7XG4vL1xuLy8gLi4uY29tcGlsZXMgdG8gc29tZXRoaW5nIGxpa2UgdGhpczpcbi8vXG4vLyB3aWR0aDogNDguODIwMzMlO1xuXG4kY29sc3Bhbi1sZXNzb246IFwiQSAnY29sc3BhbicgZnVuY3Rpb24gY2FsbCBtdXN0IGluY2x1ZGUgdGhlIHVuaXRsZXNzIG51bWVyaWMgY29sdW1uIHdpZHRocyBvZiBib3RoIHRoZSB0YXJnZXQgYW5kIGl0cyBjb250YWluZXIsIGUuZy4gJ2NvbHNwYW4oNCw4KScuIFRoZSB0YXJnZXQgd2lkdGggY2FuIGFsc28gYmUgc3BlY2lmaWVkIGFzICdwJyAoZm9yICRwYWQgd2lkdGgpIG9yICdnJyAoZm9yICRndXQgd2lkdGgpLlwiO1xuXG5AZnVuY3Rpb24gY29sc3BhbigkdGFyZ2V0Om51bGwsJGNvbnRhaW5lcjpudWxsKSB7XG5cblx0QGlmICR0YXJnZXRcblx0XHRhbmQgJGNvbnRhaW5lciB7XG5cblx0XHRAaWYgJHRhcmdldCA9PSBcIm1cIlxuXHRcdFx0YW5kICh0eXBlLW9mKCRjb250YWluZXIpID09IFwibnVtYmVyXCIgYW5kIHVuaXRsZXNzKCRjb250YWluZXIpID09IHRydWUpIHtcblxuXHRcdFx0QHJldHVybiBwZXJjZW50YWdlKCRtYXIgLyAod2lkdGgoJGNvbnRhaW5lcikgKyAoJG1hciAqIDIpKSk7XG5cdFx0fVxuXG5cdFx0QGlmICR0YXJnZXQgPT0gXCJwXCJcblx0XHRcdGFuZCAodHlwZS1vZigkY29udGFpbmVyKSA9PSBcIm51bWJlclwiIGFuZCB1bml0bGVzcygkY29udGFpbmVyKSA9PSB0cnVlKSB7XG5cblx0XHRcdEByZXR1cm4gcGVyY2VudGFnZSgkcGFkIC8gd2lkdGgoJGNvbnRhaW5lcikpO1xuXHRcdH1cblxuXHRcdEBpZiAkdGFyZ2V0ID09IFwiZ1wiXG5cdFx0XHRhbmQgKHR5cGUtb2YoJGNvbnRhaW5lcikgPT0gXCJudW1iZXJcIiBhbmQgdW5pdGxlc3MoJGNvbnRhaW5lcikgPT0gdHJ1ZSkge1xuXG5cdFx0XHRAcmV0dXJuIHBlcmNlbnRhZ2UoJGd1dCAvIHdpZHRoKCRjb250YWluZXIpKTtcblx0XHR9XG5cblx0XHRAaWYgKHR5cGUtb2YoJHRhcmdldCkgIT0gXCJudW1iZXJcIiBvciB1bml0bGVzcygkdGFyZ2V0KSA9PSBmYWxzZSlcblx0XHRcdGFuZCAodHlwZS1vZigkY29udGFpbmVyKSAhPSBcIm51bWJlclwiIG9yIHVuaXRsZXNzKCRjb250YWluZXIpID09IGZhbHNlKVxuXHRcdFx0YW5kICR0YXJnZXQgIT0gXCJtXCJcblx0XHRcdGFuZCAkdGFyZ2V0ICE9IFwicFwiXG5cdFx0XHRhbmQgJHRhcmdldCAhPSBcImdcIiB7XG5cblx0XHRcdEB3YXJuIGludmFsaWQoXCJjb2xzcGFuXCIsJHRhcmdldCwkY29udGFpbmVyKSArIHdyb25nLXR5cGUoXCJ1bml0bGVzcyBudW1iZXJcIiwkdGFyZ2V0LCRjb250YWluZXIpICsgXCIuIFwiICsgJGNvbHNwYW4tbGVzc29uO1xuXHRcdFx0QHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRAaWYgKHR5cGUtb2YoJHRhcmdldCkgIT0gXCJudW1iZXJcIiBvciB1bml0bGVzcygkdGFyZ2V0KSA9PSBmYWxzZSlcblx0XHRcdGFuZCAodHlwZS1vZigkY29udGFpbmVyKSA9PSBcIm51bWJlclwiIGFuZCB1bml0bGVzcygkY29udGFpbmVyKSA9PSB0cnVlKSB7XG5cblx0XHRcdEB3YXJuIGludmFsaWQoXCJjb2xzcGFuXCIsJHRhcmdldCwkY29udGFpbmVyKSArIHdyb25nLXR5cGUoXCJ1bml0bGVzcyBudW1iZXJcIiwkdGFyZ2V0KSArIFwiLiBcIiArICRjb2xzcGFuLWxlc3Nvbjtcblx0XHRcdEByZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0QGlmICgodHlwZS1vZigkdGFyZ2V0KSA9PSBcIm51bWJlclwiIGFuZCB1bml0bGVzcygkdGFyZ2V0KSA9PSB0cnVlKSBhbmQgKHR5cGUtb2YoJGNvbnRhaW5lcikgIT0gXCJudW1iZXJcIiBvciB1bml0bGVzcygkY29udGFpbmVyKSA9PSBmYWxzZSkpXG5cdFx0XHRvciAoJHRhcmdldCA9PSBcIm1cIiBhbmQgKHR5cGUtb2YoJGNvbnRhaW5lcikgIT0gXCJudW1iZXJcIiBvciB1bml0bGVzcygkY29udGFpbmVyKSA9PSBmYWxzZSkpXG5cdFx0XHRvciAoJHRhcmdldCA9PSBcInBcIiBhbmQgKHR5cGUtb2YoJGNvbnRhaW5lcikgIT0gXCJudW1iZXJcIiBvciB1bml0bGVzcygkY29udGFpbmVyKSA9PSBmYWxzZSkpXG5cdFx0XHRvciAoJHRhcmdldCA9PSBcImdcIiBhbmQgKHR5cGUtb2YoJGNvbnRhaW5lcikgIT0gXCJudW1iZXJcIiBvciB1bml0bGVzcygkY29udGFpbmVyKSA9PSBmYWxzZSkpIHtcblxuXHRcdFx0QHdhcm4gaW52YWxpZChcImNvbHNwYW5cIiwkdGFyZ2V0LCRjb250YWluZXIpICsgd3JvbmctdHlwZShcInVuaXRsZXNzIG51bWJlclwiLCRjb250YWluZXIpICsgXCIuIFwiICsgJGNvbHNwYW4tbGVzc29uO1xuXHRcdFx0QHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRAaWYgJHRhcmdldFxuXHRcdGFuZCBub3QgJGNvbnRhaW5lciB7XG5cblx0XHRAaWYgKHR5cGUtb2YoJHRhcmdldCkgPT0gXCJudW1iZXJcIiBhbmQgdW5pdGxlc3MoJHRhcmdldCkgPT0gdHJ1ZSkge1xuXG5cdFx0XHRAd2FybiBpbnZhbGlkKGNvbHNwYW4sJHRhcmdldCkgKyBtaXNzaW5nKDEpICsgJGNvbHNwYW4tbGVzc29uO1xuXHRcdFx0QHJldHVybiBmYWxzZTtcblx0XHR9IEBlbHNlIHtcblxuXHRcdFx0QHdhcm4gaW52YWxpZChjb2xzcGFuLCR0YXJnZXQpICsgd3JvbmctdHlwZShcInVuaXRsZXNzIG51bWJlclwiLCR0YXJnZXQpICsgXCIsIGFuZCBcIiArIG1pc3NpbmcoMSkgKyAkY29sc3Bhbi1sZXNzb247XG5cdFx0XHRAcmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdEBpZiBub3QgJHRhcmdldCB7XG5cblx0XHRAd2FybiBpbnZhbGlkKGNvbHNwYW4pICsgbWlzc2luZygyKSArICRjb2xzcGFuLWxlc3Nvbjtcblx0XHRAcmV0dXJuIGZhbHNlO1xuXHR9IEBlbHNlIHtcblxuXHRcdEByZXR1cm4gcGVyY2VudGFnZSh3aWR0aCgkdGFyZ2V0KSAvIHdpZHRoKCRjb250YWluZXIpKTtcblx0fVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1JWElOU1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBmdWxsLXdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGUgXCJmdWxsLXdpZHRoXCIgbWl4aW4gYWxsb3dzIHRoZSB1c2VyIHRvIGJyZWFrIGFuIGVsZW1lbnRcbi8vIG91dCBvZiB0aGUgZ3JpZCBhbmQgaW50byB0aGUgbWFyZ2lucywgdGFraW5nIHVwIHRoZSBmdWxsXG4vLyB3aWR0aCBvZiB0aGUgdmlld3BvcnQuXG5cbkBtaXhpbiBmdWxsLXdpZHRoIHtcblx0d2lkdGg6IGF1dG87XG5cdG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKTtcblx0bWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gYnJlYWtwb2ludFxuLy8gYnJlYWtwb2ludC1tYXhcbi8vIGJyZWFrcG9pbnQtcmFuZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoZSB0aHJlZSBmbGF2b3JzIG9mIHRoZSBcImJyZWFrcG9pbnRcIiBtaXhpbiBhbGxvdyB0aGUgdXNlclxuLy8gdG8gZ2VuZXJhdGUgd2lkdGgtYmFzZWQgbWVkaWEgcXVlcmllcyB1c2luZyB0aGUgYnJlYWtwb2ludFxuLy8gbmFtZXMgYW5kIHZhbHVlcyBkZWZpbmVkIGluIHRoZSAkYnJlYWtwb2ludHMgbWFwIGluXG4vLyBtYWluLnNjc3MuXG5cbiR2YWxpZC1icC1uYW1lczogXCJDdXJyZW50IHZhbGlkIGJyZWFrcG9pbnQgbmFtZXM6IFwiICsgbWFwLWtleXMoJGJyZWFrcG9pbnRzKSArIFwiLlwiO1xuJGJwLW1pbi1sZXNzb246IFwiQSAnYnJlYWtwb2ludC1taW4nIG1peGluIGNhbGwgbXVzdCBjb250YWluIGEgdmFsaWQgYnJlYWtwb2ludCBuYW1lLCBlLmcuICdicmVha3BvaW50LW1pbihzbWFsbCknLiBcIiArICR2YWxpZC1icC1uYW1lcztcbiRicC1tYXgtbGVzc29uOiBcIkEgJ2JyZWFrcG9pbnQtbWF4JyBtaXhpbiBjYWxsIG11c3QgY29udGFpbiBhIHZhbGlkIGJyZWFrcG9pbnQgbmFtZSwgZS5nLiAnYnJlYWtwb2ludC1tYXgobGFyZ2UpJy4gXCIgKyAkdmFsaWQtYnAtbmFtZXM7XG4kYnAtcmFuZ2UtbGVzc29uOiBcIkEgJ2JyZWFrcG9pbnQtcmFuZ2UnIG1peGluIGNhbGwgbXVzdCBjb250YWluIHZhbGlkIG1pbmltdW0gYW5kIG1heGltdW0gYnJlYWtwb2ludCBuYW1lcywgZS5nLiAnYnJlYWtwb2ludC1yYW5nZShzbWFsbCxsYXJnZSknLiBcIiArICR2YWxpZC1icC1uYW1lcztcblxuLy8gQGluY2x1ZGUgYnJlYWtwb2ludC1taW4obGcpIHsgLi4uIH1cbi8vXG4vLyAuLi5jb21waWxlcyB0byBzb21ldGhpbmcgbGlrZSB0aGlzOlxuLy9cbi8vIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUwZW0pIHsgLi4uIH1cblxuQG1peGluIGJyZWFrcG9pbnQtbWluKCRicDpudWxsKSB7XG5cdCRhbGwtaXMtd2VsbDogdHJ1ZTtcblxuXHRAaWYgJGJwIHtcblxuXHRcdEBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnApIHtcblx0XHRcdCRhbGwtaXMtd2VsbDogZmFsc2U7XG5cblx0XHRcdEB3YXJuIGludmFsaWQoXCJicmVha3BvaW50LW1pblwiLCRicCkgKyB3cm9uZy10eXBlKFwidmFsaWQgYnJlYWtwb2ludCBuYW1lXCIsJGJwKSArIFwiLiBcIiArICRicC1taW4tbGVzc29uO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0JGFsbC1pcy13ZWxsOiBmYWxzZTtcblxuXHRcdEB3YXJuIGludmFsaWQoXCJicmVha3BvaW50LW1pblwiKSArIG1pc3NpbmcoMSkgKyAkYnAtbWluLWxlc3Nvbjtcblx0fVxuXG5cdEBpZiAkYWxsLWlzLXdlbGwgPT0gdHJ1ZSB7XG5cblx0XHRAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiBicC1hdHRyaWJ1dGUoJGJwLCBtaW4td2lkdGgpKSB7XG5cdFx0XHRAY29udGVudDtcblx0XHR9XG5cdH1cbn1cblxuLy8gQGluY2x1ZGUgYnJlYWtwb2ludC1tYXgobGcpIHsgLi4uIH1cbi8vXG4vLyAuLi5jb21waWxlcyB0byBzb21ldGhpbmcgbGlrZSB0aGlzOlxuLy9cbi8vIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDUwZW0pIHsgLi4uIH1cblxuQG1peGluIGJyZWFrcG9pbnQtbWF4KCRicDpudWxsKSB7XG5cdCRhbGwtaXMtd2VsbDogdHJ1ZTtcblxuXHRAaWYgJGJwIHtcblxuXHRcdEBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnApIHtcblx0XHRcdCRhbGwtaXMtd2VsbDogZmFsc2U7XG5cblx0XHRcdEB3YXJuIGludmFsaWQoXCJicmVha3BvaW50LW1heFwiLCRicCkgKyB3cm9uZy10eXBlKFwidmFsaWQgYnJlYWtwb2ludCBuYW1lXCIsJGJwKSArIFwiLiBcIiArICRicC1taW4tbGVzc29uO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0JGFsbC1pcy13ZWxsOiBmYWxzZTtcblxuXHRcdEB3YXJuIGludmFsaWQoXCJicmVha3BvaW50LW1heFwiKSArIG1pc3NpbmcoMSkgKyAkYnAtbWluLWxlc3Nvbjtcblx0fVxuXG5cdEBpZiAkYWxsLWlzLXdlbGwgPT0gdHJ1ZSB7XG5cblx0XHRAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiBicC1hdHRyaWJ1dGUoJGJwLCBtaW4td2lkdGgpKSB7XG5cdFx0XHRAY29udGVudDtcblx0XHR9XG5cdH1cbn1cblxuLy8gQGluY2x1ZGUgYnJlYWtwb2ludC1yYW5nZShtZCwgbGcpIHsgLi4uIH1cbi8vXG4vLyAuLi5jb21waWxlcyB0byBzb21ldGhpbmcgbGlrZSB0aGlzOlxuLy9cbi8vIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIGFuZCAobWF4LXdpZHRoOiA1MGVtKSB7IC4uLiB9XG5cbkBtaXhpbiBicmVha3BvaW50LXJhbmdlKCRicC1taW46bnVsbCwgJGJwLW1heDpudWxsKSB7XG5cdCRhbGwtaXMtd2VsbDogdHJ1ZTtcblxuXHRAaWYgJGJwLW1pblxuXHRcdGFuZCAkYnAtbWF4IHtcblxuXHRcdEBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnAtbWluKVxuXHRcdFx0YW5kIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicC1tYXgpIHtcblx0XHRcdCRhbGwtaXMtd2VsbDogZmFsc2U7XG5cblx0XHRcdEB3YXJuIGludmFsaWQoXCJicmVha3BvaW50LXJhbmdlXCIsJGJwLW1pbiwkYnAtbWF4KSArIHdyb25nLXR5cGUoXCJ2YWxpZCBicmVha3BvaW50IG5hbWVcIiwkYnAtbWluLCRicC1tYXgpICsgXCIuIFwiICsgJGJwLXJhbmdlLWxlc3Nvbjtcblx0XHR9XG5cblx0XHRAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwLW1pbilcblx0XHRcdGFuZCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicC1tYXgpIHtcblx0XHRcdCRhbGwtaXMtd2VsbDogZmFsc2U7XG5cblx0XHRcdEB3YXJuIGludmFsaWQoXCJicmVha3BvaW50LXJhbmdlXCIsJGJwLW1pbiwkYnAtbWF4KSArIHdyb25nLXR5cGUoXCJ2YWxpZCBicmVha3BvaW50IG5hbWVcIiwkYnAtbWluKSArIFwiLiBcIiArICRicC1yYW5nZS1sZXNzb247XG5cdFx0fVxuXG5cdFx0QGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwLW1pbilcblx0XHRcdGFuZCBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnAtbWF4KSB7XG5cdFx0XHQkYWxsLWlzLXdlbGw6IGZhbHNlO1xuXG5cdFx0XHRAd2FybiBpbnZhbGlkKFwiYnJlYWtwb2ludC1yYW5nZVwiLCRicC1taW4sJGJwLW1heCkgKyB3cm9uZy10eXBlKFwidmFsaWQgYnJlYWtwb2ludCBuYW1lXCIsJGJwLW1heCkgKyBcIi4gXCIgKyAkYnAtcmFuZ2UtbGVzc29uO1xuXHRcdH1cblx0fVxuXG5cdEBpZiAkYnAtbWluXG5cdFx0YW5kIG5vdCAkYnAtbWF4IHtcblx0XHQkYWxsLWlzLXdlbGw6IGZhbHNlO1xuXG5cdFx0QGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwLW1pbikge1xuXG5cdFx0XHRAd2FybiBpbnZhbGlkKFwiYnJlYWtwb2ludC1yYW5nZVwiLCRicC1taW4pICsgbWlzc2luZygxKSArICRicC1yYW5nZS1sZXNzb247XG5cdFx0fSBAZWxzZSB7XG5cblx0XHRcdEB3YXJuIGludmFsaWQoXCJicmVha3BvaW50LXJhbmdlXCIsJGJwLW1pbikgKyB3cm9uZy10eXBlKFwidmFsaWQgYnJlYWtwb2ludCBuYW1lXCIsJGJwLW1pbikgKyBcIiwgYW5kIFwiICsgbWlzc2luZygxKSArICRicC1yYW5nZS1sZXNzb247XG5cdFx0fVxuXHR9XG5cblx0QGlmIG5vdCAkYnAtbWluIHtcblx0XHQkYWxsLWlzLXdlbGw6IGZhbHNlO1xuXG5cdFx0QHdhcm4gaW52YWxpZChcImJyZWFrcG9pbnQtcmFuZ2VcIikgKyBtaXNzaW5nKDIpICsgJGJwLXJhbmdlLWxlc3Nvbjtcblx0fVxuXG5cdEBpZiAkYWxsLWlzLXdlbGwgPT0gdHJ1ZSB7XG5cblx0XHRAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiBicC1hdHRyaWJ1dGUoJGJwLW1pbiwgbWluLXdpZHRoKSkgYW5kIChtYXgtd2lkdGg6IGJwLWF0dHJpYnV0ZSgkYnAtbWF4LCBtaW4td2lkdGgpKSB7XG5cdFx0XHRAY29udGVudDtcblx0XHR9XG5cdH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZ3JpZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhlIFwiZ3JpZFwiIG1peGluIGFsbG93cyB0aGUgdXNlciB0byBpZGVudGlmeSB0aGUgY2xhc3Mgb2Zcbi8vIHRoZSBwcmltYXJ5IGNvbnRhaW5pbmcgZWxlbWVudCBpbiB3aGljaCB0aGVpciBncmlkLWFsaWduZWRcbi8vIGNvbnRlbnQgbGl2ZXMuIFRoZSBtaXhpbiB1c2VzIGFsbCBvZiB0aGUgaW5mbyBmcm9tIHRoZVxuLy8gcHJvcG9ydGlvbmFsIHdpZHRoIGFuZCBicmVha3BvaW50IHZhcmlhYmxlcyBkZWZpbmVkIGF0IHRoZVxuLy8gdG9wIG9mIFwibWFpbi5zY3NzXCIgdG8gc3BlY2lmeSBhcHByb3ByaWF0ZSBtYXJnaW4gd2lkdGhzIGZvclxuLy8gdGhlIGdyaWQgY29udGFpbmVyIGF0IGVhY2ggYnJlYWtwb2ludC4gT3B0aW9uYWxseSBpbmNsdWRpbmdcbi8vIFwib3ZlcmxheVwiIGFzIGEgc2Vjb25kIGFyZ3VtZW50IHdpbGwgYWRkIGEgdHJhbnNsdWNlbnQgZ3JpZFxuLy8gb3ZlcmxheSBvbiB0b3Agb2YgdGhlIGdyaWQgY29udGFpbmVyIHdoaWNoIGNhbiBiZSB1c2VkIGluXG4vLyBwcm9kdWN0aW9uIHRvIGVuc3VyZSB0aGF0IHlvdXIgZGVzaWduIGlzIGFsaWduaW5nIHRvIHRoZVxuLy8gZ3JpZCBhcyBpbnRlbmRlZC5cbi8vXG4vLyBFWEFNUExFOiBJZiBcIm1haW4uc2Nzc1wiIGRlZmluZXMgdHdvIGJyZWFrcG9pbnRzIGFuZCB0aGVcbi8vIHByaW1hcnkgZ3JpZCBjb250YWluZXIgaGFzIGEgY2xhc3Mgb2YgXCJjb250ZW50XCIuLi5cbi8vXG4vLyBAaW5jbHVkZSBncmlkKGNvbnRlbnQpO1xuLy9cbi8vIC4uLmNvbXBpbGVzIHRvIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4vL1xuLy8gQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMCkge1xuLy8gICAuY29udGVudCB7XG4vLyAgICAgbWFyZ2luOiAwIDMuMzg2MzglO1xuLy8gICB9XG4vLyB9XG4vLyBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzMGVtKSB7XG4vLyAgIC5jb250ZW50IHtcbi8vICAgICBtYXJnaW46IDAgNC4zNjE5NCU7XG4vLyAgIH1cbi8vIH1cblxuJGdyaWQtbGVzc29uOiBcIkEgJ2dyaWQnIG1peGluIGNhbGwgbXVzdCBpbmNsdWRlIGEgdmFsaWQgY2xhc3MgbmFtZSwgZS5nLiAnZ3JpZChjb250ZW50KTsnLiBJdCBtYXkgb3B0aW9uYWxseSBpbmNsdWRlIGEgc2Vjb25kIGFyZ3VtZW50IG9mICdvdmVybGF5JyAoZS5nLiAnZ3JpZChjb250ZW50LG92ZXJsYXkpOycpIHRvIGNyZWF0ZSBhIHRyYW5zbHVjZW50IGdyaWQgb3ZlcmxheSBvbiB0b3Agb2YgdGhlIGdyaWQgY29udGFpbmVyLlwiO1xuXG5AbWl4aW4gZ3JpZCgkY2xhc3M6bnVsbCwgJG92ZXJsYXk6bnVsbCkge1xuXHQkYWxsLWlzLXdlbGw6IHRydWU7XG5cblx0QGlmIG5vdCAkY2xhc3Mge1xuXHRcdCRhbGwtaXMtd2VsbDogZmFsc2U7XG5cblx0XHRAd2FybiBpbnZhbGlkKFwiZ3JpZFwiKSArIG1pc3NpbmcoMSkgKyAkZ3JpZC1sZXNzb247XG5cdH1cblxuXHRAaWYgJG92ZXJsYXkgIT0gXCJvdmVybGF5XCJcblx0XHRhbmQgJG92ZXJsYXkgIT0gbnVsbCB7XG5cdFx0JGFsbC1pcy13ZWxsOiBmYWxzZTtcblxuXHRcdEB3YXJuIGludmFsaWQoXCJncmlkXCIsJGNsYXNzLCRvdmVybGF5KSArIG9wdGlvbmFsKFwic2Vjb25kXCIsJG92ZXJsYXksXCJvdmVybGF5XCIpICsgJGdyaWQtbGVzc29uO1xuXHR9XG5cblx0QGlmICRhbGwtaXMtd2VsbCA9PSB0cnVlIHtcblxuXHRcdC4jeyRjbGFzc30ge1xuXG5cdFx0XHRAZWFjaCAkYnAsICR2YWx1ZSBpbiAkYnJlYWtwb2ludHMge1xuXG5cdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQtbWluKCRicCkge1xuXG5cdFx0XHRcdFx0QGlmIG1hcC1oYXMta2V5KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnApLCBtYXJnaW4pIHtcblx0XHRcdFx0XHRcdG1hcmdpbjogMCBjb2xzcGFuKGJwLWF0dHJpYnV0ZSgkYnAsIG1hcmdpbiksIHdpZHRoKGJwLWF0dHJpYnV0ZSgkYnAsIGNvbHMpKSArIChicC1hdHRyaWJ1dGUoJGJwLCBtYXJnaW4pICogMikpO1xuXHRcdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdFx0bWFyZ2luOiAwIGNvbHNwYW4obSwgYnAtYXR0cmlidXRlKCRicCwgY29scykpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiB0aGVyZSBpcyBhIG1heC13aWR0aCxcblx0XHRcdC8vIGNyZWF0ZSBhIGJyZWFrcG9pbnQgd2l0aCBhIG1pbi13aWR0aCBlcXVhbCB0bzpcblx0XHRcdC8vICgoKG1hciAvIHdpZHRoKSAqIG1heC13aWR0aCkgKiAyKSArIG1heC13aWR0aFxuXG5cdFx0XHRAaWYgJG1heC13aWR0aCB7XG5cdFx0XHRcdG1heC13aWR0aDogJG1heC13aWR0aDtcblx0XHRcdFx0JGJwLWZpbmFsOiBudGgobWFwLWtleXMoJGJyZWFrcG9pbnRzKSwgLTEpOyAvLyBOYW1lIG9mIHRoZSB3aWRlc3QgYnJlYWtwb2ludFxuXG5cdFx0XHRcdEBpZiBtYXAtaGFzLWtleShtYXAtZ2V0KCRicmVha3BvaW50cywgJGJwLWZpbmFsKSwgbWFyZ2luKSB7XG5cblx0XHRcdFx0XHRAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAoKCgoYnAtYXR0cmlidXRlKCRicC1maW5hbCwgbWFyZ2luKSAvIHdpZHRoKGJwLWF0dHJpYnV0ZSgkYnAtZmluYWwsIGNvbHMpKSkgKiAkbWF4LXdpZHRoKSAqIDIpICsgJG1heC13aWR0aCkpIHtcblx0XHRcdFx0XHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBAZWxzZSB7XG5cblx0XHRcdFx0XHRAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAoKCgoJG1hciAvIHdpZHRoKGJwLWF0dHJpYnV0ZSgkYnAtZmluYWwsIGNvbHMpKSkgKiAkbWF4LXdpZHRoKSAqIDIpICsgJG1heC13aWR0aCkpIHtcblx0XHRcdFx0XHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRAaWYgJG92ZXJsYXkgPT0gb3ZlcmxheSB7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0JGdjOiByZ2JhKCRncmlkLWNvbG9yLCAwLjEpO1xuXHRcdFx0XHQkZ3A6IHJnYmEoJGdyaWQtY29sb3IsIDAuMik7XG5cdFx0XHRcdCRnZzogcmdiYSgkZ3JpZC1jb2xvciwgMCk7XG5cblx0XHRcdFx0Jjo6YmVmb3JlIHtcblx0XHRcdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdFx0bGVmdDogMDtcblx0XHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRcdFx0ei1pbmRleDogMTAwO1xuXHRcdFx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG5cdFx0XHRcdFx0QGVhY2ggJGJwLCAkdmFsdWUgaW4gJGJyZWFrcG9pbnRzIHtcblxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludC1taW4oJGJwKSB7XG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRncCwgJGdwIGNvbHNwYW4ocCwgYnAtYXR0cmlidXRlKCRicCwgY29scykpLCAkZ2MgY29sc3BhbihwLCBicC1hdHRyaWJ1dGUoJGJwLCBjb2xzKSksICRnYyBjb2xzcGFuKDEsIGJwLWF0dHJpYnV0ZSgkYnAsIGNvbHMpKSAtIGNvbHNwYW4ocCwgYnAtYXR0cmlidXRlKCRicCwgY29scykpLCAkZ3AgY29sc3BhbigxLCBicC1hdHRyaWJ1dGUoJGJwLCBjb2xzKSkgLSBjb2xzcGFuKHAsIGJwLWF0dHJpYnV0ZSgkYnAsIGNvbHMpKSwgJGdwIGNvbHNwYW4oMSwgYnAtYXR0cmlidXRlKCRicCwgY29scykpLCAkZ2cgY29sc3BhbigxLCBicC1hdHRyaWJ1dGUoJGJwLCBjb2xzKSksICRnZyBjb2xzcGFuKDEsIGJwLWF0dHJpYnV0ZSgkYnAsIGNvbHMpKSArIGNvbHNwYW4oZywgYnAtYXR0cmlidXRlKCRicCwgY29scykpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsbnVsbF19 */
