body{font-family:'Open Sans';font-size:.9rem}.condensed_bold{font-family:'Open Sans Condensed';font-weight:bold}.merriweather{font-family:'Merriweather'}.open_sans{font-family:'Open Sans'}.row{max-width:1170px}.skip-link{display:none}.embed-container{position:relative;padding-bottom:85%;height:0;overflow:hidden;max-width:100%;margin:40px 20px;}.embed-container iframe,.embed-container object,.embed-container embed{position:absolute;top:0;left:0;width:100%;height:100%}@media only screen and (min-width:640px){button.menu-toggle{display:none}}nav.ubermenu{background:none;border:none;-webkit-box-shadow:none;box-shadow:none;}nav.ubermenu ul.ubermenu-nav{margin-right:110px;}nav.ubermenu ul.ubermenu-nav li.ubermenu-item{list-style:none;margin-left:20px;outline:none;}nav.ubermenu ul.ubermenu-nav li.ubermenu-item a.ubermenu-target{border:none;-webkit-box-shadow:none;box-shadow:none;font-family:'Abel',sans-serif !important;font-size:15px;color:#fff;font-weight:normal;text-transform:uppercase;letter-spacing:1px;padding:0;}nav.ubermenu ul.ubermenu-nav li.ubermenu-item a.ubermenu-target:hover{background:transparent;color:#222}nav.ubermenu ul.ubermenu-nav li.ubermenu-item a.ubermenu-target:after{display:none}nav.ubermenu ul.ubermenu-nav > li.ubermenu-item.ubermenu-active > a.ubermenu-target,nav.ubermenu ul.ubermenu-nav > li.ubermenu-item.ubermenu-current-menu-ancestor > a.ubermenu-target,nav.ubermenu ul.ubermenu-nav > li.ubermenu-item:hover > a.ubermenu-target{background:transparent;}nav.ubermenu ul.ubermenu-nav > li.ubermenu-item.ubermenu-active > a.ubermenu-target span,nav.ubermenu ul.ubermenu-nav > li.ubermenu-item.ubermenu-current-menu-ancestor > a.ubermenu-target span,nav.ubermenu ul.ubermenu-nav > li.ubermenu-item:hover > a.ubermenu-target span{color:#222}nav.ubermenu ul.ubermenu-nav ul.ubermenu-submenu{background-color:rgba(113,113,116,0.9);border:none;position:fixed;margin-top:0 !important;}nav.ubermenu ul.ubermenu-nav ul.ubermenu-submenu li.ubermenu-item{height:55px;line-height:55px;overflow:hidden;display:inline-block;float:none;}nav.ubermenu ul.ubermenu-nav ul.ubermenu-submenu li.ubermenu-item a.ubermenu-target{height:55px;line-height:55px}nav.ubermenu ul.ubermenu-nav ul.ubermenu-submenu li.ubermenu-item.ubermenu-current-menu-item a{color:#222}nav.ubermenu.ubermenu-skin-black-white-2 .ubermenu-item-level-0.ubermenu-current-menu-item > .ubermenu-target{background-color:transparent;}nav.ubermenu.ubermenu-skin-black-white-2 .ubermenu-item-level-0.ubermenu-current-menu-item > .ubermenu-target span.ubermenu-target-title{color:#222}nav.ubermenu .ubermenu-retractor,nav.ubermenu .ubermenu-skin-black-white-2 .ubermenu-submenu{color:#fff}@media screen and (min-width:960px){nav.ubermenu ul.ubermenu-nav li.ubermenu-item{height:110px;line-height:110px;}nav.ubermenu ul.ubermenu-nav li.ubermenu-item a.ubermenu-target{height:110px;line-height:110px}nav.ubermenu ul.ubermenu-nav ul.ubermenu-submenu{text-align:center;}nav.ubermenu ul.ubermenu-nav ul.ubermenu-submenu li.ubermenu-item{margin-left:40px;}nav.ubermenu ul.ubermenu-nav ul.ubermenu-submenu li.ubermenu-item:first-child{margin-left:0}.ubermenu-responsive-default.ubermenu,nav{float:right}.ubermenu-responsive-default.ubermenu{background:transparent !important}}@media screen and (max-width:960px){.ubermenu-skin-black-white-2.ubermenu-responsive-toggle{background:transparent !important;color:#fff !important;border:none;float:right;margin-top:60px;-webkit-box-shadow:none !important;box-shadow:none !important}.ubermenu-skin-black-white-2{background:rgba(105,154,198,0.9) !important}.ubermenu-skin-black-white-2 .ubermenu-item-level-0 > .ubermenu-target{color:#fff !important;margin-left:0}.ubermenu-skin-black-white-2 .ubermenu-item-level-0:hover > .ubermenu-target,.ubermenu-skin-black-white-2 .ubermenu-item-level-0.ubermenu-active > .ubermenu-target,.ubermenu-skin-black-white-2 .ubermenu-item-level-0.ubermenu-current-menu-item > .ubermenu-target,.ubermenu-skin-black-white-2 .ubermenu-item-level-0.ubermenu-current-menu-parent > .ubermenu-target,.ubermenu-skin-black-white-2 .ubermenu-item-level-0.ubermenu-current-menu-ancestor > .ubermenu-target{background-color:transparent !important}li.ubermenu-item{margin-left:0;height:60px;line-height:60px;}li.ubermenu-item a.ubermenu-target{height:60px;line-height:60px}ul.ubermenu-submenu li.ubermenu-item{margin-left:0}}footer.site-footer{background:#aca196;color:#fff;margin-top:100px;padding-top:20px;height:auto;min-height:60px;}@media only screen and (max-width:640px){footer.site-footer{text-align:center}}footer.site-footer ul.columns{margin:0;float:left;width:auto;}footer.site-footer ul.columns li{display:inline-block;padding:0 15px;border-right:1px solid #fff;font-size:14px;}footer.site-footer ul.columns li:last-child{border-right:none}@media only screen and (max-width:640px){footer.site-footer ul.columns li{display:inline}}footer.site-footer ul.columns li.accesssearch{font-weight:700;}footer.site-footer ul.columns li.accesssearch span{color:#222}footer.site-footer .menu-social-container{float:right;height:auto;line-height:auto;}@media only screen and (max-width:640px){footer.site-footer .menu-social-container{float:none;clear:both;padding-top:10px}}footer.site-footer .menu-social-container ul{margin-left:0}footer.site-footer .menu-social-container li{display:inline-block;}footer.site-footer .menu-social-container li a{display:block;text-indent:-9999px;width:28px;height:28px;margin-left:18px}@media only screen and (max-width:640px){footer.site-footer .menu-social-container li:first-child a{margin-left:0}}footer.site-footer .menu-social-container li.facebook a{background:url("../img/social/Facebook.svg")}footer.site-footer .menu-social-container li.twitter a{background:url("../img/social/Twitter.svg")}footer.site-footer .menu-social-container li.linkedin a{background:url("../img/social/Linkedin.svg")}footer.site-footer .menu-social-container li.pinterest a{background:url("../img/social/Pinterest.svg")}footer.site-footer .menu-social-container li.instagram a{background:url("../img/social/Instagram.svg")}footer.site-footer .menu-social-container li.youtube a{background:url("../img/social/YouTube.svg")}header.site-header{background:rgba(105,154,198,0.9);color:#fff;height:110px;border-bottom:1px solid #fff;position:fixed;top:0;left:0;right:0;z-index:2;}header.site-header div.site-branding{float:left;}header.site-header div.site-branding a{display:block;width:160px;height:70px;background:url("../img/logo.svg") center no-repeat;-webkit-background-size:contain;-moz-background-size:contain;background-size:contain;margin:20px 0 0 110px;text-indent:-9999px;}@media only screen and (max-width:640px){header.site-header div.site-branding a{margin-left:30px}}@media only screen and (min-width:1025px){header.site-header nav.main-navigation{float:right}}.admin-bar header.site-header{top:32px}@media only screen and (max-width:640px){.page-id-55 div.hero{background-position:left center}}div.hero{height:450px;-webkit-background-size:cover;-moz-background-size:cover;background-size:cover;background-position:center}body.home div.hero{height:100vh;position:relative;z-index:1;}body.home div.hero h2{position:absolute;top:175px;left:0;right:0;text-align:center;color:#fff;font-size:40px;line-height:44px;font-family:'Abel',sans-serif;}@media only screen and (max-width:640px){body.home div.hero h2{top:25%}}body.home div.hero .buttons{position:absolute;bottom:90px;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-o-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);max-width:550px;width:90%;}@media only screen and (max-width:640px){body.home div.hero .buttons{top:45%}}body.home div.hero .buttons .button-outer{border:1px solid #fff;padding:10px;width:calc(50% - 35px);float:left;}@media only screen and (max-width:640px){body.home div.hero .buttons .button-outer{width:100%;margin-bottom:20px}}body.home div.hero .buttons .button-outer:last-child{float:right}body.home div.hero .buttons .button-outer .button{display:block;background:#699ac6;color:#fff;height:80px;position:relative;}body.home div.hero .buttons .button-outer .button .button-inner{position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}body.home div.hero .buttons .button-outer .button span{display:block;text-align:center;font-family:'Abel',sans-serif;text-transform:uppercase;line-height:22px;}body.home div.hero .buttons .button-outer .button span.text{font-size:20px}body.home div.hero .buttons .button-outer .button span.more{font-size:14px;color:#222}body.home div.hero button.arrow{position:absolute;bottom:50px;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-o-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:31px;height:17px;border:none;background:url("../img/arrow.svg") no-repeat center;outline:none;-webkit-animation:arrow 2s linear infinite;-moz-animation:arrow 2s linear infinite;-o-animation:arrow 2s linear infinite;-ms-animation:arrow 2s linear infinite;animation:arrow 2s linear infinite}@-moz-keyframes arrow{0%{bottom:40px}50%{bottom:30px}100%{bottom:40px}}@-webkit-keyframes arrow{0%{bottom:40px}50%{bottom:30px}100%{bottom:40px}}@-o-keyframes arrow{0%{bottom:40px}50%{bottom:30px}100%{bottom:40px}}@keyframes arrow{0%{bottom:40px}50%{bottom:30px}100%{bottom:40px}}.bios h2{color:#699ac6;font-family:'Abel',sans-serif;font-size:40px;text-align:center;margin:45px 0 0}.bios h3{font-size:30px;color:#cd6b08;text-align:center;font-family:'Abel',sans-serif;margin:35px 0 50px 0}.bios .bio{padding-bottom:40px;overflow:hidden;}.bios .bio h4{font-size:21px;font-family:'Abel',sans-serif;margin:0 0 15px 25px}.bios .bio .content{margin-left:25px;font-family:'Open Sans',sans-serif;font-size:1rem;color:#717174;}.bios .bio .content p{font-family:'Open Sans',sans-serif;color:#717174}.bios .bio a.back{padding:15px 20px;background:#e4e0db;font-family:'Abel',sans-serif;color:#717174;position:relative;display:inline-block;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-o-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);margin-top:25px}.bios .bio .informations{background:#e4e0db;padding:25px 100px 95px 100px;height:100%;}@media only screen and (max-width:1025px){.bios .bio .informations{padding:25px;margin-bottom:30px}}.bios .bio .informations p{font-size:13px;margin:0}.bios .bio .informations a.linkedin{display:block;width:26px;height:26px;background:url("../img/icon_linkedin.svg");margin-top:20px}#wpcf7-f58-p55-o1 form label{display:none}#wpcf7-f58-p55-o1 form input,#wpcf7-f58-p55-o1 form textarea{background:#f5f4f3;padding:15px 10px;border:none;width:100%;font-size:1.1rem}#wpcf7-f58-p55-o1 form input[type="submit"]{background-color:#717174;width:auto;font-size:.9rem;color:#fff;padding:10px 15px;margin-top:15px;border-radius:3px}#wpcf7-f108-p92-o1 form input,#wpcf7-f108-p92-o1 form textarea,#wpcf7-f108-p92-o1 form select{border-radius:4px;-webkit-box-shadow:none;box-shadow:none;border:1px solid #d2d2d2;padding:5px;width:100%;font-size:.875rem;background-color:#fafafa}#wpcf7-f108-p92-o1 form label{font-size:.8125rem}#wpcf7-f108-p92-o1 form .name{overflow:hidden;margin-bottom:15px;}#wpcf7-f108-p92-o1 form .name span{font-size:.75rem}#wpcf7-f108-p92-o1 form .name label{display:block}#wpcf7-f108-p92-o1 form .name p{display:none}#wpcf7-f108-p92-o1 form .name div:first-of-type{width:35%;float:left}#wpcf7-f108-p92-o1 form .name div:last-of-type{width:60%;float:right}#wpcf7-f108-p92-o1 form input[type="submit"]{background-color:#717174;width:auto;font-size:.9rem;color:#fff;padding:10px 15px;margin-top:15px;border-radius:3px}.our_team [class*="column"]+[class*="column"]:last-child{float:left}.our_team .bio{margin-bottom:40px}.our_team .team-grid-item{margin-bottom:1.875rem}.our_team h2{color:#699ac6;font-family:'Abel',sans-serif;font-size:40px;text-align:center;margin:45px 0 35px;text-transform:uppercase}.our_team h3{font-size:30px;color:#cd6b08;text-align:center;font-family:'Abel',sans-serif;margin:0 0 50px 0}.our_team .informations{background:#aca196;padding:30px 0 55px;text-align:center;-webkit-transition:all 0.4s;-moz-transition:all 0.4s;-o-transition:all 0.4s;-ms-transition:all 0.4s;transition:all 0.4s;}.our_team .informations h3{font-size:20px;font-family:'Open Sans',sans-serif;font-weight:700;color:#fff;-webkit-transition:all 0.4s;-moz-transition:all 0.4s;-o-transition:all 0.4s;-ms-transition:all 0.4s;transition:all 0.4s;margin-bottom:0}.our_team .informations h4{font-size:16px;font-family:'Open Sans',sans-serif;color:#fff;-webkit-transition:all 0.4s;-moz-transition:all 0.4s;-o-transition:all 0.4s;-ms-transition:all 0.4s;transition:all 0.4s}.our_team a:hover .informations{background:#699ac6;}.our_team a:hover .informations h3,.our_team a:hover .informations h4{color:#222}.page-template-default h1.entry-title{padding-top:40px;margin:0 0 50px 0;color:#699ac6;font-size:40px;line-height:40px;text-transform:uppercase;font-family:'Abel',sans-serif;text-align:center;}@media only screen and (max-width:640px){.page-template-default h1.entry-title{margin:0}}.page-template-default section.sidebar{padding-top:40px;}.page-template-default section.sidebar div.sidebar-text{border-top:2px solid #b7aea4;padding-top:20px;margin-right:20px;font-size:26px;text-align:center;font-family:'Open Sans',sans-serif;font-style:italic;color:#cd6b08;}@media only screen and (max-width:640px){.page-template-default section.sidebar div.sidebar-text{padding-bottom:40px}}.page-template-default section.content p{font-family:'Open Sans',sans-serif;font-size:1rem;color:#717174}.page-template-default section.content a{color:#222;text-decoration:underline}.page-template-default section.content h2,.page-template-default section.content h3,.page-template-default section.content h4,.page-template-default section.content h5{font-family:'Abel',sans-serif;color:#222;text-transform:capitalize}.page-template-default section.content table{font-family:'Open Sans',sans-serif;color:#717174}.page-template-default section.content ul li{font-family:'Open Sans',sans-serif;color:#717174}@media only screen and (max-width:640px){.page-template-default section.content table.executive-search td{display:block;width:100% !important}}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImltcG9ydHMvX2ZvbnRzLnN0eWwiLCJpbXBvcnRzL19taXNjLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvZmxleC5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL292ZXJmbG93LnN0eWwiLCJpbXBvcnRzL2NvbXBvbmVudHMvX3ViZXJtZW51LnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvdmVuZG9yLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvYm9yZGVyLnN0eWwiLCJpbXBvcnRzL3NlY3Rpb25zL19mb290ZXIuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9ydXB0dXJlL3J1cHR1cmUvaW5kZXguc3R5bCIsImltcG9ydHMvc2VjdGlvbnMvX2hlYWRlci5zdHlsIiwiaW1wb3J0cy9wYWdlcy9fYmlvcy5zdHlsIiwiaW1wb3J0cy9wYWdlcy9fY29udGFjdC5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL2JvcmRlci1yYWRpdXMuc3R5bCIsImltcG9ydHMvcGFnZXMvX291cnRlYW0uc3R5bCIsImltcG9ydHMvY29udGVudC9fcGFnZS5zdHlsIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEtBQ0MsWUFBYSxZQUNiLFVBQVcsTUFFWixnQkFDQyxZQUFhLHNCQUNiLFlBQWEsS0FFZCxjQUNDLFlBQWEsZUFFZCxXQUNDLFlBQWEsWUNaZCxLQUNDLFVBQVcsT0FFWixXQ21CSSxRQUFTLEtEaEJiLGlCQUNDLFNBQVUsU0FDVixlQUFnQixJQUNoQixPQUFRLEVFVUwsU0FBVSxPRlJiLFVBQVcsS0FDWCxPQUFRLFdBQ1Isd0JBQU8sd0JBQ1EsdUJBRWQsU0FBVSxTQUNWLElBQUssRUFDTCxLQUFNLEVBQ04sTUFBTyxLQUNQLE9BQVEsS0FFcUMseUNBQzlDLG1CQ0RHLFFBQVMsTUV0QmIsYUNrZkksV0FBVyxLQ3plWCxPQUFRLEtEa0NNLG1CQUFHLEtBUk4sV0FBRyxNRC9CakIs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VyxLQUNYLFlBQWEsS0FDYixlQUFnQixVQUNoQixZQUFhLGtCQUNiLFdBQVksUU5zSUgseUNBQUEsc0NNcElSLE9BQVEsR0FDVix1Q0FDQyxZQUFhLE1BQ2Isd0RBQ0MsV0FBWSxrQkFDWixZQUFhLEtBQ2IsYUFBYyxLQUNkLFVBQVcsS0FDWCxXQUFZLE9BQ1osWUFBYSx1QkFDYixXQUFZLE9BQ1osTUFBTyxTTnlIQyx5Q0FBQSx3RE12SFAsZUFBZ0IsTUFFbEIseUNBQ0MsWUFBYSx1QkFDYixVQUFXLEtBQ1gsTUFBTyxRQUNSLHlDQUNDLE1BQU8sS0FDUCxnQkFBaUIsVUFDbEIsMENBQUksMENBQUksMENBQUksMENBQ1gsWUFBYSxrQkFDYixNQUFPLEtBQ1AsZUFBZ0IsV0FDakIsNkNBQ0MsWUFBYSx1QkFDYixNQUFPLFFBQ1IsNkNBQ0MsWUFBYSx1QkFDYixNQUFPLFFOcUdDLHlDTWxHUCxpRVp2QkEsUUFBUyxNWXlCUixNQUFPIiwiZmlsZSI6ImFwcC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJib2R5XHJcblx0Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnXHJcblx0Zm9udC1zaXplOiAuOXJlbVxyXG5cdFxyXG4uY29uZGVuc2VkX2JvbGRcclxuXHRmb250LWZhbWlseTogJ09wZW4gU2FucyBDb25kZW5zZWQnXHJcblx0Zm9udC13ZWlnaHQ6IGJvbGRcclxuXHRcclxuLm1lcnJpd2VhdGhlclxyXG5cdGZvbnQtZmFtaWx5OiAnTWVycml3ZWF0aGVyJ1xyXG5cdFxyXG4ub3Blbl9zYW5zXHJcblx0Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnIiwiLnJvd1xuXHRtYXgtd2lkdGg6IDExNzBweFxuXG4uc2tpcC1saW5rXG5cdGRpc3BsYXk6IG5vbmVcblxuLmVtYmVkLWNvbnRhaW5lclxuXHRwb3NpdGlvbjogcmVsYXRpdmVcblx0cGFkZGluZy1ib3R0b206IDg1JVxuXHRoZWlnaHQ6IDBcblx0b3ZlcmZsb3c6IGhpZGRlblxuXHRtYXgtd2lkdGg6IDEwMCVcblx0bWFyZ2luOiA0MHB4IDIwcHhcblx0aWZyYW1lLFxuXHRvYmplY3QsXG5cdGVtYmVkXG5cdFx0cG9zaXRpb246IGFic29sdXRlXG5cdFx0dG9wOiAwXG5cdFx0bGVmdDogMFxuXHRcdHdpZHRoOiAxMDAlXG5cdFx0aGVpZ2h0OiAxMDAlXG5cdFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWstc21hbGwpXG5cdGJ1dHRvbi5tZW51LXRvZ2dsZVxuXHRcdGRpc3BsYXk6IG5vbmUiLCIvKlxuICogVmVuZG9yIFwiZGlzcGxheTogZmxleFwiIHN1cHBvcnQgd2l0aCBmYWxsYmFjayB0byBvYnNvbGV0ZSB2ZXJzaW9ucy5cbiAqL1xuXG5mbGV4LXZlcnNpb24gPz0gYm94IGZsZXhcblxuLy9cbi8vIDEuIERpc3BsYXkgdmFsdWVzXG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jZmxleC1jb250YWluZXJzXG4vL1xuZGlzcGxheSh0eXBlLCBhcmdzLi4uKVxuICBpZiBmbGV4ID09IHR5cGUgfHwgaW5saW5lLWZsZXggPT0gdHlwZVxuICAgIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICAgIGlmIGZsZXggPT0gdHlwZVxuICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveCBhcmdzXG4gICAgICAgIGRpc3BsYXk6IHZlbmRvci12YWx1ZShib3ggYXJncywgb25seTogbW96IHdlYmtpdClcbiAgICAgIGVsc2VcbiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94IGFyZ3NcbiAgICAgICAgZGlzcGxheTogdmVuZG9yLXZhbHVlKGlubGluZS1ib3ggYXJncywgb25seTogbW96IHdlYmtpdClcbiAgICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgICAgZGlzcGxheTogdmVuZG9yLXZhbHVlKGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKSAvLyBvdmVyd3JpdGVzIG9sZCB3ZWJraXRcbiAgZWxzZVxuICAgIGRpc3BsYXk6IGFyZ3VtZW50c1xuXG4vKlxuICogTmV3IHN5bnRheCBmb3IgYnJvd3NlcnMgbGlrZSBHb29nbGUgQ2hyb21lLlxuICogUGx1cyBhIHRyYW5zbGF0aW9uIHRvIHRoZSBvbGQgc3ludGF4LCBpZiBwb3NzaWJsZS5cbiAqL1xuXG5cbi8vXG4vLyA1LiBPcmRlcmluZyBhbmQgT3JpZW50YXRpb25cbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNvcmRlcmluZy1hbmQtb3JpZW50YXRpb25cbi8vXG4tZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oZGlyZWN0aW9uKVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgaWYgcm93LXJldmVyc2UgPT0gZGlyZWN0aW9uIHx8IGNvbHVtbi1yZXZlcnNlID09IGRpcmVjdGlvblxuICAgICAgdmVuZG9yKCdib3gtZGlyZWN0aW9uJywgcmV2ZXJzZSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAgIGlmIHJvdyA9PSBkaXJlY3Rpb24gfHwgcm93LXJldmVyc2UgPT0gZGlyZWN0aW9uXG4gICAgICB2ZW5kb3IoJ2JveC1vcmllbnQnLCBob3Jpem9udGFsLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuICAgIGVsc2UgaWYgY29sdW1uID09IGRpcmVjdGlvbiB8fCBjb2x1bW4tcmV2ZXJzZSA9PSBkaXJlY3Rpb25cbiAgICAgIHZlbmRvcignYm94LW9yaWVudCcsIHZlcnRpY2FsLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4tZmxleC1vYnNvbGV0ZS13cmFwKHZhbHVlKVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgLy8gV0FSTjogd3JhcC1yZXZlcnNlIGRvZXMgbm90IGhhdmUgYSBib3ggZXF1aXZhbGVudC4gVGhpcyB3aWxsIHJlbmRlciBpbiBkaWZmZXJlbnQgbWFubmVyc1xuICAgIC8vICAgIG9uIGJveCB2cy4gZmxleCB2YWx1ZXMuXG4gICAgaWYgJ3dyYXAnID09IHZhbHVlIHx8IHdyYXAtcmV2ZXJzZSA9PSB2YWx1ZVxuICAgICAgdmVuZG9yKCdib3gtbGluZXMnLCBtdWx0aXBsZSwgaWdub3JlOiBtcyBvZmZpY2lhbClcbiAgICBlbHNlIGlmIG5vd3JhcCA9PSB2YWx1ZVxuICAgICAgdmVuZG9yKCdib3gtbGluZXMnLCBzaW5nbGUsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbmZsZXgtZGlyZWN0aW9uKGRpcmVjdGlvbilcbiAgLy8gb2Jzb2xldGVcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGRpcmVjdGlvbilcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtZGlyZWN0aW9uJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cbmZsZXgtd3JhcCh2YWx1ZSlcbiAgLy8gb2Jzb2xldGVcbiAgLWZsZXgtb2Jzb2xldGUtd3JhcCh2YWx1ZSlcblxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC13cmFwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cbmZsZXgtZmxvdygpXG4gIC8vIG9ic29sZXRlXG4gIC1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihhcmd1bWVudHNbMF0pXG4gIC1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihhcmd1bWVudHNbMV0pXG4gIC1mbGV4LW9ic29sZXRlLXdyYXAoYXJndW1lbnRzWzBdKVxuICAtZmxleC1vYnNvbGV0ZS13cmFwKGFyZ3VtZW50c1sxXSlcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtZmxvdycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxuXG5cbm9yZGVyKClcbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYm94LW9yZGluYWwtZ3JvdXAnLCBhcmd1bWVudHMsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LW9yZGVyJywgYXJndW1lbnRzLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ29yZGVyJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cblxuLy9cbi8vIDcuIEZsZXhpYmlsaXR5XG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jZmxleGliaWxpdHlcbi8vXG5mbGV4LWdyb3coZ3Jvd3RoKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtZmxleCcsIGdyb3d0aClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtZ3JvdycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5mbGV4LWJhc2lzKClcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtYmFzaXMnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuZmxleC1zaHJpbmsoKVxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1zaHJpbmsnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuZmxleChncm93dGgpXG5cbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHNocmluayA9IDFcblxuICAgIGlmIG5vbmUgPT0gZ3Jvd3RoIHx8IGluaXRpYWwgPT0gZ3Jvd3RoXG4gICAgICAvLyBXZWxsIGtub3duIHZhbHVlc1xuICAgICAgc2hyaW5rID0gMCBpZiBub25lID09IGdyb3d0aFxuICAgICAgZ3Jvd3RoID0gMFxuICAgIGVsc2UgaWYgaXMtd2lkdGgoZ3Jvd3RoKSA9PSB0cnVlXG4gICAgICAvLyBCYXNpcyBpcyBkZWZpbmVkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXJcbiAgICAgIGdyb3d0aCA9IGFyZ3VtZW50c1sxXSB8fCAwXG4gICAgICBzaHJpbmsgPSBhcmd1bWVudHNbMl0gaWYgMyA8PSBsZW5ndGgoYXJndW1lbnRzKVxuICAgIGVsc2UgaWYgYXJndW1lbnRzWzFdICYmIGlzLXdpZHRoKGFyZ3VtZW50c1sxXSkgPT0gZmFsc2VcbiAgICAgIC8vIEdyb3d0aCBpcyBmaXJzdCBhbmQgc2hyaW5rIGlzIHNlY29uZFxuICAgICAgc2hyaW5rID0gYXJndW1lbnRzWzFdXG5cbiAgICAvLyBTaW5jZSB3ZSBjYW4ndCBtYWtlIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGdyb3dpbmcgYW5kIHNocmlua2luZyBpbiB0aGUgYm94IG1vZGVsLCB0YWtlXG4gICAgLy8gdGhlIG9uZSB0aGF0IHByb3ZpZGVzIHRoZSBtb3N0IGZsZXhpYmlsaXR5LlxuICAgIHZlbmRvcignYm94LWZsZXgnLCBtYXgoZ3Jvd3RoLCBzaHJpbmspLCBpZ25vcmU6IG1zKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxuXG5cbi8vIGNvbnZlcnRzIHRoZSBqdXN0aWZpY2F0aW9uIGFsaWdubWVudFxuLWNvbnZlcnQtanVzdGlmeShhbGlnbilcbiAgaWYgZmxleC1zdGFydCA9PSBhbGlnblxuICAgIHJldHVybiBzdGFydFxuICBlbHNlIGlmIGZsZXgtZW5kID09IGFsaWduXG4gICAgcmV0dXJuIGVuZFxuICBlbHNlIGlmIHNwYWNlLWFyb3VuZCA9PSBhbGlnblxuICAgIHJldHVybiBkaXN0cmlidXRlXG4gIGVsc2UgaWYgc3BhY2UtYmV0d2VlbiA9PSBhbGlnblxuICAgIHJldHVybiBqdXN0aWZ5XG4gIGVsc2VcbiAgICByZXR1cm4gYWxpZ25cblxuLy9cbi8vIDguIEFsaWdubWVudFxuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI2FsaWdubWVudFxuLy9cbmp1c3RpZnktY29udGVudChhbGlnbilcbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYm94LXBhY2snLCAtY29udmVydC1qdXN0aWZ5KGFsaWduKSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ2p1c3RpZnktY29udGVudCcsIGFsaWduLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmFsaWduLWNvbnRlbnQoYWxpZ24pXG4gIC8vIFdBUk46IE9ic29sZXRlIHNwZWMgZG9lcyBub3QgYWxsb3cgZm9yIGFkanVzdG1lbnQgaGVyZVxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1saW5lLXBhY2snLCAtY29udmVydC1qdXN0aWZ5KGFsaWduKSwgb25seTogbXMpXG4gICAgdmVuZG9yKCdhbGlnbi1jb250ZW50JywgYWxpZ24sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuLy8gY29udmVydHMgYWxpZ25tZW50IGZyb20gJ2ZsZXgnIHRvIG5vcm1hbCB2YWx1ZVxuLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKVxuICBpZiBmbGV4LXN0YXJ0ID09IGFsaWduXG4gICAgcmV0dXJuIHN0YXJ0XG4gIGVsc2UgaWYgZmxleC1lbmQgPT0gYWxpZ25cbiAgICByZXR1cm4gZW5kXG4gIGVsc2VcbiAgICByZXR1cm4gYWxpZ25cblxuYWxpZ24taXRlbXMoYWxpZ24pXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2JveC1hbGlnbicsIC1jb252ZXJ0LWFsaWdubWVudChhbGlnbiksIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWFsaWduJywgLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKSwgb25seTogbXMpXG4gICAgdmVuZG9yKCdhbGlnbi1pdGVtcycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5hbGlnbi1zZWxmKGFsaWduKVxuICAvLyBXQVJOOiBPYnNvbGV0ZSBzcGVjIGRvZXMgbm90IGFsbG93IGZvciBvdmVycmlkaW5nIGFsaWdubWVudCBvbiBpbmRpdmlkdWFsIGl0ZW1zLlxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYWxpZ24tc2VsZicsIGFsaWduLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG4gICAgdmVuZG9yKCdmbGV4LWl0ZW0tYWxpZ24nLCAtY29udmVydC1hbGlnbm1lbnQoYWxpZ24pLCBvbmx5OiBtcylcbiIsIi8qXG4gKiBPdmVyZmxvdyB1dGlsaXR5LiBNYXBzIHRvIHJlZ3VsYXIgb3ZlcmZsb3csIGFuZCBhZGRzIGFuIGVsbGlwc2lzIHZhbHVlLlxuICpcbiAqIFN5bm9wc2lzOlxuICpcbiAqICAgb3ZlcmZsb3c6IDx0eXBlPlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICBvdmVyZmxvdzogYXV0b1xuICogICAgIG92ZXJmbG93OiBoaWRkZW5cbiAqICAgICBvdmVyZmxvdzogZWxsaXBzaXNcbiAqXG4gKi9cblxub3ZlcmZsb3coKVxuICBpZiBhcmd1bWVudHNbMF0gPT0gZWxsaXBzaXNcbiAgICBlbGxpcHNpcygpXG4gIGVsc2VcbiAgICBvdmVyZmxvdzogYXJndW1lbnRzXG4iLCJuYXYudWJlcm1lbnVcblx0YmFja2dyb3VuZDogbm9uZVxuXHRib3JkZXI6IG5vbmVcblx0Ym94LXNoYWRvdzogbm9uZVxuXHR1bC51YmVybWVudS1uYXZcblx0XHRtYXJnaW4tcmlnaHQ6IDExMHB4XG5cdFx0bGkudWJlcm1lbnUtaXRlbVxuXHRcdFx0bGlzdC1zdHlsZTogbm9uZVxuXHRcdFx0bWFyZ2luLWxlZnQ6IDIwcHhcblx0XHRcdG91dGxpbmU6IG5vbmVcblx0XHRcdGEudWJlcm1lbnUtdGFyZ2V0XG5cdFx0XHRcdGJvcmRlcjogbm9uZVxuXHRcdFx0XHRib3gtc2hhZG93OiBub25lXG5cdFx0XHRcdGZvbnQtZmFtaWx5OiAkYWJlbCAhaW1wb3J0YW50XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTVweFxuXHRcdFx0XHRjb2xvcjogd2hpdGVcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbFxuXHRcdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlXG5cdFx0XHRcdGxldHRlci1zcGFjaW5nOiAxcHhcblx0XHRcdFx0cGFkZGluZzogMFxuXHRcdFx0XHQmOmhvdmVyXG5cdFx0XHRcdFx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnRcblx0XHRcdFx0XHRjb2xvcjogYmxhY2tcblx0XHRcdFx0JjphZnRlclxuXHRcdFx0XHRcdGRpc3BsYXk6IG5vbmVcblx0XHQ+IGxpLnViZXJtZW51LWl0ZW1cblx0XHRcdCYudWJlcm1lbnUtYWN0aXZlLFxuXHRcdFx0Ji51YmVybWVudS1jdXJyZW50LW1lbnUtYW5jZXN0b3IsXG5cdFx0XHQmOmhvdmVyXG5cdFx0XHRcdD4gYS51YmVybWVudS10YXJnZXRcblx0XHRcdFx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudFxuXHRcdFx0XHRcdHNwYW5cblx0XHRcdFx0XHRcdGNvbG9yOiBibGFja1xuXHRcdHVsLnViZXJtZW51LXN1Ym1lbnVcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTEzLDExMywxMTYsLjkpXG5cdFx0XHRib3JkZXI6IG5vbmVcblx0XHRcdHBvc2l0aW9uOiBmaXhlZFxuXHRcdFx0bWFyZ2luLXRvcDogMCAhaW1wb3J0YW50XG5cdFx0XHRsaS51YmVybWVudS1pdGVtXG5cdFx0XHRcdGhlaWdodDogNTVweFxuXHRcdFx0XHRsaW5lLWhlaWdodDogNTVweFxuXHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuXG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9ja1xuXHRcdFx0XHRmbG9hdDogbm9uZVxuXHRcdFx0XHRhLnViZXJtZW51LXRhcmdldFxuXHRcdFx0XHRcdGhlaWdodDogNTVweFxuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiA1NXB4XG5cdFx0XHRcdCYudWJlcm1lbnUtY3VycmVudC1tZW51LWl0ZW0gYVxuXHRcdFx0XHRcdGNvbG9yOiBibGFja1xuXHQmLnViZXJtZW51LXNraW4tYmxhY2std2hpdGUtMiAudWJlcm1lbnUtaXRlbS1sZXZlbC0wLnViZXJtZW51LWN1cnJlbnQtbWVudS1pdGVtID4gLnViZXJtZW51LXRhcmdldFxuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50XG5cdFx0c3Bhbi51YmVybWVudS10YXJnZXQtdGl0bGVcblx0XHRcdGNvbG9yOiBibGFja1xuXHQudWJlcm1lbnUtcmV0cmFjdG9yLFxuXHQudWJlcm1lbnUtc2tpbi1ibGFjay13aGl0ZS0yIC51YmVybWVudS1zdWJtZW51XG5cdFx0Y29sb3I6IHdoaXRlXG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KVxuXHRuYXYudWJlcm1lbnVcblx0XHR1bC51YmVybWVudS1uYXZcblx0XHRcdGxpLnViZXJtZW51LWl0ZW1cblx0XHRcdFx0aGVpZ2h0OiAxMTBweFxuXHRcdFx0XHRsaW5lLWhlaWdodDogMTEwcHhcblx0XHRcdFx0YS51YmVybWVudS10YXJnZXRcblx0XHRcdFx0XHRoZWlnaHQ6IDExMHB4XG5cdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDExMHB4XG5cdFx0XHR1bC51YmVybWVudS1zdWJtZW51XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlclxuXHRcdFx0XHRsaS51YmVybWVudS1pdGVtXG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDQwcHhcblx0XHRcdFx0XHQmOmZpcnN0LWNoaWxkXG5cdFx0XHRcdFx0XHRtYXJnaW4tbGVmdDogMFxuXHQudWJlcm1lbnUtcmVzcG9uc2l2ZS1kZWZhdWx0LnViZXJtZW51LCBuYXZcblx0XHRmbG9hdDogcmlnaHRcblx0LnViZXJtZW51LXJlc3BvbnNpdmUtZGVmYXVsdC51YmVybWVudVxuXHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTYwcHgpXG5cdC51YmVybWVudS1za2luLWJsYWNrLXdoaXRlLTIudWJlcm1lbnUtcmVzcG9uc2l2ZS10b2dnbGVcblx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XG5cdFx0Y29sb3I6IHdoaXRlICFpbXBvcnRhbnRcblx0XHRib3JkZXI6IG5vbmVcblx0XHRmbG9hdDogcmlnaHRcblx0XHRtYXJnaW4tdG9wOiA2MHB4XG5cdFx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50XG5cdC51YmVybWVudS1za2luLWJsYWNrLXdoaXRlLTJcblx0XHRiYWNrZ3JvdW5kOiByZ2JhKDEwNSwxNTQsMTk4LDAuOSkgIWltcG9ydGFudFxuXHQudWJlcm1lbnUtc2tpbi1ibGFjay13aGl0ZS0yIC51YmVybWVudS1pdGVtLWxldmVsLTAgPiAudWJlcm1lbnUtdGFyZ2V0XG5cdFx0Y29sb3I6IHdoaXRlICFpbXBvcnRhbnRcblx0XHRtYXJnaW4tbGVmdDogMFxuXHQudWJlcm1lbnUtc2tpbi1ibGFjay13aGl0ZS0yXG5cdFx0LnViZXJtZW51LWl0ZW0tbGV2ZWwtMDpob3ZlciA+IC51YmVybWVudS10YXJnZXQsXG5cdFx0LnViZXJtZW51LWl0ZW0tbGV2ZWwtMC51YmVybWVudS1hY3RpdmUgPiAudWJlcm1lbnUtdGFyZ2V0LFxuXHRcdC51YmVybWVudS1pdGVtLWxldmVsLTAudWJlcm1lbnUtY3VycmVudC1tZW51LWl0ZW0gPiAudWJlcm1lbnUtdGFyZ2V0LFxuXHRcdC51YmVybWVudS1pdGVtLWxldmVsLTAudWJlcm1lbnUtY3VycmVudC1tZW51LXBhcmVudCA+IC51YmVybWVudS10YXJnZXQsXG5cdFx0LnViZXJtZW51LWl0ZW0tbGV2ZWwtMC51YmVybWVudS1jdXJyZW50LW1lbnUtYW5jZXN0b3IgPiAudWJlcm1lbnUtdGFyZ2V0XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50XG5cdGxpLnViZXJtZW51LWl0ZW1cblx0XHRtYXJnaW4tbGVmdDogMFxuXHRcdGhlaWdodDogNjBweFxuXHRcdGxpbmUtaGVpZ2h0OiA2MHB4XG5cdFx0YS51YmVybWVudS10YXJnZXRcblx0XHRcdGhlaWdodDogNjBweFxuXHRcdFx0bGluZS1oZWlnaHQ6IDYwcHhcblx0dWwudWJlcm1lbnUtc3VibWVudVxuXHRcdGxpLnViZXJtZW51LWl0ZW1cblx0XHRcdG1hcmdpbi1sZWZ0OiAwIiwidXNlKCcuLi9ub2Rlcy92ZW5kb3ItaGVscGVycy5qcycpXG5AaW1wb3J0ICdjb25maWcnXG5cbi8qXG4gKiBBbGlhcyBcIm5vd3JhcFwiIGFzIFwibm8td3JhcFwiLlxuICovXG5cbm5vLXdyYXAgPSB1bnF1b3RlKCdub3dyYXAnKVxuXG4vKlxuICogSGVscGVyIHRvIGZpbmQgb3V0IGlmIGEgZ2l2ZW4gdmFsdWUgaXMgYSB3aWR0aFxuICovXG5cbmlzLXdpZHRoKHZhbClcbiAgaWYgYXV0byA9PSB2YWxcbiAgICByZXR1cm4gdHJ1ZVxuICBlbHNlIGlmIHZhbCAmJiAndW5pdCcgPT0gdHlwZSh2YWwpXG4gICAgLy8gU3R5bHVzIGRvZXMgbm90IHNob3J0IGNpcmN1aXQgc28gd2UgbmVlZCB0byBwZXJmb3JtIHRoaXMgYXMgYSBkaXN0aW5jdFxuICAgIC8vIG9wZXJhdGlvbiB0byBwcmV2ZW50IGVycm9yc1xuICAgIHJldHVybiAnJyAhPSB1bml0KHZhbClcbiAgcmV0dXJuIGZhbHNlXG5cbi8qXG4gKiBWZW5kb3Igc3VwcG9ydCBmb3IgdGhlIGdpdmVuIHByb3AgLyBhcmd1bWVudHMsIG9wdGlvbmFsbHkgc3BlY2lmeWluZyB0aGVcbiAqIG9ubHkgcHJlZml4ZXMgdG8gdXRpbGl6ZSwgb3IgdGhvc2Ugd2hpY2ggc2hvdWxkIGJlIGlnbm9yZWQuXG4gKi9cblxudmVuZG9yKHByb3AsIGFyZ3MsIG9ubHkgPSBudWxsLCBpZ25vcmUgPSBudWxsLCB2ZW5kb3ItcHJvcGVydHkgPSB0cnVlKVxuICBuZWVkX25vcm1hbGl6ZSA9ICF2ZW5kb3ItcHJvcGVydHkgb3IgcHJvcCBpbiAoJ3RyYW5zaXRpb24nICd0cmFuc2l0aW9uLXByb3BlcnR5JyAnYm9yZGVyLWltYWdlJyAnYm9yZGVyLWltYWdlLXNsaWNlJylcbiAgZm9yIHByZWZpeCBpbiB2ZW5kb3ItcHJlZml4ZXNcbiAgICB1bmxlc3MgKG9ubHkgYW5kICEocHJlZml4IGluIG9ubHkpKSBvciAoaWdub3JlIGFuZCBwcmVmaXggaW4gaWdub3JlKVxuICAgICAgaWYgb2ZmaWNpYWwgPT0gcHJlZml4XG4gICAgICAgIGlmIG5lZWRfbm9ybWFsaXplXG4gICAgICAgICAge3Byb3B9OiBub3JtYWxpemUocHJvcCwoJyVzJyAlIGFyZ3MpKVxuICAgICAgICBlbHNlXG4gICAgICAgICAge3Byb3B9OiBhcmdzXG4gICAgICBlbHNlXG4gICAgICAgIG5ld3Byb3AgPSBwcm9wXG4gICAgICAgIG5ld3Byb3AgPSAnLScgKyBwcmVmaXggKyAnLScgKyBwcm9wIGlmIHZlbmRvci1wcm9wZXJ0eVxuXG4gICAgICAgIGlmIG5lZWRfbm9ybWFsaXplXG4gICAgICAgICAge25ld3Byb3B9OiBub3JtYWxpemUocHJvcCwoJyVzJyAlIGFyZ3MpLHByZWZpeClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHtuZXdwcm9wfTogYXJnc1xuLypcbiAqIFZlbmRvcml6ZSB0aGUgZ2l2ZW4gdmFsdWUuXG4gKi9cblxudmVuZG9yLXZhbHVlKGFyZywgb25seSA9IG51bGwsIGlnbm9yZSA9IG51bGwpXG4gIHByb3AgPSBjdXJyZW50LXByb3BlcnR5WzBdXG4gIGZvciBwcmVmaXggaW4gdmVuZG9yLXByZWZpeGVzXG4gICAgdW5sZXNzIChvbmx5IGFuZCAhKHByZWZpeCBpbiBvbmx5KSkgb3IgKGlnbm9yZSBhbmQgcHJlZml4IGluIGlnbm9yZSkgb3Igb2ZmaWNpYWwgPT0gcHJlZml4XG4gICAgICBhZGQtcHJvcGVydHkocHJvcCwgJy0lcy0lcycgJSAocHJlZml4IGFyZykpXG4gIGFyZ1xuXG4vKlxuICogVmVuZG9yIFwiYm94LXNoYWRvd1wiIHN1cHBvcnQuXG4gKi9cblxuYm94LXNoYWRvdygpXG4gIHZlbmRvcignYm94LXNoYWRvdycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidXNlci1zZWxlY3RcIiBzdXBwb3J0LlxuICovXG5cbnVzZXItc2VsZWN0KClcbiAgdmVuZG9yKCd1c2VyLXNlbGVjdCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1jb3VudFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLWNvdW50KClcbiAgdmVuZG9yKCdjb2x1bW4tY291bnQnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tZ2FwXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tZ2FwKClcbiAgdmVuZG9yKCdjb2x1bW4tZ2FwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGVcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1ydWxlLWNvbG9yXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tcnVsZS1jb2xvcigpXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtY29sb3InLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZS13aWR0aFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUtd2lkdGgoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlLXdpZHRoJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGUtc3R5bGVcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlLXN0eWxlKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS1zdHlsZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi13aWR0aFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXdpZHRoKClcbiAgdmVuZG9yKCdjb2x1bW4td2lkdGgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tc3BhblwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXNwYW4oKVxuICB2ZW5kb3IoJ2NvbHVtbi1zcGFuJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tZmlsbFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLWZpbGwoKVxuICB2ZW5kb3IoJ2NvbHVtbi1maWxsJywgYXJndW1lbnRzLCBvbmx5OiBtb3opXG5cbi8qXG4gKiBMZWdhY3kgc3ludGF4IHN1cHBvcnQgZm9yIGJhY2tncm91bmQtY2xpcCBhbmQgYmFja2dyb3VuZC1vcmlnaW5cbiAqL1xuXG5sZWdhY3ktYmctdmFsdWVzKHByb3BlcnR5LCBhcmdzKVxuICBsZWdhY3lfYXJncyA9ICgpXG4gIGltcG9ydGFuY2UgPSB1bnF1b3RlKCcnKVxuICBmb3Igc3ViYXJncyBpbiBhcmdzXG4gICAgZm9yIGFyZyBpbiBzdWJhcmdzXG4gICAgICBpZiBhcmcgaW4gKGJvcmRlci1ib3ggcGFkZGluZy1ib3ggY29udGVudC1ib3gpXG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ2JvcmRlcicpICBpZiBhcmcgPT0gYm9yZGVyLWJveFxuICAgICAgICBhcmcgPSB1bnF1b3RlKCdwYWRkaW5nJykgaWYgYXJnID09IHBhZGRpbmctYm94XG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ2NvbnRlbnQnKSBpZiBhcmcgPT0gY29udGVudC1ib3hcbiAgICAgIGlmIGFyZyAhPSAnIWltcG9ydGFudCdcbiAgICAgICAgcHVzaChsZWdhY3lfYXJncyxhcmcpXG4gICAgICBlbHNlXG4gICAgICAgIGltcG9ydGFuY2UgPSAhaW1wb3J0YW50XG4gIHZlbmRvcihwcm9wZXJ0eSwgdW5xdW90ZShqb2luKCcsICcsbGVnYWN5X2FyZ3MpKSBpbXBvcnRhbmNlLCBvbmx5OiBtb3ogd2Via2l0KVxuXG4vKlxuICogVmVuZG9yIFwiYmFja2dyb3VuZC1jbGlwXCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZ3JvdW5kLWNsaXAoKVxuICBpZiBhcmd1bWVudHNbMF0gPT0gdGV4dFxuICAgIHZlbmRvcignYmFja2dyb3VuZC1jbGlwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQpXG4gIGVsc2VcbiAgICBsZWdhY3ktYmctdmFsdWVzKCdiYWNrZ3JvdW5kLWNsaXAnLCBhcmd1bWVudHMpXG4gICAgYmFja2dyb3VuZC1jbGlwOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJhY2tncm91bmQtb3JpZ2luXCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZ3JvdW5kLW9yaWdpbigpXG4gIGxlZ2FjeS1iZy12YWx1ZXMoJ2JhY2tncm91bmQtb3JpZ2luJywgYXJndW1lbnRzKVxuICBiYWNrZ3JvdW5kLW9yaWdpbjogYXJndW1lbnRzXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZ3JvdW5kLXNpemVcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtc2l6ZSgpXG4gIHZlbmRvcignYmFja2dyb3VuZC1zaXplJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNmb3JtXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2Zvcm0oKVxuICB2ZW5kb3IoJ3RyYW5zZm9ybScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zZm9ybS1vcmlnaW5cIiBzdXBwb3J0LlxuICovXG50cmFuc2Zvcm0tb3JpZ2luKClcbiAgICB2ZW5kb3IoJ3RyYW5zZm9ybS1vcmlnaW4nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2Zvcm0tc3R5bGVcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zZm9ybS1zdHlsZSgpXG4gIHZlbmRvcigndHJhbnNmb3JtLXN0eWxlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYm9yZGVyLWltYWdlXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3JkZXItaW1hZ2UoKVxuICB2ZW5kb3IoJ2JvcmRlci1pbWFnZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvblwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbigpXG4gIHZlbmRvcigndHJhbnNpdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tcHJvcGVydHlcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tcHJvcGVydHkoKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tcHJvcGVydHknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uLWR1cmF0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2l0aW9uLWR1cmF0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uLWR1cmF0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tZGVsYXlcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tZGVsYXkoKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tZGVsYXknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZmFjZS12aXNpYmlsaXR5XCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZmFjZS12aXNpYmlsaXR5KClcbiAgdmVuZG9yKCdiYWNrZmFjZS12aXNpYmlsaXR5JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwicGVyc3BlY3RpdmVcIiBzdXBwb3J0LlxuICovXG5cbnBlcnNwZWN0aXZlKClcbiAgaWYgbWl4aW5cbiAgICB2ZW5kb3IoJ3BlcnNwZWN0aXZlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuICBlbHNlXG4gICAgJ3BlcnNwZWN0aXZlKCVzKScgJSBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcInBlcnNwZWN0aXZlLW9yaWdpblwiIHN1cHBvcnQuXG4gKi9cblxucGVyc3BlY3RpdmUtb3JpZ2luKClcbiAgdmVuZG9yKCdwZXJzcGVjdGl2ZS1vcmlnaW4nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBPcGFjaXR5IHdpdGggY29uZGl0aW9uYWwgSUUgc3VwcG9ydC5cbiAqL1xuXG5vcGFjaXR5KG4sIGFyZ3MuLi4pXG4gIG9wYWNpdHk6IG4gYXJnc1xuICBpZiBzdXBwb3J0LWZvci1pZVxuICAgIGlmIG4gPT0gaW5oZXJpdCBvciBuID09IGluaXRpYWxcbiAgICAgIC1tcy1maWx0ZXI6IG4gYXJnc1xuICAgICAgZmlsdGVyOiBuIGFyZ3NcbiAgICBlbHNlXG4gICAgICB2YWwgPSByb3VuZChuICogMTAwKVxuICAgICAgaWYgdmFsID09IDEwMFxuICAgICAgICAtbXMtZmlsdGVyOiBub25lIGFyZ3NcbiAgICAgICAgZmlsdGVyOiBub25lIGFyZ3NcbiAgICAgIGVsc2VcbiAgICAgICAgLW1zLWZpbHRlcjogJ1wicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9JXMpXCInICUgdmFsIGFyZ3NcbiAgICAgICAgZmlsdGVyOiAnYWxwaGEob3BhY2l0eT0lcyknICUgdmFsIGFyZ3NcblxuLypcbiAqIFZlbmRvciBcInRleHQtc2l6ZS1hZGp1c3RcIlxuICovXG5cbnRleHQtc2l6ZS1hZGp1c3QoKVxuICB2ZW5kb3IoJ3RleHQtc2l6ZS1hZGp1c3QnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBBbGlhcyB0aGUgXCJ3aGl0ZS1zcGFjZVwiIHByb3BlcnR5LlxuICovXG5cbndoaXRlc3BhY2UoKVxuICB3aGl0ZS1zcGFjZTogYXJndW1lbnRzXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtc2l6aW5nXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtc2l6aW5nKClcbiAgdmVuZG9yKCdib3gtc2l6aW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LW9yaWVudFwiIHN1cHBvcnQuXG4gKi9cblxuYm94LW9yaWVudCgpXG4gIHZlbmRvcignYm94LW9yaWVudCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1mbGV4LWdyb3VwXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtZmxleC1ncm91cCgpXG4gIHZlbmRvcignYm94LWZsZXgtZ3JvdXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtb3JkaW5hbC1ncm91cFwiIHN1cHBvcnQuXG4gKi9cblxuYm94LW9yZGluYWwtZ3JvdXAoKVxuICB2ZW5kb3IoJ2JveC1vcmRpbmFsLWdyb3VwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtYWxpZ25cIiBzdXBwb3J0LlxuICovXG5cbmJveC1hbGlnbigpXG4gIHZlbmRvcignYm94LWFsaWduJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LXBhY2tcIiBzdXBwb3J0LlxuICovXG5cbmJveC1wYWNrKClcbiAgdmVuZG9yKCdib3gtcGFjaycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1kaXJlY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmJveC1kaXJlY3Rpb24oKVxuICB2ZW5kb3IoJ2JveC1kaXJlY3Rpb24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uJywgYXJndW1lbnRzKVxuXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tbmFtZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLW5hbWUoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1uYW1lJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWR1cmF0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZHVyYXRpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kdXJhdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1kZWxheVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWRlbGF5KClcbiAgdmVuZG9yKCdhbmltYXRpb24tZGVsYXknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZGlyZWN0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZGlyZWN0aW9uKClcbiAgdmVuZG9yKCdhbmltYXRpb24tZGlyZWN0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCgpXG4gIHZlbmRvcignYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCcsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tcGxheS1zdGF0ZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLXBsYXktc3RhdGUoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1wbGF5LXN0YXRlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWZpbGwtbW9kZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWZpbGwtbW9kZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLWZpbGwtbW9kZScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImh5cGhlbnNcIiBzdXBwb3J0LlxuICovXG5cbmh5cGhlbnMoKVxuICB2ZW5kb3IoJ2h5cGhlbnMnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJhcHBlYXJhbmNlXCIgc3VwcG9ydC5cbiAqL1xuXG5hcHBlYXJhbmNlKClcbiAgdmVuZG9yKCdhcHBlYXJhbmNlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidGFiLXNpemVcIiBzdXBwb3J0LlxuICovXG5cbnRhYi1zaXplKClcbiAgdmVuZG9yKCd0YWItc2l6ZScsIGFyZ3VtZW50cywgb25seTogbW96IG8gb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJvdmVyZmxvdy1zY3JvbGxpbmdcIiBzdXBwb3J0LlxuICovXG5cbm92ZXJmbG93LXNjcm9sbGluZygpXG4gIHZlbmRvcignb3ZlcmZsb3ctc2Nyb2xsaW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0ZXh0LW92ZXJmbG93XCIgc3VwcG9ydCwgLCAtby0gZm9yIG9wZXJhIDkuKiAtIDEwLipcbiAqL1xuXG50ZXh0LW92ZXJmbG93KClcbiAgdmVuZG9yKCd0ZXh0LW92ZXJmbG93JywgYXJndW1lbnRzLCBvbmx5OiBvZmZpY2lhbCBvKVxuXG4vKlxuICogVmVuZG9yIFwidGV4dC1zaXplLWFkanVzdFwiIHN1cHBvcnQuXG4gKi9cbnRleHQtc2l6ZS1hZGp1c3QoKVxuICB2ZW5kb3IoJ3RleHQtc2l6ZS1hZGp1c3QnLCBhcmd1bWVudHMsIG9ubHk6IG9mZmljaWFsIHdlYmtpdCBtcylcblxuLypcbiAqIFZlbmRvciBcImZvbnQtc21vb3RoaW5nXCIgc3VwcG9ydCwgd2Via2l0IG9ubHkuXG4gKi9cbmZvbnQtc21vb3RoaW5nKClcbiAgdmVuZG9yKCdmb250LXNtb290aGluZycsIGFyZ3VtZW50cywgb25seTogd2Via2l0KVxuXG5cbi8qKlxuICogVmVuZG9yIGlucHV0LXBsYWNlaG9sZGVyL3BsYWNlaG9sZGVyIHN1cHBvcnQuXG4gKlxuICogRXhhbXBsZXM6XG4gKiAgICAvLyBEZWZhdWx0IHN5bnRheFxuICogICAgYm9keVxuICogICAgICBwbGFjZWhvbGRlcihjb2xvciAjMzMzLCBmb250LXdlaWdodCBub3JtYWwpXG4gKlxuICogICAgLy8gVGhlIGNvbW1hIGlzIGltcG9ydGFudFxuICogICAgLnBsYWNlaG9sZGVyLXJlZFxuICogICAgICBwbGFjZWhvbGRlcihjb2xvciByZWQsKVxuICpcbiAqICAgIC8vIFdlIGNhbiBwYXNzIGEgZnVuY3Rpb25cbiAqICAgIGdyZWVuLXBsYWNlaG9sZGVyKClcbiAqICAgICAgY29sb3IgZ3JlZW5cbiAqICAgIC5wbGFjZWhvbGRlci1ncmVlblxuICogICAgICBwbGFjZWhvbGRlcihncmVlbi1wbGFjZWhvbGRlcilcbiAqXG4gKiAgICAvLyBXZSBjYW4gcGFzcyBhIGhhc2hcbiAqICAgIHRleHRhcmVhXG4gKiAgICAgIHBsYWNlaG9sZGVyKChmb250LXN0eWxlIGl0YWxpYykgKGZvbnQtd2VpZ2h0IGJvbGQpIChwYWRkaW5nICc0cHggMTBweCcpKVxuICovXG5wbGFjZWhvbGRlcigpXG4gIGZvciB2IGluICc6LXdlYmtpdC1pbnB1dCcgJy1tb3onICc6LW1veicgJy1tcy1pbnB1dCdcbiAgICAmOnt2fS1wbGFjZWhvbGRlclxuICAgICAgZm9yIHBhaXIgaW4gYXJndW1lbnRzXG4gICAgICAgIGlmIHR5cGVvZihwYWlyKSA9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgcGFpcigpXG4gICAgICAgIGVsc2UgaWYgcGFpciBpcyBub3QgbnVsbCAmJiBwYWlyWzBdIGlzIG5vdCBudWxsXG4gICAgICAgICAge3BhaXJbMF19OiB0eXBlKHBhaXJbMV0pID09ICdzdHJpbmcnID8gcyhwYWlyWzFdKSA6IHBhaXJbMV1cbmlucHV0LXBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJcblxuLypcbiAqIFZlbmRvciBiYWNrZ3JvdW5kIHN1cHBvcnQgKGdyYWRpZW50cykuXG4gKi9cblxuYmFja2dyb3VuZCgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgYmFja2dyb3VuZCBhcmd1bWVudHNcblxuYmFja2dyb3VuZC1pbWFnZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgYmFja2dyb3VuZC1pbWFnZSBhcmd1bWVudHNcblxuY3Vyc29yKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2N1cnNvcicsIGFyZ3VtZW50cywgdmVuZG9yLXByb3BlcnR5OiBmYWxzZSlcbiAgZWxzZVxuICAgIGN1cnNvciBhcmd1bWVudHNcblxubGlzdC1zdHlsZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdsaXN0LXN0eWxlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgbGlzdC1zdHlsZSBhcmd1bWVudHNcblxubGlzdC1zdHlsZS1pbWFnZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdsaXN0LXN0eWxlLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgbGlzdC1zdHlsZS1pbWFnZSBhcmd1bWVudHNcbiIsIi8qXG4gKiBib3JkZXI6IDxjb2xvcj5cbiAqIGJvcmRlcjogLi4uXG4gKi9cblxuYm9yZGVyKGNvbG9yLCBhcmdzLi4uKVxuICBpZiBjb2xvciBpcyBhICdjb2xvcidcbiAgICBib3JkZXI6IDFweCBzb2xpZCBjb2xvciBhcmdzXG4gIGVsc2VcbiAgICBib3JkZXI6IGFyZ3VtZW50c1xuIiwiZm9vdGVyLnNpdGUtZm9vdGVyXG5cdGJhY2tncm91bmQ6ICR3YXJtX2dyZXlcblx0Y29sb3I6IHdoaXRlXG5cdG1hcmdpbi10b3A6IDEwMHB4XG5cdHBhZGRpbmctdG9wOiAyMHB4XG5cdGhlaWdodDogYXV0b1xuXHRtaW4taGVpZ2h0OiA2MHB4XG5cdCtiZWxvdygkYnJlYWstc21hbGwpXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyXG5cdHVsLmNvbHVtbnNcblx0XHRtYXJnaW46IDBcblx0XHRmbG9hdDogbGVmdFxuXHRcdHdpZHRoOiBhdXRvXG5cdFx0bGlcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9ja1xuXHRcdFx0cGFkZGluZzogMCAxNXB4XG5cdFx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB3aGl0ZVxuXHRcdFx0Zm9udC1zaXplOiAxNHB4XG5cdFx0XHQmOmxhc3QtY2hpbGRcblx0XHRcdFx0Ym9yZGVyLXJpZ2h0OiBub25lXG5cdFx0XHQrYmVsb3coJGJyZWFrLXNtYWxsKVxuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmVcblx0XHRcdCYuYWNjZXNzc2VhcmNoXG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA3MDBcblx0XHRcdFx0c3BhblxuXHRcdFx0XHRcdGNvbG9yOiBibGFja1xuXHQubWVudS1zb2NpYWwtY29udGFpbmVyXG5cdFx0ZmxvYXQ6IHJpZ2h0XG5cdFx0aGVpZ2h0OiBhdXRvXG5cdFx0bGluZS1oZWlnaHQ6IGF1dG9cblx0XHQrYmVsb3coJGJyZWFrLXNtYWxsKVxuXHRcdFx0ZmxvYXQ6IG5vbmVcblx0XHRcdGNsZWFyOiBib3RoXG5cdFx0XHRwYWRkaW5nLXRvcDogMTBweFxuXHRcdHVsXG5cdFx0XHRtYXJnaW4tbGVmdDogMFxuXHRcdGxpXG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2tcblx0XHRcdGFcblx0XHRcdFx0ZGlzcGxheTogYmxvY2tcblx0XHRcdFx0dGV4dC1pbmRlbnQ6IC05OTk5cHhcblx0XHRcdFx0d2lkdGg6IDI4cHhcblx0XHRcdFx0aGVpZ2h0OiAyOHB4XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAxOHB4XG5cdFx0XHQmOmZpcnN0LWNoaWxkXG5cdFx0XHRcdCtiZWxvdygkYnJlYWstc21hbGwpXG5cdFx0XHRcdFx0YVxuXHRcdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDBcblx0XHRcdCYuZmFjZWJvb2sgYVxuXHRcdFx0XHRiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltZy9zb2NpYWwvRmFjZWJvb2suc3ZnJylcblx0XHRcdCYudHdpdHRlciBhXG5cdFx0XHRcdGJhY2tncm91bmQ6IHVybCgnLi4vaW1nL3NvY2lhbC9Ud2l0dGVyLnN2ZycpXG5cdFx0XHQmLmxpbmtlZGluIGFcblx0XHRcdFx0YmFja2dyb3VuZDogdXJsKCcuLi9pbWcvc29jaWFsL0xpbmtlZGluLnN2ZycpXG5cdFx0XHQmLnBpbnRlcmVzdCBhXG5cdFx0XHRcdGJhY2tncm91bmQ6IHVybCgnLi4vaW1nL3NvY2lhbC9QaW50ZXJlc3Quc3ZnJylcblx0XHRcdCYuaW5zdGFncmFtIGFcblx0XHRcdFx0YmFja2dyb3VuZDogdXJsKCcuLi9pbWcvc29jaWFsL0luc3RhZ3JhbS5zdmcnKVxuXHRcdFx0Ji55b3V0dWJlIGFcblx0XHRcdFx0YmFja2dyb3VuZDogdXJsKCcuLi9pbWcvc29jaWFsL1lvdVR1YmUuc3ZnJykiLCJiYXNlLWZvbnQtc2l6ZSA/PSAxNnB4XG5yYXN0ZXJpc2UtbWVkaWEtcXVlcmllcyA/PSBmYWxzZVxuXG5ydXB0dXJlID0ge1xuICByYXN0ZXJpc2UtbWVkaWEtcXVlcmllczogcmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXNcbiAgbW9iaWxlLWN1dG9mZjogNDAwcHhcbiAgZGVza3RvcC1jdXRvZmY6IDEwNTBweFxuICBoZC1jdXRvZmY6IDE4MDBweFxuICBlbmFibGUtZW0tYnJlYWtwb2ludHM6IGZhbHNlXG4gIGJhc2UtZm9udC1zaXplOiBiYXNlLWZvbnQtc2l6ZVxuICBhbnRpLW92ZXJsYXA6IGZhbHNlXG4gIGRlbnNpdHktcXVlcmllczogJ2RwcHgnICd3ZWJraXQnICdtb3onICdkcGknXG4gIHJldGluYS1kZW5zaXR5OiAxLjVcbiAgdXNlLWRldmljZS13aWR0aDogZmFsc2Vcbn1cbnJ1cHR1cmUuc2NhbGUgPSAwIChydXB0dXJlLm1vYmlsZS1jdXRvZmYpIDYwMHB4IDgwMHB4IChydXB0dXJlLmRlc2t0b3AtY3V0b2ZmKSAocnVwdHVyZS5oZC1jdXRvZmYpXG5ydXB0dXJlLnNjYWxlLW5hbWVzID0gJ3hzJyAncycgJ20nICdsJyAneGwnICdoZCdcblxuLWlzLXN0cmluZyh2YWwpXG4gIGlmIHR5cGVvZih2YWwpIGlzIG5vdCAndW5pdCdcbiAgICBpZiB2YWwgaXMgYSAnc3RyaW5nJyBvciB2YWwgaXMgYSAnaWRlbnQnXG4gICAgICB0cnVlXG4gICAgZWxzZVxuICAgICAgZmFsc2VcbiAgZWxzZVxuICAgIGZhbHNlXG5cbi1nZXQtc2NhbGUtbnVtYmVyKHNjYWxlLW5hbWUpXG4gIGZvciBsaXN0LWl0ZW0sIGkgaW4gcnVwdHVyZS5zY2FsZS1uYW1lc1xuICAgIGlmIGxpc3QtaXRlbSBpcyBzY2FsZS1uYW1lXG4gICAgICByZXR1cm4gaSArIDFcbiAgcmV0dXJuIGZhbHNlXG5cbi1jb252ZXJ0LXRvKHRvLXVuaXQsIHZhbHVlLCBjb250ZXh0ID0gcnVwdHVyZS5iYXNlLWZvbnQtc2l6ZSlcbiAgZnJvbS11bml0ID0gdW5pdCh2YWx1ZSlcbiAgcmV0dXJuIHZhbHVlIGlmIHRvLXVuaXQgaXMgZnJvbS11bml0XG4gIGlmIHRvLXVuaXQgaW4gKCdlbScgJ3JlbScpXG4gICAgcmV0dXJuIHZhbHVlIGlmIGZyb20tdW5pdCBpbiAoJ2VtJyAncmVtJylcbiAgICByZXR1cm4gdW5pdCgodmFsdWUgLyBjb250ZXh0KSwgdG8tdW5pdClcbiAgaWYgdG8tdW5pdCBpcyAncHgnXG4gICAgcmV0dXJuIHVuaXQoKHZhbHVlICogY29udGV4dCksICdweCcpXG5cbi1vbi1zY2FsZShuKVxuICByZXR1cm4gdW5pdChuKSBpcyAnJ1xuXG4tbGFyZ2VyLXRoYW4tc2NhbGUobilcbiAgcmV0dXJuIChuID4gKGxlbmd0aChydXB0dXJlLnNjYWxlKSAtIDEpKSBhbmQgLW9uLXNjYWxlKG4pXG5cbi1pcy16ZXJvKG4pXG4gIHJldHVybiBuIGlzIDBcblxuLW92ZXJsYXAtc2hpZnQoYW50aS1vdmVybGFwLCBuKVxuICBzaGlmdC11bml0ID0gdW5pdChuKVxuICBhbnRpLW92ZXJsYXAgPSAwcHggdW5sZXNzIGFudGktb3ZlcmxhcFxuICBhbnRpLW92ZXJsYXAgPSAxcHggaWYgYW50aS1vdmVybGFwIGlzIHRydWVcbiAgaWYgbGVuZ3RoKGFudGktb3ZlcmxhcCkgaXMgMVxuICAgIHJldHVybiAtY29udmVydC10byhzaGlmdC11bml0LCBhbnRpLW92ZXJsYXApXG4gIGZvciB2YWwgaW4gYW50aS1vdmVybGFwXG4gICAgcmV0dXJuIHZhbCBpZiB1bml0KHZhbCkgaXMgc2hpZnQtdW5pdFxuXG4tYWRqdXN0LW92ZXJsYXAoYW50aS1vdmVybGFwLCBuLCBzaWRlID0gJ21pbicpXG4gIC1zaGlmdCA9IC1vdmVybGFwLXNoaWZ0KGFudGktb3ZlcmxhcCwgbilcbiAgaWYgKHNpZGUgaXMgJ21pbicgYW5kIC1zaGlmdCA+IDApIG9yIChzaWRlIGlzICdtYXgnIGFuZCAtc2hpZnQgPCAwKVxuICAgIG4gPSBuICsgLXNoaWZ0XG4gIHJldHVybiBuXG5cbi1pcy1wb3NpdGl2ZShuKVxuICByZXR1cm4gbiA+PSAwXG5cbi1kZW5zaXR5LXF1ZXJpZXMoZGVuc2l0eSlcbiAgaWYgdHlwZW9mKGRlbnNpdHkpIGlzIG5vdCAndW5pdCdcbiAgICBpZiBub3QgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgICAgZGVuc2l0eSA9ICclcycgJSBkZW5zaXR5XG4gIGRlbnNpdHkgPSBydXB0dXJlLnJldGluYS1kZW5zaXR5IGlmIGRlbnNpdHkgaXMgJ3JldGluYSdcbiAgcXVlcmllcyA9ICgpXG4gIGZvciBxdWVyeSBpbiBydXB0dXJlLmRlbnNpdHktcXVlcmllc1xuICAgIGlmIHF1ZXJ5IGlzICd3ZWJraXQnXG4gICAgICBwdXNoKHF1ZXJpZXMsICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAlcyknICUgKGRlbnNpdHkpKVxuICAgIGVsc2UgaWYgcXVlcnkgaXMgJ21veidcbiAgICAgIHB1c2gocXVlcmllcywgJyhtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICVzKScgJSAoZGVuc2l0eSkpXG4gICAgZWxzZSBpZiBxdWVyeSBpcyAnbydcbiAgICAgIHB1c2gocXVlcmllcywgJygtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAlcy8xKScgJSAoZGVuc2l0eSkpXG4gICAgZWxzZSBpZiBxdWVyeSBpcyAncmF0aW8nXG4gICAgICBwdXNoKHF1ZXJpZXMsICcobWluLWRldmljZS1waXhlbC1yYXRpbzogJXMpJyAlIChkZW5zaXR5KSlcbiAgICBlbHNlIGlmIHF1ZXJ5IGlzICdkcGknXG4gICAgICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgICAgIGRlbnNpdHk9Y29udmVydChkZW5zaXR5KVxuICAgICAgcHVzaChxdWVyaWVzLCAnKG1pbi1yZXNvbHV0aW9uOiAlc2RwaSknICUgKHJvdW5kKGRlbnNpdHkgKiA5NiwgMSkpKVxuICAgIGVsc2UgaWYgcXVlcnkgaXMgJ2RwcHgnXG4gICAgICBwdXNoKHF1ZXJpZXMsICcobWluLXJlc29sdXRpb246ICVzZHBweCknICUgKGRlbnNpdHkpKVxuICByZXR1cm4gcXVlcmllc1xuXG5jcmVhdGUtZmFsbGJhY2stY2xhc3Moc2VsZWN0ZWQsIGNsYXNzKVxuICAveycnICsgY2xhc3MgKyAnICcgKyBzZWxlY3RlZH1cbiAgICB7YmxvY2t9XG5cbi8vICtiZXR3ZWVuKG1pbiwgbWF4KVxuLy8gdXNhZ2UgKHNjYWxlIGNhbiBiZSBtaXhlZCB3aXRoIGN1c3RvbSB2YWx1ZXMpOlxuLy8gICAtICtiZXR3ZWVuKDEsIDMpIHNjYWxlOnNjYWxlXG4vLyAgIC0gK2JldHdlZW4oMCwgMykgMCB3aWR0aDpzY2FsZVxuLy8gICAtICtiZXR3ZWVuKDIwMHB4LCA1MDBweCkgY3VzdG9tOmN1c3RvbVxuLy8gICAtICtiZXR3ZWVuKDAsIDMwMHB4KSAwIHdpZHRoOmN1c3RvbVxuLy8gICAtICtiZXR3ZWVuKDEsIDMwMHB4KSBzY2FsZTpjdXN0b21cbi8vICAgLSArYmV0d2VlbigyMDBweCwgNCkgY3VzdG9tOnNjYWxlXG5cbmJldHdlZW4obWluLCBtYXgsIGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIHNlbGVjdGVkID0gc2VsZWN0b3IoKVxuXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgaWYgLWlzLXN0cmluZyhtaW4pXG4gICAgbWluID0gLWdldC1zY2FsZS1udW1iZXIobWluKVxuICBpZiAtaXMtc3RyaW5nKG1heClcbiAgICBtYXggPSAtZ2V0LXNjYWxlLW51bWJlcihtYXgpXG5cbiAgLW1pbiA9IHJ1cHR1cmUuc2NhbGVbbWluIC0gMV0gdW5sZXNzIC1pcy16ZXJvKG1pbikgb3IgKG5vdCAtb24tc2NhbGUobWluKSlcbiAgLW1heCA9IHJ1cHR1cmUuc2NhbGVbbWF4XSB1bmxlc3Mgbm90IC1vbi1zY2FsZShtYXgpXG4gIC1taW4gPz0gbWluXG4gIC1tYXggPz0gbWF4XG5cbiAgaWYgKHJ1cHR1cmUucmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXMpXG4gICAgaWYgbm90IChkZW5zaXR5IG9yIC1tYXggb3Igb3JpZW50YXRpb24pXG4gICAgICB7YmxvY2t9XG4gIGVsc2VcbiAgICBjb25kaXRpb24gPSAnb25seSBzY3JlZW4nXG4gICAgdXNlLWRldmljZS13aWR0aCA9IHVzZS1kZXZpY2Utd2lkdGggPyAnZGV2aWNlLScgOiAnJ1xuICAgIHVubGVzcyAtbWluIGlzIDBcbiAgICAgIC1taW4gPSAtY29udmVydC10bygnZW0nLCAtbWluKSBpZiBydXB0dXJlLmVuYWJsZS1lbS1icmVha3BvaW50c1xuICAgICAgLW1pbiA9IC1hZGp1c3Qtb3ZlcmxhcChhbnRpLW92ZXJsYXAsIC1taW4sIHNpZGU6ICdtaW4nKVxuICAgICAgY29uZGl0aW9uID0gY29uZGl0aW9uICsgJyBhbmQgKG1pbi0nICsgdXNlLWRldmljZS13aWR0aCArICd3aWR0aDogJXMpJyAlICgtbWluKVxuICAgIHVubGVzcyAtbGFyZ2VyLXRoYW4tc2NhbGUobWF4KVxuICAgICAgLW1heCA9IC1jb252ZXJ0LXRvKCdlbScsIC1tYXgpIGlmIHJ1cHR1cmUuZW5hYmxlLWVtLWJyZWFrcG9pbnRzXG4gICAgICAtbWF4ID0gLWFkanVzdC1vdmVybGFwKGFudGktb3ZlcmxhcCwgLW1heCwgc2lkZTogJ21heCcpXG4gICAgICBjb25kaXRpb24gPSBjb25kaXRpb24gKyAnIGFuZCAobWF4LScgKyB1c2UtZGV2aWNlLXdpZHRoICsgJ3dpZHRoOiAlcyknICUgKC1tYXgpXG4gICAgaWYgb3JpZW50YXRpb25cbiAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbiArICcgYW5kIChvcmllbnRhdGlvbjogJXMpJyAlIChvcmllbnRhdGlvbilcbiAgICBpZiBkZW5zaXR5XG4gICAgICBjb25kaXRpb25zID0gKClcbiAgICAgIGZvciBxdWVyeSBpbiAtZGVuc2l0eS1xdWVyaWVzKGRlbnNpdHkpXG4gICAgICAgIHB1c2goY29uZGl0aW9ucywgY29uZGl0aW9uICsgJyBhbmQgJXMnICUgKHF1ZXJ5KSlcbiAgICAgIGNvbmRpdGlvbiA9IGpvaW4oJywgJywgY29uZGl0aW9ucylcbiAgICBAbWVkaWEgY29uZGl0aW9uXG4gICAgICB7YmxvY2t9XG4gIGlmIGZhbGxiYWNrLWNsYXNzXG4gICAgK2NyZWF0ZS1mYWxsYmFjay1jbGFzcyhzZWxlY3RlZCwgZmFsbGJhY2stY2xhc3MpXG4gICAgICB7YmxvY2t9XG5cbmF0KHNjYWxlLXBvaW50LCBhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICtiZXR3ZWVuKHNjYWxlLXBvaW50LCBzY2FsZS1wb2ludCwgYW50aS1vdmVybGFwLCBkZW5zaXR5LCBvcmllbnRhdGlvbiwgdXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG5mcm9tLXdpZHRoKHNjYWxlLXBvaW50LCBhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICtiZXR3ZWVuKHNjYWxlLXBvaW50LCBsZW5ndGgocnVwdHVyZS5zY2FsZSksIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxuYWJvdmUgPSBmcm9tLXdpZHRoXG5cbnRvLXdpZHRoKHNjYWxlLXBvaW50LCBhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICtiZXR3ZWVuKDEsIHNjYWxlLXBvaW50LCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmJlbG93ID0gdG8td2lkdGhcblxubW9iaWxlKGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2JlbG93KHJ1cHR1cmUubW9iaWxlLWN1dG9mZiwgYW50aS1vdmVybGFwLCBkZW5zaXR5LCBvcmllbnRhdGlvbiwgdXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG50YWJsZXQoYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICArYmV0d2VlbihydXB0dXJlLm1vYmlsZS1jdXRvZmYsIHJ1cHR1cmUuZGVza3RvcC1jdXRvZmYsIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxuZGVza3RvcChhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICthYm92ZShydXB0dXJlLmRlc2t0b3AtY3V0b2ZmLCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmhkKGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2Fib3ZlKHJ1cHR1cmUuaGQtY3V0b2ZmLCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmRlbnNpdHkoZGVuc2l0eSwgb3JpZW50YXRpb24gPSBudWxsLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIHNlbGVjdGVkID0gc2VsZWN0b3IoKVxuICBpZiBub3QgKHJ1cHR1cmUucmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXMpXG4gICAgY29uZGl0aW9ucyA9ICgpXG4gICAgZm9yIHF1ZXJ5IGluIC1kZW5zaXR5LXF1ZXJpZXMoZGVuc2l0eSlcbiAgICAgIGNvbmRpdGlvbiA9ICdvbmx5IHNjcmVlbiBhbmQgJXMnICUgKHF1ZXJ5KVxuICAgICAgaWYgb3JpZW50YXRpb25cbiAgICAgICAgY29uZGl0aW9uID0gY29uZGl0aW9uICsgJyBhbmQgKG9yaWVudGF0aW9uOiAlcyknICUgKG9yaWVudGF0aW9uKVxuICAgICAgcHVzaChjb25kaXRpb25zLCBjb25kaXRpb24pXG4gICAgY29uZGl0aW9uID0gam9pbignLCAnLCBjb25kaXRpb25zKVxuICAgIEBtZWRpYSBjb25kaXRpb25cbiAgICAgIHtibG9ja31cbiAgICBpZiBmYWxsYmFjay1jbGFzc1xuICAgICAgK2NyZWF0ZS1mYWxsYmFjay1jbGFzcyhzZWxlY3RlZCwgZmFsbGJhY2stY2xhc3MpXG4gICAgICAgIHtibG9ja31cblxucGl4ZWwtcmF0aW8gPSBkZW5zaXR5XG5cbnJldGluYShvcmllbnRhdGlvbiA9IG51bGwsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgK2RlbnNpdHkoJ3JldGluYScsIG9yaWVudGF0aW9uLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmxhbmRzY2FwZShkZW5zaXR5ID0gbnVsbCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBzZWxlY3RlZCA9IHNlbGVjdG9yKClcbiAgaWYgbm90IChydXB0dXJlLnJhc3RlcmlzZS1tZWRpYS1xdWVyaWVzKVxuICAgIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICAgaWYgZGVuc2l0eVxuICAgICAgK3BpeGVsLXJhdGlvKGRlbnNpdHksIG9yaWVudGF0aW9uOiBsYW5kc2NhcGUsIGZhbGxiYWNrLWNsYXNzKVxuICAgICAgICB7YmxvY2t9XG4gICAgZWxzZVxuICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSlcbiAgICAgICAge2Jsb2NrfVxuICAgICAgaWYgZmFsbGJhY2stY2xhc3NcbiAgICAgICAgK2NyZWF0ZS1mYWxsYmFjay1jbGFzcyhzZWxlY3RlZCwgZmFsbGJhY2stY2xhc3MpXG4gICAgICAgICAge2Jsb2NrfVxuXG5wb3J0cmFpdChkZW5zaXR5ID0gbnVsbCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBzZWxlY3RlZCA9IHNlbGVjdG9yKClcbiAgaWYgbm90IChydXB0dXJlLnJhc3RlcmlzZS1tZWRpYS1xdWVyaWVzKVxuICAgIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICAgaWYgZGVuc2l0eVxuICAgICAgK3BpeGVsLXJhdGlvKGRlbnNpdHksIG9yaWVudGF0aW9uOiBwb3J0cmFpdCwgZmFsbGJhY2stY2xhc3MpXG4gICAgICAgIHtibG9ja31cbiAgICBlbHNlXG4gICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpXG4gICAgICAgIHtibG9ja31cbiAgICAgIGlmIGZhbGxiYWNrLWNsYXNzXG4gICAgICAgICtjcmVhdGUtZmFsbGJhY2stY2xhc3Moc2VsZWN0ZWQsIGZhbGxiYWNrLWNsYXNzKVxuICAgICAgICAgIHtibG9ja31cbiIsIkBrZXlmcmFtZXMgYXJyb3dcbiAgMCVcbiAgICBib3R0b206IDQwcHhcbiAgNTAlXG4gIFx0Ym90dG9tOiAzMHB4XG4gIDEwMCVcbiAgICBib3R0b206IDQwcHhcblxuaGVhZGVyLnNpdGUtaGVhZGVyXG5cdGJhY2tncm91bmQ6IHJnYmEoMTA1LCAxNTQsIDE5OCwgLjkpXG5cdGNvbG9yOiB3aGl0ZVxuXHRoZWlnaHQ6IDExMHB4XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB3aGl0ZVxuXHRwb3NpdGlvbjogZml4ZWRcblx0dG9wOiAwXG5cdGxlZnQ6IDBcblx0cmlnaHQ6IDBcblx0ei1pbmRleDogMlxuXHRkaXYuc2l0ZS1icmFuZGluZ1xuXHRcdGZsb2F0OiBsZWZ0XG5cdFx0YVxuXHRcdFx0ZGlzcGxheTogYmxvY2tcblx0XHRcdHdpZHRoOiAxNjBweFxuXHRcdFx0aGVpZ2h0OiA3MHB4XG5cdFx0XHRiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltZy9sb2dvLnN2ZycpIGNlbnRlciBuby1yZXBlYXRcblx0XHRcdGJhY2tncm91bmQtc2l6ZTogY29udGFpblxuXHRcdFx0bWFyZ2luOiAyMHB4IDAgMCAxMTBweFxuXHRcdFx0dGV4dC1pbmRlbnQ6IC05OTk5cHhcblx0XHRcdCtiZWxvdygkYnJlYWstc21hbGwpXG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAzMHB4XG5cdCthYm92ZSgkYnJlYWstbWVkaXVtKVxuXHRcdG5hdi5tYWluLW5hdmlnYXRpb25cblx0XHRcdGZsb2F0OiByaWdodFxuLmFkbWluLWJhciBoZWFkZXIuc2l0ZS1oZWFkZXJcblx0dG9wOiAzMnB4XG5cbi5wYWdlLWlkLTU1IGRpdi5oZXJvXG5cdCtiZWxvdygkYnJlYWstc21hbGwpXG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW50ZXJcblxuZGl2Lmhlcm9cblx0aGVpZ2h0OiA0NTBweFxuXHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyXG5cdGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlclxuXG5ib2R5LmhvbWUgZGl2Lmhlcm9cblx0aGVpZ2h0OiAxMDB2aFxuXHRwb3NpdGlvbjogcmVsYXRpdmVcblx0ei1pbmRleDogMVxuXHRoMlxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZVxuXHRcdHRvcDogMTc1cHhcblx0XHRsZWZ0OiAwXG5cdFx0cmlnaHQ6IDBcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXJcblx0XHRjb2xvcjogd2hpdGVcblx0XHRmb250LXNpemU6IDQwcHhcblx0XHRsaW5lLWhlaWdodDogNDRweFxuXHRcdGZvbnQtZmFtaWx5OiAkYWJlbFxuXHRcdEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKVxuXHRcdFx0dG9wOiAyNSVcblx0LmJ1dHRvbnNcblx0XHRwb3NpdGlvbjogYWJzb2x1dGVcblx0XHRib3R0b206IDkwcHhcblx0XHRsZWZ0OiA1MCVcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSlcblx0XHRtYXgtd2lkdGg6IDU1MHB4XG5cdFx0d2lkdGg6IDkwJVxuXHRcdCtiZWxvdygkYnJlYWstc21hbGwpXG5cdFx0XHR0b3A6IDQ1JVxuXHRcdC5idXR0b24tb3V0ZXJcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlXG5cdFx0XHRwYWRkaW5nOiAxMHB4XG5cdFx0XHR3aWR0aDogY2FsYyg1MCUgLSAzNXB4KVxuXHRcdFx0ZmxvYXQ6IGxlZnRcblx0XHRcdCtiZWxvdygkYnJlYWstc21hbGwpXG5cdFx0XHRcdHdpZHRoOiAxMDAlXG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDIwcHhcblx0XHRcdCY6bGFzdC1jaGlsZFxuXHRcdFx0XHRmbG9hdDogcmlnaHRcblx0XHRcdC5idXR0b25cblx0XHRcdFx0ZGlzcGxheTogYmxvY2tcblx0XHRcdFx0YmFja2dyb3VuZDogJGJsdWVcblx0XHRcdFx0Y29sb3I6IHdoaXRlXG5cdFx0XHRcdGhlaWdodDogODBweFxuXHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmVcblx0XHRcdFx0LmJ1dHRvbi1pbm5lclxuXHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZVxuXHRcdFx0XHRcdHRvcDogNTAlXG5cdFx0XHRcdFx0bGVmdDogMFxuXHRcdFx0XHRcdHJpZ2h0OiAwXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpXG5cdFx0XHRcdHNwYW5cblx0XHRcdFx0XHRkaXNwbGF5OiBibG9ja1xuXHRcdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlclxuXHRcdFx0XHRcdGZvbnQtZmFtaWx5OiAkYWJlbFxuXHRcdFx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2Vcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogMjJweFxuXHRcdFx0XHRcdCYudGV4dFxuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAyMHB4XG5cdFx0XHRcdFx0Ji5tb3JlXG5cdFx0XHRcdFx0XHRmb250LXNpemU6IDE0cHhcblx0XHRcdFx0XHRcdGNvbG9yOiBibGFja1xuXHRidXR0b24uYXJyb3dcblx0XHRwb3NpdGlvbjogYWJzb2x1dGVcblx0XHRib3R0b206IDUwcHhcblx0XHRsZWZ0OiA1MCVcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSlcblx0XHR3aWR0aDogMzFweFxuXHRcdGhlaWdodDogMTdweFxuXHRcdGJvcmRlcjogbm9uZVxuXHRcdGJhY2tncm91bmQ6IHVybCgnLi4vaW1nL2Fycm93LnN2ZycpIG5vLXJlcGVhdCBjZW50ZXJcblx0XHRvdXRsaW5lOiBub25lXG5cdFx0YW5pbWF0aW9uOiBhcnJvdyAycyBsaW5lYXIgaW5maW5pdGUiLCIuYmlvc1xuXHRoMlxuXHRcdGNvbG9yOiAkYmx1ZVxuXHRcdGZvbnQtZmFtaWx5OiAkYWJlbFxuXHRcdGZvbnQtc2l6ZTogNDBweFxuXHRcdHRleHQtYWxpZ246IGNlbnRlclxuXHRcdG1hcmdpbjogNDVweCAwIDBcblx0aDNcblx0XHRmb250LXNpemU6IDMwcHhcblx0XHRjb2xvcjogJG9yYW5nZVxuXHRcdHRleHQtYWxpZ246IGNlbnRlclxuXHRcdGZvbnQtZmFtaWx5OiAkYWJlbFxuXHRcdG1hcmdpbjogMzVweCAwIDUwcHggMFxuXHQuYmlvXG5cdFx0cGFkZGluZy1ib3R0b206IDQwcHhcblx0XHRvdmVyZmxvdzogaGlkZGVuXG5cdFx0aDRcblx0XHRcdGZvbnQtc2l6ZTogMjFweFxuXHRcdFx0Zm9udC1mYW1pbHk6ICRhYmVsXG5cdFx0XHRtYXJnaW46IDAgMCAxNXB4IDI1cHhcblx0XHQuY29udGVudFxuXHRcdFx0bWFyZ2luLWxlZnQ6IDI1cHhcblx0XHRcdGZvbnQtZmFtaWx5OiAkb3Blbl9zYW5zXG5cdFx0XHRmb250LXNpemU6IDFyZW1cblx0XHRcdGNvbG9yOiAkY29vbF9ncmV5XG5cdFx0XHRwXG5cdFx0XHRcdGZvbnQtZmFtaWx5OiAkb3Blbl9zYW5zXG5cdFx0XHRcdGNvbG9yOiAkY29vbF9ncmV5XG5cdFx0YS5iYWNrXG5cdFx0XHRwYWRkaW5nOiAxNXB4IDIwcHhcblx0XHRcdGJhY2tncm91bmQ6ICRsaWdodF93YXJtX2dyZXlcblx0XHRcdGZvbnQtZmFtaWx5OiAkYWJlbFxuXHRcdFx0Y29sb3I6ICRjb29sX2dyZXlcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZVxuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrXG5cdFx0XHRsZWZ0OiA1MCVcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKVxuXHRcdFx0bWFyZ2luLXRvcDogMjVweFxuXHRcdC5pbmZvcm1hdGlvbnNcblx0XHRcdGJhY2tncm91bmQ6ICRsaWdodF93YXJtX2dyZXlcblx0XHRcdHBhZGRpbmc6IDI1cHggMTAwcHggOTVweCAxMDBweFxuXHRcdFx0aGVpZ2h0OiAxMDAlXG5cdFx0XHQrYmVsb3coJGJyZWFrLW1lZGl1bSlcblx0XHRcdFx0cGFkZGluZzogMjVweFxuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAzMHB4XG5cdFx0XHRwXG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweFxuXHRcdFx0XHRtYXJnaW46IDBcblx0XHRcdGEubGlua2VkaW5cblx0XHRcdFx0ZGlzcGxheTogYmxvY2tcblx0XHRcdFx0d2lkdGg6IDI2cHhcblx0XHRcdFx0aGVpZ2h0OiAyNnB4XG5cdFx0XHRcdGJhY2tncm91bmQ6IHVybCgnLi4vaW1nL2ljb25fbGlua2VkaW4uc3ZnJylcblx0XHRcdFx0bWFyZ2luLXRvcDogMjBweCIsIiN3cGNmNy1mNTgtcDU1LW8xIGZvcm1cblx0bGFiZWxcblx0XHRkaXNwbGF5OiBub25lXG5cdGlucHV0LCB0ZXh0YXJlYVxuXHRcdGJhY2tncm91bmQ6ICNmNWY0ZjNcblx0XHRwYWRkaW5nOiAxNXB4IDEwcHhcblx0XHRib3JkZXI6IG5vbmVcblx0XHR3aWR0aDogMTAwJVxuXHRcdGZvbnQtc2l6ZTogMS4xcmVtXG5cdGlucHV0W3R5cGU9XCJzdWJtaXRcIl1cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29vbF9ncmV5XG5cdFx0d2lkdGg6IGF1dG9cblx0XHRmb250LXNpemU6IC45cmVtXG5cdFx0Y29sb3I6IHdoaXRlXG5cdFx0cGFkZGluZzogMTBweCAxNXB4XG5cdFx0bWFyZ2luLXRvcDogMTVweFxuXHRcdGJvcmRlci1yYWRpdXM6IDNweFxuXG4jd3BjZjctZjEwOC1wOTItbzEgZm9ybVxuXHRpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdFxuXHRcdGJvcmRlci1yYWRpdXM6IDRweFxuXHRcdGJveC1zaGFkb3c6IG5vbmVcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjZDJkMmQyXG5cdFx0cGFkZGluZzogNXB4XG5cdFx0d2lkdGg6IDEwMCVcblx0XHRmb250LXNpemU6IDAuODc1cmVtXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYVxuXHRsYWJlbFxuXHRcdGZvbnQtc2l6ZTogMC44MTI1cmVtXG5cdC5uYW1lXG5cdFx0b3ZlcmZsb3c6IGhpZGRlblxuXHRcdG1hcmdpbi1ib3R0b206IDE1cHhcblx0XHRzcGFuXG5cdFx0XHRmb250LXNpemU6IDAuNzVyZW1cblx0XHRsYWJlbFxuXHRcdFx0ZGlzcGxheTogYmxvY2tcblx0XHRwXG5cdFx0XHRkaXNwbGF5OiBub25lXG5cdFx0ZGl2XG5cdFx0XHQmOmZpcnN0LW9mLXR5cGVcblx0XHRcdFx0d2lkdGg6IDM1JVxuXHRcdFx0XHRmbG9hdDogbGVmdFxuXHRcdFx0JjpsYXN0LW9mLXR5cGVcblx0XHRcdFx0d2lkdGg6IDYwJVxuXHRcdFx0XHRmbG9hdDogcmlnaHRcblx0aW5wdXRbdHlwZT1cInN1Ym1pdFwiXVxuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb29sX2dyZXlcblx0XHR3aWR0aDogYXV0b1xuXHRcdGZvbnQtc2l6ZTogLjlyZW1cblx0XHRjb2xvcjogd2hpdGVcblx0XHRwYWRkaW5nOiAxMHB4IDE1cHhcblx0XHRtYXJnaW4tdG9wOiAxNXB4XG5cdFx0Ym9yZGVyLXJhZGl1czogM3B4IiwiLypcbiAqIEhlbHBlciBmb3IgYm9yZGVyLXJhZGl1cygpLlxuICovXG5cbi1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcbiAgaWYgbGVuZ3RoKHBvcykgPT0gM1xuICAgIC8vIGJvcmRlci1yYWRpdXM6IDx0b3AgfCBib3R0b20+IDxsZWZ0IHwgcmlnaHQ+IDxuPlxuICAgIHkgPSBwb3NbMF1cbiAgICB4ID0gcG9zWzFdXG4gICAgLy8gV2UgZG9uJ3QgdXNlIHZlbmRvciBmb3IgYm9kZXItcmFkaXVzIGFueW1vcmVcbiAgICAvLyB2ZW5kb3IoJ2JvcmRlci1yYWRpdXMtJXMlcycgJSBwb3MsIHBvc1syXSwgb25seTogd2Via2l0IG9mZmljaWFsKVxuICAgIHsnYm9yZGVyLSVzLSVzLXJhZGl1cycgJSBwb3N9OiBwb3NbMl0gaW1wb3J0YW5jZVxuICBlbHNlIGlmIHBvc1swXSBpbiAodG9wIGJvdHRvbSlcbiAgICAvLyBib3JkZXItcmFkaXVzOiA8dG9wIHwgYm90dG9tPiA8bj5cbiAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3NbMF0gbGVmdCBwb3NbMV0sIGltcG9ydGFuY2UpXG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zWzBdIHJpZ2h0IHBvc1sxXSwgaW1wb3J0YW5jZSlcbiAgZWxzZSBpZiBwb3NbMF0gaW4gKGxlZnQgcmlnaHQpXG4gICAgLy8gYm9yZGVyLXJhZGl1czogPGxlZnQgfCByaWdodD4gPG4+XG4gICAgdW5zaGlmdChwb3MsIHRvcCk7XG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zLCBpbXBvcnRhbmNlKVxuICAgIHBvc1swXSA9IGJvdHRvbVxuICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcblxuLypcbiAqIGJvcmRlci1yYWRpdXMgc3VwcG9ydGluZyBhdWdtZW50ZWQgYmVoYXZpb3IuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgYm9yZGVyLXJhZGl1czogMnB4IDVweFxuICogICAgYm9yZGVyLXJhZGl1czogdG9wIDVweCBib3R0b20gMTBweFxuICogICAgYm9yZGVyLXJhZGl1czogbGVmdCA1cHhcbiAqICAgIGJvcmRlci1yYWRpdXM6IHRvcCBsZWZ0IDVweFxuICogICAgYm9yZGVyLXJhZGl1czogdG9wIGxlZnQgMTBweCBib3R0b20gcmlnaHQgNXB4XG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgbGVmdCAxMHB4LCBib3R0b20gcmlnaHQgNXB4XG4gKlxuICovXG5cbmJvcmRlci1yYWRpdXMoKVxuICBwb3MgPSAoKVxuICBhdWdtZW50ZWQgPSBmYWxzZVxuICBpbXBvcnRhbmNlID0gYXJndW1lbnRzW2xlbmd0aChhcmd1bWVudHMpIC0gMV0gPT0gIWltcG9ydGFudCA/ICFpbXBvcnRhbnQgOiB1bnF1b3RlKCcnKVxuXG4gIGZvciBhcmdzIGluIGFyZ3VtZW50c1xuICAgIGZvciBhcmcgaW4gYXJnc1xuICAgICAgaWYgYXJnIGlzIGEgJ2lkZW50J1xuICAgICAgICBhcHBlbmQocG9zLCBhcmcpXG4gICAgICAgIGF1Z21lbnRlZCA9IHRydWVcbiAgICAgIGVsc2VcbiAgICAgICAgYXBwZW5kKHBvcywgYXJnKVxuICAgICAgICBpZiBhdWdtZW50ZWRcbiAgICAgICAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3MsIGltcG9ydGFuY2UpXG4gICAgICAgICAgcG9zID0gKClcbiAgYm9yZGVyLXJhZGl1cyBwb3MgdW5sZXNzIGF1Z21lbnRlZFxuIiwiLm91cl90ZWFtXG5cdFtjbGFzcyo9XCJjb2x1bW5cIl0rW2NsYXNzKj1cImNvbHVtblwiXTpsYXN0LWNoaWxkXG5cdFx0ZmxvYXQ6IGxlZnRcblx0LmJpb1xuXHRcdG1hcmdpbi1ib3R0b206IDQwcHhcblx0LnRlYW0tZ3JpZC1pdGVtXG5cdFx0bWFyZ2luLWJvdHRvbTogMS44NzVyZW1cblx0aDJcblx0XHRjb2xvcjogJGJsdWVcblx0XHRmb250LWZhbWlseTogJGFiZWxcblx0XHRmb250LXNpemU6IDQwcHhcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXJcblx0XHRtYXJnaW46IDQ1cHggMCAzNXB4XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZVxuXHRoM1xuXHRcdGZvbnQtc2l6ZTogMzBweFxuXHRcdGNvbG9yOiAkb3JhbmdlXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyXG5cdFx0Zm9udC1mYW1pbHk6ICRhYmVsXG5cdFx0bWFyZ2luOiAwIDAgNTBweCAwXG5cdC5pbmZvcm1hdGlvbnNcblx0XHRiYWNrZ3JvdW5kOiAkd2FybV9ncmV5XG5cdFx0cGFkZGluZzogMzBweCAwIDU1cHhcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXJcblx0XHR0cmFuc2l0aW9uOiBhbGwgLjRzXG5cdFx0aDNcblx0XHRcdGZvbnQtc2l6ZTogMjBweFxuXHRcdFx0Zm9udC1mYW1pbHk6ICRvcGVuX3NhbnNcblx0XHRcdGZvbnQtd2VpZ2h0OiA3MDBcblx0XHRcdGNvbG9yOiB3aGl0ZVxuXHRcdFx0dHJhbnNpdGlvbjogYWxsIC40c1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMFxuXHRcdGg0XG5cdFx0XHRmb250LXNpemU6IDE2cHhcblx0XHRcdGZvbnQtZmFtaWx5OiAkb3Blbl9zYW5zXG5cdFx0XHRjb2xvcjogd2hpdGVcblx0XHRcdHRyYW5zaXRpb246IGFsbCAuNHNcblx0YTpob3ZlclxuXHRcdC5pbmZvcm1hdGlvbnNcblx0XHRcdGJhY2tncm91bmQ6ICRibHVlXG5cdFx0XHRoMywgaDRcblx0XHRcdFx0Y29sb3I6IGJsYWNrIiwiLnBhZ2UtdGVtcGxhdGUtZGVmYXVsdFxuXHRoMS5lbnRyeS10aXRsZVxuXHRcdHBhZGRpbmctdG9wOiA0MHB4XG5cdFx0bWFyZ2luOiAwIDAgNTBweCAwXG5cdFx0Y29sb3I6ICRibHVlXG5cdFx0Zm9udC1zaXplOiA0MHB4XG5cdFx0bGluZS1oZWlnaHQ6IDQwcHhcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlXG5cdFx0Zm9udC1mYW1pbHk6ICRhYmVsXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyXG5cdFx0K2JlbG93KCRicmVhay1zbWFsbClcblx0XHRcdG1hcmdpbjogMFxuXHRzZWN0aW9uLnNpZGViYXJcblx0XHRwYWRkaW5nLXRvcDogNDBweFxuXHRcdGRpdi5zaWRlYmFyLXRleHRcblx0XHRcdGJvcmRlci10b3A6IDJweCBzb2xpZCAjYjdhZWE0XG5cdFx0XHRwYWRkaW5nLXRvcDogMjBweFxuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHB4XG5cdFx0XHRmb250LXNpemU6IDI2cHhcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlclxuXHRcdFx0Zm9udC1mYW1pbHk6ICRvcGVuX3NhbnNcblx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpY1xuXHRcdFx0Y29sb3I6ICRvcmFuZ2Vcblx0XHRcdCtiZWxvdygkYnJlYWstc21hbGwpXG5cdFx0XHRcdHBhZGRpbmctYm90dG9tOiA0MHB4XG5cdHNlY3Rpb24uY29udGVudFxuXHRcdHBcblx0XHRcdGZvbnQtZmFtaWx5OiAkb3Blbl9zYW5zXG5cdFx0XHRmb250LXNpemU6IDFyZW1cblx0XHRcdGNvbG9yOiAkY29vbF9ncmV5XG5cdFx0YVxuXHRcdFx0Y29sb3I6IGJsYWNrXG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZVxuXHRcdGgyLCBoMywgaDQsIGg1XG5cdFx0XHRmb250LWZhbWlseTogJGFiZWxcblx0XHRcdGNvbG9yOiBibGFja1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemVcblx0XHR0YWJsZVxuXHRcdFx0Zm9udC1mYW1pbHk6ICRvcGVuX3NhbnNcblx0XHRcdGNvbG9yOiAkY29vbF9ncmV5XG5cdFx0dWwgbGlcblx0XHRcdGZvbnQtZmFtaWx5OiAkb3Blbl9zYW5zXG5cdFx0XHRjb2xvcjogJGNvb2xfZ3JleVxuXHRcdHRhYmxlLmV4ZWN1dGl2ZS1zZWFyY2hcblx0XHRcdCtiZWxvdygkYnJlYWstc21hbGwpXG5cdFx0XHRcdHRkXG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2tcblx0XHRcdFx0XHR3aWR0aDogMTAwJSAhaW1wb3J0YW50Il19 */
