.whatsapp-tab{position:fixed;right:0;top:auto;left:auto;bottom:30vh;border-radius:10px 0 0 10px;border:0 solid transparent;padding:5px;width:64px!important;max-width:80px!important;height:60px!important;background-color:#25d366;transition:all .2s}.whatsapp-tab div{height:100%}.whatsapp-tab div a{color:#fff;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;height:100%;font-size:40px}.whatsapp-tab div a,.whatsapp-tab div a:hover{text-decoration:none}footer.footer{margin-top:0;font-size:.9375rem}footer.footer .inner-footer{max-width:75rem;margin:0 auto;padding-top:2.5rem;padding-bottom:2.5rem}footer.footer .inner-footer h3{font-size:1.5rem}footer.footer .inner-footer .footer-logo{display:block;padding-bottom:1.25rem}footer.footer .inner-footer .footer-logo img{max-width:17.5rem;max-height:5rem}footer.footer .inner-footer .footer-copyright{margin-bottom:1.25rem}footer.footer .inner-footer .footer-copyright p{margin-bottom:0}footer.footer .inner-footer .footer-menu ul{display:block;margin-top:.625rem}footer.footer .inner-footer .footer-menu ul li a{padding-top:.625rem;padding-bottom:.625rem;padding-left:0}footer.footer .inner-footer .footer-menu .menu .active>a,footer.footer .inner-footer .footer-menu .menu .is-active>a{background:unset}.page-navigation ul.pagination li span.current{line-height:1;text-decoration:none;display:block;padding:.3125rem .625rem;font-size:1.125rem;width:28px;height:28px}.pagination{margin-bottom:2.5rem;text-align:center;display:block}.pagination li{margin-right:.625rem;overflow:hidden;display:inline-block}.pagination li a{padding:.3125rem .625rem;font-size:1.125rem;width:28px;height:28px}.pagination li a:hover{border-bottom:0;text-decoration:none}.article-footer .navigation{margin-top:2.5rem;margin-bottom:2.5rem}.sidebar{color:#2a3060}.sidebar h4{padding-bottom:.625rem;font-size:1.4375rem}.sidebar h5{font-size:1.3125rem;font-weight:700}.sidebar a{color:#2a3060}.menu-sidebar-menu-container .menu li{width:100%;padding:.625rem .625rem .625rem 0}.menu-sidebar-menu-container .menu li a{padding-left:.3125rem;text-transform:uppercase}.menu-sidebar-menu-container .menu li a img{margin-right:1.25rem}.contact-container{background:#ededed;margin-top:2.5rem}.contact-details{padding-top:1.875rem;padding-bottom:1.875rem;position:relative;top:50%;transform:translateY(-50%)}.contact-details h4{margin-bottom:0}.contact-details i{font-size:2.5rem;margin-top:.625rem}.contact-details .contact-links{margin-bottom:1.25rem}.contact-details .contact-links p{margin-bottom:.3125rem}.contact-details .contact-links p a,.contact-details .contact-links p a:active,.contact-details .contact-links p a:hover,.contact-details .contact-links p a:visited{color:#312c59}.contact-details .address,.contact-details .fax{margin-bottom:1.25rem}.contact-details .button{margin-top:1.25rem}.contact-details .contact-info p{margin-bottom:0}.contact-form-container{padding:2.5rem}@media screen and (max-width:39.99875em){.contact-form-container{padding:2.5rem 1.25rem}}.contact-form-container .contact-form{margin-top:2.5rem;margin-left:auto;margin-right:auto;max-width:52.5rem}.contact-form-container .contact-form h2{padding-bottom:.9375rem;margin-top:0;margin-bottom:1.875rem}@media screen and (max-width:39.99875em){.contact-form-container .contact-form h2{text-align:center}}.contact-form-container .contact-form ::-webkit-input-placeholder{opacity:1}.contact-form-container .contact-form :-moz-placeholder,.contact-form-container .contact-form ::-moz-placeholder{opacity:1}.contact-form-container .contact-form :-ms-input-placeholder{opacity:1}.contact-form-container .contact-form [type=checkbox]{margin-bottom:.3125rem}.contact-form-container .contact-form select{border-radius:.8125rem;margin-top:.625rem;border-color:#979797}.contact-form-container .contact-form textarea{height:6.875rem}.contact-form-container .contact-form [type=email],.contact-form-container .contact-form [type=tel],.contact-form-container .contact-form [type=text],.contact-form-container .contact-form [type=week],.contact-form-container .contact-form textarea{margin-top:.25rem;margin-bottom:1.25rem;border-color:#979797;box-shadow:none}.wpcf7 a,.wpcf7 label{color:#000}.wpcf7 p{margin-bottom:.3125rem}.wpcf7 .wpcf7-list-item.first{margin-top:.625rem}.wpcf7 .wpcf7-response-output{clear:both}.wpcf7 .button{border:0;margin-top:1.875rem;font-size:1.125rem;max-width:11.25rem;width:100%;padding:1.25rem .625rem;display:block;border-radius:.25rem;box-shadow:0 2px 4px 0 #858585}.grecaptcha-badge{display:none}.benefits-container{padding-left:0;padding-right:0;margin:3rem auto}.benefits-container .benefits-hero{padding-left:0;padding-right:0;overflow:hidden}.benefits-container .benefits-hero img{transition:transform .5s ease;object-fit:cover;height:100%;width:100%}.benefits-container .benefits-hero img:hover{transform:scale(1.1)}.benefits-container .benefits-content{padding:1.875rem 1.25rem;position:relative;top:50%;transform:translateY(-50%)}@media print,screen and (min-width:64em){.benefits-container .benefits-content.full-width-container{padding-left:1.5rem;padding-right:8.5rem}}.benefits-container .benefits-content .benefits{margin-bottom:2.5rem}.benefits-container .benefits-content .benefits .benefit{margin-top:.625rem}.benefits-container .benefits-content .benefits .benefit i{font-size:1.25rem}.benefits-container .benefits-content .benefits .benefit p{margin-bottom:0}@media screen and (max-width:39.99875em){.benefits-container .benefits-content .button{margin-top:1.25rem}}.parallax-window{min-height:28.125rem;background:transparent;position:relative;overflow:hidden;margin-top:5rem;margin-bottom:0}.parallax-window .parallax-content{max-width:53.125rem;position:absolute;top:50%;left:0;right:0;margin-left:auto;margin-right:auto;transform:translateY(-50%);padding-right:1.25rem;padding-left:1.25rem}.parallax-window .parallax-content h2{text-shadow:0 1px 3px #454545}@media print,screen and (min-width:64em){.parallax-window .parallax-content h2{font-size:2.375rem}}.parallax-window .parallax-content .content{text-shadow:0 1px 3px #454545}.parallax-window .parallax-content .button{margin-top:1.25rem;padding:1.125rem .625rem;width:11.25rem}section.latest-news-section{background-color:#ededed;padding:2.5rem 0}section.latest-news-section #latest-news{margin-top:1rem;margin-bottom:1rem}section.latest-news-section #latest-news .latest-news .article{margin-bottom:1.25rem;padding-left:1.25rem;padding-right:1.25rem;text-align:center;position:relative}section.latest-news-section #latest-news .latest-news .article .image{overflow:hidden;margin-bottom:1.875rem;aspect-ratio:8/5}section.latest-news-section #latest-news .latest-news .article .image img{width:100%;height:100%;object-fit:cover}section.latest-news-section #latest-news .latest-news .article .content,section.latest-news-section #latest-news .latest-news .article h4{min-height:6.25rem}section.latest-news-section #latest-news .latest-news .article .button{left:0;right:0;bottom:.625rem;margin-left:auto;margin-right:auto;width:11.25rem;padding:.75rem .625rem;box-shadow:0 2px 4px 0 #858585}section.latest-news-section #latest-news .button-solid{max-width:18.75rem;width:100%;padding:.9375rem .625rem;box-shadow:0 2px 4px 0 #858585}#testimonials{margin-top:2.5rem;margin-bottom:2.5rem;text-align:center}#testimonials h2{margin-bottom:1.25rem}#testimonials .testimonials .testimonial{position:relative;margin-bottom:2.5rem;margin-left:1.25rem;margin-right:1.25rem;padding-bottom:2.5rem}#testimonials .testimonials .testimonial a:hover{text-decoration:none}#testimonials .testimonials .testimonial .image{padding:1.25rem;height:132px;width:132px;padding:0;border-radius:300px;overflow:hidden;margin:0 auto 16px}#testimonials .testimonials .testimonial .image img{max-height:9.375rem;width:auto;margin-left:auto;margin-right:auto}#testimonials .testimonials .testimonial .content{box-shadow:0 2px 10px 0 #858585;padding:1.875rem 1.5625rem 5.625rem;height:21.875rem;overflow:hidden;position:relative}@media print,screen and (min-width:40em){#testimonials .testimonials .testimonial .content{height:24.375rem}}#testimonials .testimonials .testimonial .content .excerpt-wrapper{position:relative;top:50%;transform:translateY(-50%)}#testimonials .testimonials .testimonial .content .name-organisation-wrapper{position:absolute;left:0;right:0;bottom:1.25rem;margin-left:auto;margin-right:auto}#testimonials .testimonials .testimonial .content .name-organisation-wrapper .name{margin-top:1.25rem;margin-bottom:0;font-weight:700}#testimonials .testimonials .testimonial .content .name-organisation-wrapper .organisation{margin-bottom:0;font-weight:700}#testimonials .button-solid{max-width:18.75rem;width:100%;padding:.9375rem .625rem;box-shadow:0 2px 4px 0 #858585}.features-container{padding-left:0;padding-right:0}.features-container .features{margin-top:2.5rem}.features-container .features .feature .content{padding:3.125rem 1.25rem 1.875rem}.features-container .features .feature .content .featured-content{position:relative;top:50%;transform:translateY(-50%)}@media print,screen and (min-width:40em){.features-container .features .feature .content{padding-left:2.5rem;padding-right:2.5rem}}@media print,screen and (min-width:64em){.features-container .features .feature .content{padding-left:3.75rem;padding-right:3.75rem}.features-container .features .feature .content .full-width-container{padding-left:8.5rem;padding-right:1.5rem}}.features-container .features .feature .content h2{margin-left:auto;margin-right:auto;margin-bottom:1.875rem}.features-container .features .feature .image{overflow:hidden}.features-container .features .feature .image img{transition:transform .5s ease;object-fit:cover;height:100%;width:100%}.features-container .features .feature .image img:hover{transform:scale(1.1)}.features-container .features .feature:nth-of-type(2n) .image{-ms-flex-order:1;order:1}.features-container .features .feature:nth-of-type(2n) .content{-ms-flex-order:2;order:2}@media print,screen and (min-width:64em){.features-container .features .feature:nth-of-type(2n) .content .full-width-container{padding-left:1.5rem;padding-right:8.5rem}}@media screen and (max-width:39.99875em){.features-container .features .feature:nth-of-type(odd) .image{-ms-flex-order:1;order:1}.features-container .features .feature:nth-of-type(odd) .content{-ms-flex-order:2;order:2}}.faq-container{margin-top:2.5rem;margin-bottom:2.5rem}.faq-container h2{margin-left:auto;margin-right:auto;margin-bottom:1.875rem}.faq-container li{margin-bottom:.625rem;border:1px solid #979797}.faq-container li .accordion-title:focus,.faq-container li .accordion-title:hover{background-color:unset}.faq-container li .accordion-title:before{color:#000;font-size:1rem;font-weight:700;margin-top:-.5625rem}.faq-container li a{padding-right:2.5rem}.faq-container li i{margin-right:.625rem}.video-container{margin-top:2.5rem;margin-bottom:2.5rem}.video-container h2{margin-left:auto;margin-right:auto;margin-bottom:1.875rem}.video-container .button{padding:1.25rem 1.875rem;margin-top:2.5rem;margin-left:auto;margin-right:auto;max-width:15rem;display:block;position:relative;border-radius:.5rem;box-shadow:0 2px 4px 0 #a1a1a1}#logo-carousel{margin:3rem auto}#logo-carousel h2{text-align:center;width:100%;margin-bottom:2.5rem}#logo-carousel .logo-carousel .logo{aspect-ratio:3/2;padding:20px}#logo-carousel .logo-carousel .logo img{width:100%;height:100%;object-fit:contain;transition:all .5s ease;scale:.9}#logo-carousel .logo-carousel .logo img:hover{scale:1}#logo-carousel .slick-track{display:-ms-flexbox;display:flex}#logo-carousel .slick-track .slick-slide{display:-ms-flexbox;display:flex;height:100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.social-container .social{margin-right:.9375rem;float:left}.social-container .social a i{font-size:1.875rem}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vbi1jcml0aWNhbC9sYXlvdXQvX2Zvb3Rlci5zY3NzIiwiY3JpdGljYWwvY29tbW9uL19jb2xvdXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3VuaXQuc2NzcyIsIm5vbi1jcml0aWNhbC9wYWdlLXRlbXBsYXRlcy9fYmxvZy5zY3NzIiwibm9uLWNyaXRpY2FsL3BhcnRzL19zaWRlYmFyLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX2NvbnRhY3QtY29udGFpbmVyLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX2NvbnRhY3QtZGV0YWlscy5zY3NzIiwibm9uLWNyaXRpY2FsL3BhcnRzL19jb250YWN0LWZvcm0uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwibm9uLWNyaXRpY2FsL3BhcnRzL19jb250ZW50LWJlbmVmaXRzLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX3BhcmFsbGF4LnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX2xhdGVzdC1uZXdzLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX3Rlc3RpbW9uaWFscy5zY3NzIiwibm9uLWNyaXRpY2FsL3BhcnRzL19mZWF0dXJlcy5zY3NzIiwibm9uLWNyaXRpY2FsL3BhcnRzL19mYXFzLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX3ZpZGVvLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX2xvZ29fY2Fyb3VzZWwuc2NzcyIsIm5vbi1jcml0aWNhbC9wYXJ0cy9fY29udGVudC1zb2NpYWwuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUNJLGVBQWUsQUFDZixRQUFRLEFBQ1IsU0FBUyxBQUNULFVBQVUsQUFDVixZQUFZLEFBQ1osNEJBQTRCLEFBQzVCLDJCQUE2QixBQUM3QixZQUFZLEFBQ1oscUJBQXNCLEFBQ3RCLHlCQUEw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Q0UsZ0JBQXlCLENBb0MxQixBQWxDQSxrQkFDQyxrQkFBa0IsQUFDbEIsV0FBVyxBQUNYLG9CZGdGdUQsQ2MvRXZELEFBUEYsb0NBV0csaUJBQW1CLEFBQ25CLFlBQWEsQ0FXYixBQXZCSCx3Q0FjSSxXQUFXLEFBQ1gsWUFBWSxBQUNaLG1CQUFtQixBQUNuQix3QkFBd0IsQUFDeEIsUUFBVSxDQUlWLEFBdEJKLDhDQW9CSyxPQUFVLENBQ1YsQUFyQkwsNEJBNEJFLG9CQUFhLEFBQWIsWUFBYSxDQUNkLEFBN0JELHlDQStCRSxvQkFBYSxBQUFiLGFBQWEsQUFDYixZQUFhLEFBQ2Isc0JBQW1CLEFBQW5CLG1CQUFtQixBQUNuQixxQkFBdUIsQUFBdkIsc0JBQXVCLENBQ3hCLEFDbENHLDBCQUNJLHNCZm9GaUQsQWVuRmpELFVBQVcsQ0FNZCxBQVRMLDhCQU1ZLGtCZmdGNkMsQ2UvRTdDIiwiZmlsZSI6InN0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEZvb3RlclxuXG4ud2hhdHNhcHAtdGFiIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgcmlnaHQ6IDA7XG4gICAgdG9wOiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgYm90dG9tOiAzMHZoO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHggMCAwIDEwcHg7XG4gICAgYm9yZGVyOiAwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZzogNXB4O1xuICAgIHdpZHRoOiA2NHB4ICFpbXBvcnRhbnQ7XG4gICAgbWF4LXdpZHRoOiA4MHB4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiA2MHB4ICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzI1ZDM2NjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICBkaXYge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGEge1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOyAgICAgLyogdmVydGljYWwgKi9cbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvKiBob3Jpem9udGFsICovXG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBmb250LXNpemU6IDQwcHg7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZvb3Rlci5mb290ZXIge1xuICAgIC8vYmFja2dyb3VuZDogJGNvbG9yLWJhY2tnLXByaW1hcnk7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDE1KTtcbiAgICAuaW5uZXItZm9vdGVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiByZW0tY2FsYygxMjAwKTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHBhZGRpbmctdG9wOiByZW0tY2FsYyg0MCk7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiByZW0tY2FsYyg0MCk7XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgICAgLy9jb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyNCk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9vdGVyLWxvZ28ge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAvL3BhZGRpbmctdG9wOiByZW0tY2FsYyg0MCk7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IHJlbS1jYWxjKDI4MCk7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogcmVtLWNhbGMoODApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICAuZm9vdGVyLWNvcHlyaWdodCB7XG4gICAgICAgICAgICAvL2NvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAvL21hcmdpbi10b3A6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIC8vY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgXG4gICAgICAgIC5mb290ZXItbWVudSB7XG4gICAgICAgICAgXG4gICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IHJlbS1jYWxjKDEwKTsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwOyBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm1lbnUgLmFjdGl2ZT5hLCAubWVudSAuaXMtYWN0aXZlPmEge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHVuc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZvb3Rlci1zb2NpYWwge1xuICAgICAgICAgICAgLnNvY2lhbC1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIC5zb2NpYWwge1xuICAgICAgICAgICAgICAgICAgICAvL2Zsb2F0OiByaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgICAgIC8vZm9udC1zaXplOiByZW0tY2FsYygyNik7IFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICBcbiAgICB9XG59XG5cblxuIiwiLy8gQ29sb3Vyc1xuXG4vLyRjb2xvci1tYWluLXByaW1hcnk6IHJnYigwLCA2MSwgODEpO1xuLy8kY29sb3ItbWFpbi1zZWNvbmRhcnk6IHJnYigyNTUsIDIxNywgMCk7XG4vLyRjb2xvci1tYWluLXRlcnRpYXJ5OiByZ2IoMTg3LCAxODcsIDE4Nyk7XG5cblxuXG4kd2hpdGU6ICNGRkZGRkY7XG4kYmxhY2s6ICMwMDAwMDA7XG5cblxuJGNvbG9yLWJhc2UtcHJpbWFyeTogI0VERURFRDsgLy8gbGlnaHQgZ3JleVxuJGNvbG9yLWJhc2Utc2Vjb25kYXJ5OiAjOTc5Nzk3OyAvLyAgZGFyayBncmV5XG4kY29sb3ItYmFzZS10ZXJ0aWFyeTogIzI4MjgyODsgLy8gIGRhcmtlc3QgZ3JleVxuXG4kY29sb3ItbWFpbi1wcmltYXJ5OiAjMmEzMDYwOyAvLyBwdXJwbGVcbiRjb2xvci1tYWluLXNlY29uZGFyeTogI2Y1YTYyMzsgLy8gb3JhbmdlXG4kY29sb3ItbWFpbi10ZXJ0aWFyeTogIzJhMzA2MDsgLy8gcHVycGxlXG4kY29sb3ItbWFpbi1xdWF0ZXJuYXJ5OiAjY2NjY2NjOyAvLyBsaWdodCBncmV5XG5cbiRjb2xvci1mb250LXRlcnRpYXJ5OiAjOTc5Nzk3O1xuXG4kY29sb3ItYm9yZGVyLXRlcnRpYXJ5OiAjOTc5Nzk3O1xuXG4kY29sb3ItYm9yZGVyLXF1YXRlcm5hcnk6ICM5Nzk3OTc7XG5cbi8qIDIwMjUgKi9cblxuJGNvbG9yLWJhY2tncm91bmQtZ3JleTogI2VkZWRlZDtcblxuJGNvbG9yLWN0YS1saWdodDogIzgwY2ZmNDtcbiRjb2xvci1jdGEtZGFyazogIzMxMmM1OTtcbiRjb2xvci1jdGEtdGV4dDogIzMxMmM1OTtcbiRjb2xvci1jdGEtZ3JlZW46ICM2YWI0MmQ7XG5cblxuXG5cbi8qXG4kY29sb3ItYmFzZS1wcmltYXJ5OiAjRjFGMUYxO1xuJGNvbG9yLWJhc2Utc2Vjb25kYXJ5OiAjRjFGMUYxO1xuJGNvbG9yLWJhc2UtdGVydGlhcnk6ICNGMUYxRjE7XG5cbiovIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gUmVtb3ZlcyB0aGUgdW5pdCAoZS5nLiBweCwgZW0sIHJlbSkgZnJvbSBhIHZhbHVlLCByZXR1cm5pbmcgdGhlIG51bWJlciBvbmx5LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW0gLSBOdW1iZXIgdG8gc3RyaXAgdW5pdCBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHNhbWUgbnVtYmVyLCBzYW5zIHVuaXQuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkbnVtKSB7XG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xufVxuXG4vLy8gQ29udmVydHMgb25lIG9yIG1vcmUgcGl4ZWwgdmFsdWVzIGludG8gbWF0Y2hpbmcgcmVtIHZhbHVlcy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR2YWx1ZXMgLSBPbmUgb3IgbW9yZSB2YWx1ZXMgdG8gY29udmVydC4gQmUgc3VyZSB0byBzZXBhcmF0ZSB0aGVtIHdpdGggc3BhY2VzIGFuZCBub3QgY29tbWFzLiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHdyYXAgdGhlIGxpc3QgaW4gcGFyZW50aGVzZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIFRoZSBiYXNlIHZhbHVlIHRvIHVzZSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBgcmVtYC4gSWYgeW91J3JlIHVzaW5nIEZvdW5kYXRpb24gb3V0IG9mIHRoZSBib3gsIHRoaXMgaXMgMTZweC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgYG51bGxgLCB0aGUgZnVuY3Rpb24gd2lsbCByZWZlcmVuY2UgdGhlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgdmFyaWFibGUgYXMgdGhlIGJhc2UuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gQSBsaXN0IG9mIGNvbnZlcnRlZCB2YWx1ZXMuXG5AZnVuY3Rpb24gcmVtLWNhbGMoJHZhbHVlcywgJGJhc2U6IG51bGwpIHtcbiAgJHJlbS12YWx1ZXM6ICgpO1xuICAkY291bnQ6IGxlbmd0aCgkdmFsdWVzKTtcblxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBJZiB0aGUgYmFzZSBmb250IHNpemUgaXMgYSAlLCB0aGVuIG11bHRpcGx5IGl0IGJ5IDE2cHhcbiAgLy8gVGhpcyBpcyBiZWNhdXNlIDEwMCUgZm9udCBzaXplID0gMTZweCBpbiBtb3N0IGFsbCBicm93c2Vyc1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xuICB9XG5cbiAgLy8gVXNpbmcgcmVtIGFzIGJhc2UgYWxsb3dzIGNvcnJlY3Qgc2NhbGluZ1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ3JlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgJGNvdW50ID09IDEge1xuICAgIEByZXR1cm4gLXpmLXRvLXJlbSgkdmFsdWVzLCAkYmFzZSk7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRjb3VudCB7XG4gICAgJHJlbS12YWx1ZXM6IGFwcGVuZCgkcmVtLXZhbHVlcywgLXpmLXRvLXJlbShudGgoJHZhbHVlcywgJGkpLCAkYmFzZSkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVtLXZhbHVlcztcbn1cblxuLy8gQ29udmVydHMgYSB1bml0bGVzcywgcGl4ZWwsIG9yIHJlbSB2YWx1ZSB0byBlbSwgZm9yIHVzZSBpbiBicmVha3BvaW50cy5cbkBmdW5jdGlvbiAtemYtYnAtdG8tZW0oJHZhbHVlKSB7XG4gIC8vIFBpeGVsIGFuZCB1bml0bGVzcyB2YWx1ZXMgYXJlIGNvbnZlcnRlZCB0byByZW1zXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyBvciB1bml0bGVzcygkdmFsdWUpIHtcbiAgICAkdmFsdWU6IHJlbS1jYWxjKCR2YWx1ZSwgJGJhc2U6IDE2cHgpO1xuICB9XG5cbiAgLy8gVGhlbiB0aGUgdmFsdWUgaXMgY29udmVydGVkIHRvIGVtc1xuICBAcmV0dXJuIHN0cmlwLXVuaXQoJHZhbHVlKSAqIDFlbTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwgdmFsdWUgdG8gbWF0Y2hpbmcgcmVtIHZhbHVlLiAqQW55KiB2YWx1ZSBwYXNzZWQsIHJlZ2FyZGxlc3Mgb2YgdW5pdCwgaXMgYXNzdW1lZCB0byBiZSBhIHBpeGVsIHZhbHVlLiBCeSBkZWZhdWx0LCB0aGUgYmFzZSBwaXhlbCB2YWx1ZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgcmVtIHZhbHVlIGlzIHRha2VuIGZyb20gdGhlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgdmFyaWFibGUuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gUGl4ZWwgdmFsdWUgdG8gY29udmVydC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gQmFzZSBmb3IgcGl4ZWwgY29udmVyc2lvbi5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgbnVtYmVyIGluIHJlbXMsIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGdpdmVuIHZhbHVlIGFuZCB0aGUgYmFzZSBwaXhlbCB2YWx1ZS4gcmVtIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggYXMgaXMuXG5AZnVuY3Rpb24gLXpmLXRvLXJlbSgkdmFsdWUsICRiYXNlOiBudWxsKSB7XG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkdmFsdWUpICE9ICdudW1iZXInIHtcbiAgICBAd2FybiBpbnNwZWN0KCR2YWx1ZSkgKyAnIHdhcyBwYXNzZWQgdG8gcmVtLWNhbGMoKSwgd2hpY2ggaXMgbm90IGEgbnVtYmVyLic7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cblxuICAvLyBUcmFuc2Zvcm0gZW0gaW50byByZW0gaWYgc29tZW9uZSBoYW5kcyBvdmVyICdlbSdzXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2VtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxcmVtO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHJlbSBpZiB1bml0cyBmb3IgJHZhbHVlIGlzIG5vdCByZW0gb3IgZW1cbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSAncmVtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlKSAqIDFyZW07XG4gIH1cblxuICAvLyBUdXJuIDByZW0gaW50byAwXG4gIEBpZiAkdmFsdWUgPT0gMHJlbSB7XG4gICAgJHZhbHVlOiAwO1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbi8vLyBDb252ZXJ0cyBhIHBpeGVsLCBwZXJjZW50YWdlLCByZW0gb3IgZW0gdmFsdWUgdG8gYSB1bml0bGVzcyB2YWx1ZSBiYXNlZCBvbiBhIGdpdmVuIGZvbnQgc2l6ZS4gSWRlYWwgZm9yIHdvcmtpbmcgb3V0IHVuaXRsZXNzIGxpbmUgaGVpZ2h0cy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBjb252ZXJ0IHRvIGEgdW5pdGxlc3MgbGluZSBoZWlnaHRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgLSBUaGUgZm9udCBzaXplIHRvIHVzZSB0byB3b3JrIG91dCB0aGUgbGluZSBoZWlnaHQgLSBkZWZhdWx0cyB0byAkZ2xvYmFsLWZvbnQtc2l6ZVxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIFVuaXRsZXNzIG51bWJlclxuQGZ1bmN0aW9uIHVuaXRsZXNzLWNhbGMoJHZhbHVlLCAkYmFzZTogbnVsbCkge1xuXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcbiAgQGlmICRiYXNlID09IG51bGwge1xuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIEZpcnN0LCBsZXRzIGNvbnZlcnQgb3VyICRiYXNlIHRvIHBpeGVsc1xuXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmIHVuaXQoJGJhc2UpID09ICdyZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmIHVuaXQoJGJhc2UpID09ICdlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBOb3cgbGV0J3MgY29udmVydCBvdXIgdmFsdWUgdG8gcGl4ZWxzIHRvb1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICclJyB7XG4gICAgJHZhbHVlOiAoJHZhbHVlIC8gMTAwJSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3JlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICAvLyAncHgnXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyB7XG4gICAgQHJldHVybiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlKTtcbiAgfVxuXG4gIC8vIGFzc3VtZSB0aGF0IGxpbmUtaGVpZ2h0cyBncmVhdGVyIHRoYW4gMTAgYXJlIG1lYW50IHRvIGJlIGFic29sdXRlIGluICdweCdcbiAgQGlmIHVuaXRsZXNzKCR2YWx1ZSkgYW5kICgkdmFsdWUgPiAxMCkge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gc3RyaXAtdW5pdCgkYmFzZSk7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIi8vIEJsb2cgU3R5bGVzIG5vbmUgY3JpdGljYWxcblxuLnBhZ2UtbmF2aWdhdGlvbiB7XG4gICAgdWwucGFnaW5hdGlvbiB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIHNwYW4uY3VycmVudCB7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDUgMTApO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG5cblxuLnBhZ2luYXRpb24ge1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbGkge1xuICAgICAgICAvL2JvcmRlcjogMnB4IHNvbGlkICRjb2xvci1tYWluLXNlY29uZGFyeTtcbiAgICAgICAgLy8td2Via2l0LWJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDI1KTtcbiAgICAgICAgLy9ib3JkZXItcmFkaXVzOiByZW0tY2FsYygyNSk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoMTApO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIC5jdXJyZW50IHtcbiAgICAgICAgICAgIC8vYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLW1haW4tc2Vjb25kYXJ5O1xuICAgICAgICAgICAgLy9jb2xvcjogJGNvbG9yLW1haW4tc2Vjb25kYXJ5O1xuICAgICAgICB9XG4gICAgICAgIGEge1xuICAgICAgICAgICAgLy9jb2xvcjogJGNvbG9yLW1haW4tc2Vjb25kYXJ5O1xuICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNSAxMCk7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAvL2NvbG9yOiAkY29sb3ItbWFpbi1zZWNvbmRhcnk7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAvL2JvcmRlcjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4uYXJ0aWNsZS1mb290ZXIge1xuICAgIC5uYXZpZ2F0aW9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoNDApO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg0MCk7XG4gICAgfVxufVxuIiwiLy8gc2lkZWJhclxuXG4uc2lkZWJhciB7XG4gICAgLy9iYWNrZ3JvdW5kOiAkY29sb3ItbWFpbi1wcmltYXJ5O1xuICAgIGNvbG9yOiAkY29sb3ItbWFpbi1wcmltYXJ5O1xuICAgIGg0IHtcbiAgICBcdHBhZGRpbmctYm90dG9tOiByZW0tY2FsYygxMCk7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjMpO1xuICAgIH1cbiAgICBoNSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjEpO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgIH1cblxuICAgIGEge1xuICAgIFx0Y29sb3I6ICRjb2xvci1tYWluLXByaW1hcnk7XG4gICAgfVxufVxuXG5cbi5tZW51LXNpZGViYXItbWVudS1jb250YWluZXIge1xuICAgIC5tZW51IHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nOiByZW0tY2FsYygxMCAxMCAxMCAwKTtcbiAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDUpO1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgXG4gICAgfVxufSIsIi8vIGNvbnRhY3RcblxuLmNvbnRhY3QtY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYmFzZS1wcmltYXJ5OyBcbiAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyg0MCk7XG4gICAgXG59XG5cbiIsIi8vIGNvbnRhY3QgZGV0YWlsc1xuXG4uY29udGFjdC1kZXRhaWxzIHtcblx0cGFkZGluZy10b3A6IHJlbS1jYWxjKDMwKTtcblx0cGFkZGluZy1ib3R0b206IHJlbS1jYWxjKDMwKTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuICBcdHRvcDogNTAlO1xuICBcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblxuICBcdGg0IHtcbiAgXHRcdG1hcmdpbi1ib3R0b206IDA7XG4gIFx0fVxuXG4gICAgcCB7XG4gICAgICAgIC8vY29sb3I6ICR3aGl0ZTtcbiAgICB9XG5cbiAgICBpIHtcbiAgICBcdGZvbnQtc2l6ZTogcmVtLWNhbGMoNDApO1xuICAgIFx0bWFyZ2luLXRvcDogcmVtLWNhbGMoMTApO1xuICAgIH1cblxuICAgIC5jb250YWN0LWxpbmtzIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICAgIHAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg1KTtcbiAgICAgICAgYSwgYTp2aXNpdGVkLCBhOmhvdmVyLCBhOmFjdGl2ZSB7XG4gICAgICAgICAgY29sb3I6ICRjb2xvci1jdGEtZGFyaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICAuZmF4IHtcbiAgICBcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICB9XG5cbiAgICAgLmFkZHJlc3Mge1xuICAgIFx0bWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuICAgIH1cbiAgICAuYnV0dG9uIHtcbiAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDIwKTtcbiAgICB9XG5cblx0LmNvbnRhY3QtaW5mbyB7XG5cdFx0cCB7XG4gICAgXHRcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDApO1xuICAgIFx0fVxuXHR9XG5cbn0iLCIvLyBjb250YWN0IGZvcm1cblxuLmNvbnRhY3QtZm9ybS1jb250YWluZXIge1xuICAgIC8vYmFja2dyb3VuZDogJGNvbG9yLWJhY2tncm91bmQtdGVydGlhcnk7IFxuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDQwIDQwKTtcbiAgIFxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNDAgMjApO1xuICAgIH1cblxuXG4gICAgLmNvbnRhY3QtZm9ybSB7XG4gICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDQwKTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgbWF4LXdpZHRoOiByZW0tY2FsYyg4NDApO1xuICAgICAgICBcblxuICAgICAgICBoMiB7XG4gICAgICAgICAgICAvL3RleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiByZW0tY2FsYygxNSk7IFxuICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMCk7IFxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMzApOyBcbiAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgfVxuICAgICAgICB9XG4gIFxuXG5cblxuICAgICAgICA6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgeyAvKiBXZWJLaXQgYnJvd3NlcnMgKi9cbiAgICAgICAgICAgIC8vY29sb3I6ICRjb2xvci1mb250LXRlcnRpYXJ5ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIDotbW96LXBsYWNlaG9sZGVyIHsgLyogTW96aWxsYSBGaXJlZm94IDQgdG8gMTggKi9cbiAgICAgICAgICAgIC8vY29sb3I6ICRjb2xvci1mb250LXRlcnRpYXJ5ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIDo6LW1vei1wbGFjZWhvbGRlciB7IC8qIE1vemlsbGEgRmlyZWZveCAxOSsgKi9cbiAgICAgICAgICAgIC8vY29sb3I6ICRjb2xvci1mb250LXRlcnRpYXJ5ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyAvKiBJbnRlcm5ldCBFeHBsb3JlciAxMCsgKi9cbiAgICAgICAgICAgIC8vY29sb3I6ICRjb2xvci1mb250LXRlcnRpYXJ5ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBbdHlwZT1jaGVja2JveF0ge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNSk7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiByZW0tY2FsYygxMyk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiByZW0tY2FsYygxMyk7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygxMCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1iYXNlLXNlY29uZGFyeTtcbiAgICAgICAgfVxuICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDExMCk7XG4gICAgICAgIH1cblxuICAgICAgICBbdHlwZT1lbWFpbF0sIFt0eXBlPXRlbF0sIFt0eXBlPXRleHRdLCBbdHlwZT13ZWVrXSwgdGV4dGFyZWEge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoNCk7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICAvL2JhY2tncm91bmQ6ICRjb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5O1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItYmFzZS1zZWNvbmRhcnk7XG4gICAgICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICB9XG5cblxuICAgIH1cbn1cblxuXG4ud3BjZjcge1xuICAgXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYmxhY2s7ICBcbiAgICAgICAgICAgIC8vZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIC8vZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgICAgIH1cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogJGJsYWNrOyAgXG4gICAgICAgIH1cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg1KTtcbiAgICAgICAgfVxuICBcblxuICAgIC53cGNmNy1saXN0LWl0ZW0uZmlyc3Qge1xuICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygxMCk7XG4gICAgfVxuICAgIC53cGNmNy1yZXNwb25zZS1vdXRwdXQge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gICAgLmJ1dHRvbiB7XG4gICAgICAgIC8vZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDMwKTtcbiAgICAgICAgLy9iYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbWFpbi1wcmltYXJ5O1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgbWF4LXdpZHRoOiByZW0tY2FsYygxODApO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMjAgMTAgMjAgMTApO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDQpO1xuICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMnB4IDRweCAwICM4NTg1ODU7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwICM4NTg1ODU7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgLy9iYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbWFpbi1wcmltYXJ5O1xuICAgICAgICAgICAgLy9jb2xvcjogJHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cblxuXG4uZ3JlY2FwdGNoYS1iYWRnZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn0iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVha3BvaW50c1xuLy8vL1xuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzLlxuLy8vIEB0eXBlIE1hcFxuJGJyZWFrcG9pbnRzOiAoXG4gIHNtYWxsOiAwLFxuICBtZWRpdW06IDY0MHB4LFxuICBsYXJnZTogMTAyNHB4LFxuICB4bGFyZ2U6IDEyMDBweCxcbiAgeHhsYXJnZTogMTQ0MHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIFRoZSBsYXJnZXN0IG5hbWVkIGJyZWFrcG9pbnQgaW4gd2hpY2ggdG8gaW5jbHVkZSBwcmludCBhcyBhIG1lZGlhIHR5cGVcbi8vLyBAdHlwZSBLZXl3b3JkXG4kcHJpbnQtYnJlYWtwb2ludDogbGFyZ2UgIWRlZmF1bHQ7XG5cbiQtemYtemVyby1icmVha3BvaW50OiBzbWFsbCAhZGVmYXVsdDtcblxuJC16Zi1icmVha3BvaW50cy1rZXlzOiBtYXAtdG8tbGlzdCgkYnJlYWtwb2ludHMsICdrZXlzJyk7XG5cbkBpZiBudGgobWFwLXZhbHVlcygkYnJlYWtwb2ludHMpLCAxKSAhPSAwIHtcbiAgQGVycm9yICdUaGUgZmlyc3Qga2V5IGluIHRoZSAkYnJlYWtwb2ludHMgbWFwIG11c3QgaGF2ZSBhIHZhbHVlIG9mIFwiMFwiLic7XG59XG5AZWxzZSB7XG4gICQtemYtemVyby1icmVha3BvaW50OiBudGgobWFwLWtleXMoJGJyZWFrcG9pbnRzKSwgMSk7XG59XG5cbi8vLyBBbGwgb2YgdGhlIG5hbWVzIGluIHRoaXMgbGlzdCB3aWxsIGJlIG91dHB1dCBhcyBjbGFzc2VzIGluIHlvdXIgQ1NTLCBsaWtlIGAuc21hbGwtMTJgLCBgLm1lZGl1bS02YCwgYW5kIHNvIG9uLiBFYWNoIHZhbHVlIGluIHRoaXMgbGlzdCBtdXN0IGFsc28gYmUgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcC5cbi8vLyBAdHlwZSBMaXN0XG4kYnJlYWtwb2ludC1jbGFzc2VzOiAoc21hbGwgbWVkaXVtIGxhcmdlKSAhZGVmYXVsdDtcblxuLy8vIEdlbmVyYXRlcyBhIG1lZGlhIHF1ZXJ5IHN0cmluZyBtYXRjaGluZyB0aGUgaW5wdXQgdmFsdWUuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gc2VlIHdoYXQgdGhlIHBvc3NpYmxlIGlucHV0cyBhcmUuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkdmFsIFtzbWFsbF0gLSBCcmVha3BvaW50IG5hbWUsIG9yIHB4LCByZW0sIG9yIGVtIHZhbHVlIHRvIHByb2Nlc3MuXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkdmFsOiAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAvLyBTaXplIG9yIGtleXdvcmRcbiAgJGJwOiBudGgoJHZhbCwgMSk7XG4gIC8vIFZhbHVlIGZvciBtYXgtd2lkdGggbWVkaWEgcXVlcmllc1xuICAkYnAtbWF4OiAwO1xuICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAkZGlyOiBpZihsZW5ndGgoJHZhbCkgPiAxLCBudGgoJHZhbCwgMiksIHVwKTtcbiAgLy8gRXZlbnR1YWwgb3V0cHV0XG4gICRzdHI6ICcnO1xuICAvLyBJcyBpdCBhIG5hbWVkIG1lZGlhIHF1ZXJ5P1xuICAkbmFtZWQ6IGZhbHNlO1xuXG4gIC8vIE9yaWVudGF0aW9uIG1lZGlhIHF1ZXJpZXMgaGF2ZSBhIHVuaXF1ZSBzeW50YXhcbiAgQGlmICRicCA9PSAnbGFuZHNjYXBlJyBvciAkYnAgPT0gJ3BvcnRyYWl0JyB7XG4gICAgQHJldHVybiAnKG9yaWVudGF0aW9uOiAjeyRicH0pJztcbiAgfVxuICBAZWxzZSBpZiAkYnAgPT0gJ3JldGluYScge1xuICAgIEByZXR1cm4gJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSknO1xuICB9XG5cbiAgLy8gVHJ5IHRvIHB1bGwgYSBuYW1lZCBicmVha3BvaW50IG91dCBvZiB0aGUgJGJyZWFrcG9pbnRzIG1hcFxuICBAaWYgdHlwZS1vZigkYnApID09ICdzdHJpbmcnIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnApIHtcbiAgICAgIEBpZiAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgICAgICRicC1tYXg6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRicCk7XG4gICAgICB9XG5cbiAgICAgICRicDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRicCk7XG4gICAgICAkbmFtZWQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRicDogMDtcbiAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IFwiI3skdmFsfVwiIGlzIG5vdCBkZWZpbmVkIGluIHlvdXIgJGJyZWFrcG9pbnRzIHNldHRpbmcuJztcbiAgICB9XG4gIH1cblxuICAvLyBDb252ZXJ0IGFueSBwaXhlbCwgcmVtLCBvciB1bml0bGVzcyB2YWx1ZSB0byBlbVxuICAkYnA6IC16Zi1icC10by1lbSgkYnApO1xuICAvLyBNYXggdmFsdWUgaXMgMC4ycHggdW5kZXIgdGhlIG5leHQgYnJlYWtwb2ludCAoMC4wMiAvIDE2ID0gMC4wMDEyNSkuXG4gIC8vIFVzZSBhIHByZWNpc2lvbiB1bmRlciAxcHggdG8gc3VwcG9ydCBicm93c2VyIHpvb20sIGJ1dCBub3QgdG8gbG93IHRvIGF2b2lkIHJvdW5kaW5nLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTEzMTNcbiAgQGlmICRicC1tYXgge1xuICAgICRicC1tYXg6IC16Zi1icC10by1lbSgkYnAtbWF4KSAtIC4wMDEyNTtcbiAgfVxuXG4gIC8vIENvbmRpdGlvbnMgdG8gc2tpcCBtZWRpYSBxdWVyeSBjcmVhdGlvblxuICAvLyAtIEl0J3MgYSBuYW1lZCBicmVha3BvaW50IHRoYXQgcmVzb2x2ZWQgdG8gXCIwIGRvd25cIiBvciBcIjAgdXBcIlxuICAvLyAtIEl0J3MgYSBudW1lcmljIGJyZWFrcG9pbnQgdGhhdCByZXNvbHZlZCB0byBcIjAgXCIgKyBhbnl0aGluZ1xuICBAaWYgJGJwID4gMGVtIG9yICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAvLyBgb25seWAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWluLXdpZHRoOiBuKSBhbmQgKG1heC13aWR0aDogbilgXG4gICAgQGlmICRkaXIgPT0gJ29ubHknIHtcbiAgICAgIC8vIE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBcIm9ubHlcIiByYW5nZVxuICAgICAgQGlmICRuYW1lZCA9PSB0cnVlIHtcbiAgICAgICAgLy8gT25seSB1c2UgXCJtaW4td2lkdGhcIiBpZiB0aGUgZmxvb3IgaXMgZ3JlYXRlciB0aGFuIDBcbiAgICAgICAgQGlmICRicCA+IDBlbSB7XG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWluLXdpZHRoOiAjeyRicH0pJztcblxuICAgICAgICAgIC8vIE9ubHkgYWRkIFwiYW5kXCIgdG8gdGhlIG1lZGlhIHF1ZXJ5IGlmIHRoZXJlJ3MgYSBjZWlsaW5nXG4gICAgICAgICAgQGlmICRicC1tYXggIT0gbnVsbCB7XG4gICAgICAgICAgICAkc3RyOiAkc3RyICsgJyBhbmQgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbmx5IHVzZSBcIm1heC13aWR0aFwiIGlmIHRoZXJlJ3MgYSBjZWlsaW5nXG4gICAgICAgIEBpZiAkYnAtbWF4ICE9IG51bGwge1xuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1heC13aWR0aDogI3skYnAtbWF4fSknO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBgb25seWAgcmFuZ2UuJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBgZG93bmAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWF4LXdpZHRoOiBuKWBcbiAgICBAZWxzZSBpZiAkZGlyID09ICdkb3duJyB7XG4gICAgICAkbWF4OiBpZigkbmFtZWQsICRicC1tYXgsICRicCk7XG5cbiAgICAgIC8vIFNraXAgbWVkaWEgcXVlcnkgY3JlYXRpb24gaWYgaW5wdXQgdmFsdWUgaXMgZXhhY3RseSBcIjAgZG93blwiLFxuICAgICAgLy8gdW5sZXNzIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkIGFzIFwic21hbGwgZG93blwiLCBpbiB3aGljaCBjYXNlIGl0J3MganVzdCBcInNtYWxsIG9ubHlcIlxuICAgICAgQGlmICRuYW1lZCBvciAkYnAgPiAwZW0ge1xuICAgICAgICBAaWYgJG1heCAhPSBudWxsIHtcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtYXgtd2lkdGg6ICN7JG1heH0pJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGB1cGAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWluLXdpZHRoOiBuKWBcbiAgICBAZWxzZSBpZiAkYnAgPiAwZW0ge1xuICAgICAgJHN0cjogJHN0ciArICcobWluLXdpZHRoOiAjeyRicH0pJztcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdHI7XG59XG5cbi8vLyBXcmFwcyBhIG1lZGlhIHF1ZXJ5IGFyb3VuZCB0aGUgY29udGVudCB5b3UgcHV0IGluc2lkZSB0aGUgbWl4aW4uIFRoaXMgbWl4aW4gYWNjZXB0cyBhIG51bWJlciBvZiB2YWx1ZXM6XG4vLy8gIC0gSWYgYSBzdHJpbmcgaXMgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBsb29rIGZvciBpdCBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLCBhbmQgdXNlIGEgbWVkaWEgcXVlcnkgdGhlcmUuXG4vLy8gIC0gSWYgYSBwaXhlbCB2YWx1ZSBpcyBwYXNzZWQsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGVtIHZhbHVlIHVzaW5nIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgYXMgdGhlIGJhc2UuXG4vLy8gIC0gSWYgYSByZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdW5pdCB3aWxsIGJlIGNoYW5nZWQgdG8gZW0uXG4vLy8gIC0gSWYgYW4gZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdmFsdWUgd2lsbCBiZSB1c2VkIGFzLWlzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbHVlIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuLy8vXG4vLy8gQG91dHB1dCBJZiB0aGUgYnJlYWtwb2ludCBpcyBcIjBweCBhbmQgbGFyZ2VyXCIsIG91dHB1dHMgdGhlIGNvbnRlbnQgYXMtaXMuIE90aGVyd2lzZSwgb3V0cHV0cyB0aGUgY29udGVudCB3cmFwcGVkIGluIGEgbWVkaWEgcXVlcnkuXG5AbWl4aW4gYnJlYWtwb2ludCgkdmFsdWUpIHtcbiAgJHN0cjogYnJlYWtwb2ludCgkdmFsdWUpO1xuICAkYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgJHZhbHVlKTtcbiAgJHBicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCAkcHJpbnQtYnJlYWtwb2ludCk7XG5cbiAgJG9sZC16Zi1zaXplOiBudWxsO1xuXG4gIC8vIE1ha2UgYnJlYWtwb2ludCBzaXplIGF2YWlsYWJsZSBhcyBhIHZhcmlhYmxlXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSB7XG4gICAgJG9sZC16Zi1zaXplOiAkLXpmLXNpemU7XG4gIH1cbiAgJC16Zi1zaXplOiBudGgoJHZhbHVlLCAxKSAhZ2xvYmFsOyAvLyBnZXQgdGhlIGZpcnN0IHZhbHVlIHRvIGFjY291bnQgZm9yIGBvbmx5YCBhbmQgYGRvd25gIGtleXdvcmRzXG5cbiAgLy8gSWYgJHN0ciBpcyBzdGlsbCBhbiBlbXB0eSBzdHJpbmcsIG5vIG1lZGlhIHF1ZXJ5IGlzIG5lZWRlZFxuICBAaWYgJHN0ciA9PSAnJyB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNvbnRlbnQgaW4gYSBtZWRpYSBxdWVyeVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAkcHJpbnQtYnJlYWtwb2ludCwgYWRkIHByaW50IHRvIHRoZSBtZWRpYSB0eXBlc1xuICAgIEBpZiAkYnAgIT0gbnVsbCBhbmQgJGJwIDw9ICRwYnAge1xuICAgICAgQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkLXpmLXNpemU6ICRvbGQtemYtc2l6ZSAhZ2xvYmFsO1xufVxuXG4vLy8gQ29udmVydHMgdGhlIGJyZWFrcG9pbnRzIG1hcCB0byBhIFVSTC1lbmNvZGVkIHN0cmluZywgbGlrZSB0aGlzOiBga2V5MT12YWx1ZTEma2V5Mj12YWx1ZTJgLiBUaGUgdmFsdWUgaXMgdGhlbiBkcm9wcGVkIGludG8gdGhlIENTUyBmb3IgYSBzcGVjaWFsIGA8bWV0YT5gIHRhZywgd2hpY2ggaXMgcmVhZCBieSB0aGUgRm91bmRhdGlvbiBKYXZhU2NyaXB0LiBUaGlzIGlzIGhvdyB3ZSB0cmFuc2ZlciB2YWx1ZXMgZnJvbSBTYXNzIHRvIEphdmFTY3JpcHQsIHNvIHRoZXkgY2FuIGJlIGRlZmluZWQgaW4gb25lIHBsYWNlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gY29udmVydC5cbi8vL1xuLy8vIEByZXR1cm5zIHtTdHJpbmd9IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG1hcCdzIGNvbnRlbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC1zZXJpYWxpemUoJG1hcCkge1xuICAkc3RyOiAnJztcbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAge1xuICAgICRzdHI6ICRzdHIgKyAka2V5ICsgJz0nICsgLXpmLWJwLXRvLWVtKCR2YWx1ZSkgKyAnJic7XG4gIH1cbiAgJHN0cjogc3RyLXNsaWNlKCRzdHIsIDEsIC0yKTtcblxuICBAcmV0dXJuICRzdHI7XG59XG5cbi8vLyBGaW5kIHRoZSBuZXh0IGtleSBpbiBhIG1hcC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHRyYXZlcnNlLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSB2YWx1ZSBmb3IgdGhlIGtleSBhZnRlciBgJGtleWAsIGlmIGAka2V5YCB3YXMgZm91bmQuIElmIGAka2V5YCB3YXMgbm90IGZvdW5kLCBvciBgJGtleWAgd2FzIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBtYXAsIHJldHVybnMgYG51bGxgLlxuQGZ1bmN0aW9uIC16Zi1tYXAtbmV4dCgkbWFwLCAka2V5KSB7XG5cbiAgLy8gU3RvcmUgdGhlIGtleXMgb2YgdGhlIG1hcCBhcyBhIGxpc3RcbiAgJHZhbHVlczogbWFwLWtleXMoJG1hcCk7XG5cbiAgJGk6IDA7XG5cbiAgLy8gSWYgdGhlIEtleSBFeGlzdHMsIEdldCB0aGUgaW5kZXggb2YgdGhlIGtleSB3aXRoaW4gdGhlIG1hcCBhbmQgYWRkIDEgdG8gaXQgZm9yIHRoZSBuZXh0IGJyZWFrcG9pbnQgaW4gdGhlIG1hcFxuICBAaWYgKG1hcC1oYXMta2V5KCRtYXAsICRrZXkpKSB7XG4gICAgJGk6IGluZGV4KCR2YWx1ZXMsICRrZXkpICsgMTtcbiAgfVxuXG4gIC8vIElmIHRoZSBrZXkgZG9lc24ndCBleGlzdCwgb3IgaXQncyB0aGUgbGFzdCBrZXkgaW4gdGhlIG1hcCwgcmV0dXJuIG51bGxcbiAgQGlmICgkaSA+IGxlbmd0aCgkbWFwKSBvciAkaSA9PSAwKSB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSB2YWx1ZVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsIG50aCgkdmFsdWVzLCAkaSkpO1xuICB9XG5cbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleSAtIEtleSB0byB1c2UgYXMgbGFzdCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1icmVha3BvaW50cy1sZXNzLXRoYW4oJGtleSkge1xuICAkbGlzdDogKCk7XG4gICRmb3VuZF9rZXk6IGZhbHNlO1xuXG4gIEBlYWNoICRuYW1lIGluICQtemYtYnJlYWtwb2ludHMta2V5cyB7XG4gICAgQGlmICgkbmFtZSA9PSAka2V5KSB7XG4gICAgICAkZm91bmRfa2V5OiB0cnVlO1xuICAgIH1cbiAgICBAaWYgbm90ICRmb3VuZF9rZXkge1xuICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJG5hbWUpO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4vLy8gUmV0dXJuIGEgbGlzdCBvZiBvdXIgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuICRrZXkuIFVzZWZ1bCBmb3IgZGVhbGluZyB3aXRoXG4vLy8gcmVzcG9uc2l2ZSBndXR0ZXJzIGZvciB0aGUgZ3JpZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCAtIGEgbmFtZWQgb3Igbm9uLW5hbWVkIGJyZWFrcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7QXJyYXl9IFRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIHVwIHRvIGFuZC4gSWYgJGtleSBpcyBhdXRvLCByZXR1cm5zIGJyZWFrcG9pbnRzIGFib3ZlIHRoZSB6ZXJvXG5AZnVuY3Rpb24gLXpmLWNsb3Nlc3QtbmFtZWQtYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xuICAkbGFzdDogJC16Zi16ZXJvLWJyZWFrcG9pbnQ7XG4gICRmb3VuZDogZmFsc2U7XG5cbiAgJHZhbHVlOiB1bml0bGVzcy1jYWxjKCRicmVha3BvaW50LCAxcHgpO1xuICBAZWFjaCAka2V5LCAkdmFsIGluICRicmVha3BvaW50cyB7XG4gICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgQGlmIHVuaXRsZXNzLWNhbGMoJHZhbCkgPiAkdmFsdWUge1xuICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGxhc3Q6ICRrZXk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbGFzdDtcbn1cblxuLy8vIEdldCBhIHZhbHVlIGZvciBhIGJyZWFrcG9pbnQgZnJvbSBhIHJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgc2luZ2xlIHZhbHVlLCByZXR1cm4gaXQgcmVnYXJkbGVzcyBvZiBgJHZhbHVlYC5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBtYXAgYW5kIGhhcyB0aGUga2V5IGAkdmFsdWVgLCB0aGUgZXhhY3QgYnJlYWtwb2ludCB2YWx1ZSBpcyByZXR1cm5lZC5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBtYXAgYW5kIGRvZXMgKm5vdCogaGF2ZSB0aGUgYnJlYWtwb2ludCwgdGhlIHZhbHVlIG1hdGNoaW5nIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGluIHRoZSBjb25maWcgbWFwIGlzIHJldHVybmVkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFwIC0gUmVzcG9uc2l2ZSBjb25maWcgbWFwIG9yIHNpbmdsZSB2YWx1ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSB0byB1c2UuXG4vLy9cbi8vLyBAcmV0dXJuIHtNaXhlZH0gVGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZS5cbkBmdW5jdGlvbiAtemYtZ2V0LWJwLXZhbCgkbWFwLCAkdmFsdWUpIHtcbiAgLy8gSWYgdGhlIGdpdmVuIG1hcCBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0XG4gIEBpZiB0eXBlLW9mKCRtYXApID09ICdudW1iZXInIHtcbiAgICBAcmV0dXJuICRtYXA7XG4gIH1cblxuXG4gIC8vIENoZWNrIGlmIHRoZSBicmVha3BvaW50IG5hbWUgZXhpc3RzIGdsb2JhbGx5XG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogLXpmLWNsb3Nlc3QtbmFtZWQtYnJlYWtwb2ludCgkdmFsdWUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBpbiB0aGUgbG9jYWwgY29uZmlnIG1hcFxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkbWFwLCAkdmFsdWUpIHtcbiAgICAvLyBJZiBpdCBkb2VzLCBqdXN0IHJldHVybiB0aGUgdmFsdWVcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJHZhbHVlKTtcbiAgfVxuICAvLyBPdGhlcndpc2UsIGZpbmQgdGhlIG5leHQgbG93ZXN0IGJyZWFrcG9pbnQgYW5kIHJldHVybiB0aGF0IHZhbHVlXG4gIEBlbHNlIHtcbiAgICAkYW5jaG9yOiBudWxsO1xuICAgICRmb3VuZDogZmFsc2U7XG5cbiAgICBAZWFjaCAka2V5LCAkdmFsIGluICRicmVha3BvaW50cyB7XG4gICAgICBAaWYgbm90ICRmb3VuZCB7XG4gICAgICAgIEBpZiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KSB7XG4gICAgICAgICAgJGFuY2hvcjogJGtleTtcbiAgICAgICAgfVxuICAgICAgICBAaWYgJGtleSA9PSAkdmFsdWUge1xuICAgICAgICAgICRmb3VuZDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkYW5jaG9yKTtcbiAgfVxufVxuXG4kc21hbGwtdXA6ICcnO1xuJHNtYWxsLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBzbWFsbCkge1xuICAkc21hbGwtdXA6IHNjcmVlbjtcbiAgJHNtYWxsLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHNtYWxsIG9ubHkpfScpO1xufVxuXG4kbWVkaXVtLXVwOiAnJztcbiRtZWRpdW0tb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xuICAkbWVkaXVtLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfScpO1xuICAkbWVkaXVtLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSBvbmx5KX0nKTtcbn1cblxuJGxhcmdlLXVwOiAnJztcbiRsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbGFyZ2UpIHtcbiAgJGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSl9Jyk7XG4gICRsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX0nKTtcbn1cblxuJHhsYXJnZS11cDogJyc7XG4keGxhcmdlLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4bGFyZ2UpIHtcbiAgJHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlKX0nKTtcbiAgJHhsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4eGxhcmdlLXVwOiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeHhsYXJnZSkge1xuICAkeHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeHhsYXJnZSl9Jyk7XG59XG4iLCIvLyBiZW5lZml0c1xuXG5cbi5iZW5lZml0cy1jb250YWluZXIge1xuXG4gICAgLy9tYXgtd2lkdGg6IDg3LjVyZW07XG4gICAgLy9tYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBtYXJnaW46IHJlbS1jYWxjKDQ4KSBhdXRvO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAvKnBhZGRpbmctcmlnaHQ6IC45Mzc1cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IC45Mzc1cmVtOyovXG4gICAgfVxuICAgIC5iZW5lZml0cy1oZXJvIHtcbiAgICAgICAgLy9wYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgLy9wYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoMCk7XG4gICAgICAgICAgICAvL3BhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICAvL3BhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjVzIGVhc2U7XG4gICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJlbmVmaXRzLWNvbnRlbnQge1xuICAgIFx0cGFkZGluZzogcmVtLWNhbGMoMzAgMjAgMzAgMjApO1xuICAgICAgICAvL3BhZGRpbmctbGVmdDogcmVtLWNhbGMoMjApO1xuICAgICAgICAvL3BhZGRpbmctcmlnaHQ6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXG5cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7IFxuICAgICAgICAgICAgJi5mdWxsLXdpZHRoLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiByZW0tY2FsYygyNCk7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogcmVtLWNhbGMoMTM2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cblxuICAgICAgICAuYmVuZWZpdHMtaW50cm8ge1xuICAgICAgICAgICAgLy9tYXJnaW4tdG9wOiByZW0tY2FsYyg1MCk7XG4gICAgICAgICAgICBoMiB7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gXG5cbiAgICAgICAgLmJlbmVmaXRzIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcbiAgICAgICAgICAgIC5iZW5lZml0IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygxMCk7XG4gICAgICAgICAgICAgICAgLy9tYXJnaW4tYm90dG9tOiByZW0tY2FsYygxMCk7XG4gICAgICAgICAgICAgICAgaSB7XG4gICAgICAgICAgICAgICAgICAgIC8vY29sb3I6ICRjb2xvci1mb250LXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMjApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG59XG5cblxuXG5cbiIsIi8vIHBhcmFsbGF4XG5cbi5wYXJhbGxheC13aW5kb3cge1xuICAgIG1pbi1oZWlnaHQ6IHJlbS1jYWxjKDQ1MCk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoODApO1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDApO1xuXG5cdC5wYXJhbGxheC1jb250ZW50IHtcblx0XHRtYXgtd2lkdGg6IHJlbS1jYWxjKDg1MCk7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgXHRwYWRkaW5nLXJpZ2h0OiByZW0tY2FsYygyMCk7XG4gICAgXHRwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDIwKTtcblxuICAgIFx0aDIge1xuICAgIFx0XHR0ZXh0LXNoYWRvdzogMCAxcHggM3B4ICM0NTQ1NDU7XG4gICAgXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHsgXG4gICAgXHRcdFx0Zm9udC1zaXplOiByZW0tY2FsYygzOCk7XG4gICAgXHRcdH1cbiAgICBcdH1cblxuXHRcdC5jb250ZW50IHtcblx0XHRcdHRleHQtc2hhZG93OiAwIDFweCAzcHggIzQ1NDU0NTtcdFx0XG5cdFx0fVxuXG5cdFx0LmJ1dHRvbiB7XG5cdFx0XHRtYXJnaW4tdG9wOiByZW0tY2FsYygyMCk7XG5cdFx0XHRwYWRkaW5nOiByZW0tY2FsYygxOCAxMCk7XG5cdFx0XHR3aWR0aDogcmVtLWNhbGMoMTgwKTsgXG5cdFx0XHRcblx0XHR9XG5cblx0fVxuXG59IiwiLy8gcmVjZW50IGFydGljbGVzXG5cbnNlY3Rpb24ubGF0ZXN0LW5ld3Mtc2VjdGlvbiB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1iYWNrZ3JvdW5kLWdyZXk7XG5cdHBhZGRpbmc6IHJlbS1jYWxjKDQwKSAwO1xuXHQjbGF0ZXN0LW5ld3Mge1xuXG5cdFx0bWFyZ2luLXRvcDogcmVtLWNhbGMoMTYpO1xuXHRcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE2KTtcblx0XHRcblxuXHRcdGgyIHtcblx0XHRcdC8vZm9udC1zaXplOiByZW0tY2FsYygzNik7XG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG5cdFx0XHRcdC8vZm9udC1zaXplOiByZW0tY2FsYyg0NCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXG5cdFx0LmxhdGVzdC1uZXdzIHtcblx0XHRcdC8vYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMDtcblxuXHRcdCAgICAuYXJ0aWNsZSB7XG5cdFx0XHRcdC8vYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMDtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDIwKTtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogcmVtLWNhbGMoMjApO1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0Ly9oZWlnaHQ6IHJlbS1jYWxjKDM1MCk7XG5cblx0XHRcdFx0LmltYWdlIHtcblx0XHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMwKTtcblx0XHRcdFx0XHRhc3BlY3QtcmF0aW86IDggLyA1O1xuXHRcdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdFx0XHRcdG9iamVjdC1maXQ6IGNvdmVyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGg0IHtcblx0XHRcdFx0XHRtaW4taGVpZ2h0OiByZW0tY2FsYygxMDApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC5jb250ZW50IHtcblx0XHRcdFx0XHRtaW4taGVpZ2h0OiByZW0tY2FsYygxMDApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC5idXR0b24ge1xuXHRcdFx0XHRcdFx0Ly9wb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0XHRsZWZ0OiAwOyBcblx0XHRcdFx0XHRcdHJpZ2h0OiAwOyBcblx0XHRcdFx0XHRcdGJvdHRvbTogcmVtLWNhbGMoMTApO1xuXHRcdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87IFxuXHRcdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRcdFx0XHRcdFx0d2lkdGg6IHJlbS1jYWxjKDE4MCk7IFxuXHRcdFx0XHRcdFx0cGFkZGluZzogcmVtLWNhbGMoMTIgMTApO1xuXHRcdFx0XHRcdFx0LXdlYmtpdC1ib3gtc2hhZG93OiAwIDJweCA0cHggMCAjODU4NTg1O1xuXHQgICAgICAgIFx0XHRcdGJveC1zaGFkb3c6IDAgMnB4IDRweCAwICM4NTg1ODU7XG5cdFx0XHRcdH1cblxuXG5cdFx0ICAgIH1cblxuXHRcdH1cblxuXG5cdFx0LmJ1dHRvbi1zb2xpZCB7XG5cdFx0XHRtYXgtd2lkdGg6IHJlbS1jYWxjKDMwMCk7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdHBhZGRpbmc6IHJlbS1jYWxjKDE1IDEwKTtcblx0XHRcdC13ZWJraXQtYm94LXNoYWRvdzogMCAycHggNHB4IDAgIzg1ODU4NTtcblx0ICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCAjODU4NTg1O1xuXHRcdH1cblxuXHR9XG5cbn1cblxuIiwiLy8gVGVzdGltb25pYWxzIFBhcnRpYWxcblxuXG4jdGVzdGltb25pYWxzIHtcblx0Ly9wYWRkaW5nLXRvcDogcmVtLWNhbGMoMzApO1xuXHQvL3BhZGRpbmctYm90dG9tOiByZW0tY2FsYygzMCk7XG5cdG1hcmdpbi10b3A6IHJlbS1jYWxjKDQwKTtcblx0bWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNDApO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFxuXHRoMiB7XG5cdFx0bWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuXHRcdC8vY29sb3I6ICRjb2xvci1iYXNlLXNlY29uZGFyeTtcblx0XHRcblx0fVxuXG5cdC50ZXN0aW1vbmlhbHMge1xuXHRcdC8vbWF4LXdpZHRoOiByZW0tY2FsYygxMDAwKTtcblx0XHQvL21hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdC8vbWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRcdC50ZXN0aW1vbmlhbCB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg0MCk7XG5cdFx0XHRtYXJnaW4tbGVmdDogcmVtLWNhbGMoMjApO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiByZW0tY2FsYygyMCk7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoNDApO1xuXHRcdFx0YSB7XG5cdFx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTsgXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC5pbWFnZSB7XG5cdFx0XHRcdC8vYm9yZGVyOiAxcHggc29saWQgIzAwMDtcblx0XHRcdFx0LyptYXgtaGVpZ2h0OiA2NDBweDtcblx0XHRcdFx0bWF4LXdpZHRoOiA2NDBweDsqL1xuXHRcdFx0XHRwYWRkaW5nOiByZW0tY2FsYygyMCAyMCk7XG5cdFx0XHRcdFxuXHRcdFx0ICAgIGhlaWdodDogMTMycHg7XG5cdFx0XHQgICAgd2lkdGg6IDEzMnB4O1xuXHRcdFx0ICAgIHBhZGRpbmc6IDA7XG5cdFx0XHQgICAgYm9yZGVyLXJhZGl1czogMzAwcHg7XG5cdFx0XHQgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdCAgICBtYXJnaW46IDAgYXV0byAxNnB4O1xuXG5cdFx0XG5cdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0bWF4LWhlaWdodDogcmVtLWNhbGMoMTUwKTtcblx0XHRcdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdFx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdFx0XHRcdFx0LypoZWlnaHQ6IDY0MHB4O1xuXHRcdFx0XHRcdHdpZHRoOiA2NDBweDsqL1x0XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC5jb250ZW50IHtcblx0XHRcdFx0LXdlYmtpdC1ib3gtc2hhZG93OiAwIDJweCAxMHB4IDAgIzg1ODU4NTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAycHggMTBweCAwICM4NTg1ODU7XG5cdFx0XHRcdHBhZGRpbmc6IHJlbS1jYWxjKDMwIDI1IDkwIDI1KTtcblx0XHRcdFx0IFxuXHRcdFx0XHRoZWlnaHQ6IHJlbS1jYWxjKDM1MCk7XG5cdFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXG5cdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7IFxuXHRcdFx0XHRcdGhlaWdodDogcmVtLWNhbGMoMzkwKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdFxuXG5cdFx0XHRcdC5leGNlcnB0LXdyYXBwZXIge1xuXHRcdFx0XHRcdC8vbWF4LWhlaWdodDogcmVtLWNhbGMoMjUwKTtcblx0XHRcdFx0XHQvL292ZXJmbG93OiBoaWRkZW47XG5cdFx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBcdFx0XHR0b3A6IDUwJTtcbiAgICAgICAgXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXG5cdFx0XHRcdH1cblxuXG5cdFx0XHRcdC5uYW1lLW9yZ2FuaXNhdGlvbi13cmFwcGVyIHtcblx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0bGVmdDogMDsgXG5cdFx0XHRcdFx0cmlnaHQ6IDA7IFxuXHRcdFx0XHRcdGJvdHRvbTogcmVtLWNhbGMoMjApO1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvOyBcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87IFxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdC5uYW1lIHtcblx0XHRcdFx0XHRcdG1hcmdpbi10b3A6IHJlbS1jYWxjKDIwKTtcblx0XHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHRcdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQub3JnYW5pc2F0aW9uIHtcblx0XHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHRcdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XG5cdFx0XHR9XG5cblx0XHRcblx0XHRcblxuXHRcdFxuXG5cdFx0fVxuXG5cdH1cblx0XHRcblx0LmJ1dHRvbi1zb2xpZCB7XG5cdFx0bWF4LXdpZHRoOiByZW0tY2FsYygzMDApO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IHJlbS1jYWxjKDE1IDEwKTtcblx0XHQtd2Via2l0LWJveC1zaGFkb3c6IDAgMnB4IDRweCAwICM4NTg1ODU7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwICM4NTg1ODU7XG5cdH1cblxufVxuXG5cblxuXG4iLCIvLyBmZWF0dXJlc1xuXG4uZmVhdHVyZXMtY29udGFpbmVyIHtcblx0cGFkZGluZy1sZWZ0OiAwO1xuXHRwYWRkaW5nLXJpZ2h0OiAwO1xuLmZlYXR1cmVzIHtcblx0bWFyZ2luLXRvcDogcmVtLWNhbGMoNDApO1xuXHQvL21hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcblxuXHRcdC5mZWF0dXJlIHtcblxuXHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHsgXG5cdFx0XHRcdC8vbWF4LWhlaWdodDogcmVtLWNhbGMoOTAwKTtcblx0XHRcdH1cblxuXHRcdFxuXHRcdFx0LmNvbnRlbnQge1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogcmVtLWNhbGMoNTApO1xuXHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoMzApO1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDIwKTtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogcmVtLWNhbGMoMjApO1xuXG5cdFx0XHRcdC5mZWF0dXJlZC1jb250ZW50IHtcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdFx0dG9wOiA1MCU7XG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0XHR9XG5cblxuXHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkgeyBcblx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDQwKTtcblx0XHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiByZW0tY2FsYyg0MCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7IFxuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDogcmVtLWNhbGMoNjApO1xuXHRcdFx0XHRcdHBhZGRpbmctcmlnaHQ6IHJlbS1jYWxjKDYwKTtcblxuXHRcdFx0XHRcdC5mdWxsLXdpZHRoLWNvbnRhaW5lciB7XG5cdFx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDEzNik7XG5cdFx0XHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiByZW0tY2FsYygyNCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aDIge1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygzMCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXG5cdFx0XHQuaW1hZ2Uge1xuXHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHRpbWcge1xuXHRcdFx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNXMgZWFzZTtcblx0XHRcdFx0XHRvYmplY3QtZml0OiBjb3Zlcjtcblx0XHQgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cdFx0ICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cdFx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdCY6bnRoLW9mLXR5cGUoZXZlbikge1xuXHRcdFx0XHQuaW1hZ2Uge1xuXHRcdFx0XHRcdG9yZGVyOiAxO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC5jb250ZW50IHsgXG5cdFx0XHRcdFx0b3JkZXI6IDI7XG5cblxuXHRcdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHsgXG5cdFx0XHRcdFx0XHQuZnVsbC13aWR0aC1jb250YWluZXIge1xuXHRcdFx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDI0KTtcblx0XHRcdFx0XHRcdFx0cGFkZGluZy1yaWdodDogcmVtLWNhbGMoMTM2KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuXHRcdFx0XHQmOm50aC1vZi10eXBlKG9kZCkge1xuXHRcdFx0XHRcdC5pbWFnZSB7XG5cdFx0XHRcdFx0XHRvcmRlcjogMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0LmNvbnRlbnQgeyBcblx0XHRcdFx0XHRcdG9yZGVyOiAyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cblx0XHR9XG5cdH1cblx0XHRcbn1cblxuXG4iLCIvLyBmYXFzXG5cblxuLmZhcS1jb250YWluZXIge1xuXHRtYXJnaW4tdG9wOiByZW0tY2FsYyg0MCk7XG5cdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcblxuXHRoMiB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMwKTtcblx0fVxuXG5cdGxpIHtcblx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygxMCk7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGNvbG9yLWJhc2Utc2Vjb25kYXJ5O1xuXG5cdFx0LmFjY29yZGlvbi10aXRsZSB7XG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdW5zZXQ7XG5cdFx0XHR9XG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdW5zZXQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmFjY29yZGlvbi10aXRsZTpiZWZvcmUge1xuXHRcdFx0Y29sb3I6ICRibGFjaztcblx0XHRcdGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuXHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0XHRtYXJnaW4tdG9wOiByZW0tY2FsYygtOSk7XG5cdFx0fVxuXHRcdGEge1xuXHRcdFx0Ly9mb250LXNpemU6IHJlbS1jYWxjKDE2KTtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IHJlbS1jYWxjKDQwKTtcblx0XHR9XG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDEwKTtcblx0XHRcdC8vbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMzUpO1xuXHRcdFx0Ly9mbG9hdDogbGVmdDtcblx0XHR9XG5cdH1cblxuXHRcdFxufVxuXG5cblxuXG4iLCIvLyB2aWRlb1xuXG5cbi52aWRlby1jb250YWluZXIge1xuXHRtYXJnaW4tdG9wOiByZW0tY2FsYyg0MCk7XG5cdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcblxuXHRoMiB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMwKTtcblx0fVxuXG5cdC5idXR0b24ge1xuXHRcdHBhZGRpbmc6IHJlbS1jYWxjKDIwIDMwKTtcblx0XHRtYXJnaW4tdG9wOiByZW0tY2FsYyg0MCk7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRcdG1heC13aWR0aDogcmVtLWNhbGMoMjQwKTtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0LXdlYmtpdC1ib3JkZXItcmFkaXVzOiByZW0tY2FsYyg4KTtcblx0XHRib3JkZXItcmFkaXVzOiByZW0tY2FsYyg4KTtcblx0XHQtd2Via2l0LWJveC1zaGFkb3c6IDAgMnB4IDRweCAwICNBMUExQTE7XG5cdFx0Ym94LXNoYWRvdzogMCAycHggNHB4IDAgI0ExQTFBMTtcblx0XHQmOmhvdmVyIHtcblxuXHRcdH1cblx0fVxuXG5cblxuXHRcdFxufVxuXG5cblxuXG4iLCIvLyBmZWF0dXJlc1xuXG4jbG9nby1jYXJvdXNlbCB7XG5cdCBtYXJnaW46IHJlbS1jYWxjKDQ4KSBhdXRvO1xuXG5cdGgyIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNDApO1xuXHR9XG5cblx0LmxvZ28tY2Fyb3VzZWwge1xuXHRcdC5sb2dvIHtcblx0XHRcdGFzcGVjdC1yYXRpbzogMyAvIDI7XG5cdFx0XHRwYWRkaW5nOiAyMHB4O1xuXHRcdFx0aW1nIHtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdFx0b2JqZWN0LWZpdDogY29udGFpbjtcblx0XHRcdFx0dHJhbnNpdGlvbjogYWxsIC41cyBlYXNlO1xuXHRcdFx0XHRzY2FsZTogMC45O1xuXHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRzY2FsZTogMS4wO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdH1cblxuXHQuc2xpY2stdHJhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLnNsaWNrLXRyYWNrIC5zbGljay1zbGlkZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogMTAwJSA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXHRcdFxufVxuXG4iLCIvLyBTb2NpYWxcblxuLnNvY2lhbC1jb250YWluZXIge1xuICAgIC5zb2NpYWwge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDE1KTsgIFxuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgYSB7XG4gICAgICAgICAgIGkge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygzMCk7IFxuICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59Il19 */
