/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}template,[hidden]{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:0.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}html{font-size:100%;line-height:.25em}button{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;appearance:none;background:none;border:none;padding:0;margin:0;cursor:pointer;font-family:"Exo 2",Helvetica,Arial,sans-serif}.button{cursor:pointer;font-family:"Exo 2",Helvetica,Arial,sans-serif}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}@-ms-viewport{width:device-width}html{font-size:16px;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{font-size:16px;line-height:24px;font-family:"Titillium Web",Helvetica,Arial,sans-serif;color:#dbddff;background-color:#000}[tabindex="-1"]:focus{outline:none !important}h1,h2,h3,h4,h5,h6{margin-top:0}p{margin-top:0;margin-bottom:12px}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #000}address{margin-bottom:12px;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:12px}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}a{color:#dbddff;text-decoration:none}a:focus,a:hover{color:#fff;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:none}pre{margin-top:0;margin-bottom:12px;overflow:auto}figure{margin:0 0 12px}img{vertical-align:middle;display:block;margin:0;max-width:100%}[role="button"]{cursor:pointer}a,area,button,[role="button"],input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}th{text-align:left}label{display:inline-block}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,textarea{margin:0;line-height:inherit;border-radius:0}input[type="radio"]:disabled,input[type="checkbox"]:disabled{cursor:not-allowed}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:8px;font-size:24px;line-height:inherit}output{display:inline-block}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:24px;font-family:"Exo 2",Helvetica,Arial,sans-serif;font-weight:600;color:#fff;text-transform:uppercase}h1,.h1{font-size:37px;line-height:32px;font-weight:300}h2,.h2{font-size:26px;line-height:32px}@media (min-width: 960px){h2,.h2{font-size:37px;line-height:40px}}small,.small{font-size:80%;font-weight:normal}@font-face{font-family:'icomoon';src:url("../fonts/icomoon.eot?xh2q0q");src:url("../fonts/icomoon.eot?xh2q0q#iefix") format("embedded-opentype"),url("../fonts/icomoon.ttf?xh2q0q") format("truetype"),url("../fonts/icomoon.woff?xh2q0q") format("woff"),url("../fonts/icomoon.svg?xh2q0q#icomoon") format("svg");font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"],.footer-group.accordion-group span:after,.absolute-bottom-footer__legal-title:after{font-family:'icomoon' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-close:before{content:"\f00d"}.icon-remove:before{content:"\f00d"}.icon-times:before{content:"\f00d"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-arrow-left:before{content:"\e900"}.icon-arrow-right:before{content:"\e901"}.icon-paper:before{content:"\e902"}.icon-play:before{content:"\e903"}@media (max-width: 959px){.sliding-panel-content{position:fixed;top:0;right:auto;bottom:0;left:0;height:100%;width:100%;-webkit-overflow-scrolling:touch;overflow-y:auto;-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transition:all 0.25s linear;transition:all 0.25s linear;z-index:999999}.sliding-panel-content.is-visible{-webkit-transform:translateX(0);transform:translateX(0)}.sliding-panel-fade-screen{position:fixed;top:0;right:0;bottom:0;left:0;background:black;opacity:0;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;visibility:hidden;z-index:999998}.sliding-panel-fade-screen.is-visible{opacity:0.4;visibility:visible}}@media all{.featherlight{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:2147483647;text-align:center;white-space:nowrap;cursor:pointer;background:#333;background:transparent}.featherlight:last-of-type{background:rgba(0,0,0,0.8)}.featherlight:before{content:'';display:inline-block;height:100%;vertical-align:middle;margin-right:-0.25em}.featherlight .featherlight-content{position:relative;text-align:left;vertical-align:middle;display:inline-block;overflow:hidden;padding:25px 25px 0;border-bottom:25px solid transparent;margin-left:5%;margin-right:5%;max-height:95%;background:rgba(0,0,0,0.2);cursor:auto;white-space:normal}.featherlight .featherlight-inner{display:block}.featherlight .featherlight-close-icon{position:absolute;z-index:9999;top:0;right:0;line-height:25px;width:25px;cursor:pointer;text-align:center;font-family:Arial, sans-serif;color:#ffe537}.featherlight .featherlight-image{width:100%}.featherlight-iframe .featherlight-content{border-bottom:0;padding:0}.featherlight iframe{border:none}.featherlight *{box-sizing:border-box}}@media only screen and (max-width: 1024px){.featherlight .featherlight-content{margin-left:10px;margin-right:10px;max-height:98%;padding:10px 10px 0;border-bottom:10px solid transparent}}@media (min-width: 1140px){.container{max-width:1921px;margin-left:auto;margin-right:auto}.container:after{content:" ";display:block;clear:both}}body{background:url("../img/footer_bg.jpg") 50% 100%/contain no-repeat,url("../img/bg.jpg") 0 0 repeat}.header{position:relative;padding:175px 12px 0;height:700px;background:url("../img/header_bg.jpg") 50% 0 no-repeat;text-align:center;background-size:768px}.header::after{clear:both;content:"";display:table}@media (min-width: 768px){.header{background-size:contain}}@media (min-width: 960px){.header{padding-top:490px;height:1100px;background-size:auto}}.nav-button{position:absolute;top:50px;left:12px;padding:0;color:#ffe537;font-size:14px}.nav-button__icon{display:inline-block;margin:0 4px 0 0;width:20px;height:17.5px;background:url("../img/menu_icon.png") 0 0 no-repeat;background-size:20px 17.5px}@media (min-width: 960px){.nav-button{display:none}}.prevent-scroll{overflow:hidden}.nav__list{list-style:none;margin:0;text-align:left;padding:130px 24px 0;height:100%;background:rgba(0,0,0,0.85)}@media (min-width: 960px){.nav__list{background:rgba(0,0,0,0.1);padding:0 182px 0 35px;position:absolute;top:0;height:60px;left:0;right:0;border-bottom:1px solid rgba(0,0,0,0.6)}}@media (min-width: 960px){.nav__list-item{margin-right:30px;display:inline-block;line-height:60px}}.nav__list-item-link{padding:30px 0;display:block}.nav__list-item-link:hover{color:#ffe537}@media (min-width: 960px){.nav__list-item-link{padding:0}}.nav__list-item-link-other{color:#ffe537;display:block;padding:30px 0}@media (min-width: 960px){.nav__list-item-link-other{padding:0}}.nav__close-btn{position:absolute;top:45px;right:12px;font-size:150%}.nav__close-btn i{color:#ffe537}@media (min-width: 960px){.nav__close-btn{display:none}}.header__shop-btn{display:none}@media (min-width: 960px){.header__shop-btn{position:absolute;top:0;right:0;display:block;border:2px solid #ffe537;font-family:"Exo 2",Helvetica,Arial,sans-serif;padding:16px 60px;text-transform:uppercase;font-size:18px;font-weight:bold;background-color:#ffe537;color:#070b1b}.header__shop-btn:hover{background-color:transparent;text-decoration:none;color:#ffe537}}.logo{position:absolute;top:32px;left:50%;width:188px;height:59px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:1000000}@media (min-width: 960px){.logo{width:432px;height:133px;top:350px}}.logo__img{width:100%;height:auto}.hero__desc{clear:both}@media (min-width: 768px){.hero__desc{width:630px;margin-right:auto;margin-left:auto;font-size:18px;line-height:28px}}@media (min-width: 960px){.hero__desc{margin-bottom:80px}}.hero__desc--mobile{display:block}@media (min-width: 960px){.hero__desc--mobile{display:none}}.hero__desc--desktop{display:none}@media (min-width: 960px){.hero__desc--desktop{display:block}}.hero__play{display:block;clear:both;width:90px;height:90px;margin:0 auto 240px;position:relative;border-radius:50%;-webkit-transition:-webkit-transform ease-out 0.1s;transition:-webkit-transform ease-out 0.1s;transition:transform ease-out 0.1s;transition:transform ease-out 0.1s, -webkit-transform ease-out 0.1s}.hero__play:after{top:0;left:0;padding:0;z-index:-1;box-shadow:0 0 0 2px rgba(255,255,255,0.1);opacity:0;-webkit-transform:scale(0.9);transform:scale(0.9);pointer-events:none;position:absolute;width:100%;height:100%;border-radius:50%;content:'';box-sizing:content-box}.hero__play:hover{text-decoration:none;-webkit-transform:scale(0.93);transform:scale(0.93)}.hero__play:hover:after{-webkit-animation:sonarEffect 1.3s ease-out 75ms;animation:sonarEffect 1.3s ease-out 75ms}@-webkit-keyframes sonarEffect{0%{opacity:0.3}40%{opacity:0.5;box-shadow:0 0 0 2px rgba(255,255,255,0.1),0 0 10px 10px rgba(0,0,0,0.3),0 0 0 10px rgba(255,255,255,0.5)}100%{box-shadow:0 0 0 2px rgba(255,255,255,0.1),0 0 10px 10px rgba(0,0,0,0.3),0 0 0 10px rgba(255,255,255,0.5);-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}@keyframes sonarEffect{0%{opacity:0.3}40%{opacity:0.5;box-shadow:0 0 0 2px rgba(255,255,255,0.1),0 0 10px 10px rgba(0,0,0,0.3),0 0 0 10px rgba(255,255,255,0.5)}100%{box-shadow:0 0 0 2px rgba(255,255,255,0.1),0 0 10px 10px rgba(0,0,0,0.3),0 0 0 10px rgba(255,255,255,0.5);-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}.hero__play-bg{position:absolute;top:0;left:0;width:90px;height:90px;background-image:url("../img/header_play_btn_bg.png");mix-blend-mode:overlay}.icon-play{color:#fff;font-size:400%;line-height:90px}.section{padding:0 12px;text-align:center;margin-bottom:60px}@media (min-width: 960px){.section{padding:0 30px}}.newsletter__form{position:relative}@media (min-width: 768px){.newsletter__form{width:432px;margin-left:auto;margin-right:auto}}.newsletter__form-email{background-color:#ffe537;border:none;width:100%;padding:12px 122px 12px 12px}.newsletter__submit-btn{background-color:#000;border:none;color:#ffe537;padding:11px 16px;position:absolute;top:1px;right:1px;text-transform:uppercase}.section__desc{margin-bottom:24px}@media (min-width: 768px){.section__desc{width:650px;margin-left:auto;margin-right:auto;font-size:18px;line-height:28px;margin-bottom:60px}}.section-assemble-fleet{background-position:50% 0;background-repeat:no-repeat;background-image:url("../img/assemble-your-fleet.jpg");background-size:cover;-webkit-transition:background-image 0.3s ease-out;transition:background-image 0.3s ease-out;padding-top:60px;padding-bottom:60px;margin-bottom:0;border-bottom:1px solid rgba(255,255,255,0.05);border-top:1px solid rgba(255,255,255,0.05)}@media (min-width: 1400px){.section-assemble-fleet{padding-top:175px}}@media (min-width: 1400px){.section-assemble-fleet .section__desc{margin-bottom:470px}}.section-assemble-fleet__list{list-style:none;padding:0;margin:0}.section-assemble-fleet__list::after{clear:both;content:"";display:table}@media (min-width: 960px){.section-assemble-fleet__list{padding:0 13.58025%}}@media (min-width: 1400px){.section-assemble-fleet__list{padding:0}}@media (min-width: 1921px){.section-assemble-fleet__list{padding:0 13.58025%}}.section-assemble-fleet__list-item{margin:0 auto 16px;display:block}@media (min-width: 960px){.section-assemble-fleet__list-item{width:47.16981%;float:left}.section-assemble-fleet__list-item:nth-child(2n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.section-assemble-fleet__list-item:nth-child(2n+2){margin-left:52.83019%;margin-right:-100%;clear:none}}@media (min-width: 1400px){.section-assemble-fleet__list-item{width:22.22222%;float:left}.section-assemble-fleet__list-item:nth-child(4n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.section-assemble-fleet__list-item:nth-child(4n+2){margin-left:25.92593%;margin-right:-100%;clear:none}.section-assemble-fleet__list-item:nth-child(4n+3){margin-left:51.85185%;margin-right:-100%;clear:none}.section-assemble-fleet__list-item:nth-child(4n+4){margin-left:77.77778%;margin-right:-100%;clear:none}}@media (min-width: 1921px){.section-assemble-fleet__list-item{width:20.75472%;float:left}.section-assemble-fleet__list-item:nth-child(4n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.section-assemble-fleet__list-item:nth-child(4n+2){margin-left:26.41509%;margin-right:-100%;clear:none}.section-assemble-fleet__list-item:nth-child(4n+3){margin-left:52.83019%;margin-right:-100%;clear:none}.section-assemble-fleet__list-item:nth-child(4n+4){margin-left:79.24528%;margin-right:-100%;clear:none}}.section-assemble-fleet__list-item.current figure{z-index:1;box-shadow:0 0 60px 6px black}@media (min-width: 400px){.section-assemble-fleet__list-item.current figure{-webkit-transform:scale(1.1);transform:scale(1.1)}}.section-assemble-fleet__list-item figure{display:inline-block;position:relative;border:1px solid #222d59;margin-bottom:0;-webkit-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.section-assemble-fleet__list-item figure:hover{cursor:pointer;-webkit-transform:scale(1.1);transform:scale(1.1);z-index:1;box-shadow:0 0 60px 6px black}.section-assemble-fleet__list-item figcaption{position:absolute;bottom:12px;left:12px}.section-assemble-fleet__img{width:100%;height:auto}.section-video{background:url("../img/video_bg.jpg") 50% 0 no-repeat;padding:60px 12px;background-size:cover}@media (min-width: 1400px){.section-video{padding-top:180px;padding-bottom:180px}}.section-video__video-link{display:block;position:relative;box-shadow:0 0 60px 6px black}@media (min-width: 768px){.section-video__video-link{width:65.4321%;margin:0 auto}}@media (min-width: 1140px){.section-video__video-link{width:900px;margin:0 auto}}.section-video__video-link .icon-play{font-size:300%;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.section-video__video-img{width:100%;height:auto}.section-art__cont{margin:0 auto}@media (min-width: 1000px){.section-art__cont{width:1000px !important}}.section-art-gallery__list::after{clear:both;content:"";display:table}.section-art-gallery__list-item{float:left;width:160px;margin-bottom:24px;padding-right:24px}@media (min-width: 424px){.section-art-gallery__list-item{width:200px}}.section-art-gallery__list-item a{display:block}.section-art-gallery__list-item figure{position:relative;display:inline-block;margin-bottom:0}.section-art-gallery__list-item figcaption{position:absolute;bottom:12px;left:12px}.section-art-gallery__list-item img{border:1px solid #222d59;height:auto}.section-art-gallery__list-item .icon-play{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.section-art-gallery__list-item.double{width:296px}@media (min-width: 424px){.section-art-gallery__list-item.double{width:400px}}.section__load-more-btn{color:#ffe537;border-bottom:2px solid #ffe537;padding:12px 24px}.section-buy{text-align:left}@media (min-width: 960px){.section-buy{padding:0 30px}}@media (min-width: 1140px){.section-buy{padding:0 4.93827%}}.section-buy .section__desc{margin-bottom:8px}@media (min-width: 768px){.section-buy .section__desc{width:500px;margin-left:0;margin-right:0}}.section-buy__add-desc{text-transform:uppercase;color:#50526d;margin-bottom:24px}.buy-and-requirments::after{clear:both;content:"";display:table}.buy-for-platform-cont{margin-bottom:48px}@media (min-width: 768px){.buy-for-platform-cont{width:48.14815%;float:left;margin-right:3.7037%}}@media (min-width: 1140px){.buy-for-platform-cont{width:430px}}.buy-for-platform{border:1px solid #222d59;padding:12px;background:url("../img/steam_bg.png") 0 0 no-repeat;background-size:contain;margin-bottom:12px}.buy-for-platform::after{clear:both;content:"";display:table}@media (min-width: 960px){.buy-for-platform{background-size:contain;padding:24px}}.buy-for-platform .button{background:#ffe537;color:#070b1b;float:right;text-transform:uppercase;font-weight:bold;display:block;padding:12px 24px;border:1px solid #ffe537}.buy-for-platform .button:hover{text-decoration:none;background-color:#070b1b;color:#ffe537}.buy-for-platform__details{float:left}.buy-for-platform__store-name{font-family:"Exo 2",Helvetica,Arial,sans-serif;text-transform:uppercase;font-size:20px;display:block}.buy-for-platform__platform-name{display:block;color:#50526d}.buy-for-platform__note{color:#50526d;font-size:14px}@media (min-width: 960px){.buy-for-platform__note{font-size:16px}}@media (min-width: 768px){.system-requirments{width:48.14815%;float:right;margin-right:0}}@media (min-width: 1140px){.system-requirments{width:auto;float:left}}.system-requirments__header-cont{padding-left:85px}.system-requirments__header-cont::after{clear:both;content:"";display:table}@media (min-width: 960px){.system-requirments__header-cont{padding-left:100px}}.system-requirments__header::after{clear:both;content:"";display:table}.system-requirments__header h4{display:block;float:left;text-transform:none;margin-right:18px}.system-requirments__header h4:hover{cursor:pointer;color:#ffe537}.system-requirments__header h4:last-of-type{margin-right:0}.system-requirments__header h4.visible{color:#ffe537;border-bottom:2px solid #ffe537;padding-bottom:8px}.system-requirments__requirment p{color:#50526d;font-size:14px;margin-bottom:0}.system-requirments__requirment p:last-of-type{display:none}.system-requirments__data-cont th{width:85px;font-size:14px;color:#50526d;vertical-align:top}@media (min-width: 960px){.system-requirments__data-cont th{font-size:16px;width:100px}}.system-requirments__data-cont td{vertical-align:top;font-size:14px}@media (min-width: 960px){.system-requirments__data-cont td{font-size:16px}}.system-requirments__data-table{display:none}.system-requirments__data-table.visible{display:table}footer{padding:12px}@media (min-width: 960px){footer{padding:0 30px}}@media (min-width: 1140px){footer{padding:0 4.93827%}}.footer-group>a,.footer-group>span{font-family:"Exo 2",Helvetica,Arial,sans-serif;color:#ffe537;text-transform:uppercase;width:100%;display:block}@media (min-width: 960px){.footer-group>a,.footer-group>span{width:auto;margin-bottom:8px}}@media (min-width: 960px){.footer-inner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}.footer-group{margin-bottom:24px}@media (min-width: 960px){.footer-group{width:15%;margin-bottom:0}}.footer-group.accordion-group span:after{content:'\f107';float:right;font-size:150%;color:#ffe537}@media (min-width: 960px){.footer-group.accordion-group span:after{display:none}}.footer-group.accordion-group.is-expanded span:after{content:'\f106'}.footer-group ul{padding:0;margin:0;list-style:none}@media (max-width: 959px){.footer-group ul{-ms-flex-pack:distribute;justify-content:space-around;display:-webkit-box;display:-ms-flexbox;display:flex;padding:60px 0}}@media (min-width: 960px){.footer-group ul a{margin-bottom:4px;display:inline-block}}.footer-group ul a:hover{text-decoration:underline}.footer-group .submenu{display:none}@media (min-width: 960px){.footer-group .submenu{display:block !important}}@media (max-width: 959px){.footer-group .is-expanded{display:-webkit-box;display:-ms-flexbox;display:flex}}.absolute-bottom-footer{margin-top:60px}@media (min-width: 960px){.absolute-bottom-footer{position:relative;margin-bottom:140px}.absolute-bottom-footer::after{clear:both;content:"";display:table}}.absolute-bottom-footer__legal{margin-bottom:24px}@media (min-width: 960px){.absolute-bottom-footer__legal{position:relative;display:inline-block;margin-left:24px}.absolute-bottom-footer__legal:hover{cursor:pointer}}@media (min-width: 960px){.absolute-bottom-footer__legal:hover .absolute-bottom-footer__legal-content{display:block !important}}.absolute-bottom-footer__legal i{display:none;color:#ffe537;font-size:150%}@media (min-width: 960px){.absolute-bottom-footer__legal i{display:inline-block}}.absolute-bottom-footer__legal.is-expanded span:after{content:'\f106'}.absolute-bottom-footer__legal-title{font-family:"Exo 2",Helvetica,Arial,sans-serif}.absolute-bottom-footer__legal-title:after{content:'\f107';float:right;font-size:150%}@media (min-width: 960px){.absolute-bottom-footer__legal-title:after{content:'\f106';float:none;font-size:100%;margin-left:4px}}.absolute-bottom-footer__legal-content{display:none;padding:12px 0;font-size:14px}@media (min-width: 960px){.absolute-bottom-footer__legal-content{border:1px solid #222d59;display:none !important;height:auto !important;opacity:1 !important;width:660px;position:absolute;top:-12px;left:0;-webkit-transform:translateY(-100%);transform:translateY(-100%);background-color:#070b1b;padding:16px}}.absolute-bottom-footer__legal-content h4{display:none}@media (min-width: 960px){.absolute-bottom-footer__legal-content h4{display:block;text-transform:none;font-size:26px;margin-bottom:12px}}@media (min-width: 960px){.absolute-bottom-footer__legal-content p{margin-bottom:24px}}.absolute-bottom-footer__legal-logos{list-style:none;margin:0;padding:0}@media (max-width: 959px){.absolute-bottom-footer__legal-logos{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}@media (min-width: 960px){.absolute-bottom-footer__legal-logos::after{clear:both;content:"";display:table}}.absolute-bottom-footer__legal-logos li{width:20%}@media (min-width: 960px){.absolute-bottom-footer__legal-logos li{width:auto;float:left;margin-right:24px}}.absolute-bottom-footer__legal-logos img{width:auto;height:auto}@media (min-width: 960px){.absolute-bottom-footer__copyright{position:absolute;top:30px;left:105px;line-height:19px}}.absolute-bottom-footer__copyright a{color:#ffe537}@media (min-width: 960px){.absolute-bottom-footer__copyright a{display:block}}.absolute-bottom-footer__legal-content-arrow{display:none}@media (min-width: 960px){.absolute-bottom-footer__legal-content-arrow{display:block;position:absolute;bottom:-17px;left:30px}}.absolute-bottom-footer__logo{display:none}@media (min-width: 960px){.absolute-bottom-footer__logo{display:block;float:left}}.section-reviews::after{clear:both;content:"";display:table}.section-reviews .section__header{clear:both}@media (min-width: 1140px){.section-reviews{padding:0 4.93827%}}.review{background:rgba(7,11,27,0.4);text-align:left;padding:40px 24px 24px;border-top:1px solid #222d59;border-bottom:1px solid #222d59;margin-bottom:24px}@media (min-width: 600px){.review{width:73.58491%;margin:0 auto}}@media (min-width: 960px){.review{width:30.8642%;float:left;margin-right:3.7037%;display:block !important}}@media (min-width: 1140px){.review{width:30%;float:left;margin-right:5%}}.review.last{margin-right:0;float:right}.review__details{margin-bottom:24px}.review__details::after{clear:both;content:"";display:table}.review__details img{float:left;margin-right:12px}.review__details .review__details-text{float:left}.review__details .review__details-text span{display:block}.review__details .review__details-text span:first-child{color:#ffe537;font-family:"Exo 2",Helvetica,Arial,sans-serif;font-size:18px}.review__details .review__details-text span:last-child{color:#50526d;font-size:16px}.review__text{color:#dbddff;margin-bottom:0}@media (min-width: 960px){.section__load-more-btn{display:none}}.masonry,.masonry .masonry-brick{-webkit-transition-duration:0.7s;transition-duration:0.7s}.masonry{-webkit-transition-property:height, width;transition-property:height, width}.masonry .masonry-brick{-webkit-transition-property:left, right, top;transition-property:left, right, top}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2Jvd2VyX2NvbXBvbmVudHMvbm9ybWFsaXplLWNzcy9ub3JtYWxpemUuY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9saWJzYXNzLWNvbXBhc3MtdmVydGljYWwtcmh5dGhtL2xpYi9jb21wYXNzX3JoeXRobS9fdmVydGljYWxfcmh5dGhtLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2xpYnNhc3MtY29tcGFzcy12ZXJ0aWNhbC1yaHl0aG0vbGliL2NvbXBhc3Nfcmh5dGhtL191bml0cy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19wcmVmaXhlci5zY3NzIiwic2V0dGluZ3MvX2J1dHRvbnMuc2NzcyIsInNldHRpbmdzL192YXJpYWJsZXMuc2NzcyIsInNldHRpbmdzL19yZWJvb3Quc2NzcyIsIm1peGlucy9fdGFiLWZvY3VzLnNjc3MiLCJzZXR0aW5ncy9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsInNldHRpbmdzL19pY29uLWZvbnQuc2NzcyIsIm1vZHVsZXMvX29mZi1jYW52YXMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcG9zaXRpb24uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fc2l6ZS5zY3NzIiwibW9kdWxlcy9fbGlnaHRib3guc2NzcyIsIl9tYWluLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19jbGVhcmZpeC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19jbGVhcmZpeC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19nYWxsZXJ5LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RSxLQVMxRSx1QkFDQSxpQkFDQSwwQkFDQSw2QkFBK0IsQ0FDaEMsS0FPQyxRQUFVLENBQ1gsb0ZBdUJDLGFBQWUsQ0FDaEIsNEJBVUMsb0JBQXNCLENBQ3ZCLHNCQU9DLGFBQ0EsUUFBVSxDQUNYLFNBT0MsdUJBQXlCLENBQzFCLGtCQVNDLFlBQWMsQ0FDZixFQVdDLDZCQUNBLG9DQUFzQyxDQUN2QyxpQkFTQyxlQUFpQixDQUNsQixZQVdDLG1CQUNBLDBCQUNBLGdDQUFrQyxDQUNuQyxTQVFDLG1CQUFxQixDQUN0QixTQVFDLGtCQUFvQixDQUNyQixJQU9DLGlCQUFtQixDQUNwQixHQVFDLGNBQ0EsZUFBaUIsQ0FDbEIsS0FPQyxzQkFDQSxVQUFZLENBQ2IsTUFPQyxhQUFlLENBQ2hCLFFBU0MsY0FDQSxjQUNBLGtCQUNB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LFlBQWMsQ05uOEJaLDBCTWs4QkosNkNBSUksY0FDQSxrQkFDQSxhQUNBLFNBQVcsQ0FFZCxDQUVELDhCQUNFLFlBQWMsQ045OEJaLDBCTTY4QkosOEJBSUksY0FDQSxVQUFZLENBRWYsQ0FFRCx3QklsZ0NJLFdBQ0EsV0FDQSxhQUFlLENBQ2hCLGtDSm1nQ0MsVUFBWSxDTjE5QlosMkJNczlCSixpQkFRSSxrQktuNEJvQixDTHM0QnZCLENBRUQsUUFDRSw2QkFDQSxnQkFDQSx1QkFDQSw2QkFDQSxnQ0FDQSxrQmQvK0JnQixDUU1kLDBCTW0rQkosUUFTSSxnQkFDQSxhQUFlLENBZ0JsQixDTjcvQkcsMEJNbStCSixRQ2hoQ0ksZUFBQSxXQUFBLHFCRCtoQ0Esd0JBQTBCLENBVzdCLENONy9CRywyQk1tK0JKLFFDaGhDSSxVQUFBLFdBQUEsZVM0RHdCLENWOCtCM0IsQ0ExQkQsYUF1QkksZUFDQSxXQUFhLENBQ2QsaUJBS0Qsa0JkdmdDZ0IsQ2NxZ0NsQix3QkkzaUNJLFdBQ0EsV0FDQSxhQUFlLENBQ2hCLHFCSjZpQ0MsV0FDQSxpQkFBbUIsQ0FOdkIsdUNBVUksVUFBWSxDQVZoQiw0Q0FhTSxhQUFlLENBYnJCLHdEQWdCUSxjQUNBLCtDQUNBLGNBQWdCLENBbEJ4Qix1REFzQlEsY0FDQSxjQUFnQixDQUNqQixjQU1MLGNBQ0EsZUFBaUIsQ045aENmLDBCTWlpQ0osd0JBRUksWUFBYyxDQUVqQixDQUVELGlDQUVFLGlDQUNBLEFBR0Esd0JBQTBCLENBQzNCLFNBR0MsMENBQ0EsQUFHQSxpQ0FBbUMsQ0FDcEMsd0JBR0MsNkNBQ0EsQUFHQSxvQ0FBc0MsQ0FDdkMiLCJmaWxlIjoic3R5bGVzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qISBub3JtYWxpemUuY3NzIHY0LjEuMSB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuLyoqXG4gKiAxLiBDaGFuZ2UgdGhlIGRlZmF1bHQgZm9udCBmYW1pbHkgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKiAyLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gKiAzLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIElFIGFuZCBpT1MuXG4gKi9cblxuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAvKiAxICovXG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAyICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAzICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMyAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICovXG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8qIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSwgYW5kIEZpcmVmb3guXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cbiAqL1xuXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLCAvKiAxICovXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxubWFpbiwgLyogMiAqL1xubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHsgLyogMSAqL1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAqL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gaU9TIDQtNy5cbiAqL1xuXG5hdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICBkaXNwbGF5OiBub25lO1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC0uXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cbiAqL1xuXG50ZW1wbGF0ZSwgLyogMSAqL1xuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKiAyLiBSZW1vdmUgZ2FwcyBpbiBsaW5rcyB1bmRlcmxpbmUgaW4gaU9TIDgrIGFuZCBTYWZhcmkgOCsuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiAxICovXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIG91dGxpbmUgb24gZm9jdXNlZCBsaW5rcyB3aGVuIHRoZXkgYXJlIGFsc28gYWN0aXZlIG9yIGhvdmVyZWRcbiAqIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICovXG5cbmE6YWN0aXZlLFxuYTpob3ZlciB7XG4gIG91dGxpbmUtd2lkdGg6IDA7XG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBGaXJlZm94IDM5LS5cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gKi9cblxuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvKiAyICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFByZXZlbnQgdGhlIGR1cGxpY2F0ZSBhcHBsaWNhdGlvbiBvZiBgYm9sZGVyYCBieSB0aGUgbmV4dCBydWxlIGluIFNhZmFyaSA2LlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cbiAqL1xuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cbiAqL1xuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBiYWNrZ3JvdW5kIGFuZCBjb2xvciBpbiBJRSA5LS5cbiAqL1xuXG5tYXJrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMDtcbiAgY29sb3I6ICMwMDA7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAqIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAtLlxuICovXG5cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxuLyoqXG4gKiBIaWRlIHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqL1xuXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBtYXJnaW4gaW4gSUUgOC5cbiAqL1xuXG5maWd1cmUge1xuICBtYXJnaW46IDFlbSA0MHB4O1xufVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAqL1xuXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAxICovXG4gIGhlaWdodDogMDsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTsgLyogMiAqL1xufVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250OiBpbmhlcml0OyAvKiAxICovXG4gIG1hcmdpbjogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvbnQgd2VpZ2h0IHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5cbmJ1dHRvbixcbmlucHV0IHsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3QgeyAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAqIDEuIFByZXZlbnQgYSBXZWJLaXQgYnVnIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYCBhbmQgYHZpZGVvYFxuICogICAgY29udHJvbHMgaW4gQW5kcm9pZCA0LlxuICogMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5odG1sIFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xufVxuXG4vKipcbiAqIENoYW5nZSB0aGUgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICovXG5cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgbWFyZ2luOiAwIDJweDtcbiAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuICovXG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAtLlxuICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLS5cbiAqL1xuXG5bdHlwZT1cImNoZWNrYm94XCJdLFxuW3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBhbmQgY2FuY2VsIGJ1dHRvbnMgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWC5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIHRleHQgc3R5bGUgb2YgcGxhY2Vob2xkZXJzIGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuXG46Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgb3BhY2l0eTogMC41NDtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICovXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG59XG4iLCJAaW1wb3J0IFwiZ3JpZF9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwidW5pdHNcIjtcblxuLy8gVGhlIGRlZmF1bHQgZm9udCBzaXplIGZvciBhbGwgdGV4dCBpbiBwaXhlbHNcbiRiYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRpc3RhbmNlIGJldHdlZW4gdGV4dCBiYXNlbGluZXMgKHZlcnRpY2FsIHJoeXRobSkgaW4gcGl4ZWxzLlxuJGJhc2UtbGluZS1oZWlnaHQ6IDI0cHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBsZW5ndGggdW5pdCBpbiB3aGljaCB0byBvdXRwdXQgcmh5dGhtIHZhbHVlcy5cbi8vIFN1cHBvcnRlZCB2YWx1ZXM6IHB4LCBlbSwgcmVtLiBQZXJjZW50IHVuaXRzIGNhbid0IGJlIHVzZWQgc2luY2UgdGhleVxuLy8gbWFrZSBjYWxjdWxhdGluZyBwYWRkaW5nIGFuZCBtYXJnaW5zIGltcHJhY3RpY2FsLCBhbmQgcGVyY2VudGFnZSBib3JkZXJzIGFyZVxuLy8gbm90IHZhbGlkIG9yIHN1cHBvcnRlZCBpbiBjc3MuXG4kcmh5dGhtLXVuaXQ6ICdlbScgIWRlZmF1bHQ7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGZhbGxiYWNrIHZhbHVlcyBpbiBweCB3aGVuIHVzaW5nIHJlbSBhcyB0aGUgcmh5dGhtLXVuaXQuXG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIERlZmF1bHQgdmFsdWVzIGZvciByaHl0aG0gYm9yZGVycyBwcm9wZXJ0aWVzLlxuLy8gU3VwcG9ydHMgc3R5bGUgYWxvbmUgZWcuIGBzb2xpZGAgb3IgbGlzdCBvZiBzdHlsZSBhbmQgY29sb3IgZWcuIGBzb2xpZCAjYWFhYDtcbiRkZWZhdWx0LXJoeXRobS1ib3JkZXItd2lkdGg6IDFweCAhZGVmYXVsdDtcbiRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGU6IHNvbGlkICFkZWZhdWx0O1xuXG4vLyBBbGxvd3MgdGhlIGBhZGp1c3QtZm9udC1zaXplLXRvYCBtaXhpbiBhbmQgdGhlIGBsaW5lcy1mb3ItZm9udC1zaXplYCBmdW5jdGlvblxuLy8gdG8gcm91bmQgdGhlIGxpbmUgaGVpZ2h0IHRvIHRoZSBuZWFyZXN0IGhhbGYgbGluZSBoZWlnaHQgaW5zdGVhZCBvZiB0aGVcbi8vIG5lYXJlc3QgaW50ZWdyYWwgbGluZSBoZWlnaHQgdG8gYXZvaWQgbGFyZ2Ugc3BhY2luZyBiZXR3ZWVuIGxpbmVzLlxuJHJvdW5kLXRvLW5lYXJlc3QtaGFsZi1saW5lOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRW5zdXJlIHRoZXJlIGlzIGF0IGxlYXN0IHRoaXMgbWFueSBwaXhlbHNcbi8vIG9mIHZlcnRpY2FsIHBhZGRpbmcgYWJvdmUgYW5kIGJlbG93IHRoZSB0ZXh0LlxuJG1pbi1saW5lLXBhZGRpbmc6IDJweCAhZGVmYXVsdDtcblxuLy8gVGhlIGxlYWRlciBpcyB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgaW4gYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtbGVhZGVyOiBjb252ZXJ0LWxlbmd0aCgkYmFzZS1saW5lLWhlaWdodCAtICRiYXNlLWZvbnQtc2l6ZSwgJHJoeXRobS11bml0LCAkYmFzZS1mb250LXNpemUpO1xuXG4vLyBUaGUgaGFsZi1sZWFkZXIgaXMgdGhlIGFtb3VudCBvZiB3aGl0ZXNwYWNlIGFib3ZlIGFuZCBiZWxvdyBhIGxpbmUuXG4vLyBJdCBtaWdodCBiZSB1c2VmdWwgaW4geW91ciBjYWxjdWxhdGlvbnMuXG4kYmFzZS1oYWxmLWxlYWRlcjogJGJhc2UtbGVhZGVyIC8gMjtcblxuLy8gQHByaXZhdGUgV2hldGhlciB0aGUgcmh5dGhtIG91dHB1dCBpcyBpbiBhYnNvbHV0ZSB1bml0cyAocHgpIG9yIG5vdCAoZW0sIHJlbSlcbiRyZWxhdGl2ZS1mb250LXNpemluZzogaWYoJHJoeXRobS11bml0ID09IHB4LCBmYWxzZSwgdHJ1ZSk7XG5cbi8vIFNob3VsZCB3ZSBzdXBwb3J0IElFNiBieSBzZXR0aW5nIGJhc2UgZm9udCBzaXplP1xuJGNvbXBhc3Mtcmh5dGhtLXN1cHBvcnQtaWU2OiBmYWxzZTtcblxuLy8gVmFsaWRhdGUgdW5pdHNcbkBpZiB1bml0KCRiYXNlLWZvbnQtc2l6ZSkgICAhPSAncHgnIHsgQHdhcm4gXCIkYmFzZS1mb250LXNpemUgbXVzdCByZXNvbHZlIHRvIGEgcGl4ZWwgdW5pdC5cIjsgfVxuQGlmIHVuaXQoJGJhc2UtbGluZS1oZWlnaHQpICE9ICdweCcgeyBAd2FybiBcIiRiYXNlLWxpbmUtaGVpZ2h0IG11c3QgcmVzb2x2ZSB0byBhIHBpeGVsIHVuaXQuXCI7IH1cbkBpZiAkcmh5dGhtLXVuaXQgIT0gJ3B4JyBhbmQgJHJoeXRobS11bml0ICE9ICdlbScgYW5kICRyaHl0aG0tdW5pdCAhPSAncmVtJyB7XG4gIEB3YXJuIFwiJHJoeXRobS11bml0IG11c3QgYmUgYHB4YCwgYGVtYCBvciBgcmVtYC5cIjtcbn1cblxuXG4vLyBDYWxjdWxhdGUgcmh5dGhtIHVuaXRzLlxuQGZ1bmN0aW9uIHJoeXRobSgkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJG9mZnNldDogMCkge1xuICAkcmh5dGhtOiBjb252ZXJ0LWxlbmd0aCgkbGluZXMgKiAkYmFzZS1saW5lLWhlaWdodCAtICRvZmZzZXQsICRyaHl0aG0tdW5pdCwgJGZvbnQtc2l6ZSk7XG4gIEBpZiB1bml0KCRyaHl0aG0pID09IHB4IHtcbiAgICAkcmh5dGhtOiBmbG9vcigkcmh5dGhtKTtcbiAgfVxuICBAcmV0dXJuICRyaHl0aG07XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgbWluaW11bSBtdWx0aXBsZSBvZiByaHl0aG0gdW5pdHMgbmVlZGVkIHRvIGNvbnRhaW4gdGhlIGZvbnQtc2l6ZS5cbkBmdW5jdGlvbiBsaW5lcy1mb3ItZm9udC1zaXplKCRmb250LXNpemUpIHtcbiAgJGxpbmVzOiBpZigkcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmUsXG4gICAgICAgICAgICAgY2VpbCgyICogJGZvbnQtc2l6ZSAvICRiYXNlLWxpbmUtaGVpZ2h0KSAvIDIsXG4gICAgICAgICAgICAgY2VpbCgkZm9udC1zaXplIC8gJGJhc2UtbGluZS1oZWlnaHQpKTtcbiAgLy8gSWYgbGluZXMgYXJlIGNyYW1wZWQgaW5jbHVkZSBzb21lIGV4dHJhIGxlYWQuXG4gIEBpZiAoJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkZm9udC1zaXplKSA8ICgkbWluLWxpbmUtcGFkZGluZyAqIDIpIHtcbiAgICAkbGluZXM6ICRsaW5lcyArIGlmKCRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZSwgMC41LCAxKTtcbiAgfVxuICBAcmV0dXJuICRsaW5lcztcbn1cblxuXG4vLyBAcHJpdmF0ZSBPdXRwdXRzIHJoeXRobSB2YWx1ZXMuIEZvciByZW0gdW5pdHMsIG91dHB1dHMgcGl4ZWwgZmFsbGJhY2tzXG4vLyBieSBkZWZhdWx0LlxuQG1peGluIG91dHB1dC1yaHl0aG0oJHByb3BlcnR5LCAkdmFsdWVzKSB7XG4gIEBpZiAkcmh5dGhtLXVuaXQgPT0gcmVtIGFuZCAkcmVtLXdpdGgtcHgtZmFsbGJhY2sge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcGVydHksICR2YWx1ZXMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkb3V0cHV0OiAoKTtcbiAgICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09IHB4IHtcbiAgICAgICAgLy8gRW5zdXJlIGFsbCBwaXhlbCB2YWx1ZXMgYXJlIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgcGl4ZWwuXG4gICAgICAgICRvdXRwdXQ6IGpvaW4oJG91dHB1dCwgcm91bmQoJHZhbHVlKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRvdXRwdXQ6IGpvaW4oJG91dHB1dCwgJHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgI3skcHJvcGVydHl9OiAkb3V0cHV0O1xuICB9XG59XG5cbi8vIEVzdGFibGlzaGVzIGEgZm9udCBiYXNlbGluZSBmb3IgdGhlIGdpdmVuIGZvbnQtc2l6ZS5cbkBtaXhpbiBlc3RhYmxpc2gtYmFzZWxpbmUoJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gICRyZWxhdGl2ZS1zaXplOiAxMDAlICogKCRmb250LXNpemUgLyAkYnJvd3Nlci1kZWZhdWx0LWZvbnQtc2l6ZSk7XG5cbiAgQGlmICRjb21wYXNzLXJoeXRobS1zdXBwb3J0LWllNiBhbmQgKG5vdCAkcmVsYXRpdmUtZm9udC1zaXppbmcpIHtcbiAgICAvLyBJRSA2IHJlZnVzZXMgdG8gcmVzaXplIGZvbnRzIHNldCBpbiBwaXhlbHMgYW5kIGl0IHdlaXJkbHkgcmVzaXplcyBmb250c1xuICAgIC8vIHdob3NlIHJvb3QgaXMgc2V0IGluIGVtcy4gU28gd2Ugc2V0IHRoZSByb290IGZvbnQgc2l6ZSBpbiBwZXJjZW50YWdlcyBvZlxuICAgIC8vIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSwgZXZlbiBpZiB3ZSBhcmUgdXNpbmcgYWJzb2x1dGUgc2l6ZXMgZWxzZXdoZXJlLlxuICAgICogaHRtbCB7IGZvbnQtc2l6ZTogJHJlbGF0aXZlLXNpemU7IH1cbiAgfVxuICBodG1sIHtcbiAgICBmb250LXNpemU6IGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJHJlbGF0aXZlLXNpemUsICRmb250LXNpemUpO1xuXG4gICAgLy8gV2Via2l0IGhhcyBhIGJ1ZyB0aGF0IHByZXZlbnRzIGxpbmUtaGVpZ2h0IGJlaW5nIHNldCBpbiByZW0gb24gPGh0bWw+O1xuICAgIC8vIFRvIHdvcmsgYXJvdW5kIHRoaXMgYW5kIHNpbXBsaWZ5IG91dHB1dCwgd2UgY2FuIHNldCBpbml0aWFsIGxpbmUtaGVpZ2h0XG4gICAgLy8gaW4gZW1zIGZvciBhbGwgcmVsYXRpdmUgcmh5dGhtIHVuaXRzLCBldmVuIHdoZW4gJHJoeXRobS11bml0IGlzIGByZW1gLlxuICAgIEBpZiAkcmVsYXRpdmUtZm9udC1zaXppbmcge1xuICAgICAgbGluZS1oZWlnaHQ6IGNvbnZlcnQtbGVuZ3RoKCRiYXNlLWxpbmUtaGVpZ2h0LCBlbSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiByb3VuZCgkYmFzZS1saW5lLWhlaWdodCk7XG4gICAgfVxuICB9XG59XG5cbi8vIFJlc2V0cyB0aGUgYmFzZWxpbmUgdG8gMSByaHl0aG0gdW5pdFxuLy8gRG9lcyBub3Qgd29yayBvbiBlbGVtZW50cyB3aG9zZSBmb250LXNpemUgaXMgZGlmZmVyZW50IGZyb20gJGJhc2UtZm9udC1zaXplLlxuLy9cbi8vIEBkZXByZWNhdGVkIFRoaXMgbWl4aW4gd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuXG4vLyBQbGVhc2UgdXNlIGBhZGp1c3QtbGVhZGluZy10bygxKWAgaW5zdGVhZC5cbkBtaXhpbiByZXNldC1iYXNlbGluZSgkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIFNob3cgYSBiYWNrZ3JvdW5kIGltYWdlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVidWcgeW91ciBhbGlnbm1lbnRzLlxuLy8gQXMgdGhpcyBpcyBhIGRldmVsb3BtZW50IGZlYXR1cmUsIHRoaXMgbWl4aW4gbmV2ZXIgb3V0cHV0cyBwaXhlbCBmYWxsYmFja3Ncbi8vIGZvciByZW0gb3V0cHV0LlxuLy8gSW5jbHVkZSB0aGUgJGltZyBhcmd1bWVudCBpZiB5b3Ugd291bGQgcmF0aGVyIHVzZSB5b3VyIG93biBpbWFnZSB0aGFuIHRoZVxuLy8gQ29tcGFzcyBkZWZhdWx0IGdyYWRpZW50IGltYWdlLlxuQG1peGluIGRlYnVnLXZlcnRpY2FsLWFsaWdubWVudCgkaW1nOiBmYWxzZSkge1xuICBAaWYgJGltZyB7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRpbWcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYXNlbGluZS1ncmlkLWJhY2tncm91bmQoaWYoJHJvdW5kLXRvLW5lYXJlc3QtaGFsZi1saW5lLCByaHl0aG0oMS8yKSwgcmh5dGhtKDEpKSk7XG4gIH1cbn1cblxuLy8gQWRqdXN0IGEgYmxvY2sgdG8gaGF2ZSBhIGRpZmZlcmVudCBmb250IHNpemUgYW5kIGxpbmUgaGVpZ2h0IHRvIG1haW50YWluIHRoZVxuLy8gcmh5dGhtLiAkbGluZXMgc3BlY2lmaWVzIGhvdyBtYW55IG11bHRpcGxlcyBvZiB0aGUgYmFzZWxpbmUgcmh5dGhtIGVhY2ggbGluZVxuLy8gb2YgdGhpcyBmb250IHNob3VsZCB1c2UgdXAuIEl0IGRvZXMgbm90IGhhdmUgdG8gYmUgYW4gaW50ZWdlciwgYnV0IGl0XG4vLyBkZWZhdWx0cyB0byB0aGUgc21hbGxlc3QgaW50ZWdlciB0aGF0IGlzIGxhcmdlIGVub3VnaCB0byBmaXQgdGhlIGZvbnQuXG4vLyBVc2UgJGZyb20tc2l6ZSB0byBhZGp1c3QgZnJvbSBhIGZvbnQtc2l6ZSBvdGhlciB0aGFuIHRoZSBiYXNlIGZvbnQtc2l6ZS5cbkBtaXhpbiBhZGp1c3QtZm9udC1zaXplLXRvKCR0by1zaXplLCAkbGluZXM6IGF1dG8sICRmcm9tLXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICAkdG8tc2l6ZTogY29udmVydC1sZW5ndGgoJHRvLXNpemUsIHB4LCAkZnJvbS1zaXplKTtcbiAgQGlmICRsaW5lcyA9PSBhdXRvIHtcbiAgICAkbGluZXM6IGxpbmVzLWZvci1mb250LXNpemUoJHRvLXNpemUpO1xuICB9XG4gIEBpbmNsdWRlIG91dHB1dC1yaHl0aG0oZm9udC1zaXplLCBjb252ZXJ0LWxlbmd0aCgkdG8tc2l6ZSwgJHJoeXRobS11bml0LCAkZnJvbS1zaXplKSk7XG4gIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKCRsaW5lcywgJHRvLXNpemUpO1xufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGRpZmZlcmVudCBsaW5lIGhlaWdodCB0byBtYWludGFpbiB0aGUgcmh5dGhtLlxuLy8gJGxpbmVzIHNwZWNpZmllcyBob3cgbWFueSBtdWx0aXBsZXMgb2YgdGhlIGJhc2VsaW5lIHJoeXRobSBlYWNoIGxpbmUgb2YgdGhpc1xuLy8gZm9udCBzaG91bGQgdXNlIHVwLiBJdCBkb2VzIG5vdCBoYXZlIHRvIGJlIGFuIGludGVnZXIsIGJ1dCBpdCBkZWZhdWx0cyB0byB0aGVcbi8vIHNtYWxsZXN0IGludGVnZXIgdGhhdCBpcyBsYXJnZSBlbm91Z2ggdG8gZml0IHRoZSBmb250LlxuQG1peGluIGFkanVzdC1sZWFkaW5nLXRvKCRsaW5lcywgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIEBpbmNsdWRlIG91dHB1dC1yaHl0aG0obGluZS1oZWlnaHQsIHJoeXRobSgkbGluZXMsICRmb250LXNpemUpKTtcbn1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlLiBUaGUgJHByb3BlcnR5IGNhbiBiZSBtYXJnaW4gb3IgcGFkZGluZy5cbkBtaXhpbiBsZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gIEBpbmNsdWRlIG91dHB1dC1yaHl0aG0oI3skcHJvcGVydHl9LXRvcCwgcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSkpO1xufVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBvdXRwdXQtcmh5dGhtKHBhZGRpbmctdG9wLCByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKSk7XG59XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZSBhcyBtYXJnaW4uXG5AbWl4aW4gbWFyZ2luLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBvdXRwdXQtcmh5dGhtKG1hcmdpbi10b3AsIHJoeXRobSgkbGluZXMsICRmb250LXNpemUpKTtcbn1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZS4gVGhlICRwcm9wZXJ0eSBjYW4gYmUgbWFyZ2luIG9yIHBhZGRpbmcuXG5AbWl4aW4gdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJHByb3BlcnR5OiBtYXJnaW4pIHtcbiAgQGluY2x1ZGUgb3V0cHV0LXJoeXRobSgjeyRwcm9wZXJ0eX0tYm90dG9tLCByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKSk7XG59XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLXRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGluY2x1ZGUgb3V0cHV0LXJoeXRobShwYWRkaW5nLWJvdHRvbSwgcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSkpO1xufVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFzIG1hcmdpbi5cbkBtaXhpbiBtYXJnaW4tdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBvdXRwdXQtcmh5dGhtKG1hcmdpbi1ib3R0b20sIHJoeXRobSgkbGluZXMsICRmb250LXNpemUpKTtcbn1cblxuLy8gU2hvcnRoYW5kIG1peGluIHRvIGFwcGx5IHdoaXRlc3BhY2UgZm9yIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYW5kIHBhZGRpbmcuXG5AbWl4aW4gcmh5dGhtKFxuICAkbGVhZGVyOiAxLFxuICAkcGFkZGluZy1sZWFkZXI6IDAsXG4gICRwYWRkaW5nLXRyYWlsZXI6ICRwYWRkaW5nLWxlYWRlcixcbiAgJHRyYWlsZXI6ICRsZWFkZXIsXG4gICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZVxuKSB7XG4gIEBpbmNsdWRlIGxlYWRlcigkbGVhZGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgcGFkZGluZy1sZWFkZXIoJHBhZGRpbmctbGVhZGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgcGFkZGluZy10cmFpbGVyKCRwYWRkaW5nLXRyYWlsZXIsICRmb250LXNpemUpO1xuICBAaW5jbHVkZSB0cmFpbGVyKCR0cmFpbGVyLCAkZm9udC1zaXplKTtcbn1cblxuLy8gU2hvcnRoYW5kIG1peGluIHRvIGFwcGx5IHdoaXRlc3BhY2UgZm9yIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMuXG5AbWl4aW4gcmh5dGhtLW1hcmdpbnMoXG4gICRsZWFkZXI6IDEsXG4gICR0cmFpbGVyOiAkbGVhZGVyLFxuICAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemVcbikge1xuICBAaW5jbHVkZSBsZWFkZXIoJGxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHRyYWlsZXIoJHRyYWlsZXIsICRmb250LXNpemUpO1xufVxuXG4vLyBTaG9ydGhhbmQgbWl4aW4gdG8gYXBwbHkgd2hpdGVzcGFjZSBmb3IgdG9wIGFuZCBib3R0b20gcGFkZGluZy5cbkBtaXhpbiByaHl0aG0tcGFkZGluZyhcbiAgJHBhZGRpbmctbGVhZGVyOiAxLFxuICAkcGFkZGluZy10cmFpbGVyOiAkcGFkZGluZy1sZWFkZXIsXG4gICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZVxuKSB7XG4gIEBpbmNsdWRlIHBhZGRpbmctbGVhZGVyKCRwYWRkaW5nLWxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctdHJhaWxlcigkcGFkZGluZy10cmFpbGVyLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQXBwbHkgYSBib3JkZXIgYW5kIHdoaXRlc3BhY2UgdG8gYW55IHNpZGUgd2l0aG91dCBkZXN0cm95aW5nIHRoZSB2ZXJ0aWNhbFxuLy8gcmh5dGhtLiBUaGUgd2hpdGVzcGFjZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgd2lkdGggb2YgdGhlIGJvcmRlci5cbkBtaXhpbiBhcHBseS1zaWRlLXJoeXRobS1ib3JkZXIoXG4gICRzaWRlLFxuICAkd2lkdGg6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItd2lkdGgsXG4gICRsaW5lczogMSxcbiAgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLFxuICAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlXG4pIHtcbiAgLy8gSWYgYXBwbHlpbmcgYm9yZGVycyB0byBhbGwgc2lkZXMsIHVzZSBzaG9ydGhhbmQgcHJvcGVydGllc1xuICAkYm9yZGVyLXByb3A6IGlmKCRzaWRlID09IGFsbCwgYm9yZGVyLCBib3JkZXItI3skc2lkZX0pO1xuICBAaW5jbHVkZSBvdXRwdXQtcmh5dGhtKCN7JGJvcmRlci1wcm9wfS13aWR0aCwgY29udmVydC1sZW5ndGgoJHdpZHRoLCAkcmh5dGhtLXVuaXQsICRmb250LXNpemUpKTtcbiAgI3skYm9yZGVyLXByb3B9LXN0eWxlOiBudGgoJGJvcmRlci1zdHlsZSwgMSk7XG4gIEBpZiB0eXBlLW9mKCRib3JkZXItc3R5bGUpID09IGxpc3QgYW5kIGxlbmd0aCgkYm9yZGVyLXN0eWxlKSA+IDEge1xuICAgICN7JGJvcmRlci1wcm9wfS1jb2xvcjogbnRoKCRib3JkZXItc3R5bGUsIDIpO1xuICB9XG4gICRwYWRkaW5nLXByb3A6IGlmKCRzaWRlID09IGFsbCwgcGFkZGluZywgcGFkZGluZy0jeyRzaWRlfSk7XG4gIEBpbmNsdWRlIG91dHB1dC1yaHl0aG0oI3skcGFkZGluZy1wcm9wfSwgcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSwgJG9mZnNldDogJHdpZHRoKSk7XG59XG5cbi8vIEFwcGx5IGEgbGVhZGluZyBib3JkZXIuXG4vLyAkYm9yZGVyLXN0eWxlIGFuZCAkd2lkdGggYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIENvbXBhc3MuXG5AbWl4aW4gbGVhZGluZy1ib3JkZXIoXG4gICR3aWR0aDogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci13aWR0aCxcbiAgJGxpbmVzOiAxLFxuICAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsXG4gICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGVcbikge1xuICBAaW5jbHVkZSBhcHBseS1zaWRlLXJoeXRobS1ib3JkZXIodG9wLCAkd2lkdGgsICRsaW5lcywgJGZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZSk7XG59XG5cbi8vIEFwcGx5IGEgdHJhaWxpbmcgYm9yZGVyLlxuQG1peGluIHRyYWlsaW5nLWJvcmRlcihcbiAgJHdpZHRoOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXdpZHRoLFxuICAkbGluZXM6IDEsXG4gICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSxcbiAgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZVxuKSB7XG4gIEBpbmNsdWRlIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcihib3R0b20sICR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cblxuLy8gQXBwbHkgYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyBib3JkZXJzLlxuQG1peGluIGhvcml6b250YWwtYm9yZGVycyhcbiAgJHdpZHRoOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXdpZHRoLFxuICAkbGluZXM6IDEsXG4gICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSxcbiAgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZVxuKSB7XG4gIEBpbmNsdWRlIGxlYWRpbmctYm9yZGVyKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbiAgQGluY2x1ZGUgdHJhaWxpbmctYm9yZGVyKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cblxuLy8gQWxpYXMgZm9yIGBob3Jpem9udGFsLWJvcmRlcnNgIG1peGluLlxuQG1peGluIGgtYm9yZGVycyhcbiAgJHdpZHRoOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXdpZHRoLFxuICAkbGluZXM6IDEsXG4gICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSxcbiAgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZVxuKSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtYm9yZGVycygkd2lkdGgsICRsaW5lcywgJGZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZSk7XG59XG5cbi8vIEFwcGx5IGJvcmRlcnMgYW5kIHdoaXRlc3BhY2UgZXF1YWxseSB0byBhbGwgc2lkZXMuXG5AbWl4aW4gcmh5dGhtLWJvcmRlcnMoXG4gICR3aWR0aDogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci13aWR0aCxcbiAgJGxpbmVzOiAxLFxuICAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsXG4gICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGVcbikge1xuICBAaW5jbHVkZSBhcHBseS1zaWRlLXJoeXRobS1ib3JkZXIoYWxsLCAkd2lkdGgsICRsaW5lcywgJGZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZSk7XG59XG4iLCIvLyBAcHJpdmF0ZSBEZWZhdWx0IGZvbnQtc2l6ZSBmb3IgYWxsIGJyb3dzZXJzXG4kYnJvd3Nlci1kZWZhdWx0LWZvbnQtc2l6ZTogMTZweDtcblxuLy8gQmFzZSBmb250IHNpemUgaW4gcGl4ZWxzLCBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLlxuLy8gU2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBmb250LXNpemUgb2YgdGhlIGh0bWwgZWxlbWVudC5cbiRiYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgZmFsbGJhY2sgdmFsdWVzIGluIHB4IHdoZW4gb3V0cHV0dGluZyByZW1zLlxuJHJlbS13aXRoLXB4LWZhbGxiYWNrOiB0cnVlICFkZWZhdWx0O1xuXG5cbi8vIENvbnZlcnQgYW55IENTUyA8bGVuZ3RoPiBvciA8cGVyY2VudGFnZT4gdmFsdWUgdG8gYW55IGFub3RoZXIuXG4vL1xuLy8gQHBhcmFtICRsZW5ndGhcbi8vICAgQSBjc3MgPGxlbmd0aD4gb3IgPHBlcmNlbnRhZ2U+IHZhbHVlXG4vL1xuLy8gQHBhcmFtICR0by11bml0XG4vLyAgIFN0cmluZyBtYXRjaGluZyBhIGNzcyB1bml0IGtleXdvcmQsIGUuZy4gJ2VtJywgJyUnLCBldGMuXG4vL1xuLy8gQHBhcmFtICRmcm9tLWNvbnRleHRcbi8vICAgV2hlbiBjb252ZXJ0aW5nIGZyb20gcmVsYXRpdmUgdW5pdHMsIHRoZSBhYnNvbHV0ZSBsZW5ndGggKGluIHB4KSB0b1xuLy8gICB3aGljaCAkbGVuZ3RoIHJlZmVycyAoZS5nLiBmb3IgJGxlbmd0aHMgaW4gZW0gdW5pdHMsIHdvdWxkIG5vcm1hbGx5IGJlIHRoZVxuLy8gICBmb250LXNpemUgb2YgdGhlIGN1cnJlbnQgZWxlbWVudCkuXG4vL1xuLy8gQHBhcmFtICR0by1jb250ZXh0XG4vLyAgIEZvciBjb252ZXJ0aW5nIHRvIHJlbGF0aXZlIHVuaXRzLCB0aGUgYWJzb2x1dGUgbGVuZ3RoIGluIHB4IHRvIHdoaWNoIHRoZVxuLy8gICBvdXRwdXQgdmFsdWUgd2lsbCByZWZlci4gRGVmYXVsdHMgdG8gdGhlIHNhbWUgYXMgJGZyb20tY29udGV4dCwgc2luY2UgaXQgaXNcbi8vICAgcmFyZWx5IG5lZWRlZC5cbkBmdW5jdGlvbiBjb252ZXJ0LWxlbmd0aChcblx0JGxlbmd0aCxcblx0JHRvLXVuaXQsXG5cdCRmcm9tLWNvbnRleHQ6ICRiYXNlLWZvbnQtc2l6ZSxcblx0JHRvLWNvbnRleHQ6ICRmcm9tLWNvbnRleHRcbikge1xuXG5cdCRmcm9tLXVuaXQ6IHVuaXQoJGxlbmd0aCk7XG5cblx0Ly8gT3B0aW1pemUgZm9yIGNhc2VzIHdoZXJlIGBmcm9tYCBhbmQgYHRvYCB1bml0cyBhcmUgYWNjaWRlbnRhbGx5IHRoZSBzYW1lLlxuXHRAaWYgJGZyb20tdW5pdCA9PSAkdG8tdW5pdCB7IEByZXR1cm4gJGxlbmd0aDsgfVxuXG5cdC8vIENvbnRleHQgdmFsdWVzIG11c3QgYmUgaW4gcHggc28gd2UgY2FuIGRldGVybWluZSBhIGNvbnZlcnNpb24gcmF0aW8gZm9yXG5cdC8vIHJlbGF0aXZlIHVuaXRzLlxuXHRAaWYgdW5pdCgkZnJvbS1jb250ZXh0KSAhPSAncHgnIHsgQHdhcm4gXCJQYXJlbWV0ZXIgJGZyb20tY29udGV4dCBtdXN0IHJlc29sdmUgdG8gYSB2YWx1ZSBpbiBwaXhlbCB1bml0cy5cIjsgfVxuXHRAaWYgdW5pdCgkdG8tY29udGV4dCkgIT0gJ3B4JyB7IEB3YXJuIFwiUGFyYW1ldGVyICR0by1jb250ZXh0IG11c3QgcmVzb2x2ZSB0byBhIHZhbHVlIGluIHBpeGVsIHVuaXRzLlwiOyB9XG5cblx0Ly8gQ29udmVydCBpbnB1dCBsZW5ndGggdG8gcGl4ZWxzXG5cdCRweC1sZW5ndGg6ICRsZW5ndGg7XG5cblx0QGlmICRmcm9tLXVuaXQgIT0gJ3B4JyB7XG5cdFx0Ly8gQ29udmVydCByZWxhdGl2ZSB1bml0cyB1c2luZyB0aGUgZnJvbS1jb250ZXh0IHBhcmFtZXRlci5cblx0XHRAaWYgICAgICAkZnJvbS11bml0ID09ICdlbScgIHsgJHB4LWxlbmd0aDogJGxlbmd0aCAqICRmcm9tLWNvbnRleHQgLyAxZW0gfVxuXHRcdEBlbHNlIGlmICRmcm9tLXVuaXQgPT0gJ3JlbScgeyAkcHgtbGVuZ3RoOiAkbGVuZ3RoICogJGJhc2UtZm9udC1zaXplIC8gMXJlbSB9XG5cdFx0QGVsc2UgaWYgJGZyb20tdW5pdCA9PSAnJScgICB7ICRweC1sZW5ndGg6ICRsZW5ndGggKiAkZnJvbS1jb250ZXh0IC8gMTAwJSB9XG5cdFx0QGVsc2UgaWYgJGZyb20tdW5pdCA9PSAnZXgnICB7ICRweC1sZW5ndGg6ICRsZW5ndGggKiAkZnJvbS1jb250ZXh0IC8gMmV4IH1cblx0XHQvLyBDb252ZXJ0IGFic29sdXRlIHVuaXRzIHVzaW5nIFNhc3MnIGNvbnZlcnNpb24gdGFibGUuXG5cdFx0QGVsc2UgaWYgJGZyb20tdW5pdCA9PSAnaW4nICBvclxuXHRcdFx0XHRcdFx0ICRmcm9tLXVuaXQgPT0gJ21tJyAgb3Jcblx0XHRcdFx0XHRcdCAkZnJvbS11bml0ID09ICdjbScgIG9yXG5cdFx0XHRcdFx0XHQgJGZyb20tdW5pdCA9PSAncHQnICBvclxuXHRcdFx0XHRcdFx0ICRmcm9tLXVuaXQgPT0gJ3BjJyAgeyAkcHgtbGVuZ3RoOiAwcHggKyAkbGVuZ3RoIH1cblx0XHQvLyBDZXJ0YWluIHVuaXRzIGNhbid0IGJlIGNvbnZlcnRlZC5cblx0XHRAZWxzZSBpZiAkZnJvbS11bml0ID09ICdjaCcgIG9yXG5cdFx0XHRcdFx0XHQgJGZyb20tdW5pdCA9PSAndncnICBvclxuXHRcdFx0XHRcdFx0ICRmcm9tLXVuaXQgPT0gJ3ZoJyAgb3Jcblx0XHRcdFx0XHRcdCAkZnJvbS11bml0ID09ICd2bWluJyB7XG5cdFx0XHRAd2FybiBcIiN7JGZyb20tdW5pdH0gdW5pdHMgY2FuJ3QgYmUgcmVsaWFibHkgY29udmVydGVkOyBSZXR1cm5pbmcgb3JpZ2luYWwgdmFsdWUuXCI7XG5cdFx0XHRAcmV0dXJuICRsZW5ndGg7XG5cdFx0fVxuXHRcdEBlbHNlIHtcblx0XHRcdEB3YXJuIFwiI3skZnJvbS11bml0fSBpcyBhbiB1bmtub3duIGxlbmd0aCB1bml0LiBSZXR1cm5pbmcgb3JpZ2luYWwgdmFsdWUuXCI7XG5cdFx0XHRAcmV0dXJuICRsZW5ndGg7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ29udmVydCBsZW5ndGggaW4gcGl4ZWxzIHRvIHRoZSBvdXRwdXQgdW5pdFxuXHQkb3V0cHV0LWxlbmd0aDogJHB4LWxlbmd0aDtcblx0QGlmICR0by11bml0ICE9ICdweCcge1xuXHRcdC8vIFJlbGF0aXZlIHVuaXRzXG5cdFx0QGlmICAgICAgJHRvLXVuaXQgPT0gJ2VtJyAgeyAkb3V0cHV0LWxlbmd0aDogJHB4LWxlbmd0aCAqIDFlbSAvICR0by1jb250ZXh0IH1cblx0XHRAZWxzZSBpZiAkdG8tdW5pdCA9PSAncmVtJyB7ICRvdXRwdXQtbGVuZ3RoOiAkcHgtbGVuZ3RoICogMXJlbSAvICRiYXNlLWZvbnQtc2l6ZSB9XG5cdFx0QGVsc2UgaWYgJHRvLXVuaXQgPT0gJyUnICAgeyAkb3V0cHV0LWxlbmd0aDogJHB4LWxlbmd0aCAqIDEwMCUgLyAkdG8tY29udGV4dCB9XG5cdFx0QGVsc2UgaWYgJHRvLXVuaXQgPT0gJ2V4JyAgeyAkb3V0cHV0LWxlbmd0aDogJHB4LWxlbmd0aCAqIDJleCAvICR0by1jb250ZXh0IH1cblx0XHQvLyBBYnNvbHV0ZSB1bml0c1xuXHRcdEBlbHNlIGlmICR0by11bml0ID09ICdpbicgIHsgJG91dHB1dC1sZW5ndGg6IDBpbiArICRweC1sZW5ndGggfVxuXHRcdEBlbHNlIGlmICR0by11bml0ID09ICdtbScgIHsgJG91dHB1dC1sZW5ndGg6IDBtbSArICRweC1sZW5ndGggfVxuXHRcdEBlbHNlIGlmICR0by11bml0ID09ICdjbScgIHsgJG91dHB1dC1sZW5ndGg6IDBjbSArICRweC1sZW5ndGggfVxuXHRcdEBlbHNlIGlmICR0by11bml0ID09ICdwdCcgIHsgJG91dHB1dC1sZW5ndGg6IDBwdCArICRweC1sZW5ndGggfVxuXHRcdEBlbHNlIGlmICR0by11bml0ID09ICdwYycgIHsgJG91dHB1dC1sZW5ndGg6IDBwYyArICRweC1sZW5ndGggfVxuXHRcdC8vIE5vbi1jb252ZXJ0aWJsZSB1bml0c1xuXHRcdEBlbHNlIGlmICR0by11bml0ID09ICdjaCcgIG9yXG5cdFx0XHRcdFx0XHQgJHRvLXVuaXQgPT0gJ3Z3JyAgb3Jcblx0XHRcdFx0XHRcdCAkdG8tdW5pdCA9PSAndmgnICBvclxuXHRcdFx0XHRcdFx0ICR0by11bml0ID09ICd2bWluJyB7XG5cdFx0XHRAd2FybiBcIiN7JHRvLXVuaXR9IHVuaXRzIGNhbid0IGJlIHJlbGlhYmx5IGNvbnZlcnRlZDsgUmV0dXJuaW5nIG9yaWdpbmFsIHZhbHVlLlwiO1xuXHRcdFx0QHJldHVybiAkbGVuZ3RoO1xuXHRcdH1cblx0XHRAZWxzZSB7XG5cdFx0XHRAd2FybiBcIiN7JHRvLXVuaXR9IGlzIGFuIHVua25vd24gbGVuZ3RoIHVuaXQuIFJldHVybmluZyBvcmlnaW5hbCB2YWx1ZS5cIjtcblx0XHRcdEByZXR1cm4gJGxlbmd0aDtcblx0XHR9XG5cdH1cblxuXHRAcmV0dXJuICRvdXRwdXQtbGVuZ3RoO1xufVxuXG5cbi8vIEBwcml2YXRlIEdldCB0aGUgcHgvcmVtIHZlcnNpb25zIG9mIGEgdmFsdWUuXG5AZnVuY3Rpb24gcmVtLWZhbGxiYWNrLXZhbHVlcygkdmFsdWUpIHtcbiAgJF9yZXR1cm46IChcbiAgICBweDogJHZhbHVlLFxuICAgIHJlbTogJHZhbHVlLFxuICApO1xuXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbnVtYmVyIGFuZCBub3QgdW5pdGxlc3MoJHZhbHVlKSB7XG4gICAgQGlmIHVuaXQoJHZhbHVlKSA9PSByZW0ge1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBweDogcm91bmQoY29udmVydC1sZW5ndGgoJHZhbHVlLCBweCkpLFxuICAgICAgKSk7XG4gICAgfSBAZWxzZSBpZiB1bml0KCR2YWx1ZSkgPT0gcHgge1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBweDogcm91bmQoJHZhbHVlKSxcbiAgICAgICAgcmVtOiBjb252ZXJ0LWxlbmd0aCgkdmFsdWUsIHJlbSksXG4gICAgICApKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG4vLyBAcHJpdmF0ZSBHZXQgdGhlIHB4L3JlbSB2ZXJzaW9ucyBvZiBhIGxpc3QgKG9yIG5lc3RlZCBsaXN0cykuXG5AZnVuY3Rpb24gbGlzdC1jb252ZXJ0LXJlbXMoJHZhbHVlKSB7XG4gICRfZW1wdHk6IChcbiAgICBweDogKCksXG4gICAgcmVtOiAoKSxcbiAgKTtcbiAgJF9yZXR1cm46ICRfZW1wdHk7XG4gICRfc2VwOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbGlzdCB7XG4gICAgJF9zZXA6IGxpc3Qtc2VwYXJhdG9yKCR2YWx1ZSk7XG4gICAgQGVhY2ggJHN1YiBpbiAkdmFsdWUge1xuICAgICAgJF90aGlzOiBsaXN0LWNvbnZlcnQtcmVtcygkc3ViKTtcbiAgICAgICRfcmV0dXJuOiAoXG4gICAgICAgIHB4OiBhcHBlbmQobWFwLWdldCgkX3JldHVybiwgcHgpLCBtYXAtZ2V0KCRfdGhpcywgcHgpLCAkX3NlcCksXG4gICAgICAgIHJlbTogYXBwZW5kKG1hcC1nZXQoJF9yZXR1cm4sIHJlbSksIG1hcC1nZXQoJF90aGlzLCByZW0pLCAkX3NlcCksXG4gICAgICApO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJF90aGlzOiByZW0tZmFsbGJhY2stdmFsdWVzKCR2YWx1ZSk7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF90aGlzKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gT3V0cHV0IGEgZ2l2ZW4gc3R5bGUgcnVsZSBjb250YWluaW5nIHJlbSB2YWx1ZXMgYWxvbmcgd2l0aCBhbiAob3B0aW9uYWwpXG4vLyBmYWxsYmFjayBydWxlIGZvciBvbGRlciBicm93c2VycyAod2l0aCByZW0gdmFsdWVzIGNvbnZlcnRlZCB0byBweCkuXG4vL1xuLy8gQHBhcmFtICRwcm9wZXJ0eVxuLy8gICBUaGUgY3NzIHByb3BlcnR5IG5hbWUuXG4vL1xuLy8gQHBhcmFtICR2YWx1ZXNcbi8vICAgVGhlIHZhbHVlIG9yIGxpc3Qgb2YgdmFsdWVzIGZvciB0aGUgcHJvcGVydHkuXG4vL1xuLy8gQHBhcmFtICR1c2UtcHgtZmFsbGJhY2tcbi8vICAgWyB0cnVlIHwgZmFsc2UgXVxuLy9cbkBtaXhpbiByZW0oJHByb3BlcnR5LCAkdmFsdWVzLCAkdXNlLXB4LWZhbGxiYWNrOiAkcmVtLXdpdGgtcHgtZmFsbGJhY2spIHtcblxuICAvLyBnZXQgY29udmVydGVkIHZhbHVlcy5cbiAgJHZhbHVlczogbGlzdC1jb252ZXJ0LXJlbXMoJHZhbHVlcyk7XG4gICRweC12YWx1ZXM6IG1hcC1nZXQoJHZhbHVlcywgcHgpO1xuICAkdmFsdWVzOiBtYXAtZ2V0KCR2YWx1ZXMsIHJlbSk7XG5cbiAgLy8gVXNlIHBpeGVsIGZhbGxiYWNrIGZvciBicm93c2VycyB0aGF0IGRvbid0IHVuZGVyc3RhbmQgcmVtIHVuaXRzLlxuICBAaWYgJHVzZS1weC1mYWxsYmFjayBhbmQgJHB4LXZhbHVlcyAhPSAkdmFsdWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICRweC12YWx1ZXM7XG4gIH1cblxuICAvLyBVc2UgcmVtIHZhbHVlcyBmb3IgZXZlcnlvbmUgZWxzZSAob3ZlcnJpZGVzIHBpeGVsIHZhbHVlcykuXG4gICN7JHByb3BlcnR5fTogJHZhbHVlcztcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEEgbWl4aW4gZm9yIGdlbmVyYXRpbmcgdmVuZG9yIHByZWZpeGVzIG9uIG5vbi1zdGFuZGFyZGl6ZWQgcHJvcGVydGllcy5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcHJvcGVydHlcbi8vLyAgIFByb3BlcnR5IHRvIHByZWZpeFxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWVcbi8vLyAgIFZhbHVlIHRvIHVzZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcHJlZml4ZXNcbi8vLyAgIFByZWZpeGVzIHRvIGRlZmluZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci1yYWRpdXMsIDEwcHgsIHdlYmtpdCBtcyBzcGVjKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLXdlYmtpdFxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbW96aWxsYVxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbWljcm9zb2Z0XG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1vcGVyYVxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itc3BlY1xuXG5AbWl4aW4gcHJlZml4ZXIoJHByb3BlcnR5LCAkdmFsdWUsICRwcmVmaXhlcykge1xuICBAZWFjaCAkcHJlZml4IGluICRwcmVmaXhlcyB7XG4gICAgQGlmICRwcmVmaXggPT0gd2Via2l0IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci13ZWJraXQge1xuICAgICAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtb3oge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW1vemlsbGEge1xuICAgICAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3ItbWljcm9zb2Z0IHtcbiAgICAgICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBvIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1vcGVyYSB7XG4gICAgICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBzcGVjIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1zcGVjIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSAge1xuICAgICAgQHdhcm4gXCJVbnJlY29nbml6ZWQgcHJlZml4OiAjeyRwcmVmaXh9XCI7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCkge1xuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1vemlsbGE6ICAgZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLXNwZWM6ICAgICAgZmFsc2UgIWdsb2JhbDtcbn1cbiIsImJ1dHRvbiB7XG4gIEBpbmNsdWRlIGFwcGVhcmFuY2Uobm9uZSk7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtZmFtaWx5OiAkc3BlY2lhbC1mb250LWZhbWlseTtcbn1cblxuLmJ1dHRvbiB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1mYW1pbHk6ICRzcGVjaWFsLWZvbnQtZmFtaWx5O1xufVxuXG4iLCIvLyBWYXJpYWJsZXNcbi8vXG5cbi8vIENvbG9yc1xuLy9cbi8vIEdyYXlzY2FsZSBhbmQgYnJhbmQgY29sb3JzLlxuXG4kYnJhbmQteWVsbG93OiAjZmZlNTM3ICFkZWZhdWx0O1xuJGJyYW5kLWRhcmtibHVlOiAjNTA1MjZkICFkZWZhdWx0OztcblxuXG5cbi8vIEJvZHlcbi8vXG4vLyBTZXR0aW5ncyBmb3IgdGhlIGA8Ym9keT5gIGVsZW1lbnQuXG5cbiRib2R5LWJnOiAgICAjMDAwICFkZWZhdWx0O1xuJGJvZHktY29sb3I6ICNkYmRkZmYgIWRlZmF1bHQ7XG5cblxuLy8gVHlwb2dyYXBoeVxuLy9cblxuJGZvbnQtZmFtaWx5LWJhc2U6ICAgICdUaXRpbGxpdW0gV2ViJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiAhZGVmYXVsdDtcbiRzcGVjaWFsLWZvbnQtZmFtaWx5OiAnRXhvIDInLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmICFkZWZhdWx0O1xuXG5cbi8vIFBpeGVsIHZhbHVlIHVzZWQgdG8gcmVzcG9uc2l2ZWx5IHNjYWxlIGFsbCB0eXBvZ3JhcGh5LiBBcHBsaWVkIHRvIHRoZSBgPGh0bWw+YCBlbGVtZW50LlxuJGZvbnQtc2l6ZS1yb290OiAgICAgICAgMTZweCAhZGVmYXVsdDtcblxuJGZvbnQtc2l6ZS1iYXNlOiAgICAgICAgMTZweCAhZGVmYXVsdDtcbiRmb250LXNpemUtbGc6ICAgICAgICAgIDE4cHggIWRlZmF1bHQ7XG4vLyRmb250LXNpemUtbWQ6ICAgICAgICAgIDE1cHggIWRlZmF1bHQ7XG4vLyRmb250LXNpemUtc206ICAgICAgICAgIDE0cHggIWRlZmF1bHQ7XG4vLyRmb250LXNpemUteHhzOiAgICAgICAgIDEzcHggIWRlZmF1bHQ7XG4vLyRmb250LXNpemUteHh4czogICAgICAgIDEycHggIWRlZmF1bHQ7XG4vLyRmb250LXNpemUteHh4eHM6ICAgICAgIDExcHggIWRlZmF1bHQ7XG5cbi8vJGxpbmUtaGVpZ2h0LWJhc2U6ICAgICAgMS41NjI1ICFkZWZhdWx0O1xuXG4kZm9udC1zaXplLWgxOiAgICAgICAgICAzN3B4ICFkZWZhdWx0O1xuJGZvbnQtc2l6ZS1oMjogICAgICAgICAgMjZweCAhZGVmYXVsdDtcbi8vJGZvbnQtc2l6ZS1oMzogICAgICAgICAgMjhweCAhZGVmYXVsdDtcbi8vJGZvbnQtc2l6ZS1oNDogICAgICAgICAgMjRweCAhZGVmYXVsdDtcbi8vJGZvbnQtc2l6ZS1oNTogICAgICAgICAgMjJweCAhZGVmYXVsdDtcblxuJGZvbnQtd2VpZ2h0LWgxOiAgICAgICAgMzAwICFkZWZhdWx0O1xuXG4vLyRkaXNwbGF5MS1zaXplOiAgICAgICAgIDYwcHggIWRlZmF1bHQ7XG4vLyRkaXNwbGF5Mi1zaXplOiAgICAgICAgIDQ4cHggIWRlZmF1bHQ7XG5cbi8vJGRpc3BsYXkxLXdlaWdodDogICAgICAgMzAwICFkZWZhdWx0O1xuLy8kZGlzcGxheTItd2VpZ2h0OiAgICAgICAzMDAgIWRlZmF1bHQ7XG5cbiRoZWFkaW5ncy1tYXJnaW4tYm90dG9tOiByaHl0aG0oNikgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtZm9udC1mYW1pbHk6ICAgJHNwZWNpYWwtZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtZm9udC13ZWlnaHQ6ICAgNjAwICFkZWZhdWx0O1xuJGhlYWRpbmdzLWNvbG9yOiAgICAgICAgICNGRkZGRkYgIWRlZmF1bHQ7XG5cbi8vJGxlYWQtZm9udC1zaXplOiAgICAgICAgIDIycHggIWRlZmF1bHQ7XG4vLyRsZWFkLWZvbnQtd2VpZ2h0OiAgICAgICAzMDAgIWRlZmF1bHQ7XG4vL1xuLy8kZHQtZm9udC13ZWlnaHQ6ICAgICAgICAgYm9sZCAhZGVmYXVsdDtcblxuXG4vLyBCb3JkZXJzXG4vL1xuXG4kYm9yZGVyLXdpZHRoOiAxcHggIWRlZmF1bHQ7XG5cbiRjdXJzb3ItZGlzYWJsZWQ6ICAgICAgICAgICAgICAgIG5vdC1hbGxvd2VkICFkZWZhdWx0O1xuXG4vLyRoci1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICRncmF5LWxpZ2h0ICFkZWZhdWx0O1xuLy8kaHItYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG4vLyBMaW5rc1xuLy9cblxuJGxpbmstY29sb3I6ICAgICAgICAgICAgI2RiZGRmZiAhZGVmYXVsdDtcbiRsaW5rLWRlY29yYXRpb246ICAgICAgIG5vbmUgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgICBsaWdodGVuKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogdW5kZXJsaW5lICFkZWZhdWx0OyIsIi8vIFJlYm9vdFxuLy9cblxuLy8gUmVzZXQgdGhlIGJveC1zaXppbmdcbi8vXG5cbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5cbi8vIE1ha2Ugdmlld3BvcnQgcmVzcG9uc2l2ZVxuLy9cbi8vIEB2aWV3cG9ydCBpcyBuZWVkZWQgYmVjYXVzZSBJRSAxMCsgZG9lc24ndCBob25vciA8bWV0YSBuYW1lPVwidmlld3BvcnRcIj4gaW5cbi8vIHNvbWUgY2FzZXMuIFNlZSBodHRwOi8vdGlta2FkbGVjLmNvbS8yMDEyLzEwL2llMTAtc25hcC1tb2RlLWFuZC1yZXNwb25zaXZlLWRlc2lnbi8uXG4vLyBFdmVudHVhbGx5IEB2aWV3cG9ydCB3aWxsIHJlcGxhY2UgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCI+LlxuLy9cbi8vIEhvd2V2ZXIsIGBkZXZpY2Utd2lkdGhgIGlzIGJyb2tlbiBvbiBJRSAxMCBvbiBXaW5kb3dzIChQaG9uZSkgOCxcbi8vIChzZWUgaHR0cDovL3RpbWthZGxlYy5jb20vMjAxMy8wMS93aW5kb3dzLXBob25lLTgtYW5kLWRldmljZS13aWR0aC8gYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTA0OTcpXG4vLyBhbmQgdGhlIGZpeCBmb3IgdGhhdCBpbnZvbHZlcyBhIHNuaXBwZXQgb2YgSmF2YVNjcmlwdCB0byBzbmlmZiB0aGUgdXNlciBhZ2VudFxuLy8gYW5kIGFwcGx5IHNvbWUgY29uZGl0aW9uYWwgQ1NTLlxuLy9cbi8vIFNlZSBodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbS9nZXR0aW5nLXN0YXJ0ZWQvI3N1cHBvcnQtaWUxMC13aWR0aCBmb3IgdGhlIHJlbGV2YW50IGhhY2suXG4vL1xuLy8gV3JhcCBgQHZpZXdwb3J0YCB3aXRoIGBAYXQtcm9vdGAgZm9yIHdoZW4gZm9sa3MgZG8gYSBuZXN0ZWQgaW1wb3J0IChlLmcuLFxuLy8gYC5jbGFzcy1uYW1lIHsgQGltcG9ydCBcImJvb3RzdHJhcFwiOyB9YCkuXG5AYXQtcm9vdCB7XG4gIEAtbXMtdmlld3BvcnQgeyB3aWR0aDogZGV2aWNlLXdpZHRoOyB9XG59XG5cblxuLy9cbi8vIFJlc2V0IEhUTUwsIGJvZHksIGFuZCBtb3JlXG4vL1xuXG5odG1sIHtcbiAgZm9udC1zaXplOiAkZm9udC1zaXplLXJvb3Q7XG4gIC8vIEFzIGEgc2lkZS1lZmZlY3Qgb2Ygc2V0dGluZyB0aGUgQHZpZXdwb3J0IGFib3ZlLFxuICAvLyBJRTExICYgRWRnZSBtYWtlIHRoZSBzY3JvbGxiYXIgb3ZlcmxhcCB0aGUgY29udGVudCBhbmQgYXV0b21hdGljYWxseSBoaWRlIGl0c2VsZiB3aGVuIG5vdCBpbiB1c2UuXG4gIC8vIFVuZm9ydHVuYXRlbHksIHRoZSBhdXRvLXNob3dpbmcgb2YgdGhlIHNjcm9sbGJhciBpcyBzb21ldGltZXMgdG9vIHNlbnNpdGl2ZSxcbiAgLy8gdGh1cyBtYWtpbmcgaXQgaGFyZCB0byBjbGljayBvbiBzdHVmZiBuZWFyIHRoZSByaWdodCBlZGdlIG9mIHRoZSBwYWdlLlxuICAvLyBTbyB3ZSBhZGQgdGhpcyBzdHlsZSB0byBmb3JjZSBJRTExICYgRWRnZSB0byB1c2UgYSBcIm5vcm1hbFwiLCBub24tb3ZlcmxhcHBpbmcsIG5vbi1hdXRvLWhpZGluZyBzY3JvbGxiYXIuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE4NTQzXG4gIC1tcy1vdmVyZmxvdy1zdHlsZTogc2Nyb2xsYmFyO1xuICAvLyBDaGFuZ2VzIHRoZSBkZWZhdWx0IHRhcCBoaWdobGlnaHQgdG8gYmUgY29tcGxldGVseSB0cmFuc3BhcmVudCBpbiBpT1MuXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLDAsMCwwKTtcbn1cblxuYm9keSB7XG4gIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oJGZvbnQtc2l6ZS1iYXNlLCA2KTtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xuICBjb2xvcjogJGJvZHktY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRib2R5LWJnO1xufVxuXG4vLyBTdXBwcmVzcyB0aGUgZm9jdXMgb3V0bGluZSBvbiBlbGVtZW50cyB0aGF0IGNhbm5vdCBiZSBhY2Nlc3NlZCB2aWEga2V5Ym9hcmQuXG4vLyBUaGlzIHByZXZlbnRzIGFuIHVud2FudGVkIGZvY3VzIG91dGxpbmUgZnJvbSBhcHBlYXJpbmcgYXJvdW5kIGVsZW1lbnRzIHRoYXRcbi8vIG1pZ2h0IHN0aWxsIHJlc3BvbmQgdG8gcG9pbnRlciBldmVudHMuXG4vL1xuLy8gQ3JlZGl0OiBodHRwczovL2dpdGh1Yi5jb20vc3VpdGNzcy9iYXNlXG5bdGFiaW5kZXg9XCItMVwiXTpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuXG4vL1xuLy8gVHlwb2dyYXBoeVxuLy9cblxuLy8gUmVtb3ZlIHRvcCBtYXJnaW5zIGZyb20gaGVhZGluZ3Ncbi8vXG4vLyBCeSBkZWZhdWx0LCBgPGgxPmAtYDxoNj5gIGFsbCByZWNlaXZlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMuIFdlIG51a2UgdGhlIHRvcFxuLy8gbWFyZ2luIGZvciBlYXNpZXIgY29udHJvbCB3aXRoaW4gdHlwZSBzY2FsZXMgYXMgaXQgYXZvaWRzIG1hcmdpbiBjb2xsYXBzaW5nLlxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi8vIFJlc2V0IG1hcmdpbnMgb24gcGFyYWdyYXBoc1xuLy9cbi8vIFNpbWlsYXJseSwgdGhlIHRvcCBtYXJnaW4gb24gYDxwPmBzIGdldCByZXNldC4gSG93ZXZlciwgd2UgYWxzbyByZXNldCB0aGVcbi8vIGJvdHRvbSBtYXJnaW4gdG8gdXNlIGByZW1gIHVuaXRzIGluc3RlYWQgb2YgYGVtYC5cbnAge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiByaHl0aG0oMyk7XG59XG5cbi8vIEFiYnJldmlhdGlvbnMgYW5kIGFjcm9ueW1zXG5hYmJyW3RpdGxlXSxcbiAgLy8gQWRkIGRhdGEtKiBhdHRyaWJ1dGUgdG8gaGVscCBvdXQgb3VyIHRvb2x0aXAgcGx1Z2luLCBwZXIgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy81MjU3XG5hYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdIHtcbiAgY3Vyc29yOiBoZWxwO1xuICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkICMwMDA7XG59XG5cbmFkZHJlc3Mge1xuICBtYXJnaW4tYm90dG9tOiByaHl0aG0oMyk7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbm9sLFxudWwsXG5kbCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IHJoeXRobSgzKTtcbn1cblxub2wgb2wsXG51bCB1bCxcbm9sIHVsLFxudWwgb2wge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4vL2R0IHtcbi8vICBmb250LXdlaWdodDogJGR0LWZvbnQtd2VpZ2h0O1xuLy99XG4vL1xuLy9kZCB7XG4vLyAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKDIpO1xuLy8gIG1hcmdpbi1sZWZ0OiAwOyAvLyBVbmRvIGJyb3dzZXIgZGVmYXVsdFxuLy99XG4vL1xuLy9ibG9ja3F1b3RlIHtcbi8vICBtYXJnaW46IDAgMCByaHl0aG0oMyk7XG4vL31cblxuXG4vL1xuLy8gTGlua3Ncbi8vXG5cbmEge1xuICBjb2xvcjogJGxpbmstY29sb3I7XG4gIHRleHQtZGVjb3JhdGlvbjogJGxpbmstZGVjb3JhdGlvbjtcblxuICAmOmZvY3VzLFxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJGxpbmstaG92ZXItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1ob3Zlci1kZWNvcmF0aW9uO1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgQGluY2x1ZGUgdGFiLWZvY3VzKCk7XG4gIH1cbn1cblxuLy8gQW5kIHVuZG8gdGhlc2Ugc3R5bGVzIGZvciBwbGFjZWhvbGRlciBsaW5rcy9uYW1lZCBhbmNob3JzICh3aXRob3V0IGhyZWYpXG4vLyB3aGljaCBoYXZlIG5vdCBiZWVuIG1hZGUgZXhwbGljaXRseSBrZXlib2FyZC1mb2N1c2FibGUgKHdpdGhvdXQgdGFiaW5kZXgpLlxuLy8gSXQgd291bGQgYmUgbW9yZSBzdHJhaWdodGZvcndhcmQgdG8ganVzdCB1c2UgYVtocmVmXSBpbiBwcmV2aW91cyBibG9jaywgYnV0IHRoYXRcbi8vIGNhdXNlcyBzcGVjaWZpY2l0eSBpc3N1ZXMgaW4gbWFueSBvdGhlciBzdHlsZXMgdGhhdCBhcmUgdG9vIGNvbXBsZXggdG8gZml4LlxuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTk0MDJcblxuYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSkge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICY6Zm9jdXMsXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbn1cblxuXG4vL1xuLy8gQ29kZVxuLy9cblxucHJlIHtcbiAgLy8gUmVtb3ZlIGJyb3dzZXIgZGVmYXVsdCB0b3AgbWFyZ2luXG4gIG1hcmdpbi10b3A6IDA7XG4gIC8vIFJlc2V0IGJyb3dzZXIgZGVmYXVsdCBvZiBgMWVtYCB0byB1c2UgYHJlbWBzXG4gIG1hcmdpbi1ib3R0b206IHJoeXRobSgzKTtcbiAgLy8gTm9ybWFsaXplIHY0IHJlbW92ZWQgdGhpcyBwcm9wZXJ0eSwgY2F1c2luZyBgPHByZT5gIGNvbnRlbnQgdG8gYnJlYWsgb3V0IG9mIHdyYXBwaW5nIGNvZGUgc25pcHBldHNcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cblxuLy9cbi8vIEZpZ3VyZXNcbi8vXG5cbmZpZ3VyZSB7XG4gIC8vIE5vcm1hbGl6ZSBhZGRzIGBtYXJnaW5gIHRvIGBmaWd1cmVgcyBhcyBicm93c2VycyBhcHBseSBpdCBpbmNvbnNpc3RlbnRseS5cbiAgLy8gV2UgcmVzZXQgdGhhdCB0byBjcmVhdGUgYSBiZXR0ZXIgZmxvdyBpbi1wYWdlLlxuICBtYXJnaW46IDAgMCByaHl0aG0oMyk7XG59XG5cblxuLy9cbi8vIEltYWdlc1xuLy9cblxuaW1nIHtcbiAgLy8gQnkgZGVmYXVsdCwgYDxpbWc+YHMgYXJlIGBpbmxpbmUtYmxvY2tgLiBUaGlzIGFzc3VtZXMgdGhhdCwgYW5kIHZlcnRpY2FsbHlcbiAgLy8gY2VudGVycyB0aGVtLiBUaGlzIHdvbid0IGFwcGx5IHNob3VsZCB5b3UgcmVzZXQgdGhlbSB0byBgYmxvY2tgIGxldmVsLlxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAvLyBOb3RlOiBgPGltZz5gcyBhcmUgZGVsaWJlcmF0ZWx5IG5vdCBtYWRlIHJlc3BvbnNpdmUgYnkgZGVmYXVsdC5cbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG5cbi8vIGlPUyBcImNsaWNrYWJsZSBlbGVtZW50c1wiIGZpeCBmb3Igcm9sZT1cImJ1dHRvblwiXG4vL1xuLy8gRml4ZXMgXCJjbGlja2FiaWxpdHlcIiBpc3N1ZSAoYW5kIG1vcmUgZ2VuZXJhbGx5LCB0aGUgZmlyaW5nIG9mIGV2ZW50cyBzdWNoIGFzIGZvY3VzIGFzIHdlbGwpXG4vLyBmb3IgdHJhZGl0aW9uYWxseSBub24tZm9jdXNhYmxlIGVsZW1lbnRzIHdpdGggcm9sZT1cImJ1dHRvblwiXG4vLyBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2NsaWNrI1NhZmFyaV9Nb2JpbGVcblxuW3JvbGU9XCJidXR0b25cIl0ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cblxuLy8gQXZvaWQgMzAwbXMgY2xpY2sgZGVsYXkgb24gdG91Y2ggZGV2aWNlcyB0aGF0IHN1cHBvcnQgdGhlIGB0b3VjaC1hY3Rpb25gIENTUyBwcm9wZXJ0eS5cbi8vXG4vLyBJbiBwYXJ0aWN1bGFyLCB1bmxpa2UgbW9zdCBvdGhlciBicm93c2VycywgSUUxMStFZGdlIG9uIFdpbmRvd3MgMTAgb24gdG91Y2ggZGV2aWNlcyBhbmQgSUUgTW9iaWxlIDEwLTExXG4vLyBET04nVCByZW1vdmUgdGhlIGNsaWNrIGRlbGF5IHdoZW4gYDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGhcIj5gIGlzIHByZXNlbnQuXG4vLyBIb3dldmVyLCB0aGV5IERPIHN1cHBvcnQgcmVtb3ZpbmcgdGhlIGNsaWNrIGRlbGF5IHZpYSBgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb25gLlxuLy8gU2VlOlxuLy8gKiBodHRwOi8vdjQtYWxwaGEuZ2V0Ym9vdHN0cmFwLmNvbS9jb250ZW50L3JlYm9vdC8jY2xpY2stZGVsYXktb3B0aW1pemF0aW9uLWZvci10b3VjaFxuLy8gKiBodHRwOi8vY2FuaXVzZS5jb20vI2ZlYXQ9Y3NzLXRvdWNoLWFjdGlvblxuLy8gKiBodHRwOi8vcGF0cmlja2hsYXVrZS5naXRodWIuaW8vdG91Y2gvdGVzdHMvcmVzdWx0cy8jc3VwcHJlc3NpbmctMzAwbXMtZGVsYXlcblxuYSxcbmFyZWEsXG5idXR0b24sXG5bcm9sZT1cImJ1dHRvblwiXSxcbmlucHV0LFxubGFiZWwsXG5zZWxlY3QsXG5zdW1tYXJ5LFxudGV4dGFyZWEge1xuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cblxuXG4vL1xuLy8gVGFibGVzXG4vL1xuXG50YWJsZSB7XG4gIC8vIE5vIGxvbmdlciBwYXJ0IG9mIE5vcm1hbGl6ZSBzaW5jZSB2NFxuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAvLyBSZXNldCBmb3IgbmVzdGluZyB3aXRoaW4gcGFyZW50cyB3aXRoIGBiYWNrZ3JvdW5kLWNvbG9yYC5cbiAgLy9iYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmc7XG59XG5cbi8vY2FwdGlvbiB7XG4vLyAgcGFkZGluZy10b3A6ICR0YWJsZS1jZWxsLXBhZGRpbmc7XG4vLyAgcGFkZGluZy1ib3R0b206ICR0YWJsZS1jZWxsLXBhZGRpbmc7XG4vLyAgY29sb3I6ICR0ZXh0LW11dGVkO1xuLy8gIHRleHQtYWxpZ246IGxlZnQ7XG4vLyAgY2FwdGlvbi1zaWRlOiBib3R0b207XG4vL31cblxudGgge1xuICAvLyBDZW50ZXJlZCBieSBkZWZhdWx0LCBidXQgbGVmdC1hbGlnbi1lZCB0byBtYXRjaCB0aGUgYHRkYHMgYmVsb3cuXG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cblxuLy9cbi8vIEZvcm1zXG4vL1xuXG5sYWJlbCB7XG4gIC8vIEFsbG93IGxhYmVscyB0byB1c2UgYG1hcmdpbmAgZm9yIHNwYWNpbmcuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLy8gV29yayBhcm91bmQgYSBGaXJlZm94L0lFIGJ1ZyB3aGVyZSB0aGUgdHJhbnNwYXJlbnQgYGJ1dHRvbmAgYmFja2dyb3VuZFxuLy8gcmVzdWx0cyBpbiBhIGxvc3Mgb2YgdGhlIGRlZmF1bHQgYGJ1dHRvbmAgZm9jdXMgc3R5bGVzLlxuLy9cbi8vIENyZWRpdDogaHR0cHM6Ly9naXRodWIuY29tL3N1aXRjc3MvYmFzZS9cbmJ1dHRvbjpmb2N1cyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQ7XG4gIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtcbn1cblxuaW5wdXQsXG5idXR0b24sXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIC8vIFJlbW92ZSBhbGwgYG1hcmdpbmBzIHNvIG91ciBjbGFzc2VzIGRvbid0IGhhdmUgdG8gZG8gaXQgdGhlbXNlbHZlcy5cbiAgbWFyZ2luOiAwO1xuICAvLyBOb3JtYWxpemUgaW5jbHVkZXMgYGZvbnQ6IGluaGVyaXQ7YCwgc28gYGZvbnQtZmFtaWx5YC4gYGZvbnQtc2l6ZWAsIGV0YyBhcmVcbiAgLy8gcHJvcGVybHkgaW5oZXJpdGVkLiBIb3dldmVyLCBgbGluZS1oZWlnaHRgIGlzbid0IGFkZHJlc3NlZCB0aGVyZS4gVXNpbmcgdGhpc1xuICAvLyBlbnN1cmVzIHdlIGRvbid0IG5lZWQgdG8gdW5uZWNlc3NhcmlseSByZWRlY2xhcmUgdGhlIGdsb2JhbCBmb250IHN0YWNrLlxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgLy8gaU9TIGFkZHMgcm91bmRlZCBib3JkZXJzIGJ5IGRlZmF1bHRcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuaW5wdXRbdHlwZT1cInJhZGlvXCJdLFxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgLy8gQXBwbHkgYSBkaXNhYmxlZCBjdXJzb3IgZm9yIHJhZGlvcyBhbmQgY2hlY2tib3hlcy5cbiAgLy9cbiAgLy8gTm90ZTogTmVpdGhlciByYWRpb3Mgbm9yIGNoZWNrYm94ZXMgY2FuIGJlIHJlYWRvbmx5LlxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6ICRjdXJzb3ItZGlzYWJsZWQ7XG4gIH1cbn1cblxuXG5pbnB1dFt0eXBlPVwiZGF0ZVwiXSxcbmlucHV0W3R5cGU9XCJ0aW1lXCJdLFxuaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdLFxuaW5wdXRbdHlwZT1cIm1vbnRoXCJdIHtcbiAgLy8gUmVtb3ZlIHRoZSBkZWZhdWx0IGFwcGVhcmFuY2Ugb2YgdGVtcG9yYWwgaW5wdXRzIHRvIGF2b2lkIGEgTW9iaWxlIFNhZmFyaVxuICAvLyBidWcgd2hlcmUgc2V0dGluZyBhIGN1c3RvbSBsaW5lLWhlaWdodCBwcmV2ZW50cyB0ZXh0IGZyb20gYmVpbmcgdmVydGljYWxseVxuICAvLyBjZW50ZXJlZCB3aXRoaW4gdGhlIGlucHV0LlxuICAvL1xuICAvLyBCdWcgcmVwb3J0OiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzExMjY2XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbGlzdGJveDtcbn1cblxudGV4dGFyZWEge1xuICAvLyBUZXh0YXJlYXMgc2hvdWxkIHJlYWxseSBvbmx5IHJlc2l6ZSB2ZXJ0aWNhbGx5IHNvIHRoZXkgZG9uJ3QgYnJlYWsgdGhlaXIgKGhvcml6b250YWwpIGNvbnRhaW5lcnMuXG4gIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbmZpZWxkc2V0IHtcbiAgLy8gQ2hyb21lIGFuZCBGaXJlZm94IHNldCBhIGBtaW4td2lkdGg6IG1pbi1jb250ZW50O2Agb24gZmllbGRzZXRzLFxuICAvLyBzbyB3ZSByZXNldCB0aGF0IHRvIGVuc3VyZSBpdCBiZWhhdmVzIG1vcmUgbGlrZSBhIHN0YW5kYXJkIGJsb2NrIGVsZW1lbnQuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzEyMzU5LlxuICBtaW4td2lkdGg6IDA7XG4gIC8vIFJlc2V0IHRoZSBkZWZhdWx0IG91dGxpbmUgYmVoYXZpb3Igb2YgZmllbGRzZXRzIHNvIHRoZXkgZG9uJ3QgYWZmZWN0IHBhZ2UgbGF5b3V0LlxuICBib3JkZXI6IDA7XG59XG5cbmxlZ2VuZCB7XG4gIC8vIFJlc2V0IHRoZSBlbnRpcmUgbGVnZW5kIGVsZW1lbnQgdG8gbWF0Y2ggdGhlIGBmaWVsZHNldGBcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tYm90dG9tOiByaHl0aG0oMik7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbm91dHB1dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgLy8gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuICAvLyAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgLy8gIGNvbG9yOiAkaW5wdXQtY29sb3I7XG59XG5cbi8vIEFsd2F5cyBoaWRlIGFuIGVsZW1lbnQgd2l0aCB0aGUgYGhpZGRlbmAgSFRNTCBhdHRyaWJ1dGUgKGZyb20gUHVyZUNTUykuXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn0iLCIvLyBXZWJLaXQtc3R5bGUgZm9jdXNcblxuQG1peGluIHRhYi1mb2N1cygpIHtcbiAgLy8gRGVmYXVsdFxuICBvdXRsaW5lOiB0aGluIGRvdHRlZDtcbiAgLy8gV2ViS2l0XG4gIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtcbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG59XG4iLCIvLyBUeXBvZ3JhcGh5XG4vL1xuXG4vLyBIZWFkaW5nc1xuLy9cblxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNixcbi5oMSwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYge1xuICBtYXJnaW4tYm90dG9tOiAkaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTtcbiAgZm9udC1mYW1pbHk6ICRoZWFkaW5ncy1mb250LWZhbWlseTtcbiAgZm9udC13ZWlnaHQ6ICRoZWFkaW5ncy1mb250LXdlaWdodDtcbiAgY29sb3I6ICRoZWFkaW5ncy1jb2xvcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuaDEsIC5oMSB7XG4gIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oJGZvbnQtc2l6ZS1oMSwgOCk7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtaDE7XG59XG5cbmgyLCAuaDIge1xuICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKCRmb250LXNpemUtaDIsIDgpO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDM3cHgsIDEwKTtcbiAgfVxufVxuXG4vL2gzLCAuaDMge1xuLy8gIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oJGZvbnQtc2l6ZS1oMywgNik7XG4vL31cbi8vXG4vL2g0LCAuaDQge1xuLy8gIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oJGZvbnQtc2l6ZS1oNCwgNSk7XG4vL31cbi8vXG4vL2g1LCAuaDUge1xuLy8gIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oJGZvbnQtc2l6ZS1oNSwgNSk7XG4vL31cblxuXG4vLyBMZWFkIHBhcmFncmFwaFxuLy8ubGVhZCB7XG4vLyAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygkbGVhZC1mb250LXNpemUsIDUpO1xuLy8gIGZvbnQtd2VpZ2h0OiAkbGVhZC1mb250LXdlaWdodDtcbi8vfVxuXG5cbi8vIFR5cGUgZGlzcGxheSBjbGFzc2VzXG4vLy5kaXNwbGF5LTEge1xuLy8gIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oJGRpc3BsYXkxLXNpemUsIDEzKTtcbi8vICBmb250LXdlaWdodDogJGRpc3BsYXkxLXdlaWdodDtcbi8vfVxuXG4vLy5kaXNwbGF5LTIge1xuLy8gIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oJGRpc3BsYXkyLXNpemUsIDExKTtcbi8vICBmb250LXdlaWdodDogJGRpc3BsYXkyLXdlaWdodDtcbi8vfVxuXG5cbi8vIEhvcml6b250YWwgcnVsZXNcbi8vXG5cbi8vaHIge1xuLy8gIG1hcmdpbi10b3A6IHJoeXRobSgzKTtcbi8vICBtYXJnaW4tYm90dG9tOiByaHl0aG0oMyk7XG4vLyAgYm9yZGVyOiAwO1xuLy8gIGJvcmRlci10b3A6ICRoci1ib3JkZXItd2lkdGggc29saWQgJGhyLWJvcmRlci1jb2xvcjtcbi8vfVxuXG5cbi8vIEVtcGhhc2lzXG4vL1xuXG5zbWFsbCxcbi5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRCcmVha3BvaW50LVNldHRpbmdzOiAoXG4gICdkZWZhdWx0IG1lZGlhJzogYWxsLFxuICAnZGVmYXVsdCBmZWF0dXJlJzogbWluLXdpZHRoLFxuICAnZGVmYXVsdCBwYWlyJzogd2lkdGgsXG5cbiAgJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJzogZmFsc2UsXG4gICd0byBlbXMnOiBmYWxzZSxcbiAgJ3RyYW5zZm9ybSByZXNvbHV0aW9ucyc6IHRydWUsXG5cbiAgJ25vIHF1ZXJpZXMnOiBmYWxzZSxcbiAgJ25vIHF1ZXJ5IGZhbGxiYWNrcyc6IGZhbHNlLFxuXG4gICdiYXNlIGZvbnQgc2l6ZSc6IDE2cHgsXG5cbiAgJ2xlZ2FjeSBzeW50YXgnOiBmYWxzZVxuKTtcblxuJGJyZWFrcG9pbnQ6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImJyZWFrcG9pbnQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvY29udGV4dCc7XG5AaW1wb3J0ICdicmVha3BvaW50L2hlbHBlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9wYXJzZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvbm8tcXVlcnknO1xuXG5AaW1wb3J0ICdicmVha3BvaW50L3Jlc3BvbmQtdG8nO1xuXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9sZWdhY3ktc2V0dGluZ3NcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nO1xuXG4gIC8vIFJlc2V0IGNvbnRleHRzXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xuXG4gICRicmVha3BvaW50OiBicmVha3BvaW50KCRxdWVyeSwgZmFsc2UpO1xuXG4gICRxdWVyeS1zdHJpbmc6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeScpO1xuICAkcXVlcnktZmFsbGJhY2s6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdmYWxsYmFjaycpO1xuXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdjb250ZXh0IGhvbGRlcicpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeSBjb3VudCcpICFnbG9iYWw7XG5cbiAgLy8gQWxsb3cgZm9yIGFuIGFzLW5lZWRlZCBvdmVycmlkZSBvciB1c2FnZSBvZiBubyBxdWVyeSBmYWxsYmFjay5cbiAgQGlmICRuby1xdWVyeSAhPSBmYWxzZSB7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiAkbm8tcXVlcnk7XG4gIH1cblxuICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICB9XG5cbiAgLy8gUHJpbnQgT3V0IFF1ZXJ5IFN0cmluZ1xuICBAaWYgbm90IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBtZWRpYSAjeyRxdWVyeS1zdHJpbmd9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykgIT0gZmFsc2Ugb3IgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSA9PSB0cnVlIHtcblxuICAgICR0eXBlOiB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSk7XG4gICAgJHByaW50OiBmYWxzZTtcblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Jvb2wnKSB7XG4gICAgICAkcHJpbnQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnbGlzdCcpIHtcbiAgICAgIEBlYWNoICR3cmFwcGVyIGluIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJHdyYXBwZXIge1xuICAgICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdyaXRlIEZhbGxiYWNrXG4gICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIGFuZCAoJHByaW50ID09IHRydWUpIHtcbiAgICAgICR0eXBlLWZhbGxiYWNrOiB0eXBlLW9mKCRxdWVyeS1mYWxsYmFjayk7XG5cbiAgICAgIEBpZiAoJHR5cGUtZmFsbGJhY2sgIT0gJ2Jvb2wnKSB7XG4gICAgICAgICN7JHF1ZXJ5LWZhbGxiYWNrfSAmIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcbn1cblxuXG5AbWl4aW4gbXEoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnaWNvbW9vbic7XG4gIHNyYzogIHVybCgnLi4vZm9udHMvaWNvbW9vbi5lb3Q/eGgycTBxJyk7XG4gIHNyYzogIHVybCgnLi4vZm9udHMvaWNvbW9vbi5lb3Q/eGgycTBxI2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICB1cmwoJy4uL2ZvbnRzL2ljb21vb24udHRmP3hoMnEwcScpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgdXJsKCcuLi9mb250cy9pY29tb29uLndvZmY/eGgycTBxJykgZm9ybWF0KCd3b2ZmJyksXG4gIHVybCgnLi4vZm9udHMvaWNvbW9vbi5zdmc/eGgycTBxI2ljb21vb24nKSBmb3JtYXQoJ3N2ZycpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbltjbGFzc149XCJpY29uLVwiXSwgW2NsYXNzKj1cIiBpY29uLVwiXSwgJWljb24ge1xuICAvKiB1c2UgIWltcG9ydGFudCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGJyb3dzZXIgZXh0ZW5zaW9ucyB0aGF0IGNoYW5nZSBmb250cyAqL1xuICBmb250LWZhbWlseTogJ2ljb21vb24nICFpbXBvcnRhbnQ7XG4gIHNwZWFrOiBub25lO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4uaWNvbi1jbG9zZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjAwZFwiO1xufVxuLmljb24tcmVtb3ZlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMDBkXCI7XG59XG4uaWNvbi10aW1lczpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjAwZFwiO1xufVxuLmljb24tYW5nbGUtdXA6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGYxMDZcIjtcbn1cbi5pY29uLWFuZ2xlLWRvd246YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGYxMDdcIjtcbn1cbi5pY29uLWFycm93LWxlZnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU5MDBcIjtcbn1cbi5pY29uLWFycm93LXJpZ2h0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlOTAxXCI7XG59XG4uaWNvbi1wYXBlcjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwMlwiO1xufVxuLmljb24tcGxheTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwM1wiO1xufVxuXG4iLCJAaW5jbHVkZSBicmVha3BvaW50KG1heC13aWR0aCAkbWVkaXVtLXJlcyAtIDFweCkge1xuICAuc2xpZGluZy1wYW5lbC1jb250ZW50IHtcblxuICAgIEBpbmNsdWRlIHBvc2l0aW9uKGZpeGVkLCAwIGF1dG8gMCAwKTtcbiAgICBAaW5jbHVkZSBzaXplKDEwMCUgMTAwJSk7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgbGluZWFyO1xuICAgIHotaW5kZXg6IDk5OTk5OTtcblxuICAgICYuaXMtdmlzaWJsZSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuICB9XG5cbiAgLnNsaWRpbmctcGFuZWwtZmFkZS1zY3JlZW4ge1xuICAgIEBpbmNsdWRlIHBvc2l0aW9uKGZpeGVkLCAwKTtcbiAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0O1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB6LWluZGV4OiA5OTk5OTg7XG5cbiAgICAmLmlzLXZpc2libGUge1xuICAgICAgb3BhY2l0eTogMC40O1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHNldHRpbmcgYW4gZWxlbWVudOKAmXMgcG9zaXRpb24uIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7UG9zaXRpb259ICRwb3NpdGlvbiBbcmVsYXRpdmVdXG4vLy8gICBBIENTUyBwb3NpdGlvbiB2YWx1ZVxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkY29vcmRpbmF0ZXMgW251bGwgbnVsbCBudWxsIG51bGxdXG4vLy8gICBMaXN0IG9mIHZhbHVlcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIDQtdmFsdWUgc3ludGF4IGZvciB0aGUgZWRnZXMgb2YgYSBib3hcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgMCBudWxsIG51bGwgMTBlbSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGxlZnQ6IDEwZW07XG4vLy8gICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbi8vLyAgICAgdG9wOiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBpcy1sZW5ndGhcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IHVucGFja1xuXG5AbWl4aW4gcG9zaXRpb24oJHBvc2l0aW9uOiByZWxhdGl2ZSwgJGNvb3JkaW5hdGVzOiBudWxsIG51bGwgbnVsbCBudWxsKSB7XG4gIEBpZiB0eXBlLW9mKCRwb3NpdGlvbikgPT0gbGlzdCB7XG4gICAgJGNvb3JkaW5hdGVzOiAkcG9zaXRpb247XG4gICAgJHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gICRjb29yZGluYXRlczogdW5wYWNrKCRjb29yZGluYXRlcyk7XG5cbiAgJG9mZnNldHM6IChcbiAgICB0b3A6ICAgIG50aCgkY29vcmRpbmF0ZXMsIDEpLFxuICAgIHJpZ2h0OiAgbnRoKCRjb29yZGluYXRlcywgMiksXG4gICAgYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKSxcbiAgICBsZWZ0OiAgIG50aCgkY29vcmRpbmF0ZXMsIDQpXG4gICk7XG5cbiAgcG9zaXRpb246ICRwb3NpdGlvbjtcblxuICBAZWFjaCAkb2Zmc2V0LCAkdmFsdWUgaW4gJG9mZnNldHMge1xuICAgIEBpZiBpcy1sZW5ndGgoJHZhbHVlKSB7XG4gICAgICAjeyRvZmZzZXR9OiAkdmFsdWU7XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBTZXRzIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBvZiB0aGUgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNpemVcbi8vLyAgIEEgbGlzdCBvZiBhdCBtb3N0IDIgc2l6ZSB2YWx1ZXMuXG4vLy9cbi8vLyAgIElmIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgdmFsdWUgaW4gYCRzaXplYCBpdCBpcyB1c2VkIGZvciBib3RoIHdpZHRoIGFuZCBoZWlnaHQuIEFsbCB1bml0cyBhcmUgc3VwcG9ydGVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZmlyc3QtZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNpemUoMmVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc2l6ZShhdXRvIDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmZpcnN0LWVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogMmVtO1xuLy8vICAgICBoZWlnaHQ6IDJlbTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcbi8vLyAgICAgd2lkdGg6IGF1dG87XG4vLy8gICAgIGhlaWdodDogMTBlbTtcbi8vLyAgIH1cbi8vL1xuLy8vIEB0b2RvIFJlZmFjdG9yIGluIDUuMC4wIHRvIHVzZSBhIGNvbW1hLXNlcGFyYXRlZCBhcmd1bWVudFxuXG5AbWl4aW4gc2l6ZSgkdmFsdWUpIHtcbiAgJHdpZHRoOiBudGgoJHZhbHVlLCAxKTtcbiAgJGhlaWdodDogJHdpZHRoO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA+IDEge1xuICAgICRoZWlnaHQ6IG50aCgkdmFsdWUsIDIpO1xuICB9XG5cbiAgQGlmIGlzLXNpemUoJGhlaWdodCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gXCJgI3skaGVpZ2h0fWAgaXMgbm90IGEgdmFsaWQgbGVuZ3RoIGZvciB0aGUgYCRoZWlnaHRgIHBhcmFtZXRlciBpbiB0aGUgYHNpemVgIG1peGluLlwiO1xuICB9XG5cbiAgQGlmIGlzLXNpemUoJHdpZHRoKSB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gXCJgI3skd2lkdGh9YCBpcyBub3QgYSB2YWxpZCBsZW5ndGggZm9yIHRoZSBgJHdpZHRoYCBwYXJhbWV0ZXIgaW4gdGhlIGBzaXplYCBtaXhpbi5cIjtcbiAgfVxufVxuIiwiLyoqXG4gKiBGZWF0aGVybGlnaHQg4oCTIHVsdHJhIHNsaW0galF1ZXJ5IGxpZ2h0Ym94XG4gKiBWZXJzaW9uIDEuNS4wIC0gaHR0cDovL25vZWxib3NzLmdpdGh1Yi5pby9mZWF0aGVybGlnaHQvXG4gKlxuICogQ29weXJpZ2h0IDIwMTYsIE5vw6tsIFJhb3VsIEJvc3NhcnQgKGh0dHA6Ly93d3cubm9lbGJvc3MuY29tKVxuICogTUlUIExpY2Vuc2VkLlxuKiovXG5AbWVkaWEgYWxsIHtcbiAgLmZlYXRoZXJsaWdodCB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIC8qIGRpbWVuc2lvbnM6IHNwYW5uaW5nIHRoZSBiYWNrZ3JvdW5kIGZyb20gZWRnZSB0byBlZGdlICovXG4gICAgcG9zaXRpb246Zml4ZWQ7XG4gICAgdG9wOiAwOyByaWdodDogMDsgYm90dG9tOiAwOyBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDIxNDc0ODM2NDc7IC8qIHotaW5kZXggbmVlZHMgdG8gYmUgPj0gZWxlbWVudHMgb24gdGhlIHNpdGUuICovXG5cbiAgICAvKiBwb3NpdGlvbjogY2VudGVyaW5nIGNvbnRlbnQgKi9cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAvKiBpbnN1cmVzIHRoYXQgdGhlIDo6YmVmb3JlIHBzZXVkbyBlbGVtZW50IGRvZXNuJ3QgZm9yY2Ugd3JhcCB3aXRoIGZpeGVkIHdpZHRoIGNvbnRlbnQ7ICovXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgIC8qIHN0eWxpbmcgKi9cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICAvKiBJRTggXCJoYWNrXCIgZm9yIG5lc3RlZCBmZWF0aGVybGlnaHRzICovXG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcbiAgfVxuXG4gIC8qIHN1cHBvcnQgZm9yIG5lc3RlZCBmZWF0aGVybGlnaHRzLiBEb2VzIG5vdCB3b3JrIGluIElFOCAodXNlIEpTIHRvIGZpeCkgKi9cbiAgLmZlYXRoZXJsaWdodDpsYXN0LW9mLXR5cGUge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTtcbiAgfVxuXG4gIC5mZWF0aGVybGlnaHQ6YmVmb3JlIHtcbiAgICAvKiBwb3NpdGlvbjogdHJpY2sgdG8gY2VudGVyIGNvbnRlbnQgdmVydGljYWxseSAqL1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1ZW07XG4gIH1cblxuICAuZmVhdGhlcmxpZ2h0IC5mZWF0aGVybGlnaHQtY29udGVudCB7XG4gICAgLyogbWFrZSBjb250ZW50IGNvbnRhaW5lciBmb3IgcG9zaXRpb25lZCBlbGVtZW50cyAoY2xvc2UgYnV0dG9uKSAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC8qIHBvc2l0aW9uOiBjZW50ZXJpbmcgdmVydGljYWwgYW5kIGhvcml6b250YWwgKi9cbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgLyogZGltZW5zaW9uczogY3V0IG9mZiBpbWFnZXMgKi9cbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6IDI1cHggMjVweCAwO1xuICAgIGJvcmRlci1ib3R0b206IDI1cHggc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICAvKiBkaW1lbnNpb25zOiBoYW5kbGluZyBsYXJnZSBjb250ZW50ICovXG4gICAgbWFyZ2luLWxlZnQ6IDUlO1xuICAgIG1hcmdpbi1yaWdodDogNSU7XG4gICAgbWF4LWhlaWdodDogOTUlO1xuXG4gICAgLyogc3R5bGluZyAqL1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4yKTtcbiAgICBjdXJzb3I6IGF1dG87XG5cbiAgICAvKiByZXNldCB3aGl0ZS1zcGFjZSB3cmFwcGluZyAqL1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIH1cblxuICAvKiBjb250YWlucyB0aGUgY29udGVudCAqL1xuICAuZmVhdGhlcmxpZ2h0IC5mZWF0aGVybGlnaHQtaW5uZXIge1xuICAgIC8qIG1ha2Ugc3VyZSBpdHMgdmlzaWJsZSAqL1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLmZlYXRoZXJsaWdodCAuZmVhdGhlcmxpZ2h0LWNsb3NlLWljb24ge1xuICAgIC8qIHBvc2l0aW9uOiBjZW50ZXJpbmcgdmVydGljYWwgYW5kIGhvcml6b250YWwgKi9cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogOTk5OTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG5cbiAgICAvKiBkaW1lbnNpb25zOiAyNXB4IHggMjVweCAqL1xuICAgIGxpbmUtaGVpZ2h0OiAyNXB4O1xuICAgIHdpZHRoOiAyNXB4O1xuXG4gICAgLyogc3R5bGluZyAqL1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO1xuXG4gICAgY29sb3I6ICRicmFuZC15ZWxsb3c7XG4gIH1cblxuXG4gIC5mZWF0aGVybGlnaHQgLmZlYXRoZXJsaWdodC1pbWFnZSB7XG4gICAgLyogc3R5bGluZyAqL1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cblxuICAuZmVhdGhlcmxpZ2h0LWlmcmFtZSAuZmVhdGhlcmxpZ2h0LWNvbnRlbnQge1xuICAgIC8qIHJlbW92ZWQgdGhlIGJvcmRlciBmb3IgaW1hZ2UgY3JvcGluZyBzaW5jZSBpZnJhbWUgaXMgZWRnZSB0byBlZGdlICovXG4gICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLmZlYXRoZXJsaWdodCBpZnJhbWUge1xuICAgIC8qIHN0eWxpbmcgKi9cbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cblxuICAuZmVhdGhlcmxpZ2h0ICogeyAvKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25vZWxib3NzL2ZlYXRoZXJsaWdodC9pc3N1ZXMvNDIgKi9cbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbn1cblxuLyogaGFuZGxpbmcgcGhvbmVzIGFuZCBzbWFsbCBzY3JlZW5zICovXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAuZmVhdGhlcmxpZ2h0IC5mZWF0aGVybGlnaHQtY29udGVudCB7XG4gICAgLyogZGltZW5zaW9uczogbWF4aW1pemUgbGlnaHRib3ggd2l0aCBmb3Igc21hbGwgc2NyZWVucyAqL1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBtYXgtaGVpZ2h0OiA5OCU7XG5cbiAgICBwYWRkaW5nOiAxMHB4IDEwcHggMDtcbiAgICBib3JkZXItYm90dG9tOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICB9XG59XG4iLCIvLyBDb250YWluZXIgU2V0dGluZ3NcblxuLmNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCg2KTtcbiAgLy9AaW5jbHVkZSBjb250YWluZXIoKTtcblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNtYWxsLXJlcywgJHNtYWxsLWdyaWQpIHtcbiAgICBAaW5jbHVkZSBzaG93LWdyaWQoOCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHhtZWRpdW0tcmVzLCAkbWVkaXVtLWdyaWQpIHtcbiAgICBAaW5jbHVkZSBzaG93LWdyaWQoMTIpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRsYXJnZS1yZXMsICRsYXJnZS1ncmlkKSB7XG4gICAgQGluY2x1ZGUgc2hvdy1ncmlkKDEyKTtcbiAgICBAaW5jbHVkZSBjb250YWluZXIoKTtcbiAgfVxufVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWcvZm9vdGVyX2JnLmpwZycpIDUwJSAxMDAlL2NvbnRhaW4gbm8tcmVwZWF0LFxuICB1cmwoJy4uL2ltZy9iZy5qcGcnKSAwIDAgcmVwZWF0O1xufVxuXG4uaGVhZGVyIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMTc1cHggMTJweCAwO1xuICBoZWlnaHQ6IDcwMHB4O1xuICBiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltZy9oZWFkZXJfYmcuanBnJykgNTAlIDAgbm8tcmVwZWF0O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogNzY4cHg7XG5cbiAgLy9AaW5jbHVkZSBoaWRwaSgyKSB7XG4gIC8vICBiYWNrZ3JvdW5kLXNpemU6IDcwMHB4O1xuICAvL31cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCR4bWVkaXVtLXJlcykge1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICBwYWRkaW5nLXRvcDogNDkwcHg7XG4gICAgaGVpZ2h0OiAxMTAwcHg7XG4gICAgYmFja2dyb3VuZC1zaXplOiBhdXRvO1xuICB9XG59XG5cbi5uYXYtYnV0dG9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwcHg7XG4gIGxlZnQ6IDEycHg7XG4gIHBhZGRpbmc6IDA7XG4gIGNvbG9yOiAkYnJhbmQteWVsbG93O1xuICBmb250LXNpemU6IDE0cHg7XG5cbiAgJl9faWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbjogMCA0cHggMCAwO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMTcuNXB4O1xuICAgIGJhY2tncm91bmQ6IHVybCgnLi4vaW1nL21lbnVfaWNvbi5wbmcnKSAwIDAgbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogMjBweCAxNy41cHg7XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ucHJldmVudC1zY3JvbGwge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5cbi5uYXZfX2xpc3Qge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHBhZGRpbmc6IDEzMHB4IDI0cHggMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuODUpO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgcGFkZGluZzogMCAxODJweCAwIDM1cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDYwcHg7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjYpO1xuICB9XG59XG5cbi5uYXZfX2xpc3QtaXRlbSB7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLXJlcykge1xuICAgIG1hcmdpbi1yaWdodDogMzBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbGluZS1oZWlnaHQ6IDYwcHg7XG4gIH1cbn1cblxuLm5hdl9fbGlzdC1pdGVtLWxpbmsge1xuICBwYWRkaW5nOiAzMHB4IDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiAkYnJhbmQteWVsbG93O1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLXJlcykge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuLm5hdl9fbGlzdC1pdGVtLWxpbmstb3RoZXIge1xuICBjb2xvcjogI2ZmZTUzNztcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDMwcHggMDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG4ubmF2X19jbG9zZS1idG4ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNDVweDtcbiAgcmlnaHQ6IDEycHg7XG4gIGZvbnQtc2l6ZTogMTUwJTtcblxuICBpIHtcbiAgICBjb2xvcjogJGJyYW5kLXllbGxvdztcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5oZWFkZXJfX3Nob3AtYnRuIHtcbiAgZGlzcGxheTogbm9uZTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkYnJhbmQteWVsbG93O1xuICAgIGZvbnQtZmFtaWx5OiAkc3BlY2lhbC1mb250LWZhbWlseTtcbiAgICBwYWRkaW5nOiByaHl0aG0oNCkgNjBweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQteWVsbG93O1xuICAgIGNvbG9yOiAjMDcwYjFiO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgIGNvbG9yOiAkYnJhbmQteWVsbG93O1xuICAgIH1cbiAgfVxufVxuXG4ubG9nbyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAzMnB4O1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiAxODhweDtcbiAgaGVpZ2h0OiA1OXB4O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHotaW5kZXg6IDEwMDAwMDA7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLXJlcykge1xuICAgIHdpZHRoOiA0MzJweDtcbiAgICBoZWlnaHQ6IDEzM3B4O1xuICAgIHRvcDogMzUwcHg7XG4gIH1cblxuICAmX19pbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG4uaGVyb19fZGVzYyB7XG4gIGNsZWFyOiBib3RoO1xuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkeG1lZGl1bS1yZXMsICRtZWRpdW0tZ3JpZCkge1xuICAgIHdpZHRoOiA2MzBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygxOHB4LCA3KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkbWVkaXVtLXJlcywgJG1lZGl1bS1ncmlkKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKDIwKTtcbiAgfVxuXG4gICYtLW1vYmlsZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICYtLWRlc2t0b3Age1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cblxuLmhlcm9fX3BsYXkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgY2xlYXI6IGJvdGg7XG4gIHdpZHRoOiA5MHB4O1xuICBoZWlnaHQ6IDkwcHg7XG4gIG1hcmdpbjogMCBhdXRvIDI0MHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIGVhc2Utb3V0IDAuMXM7XG4gIC8vei1pbmRleDogMTtcblxuICAmOmFmdGVyIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHotaW5kZXg6IC0xO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgY29udGVudDogJyc7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkzKTtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgYW5pbWF0aW9uOiBzb25hckVmZmVjdCAxLjNzIGVhc2Utb3V0IDc1bXM7XG4gICAgfVxuICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzb25hckVmZmVjdCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwLjM7XG4gIH1cbiAgNDAlIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwgMCAwIDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMyksIDAgMCAwIDEwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICB9XG4gIDEwMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksIDAgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjMpLCAwIDAgMCAxMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc29uYXJFZmZlY3Qge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMC4zO1xuICB9XG4gIDQwJSB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksIDAgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjMpLCAwIDAgMCAxMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgfVxuICAxMDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLCAwIDAgMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4zKSwgMCAwIDAgMTBweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjUpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzb25hckVmZmVjdCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwLjM7XG4gIH1cbiAgNDAlIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwgMCAwIDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMyksIDAgMCAwIDEwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICB9XG4gIDEwMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksIDAgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjMpLCAwIDAgMCAxMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG4uaGVyb19fcGxheS1iZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogOTBweDtcbiAgaGVpZ2h0OiA5MHB4O1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltZy9oZWFkZXJfcGxheV9idG5fYmcucG5nJyk7XG4gIG1peC1ibGVuZC1tb2RlOiBvdmVybGF5O1xufVxuXG4uaWNvbi1wbGF5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtc2l6ZTogNDAwJTtcbiAgbGluZS1oZWlnaHQ6IDkwcHg7XG59XG5cbi5zZWN0aW9uIHtcbiAgcGFkZGluZzogMCAxMnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IHJoeXRobSgxNSk7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLXJlcykge1xuICAgIHBhZGRpbmc6IDAgMzBweDtcbiAgfVxufVxuXG4ubmV3c2xldHRlcl9fZm9ybSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCR4bWVkaXVtLXJlcykge1xuICAgIHdpZHRoOiA0MzJweDtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cbn1cblxuLm5ld3NsZXR0ZXJfX2Zvcm0tZW1haWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQteWVsbG93O1xuICBib3JkZXI6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAxMnB4IDEyMnB4IDEycHggMTJweDtcbn1cblxuLm5ld3NsZXR0ZXJfX3N1Ym1pdC1idG4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiAkYnJhbmQteWVsbG93O1xuICBwYWRkaW5nOiAxMXB4IDE2cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxcHg7XG4gIHJpZ2h0OiAxcHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8vLnNlY3Rpb24tYXNzZW1ibGUtZmxlZXQgLnNlY3Rpb25fX2Rlc2Mge1xuLy9cbi8vfVxuXG4uc2VjdGlvbl9fZGVzYyB7XG4gIG1hcmdpbi1ib3R0b206IHJoeXRobSg2KTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCR4bWVkaXVtLXJlcykge1xuICAgIHdpZHRoOiA2NTBweDtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygxOHB4LCA3KTtcbiAgICBtYXJnaW4tYm90dG9tOiA2MHB4O1xuICB9XG59XG5cbi5zZWN0aW9uLWFzc2VtYmxlLWZsZWV0IHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDA7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1nL2Fzc2VtYmxlLXlvdXItZmxlZXQuanBnJyk7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtaW1hZ2UgMC4zcyBlYXNlLW91dDtcbiAgcGFkZGluZy10b3A6IDYwcHg7XG4gIHBhZGRpbmctYm90dG9tOiA2MHB4O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA1KTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wNSk7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkeGxhcmdlLXJlcykge1xuICAgIHBhZGRpbmctdG9wOiAxNzVweDtcbiAgfVxuXG4gIC5zZWN0aW9uX19kZXNjIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR4bGFyZ2UtcmVzKSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0NzBweDtcbiAgICB9XG4gIH1cbn1cblxuLnNlY3Rpb24tYXNzZW1ibGUtZmxlZXRfX2xpc3Qge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkbWVkaXVtLXJlcywgJG1lZGl1bS1ncmlkKSB7XG4gICAgcGFkZGluZzogMCBzcGFuKDIpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCR4bGFyZ2UtcmVzLCAkbGFyZ2UtZ3JpZCkge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHh4bGFyZ2UtcmVzLCAkbGFyZ2UtZ3JpZCkge1xuICAgIHBhZGRpbmc6IDAgc3BhbigyKTtcbiAgfVxufVxuXG4uc2VjdGlvbi1hc3NlbWJsZS1mbGVldF9fbGlzdC1pdGVtIHtcbiAgbWFyZ2luOiAwIGF1dG8gcmh5dGhtKDQpO1xuICBkaXNwbGF5OiBibG9jaztcblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJG1lZGl1bS1yZXMsICRtZWRpdW0tZ3JpZCkge1xuICAgIEBpbmNsdWRlIGdhbGxlcnkoNCBvZiA4KVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCR4bGFyZ2UtcmVzLCAkbGFyZ2UtZ3JpZCkge1xuICAgIEBpbmNsdWRlIGdhbGxlcnkoMyBvZiAxMik7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHh4bGFyZ2UtcmVzLCAkbGFyZ2UtZ3JpZCkge1xuICAgIEBpbmNsdWRlIGdhbGxlcnkoMiBvZiA4KTtcbiAgfVxuXG4gICYuY3VycmVudCB7XG4gICAgZmlndXJlIHtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgICBib3gtc2hhZG93OiAwIDAgNjBweCA2cHggYmxhY2s7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoNDAwcHgpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZpZ3VyZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAvL2hlaWdodDogMTg1cHg7XG4gICAgLy93aWR0aDogMzI4cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzIyMmQ1OTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gICAgICB6LWluZGV4OiAxO1xuICAgICAgYm94LXNoYWRvdzogMCAwIDYwcHggNnB4IGJsYWNrO1xuICAgIH1cbiAgfVxuXG4gIGZpZ2NhcHRpb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDEycHg7XG4gICAgbGVmdDogMTJweFxuICB9XG59XG5cbi5zZWN0aW9uLWFzc2VtYmxlLWZsZWV0X19pbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4uc2VjdGlvbi12aWRlbyB7XG4gIGJhY2tncm91bmQ6IHVybCgnLi4vaW1nL3ZpZGVvX2JnLmpwZycpIDUwJSAwIG5vLXJlcGVhdDtcbiAgcGFkZGluZzogNjBweCAxMnB4O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHhsYXJnZS1yZXMpIHtcbiAgICBwYWRkaW5nLXRvcDogMTgwcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDE4MHB4O1xuICB9XG59XG5cbi5zZWN0aW9uLXZpZGVvX192aWRlby1saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNoYWRvdzogMCAwIDYwcHggNnB4IGJsYWNrO1xuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkeG1lZGl1bS1yZXMsICRtZWRpdW0tZ3JpZCkge1xuICAgIHdpZHRoOiBzcGFuKDgpO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UtcmVzKSB7XG4gICAgd2lkdGg6IDkwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICB9XG5cbiAgLmljb24tcGxheSB7XG4gICAgZm9udC1zaXplOiAzMDAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbn1cblxuLnNlY3Rpb24tdmlkZW9fX3ZpZGVvLWltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi5zZWN0aW9uLWFydF9fY29udCB7XG4gIG1hcmdpbjogMCBhdXRvO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAwMHB4KSB7XG4gICAgd2lkdGg6IDEwMDBweCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5zZWN0aW9uLWFydC1nYWxsZXJ5X19saXN0IHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG59XG5cbi5zZWN0aW9uLWFydC1nYWxsZXJ5X19saXN0LWl0ZW0ge1xuICBmbG9hdDogbGVmdDtcbiAgd2lkdGg6IDE2MHB4O1xuICBtYXJnaW4tYm90dG9tOiByaHl0aG0oNik7XG4gIHBhZGRpbmctcmlnaHQ6IDI0cHg7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCg0MjRweCkge1xuICAgIHdpZHRoOiAyMDBweDtcbiAgfVxuXG4gIGEge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgZmlndXJlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICBmaWdjYXB0aW9uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAxMnB4O1xuICAgIGxlZnQ6IDEycHhcbiAgfVxuXG4gIGltZyB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzIyMmQ1OTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cblxuICAuaWNvbi1wbGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG5cbiAgJi5kb3VibGUge1xuICAgIHdpZHRoOiAyOTZweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoNDI0cHgpIHtcbiAgICAgIHdpZHRoOiA0MDBweDtcbiAgICB9XG4gIH1cbn1cblxuLnNlY3Rpb25fX2xvYWQtbW9yZS1idG4ge1xuICBjb2xvcjogJGJyYW5kLXllbGxvdztcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRicmFuZC15ZWxsb3c7XG4gIHBhZGRpbmc6IDEycHggMjRweDtcbn1cblxuLnNlY3Rpb24tYnV5IHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgcGFkZGluZzogMCAzMHB4O1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkbGFyZ2UtcmVzLCAkbGFyZ2UtZ3JpZCkge1xuICAgIHBhZGRpbmc6IDAgc3BhbigxKTtcbiAgfVxuXG4gIC5zZWN0aW9uX19kZXNjIHtcbiAgICBtYXJnaW4tYm90dG9tOiByaHl0aG0oMik7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR4bWVkaXVtLXJlcykge1xuICAgICAgd2lkdGg6IDUwMHB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuICB9XG59XG5cbi5zZWN0aW9uLWJ1eV9fYWRkLWRlc2Mge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogIzUwNTI2ZDtcbiAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKDYpO1xufVxuXG4uYnV5LWFuZC1yZXF1aXJtZW50cyB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4uYnV5LWZvci1wbGF0Zm9ybS1jb250IHtcbiAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKDEyKTtcblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHhtZWRpdW0tcmVzLCAkbWVkaXVtLWdyaWQpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDYpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRsYXJnZS1yZXMsICRsYXJnZS1ncmlkKSB7XG4gICAgd2lkdGg6IDQzMHB4XG4gIH1cblxufVxuXG4uYnV5LWZvci1wbGF0Zm9ybSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjMjIyZDU5O1xuICBwYWRkaW5nOiAxMnB4O1xuICBiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltZy9zdGVhbV9iZy5wbmcnKSAwIDAgbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIG1hcmdpbi1ib3R0b206IHJoeXRobSgzKTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgIHBhZGRpbmc6IDI0cHg7XG4gIH1cblxuICAuYnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kOiAkYnJhbmQteWVsbG93O1xuICAgIGNvbG9yOiAjMDcwYjFiO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDEycHggMjRweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYnJhbmQteWVsbG93O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDcwYjFiO1xuICAgICAgY29sb3I6ICRicmFuZC15ZWxsb3c7XG4gICAgfVxuICB9XG59XG5cbi5idXktZm9yLXBsYXRmb3JtX19kZXRhaWxzIHtcbiAgZmxvYXQ6IGxlZnQ7XG59XG5cbi5idXktZm9yLXBsYXRmb3JtX19zdG9yZS1uYW1lIHtcbiAgZm9udC1mYW1pbHk6ICRzcGVjaWFsLWZvbnQtZmFtaWx5O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uYnV5LWZvci1wbGF0Zm9ybV9fcGxhdGZvcm0tbmFtZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb2xvcjogIzUwNTI2ZDtcbn1cblxuLmJ1eS1mb3ItcGxhdGZvcm1fX25vdGUge1xuICBjb2xvcjogIzUwNTI2ZDtcbiAgZm9udC1zaXplOiAxNHB4O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gIH1cbn1cblxuLnN5c3RlbS1yZXF1aXJtZW50cyB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkeG1lZGl1bS1yZXMsICRtZWRpdW0tZ3JpZCkge1xuICAgIEBpbmNsdWRlIHNwYW4oNiBsYXN0KTtcbiAgICAvL3BhZGRpbmctbGVmdDogc3BhbigxIG9mIDYpO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UtcmVzKSB7XG4gIHdpZHRoOiBhdXRvO1xuICAgIGZsb2F0OiBsZWZ0O1xuICB9XG59XG5cbi5zeXN0ZW0tcmVxdWlybWVudHNfX2hlYWRlci1jb250IHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIHBhZGRpbmctbGVmdDogODVweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgcGFkZGluZy1sZWZ0OiAxMDBweDtcbiAgfVxuXG4gIC8vPiBkaXY6bnRoLWNoaWxkKDIpIHtcbiAgLy8gIHAge1xuICAvLyAgICBvcGFjaXR5OiAwO1xuICAvLyAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIC8vICB9XG4gIC8vfVxufVxuXG4uc3lzdGVtLXJlcXVpcm1lbnRzX19oZWFkZXIge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcblxuICBoNCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbWFyZ2luLXJpZ2h0OiAxOHB4O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBjb2xvcjogJGJyYW5kLXllbGxvdztcbiAgICB9XG5cbiAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuXG4gICAgJi52aXNpYmxlIHtcbiAgICAgIGNvbG9yOiAkYnJhbmQteWVsbG93O1xuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRicmFuZC15ZWxsb3c7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogcmh5dGhtKDIpO1xuICAgIH1cbiAgfVxufVxuXG4uc3lzdGVtLXJlcXVpcm1lbnRzX19yZXF1aXJtZW50IHtcbiAgcCB7XG4gICAgY29sb3I6ICM1MDUyNmQ7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4uc3lzdGVtLXJlcXVpcm1lbnRzX19kYXRhLWNvbnQge1xuXG4gIHRoIHtcbiAgICB3aWR0aDogODVweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgY29sb3I6ICM1MDUyNmQ7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIHdpZHRoOiAxMDBweDtcbiAgICB9XG4gIH1cblxuICB0ZCB7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICBmb250LXNpemU6IDE0cHg7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuICB9XG59XG5cbi5zeXN0ZW0tcmVxdWlybWVudHNfX2RhdGEtdGFibGUge1xuICBkaXNwbGF5OiBub25lO1xuXG4gICYudmlzaWJsZSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gIH1cbn1cblxuZm9vdGVyIHtcbiAgcGFkZGluZzogMTJweDtcbiAgLy9AaW5jbHVkZSBoaWRwaSgyKSB7XG4gIC8vICBiYWNrZ3JvdW5kLXNpemU6IDcwMHB4O1xuICAvL31cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgcGFkZGluZzogMCAzMHB4O1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkbGFyZ2UtcmVzLCAkbGFyZ2UtZ3JpZCkge1xuICAgIHBhZGRpbmc6IDAgc3BhbigxKTtcbiAgfVxufVxuXG4uZm9vdGVyLWdyb3VwID4gYSxcbi5mb290ZXItZ3JvdXAgPiBzcGFuIHtcbiAgZm9udC1mYW1pbHk6ICRzcGVjaWFsLWZvbnQtZmFtaWx5O1xuICBjb2xvcjogJGJyYW5kLXllbGxvdztcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiByaHl0aG0oMik7XG4gIH1cbn1cblxuLmZvb3Rlci1pbm5lciB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxufVxuXG4uZm9vdGVyLWdyb3VwIHtcbiAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKDYpO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICB3aWR0aDogMTUlO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmLmFjY29yZGlvbi1ncm91cCB7XG4gICAgc3BhbjphZnRlciB7XG4gICAgICBAZXh0ZW5kICVpY29uO1xuICAgICAgY29udGVudDogJ1xcZjEwNyc7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBmb250LXNpemU6IDE1MCU7XG4gICAgICBjb2xvcjogJGJyYW5kLXllbGxvdztcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLXJlcykge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuaXMtZXhwYW5kZWQge1xuICAgICAgc3BhbjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICdcXGYxMDYnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVsIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXgtd2lkdGggJG1lZGl1bS1yZXMgLSAxcHgpIHtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBhZGRpbmc6IDYwcHggMDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKDEpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc3VibWVudSB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLmlzLWV4cGFuZGVkIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1heC13aWR0aCAkbWVkaXVtLXJlcyAtIDFweCkge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG4gIH1cbn1cblxuLmFic29sdXRlLWJvdHRvbS1mb290ZXIge1xuICBtYXJnaW4tdG9wOiA2MHB4O1xuICBcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLXJlcykge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW4tYm90dG9tOiAxNDBweDtcbiAgfVxufVxuXG4uYWJzb2x1dGUtYm90dG9tLWZvb3Rlcl9fbGVnYWwge1xuICBtYXJnaW4tYm90dG9tOiByaHl0aG0oNik7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLXJlcykge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IDI0cHg7XG4gICAgXG4gICAgJjpob3ZlciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfSBcbiAgfVxuXG4gICY6aG92ZXIgLmFic29sdXRlLWJvdHRvbS1mb290ZXJfX2xlZ2FsLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgaSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBjb2xvcjogJGJyYW5kLXllbGxvdztcbiAgICBmb250LXNpemU6IDE1MCU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgJi5pcy1leHBhbmRlZCB7XG4gICAgc3BhbjphZnRlciB7XG4gICAgICBjb250ZW50OiAnXFxmMTA2JztcblxuICAgICAgLy9AaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgICAvLyAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgLy99XG4gICAgfVxuICB9XG59XG5cbi5hYnNvbHV0ZS1ib3R0b20tZm9vdGVyX19sZWdhbC10aXRsZSB7XG4gIGZvbnQtZmFtaWx5OiAkc3BlY2lhbC1mb250LWZhbWlseTtcblxuICAmOmFmdGVyIHtcbiAgICBAZXh0ZW5kICVpY29uO1xuICAgIGNvbnRlbnQ6ICdcXGYxMDcnO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBmb250LXNpemU6IDE1MCU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgICBjb250ZW50OiAnXFxmMTA2JztcbiAgICAgIGZsb2F0OiBub25lO1xuICAgICAgZm9udC1zaXplOiAxMDAlO1xuICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICB9XG4gIH1cbn1cblxuLmFic29sdXRlLWJvdHRvbS1mb290ZXJfX2xlZ2FsLWNvbnRlbnQge1xuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiAxMnB4IDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzIyMmQ1OTtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiA2NjBweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMTJweDtcbiAgICBsZWZ0OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzA3MGIxYjtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICB9XG5cbiAgaDQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgZm9udC1zaXplOiAyNnB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKDMpO1xuICAgIH1cbiAgfVxuXG4gIHAge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IHJoeXRobSg2KTtcbiAgICB9XG4gIH1cbn1cblxuLmFic29sdXRlLWJvdHRvbS1mb290ZXJfX2xlZ2FsLWxvZ29zIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWF4LXdpZHRoICRtZWRpdW0tcmVzIC0gMXB4KSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH1cblxuICBsaSB7XG4gICAgd2lkdGg6IDIwJTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7XG4gICAgfVxuICB9XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuLmFic29sdXRlLWJvdHRvbS1mb290ZXJfX2NvcHlyaWdodCB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAzMHB4O1xuICAgIGxlZnQ6IDEwNXB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxOXB4O1xuICB9XG4gIFxuICBhIHtcbiAgICBjb2xvcjogJGJyYW5kLXllbGxvdztcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cblxuLmFic29sdXRlLWJvdHRvbS1mb290ZXJfX2xlZ2FsLWNvbnRlbnQtYXJyb3cge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAtMTdweDtcbiAgICBsZWZ0OiAzMHB4O1xuICB9XG59XG5cbi5hYnNvbHV0ZS1ib3R0b20tZm9vdGVyX19sb2dvIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bS1yZXMpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogbGVmdDtcbiAgfVxufVxuXG4uc2VjdGlvbi1yZXZpZXdzIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG5cbiAgLnNlY3Rpb25fX2hlYWRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJGxhcmdlLXJlcywgJGxhcmdlLWdyaWQpIHtcbiAgICBwYWRkaW5nOiAwIHNwYW4oMSk7XG4gIH1cblxufVxuXG4ucmV2aWV3IHtcbiAgYmFja2dyb3VuZDogcmdiYSg3LDExLDI3LDAuNCk7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHBhZGRpbmc6IDQwcHggMjRweCAyNHB4O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgIzIyMmQ1OTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMyMjJkNTk7XG4gIG1hcmdpbi1ib3R0b206IHJoeXRobSg2KTtcblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNtYWxsLXJlcywgJHNtYWxsLWdyaWQpIHtcbiAgICB3aWR0aDogc3Bhbig2KTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkbWVkaXVtLXJlcywgJG1lZGl1bS1ncmlkKSB7XG4gICAgQGluY2x1ZGUgc3Bhbig0KTtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRsYXJnZS1yZXMsICRsYXJnZS1ncmlkKSB7XG4gICAgQGluY2x1ZGUgc3BhbigzIG9mIDkpO1xuICB9XG5cbiAgJi5sYXN0IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICB9XG59XG5cbi5yZXZpZXdfX2RldGFpbHMge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKDYpO1xuXG4gIGltZyB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICB9XG5cbiAgLnJldmlld19fZGV0YWlscy10ZXh0IHtcbiAgICBmbG9hdDogbGVmdDtcblxuICAgIHNwYW4ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBjb2xvcjogJGJyYW5kLXllbGxvdztcbiAgICAgICAgZm9udC1mYW1pbHk6ICRzcGVjaWFsLWZvbnQtZmFtaWx5O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGNvbG9yOiAjNTA1MjZkO1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5yZXZpZXdfX3RleHQge1xuICBjb2xvcjogI2RiZGRmZjtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLnNlY3Rpb25fX2xvYWQtbW9yZS1idG4ge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0tcmVzKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ubWFzb25yeSxcbi5tYXNvbnJ5IC5tYXNvbnJ5LWJyaWNrIHtcbiAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjdzO1xuICAtbW96LXRyYW5zaXRpb24tZHVyYXRpb246IDAuN3M7XG4gIC1tcy10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjdzO1xuICAtby10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjdzO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjdzO1xufVxuXG4ubWFzb25yeSB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogaGVpZ2h0LCB3aWR0aDtcbiAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiBoZWlnaHQsIHdpZHRoO1xuICAtbXMtdHJhbnNpdGlvbi1wcm9wZXJ0eTogaGVpZ2h0LCB3aWR0aDtcbiAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogaGVpZ2h0LCB3aWR0aDtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogaGVpZ2h0LCB3aWR0aDtcbn1cblxuLm1hc29ucnkgLm1hc29ucnktYnJpY2sge1xuICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIHJpZ2h0LCB0b3A7XG4gIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgcmlnaHQsIHRvcDtcbiAgLW1zLXRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIHJpZ2h0LCB0b3A7XG4gIC1vLXRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIHJpZ2h0LCB0b3A7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIHJpZ2h0LCB0b3A7XG59IiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGluY2x1ZGUgYSBjbGVhcmZpeCBmb3IgY29udGFpbmluZyBmbG9hdHMuXG4vLy9cbi8vLyBAbGluayBodHRwOi8vY3NzbW9qby5jb20vbGF0ZXN0X25ld19jbGVhcmZpeF9zb19mYXIvXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudDo6YWZ0ZXIge1xuLy8vICAgICBjbGVhcjogYm90aDtcbi8vLyAgICAgY29udGVudDogXCJcIjtcbi8vLyAgICAgZGlzcGxheTogdGFibGU7XG4vLy8gICB9XG5cbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICB9XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiJdfQ== */
