.o-header{color:#33302e;background-color:#fff1e5}.o-header__row{border-bottom:1px solid #ccc1b7}.o-header__container{box-sizing:border-box;margin-left:auto;margin-right:auto;min-width:240px;max-width:1220px;position:relative;max-width:1220px;padding-left:10px;padding-right:10px;zoom:1}@media(min-width: 46.25em){.o-header__container{padding-left:20px;padding-right:20px}}@media(min-width: 46.25em){.o-grid-snappy .o-header__container,.o-header__container--snappy{max-width:740px}}@media(min-width: 61.25em){.o-grid-snappy .o-header__container,.o-header__container--snappy{max-width:980px}}@media(min-width: 76.25em){.o-grid-snappy .o-header__container,.o-header__container--snappy{max-width:1220px}}.o-header__container:before,.o-header__container:after{content:"";display:table;display:flex}.o-header__container:after{clear:both}.o-header__visually-hidden{position:absolute;clip:rect(0 0 0 0);clip-path:polygon(0 0, 0 0);margin:-1px;border:0;overflow:hidden;padding:0;width:2px;height:2px;white-space:nowrap}.o-header__top-wrapper{display:table;width:100%}.o-header__top-column{display:table-cell;vertical-align:middle}.o-header__top-column--left,.o-header__top-column--right{width:12.5%;white-space:nowrap}.o-header__top-column--left{text-align:left}.o-header__top-column--right{text-align:right}.o-header__top-column--center{text-align:center}.o-header__top-takeover{display:none}@media(min-width: 61.25em){.o-header__top-takeover{display:block}.o-header__top-takeover~*{display:none !important}}.o-header__top-link{color:inherit;text-decoration:none;border:0;display:inline-block;margin-left:10px;text-transform:uppercase;font-size:10px;text-align:center;height:40px;margin-top:4px;margin-bottom:4px}.o-header__top-link:hover{color:#33302e}.o-header__top-link--highlight,.o-header__top-link[aria-current]{color:#0a5e66}@media(min-width: 61.25em){.o-header__top-link{margin-left:20px;margin-top:30px;margin-bottom:30px}}@media(min-width: 46.25em){.o-header__top-link{margin-top:24px;margin-bottom:24px}}.o-header__top-link:before{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;content:" ";width:40px;height:40px}.o-header__top-link:first-child{margin-left:-10px}.o-header__top-link--menu:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:hamburger?source=ig-projects&tint=%2333302E,%2333302E&format=svg")}@media screen and (-ms-high-contrast: active){.o-header__top-link--menu:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:hamburger?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__top-link--menu:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:hamburger?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header__top-link--search:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&tint=%2333302E,%2333302E&format=svg")}@media screen and (-ms-high-contrast: active){.o-header__top-link--search:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__top-link--search:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&tint=%23000000,%23000000&format=svg")}}@media(max-width: 61.24em){.o-header__top-link--menu+.o-header__top-link--search{display:none}}.o-header__top-link--myft:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-myft?source=ig-projects&tint=%2333302E,%2333302E&format=svg");width:35px;margin-top:0}@media screen and (-ms-high-contrast: active){.o-header__top-link--myft:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-myft?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__top-link--myft:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-myft?source=ig-projects&tint=%23000000,%23000000&format=svg")}}@media(min-width: 46.25em){.o-header__top-link--myft:before{width:44px}}@media(min-width: 61.25em){.o-header__top-link--myft:before{width:52px}}.o-header__top-link-label{position:absolute;clip:rect(0 0 0 0);clip-path:polygon(0 0, 0 0);margin:-1px;border:0;overflow:hidden;padding:0;width:2px;height:2px;white-space:nowrap}.o-header__top-logo{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-ft-masthead?source=ig-projects&tint=%2333302E,%2333302E&format=svg");width:200px;height:16px;display:block;border:0;margin:16px auto;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media screen and (-ms-high-contrast: active){.o-header__top-logo{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-ft-masthead?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__top-logo{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-ft-masthead?source=ig-projects&tint=%23000000,%23000000&format=svg")}}@media(min-width: 30.625em){.o-header__top-logo{width:250px;height:20px}}@media(min-width: 46.25em){.o-header__top-logo{width:300px;height:24px;margin-top:24px;margin-bottom:24px}}@media(min-width: 61.25em){.o-header__top-logo{width:500px;height:40px;margin-top:30px;margin-bottom:30px}}.o-header__subnav{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;background-color:#fff9f5;border-bottom:1px solid #ccc1b7}.o-typography--loading-sans .o-header__subnav{font-size:13.92px;font-family:sans-serif}.o-header__subnav-wrap-outside{margin-left:-5px;margin-right:-5px}[data-o-header--js] .o-header__subnav-wrap-outside{overflow:hidden;height:44px}@media(min-width: 46.25em){[data-o-header--js] .o-header__subnav-wrap-outside{height:36px}}.o-header__subnav-wrap-inside{overflow:auto}[data-o-header--js] .o-header__subnav-wrap-inside{-webkit-overflow-scrolling:touch;scroll-behavior:smooth;padding-bottom:30px}.o-header__subnav-content{display:flex;white-space:nowrap;margin-left:5px;margin-right:5px}.o-header__subnav-list{display:inline-block;padding:0;margin:0}.o-header__subnav-list+.o-header__subnav-list:not(.o-header__subnav-list--right) .o-header__subnav-item:first-child{position:relative;margin-left:13px;padding-left:14px}.o-header__subnav-list+.o-header__subnav-list:not(.o-header__subnav-list--right) .o-header__subnav-item:first-child:before{content:"";position:absolute;top:15%;left:0;height:70%;border-left:1px solid #ccc1b7}.o-header__subnav-list+.o-header__subnav-list:not(.o-header__subnav-list--right) .o-header__subnav-item:first-child:before{top:50%;margin-top:-15.4px;height:30.8px}@media(min-width: 46.25em){.o-header__subnav-list+.o-header__subnav-list:not(.o-header__subnav-list--right) .o-header__subnav-item:first-child:before{margin-top:-12.6px;height:25.2px}}.o-header__subnav-item{position:relative;display:inline-block;padding-left:8px}.o-header__subnav-list--children .o-header__subnav-item{padding-left:16px}.o-header__subnav-list--children:not(.o-header__subnav-list--right) .o-header__subnav-item:first-child{padding-left:0}.o-header__subnav-list--breadcrumb .o-header__subnav-item:before{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:15px;height:15px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%230A5E66,%230A5E66&format=svg");content:"";position:relative;top:.125em;margin-right:6px}@media screen and (-ms-high-contrast: active){.o-header__subnav-list--breadcrumb .o-header__subnav-item:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__subnav-list--breadcrumb .o-header__subnav-item:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header__subnav-list--breadcrumb .o-header__subnav-item:first-child:before{content:none}.o-header__subnav-list--children.o-header__subnav-list--right{margin-left:auto}.o-header__subnav-link{color:inherit;text-decoration:none;border:0;position:relative;display:block;padding:8px 0;white-space:nowrap;color:#33302e;display:inline-block;padding:12px 0}.o-header__subnav-link:hover{color:#33302e}.o-header__subnav-link--highlight,.o-header__subnav-link[aria-current]{color:#0a5e66}.o-header__subnav-link:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:4px}.o-header__subnav-link:hover:after{background-color:#33302e}.o-header__subnav-link--highlight:after,.o-header__subnav-link[aria-current]:after{background-color:#0a5e66}@media(min-width: 46.25em){.o-header__subnav-link{padding:8px 0}}.o-header__subnav-list--breadcrumb .o-header__subnav-link{color:#0a5e66;text-transform:uppercase;font-weight:600}.o-header__subnav-link--right{float:right;display:none}@media(min-width: 46.25em){.o-header__subnav-link--right{display:block}}.o-header__subnav-button{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-left?source=ig-projects&tint=%2333302E,%2333302E&format=svg");background-color:#e6d9ce;position:absolute;top:0;width:25px;height:100%;padding:0;border:0;transition:.25s opacity .5s}@media screen and (-ms-high-contrast: active){.o-header__subnav-button{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-left?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__subnav-button{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-left?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header__subnav-button:hover{background-color:#ccc1b7}.o-header__subnav-button[disabled]{opacity:0;pointer-events:none}[data-o-header--no-js] .o-header__subnav-button{display:none}.o-header__subnav-button--left{left:0}.o-header__subnav-button--right{right:0;transform:rotate(180deg)}.o-header__search{padding:8px 0;text-align:center;background:#ccc1b7}.o-header__search[aria-hidden=false]{display:block}[data-o-header-search]{display:none}.o-header__search-form{display:flex;align-items:center;max-width:640px;margin:0 auto}.o-header__search-term{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;box-sizing:border-box;height:32px;padding:0 8px;vertical-align:middle;appearance:none;background:#fff;border-style:solid;border-color:transparent;box-shadow:none;border-radius:0;min-width:50%;flex-grow:1}.o-typography--loading-sans .o-header__search-term{font-size:12.18px;font-family:sans-serif}.o-header__search-term:focus{outline:none;border-color:#0a5e66}.o-header__search-submit{font-family:MetricWeb, sans-serif;font-weight:600;font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;line-height:14px;background-size:21px 21px;min-height:28px;min-width:60px;padding:6px 8px;display:inline-block;box-sizing:border-box;vertical-align:middle;margin:0;border-style:solid;text-align:center;text-decoration:none;cursor:pointer;transition:.3s background-color,.15s color ease-out,.15s border-color ease-out;user-select:none;background-clip:border-box;border-width:1px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-appearance:none;-webkit-appearance:none;border-radius:0;background-color:#262a33;color:#fff;border-color:transparent;height:32px;margin-left:14px}.o-typography--loading-sans .o-header__search-submit{font-size:12.18px;font-family:sans-serif}.o-header__search-submit[disabled]{pointer-events:none;opacity:.4;cursor:default}.o-header__search-submit:hover{background-color:#515257;color:#fff;border-color:transparent;text-decoration:none}.o-header__search-submit:focus{background-color:#515257;color:#fff;border-color:transparent}.o-header__search-submit[aria-selected=true],.o-header__search-submit[aria-current],.o-header__search-submit[aria-pressed=true],.o-header__search-submit:active{background-color:#727071;color:#fff;border-color:transparent}.o-header__search-close{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:40px;height:40px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:cross?source=ig-projects&tint=%2333302E,%2333302E&format=svg");border:0;margin-left:14px;vertical-align:middle}@media screen and (-ms-high-contrast: active){.o-header__search-close{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:cross?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__search-close{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:cross?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header__search-close:hover,.o-header__search-close:focus{opacity:.75}@media(max-width: 46.24em){.o-header__search-close{display:none}}.o-header__nav{font-family:MetricWeb, sans-serif;font-size:14px;line-height:20px}.o-typography--loading-sans .o-header__nav{font-size:12.18px;font-family:sans-serif}.o-header__nav--hide-s{display:none}@media(min-width: 30.625em){.o-header__nav--hide-s{display:block}}.o-header__nav--mobile{white-space:nowrap}@media(min-width: 61.25em){.o-header__nav--mobile{display:none}}.o-header__nav--desktop{display:none}@media(min-width: 61.25em){.o-header__nav--desktop{display:block}}.o-header__nav-list{display:table;list-style-type:none;margin:0 auto;padding:0}.o-header__nav-list--left{float:left}.o-header__nav-list--right{float:right}.o-header__nav-item{display:table-cell;vertical-align:middle;padding-left:12px}.o-header__nav-item:first-child{padding-left:0}.o-header__nav--mobile .o-header__nav-item{padding-left:28px}.o-header__nav--mobile .o-header__nav-item:first-child{padding-left:0}.o-header__nav-item--hide-s{display:none}@media(min-width: 30.625em){.o-header__nav-item--hide-s{display:table-cell}}@media(max-width: 46.24em){.o-header__nav-item--expanded{display:none}}.o-header__nav-link{color:inherit;text-decoration:none;border:0;position:relative;display:block;padding:8px 0;white-space:nowrap}.o-header__nav-link:hover{color:#33302e}.o-header__nav-link--highlight,.o-header__nav-link[aria-current]{color:#0a5e66}.o-header__nav-link:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:4px}.o-header__nav-link:hover:after{background-color:#33302e}.o-header__nav-link--highlight:after,.o-header__nav-link[aria-current]:after{background-color:#0a5e66}.o-header__nav-link--primary{font-weight:600;text-transform:uppercase;-webkit-font-smoothing:antialiased}.o-header__nav-button{font-family:MetricWeb, sans-serif;font-weight:600;font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;line-height:14px;background-size:21px 21px;min-height:28px;min-width:60px;padding:6px 8px;display:inline-block;box-sizing:border-box;vertical-align:middle;margin:0;border-style:solid;text-align:center;text-decoration:none;cursor:pointer;transition:.3s background-color,.15s color ease-out,.15s border-color ease-out;user-select:none;background-clip:border-box;border-width:1px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-appearance:none;-webkit-appearance:none;border-radius:0;background-color:#262a33;color:#fff;border-color:transparent}.o-typography--loading-sans .o-header__nav-button{font-size:12.18px;font-family:sans-serif}.o-header__nav-button[disabled]{pointer-events:none;opacity:.4;cursor:default}.o-header__nav-button:hover{background-color:#515257;color:#fff;border-color:transparent;text-decoration:none}.o-header__nav-button:focus{background-color:#515257;color:#fff;border-color:transparent}.o-header__nav-button[aria-selected=true],.o-header__nav-button[aria-current],.o-header__nav-button[aria-pressed=true],.o-header__nav-button:active{background-color:#727071;color:#fff;border-color:transparent}.o-header__anon{text-align:center}@media(min-width: 61.25em){.o-header__anon{display:none}}.o-header__anon-list{margin:0;padding:0}.o-header__anon-item{display:inline-block}.o-header__anon-item+.o-header__anon-item{position:relative;margin-left:13px;padding-left:14px}.o-header__anon-item+.o-header__anon-item:before{content:"";position:absolute;top:15%;left:0;height:70%;border-left:1px solid #ccc1b7}.o-header__anon-link{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;color:inherit;text-decoration:none;border:0;position:relative;display:block;padding:8px 0;white-space:nowrap}.o-typography--loading-sans .o-header__anon-link{font-size:12.18px;font-family:sans-serif}.o-header__anon-link:hover{color:#33302e}.o-header__anon-link--highlight,.o-header__anon-link[aria-current]{color:#0a5e66}.o-header__anon-link:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:4px}.o-header__anon-link:hover:after{background-color:#33302e}.o-header__anon-link--highlight:after,.o-header__anon-link[aria-current]:after{background-color:#0a5e66}.o-header__drawer{font-family:MetricWeb, sans-serif;background-color:#fff1e5;box-sizing:content-box}.o-header__drawer[data-o-header-drawer--js]{position:fixed;top:0;bottom:0;left:0;z-index:100;width:100%;border-right:1px solid #ccc1b7;transform:translateX(-100%);transform:translate3d(-100%, 0, 0);will-change:transform}@media(min-width: 46.25em){.o-header__drawer[data-o-header-drawer--js]{width:320px}}.o-header__drawer[data-o-header-drawer--js][aria-hidden]{box-shadow:0 1px 2px rgba(77,72,69,.25),0 4px 6px rgba(77,72,69,.1);border-left:30px solid transparent;margin-left:-30px}.o-header__drawer[data-o-header-drawer--js][aria-hidden=false]{transform:translateX(0);transform:translate3d(0, 0, 0)}.o-header__drawer--opening,.o-header__drawer--closing{transition:transform .5s cubic-bezier(1, 0, 0.5, 1.2)}[data-o-header-drawer--js] .o-header__drawer-inner{height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;scroll-behavior:smooth;scrollbar-color:#b3a9a0 transparent}[data-o-header-drawer--js] .o-header__drawer-inner::-webkit-scrollbar{width:12px}[data-o-header-drawer--js] .o-header__drawer-inner::-webkit-scrollbar-thumb{background:#b3a9a0;background-clip:content-box;border:4px solid transparent}.o-header__drawer-tools{overflow:hidden;padding:18px 0 12px 16px;background-color:transparent;color:#33302e}.o-header__drawer-tools-logo{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-ft-masthead?source=ig-projects&tint=%2333302E,%2333302E&format=svg");display:inline-block;background-repeat:no-repeat;background-size:contain;width:210px;height:18px;border-bottom:0}@media screen and (-ms-high-contrast: active){.o-header__drawer-tools-logo{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-ft-masthead?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__drawer-tools-logo{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-ft-masthead?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header__drawer-tools-close{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:40px;height:40px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:cross?source=ig-projects&tint=%2333302E,%2333302E&format=svg");box-sizing:border-box;float:right;border:0;opacity:.75;cursor:pointer;margin-top:-10px}@media screen and (-ms-high-contrast: active){.o-header__drawer-tools-close{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:cross?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__drawer-tools-close{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:cross?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header__drawer-tools-close:hover,.o-header__drawer-tools-close:focus{opacity:1}[data-o-header-drawer--no-js] .o-header__drawer-tools-close{display:none}.o-header__drawer-current-edition{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;color:#66605c;margin:.5em 0}.o-typography--loading-sans .o-header__drawer-current-edition{font-size:12.18px;font-family:sans-serif}.o-header__drawer-editions{padding:0 16px}.o-header__drawer-editions-link{color:#0a5e66;display:inline-block;padding:6px 0 8px;margin-left:.5em;border-bottom:0;font-size:18px;text-decoration:underline}.o-header__drawer-editions-link:first-child{margin-left:0}.o-header__drawer-editions-link[aria-current]{color:#4d4845;font-weight:600;text-decoration:none;pointer-events:none}.o-header__drawer-search{border-top:2px solid #e6d9ce;padding:12px 16px}@media(min-width: 61.25em){.o-header__drawer-search{display:none}}.o-header__drawer-search-form{display:flex}.o-header__drawer-search-term,.o-header__drawer-search-submit{box-sizing:border-box;height:32px;padding:8px 8px;border:1px solid;font-size:100%}.o-header__drawer-search-term{background-color:#fff;border-color:#ccc1b7;flex-grow:1;appearance:none;background:#fff;border-style:solid;box-shadow:none;border-radius:0;border:1px solid #807973}.o-header__drawer-search-term:focus{border-color:#0a5e66}.o-header__drawer-search-submit{background-color:#0a5e66;border-color:transparent}.o-header__drawer-search-submit:after{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:25px;height:25px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");content:"";margin-top:-6px}@media screen and (-ms-high-contrast: active){.o-header__drawer-search-submit:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__drawer-search-submit:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header__drawer-menu{color:#33302e;border-color:#e6d9ce}.o-header__drawer-menu--user{background-color:#e6d9ce;padding-bottom:12px;border-top:1px solid #ccc1b7}.o-header__drawer-menu-list{list-style-type:none;padding:0;margin:0;overflow:hidden}[data-o-header-drawer--no-js] .o-header__drawer-menu-list--child{display:none}[data-o-header-drawer--js] .o-header__drawer-menu-list--child{max-height:0;visibility:hidden;transition:max-height .25s ease-out}[data-o-header-drawer--js] .o-header__drawer-menu-list--child[aria-hidden=false]{background-color:#fff9f5;max-height:600px;visibility:visible;box-shadow:inset 0 -1px 0 #e6d9ce,inset 0 1px 0 #e6d9ce}.o-header__drawer-menu-item{margin-top:1px}.o-header__drawer-menu-item--divide{border-top:2px solid #e6d9ce}.o-header__drawer-menu-item--heading{background-color:#e6d9ce;padding:8px 16px;font-weight:600}.o-header__drawer-menu-toggle-wrapper{position:relative}.o-header__drawer-menu-toggle{position:absolute;top:0;right:0;height:100%;width:42px;padding:0;text-align:left;border:0;cursor:pointer;font-size:0}.o-header__drawer-menu-toggle:before{content:" ";margin-left:9px}.o-header__drawer-menu-toggle[aria-expanded=true]:before{transform:rotate(180deg)}.o-header__drawer-menu-toggle:hover{outline:0}[data-o-header-drawer--no-js] .o-header__drawer-menu-toggle{display:none}.o-header__drawer-menu-toggle--selected{background:rgba(255,255,255,.25)}.o-header__drawer-menu-toggle--selected:before{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:25px;height:25px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-header__drawer-menu-toggle--selected:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__drawer-menu-toggle--selected:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header__drawer-menu-toggle--unselected{background:rgba(230,217,206,.85)}.o-header__drawer-menu-toggle--unselected:before{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:25px;height:25px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%230A5E66,%230A5E66&format=svg")}@media screen and (-ms-high-contrast: active){.o-header__drawer-menu-toggle--unselected:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__drawer-menu-toggle--unselected:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header__drawer-menu-link{color:inherit;display:block;padding:12px 16px;border-bottom:0;font-size:18px;text-decoration:none}.o-header__drawer-menu-link:hover{color:#0a5e66}[aria-expanded=true]+.o-header__drawer-menu-link{background-color:#fff9f5}.o-header__drawer-menu-link--selected{color:#fff;background-color:#0a5e66}.o-header__drawer-menu-link--selected:hover,.o-header__drawer-menu-link--selected:focus{color:#fff9f5;outline-color:#33302e}[aria-expanded=true]+.o-header__drawer-menu-link--selected{background-color:#0a5e66}.o-header__drawer-menu-link--child{padding-left:40px}.o-header__drawer-menu-link--secondary{font-weight:600}.o-header__drawer-menu-link-detail{display:block;margin-top:.25em;font-size:14px}@keyframes o-header-mega{0%{opacity:0}100%{opacity:1}}.o-header__mega{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;box-shadow:0 1px 2px rgba(77,72,69,.25),0 4px 6px rgba(77,72,69,.1);display:none;position:absolute;top:100%;left:20px;right:20px;z-index:1;box-sizing:border-box;padding:18px 0;border-top:1px solid #ccc1b7;background-color:#fff9f5}.o-typography--loading-sans .o-header__mega{font-size:13.92px;font-family:sans-serif}.o-header__mega[aria-expanded=true],[data-o-header--no-js] :hover>.o-header__mega{display:block}.o-header__mega--animation{animation:o-header-mega .5s ease-out}.o-header__mega-wrapper{display:table;table-layout:fixed;width:100%;border-spacing:24px 0;margin-left:-24px}.o-header__mega-column{display:table-cell;padding-left:24px;border-left:1px solid #ccc1b7}.o-header__mega-column:first-child{border-left:0;padding-left:0}.o-header__mega-column--articles .o-header__mega-item:before{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:15px;height:15px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23990F3D,%23990F3D&format=svg");vertical-align:text-top;content:""}@media screen and (-ms-high-contrast: active){.o-header__mega-column--articles .o-header__mega-item:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header__mega-column--articles .o-header__mega-item:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header__mega-column--articles .o-header__mega-link{white-space:none}.o-header__mega-column--subsections{width:30%}.o-header__mega-column--subsections .o-header__mega-list{columns:2}.o-header__mega-column--subsections .o-header__mega-item:first-child{font-weight:600}.o-header__mega-heading{margin:0 0 8px;font-size:inherit;text-transform:uppercase}.o-header__mega-list{margin:0;padding:0;list-style:none}.o-header__mega-item{line-height:1.5}.o-header__mega-link{color:inherit;text-decoration:none;border:0}.o-header__mega-link:hover{color:#33302e}.o-header__mega-link--highlight,.o-header__mega-link[aria-current]{color:#0a5e66}.o-header__mega-link:hover{text-decoration:underline}.o-header--sticky{position:fixed;top:0;left:0;width:100%;z-index:99;transform:translateY(-100%);transition:transform .35s cubic-bezier(1, 0, 0.5, 1.275);will-change:transform;border-top:30px solid transparent;margin-top:-30px}@media print{.o-header--sticky{display:none}}.o-header--sticky-active{box-shadow:0 1px 3px rgba(77,72,69,.2),0 6px 10px rgba(77,72,69,.15);transform:translateY(0)}.o-header--simple .o-header__top-wrapper{height:55px}.o-header--simple .o-header__top-link{margin-top:4px;margin-bottom:4px}.o-header--simple .o-header__top-logo{margin-top:0;margin-bottom:0}@media(min-width: 61.25em){.o-header--simple .o-header__top-logo{width:300px;height:24px}}.o-header--simple .o-header__top-takeover .o-header__nav-link{padding:0;line-height:55px}.o-header__subbrand{height:39px;background-color:#443c47;padding:8px 0;display:table;width:100%}@media(min-width: 46.25em){.o-header__subbrand{height:64px}}.o-header__subbrand-logo{display:table-cell;vertical-align:middle;border:0;margin:16px auto;background-size:contain;background-position:50%;background-repeat:no-repeat}.o-header--transparent{color:#fff;border-color:rgba(255,255,255,.4);background-color:transparent}.o-header--transparent .o-header__row{border-bottom-color:rgba(255,255,255,.4)}.o-header--transparent .o-header__top-link--menu:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:hamburger?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-header--transparent .o-header__top-link--menu:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:hamburger?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header--transparent .o-header__top-link--menu:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:hamburger?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header--transparent .o-header__top-link--search:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-header--transparent .o-header__top-link--search:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header--transparent .o-header__top-link--search:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header--transparent .o-header__top-link--myft:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-myft?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-header--transparent .o-header__top-link--myft:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-myft?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header--transparent .o-header__top-link--myft:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-myft?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header--transparent .o-header__top-logo{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-ft-masthead?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-header--transparent .o-header__top-logo{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-ft-masthead?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-header--transparent .o-header__top-logo{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-ft-masthead?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-header--transparent .o-header__nav-button{background-color:#fff;color:#262a33;border-color:transparent}.o-header--transparent .o-header__nav-button:hover{background-color:#c9cacc;color:#262a33;border-color:transparent;text-decoration:none}.o-header--transparent .o-header__nav-button:focus{background-color:#c9cacc;color:#262a33;border-color:transparent}.o-header--transparent .o-header__nav-button[aria-selected=true],.o-header--transparent .o-header__nav-button[aria-current],.o-header--transparent .o-header__nav-button[aria-pressed=true],.o-header--transparent .o-header__nav-button:active{background-color:#9d9fa3;color:#262a33;border-color:transparent}.o-header--transparent .o-header__nav-link:hover,.o-header--transparent .o-header__anon-link:hover{color:#fff}.o-header--transparent .o-header__nav-link:hover:after,.o-header--transparent .o-header__anon-link:hover:after{background-color:#fff}.o-header--transparent .o-header__nav-link--highlight,.o-header--transparent .o-header__nav-link[aria-current],.o-header--transparent .o-header__anon-link--highlight,.o-header--transparent .o-header__anon-link[aria-current]{color:#fff}.o-header--transparent .o-header__nav-link--highlight:after,.o-header--transparent .o-header__nav-link[aria-current]:after,.o-header--transparent .o-header__anon-link--highlight:after,.o-header--transparent .o-header__anon-link[aria-current]:after{background-color:#fff}
@media print{.o-ads{display:none !important}}.o-ads,[data-o-ads-name]{animation-name:none}.o-ads iframe,[data-o-ads-name] iframe{background:none transparent}.o-ads--center{width:100%;text-align:center}.o-ads--empty{width:0;height:0;display:none;visibility:hidden}.o-ads--label-left .o-ads__inner::before{content:"\25BC   Advertisement \25BC";display:block;font-size:14px;text-align:"left"}.o-ads--label-right .o-ads__inner::before{content:"\25BC   Advertisement \25BC";display:block;font-size:14px;text-align:"right"}.o-ads--label-center .o-ads__inner::before{content:"\25BC   Advertisement \25BC";display:block;font-size:14px;text-align:"center"}.o-ads--transition{will-change:min-height,padding,height;transform:translate3d(0, 0, 0);transition:height .35s cubic-bezier(0.215, 0.61, 0.355, 1),min-height .35s cubic-bezier(0.215, 0.61, 0.355, 1),padding .35s cubic-bezier(0.215, 0.61, 0.355, 1)}.o-ads--label-with-borders{font-size:14px;text-align:"left"}.o-ads--label-with-borders:before,.o-ads--label-with-borders:after{text-align:left;display:block;border-color:#ccc1b7;border-style:solid;border-width:0}.o-ads--label-with-borders:before{content:"Advertisement";padding:25px 0 20px;margin-top:12.5px;border-top-width:1px}.o-ads--label-with-borders:after{content:"";padding-top:25px;border-bottom-width:1px}.o-ads--label-with-borders.o-ads--label-with-borders--left::before,.o-ads--label-with-borders.o-ads--label-with-borders--left::after,.o-ads--label-with-borders.o-ads--label-with-borders--center::before,.o-ads--label-with-borders.o-ads--label-with-borders--center::after,.o-ads--label-with-borders.o-ads--label-with-borders--right::before,.o-ads--label-with-borders.o-ads--label-with-borders--right::after{text-align:inherit}.o-ads--background{background-color:#ccc1b7}.o-ads--slate-background{background-color:#262a33}.o-ads--placeholder{background:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon:more?source=next&tint=999999,999999") 50%/25% no-repeat transparent}.o-ads--reserve-90{box-sizing:content-box;min-height:90px;height:90px;padding:10px 0;overflow:hidden}.o-ads--reserve-90[data-o-ads-loaded=MediumRectangle],.o-ads--reserve-90[data-o-ads-loaded=Billboard]{height:250px}.o-ads--reserve-250{box-sizing:content-box;height:250px;min-height:250px;padding:10px 0;overflow:hidden}.o-ads--reserve-250[data-o-ads-loaded=Leaderboard] .o-ads__outer,.o-ads--reserve-250[data-o-ads-loaded=SuperLeaderboard] .o-ads__outer{position:relative;top:50%;margin-top:-45px}.o-ads--reserve-250[data-o-ads-loaded=Leaderboard][data-o-ads-targeting="pos=top;"] .o-ads__outer,.o-ads--reserve-250[data-o-ads-loaded=SuperLeaderboard][data-o-ads-targeting="pos=top;"] .o-ads__outer{top:100%;margin-top:-90px}:root[data-perf-janky=calm-middle] [data-o-ads-loaded=Leaderboard].o-ads--reserve-250[data-o-ads-targeting="pos=top;"] .o-ads__outer,:root[data-perf-janky=calm-middle] [data-o-ads-loaded=SuperLeaderboard].o-ads--reserve-250[data-o-ads-targeting="pos=top;"] .o-ads__outer{top:50%;margin-top:-45px}.o-ads--reserve-90[data-o-ads-loaded=Responsive],.o-ads--reserve-250[data-o-ads-loaded=Responsive]{box-sizing:content-box;height:250px;min-height:250px;padding:10px 0}@media(max-width: 90em){.o-ads--reserve-90[data-o-ads-loaded=Responsive],.o-ads--reserve-250[data-o-ads-loaded=Responsive]{height:auto;min-height:17.34vw;padding:0}}@media(max-width: 30.615em){.o-ads--reserve-90[data-o-ads-loaded=Responsive],.o-ads--reserve-250[data-o-ads-loaded=Responsive]{height:auto;min-height:48.1vw}}div[id^=google_ads_iframe_]{margin:0 auto}
.o-teaser__timestamp{font-family:MetricWeb, sans-serif;font-size:12px;line-height:16px}.o-typography--loading-sans .o-teaser__timestamp{font-size:10.44px;font-family:sans-serif}.o-teaser__timestamp--closed,.o-teaser__timestamp--inprogress,.o-teaser__timestamp--live,.o-teaser__timestamp--updated,.o-teaser__timestamp--new,.o-teaser__timestamp{text-transform:uppercase;color:#66605c}.o-teaser__timestamp--inprogress,.o-teaser__timestamp--live,.o-teaser__timestamp--updated,.o-teaser__timestamp--new{color:#c00}.o-teaser__timestamp--closed{color:#66605c}.o-teaser__timestamp{display:inline-block}.o-teaser__timestamp-prefix:before{content:"";width:calc(.5em + 4px);height:calc(.5em + 4px);min-width:10px;min-height:10px;margin-right:2px;border-radius:50%;background-color:currentcolor;display:inline-block;vertical-align:baseline;margin-bottom:-1px}.o-teaser{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;position:relative;width:100%;text-rendering:optimizeLegibility;margin-bottom:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.o-typography--loading-sans .o-teaser{font-size:12.18px;font-family:sans-serif}.o-teaser *,.o-teaser *:before,.o-teaser *:after{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}.o-teaser__meta{font-size:16px;line-height:20px;color:#990f3d;margin-bottom:4px}.o-typography--loading-sans .o-teaser__meta{font-size:13.92px}.o-teaser__tag-prefix{font-family:MetricWeb, sans-serif;font-weight:600;margin-right:.25em}.o-teaser__tag{font-weight:400;color:inherit;text-decoration:none;border:0;margin-right:.25em}.o-teaser__tag:hover,.o-teaser__tag:focus{color:#736c67}.o-teaser__tag span{display:inline-block}.o-teaser__tag-suffix{font-size:14px;line-height:16px;color:#66605c}.o-typography--loading-sans .o-teaser__tag-suffix{font-size:12.18px}.o-teaser__heading{font-family:FinancierDisplayWeb, serif;font-size:20px;line-height:24px;color:#000;margin-top:0;margin-bottom:0;font-weight:500}.o-typography--loading-display .o-teaser__heading{font-size:18px;font-family:serif}.o-teaser__heading a{color:inherit;text-decoration:none;border:0}.o-teaser__heading a:focus,.o-teaser__heading a:hover{color:#736c67}.o-teaser__heading a:visited{color:#66605c}.o-teaser__standfirst{font-size:16px;line-height:20px;color:#66605c;margin-top:0;margin-bottom:0}.o-typography--loading-sans .o-teaser__standfirst{font-size:13.92px}.o-teaser__standfirst a{color:inherit;text-decoration:none;border:0}.o-teaser__standfirst a:focus,.o-teaser__standfirst a:hover{color:#736c67}.o-teaser__standfirst a:visited{color:#66605c}.o-teaser__heading+.o-teaser__standfirst{margin-top:8px}.o-teaser__image-placeholder{position:relative;height:0;padding-bottom:56.25%;z-index:1}.o-teaser__image-placeholder .o-teaser__image{float:left}.o-teaser__image{display:block;width:100%;margin:0}.o-teaser--has-headshot .o-teaser__content{padding-right:95px;min-height:60px}.o-teaser__headshot{position:absolute;bottom:0;right:0;height:75px;width:75px}.o-teaser__timestamp{display:block;margin-top:auto;padding-top:16px}.o-teaser__timestamp--inprogress>.o-teaser__timestamp-prefix:before,.o-teaser__timestamp--live>.o-teaser__timestamp-prefix:before{animation:_o-labels-live-pulse 1.2s ease-in-out infinite}@media(prefers-reduced-motion){.o-teaser__timestamp--inprogress>.o-teaser__timestamp-prefix:before,.o-teaser__timestamp--live>.o-teaser__timestamp-prefix:before{animation:none}}@keyframes _o-labels-live-pulse{0%{opacity:1}30%{opacity:.4}70%{opacity:.4}100%{opacity:1}}.o-teaser__timestamp--comingsoon{color:#fd9d00}.o-teaser--promoted-content,.o-teaser--paid-post{color:#000}.o-teaser--promoted-content .o-teaser__meta,.o-teaser--paid-post .o-teaser__meta{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;font-weight:600;color:#66605c;margin-bottom:8px}.o-typography--loading-sans-bold .o-teaser--promoted-content .o-teaser__meta,.o-typography--loading-sans-bold .o-teaser--paid-post .o-teaser__meta{font-size:11.62px;font-family:sans-serif}.o-teaser--promoted-content .o-teaser__promoted-prefix,.o-teaser--paid-post .o-teaser__promoted-prefix{font-size:16px;line-height:20px;text-transform:uppercase;color:#355778;display:block}.o-typography--loading-sans .o-teaser--promoted-content .o-teaser__promoted-prefix,.o-typography--loading-sans .o-teaser--paid-post .o-teaser__promoted-prefix{font-size:13.92px}.o-teaser--promoted-content .o-teaser__promoted-by,.o-teaser--paid-post .o-teaser__promoted-by{text-transform:uppercase}.o-teaser--promoted-content .o-teaser__heading a{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&tint=%23000000,%23000000&format=svg");background-repeat:no-repeat;padding-right:calc(1em + 0.5ch - 0.25em - 0.25em);background-position-x:calc(100% + .5ch);background-origin:border-box;background-size:calc(1em + 0.5ch) calc(1em + 0.5ch);color:#000;border-bottom-color:#ccc1b7;text-decoration-color:#ccc1b7}@media screen and (-ms-high-contrast: active){.o-teaser--promoted-content .o-teaser__heading a{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser--promoted-content .o-teaser__heading a{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&tint=%23000000,%23000000&format=svg")}}@supports(background-size: contain){.o-teaser--promoted-content .o-teaser__heading a{background-position-y:calc(100% + 0.25ex - 1px)}}@supports(text-decoration-thickness: 0.25ex){.o-teaser--promoted-content .o-teaser__heading a{background-position-y:calc(100% + 0.25em - 0.25ex - 1px)}}@supports(background-size: contain){.o-teaser--promoted-content .o-teaser__heading a{background-size:contain}}.o-teaser--promoted-content .o-teaser__heading a[target=_blank]:after{position:absolute;clip:rect(0 0 0 0);clip-path:polygon(0 0, 0 0);margin:-1px;border:0;overflow:hidden;padding:0;width:2px;height:2px;white-space:nowrap;content:"(opens a new window)"}.o-teaser--promoted-content .o-teaser__heading a:hover{color:#736c67;border-bottom-color:#999189;text-decoration-color:#999189}.o-teaser--promoted-content .o-teaser__heading a:focus{color:#736c67}.o-teaser__related{list-style:disc outside;padding-left:30px;margin:0 0 20px;border-left:1px solid #ccc1b7}@media(max-width: 46.24em){.o-teaser__related{display:none}}.o-teaser__related-item{font-size:14px;line-height:22px;color:#66605c}@media(min-width: 61.25em){.o-teaser__related-item{font-size:16px;line-height:24px}}.o-typography--loading-sans .o-teaser__related-item{font-size:12.18px}@media(min-width: 61.25em){.o-typography--loading-sans .o-teaser__related-item{font-size:13.92px}}.o-teaser__related-item:hover,.o-teaser__related-item:focus{color:#736c67}.o-teaser__related-item a{border-bottom:0;text-decoration:none;color:inherit}.o-teaser__related-item a:hover{color:inherit}.o-teaser__related-item.o-teaser__related-item--video a:after{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:13px;height:13px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");content:"";position:relative;top:1px;background-color:#000;margin-left:5px}@media screen and (-ms-high-contrast: active){.o-teaser__related-item.o-teaser__related-item--video a:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser__related-item.o-teaser__related-item--video a:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser__syndication-indicator{position:relative;top:4px;border-radius:50%}.o-teaser__syndication-indicator span{position:absolute;clip:rect(1px, 1px, 1px, 1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.syndi.o-teaser__syndication-indicator{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:20px;height:20px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");background-color:#999189}@media screen and (-ms-high-contrast: active){.syndi.o-teaser__syndication-indicator{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.syndi.o-teaser__syndication-indicator{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser__syndication-indicator--yes,.syndi.o-teaser__syndication-indicator--yes{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:20px;height:20px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");background-color:#00994d}@media screen and (-ms-high-contrast: active){.o-teaser__syndication-indicator--yes,.syndi.o-teaser__syndication-indicator--yes{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser__syndication-indicator--yes,.syndi.o-teaser__syndication-indicator--yes{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser__syndication-indicator--no,.syndi.o-teaser__syndication-indicator--no{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:20px;height:20px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");background-color:#c00}@media screen and (-ms-high-contrast: active){.o-teaser__syndication-indicator--no,.syndi.o-teaser__syndication-indicator--no{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser__syndication-indicator--no,.syndi.o-teaser__syndication-indicator--no{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser__syndication-indicator--verify,.syndi.o-teaser__syndication-indicator--verify{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:20px;height:20px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");background-color:#f83}@media screen and (-ms-high-contrast: active){.o-teaser__syndication-indicator--verify,.syndi.o-teaser__syndication-indicator--verify{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser__syndication-indicator--verify,.syndi.o-teaser__syndication-indicator--verify{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser--small{display:flex;padding-bottom:12px;border-bottom:1px solid #ccc1b7}.o-teaser--small .o-teaser__content{flex:1 0 0%;order:2}.o-teaser--small .o-teaser__image-container{width:30%;flex-shrink:0;padding-right:20px}@media(max-width: 46.24em){.o-teaser--small .o-teaser__image-container{display:none}}.o-teaser--small.o-teaser--stacked{flex-direction:column}.o-teaser--small.o-teaser--stacked .o-teaser__content{flex-basis:auto}@media(min-width: 46.25em){.o-teaser--small.o-teaser--stacked{border-bottom:0;padding-bottom:0}}.o-teaser--small.o-teaser--stacked .o-teaser__image-container{margin-bottom:12px;width:100%;min-height:1px;padding-top:0;padding-right:0}.o-teaser--small.o-teaser--image-position-right.o-teaser--has-image .o-teaser__image-container{order:2;padding-left:20px;padding-right:inherit}.o-teaser--large,.o-teaser--large-portrait,.o-teaser--large-landscape{zoom:1}.o-teaser--large:before,.o-teaser--large:after,.o-teaser--large-portrait:before,.o-teaser--large-portrait:after,.o-teaser--large-landscape:before,.o-teaser--large-landscape:after{content:"";display:table;display:flex}.o-teaser--large:after,.o-teaser--large-portrait:after,.o-teaser--large-landscape:after{clear:both}.o-teaser--large .o-teaser__content,.o-teaser--large-portrait .o-teaser__content,.o-teaser--large-landscape .o-teaser__content{padding:20px;border:1px solid #ccc1b7}.o-teaser--large .o-teaser__heading,.o-teaser--large-portrait .o-teaser__heading,.o-teaser--large-landscape .o-teaser__heading{font-family:FinancierDisplayWeb, serif;font-size:24px;line-height:28px}.o-typography--loading-display .o-teaser--large .o-teaser__heading,.o-typography--loading-display .o-teaser--large-portrait .o-teaser__heading,.o-typography--loading-display .o-teaser--large-landscape .o-teaser__heading{font-size:21.6px;font-family:serif}.o-teaser--large .o-teaser__standfirst,.o-teaser--large-portrait .o-teaser__standfirst,.o-teaser--large-landscape .o-teaser__standfirst{font-size:18px;line-height:24px;margin-top:24px}@media(min-width: 61.25em){.o-teaser--large .o-teaser__standfirst,.o-teaser--large-portrait .o-teaser__standfirst,.o-teaser--large-landscape .o-teaser__standfirst{font-size:20px;line-height:24px}}.o-typography--loading-sans .o-teaser--large .o-teaser__standfirst,.o-typography--loading-sans .o-teaser--large-portrait .o-teaser__standfirst,.o-typography--loading-sans .o-teaser--large-landscape .o-teaser__standfirst{font-size:15.66px}@media(min-width: 61.25em){.o-typography--loading-sans .o-teaser--large .o-teaser__standfirst,.o-typography--loading-sans .o-teaser--large-portrait .o-teaser__standfirst,.o-typography--loading-sans .o-teaser--large-landscape .o-teaser__standfirst{font-size:17.4px}}.o-teaser--large-portrait .o-teaser__content{border-bottom:0}.o-teaser--large-portrait .o-teaser__image{position:relative;z-index:1}.o-teaser--large-portrait .o-teaser__image-container{position:relative;float:none;width:100%;margin-top:-1px;padding-left:25%}.o-teaser--large-portrait .o-teaser__image-container:after{position:absolute;top:0;left:0;content:"";display:block;width:100%;height:50%;border-left:1px solid #ccc1b7;border-bottom:1px solid #ccc1b7}.o-teaser--large-landscape .o-teaser__content{position:relative;float:left;width:60%;border-right:0}.o-teaser--large-landscape .o-teaser__content:after{content:"";position:absolute;top:1px;right:-25%;height:100%;width:25%;display:block;border:1px solid #ccc1b7;border-left:0}.o-teaser--large-landscape .o-teaser__image{position:relative;max-width:220px;z-index:1}.o-teaser--large-landscape .o-teaser__image-container{position:relative;float:right;width:40%;margin-top:0;padding-left:0}.o-teaser--large-landscape .o-teaser__image-container:after{display:none}.o-teaser--large.o-teaser--has-image .o-teaser__image{position:relative;z-index:1}@media(min-width: 46.25em)and (max-width: 61.24em){.o-teaser--large.o-teaser--has-image .o-teaser__image{max-width:220px}}.o-teaser--large.o-teaser--has-image .o-teaser__image-container{position:relative;float:none;width:100%;margin-top:-1px;padding-left:25%}.o-teaser--large.o-teaser--has-image .o-teaser__image-container:after{position:absolute;top:0;left:0;content:"";display:block;width:100%;height:50%;border-left:1px solid #ccc1b7;border-bottom:1px solid #ccc1b7}@media(min-width: 30.625em)and (max-width: 61.24em){.o-teaser--large.o-teaser--has-image .o-teaser__image-container{float:right;margin-top:0;padding-left:0}.o-teaser--large.o-teaser--has-image .o-teaser__image-container:after{display:none}}@media(min-width: 30.625em)and (max-width: 46.24em){.o-teaser--large.o-teaser--has-image .o-teaser__image-container{width:40%}}@media(min-width: 46.25em)and (max-width: 61.24em){.o-teaser--large.o-teaser--has-image .o-teaser__image-container{width:30%}}@media(max-width: 30.615em){.o-teaser--large.o-teaser--has-image .o-teaser__content{border-bottom:0}}@media(min-width: 30.625em)and (max-width: 61.24em){.o-teaser--large.o-teaser--has-image .o-teaser__content{position:relative;float:left;border-right:0}.o-teaser--large.o-teaser--has-image .o-teaser__content:after{content:"";position:absolute;top:1px;right:-25%;height:100%;width:25%;display:block;border:1px solid #ccc1b7;border-left:0}}@media(min-width: 30.625em)and (max-width: 46.24em){.o-teaser--large.o-teaser--has-image .o-teaser__content{width:60%}}@media(min-width: 46.25em)and (max-width: 61.24em){.o-teaser--large.o-teaser--has-image .o-teaser__content{width:70%}}@media(min-width: 61.25em){.o-teaser--large.o-teaser--has-image .o-teaser__content{border-bottom:0}}.o-teaser--opinion .o-teaser__meta{color:#0f5499}.o-teaser--opinion.o-teaser--opinion-background .o-teaser__standfirst,.o-teaser--opinion.o-teaser--opinion-background .o-teaser__timestamp{color:#525c66}.o-teaser--opinion.o-teaser--opinion-background.o-teaser--large .o-teaser__content,.o-teaser--opinion.o-teaser--opinion-background.o-teaser--large .o-teaser__image-container:after{color:#000;background:#cce6ff;border:0}@media(min-width: 30.625em)and (max-width: 61.24em){.o-teaser--opinion.o-teaser--opinion-background.o-teaser--large .o-teaser__content:after{color:#000;background:#cce6ff;top:0;border:0}}.o-teaser--inverse .o-teaser__heading a:hover,.o-teaser--inverse .o-teaser__heading a:focus,.o-teaser--inverse .o-teaser__heading a:visited,.o-teaser--inverse .o-teaser__standfirst a:hover,.o-teaser--inverse .o-teaser__standfirst a:focus,.o-teaser--inverse .o-teaser__standfirst a:visited,.o-teaser--inverse .o-teaser__tag:hover,.o-teaser--inverse .o-teaser__tag:focus{color:#999}.o-teaser--inverse .o-teaser__meta,.o-teaser--inverse .o-teaser__tag-suffix,.o-teaser--inverse .o-teaser__heading{color:#fff}.o-teaser--inverse .o-teaser__standfirst,.o-teaser--inverse .o-teaser__timestamp{color:#999}.o-teaser--inverse.o-teaser--hero .o-teaser__meta:after{border-bottom-color:#fff}.o-teaser--video .o-teaser__heading:before{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");content:"";width:.7em;height:.7em;min-width:12px;min-height:12px;margin-right:.15em;background-color:#262a33}@media screen and (-ms-high-contrast: active){.o-teaser--video .o-teaser__heading:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser--video .o-teaser__heading:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser--video.o-teaser--has-image .o-teaser__heading:before{content:none}@media(max-width: 46.24em){.o-teaser--video.o-teaser--has-image.o-teaser--small .o-teaser__heading:before{content:""}}.o-teaser--video .o-teaser__image-placeholder{position:relative}.o-teaser--video .o-teaser__image-placeholder:after{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");pointer-events:none;content:"";position:absolute;bottom:0;left:0;z-index:1;width:15%;padding-top:15%;min-width:20px;min-height:20px;background-color:#262a33}@media screen and (-ms-high-contrast: active){.o-teaser--video .o-teaser__image-placeholder:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser--video .o-teaser__image-placeholder:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser--video .o-teaser__image-container a:focus{display:block;border:0}.o-teaser--has-video .o-teaser__heading:before{content:none}.o-teaser--has-video .o-teaser__image-container{padding:0 0 12px}.o-teaser--has-video.o-teaser--large .o-teaser__image-container,.o-teaser--has-video.o-teaser--hero .o-teaser__image-container{padding-left:10%;padding-right:10%}.o-teaser--has-video.o-teaser--large .o-teaser__image-container{padding-top:12px}.o-teaser--has-video.o-teaser--hero .o-teaser__image-container{padding-top:4px}.o-teaser--audio .o-teaser__heading:before{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:audio?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");content:"";width:.7em;height:.7em;min-width:12px;min-height:12px;margin-right:.15em;background-color:#262a33}@media screen and (-ms-high-contrast: active){.o-teaser--audio .o-teaser__heading:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:audio?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser--audio .o-teaser__heading:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:audio?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser--audio.o-teaser--has-image .o-teaser__heading:before{content:none}@media(max-width: 46.24em){.o-teaser--audio.o-teaser--has-image.o-teaser--small .o-teaser__heading:before{content:""}}.o-teaser--audio .o-teaser__image-placeholder{position:relative}.o-teaser--audio .o-teaser__image-placeholder:after{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:audio?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");pointer-events:none;content:"";position:absolute;bottom:0;left:0;z-index:1;width:15%;padding-top:15%;min-width:20px;min-height:20px;background-color:#262a33}@media screen and (-ms-high-contrast: active){.o-teaser--audio .o-teaser__image-placeholder:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:audio?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser--audio .o-teaser__image-placeholder:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:audio?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser--hero{zoom:1;display:flex;flex-flow:column nowrap}.o-teaser--hero:before,.o-teaser--hero:after{content:"";display:table;display:flex}.o-teaser--hero:after{clear:both}.o-teaser--hero .o-teaser__content{padding:20px;border:1px solid #ccc1b7}.o-teaser--hero .o-teaser__heading{font-family:FinancierDisplayWeb, serif;font-size:24px;line-height:28px}.o-typography--loading-display .o-teaser--hero .o-teaser__heading{font-size:21.6px;font-family:serif}.o-teaser--hero .o-teaser__standfirst{font-size:18px;line-height:24px;margin-top:24px}@media(min-width: 61.25em){.o-teaser--hero .o-teaser__standfirst{font-size:20px;line-height:24px}}.o-typography--loading-sans .o-teaser--hero .o-teaser__standfirst{font-size:15.66px}@media(min-width: 61.25em){.o-typography--loading-sans .o-teaser--hero .o-teaser__standfirst{font-size:17.4px}}.o-teaser--hero .o-teaser__content{background:#f2dfce;border:0;word-break:break-word}.o-teaser--hero .o-teaser__meta:after{content:"";display:block;width:60px;border-bottom:4px solid #990f3d;margin-top:4px;margin-bottom:8px}.o-teaser--hero.o-teaser *:focus-visible,.o-teaser--hero.o-teaser *:focus{outline-color:currentColor}.o-teaser--hero.o-teaser--has-image .o-teaser__image{position:relative;z-index:1}@media(min-width: 46.25em)and (max-width: 61.24em){.o-teaser--hero.o-teaser--has-image .o-teaser__image{max-width:220px}}.o-teaser--hero.o-teaser--has-image .o-teaser__image-container{position:relative;float:none;width:100%;margin-top:-1px;padding-left:25%}.o-teaser--hero.o-teaser--has-image .o-teaser__image-container:after{position:absolute;top:0;left:0;content:"";display:block;width:100%;height:50%;border-left:1px solid #ccc1b7;border-bottom:1px solid #ccc1b7}@media(min-width: 30.625em)and (max-width: 61.24em){.o-teaser--hero.o-teaser--has-image .o-teaser__image-container{float:right;margin-top:0;padding-left:0}.o-teaser--hero.o-teaser--has-image .o-teaser__image-container:after{display:none}}@media(min-width: 30.625em)and (max-width: 46.24em){.o-teaser--hero.o-teaser--has-image .o-teaser__image-container{width:40%}}@media(min-width: 46.25em)and (max-width: 61.24em){.o-teaser--hero.o-teaser--has-image .o-teaser__image-container{width:30%}}.o-teaser--hero.o-teaser--has-image .o-teaser__image-container{order:-1;width:100%;padding-left:30%}.o-teaser--hero.o-teaser--has-image .o-teaser__image-container:after{background:#f2dfce;display:block;top:50%;border:0}.o-teaser--hero.o-teaser--has-image .o-teaser__image{max-width:100%}@media(max-width: 46.24em){.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__content{text-align:center}.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__heading{font-family:FinancierDisplayWeb, serif;font-size:28px;line-height:32px}.o-typography--loading-display .o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__heading{font-size:25.2px;font-family:serif}.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__meta:after{margin-left:auto;margin-right:auto}.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__image-container{padding:0 15%}}@media(min-width: 46.25em){.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image{position:relative}.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__image-container{position:relative;margin-top:0;padding-left:0;z-index:0}.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__image-container:after{display:none}.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__content{position:absolute;top:0;left:0;z-index:1;width:100%;min-height:30%;background-color:transparent;background-image:linear-gradient(to bottom, rgba(0, 0, 0, 0.75), transparent);pointer-events:none}.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__heading,.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__heading a,.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__heading a:visited,.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__meta,.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__standfirst,.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__standfirst a,.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__standfirst a:visited,.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__timestamp{color:#fff;pointer-events:auto}.o-teaser--hero.o-teaser--has-image.o-teaser--hero-image .o-teaser__meta:after{border-bottom-color:#fff}}.o-teaser--hero.o-teaser--standalone .o-teaser__heading{font-size:28px;line-height:32px}.o-typography--loading-sans .o-teaser--hero.o-teaser--standalone .o-teaser__heading{font-size:24.36px}.o-teaser--hero.o-teaser--standalone .o-teaser__image-container{padding-left:20%}.o-teaser--hero.o-teaser--standalone .o-teaser__image-container:after{top:25%;height:75%}.o-teaser--centre .o-teaser__content{text-align:center}.o-teaser--centre .o-teaser__heading{font-family:FinancierDisplayWeb, serif;font-size:28px;line-height:32px}.o-typography--loading-display .o-teaser--centre .o-teaser__heading{font-size:25.2px;font-family:serif}.o-teaser--centre .o-teaser__meta:after{margin-left:auto;margin-right:auto}.o-teaser--centre.o-teaser--has-image .o-teaser__image-container{padding:0 15%}.o-teaser--stretched{display:flex;flex-grow:1}.o-teaser--stretched .o-teaser__content{display:flex;flex-direction:column;flex-grow:1;flex-basis:auto}.o-teaser--hero.o-teaser--highlight .o-teaser__heading a:hover,.o-teaser--hero.o-teaser--highlight .o-teaser__heading a:focus,.o-teaser--hero.o-teaser--highlight .o-teaser__heading a:visited,.o-teaser--hero.o-teaser--highlight .o-teaser__standfirst a:hover,.o-teaser--hero.o-teaser--highlight .o-teaser__standfirst a:focus,.o-teaser--hero.o-teaser--highlight .o-teaser__standfirst a:visited,.o-teaser--hero.o-teaser--highlight .o-teaser__tag:hover,.o-teaser--hero.o-teaser--highlight .o-teaser__tag:focus,.o-teaser--hero.o-teaser--opinion .o-teaser__heading a:hover,.o-teaser--hero.o-teaser--opinion .o-teaser__heading a:focus,.o-teaser--hero.o-teaser--opinion .o-teaser__heading a:visited,.o-teaser--hero.o-teaser--opinion .o-teaser__standfirst a:hover,.o-teaser--hero.o-teaser--opinion .o-teaser__standfirst a:focus,.o-teaser--hero.o-teaser--opinion .o-teaser__standfirst a:visited,.o-teaser--hero.o-teaser--opinion .o-teaser__tag:hover,.o-teaser--hero.o-teaser--opinion .o-teaser__tag:focus{color:#999}.o-teaser--hero.o-teaser--highlight .o-teaser__meta,.o-teaser--hero.o-teaser--highlight .o-teaser__tag-suffix,.o-teaser--hero.o-teaser--highlight .o-teaser__heading,.o-teaser--hero.o-teaser--opinion .o-teaser__meta,.o-teaser--hero.o-teaser--opinion .o-teaser__tag-suffix,.o-teaser--hero.o-teaser--opinion .o-teaser__heading{color:#fff}.o-teaser--hero.o-teaser--highlight .o-teaser__standfirst,.o-teaser--hero.o-teaser--highlight .o-teaser__timestamp,.o-teaser--hero.o-teaser--opinion .o-teaser__standfirst,.o-teaser--hero.o-teaser--opinion .o-teaser__timestamp{color:#999}.o-teaser--hero.o-teaser--highlight.o-teaser--hero .o-teaser__meta:after,.o-teaser--hero.o-teaser--opinion.o-teaser--hero .o-teaser__meta:after{border-bottom-color:#fff}.o-teaser--hero.o-teaser--highlight.o-teaser--hero .o-teaser__content,.o-teaser--hero.o-teaser--highlight.o-teaser--hero .o-teaser__image-container:after,.o-teaser--hero.o-teaser--opinion.o-teaser--hero .o-teaser__content,.o-teaser--hero.o-teaser--opinion.o-teaser--hero .o-teaser__image-container:after{border:0}@media(min-width: 30.625em)and (max-width: 61.24em){.o-teaser--hero.o-teaser--highlight.o-teaser--hero .o-teaser__content:after,.o-teaser--hero.o-teaser--opinion.o-teaser--hero .o-teaser__content:after{top:0;border:0}}.o-teaser--hero.o-teaser--opinion .o-teaser__heading a:hover,.o-teaser--hero.o-teaser--opinion .o-teaser__heading a:focus,.o-teaser--hero.o-teaser--opinion .o-teaser__heading a:visited,.o-teaser--hero.o-teaser--opinion .o-teaser__standfirst a:hover,.o-teaser--hero.o-teaser--opinion .o-teaser__standfirst a:focus,.o-teaser--hero.o-teaser--opinion .o-teaser__standfirst a:visited,.o-teaser--hero.o-teaser--opinion .o-teaser__tag:hover,.o-teaser--hero.o-teaser--opinion .o-teaser__tag:focus{color:#bed1e3}.o-teaser--hero.o-teaser--opinion .o-teaser__standfirst,.o-teaser--hero.o-teaser--opinion .o-teaser__timestamp,.o-teaser--hero.o-teaser--opinion .o-teaser__timestamp-prefix:before{color:#cfddeb}.o-teaser--hero.o-teaser--opinion .o-teaser__timestamp-prefix:before{background-color:#cfddeb}.o-teaser--hero.o-teaser--opinion .o-teaser__content,.o-teaser--hero.o-teaser--opinion .o-teaser__image-container:after{background:#0f5499}@media(min-width: 30.625em)and (max-width: 61.24em){.o-teaser--hero.o-teaser--opinion .o-teaser__content:after{background:#0f5499}}.o-teaser--hero.o-teaser--highlight .o-teaser__heading a:hover,.o-teaser--hero.o-teaser--highlight .o-teaser__heading a:focus,.o-teaser--hero.o-teaser--highlight .o-teaser__heading a:visited,.o-teaser--hero.o-teaser--highlight .o-teaser__standfirst a:hover,.o-teaser--hero.o-teaser--highlight .o-teaser__standfirst a:focus,.o-teaser--hero.o-teaser--highlight .o-teaser__standfirst a:visited,.o-teaser--hero.o-teaser--highlight .o-teaser__tag:hover,.o-teaser--hero.o-teaser--highlight .o-teaser__tag:focus{color:#e3becb}.o-teaser--hero.o-teaser--highlight .o-teaser__standfirst,.o-teaser--hero.o-teaser--highlight .o-teaser__timestamp,.o-teaser--hero.o-teaser--highlight .o-teaser__timestamp-prefix:before{color:#ebcfd8}.o-teaser--hero.o-teaser--highlight .o-teaser__timestamp-prefix:before{background-color:#ebcfd8}.o-teaser--hero.o-teaser--highlight.o-teaser--hero .o-teaser__content,.o-teaser--hero.o-teaser--highlight.o-teaser--hero .o-teaser__image-container:after{color:#fff;background:#990f3d}@media(min-width: 30.625em)and (max-width: 61.24em){.o-teaser--hero.o-teaser--highlight.o-teaser--hero .o-teaser__content:after{color:#fff;background:#990f3d}}.o-teaser--hero.o-teaser--extra-article .o-teaser__heading a:hover,.o-teaser--hero.o-teaser--extra-article .o-teaser__heading a:focus,.o-teaser--hero.o-teaser--extra-article .o-teaser__standfirst a:hover,.o-teaser--hero.o-teaser--extra-article .o-teaser__standfirst a:focus{color:#ffec1a}.o-teaser--hero.o-teaser--extra-article .o-teaser__tag:hover,.o-teaser--hero.o-teaser--extra-article .o-teaser__tag:focus{color:#fffac1}.o-teaser--hero.o-teaser--extra-article .o-teaser__meta{color:#ffec1a}.o-teaser--hero.o-teaser--extra-article .o-teaser__meta:after{border-color:#ffec1a}.o-teaser--hero.o-teaser--extra-article .o-teaser__heading,.o-teaser--hero.o-teaser--extra-article .o-teaser__standfirst{color:#fff}.o-teaser--hero.o-teaser--extra-article .o-teaser__heading a:visited,.o-teaser--hero.o-teaser--extra-article .o-teaser__standfirst a:visited{color:#939599}.o-teaser--hero.o-teaser--extra-article .o-teaser__standfirst,.o-teaser--hero.o-teaser--extra-article .o-teaser__timestamp{color:#d4d4d6}.o-teaser--hero.o-teaser--extra-article .o-teaser__image-container:after,.o-teaser--hero.o-teaser--extra-article .o-teaser__content{background:#262a33}@media(min-width: 30.625em)and (max-width: 61.24em){.o-teaser--hero.o-teaser--extra-article .o-teaser__content:after{background:#262a33}}@media(min-width: 46.25em)and (max-width: 61.24em){.o-teaser--midslice.o-teaser--has-image .o-teaser__image-container{padding:0 30%}}.o-teaser--top-story{zoom:1}.o-teaser--top-story:before,.o-teaser--top-story:after{content:"";display:table;display:flex}.o-teaser--top-story:after{clear:both}.o-teaser--top-story .o-teaser__content{padding:20px;border:1px solid #ccc1b7}.o-teaser--top-story .o-teaser__heading{font-family:FinancierDisplayWeb, serif;font-size:24px;line-height:28px}.o-typography--loading-display .o-teaser--top-story .o-teaser__heading{font-size:21.6px;font-family:serif}.o-teaser--top-story .o-teaser__standfirst{font-size:18px;line-height:24px;margin-top:24px}@media(min-width: 61.25em){.o-teaser--top-story .o-teaser__standfirst{font-size:20px;line-height:24px}}.o-typography--loading-sans .o-teaser--top-story .o-teaser__standfirst{font-size:15.66px}@media(min-width: 61.25em){.o-typography--loading-sans .o-teaser--top-story .o-teaser__standfirst{font-size:17.4px}}.o-teaser--top-story .o-teaser__content{padding:0 0 32px;border:0}.o-teaser--top-story .o-teaser__heading{font-family:FinancierDisplayWeb, serif;font-size:32px;line-height:1}@media(min-width: 61.25em){.o-teaser--top-story .o-teaser__heading{font-size:48px;line-height:48px}}.o-typography--loading-display .o-teaser--top-story .o-teaser__heading{font-size:28.8px;font-family:serif}@media(min-width: 61.25em){.o-typography--loading-display .o-teaser--top-story .o-teaser__heading{font-size:43.2px}}.o-teaser--top-story .o-teaser__standfirst{font-size:20px;line-height:24px}.o-typography--loading-sans .o-teaser--top-story .o-teaser__standfirst{font-size:17.4px}.o-teaser--top-story.o-teaser--landscape .o-teaser__image-container,.o-teaser--top-story.o-teaser--standalone .o-teaser__image-container{margin-bottom:12px}.o-teaser--top-story.o-teaser--landscape,.o-teaser--top-story.o-teaser--big-story{zoom:1;background:#f2dfce;padding:12px}.o-teaser--top-story.o-teaser--landscape:before,.o-teaser--top-story.o-teaser--landscape:after,.o-teaser--top-story.o-teaser--big-story:before,.o-teaser--top-story.o-teaser--big-story:after{content:"";display:table;display:flex}.o-teaser--top-story.o-teaser--landscape:after,.o-teaser--top-story.o-teaser--big-story:after{clear:both}@media(min-width: 46.25em){.o-teaser--top-story.o-teaser--landscape,.o-teaser--top-story.o-teaser--big-story{padding:20px 0 0 20px}.o-teaser--top-story.o-teaser--landscape .o-teaser__content,.o-teaser--top-story.o-teaser--big-story .o-teaser__content{float:left;width:50%;padding-right:20px}.o-teaser--top-story.o-teaser--landscape .o-teaser__image-container,.o-teaser--top-story.o-teaser--landscape .o-teaser__related,.o-teaser--top-story.o-teaser--big-story .o-teaser__image-container,.o-teaser--top-story.o-teaser--big-story .o-teaser__related{float:right;width:50%}.o-teaser--top-story.o-teaser--landscape .o-teaser__related,.o-teaser--top-story.o-teaser--big-story .o-teaser__related{padding-right:20px}}.o-teaser--top-story.o-teaser--big-story{margin-bottom:0;padding:0;border-bottom:0}.o-teaser--top-story.o-teaser--big-story .o-teaser__image-placeholder{padding-bottom:100%}.o-teaser--top-story.o-teaser--big-story .o-teaser__content{padding:60px 0 12px}@media(min-width: 46.25em){.o-teaser--top-story.o-teaser--big-story .o-teaser__content{float:left;width:50%;padding:60px 20px 12px 0}.o-teaser--top-story.o-teaser--big-story .o-teaser__image-container{width:50%;float:right}}@media(min-width: 61.25em){.o-teaser--top-story.o-teaser--big-story .o-teaser__image-container{margin-bottom:0}}.o-teaser--basic-package,.o-teaser--special-report-package,.o-teaser--extra-package{width:100%;flex-flow:column nowrap}.o-teaser--basic-package .o-teaser__heading a:hover,.o-teaser--basic-package .o-teaser__heading a:focus,.o-teaser--basic-package .o-teaser__heading a:visited,.o-teaser--basic-package .o-teaser__standfirst a:hover,.o-teaser--basic-package .o-teaser__standfirst a:focus,.o-teaser--basic-package .o-teaser__standfirst a:visited,.o-teaser--basic-package .o-teaser__tag:hover,.o-teaser--basic-package .o-teaser__tag:focus,.o-teaser--special-report-package .o-teaser__heading a:hover,.o-teaser--special-report-package .o-teaser__heading a:focus,.o-teaser--special-report-package .o-teaser__heading a:visited,.o-teaser--special-report-package .o-teaser__standfirst a:hover,.o-teaser--special-report-package .o-teaser__standfirst a:focus,.o-teaser--special-report-package .o-teaser__standfirst a:visited,.o-teaser--special-report-package .o-teaser__tag:hover,.o-teaser--special-report-package .o-teaser__tag:focus,.o-teaser--extra-package .o-teaser__heading a:hover,.o-teaser--extra-package .o-teaser__heading a:focus,.o-teaser--extra-package .o-teaser__heading a:visited,.o-teaser--extra-package .o-teaser__standfirst a:hover,.o-teaser--extra-package .o-teaser__standfirst a:focus,.o-teaser--extra-package .o-teaser__standfirst a:visited,.o-teaser--extra-package .o-teaser__tag:hover,.o-teaser--extra-package .o-teaser__tag:focus{color:#999}.o-teaser--basic-package .o-teaser__meta,.o-teaser--basic-package .o-teaser__tag-suffix,.o-teaser--basic-package .o-teaser__heading,.o-teaser--special-report-package .o-teaser__meta,.o-teaser--special-report-package .o-teaser__tag-suffix,.o-teaser--special-report-package .o-teaser__heading,.o-teaser--extra-package .o-teaser__meta,.o-teaser--extra-package .o-teaser__tag-suffix,.o-teaser--extra-package .o-teaser__heading{color:#fff}.o-teaser--basic-package .o-teaser__standfirst,.o-teaser--basic-package .o-teaser__timestamp,.o-teaser--special-report-package .o-teaser__standfirst,.o-teaser--special-report-package .o-teaser__timestamp,.o-teaser--extra-package .o-teaser__standfirst,.o-teaser--extra-package .o-teaser__timestamp{color:#999}.o-teaser--basic-package.o-teaser--hero .o-teaser__meta:after,.o-teaser--special-report-package.o-teaser--hero .o-teaser__meta:after,.o-teaser--extra-package.o-teaser--hero .o-teaser__meta:after{border-bottom-color:#fff}.o-teaser--basic-package .package-teaser__list,.o-teaser--special-report-package .package-teaser__list,.o-teaser--extra-package .package-teaser__list{margin:-12px 0 0;padding:0 20px 12px;background:inherit;list-style:none}.o-teaser--basic-package .package-teaser__list-item,.o-teaser--basic-package .package-teaser__landing-link,.o-teaser--special-report-package .package-teaser__list-item,.o-teaser--special-report-package .package-teaser__landing-link,.o-teaser--extra-package .package-teaser__list-item,.o-teaser--extra-package .package-teaser__landing-link{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;padding:12px 0}.o-typography--loading-sans .o-teaser--basic-package .package-teaser__list-item,.o-typography--loading-sans .o-teaser--basic-package .package-teaser__landing-link,.o-typography--loading-sans .o-teaser--special-report-package .package-teaser__list-item,.o-typography--loading-sans .o-teaser--special-report-package .package-teaser__landing-link,.o-typography--loading-sans .o-teaser--extra-package .package-teaser__list-item,.o-typography--loading-sans .o-teaser--extra-package .package-teaser__landing-link{font-size:13.92px;font-family:sans-serif}.o-teaser--basic-package .package-teaser__list-item>a,.o-teaser--basic-package .package-teaser__landing-link>a,.o-teaser--special-report-package .package-teaser__list-item>a,.o-teaser--special-report-package .package-teaser__landing-link>a,.o-teaser--extra-package .package-teaser__list-item>a,.o-teaser--extra-package .package-teaser__landing-link>a{text-decoration:none;border:0}.o-teaser--basic-package .package-teaser__list-item a,.o-teaser--special-report-package .package-teaser__list-item a,.o-teaser--extra-package .package-teaser__list-item a{color:#33302e}.o-teaser--basic-package .package-teaser__list-item a:hover,.o-teaser--special-report-package .package-teaser__list-item a:hover,.o-teaser--extra-package .package-teaser__list-item a:hover{color:#736c67}.o-teaser--basic-package .package-teaser__landing-link a,.o-teaser--special-report-package .package-teaser__landing-link a,.o-teaser--extra-package .package-teaser__landing-link a{color:#b31247}.o-teaser--basic-package .package-teaser__landing-link a:hover,.o-teaser--basic-package .package-teaser__landing-link a:visited,.o-teaser--basic-package .package-teaser__landing-link a:focus,.o-teaser--special-report-package .package-teaser__landing-link a:hover,.o-teaser--special-report-package .package-teaser__landing-link a:visited,.o-teaser--special-report-package .package-teaser__landing-link a:focus,.o-teaser--extra-package .package-teaser__landing-link a:hover,.o-teaser--extra-package .package-teaser__landing-link a:visited,.o-teaser--extra-package .package-teaser__landing-link a:focus{color:#eecbd7}.o-teaser--basic-package .package-teaser__landing-link a:after,.o-teaser--special-report-package .package-teaser__landing-link a:after,.o-teaser--extra-package .package-teaser__landing-link a:after{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:30px;height:30px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23B31247,%23B31247&format=svg");content:"";position:absolute;bottom:18px}@media screen and (-ms-high-contrast: active){.o-teaser--basic-package .package-teaser__landing-link a:after,.o-teaser--special-report-package .package-teaser__landing-link a:after,.o-teaser--extra-package .package-teaser__landing-link a:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser--basic-package .package-teaser__landing-link a:after,.o-teaser--special-report-package .package-teaser__landing-link a:after,.o-teaser--extra-package .package-teaser__landing-link a:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser--basic-package .o-teaser__image-placeholder,.o-teaser--special-report-package .o-teaser__image-placeholder,.o-teaser--extra-package .o-teaser__image-placeholder{z-index:-1}.o-teaser--basic-package .o-teaser__content,.o-teaser--special-report-package .o-teaser__content,.o-teaser--extra-package .o-teaser__content{background:#f2dfce}.o-teaser--basic-package .o-teaser__meta,.o-teaser--special-report-package .o-teaser__meta,.o-teaser--extra-package .o-teaser__meta{color:#b31247;padding:15px 0 0 20px;width:calc(100% - 40px);position:relative;top:-50px;background:inherit}.o-teaser--basic-package .o-teaser__meta:after,.o-teaser--special-report-package .o-teaser__meta:after,.o-teaser--extra-package .o-teaser__meta:after{content:"";display:block;width:60px;border-bottom:4px solid #b31247;margin-top:4px}.o-teaser--basic-package .o-teaser__heading,.o-teaser--special-report-package .o-teaser__heading,.o-teaser--extra-package .o-teaser__heading{font-family:FinancierDisplayWeb, serif;font-size:28px;line-height:32px;color:#000;background:inherit;padding:20px;margin-top:-55px;width:100%}.o-typography--loading-display .o-teaser--basic-package .o-teaser__heading,.o-typography--loading-display .o-teaser--special-report-package .o-teaser__heading,.o-typography--loading-display .o-teaser--extra-package .o-teaser__heading{font-size:25.2px;font-family:serif}.o-teaser--basic-package .o-teaser__heading a:hover,.o-teaser--basic-package .o-teaser__heading:focus,.o-teaser--special-report-package .o-teaser__heading a:hover,.o-teaser--special-report-package .o-teaser__heading:focus,.o-teaser--extra-package .o-teaser__heading a:hover,.o-teaser--extra-package .o-teaser__heading:focus{color:#736c67}.o-teaser--special-report-package .package-teaser__list-item a{color:#fff}.o-teaser--special-report-package .package-teaser__list-item a:hover{color:#eecbd7}.o-teaser--special-report-package .package-teaser__landing-link a{color:#f0d0da}.o-teaser--special-report-package .package-teaser__landing-link a:hover{color:#fff}.o-teaser--special-report-package .package-teaser__landing-link a:after{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:30px;height:30px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-teaser--special-report-package .package-teaser__landing-link a:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser--special-report-package .package-teaser__landing-link a:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser--special-report-package .o-teaser__content{background:#b31247}.o-teaser--special-report-package .o-teaser__meta{color:#fff}.o-teaser--special-report-package .o-teaser__meta:after{border-color:#fff}.o-teaser--special-report-package .o-teaser__heading{color:#fff}.o-teaser--special-report-package .o-teaser__heading a:hover,.o-teaser--special-report-package .o-teaser__heading a:visited,.o-teaser--special-report-package .o-teaser__heading:focus{color:#eecbd7}.o-teaser--extra-package .package-teaser__list-item a{color:#fff}.o-teaser--extra-package .package-teaser__list-item a:hover{color:#ffec1a}.o-teaser--extra-package .package-teaser__landing-link a{color:#ffec1a}.o-teaser--extra-package .package-teaser__landing-link a:hover{color:#fff}.o-teaser--extra-package .package-teaser__landing-link a:after{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:30px;height:30px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23FFEC1A,%23FFEC1A&format=svg")}@media screen and (-ms-high-contrast: active){.o-teaser--extra-package .package-teaser__landing-link a:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-teaser--extra-package .package-teaser__landing-link a:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-teaser--extra-package .o-teaser__content{background:#262a33}.o-teaser--extra-package .o-teaser__meta{color:#ffec1a}.o-teaser--extra-package .o-teaser__meta:after{border-color:#ffec1a}.o-teaser--extra-package .o-teaser__heading{color:#fff}.o-teaser--extra-package .o-teaser__heading a:hover,.o-teaser--extra-package .o-teaser__heading:focus{color:#ffec1a}.o-teaser--extra-package .o-teaser__timestamp{color:#fff}.o-teaser--small.o-teaser--live .o-teaser__content{padding:12px}.o-teaser--small.o-teaser--live.o-teaser--has-image{padding:12px}.o-teaser--small.o-teaser--live.o-teaser--has-image .o-teaser__content{padding:0px}.o-teaser--small.o-teaser--live{background:#c00}.o-teaser--small.o-teaser--live .o-teaser__heading a:hover,.o-teaser--small.o-teaser--live .o-teaser__heading a:focus,.o-teaser--small.o-teaser--live .o-teaser__heading a:visited,.o-teaser--small.o-teaser--live .o-teaser__standfirst a:hover,.o-teaser--small.o-teaser--live .o-teaser__standfirst a:focus,.o-teaser--small.o-teaser--live .o-teaser__standfirst a:visited,.o-teaser--small.o-teaser--live .o-teaser__tag:hover,.o-teaser--small.o-teaser--live .o-teaser__tag:focus{color:#999}.o-teaser--small.o-teaser--live .o-teaser__meta,.o-teaser--small.o-teaser--live .o-teaser__tag-suffix,.o-teaser--small.o-teaser--live .o-teaser__heading{color:#fff}.o-teaser--small.o-teaser--live .o-teaser__standfirst,.o-teaser--small.o-teaser--live .o-teaser__timestamp{color:#999}.o-teaser--small.o-teaser--live.o-teaser--hero .o-teaser__meta:after{border-bottom-color:#fff}.o-teaser--small.o-teaser--live .o-teaser__content *{color:#fff}.o-teaser--small.o-teaser--live .o-teaser__content *:hover{color:#fff}.o-teaser--small.o-teaser--live .o-teaser__meta a:focus,.o-teaser--small.o-teaser--live .o-teaser__meta a:hover,.o-teaser--small.o-teaser--live .o-teaser__meta a:visited,.o-teaser--small.o-teaser--live .o-teaser__heading a:focus,.o-teaser--small.o-teaser--live .o-teaser__heading a:hover,.o-teaser--small.o-teaser--live .o-teaser__heading a:visited,.o-teaser--small.o-teaser--live .o-teaser__standfirst a:focus,.o-teaser--small.o-teaser--live .o-teaser__standfirst a:hover,.o-teaser--small.o-teaser--live .o-teaser__standfirst a:visited{color:#fce8ec;outline-color:currentColor}.o-teaser--small.o-teaser--live .o-teaser__timestamp-prefix:before,.o-teaser--small.o-teaser--live .o-teaser__timestamp--inprogress:before,.o-teaser--small.o-teaser--live .o-teaser__timestamp--live:before{background-color:#fff}.o-teaser--live .o-teaser__content{display:flex;flex-direction:column}.o-teaser--live .o-teaser__timestamp{order:-1;padding-top:0}.o-teaser--live .o-teaser__timestamp:before{top:3px}.o-teaser--live .o-teaser__timestamp time{display:none}.onward-journey .o-teaser a{border-bottom:none}.onward-journey__link{color:#33302e;text-decoration:none}.onward-journey__link h3{font-weight:600}.onward-journey__link h3:after{content:"";display:block;width:60px;margin-top:5px;border-bottom:4px solid #000;position:absolute;z-index:1}
.o-comments__staging-message-container{margin-bottom:8px;padding:0}.o-comments__staging-message-content{padding-top:4px;padding-bottom:4px;background-color:#cc1451}.o-comments__staging-message{color:#fff;font-weight:bold;padding-left:16px}.o-comments__signed-in-text{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px}.o-typography--loading-sans .o-comments__signed-in-text{font-size:13.92px;font-family:sans-serif}.o-comments__signed-in-inner-text{font-family:MetricWeb, sans-serif;font-size:20px;line-height:24px;font-weight:bold}.o-typography--loading-sans .o-comments__signed-in-inner-text{font-size:17.4px;font-family:sans-serif}.o-comments__signed-in-container{margin-bottom:24px}.o-comments__edit-display-name{font-family:MetricWeb, sans-serif;font-weight:600;font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;line-height:14px;background-size:21px 21px;min-height:28px;min-width:60px;padding:6px 8px;display:inline-block;box-sizing:border-box;vertical-align:middle;margin:0;border-style:solid;text-align:center;text-decoration:none;cursor:pointer;transition:.3s background-color,.15s color ease-out,.15s border-color ease-out;user-select:none;background-clip:border-box;border-width:1px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-appearance:none;-webkit-appearance:none;border-radius:0;background-color:#0d7680;color:#fff;border-color:transparent;background-repeat:no-repeat;background-position:3px;padding-left:24px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:edit?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");margin-left:8px}.o-typography--loading-sans .o-comments__edit-display-name{font-size:12.18px;font-family:sans-serif}.o-comments__edit-display-name[disabled]{pointer-events:none;opacity:.4;cursor:default}.o-comments__edit-display-name:hover{background-color:#095259;color:#fff;border-color:transparent;text-decoration:none}.o-comments__edit-display-name:focus{background-color:#095259;color:#fff;border-color:transparent}.o-comments__edit-display-name[aria-selected=true],.o-comments__edit-display-name[aria-current],.o-comments__edit-display-name[aria-pressed=true],.o-comments__edit-display-name:active{background-color:#052f33;color:#fff;border-color:transparent}@media screen and (-ms-high-contrast: active){.o-comments__edit-display-name{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:edit?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-comments__edit-display-name{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:edit?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-comments__edit-display-name-descriptive{position:absolute;clip:rect(0 0 0 0);clip-path:polygon(0 0, 0 0);margin:-1px;border:0;overflow:hidden;padding:0;width:2px;height:2px;white-space:nowrap}.o-overlay.o-comments__displayname-prompt{background:#fff1e5;padding:10px;width:100%;max-width:400px}.o-overlay.o-comments__displayname-prompt .o-overlay__title{margin:5px 10px 10px;line-height:25px;font-family:MetricWeb;font-size:20px;font-weight:bold}.o-overlay.o-comments__displayname-prompt .o-comments__displayname-form{padding-right:0px;padding-left:0px}.o-overlay.o-comments__displayname-prompt .o-comments__displayname-container{margin-top:8px;display:flex}.o-overlay.o-comments__displayname-prompt .o-comments__displayname-field{margin-bottom:0}.o-overlay.o-comments__displayname-prompt .o-comments__displayname-input{width:100%;margin-right:15px;margin-top:0}.o-overlay.o-comments__displayname-prompt .o-comments__displayname-submit{font-family:MetricWeb, sans-serif;font-weight:600;font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;line-height:14px;background-size:21px 21px;min-height:28px;min-width:60px;padding:6px 8px;display:inline-block;box-sizing:border-box;vertical-align:middle;margin:0;border-style:solid;text-align:center;text-decoration:none;cursor:pointer;transition:.3s background-color,.15s color ease-out,.15s border-color ease-out;user-select:none;background-clip:border-box;border-width:1px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-appearance:none;-webkit-appearance:none;border-radius:0;background-color:#0d7680;color:#fff;border-color:transparent}.o-typography--loading-sans .o-overlay.o-comments__displayname-prompt .o-comments__displayname-submit{font-size:12.18px;font-family:sans-serif}.o-overlay.o-comments__displayname-prompt .o-comments__displayname-submit[disabled]{pointer-events:none;opacity:.4;cursor:default}.o-overlay.o-comments__displayname-prompt .o-comments__displayname-submit:hover{background-color:#095259;color:#fff;border-color:transparent;text-decoration:none}.o-overlay.o-comments__displayname-prompt .o-comments__displayname-submit:focus{background-color:#095259;color:#fff;border-color:transparent}.o-overlay.o-comments__displayname-prompt .o-comments__displayname-submit[aria-selected=true],.o-overlay.o-comments__displayname-prompt .o-comments__displayname-submit[aria-current],.o-overlay.o-comments__displayname-prompt .o-comments__displayname-submit[aria-pressed=true],.o-overlay.o-comments__displayname-prompt .o-comments__displayname-submit:active{background-color:#052f33;color:#fff;border-color:transparent}.o-overlay.o-comments__displayname-prompt .o-comments__displayname-error{position:relative;bottom:0}
html:after{content:'{ "layout": "default", "gutter": "10px" }';display:none}@media(min-width: 30.625em){html:after{content:'{ "layout": "S", "gutter": "10px" }'}}@media(min-width: 46.25em){html:after{content:'{ "layout": "M", "gutter": "20px" }'}}@media(min-width: 61.25em){html:after{content:'{ "layout": "L", "gutter": "20px" }'}}@media(min-width: 76.25em){html:after{content:'{ "layout": "XL", "gutter": "20px" }'}}.o-footer{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;margin-top:40px;line-height:20px}.o-typography--loading-sans .o-footer{font-size:13.92px;font-family:sans-serif}.o-footer a{border-bottom:0;text-decoration:none}.o-footer__container{box-sizing:border-box;margin-left:auto;margin-right:auto;min-width:240px;max-width:1220px;position:relative;max-width:1220px;padding-left:10px;padding-right:10px;padding-top:.1px}@media(min-width: 46.25em){.o-footer__container{padding-left:20px;padding-right:20px}}@media(min-width: 46.25em){.o-grid-snappy .o-footer__container,.o-footer__container--snappy{max-width:740px}}@media(min-width: 61.25em){.o-grid-snappy .o-footer__container,.o-footer__container--snappy{max-width:980px}}@media(min-width: 76.25em){.o-grid-snappy .o-footer__container,.o-footer__container--snappy{max-width:1220px}}.o-footer__row{margin-top:20px}.o-footer__legal-links{padding-left:0px}.o-footer__legal-links a{display:inline-block}.o-footer__legal-links li{font-size:14px;line-height:16px;list-style:none;display:inline-block}.o-typography--loading-sans .o-footer__legal-links li{font-size:12.18px}.o-footer__legal-links li:before{content:"\2022";padding-left:4px;padding-right:4px}.o-footer__legal-links li:first-child:before{content:"";padding:0}.o-footer__copyright{margin-top:20px;margin-bottom:20px}.o-footer__copyright a{text-decoration:underline}.o-footer__brand{padding-top:16px;padding-bottom:16px}.o-footer__brand-logo{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftlogo:brand-nikkei-tagline?source=ig-projects&format=svg");height:20px;background-repeat:no-repeat;background-position:right}@media print{.o-footer{display:none}}.o-footer__matrix,.o-footer__matrix-content{clear:both;flex-wrap:wrap;display:flex;margin-left:-10px;zoom:1}@media print{.o-footer__matrix,.o-footer__matrix-content{display:inherit}}@media(min-width: 46.25em){.o-footer__matrix,.o-footer__matrix-content{margin-left:-20px}}.o-footer__matrix:before,.o-footer__matrix:after,.o-footer__matrix-content:before,.o-footer__matrix-content:after{content:"";display:table;display:flex}.o-footer__matrix:after,.o-footer__matrix-content:after{clear:both}.o-footer__matrix-group,.o-footer__matrix-column{box-sizing:border-box;float:left;flex:1 1 0%;position:relative;padding-left:10px}@media(min-width: 46.25em){.o-footer__matrix-group,.o-footer__matrix-column{padding-left:20px}}.o-footer__matrix-group--1{display:block;flex-basis:100%;min-width:100%;max-width:100%}@media(min-width: 46.25em){.o-footer__matrix-group--1{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%}}@media(min-width: 61.25em){.o-footer__matrix-group--1{display:block;flex-basis:16.6666666667%;min-width:16.6666666667%;max-width:16.6666666667%}}.o-footer__matrix-group--1 .o-footer__matrix-column{display:block;flex-basis:100%;min-width:100%;max-width:100%}.o-footer__matrix-group--2{display:block;flex-basis:100%;min-width:100%;max-width:100%}@media(min-width: 46.25em){.o-footer__matrix-group--2{display:block;flex-basis:50%;min-width:50%;max-width:50%}}@media(min-width: 61.25em){.o-footer__matrix-group--2{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%}}.o-footer__matrix-group--2 .o-footer__matrix-column{display:block;flex-basis:50%;min-width:50%;max-width:50%}.o-footer__matrix-group--4{display:block;flex-basis:100%;min-width:100%;max-width:100%}@media(min-width: 61.25em){.o-footer__matrix-group--4{display:block;flex-basis:66.6666666667%;min-width:66.6666666667%;max-width:66.6666666667%}}.o-footer__matrix-group--4 .o-footer__matrix-column{display:block;flex-basis:50%;min-width:50%;max-width:50%}@media(min-width: 46.25em){.o-footer__matrix-group--4 .o-footer__matrix-column{display:block;flex-basis:25%;min-width:25%;max-width:25%}}.o-footer__matrix-group--6{display:block;flex-basis:100%;min-width:100%;max-width:100%}.o-footer__matrix-group--6 .o-footer__matrix-column{display:block;flex-basis:50%;min-width:50%;max-width:50%}@media(min-width: 46.25em){.o-footer__matrix-group--6 .o-footer__matrix-column{display:block;flex-basis:25%;min-width:25%;max-width:25%}}@media(min-width: 61.25em){.o-footer__matrix-group--6 .o-footer__matrix-column{display:block;flex-basis:16.6666666667%;min-width:16.6666666667%;max-width:16.6666666667%}}.o-footer__matrix-title,.o-footer__matrix-link__copy{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block}.o-footer__matrix-title{margin:0;line-height:inherit;font-size:inherit;font-weight:600}.o-footer__matrix-title[aria-expanded]{position:relative;border-top:1px solid;line-height:40px;cursor:pointer}.o-footer__matrix-title[aria-expanded]:after{content:" ";position:absolute;right:0;top:10px}.o-footer--theme-light .o-footer__matrix-title[aria-expanded]:after{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:20px;height:20px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23000000,%23000000&format=svg")}@media screen and (-ms-high-contrast: active){.o-footer--theme-light .o-footer__matrix-title[aria-expanded]:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-footer--theme-light .o-footer__matrix-title[aria-expanded]:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-footer--theme-dark .o-footer__matrix-title[aria-expanded]:after{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:20px;height:20px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-footer--theme-dark .o-footer__matrix-title[aria-expanded]:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-footer--theme-dark .o-footer__matrix-title[aria-expanded]:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-footer__matrix-title[aria-expanded=true]:after{transform:rotate(180deg)}.o-footer__matrix-title--link{overflow:visible;line-height:40px;border-top:1px solid}@media(min-width: 46.25em){.o-footer__matrix-title--link{border-top:0;line-height:initial}}.o-footer__matrix-content[aria-hidden=true]{display:none}.o-footer__matrix-column{margin-top:16px;margin-bottom:16px}.o-footer__matrix-link{padding-top:8px;padding-bottom:8px;display:block}.o-footer__matrix-link:first-child{padding-top:0}.o-footer__matrix-link--more{display:flex}.o-footer__matrix-link--more:after{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:20px;height:20px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&format=svg");content:"";align-self:center}@media screen and (-ms-high-contrast: active){.o-footer__matrix-link--more:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-footer__matrix-link--more:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-footer--theme-light{color:#33302e;background:#f2e5da}.o-footer--theme-light .o-footer__title{color:#000}.o-footer--theme-light .o-footer__matrix-link--more:after{width:20px;height:20px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%2333302E,%2333302E&format=svg")}@media screen and (-ms-high-contrast: active){.o-footer--theme-light .o-footer__matrix-link--more:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-footer--theme-light .o-footer__matrix-link--more:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-footer--theme-light .o-footer__matrix-title--link,.o-footer--theme-light .o-footer__matrix-title[aria-expanded]{border-color:#ccc1b7}.o-footer--theme-light .o-footer__matrix-title a{color:#33302e}.o-footer--theme-light a{color:#66605c}.o-footer--theme-light a:hover,.o-footer--theme-light a:focus{color:#000}.o-footer--theme-light .o-footer__copyright{color:#66605c}.o-footer--theme-light .o-footer__brand{color:#33302e;background:#ccc1b7}.o-footer--theme-dark{color:#fff;background:#262a33}.o-footer--theme-dark .o-footer__title{color:#fff}.o-footer--theme-dark .o-footer__matrix-link--more:after{width:20px;height:20px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-footer--theme-dark .o-footer__matrix-link--more:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-footer--theme-dark .o-footer__matrix-link--more:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-footer--theme-dark .o-footer__matrix-title--link,.o-footer--theme-dark .o-footer__matrix-title[aria-expanded]{border-color:#51555c}.o-footer--theme-dark .o-footer__matrix-title a{color:#fff}.o-footer--theme-dark a{color:#a8aaad}.o-footer--theme-dark a:hover,.o-footer--theme-dark a:focus{color:#fff}.o-footer--theme-dark .o-footer__copyright{color:#a8aaad}.o-footer--theme-dark .o-footer__brand{color:#fff;background:#000}.o-footer-visually-hidden{position:absolute;clip:rect(0 0 0 0);clip-path:polygon(0 0, 0 0);margin:-1px;border:0;overflow:hidden;padding:0;width:2px;height:2px;white-space:nowrap}
html:after{content:'{ "layout": "default", "gutter": "10px" }';display:none}@media(min-width: 30.625em){html:after{content:'{ "layout": "S", "gutter": "10px" }'}}@media(min-width: 46.25em){html:after{content:'{ "layout": "M", "gutter": "20px" }'}}@media(min-width: 61.25em){html:after{content:'{ "layout": "L", "gutter": "20px" }'}}@media(min-width: 76.25em){html:after{content:'{ "layout": "XL", "gutter": "20px" }'}}html:before{display:none;content:'{"layouts": {"S": "490px", "M": "740px", "L": "980px", "XL": "1220px"}}'}.o-grid-container{box-sizing:border-box;margin-left:auto;margin-right:auto;min-width:240px;max-width:1220px;position:relative;max-width:1220px;padding-left:10px;padding-right:10px}@media(min-width: 46.25em){.o-grid-container{padding-left:20px;padding-right:20px}}@media(min-width: 46.25em){.o-grid-snappy .o-grid-container,.o-grid-container--snappy{max-width:740px}}@media(min-width: 61.25em){.o-grid-snappy .o-grid-container,.o-grid-container--snappy{max-width:980px}}@media(min-width: 76.25em){.o-grid-snappy .o-grid-container,.o-grid-container--snappy{max-width:1220px}}.o-grid-container--bleed{padding-left:0;padding-right:0}.o-grid-row{clear:both;flex-wrap:wrap;display:flex;margin-left:-10px;zoom:1}@media print{.o-grid-row{display:inherit}}@media(min-width: 46.25em){.o-grid-row{margin-left:-20px}}.o-grid-row:before,.o-grid-row:after{content:"";display:table;display:flex}.o-grid-row:after{clear:both}.o-grid-row--compact{margin-left:0}.o-grid-row--compact>[data-o-grid-colspan]{padding-left:0}[data-o-grid-colspan]{box-sizing:border-box;float:left;flex:1 1 0%;position:relative;padding-left:10px}@media(min-width: 46.25em){[data-o-grid-colspan]{padding-left:20px}}[data-o-grid-colspan~="0"]{display:none}[data-o-grid-colspan~="1"]{display:block;flex-basis:8.3333333333%;min-width:8.3333333333%;max-width:8.3333333333%}[data-o-grid-colspan~="2"]{display:block;flex-basis:16.6666666667%;min-width:16.6666666667%;max-width:16.6666666667%}[data-o-grid-colspan~="3"]{display:block;flex-basis:25%;min-width:25%;max-width:25%}[data-o-grid-colspan~="4"]{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%}[data-o-grid-colspan~="5"]{display:block;flex-basis:41.6666666667%;min-width:41.6666666667%;max-width:41.6666666667%}[data-o-grid-colspan~="6"]{display:block;flex-basis:50%;min-width:50%;max-width:50%}[data-o-grid-colspan~="7"]{display:block;flex-basis:58.3333333333%;min-width:58.3333333333%;max-width:58.3333333333%}[data-o-grid-colspan~="8"]{display:block;flex-basis:66.6666666667%;min-width:66.6666666667%;max-width:66.6666666667%}[data-o-grid-colspan~="9"]{display:block;flex-basis:75%;min-width:75%;max-width:75%}[data-o-grid-colspan~="10"]{display:block;flex-basis:83.3333333333%;min-width:83.3333333333%;max-width:83.3333333333%}[data-o-grid-colspan~="11"]{display:block;flex-basis:91.6666666667%;min-width:91.6666666667%;max-width:91.6666666667%}[data-o-grid-colspan~="12"]{display:block;flex-basis:100%;min-width:100%;max-width:100%}[data-o-grid-colspan~=hide]{display:none}[data-o-grid-colspan~=center]{margin-left:auto;margin-right:auto;float:none}[data-o-grid-colspan~=full-width]{display:block;flex-basis:100%;min-width:100%;max-width:100%;width:100%}[data-o-grid-colspan~=one-half]{display:block;flex-basis:50%;min-width:50%;max-width:50%;width:50%}[data-o-grid-colspan~=one-third]{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%;width:33.3333333333%}[data-o-grid-colspan~=two-thirds]{display:block;flex-basis:66.6666666667%;min-width:66.6666666667%;max-width:66.6666666667%;width:66.6666666667%}[data-o-grid-colspan~=one-quarter]{display:block;flex-basis:25%;min-width:25%;max-width:25%;width:25%}[data-o-grid-colspan~=three-quarters]{display:block;flex-basis:75%;min-width:75%;max-width:75%;width:75%}[data-o-grid-colspan~=push0]{left:0%;right:auto}[data-o-grid-colspan~=pull0]{right:0%;left:auto}[data-o-grid-colspan~=offset0]{margin-left:0%}[data-o-grid-colspan~=push1]{left:8.3333333333%;right:auto}[data-o-grid-colspan~=pull1]{right:8.3333333333%;left:auto}[data-o-grid-colspan~=offset1]{margin-left:8.3333333333%}[data-o-grid-colspan~=push2]{left:16.6666666667%;right:auto}[data-o-grid-colspan~=pull2]{right:16.6666666667%;left:auto}[data-o-grid-colspan~=offset2]{margin-left:16.6666666667%}[data-o-grid-colspan~=push3]{left:25%;right:auto}[data-o-grid-colspan~=pull3]{right:25%;left:auto}[data-o-grid-colspan~=offset3]{margin-left:25%}[data-o-grid-colspan~=push4]{left:33.3333333333%;right:auto}[data-o-grid-colspan~=pull4]{right:33.3333333333%;left:auto}[data-o-grid-colspan~=offset4]{margin-left:33.3333333333%}[data-o-grid-colspan~=push5]{left:41.6666666667%;right:auto}[data-o-grid-colspan~=pull5]{right:41.6666666667%;left:auto}[data-o-grid-colspan~=offset5]{margin-left:41.6666666667%}[data-o-grid-colspan~=push6]{left:50%;right:auto}[data-o-grid-colspan~=pull6]{right:50%;left:auto}[data-o-grid-colspan~=offset6]{margin-left:50%}[data-o-grid-colspan~=push7]{left:58.3333333333%;right:auto}[data-o-grid-colspan~=pull7]{right:58.3333333333%;left:auto}[data-o-grid-colspan~=offset7]{margin-left:58.3333333333%}[data-o-grid-colspan~=push8]{left:66.6666666667%;right:auto}[data-o-grid-colspan~=pull8]{right:66.6666666667%;left:auto}[data-o-grid-colspan~=offset8]{margin-left:66.6666666667%}[data-o-grid-colspan~=push9]{left:75%;right:auto}[data-o-grid-colspan~=pull9]{right:75%;left:auto}[data-o-grid-colspan~=offset9]{margin-left:75%}[data-o-grid-colspan~=push10]{left:83.3333333333%;right:auto}[data-o-grid-colspan~=pull10]{right:83.3333333333%;left:auto}[data-o-grid-colspan~=offset10]{margin-left:83.3333333333%}[data-o-grid-colspan~=push11]{left:91.6666666667%;right:auto}[data-o-grid-colspan~=pull11]{right:91.6666666667%;left:auto}[data-o-grid-colspan~=offset11]{margin-left:91.6666666667%}@media(min-width: 30.625em){[data-o-grid-colspan~=Shide]{display:none}[data-o-grid-colspan~=Scenter]{margin-left:auto;margin-right:auto;float:none}[data-o-grid-colspan~=Suncenter]{margin-left:0;margin-right:0;float:left}[data-o-grid-colspan~=Sfull-width]{display:block;flex-basis:100%;min-width:100%;max-width:100%;width:100%}[data-o-grid-colspan~=Sone-half]{display:block;flex-basis:50%;min-width:50%;max-width:50%;width:50%}[data-o-grid-colspan~=Sone-third]{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%;width:33.3333333333%}[data-o-grid-colspan~=Stwo-thirds]{display:block;flex-basis:66.6666666667%;min-width:66.6666666667%;max-width:66.6666666667%;width:66.6666666667%}[data-o-grid-colspan~=Sone-quarter]{display:block;flex-basis:25%;min-width:25%;max-width:25%;width:25%}[data-o-grid-colspan~=Sthree-quarters]{display:block;flex-basis:75%;min-width:75%;max-width:75%;width:75%}[data-o-grid-colspan~=Spush0]{left:0%;right:auto}[data-o-grid-colspan~=Spull0]{right:0%;left:auto}[data-o-grid-colspan~=Soffset0]{margin-left:0%}[data-o-grid-colspan~=Spush1]{left:8.3333333333%;right:auto}[data-o-grid-colspan~=Spull1]{right:8.3333333333%;left:auto}[data-o-grid-colspan~=Soffset1]{margin-left:8.3333333333%}[data-o-grid-colspan~=Spush2]{left:16.6666666667%;right:auto}[data-o-grid-colspan~=Spull2]{right:16.6666666667%;left:auto}[data-o-grid-colspan~=Soffset2]{margin-left:16.6666666667%}[data-o-grid-colspan~=Spush3]{left:25%;right:auto}[data-o-grid-colspan~=Spull3]{right:25%;left:auto}[data-o-grid-colspan~=Soffset3]{margin-left:25%}[data-o-grid-colspan~=Spush4]{left:33.3333333333%;right:auto}[data-o-grid-colspan~=Spull4]{right:33.3333333333%;left:auto}[data-o-grid-colspan~=Soffset4]{margin-left:33.3333333333%}[data-o-grid-colspan~=Spush5]{left:41.6666666667%;right:auto}[data-o-grid-colspan~=Spull5]{right:41.6666666667%;left:auto}[data-o-grid-colspan~=Soffset5]{margin-left:41.6666666667%}[data-o-grid-colspan~=Spush6]{left:50%;right:auto}[data-o-grid-colspan~=Spull6]{right:50%;left:auto}[data-o-grid-colspan~=Soffset6]{margin-left:50%}[data-o-grid-colspan~=Spush7]{left:58.3333333333%;right:auto}[data-o-grid-colspan~=Spull7]{right:58.3333333333%;left:auto}[data-o-grid-colspan~=Soffset7]{margin-left:58.3333333333%}[data-o-grid-colspan~=Spush8]{left:66.6666666667%;right:auto}[data-o-grid-colspan~=Spull8]{right:66.6666666667%;left:auto}[data-o-grid-colspan~=Soffset8]{margin-left:66.6666666667%}[data-o-grid-colspan~=Spush9]{left:75%;right:auto}[data-o-grid-colspan~=Spull9]{right:75%;left:auto}[data-o-grid-colspan~=Soffset9]{margin-left:75%}[data-o-grid-colspan~=Spush10]{left:83.3333333333%;right:auto}[data-o-grid-colspan~=Spull10]{right:83.3333333333%;left:auto}[data-o-grid-colspan~=Soffset10]{margin-left:83.3333333333%}[data-o-grid-colspan~=Spush11]{left:91.6666666667%;right:auto}[data-o-grid-colspan~=Spull11]{right:91.6666666667%;left:auto}[data-o-grid-colspan~=Soffset11]{margin-left:91.6666666667%}[data-o-grid-colspan~=S0]{display:none}[data-o-grid-colspan~=S1]{display:block;flex-basis:8.3333333333%;min-width:8.3333333333%;max-width:8.3333333333%;width:8.3333333333%}[data-o-grid-colspan~=S2]{display:block;flex-basis:16.6666666667%;min-width:16.6666666667%;max-width:16.6666666667%;width:16.6666666667%}[data-o-grid-colspan~=S3]{display:block;flex-basis:25%;min-width:25%;max-width:25%;width:25%}[data-o-grid-colspan~=S4]{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%;width:33.3333333333%}[data-o-grid-colspan~=S5]{display:block;flex-basis:41.6666666667%;min-width:41.6666666667%;max-width:41.6666666667%;width:41.6666666667%}[data-o-grid-colspan~=S6]{display:block;flex-basis:50%;min-width:50%;max-width:50%;width:50%}[data-o-grid-colspan~=S7]{display:block;flex-basis:58.3333333333%;min-width:58.3333333333%;max-width:58.3333333333%;width:58.3333333333%}[data-o-grid-colspan~=S8]{display:block;flex-basis:66.6666666667%;min-width:66.6666666667%;max-width:66.6666666667%;width:66.6666666667%}[data-o-grid-colspan~=S9]{display:block;flex-basis:75%;min-width:75%;max-width:75%;width:75%}[data-o-grid-colspan~=S10]{display:block;flex-basis:83.3333333333%;min-width:83.3333333333%;max-width:83.3333333333%;width:83.3333333333%}[data-o-grid-colspan~=S11]{display:block;flex-basis:91.6666666667%;min-width:91.6666666667%;max-width:91.6666666667%;width:91.6666666667%}[data-o-grid-colspan~=S12]{display:block;flex-basis:100%;min-width:100%;max-width:100%;width:100%}}@media(min-width: 46.25em){[data-o-grid-colspan~=Mhide]{display:none}[data-o-grid-colspan~=Mcenter]{margin-left:auto;margin-right:auto;float:none}[data-o-grid-colspan~=Muncenter]{margin-left:0;margin-right:0;float:left}[data-o-grid-colspan~=Mfull-width]{display:block;flex-basis:100%;min-width:100%;max-width:100%;width:100%}[data-o-grid-colspan~=Mone-half]{display:block;flex-basis:50%;min-width:50%;max-width:50%;width:50%}[data-o-grid-colspan~=Mone-third]{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%;width:33.3333333333%}[data-o-grid-colspan~=Mtwo-thirds]{display:block;flex-basis:66.6666666667%;min-width:66.6666666667%;max-width:66.6666666667%;width:66.6666666667%}[data-o-grid-colspan~=Mone-quarter]{display:block;flex-basis:25%;min-width:25%;max-width:25%;width:25%}[data-o-grid-colspan~=Mthree-quarters]{display:block;flex-basis:75%;min-width:75%;max-width:75%;width:75%}[data-o-grid-colspan~=Mpush0]{left:0%;right:auto}[data-o-grid-colspan~=Mpull0]{right:0%;left:auto}[data-o-grid-colspan~=Moffset0]{margin-left:0%}[data-o-grid-colspan~=Mpush1]{left:8.3333333333%;right:auto}[data-o-grid-colspan~=Mpull1]{right:8.3333333333%;left:auto}[data-o-grid-colspan~=Moffset1]{margin-left:8.3333333333%}[data-o-grid-colspan~=Mpush2]{left:16.6666666667%;right:auto}[data-o-grid-colspan~=Mpull2]{right:16.6666666667%;left:auto}[data-o-grid-colspan~=Moffset2]{margin-left:16.6666666667%}[data-o-grid-colspan~=Mpush3]{left:25%;right:auto}[data-o-grid-colspan~=Mpull3]{right:25%;left:auto}[data-o-grid-colspan~=Moffset3]{margin-left:25%}[data-o-grid-colspan~=Mpush4]{left:33.3333333333%;right:auto}[data-o-grid-colspan~=Mpull4]{right:33.3333333333%;left:auto}[data-o-grid-colspan~=Moffset4]{margin-left:33.3333333333%}[data-o-grid-colspan~=Mpush5]{left:41.6666666667%;right:auto}[data-o-grid-colspan~=Mpull5]{right:41.6666666667%;left:auto}[data-o-grid-colspan~=Moffset5]{margin-left:41.6666666667%}[data-o-grid-colspan~=Mpush6]{left:50%;right:auto}[data-o-grid-colspan~=Mpull6]{right:50%;left:auto}[data-o-grid-colspan~=Moffset6]{margin-left:50%}[data-o-grid-colspan~=Mpush7]{left:58.3333333333%;right:auto}[data-o-grid-colspan~=Mpull7]{right:58.3333333333%;left:auto}[data-o-grid-colspan~=Moffset7]{margin-left:58.3333333333%}[data-o-grid-colspan~=Mpush8]{left:66.6666666667%;right:auto}[data-o-grid-colspan~=Mpull8]{right:66.6666666667%;left:auto}[data-o-grid-colspan~=Moffset8]{margin-left:66.6666666667%}[data-o-grid-colspan~=Mpush9]{left:75%;right:auto}[data-o-grid-colspan~=Mpull9]{right:75%;left:auto}[data-o-grid-colspan~=Moffset9]{margin-left:75%}[data-o-grid-colspan~=Mpush10]{left:83.3333333333%;right:auto}[data-o-grid-colspan~=Mpull10]{right:83.3333333333%;left:auto}[data-o-grid-colspan~=Moffset10]{margin-left:83.3333333333%}[data-o-grid-colspan~=Mpush11]{left:91.6666666667%;right:auto}[data-o-grid-colspan~=Mpull11]{right:91.6666666667%;left:auto}[data-o-grid-colspan~=Moffset11]{margin-left:91.6666666667%}[data-o-grid-colspan~=M0]{display:none}[data-o-grid-colspan~=M1]{display:block;flex-basis:8.3333333333%;min-width:8.3333333333%;max-width:8.3333333333%;width:8.3333333333%}[data-o-grid-colspan~=M2]{display:block;flex-basis:16.6666666667%;min-width:16.6666666667%;max-width:16.6666666667%;width:16.6666666667%}[data-o-grid-colspan~=M3]{display:block;flex-basis:25%;min-width:25%;max-width:25%;width:25%}[data-o-grid-colspan~=M4]{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%;width:33.3333333333%}[data-o-grid-colspan~=M5]{display:block;flex-basis:41.6666666667%;min-width:41.6666666667%;max-width:41.6666666667%;width:41.6666666667%}[data-o-grid-colspan~=M6]{display:block;flex-basis:50%;min-width:50%;max-width:50%;width:50%}[data-o-grid-colspan~=M7]{display:block;flex-basis:58.3333333333%;min-width:58.3333333333%;max-width:58.3333333333%;width:58.3333333333%}[data-o-grid-colspan~=M8]{display:block;flex-basis:66.6666666667%;min-width:66.6666666667%;max-width:66.6666666667%;width:66.6666666667%}[data-o-grid-colspan~=M9]{display:block;flex-basis:75%;min-width:75%;max-width:75%;width:75%}[data-o-grid-colspan~=M10]{display:block;flex-basis:83.3333333333%;min-width:83.3333333333%;max-width:83.3333333333%;width:83.3333333333%}[data-o-grid-colspan~=M11]{display:block;flex-basis:91.6666666667%;min-width:91.6666666667%;max-width:91.6666666667%;width:91.6666666667%}[data-o-grid-colspan~=M12]{display:block;flex-basis:100%;min-width:100%;max-width:100%;width:100%}}@media(min-width: 61.25em){[data-o-grid-colspan~=Lhide]{display:none}[data-o-grid-colspan~=Lcenter]{margin-left:auto;margin-right:auto;float:none}[data-o-grid-colspan~=Luncenter]{margin-left:0;margin-right:0;float:left}[data-o-grid-colspan~=Lfull-width]{display:block;flex-basis:100%;min-width:100%;max-width:100%;width:100%}[data-o-grid-colspan~=Lone-half]{display:block;flex-basis:50%;min-width:50%;max-width:50%;width:50%}[data-o-grid-colspan~=Lone-third]{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%;width:33.3333333333%}[data-o-grid-colspan~=Ltwo-thirds]{display:block;flex-basis:66.6666666667%;min-width:66.6666666667%;max-width:66.6666666667%;width:66.6666666667%}[data-o-grid-colspan~=Lone-quarter]{display:block;flex-basis:25%;min-width:25%;max-width:25%;width:25%}[data-o-grid-colspan~=Lthree-quarters]{display:block;flex-basis:75%;min-width:75%;max-width:75%;width:75%}[data-o-grid-colspan~=Lpush0]{left:0%;right:auto}[data-o-grid-colspan~=Lpull0]{right:0%;left:auto}[data-o-grid-colspan~=Loffset0]{margin-left:0%}[data-o-grid-colspan~=Lpush1]{left:8.3333333333%;right:auto}[data-o-grid-colspan~=Lpull1]{right:8.3333333333%;left:auto}[data-o-grid-colspan~=Loffset1]{margin-left:8.3333333333%}[data-o-grid-colspan~=Lpush2]{left:16.6666666667%;right:auto}[data-o-grid-colspan~=Lpull2]{right:16.6666666667%;left:auto}[data-o-grid-colspan~=Loffset2]{margin-left:16.6666666667%}[data-o-grid-colspan~=Lpush3]{left:25%;right:auto}[data-o-grid-colspan~=Lpull3]{right:25%;left:auto}[data-o-grid-colspan~=Loffset3]{margin-left:25%}[data-o-grid-colspan~=Lpush4]{left:33.3333333333%;right:auto}[data-o-grid-colspan~=Lpull4]{right:33.3333333333%;left:auto}[data-o-grid-colspan~=Loffset4]{margin-left:33.3333333333%}[data-o-grid-colspan~=Lpush5]{left:41.6666666667%;right:auto}[data-o-grid-colspan~=Lpull5]{right:41.6666666667%;left:auto}[data-o-grid-colspan~=Loffset5]{margin-left:41.6666666667%}[data-o-grid-colspan~=Lpush6]{left:50%;right:auto}[data-o-grid-colspan~=Lpull6]{right:50%;left:auto}[data-o-grid-colspan~=Loffset6]{margin-left:50%}[data-o-grid-colspan~=Lpush7]{left:58.3333333333%;right:auto}[data-o-grid-colspan~=Lpull7]{right:58.3333333333%;left:auto}[data-o-grid-colspan~=Loffset7]{margin-left:58.3333333333%}[data-o-grid-colspan~=Lpush8]{left:66.6666666667%;right:auto}[data-o-grid-colspan~=Lpull8]{right:66.6666666667%;left:auto}[data-o-grid-colspan~=Loffset8]{margin-left:66.6666666667%}[data-o-grid-colspan~=Lpush9]{left:75%;right:auto}[data-o-grid-colspan~=Lpull9]{right:75%;left:auto}[data-o-grid-colspan~=Loffset9]{margin-left:75%}[data-o-grid-colspan~=Lpush10]{left:83.3333333333%;right:auto}[data-o-grid-colspan~=Lpull10]{right:83.3333333333%;left:auto}[data-o-grid-colspan~=Loffset10]{margin-left:83.3333333333%}[data-o-grid-colspan~=Lpush11]{left:91.6666666667%;right:auto}[data-o-grid-colspan~=Lpull11]{right:91.6666666667%;left:auto}[data-o-grid-colspan~=Loffset11]{margin-left:91.6666666667%}[data-o-grid-colspan~=L0]{display:none}[data-o-grid-colspan~=L1]{display:block;flex-basis:8.3333333333%;min-width:8.3333333333%;max-width:8.3333333333%;width:8.3333333333%}[data-o-grid-colspan~=L2]{display:block;flex-basis:16.6666666667%;min-width:16.6666666667%;max-width:16.6666666667%;width:16.6666666667%}[data-o-grid-colspan~=L3]{display:block;flex-basis:25%;min-width:25%;max-width:25%;width:25%}[data-o-grid-colspan~=L4]{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%;width:33.3333333333%}[data-o-grid-colspan~=L5]{display:block;flex-basis:41.6666666667%;min-width:41.6666666667%;max-width:41.6666666667%;width:41.6666666667%}[data-o-grid-colspan~=L6]{display:block;flex-basis:50%;min-width:50%;max-width:50%;width:50%}[data-o-grid-colspan~=L7]{display:block;flex-basis:58.3333333333%;min-width:58.3333333333%;max-width:58.3333333333%;width:58.3333333333%}[data-o-grid-colspan~=L8]{display:block;flex-basis:66.6666666667%;min-width:66.6666666667%;max-width:66.6666666667%;width:66.6666666667%}[data-o-grid-colspan~=L9]{display:block;flex-basis:75%;min-width:75%;max-width:75%;width:75%}[data-o-grid-colspan~=L10]{display:block;flex-basis:83.3333333333%;min-width:83.3333333333%;max-width:83.3333333333%;width:83.3333333333%}[data-o-grid-colspan~=L11]{display:block;flex-basis:91.6666666667%;min-width:91.6666666667%;max-width:91.6666666667%;width:91.6666666667%}[data-o-grid-colspan~=L12]{display:block;flex-basis:100%;min-width:100%;max-width:100%;width:100%}}@media(min-width: 76.25em){[data-o-grid-colspan~=XLhide]{display:none}[data-o-grid-colspan~=XLcenter]{margin-left:auto;margin-right:auto;float:none}[data-o-grid-colspan~=XLuncenter]{margin-left:0;margin-right:0;float:left}[data-o-grid-colspan~=XLfull-width]{display:block;flex-basis:100%;min-width:100%;max-width:100%;width:100%}[data-o-grid-colspan~=XLone-half]{display:block;flex-basis:50%;min-width:50%;max-width:50%;width:50%}[data-o-grid-colspan~=XLone-third]{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%;width:33.3333333333%}[data-o-grid-colspan~=XLtwo-thirds]{display:block;flex-basis:66.6666666667%;min-width:66.6666666667%;max-width:66.6666666667%;width:66.6666666667%}[data-o-grid-colspan~=XLone-quarter]{display:block;flex-basis:25%;min-width:25%;max-width:25%;width:25%}[data-o-grid-colspan~=XLthree-quarters]{display:block;flex-basis:75%;min-width:75%;max-width:75%;width:75%}[data-o-grid-colspan~=XLpush0]{left:0%;right:auto}[data-o-grid-colspan~=XLpull0]{right:0%;left:auto}[data-o-grid-colspan~=XLoffset0]{margin-left:0%}[data-o-grid-colspan~=XLpush1]{left:8.3333333333%;right:auto}[data-o-grid-colspan~=XLpull1]{right:8.3333333333%;left:auto}[data-o-grid-colspan~=XLoffset1]{margin-left:8.3333333333%}[data-o-grid-colspan~=XLpush2]{left:16.6666666667%;right:auto}[data-o-grid-colspan~=XLpull2]{right:16.6666666667%;left:auto}[data-o-grid-colspan~=XLoffset2]{margin-left:16.6666666667%}[data-o-grid-colspan~=XLpush3]{left:25%;right:auto}[data-o-grid-colspan~=XLpull3]{right:25%;left:auto}[data-o-grid-colspan~=XLoffset3]{margin-left:25%}[data-o-grid-colspan~=XLpush4]{left:33.3333333333%;right:auto}[data-o-grid-colspan~=XLpull4]{right:33.3333333333%;left:auto}[data-o-grid-colspan~=XLoffset4]{margin-left:33.3333333333%}[data-o-grid-colspan~=XLpush5]{left:41.6666666667%;right:auto}[data-o-grid-colspan~=XLpull5]{right:41.6666666667%;left:auto}[data-o-grid-colspan~=XLoffset5]{margin-left:41.6666666667%}[data-o-grid-colspan~=XLpush6]{left:50%;right:auto}[data-o-grid-colspan~=XLpull6]{right:50%;left:auto}[data-o-grid-colspan~=XLoffset6]{margin-left:50%}[data-o-grid-colspan~=XLpush7]{left:58.3333333333%;right:auto}[data-o-grid-colspan~=XLpull7]{right:58.3333333333%;left:auto}[data-o-grid-colspan~=XLoffset7]{margin-left:58.3333333333%}[data-o-grid-colspan~=XLpush8]{left:66.6666666667%;right:auto}[data-o-grid-colspan~=XLpull8]{right:66.6666666667%;left:auto}[data-o-grid-colspan~=XLoffset8]{margin-left:66.6666666667%}[data-o-grid-colspan~=XLpush9]{left:75%;right:auto}[data-o-grid-colspan~=XLpull9]{right:75%;left:auto}[data-o-grid-colspan~=XLoffset9]{margin-left:75%}[data-o-grid-colspan~=XLpush10]{left:83.3333333333%;right:auto}[data-o-grid-colspan~=XLpull10]{right:83.3333333333%;left:auto}[data-o-grid-colspan~=XLoffset10]{margin-left:83.3333333333%}[data-o-grid-colspan~=XLpush11]{left:91.6666666667%;right:auto}[data-o-grid-colspan~=XLpull11]{right:91.6666666667%;left:auto}[data-o-grid-colspan~=XLoffset11]{margin-left:91.6666666667%}[data-o-grid-colspan~=XL0]{display:none}[data-o-grid-colspan~=XL1]{display:block;flex-basis:8.3333333333%;min-width:8.3333333333%;max-width:8.3333333333%;width:8.3333333333%}[data-o-grid-colspan~=XL2]{display:block;flex-basis:16.6666666667%;min-width:16.6666666667%;max-width:16.6666666667%;width:16.6666666667%}[data-o-grid-colspan~=XL3]{display:block;flex-basis:25%;min-width:25%;max-width:25%;width:25%}[data-o-grid-colspan~=XL4]{display:block;flex-basis:33.3333333333%;min-width:33.3333333333%;max-width:33.3333333333%;width:33.3333333333%}[data-o-grid-colspan~=XL5]{display:block;flex-basis:41.6666666667%;min-width:41.6666666667%;max-width:41.6666666667%;width:41.6666666667%}[data-o-grid-colspan~=XL6]{display:block;flex-basis:50%;min-width:50%;max-width:50%;width:50%}[data-o-grid-colspan~=XL7]{display:block;flex-basis:58.3333333333%;min-width:58.3333333333%;max-width:58.3333333333%;width:58.3333333333%}[data-o-grid-colspan~=XL8]{display:block;flex-basis:66.6666666667%;min-width:66.6666666667%;max-width:66.6666666667%;width:66.6666666667%}[data-o-grid-colspan~=XL9]{display:block;flex-basis:75%;min-width:75%;max-width:75%;width:75%}[data-o-grid-colspan~=XL10]{display:block;flex-basis:83.3333333333%;min-width:83.3333333333%;max-width:83.3333333333%;width:83.3333333333%}[data-o-grid-colspan~=XL11]{display:block;flex-basis:91.6666666667%;min-width:91.6666666667%;max-width:91.6666666667%;width:91.6666666667%}[data-o-grid-colspan~=XL12]{display:block;flex-basis:100%;min-width:100%;max-width:100%;width:100%}}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Thin.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Thin.woff") format("woff");font-family:"MetricWeb";font-weight:100;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Light.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Light.woff") format("woff");font-family:"MetricWeb";font-weight:300;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-LightItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-LightItalic.woff") format("woff");font-family:"MetricWeb";font-weight:300;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Regular.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Regular.woff") format("woff");font-family:"MetricWeb";font-weight:400;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-RegularItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-RegularItalic.woff") format("woff");font-family:"MetricWeb";font-weight:400;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Medium.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Medium.woff") format("woff");font-family:"MetricWeb";font-weight:500;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Semibold.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Semibold.woff") format("woff");font-family:"MetricWeb";font-weight:600;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Bold.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Bold.woff") format("woff");font-family:"MetricWeb";font-weight:700;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-BoldItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-BoldItalic.woff") format("woff");font-family:"MetricWeb";font-weight:700;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Black.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Black.woff") format("woff");font-family:"MetricWeb";font-weight:900;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Light.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Light.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:300;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-LightItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-LightItalic.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:300;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Regular.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Regular.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:400;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-RegularItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-RegularItalic.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:400;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-MediumItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-MediumItalic.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:500;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Medium.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Medium.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:500;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Semibold.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Semibold.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:600;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-SemiboldItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-SemiboldItalic.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:600;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Bold.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Bold.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:700;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Black.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Black.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:900;font-style:normal;font-display:swap}.o-typography-heading-level-1{font-family:MetricWeb, sans-serif;font-size:32px;line-height:32px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-1{font-size:26.56px;font-family:sans-serif}.o-typography-heading-level-2{font-family:MetricWeb, sans-serif;font-size:28px;line-height:32px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-2{font-size:23.24px;font-family:sans-serif}.o-typography-heading-level-3{font-family:MetricWeb, sans-serif;font-size:24px;line-height:28px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-3{font-size:19.92px;font-family:sans-serif}.o-typography-heading-level-4{font-family:MetricWeb, sans-serif;font-size:20px;line-height:24px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-4{font-size:16.6px;font-family:sans-serif}.o-typography-heading-level-5{font-family:MetricWeb, sans-serif;font-size:18px;line-height:20px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-5{font-size:14.94px;font-family:sans-serif}.o-typography-heading-level-6{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-6{font-size:13.28px;font-family:sans-serif}.o-typography-bold{font-weight:600}.o-typography-italic{font-style:italic}.o-typography-sup{font-family:MetricWeb, sans-serif;font-size:.666em;position:static;vertical-align:super;line-height:0;display:inline-block;margin-top:-1em}.o-typography-sub{font-family:MetricWeb, sans-serif;font-size:.666em;position:static;vertical-align:sub;line-height:0;display:inline-block;margin-bottom:-1em}.o-typography-body{font-family:MetricWeb, sans-serif;font-size:18px;line-height:20px;margin:0 0 24px;color:#33302e}.o-typography--loading-sans .o-typography-body{font-size:15.66px;font-family:sans-serif}.o-typography-link{text-decoration:none;cursor:pointer;border-bottom:.25ex solid;color:#0d7680;border-bottom-color:#cfd8d1;text-decoration-color:#cfd8d1}@supports(text-decoration-thickness: 0.25ex){.o-typography-link{border-bottom:0;text-decoration-thickness:.25ex;text-decoration-line:underline}}.o-typography-link:hover{color:#08474d;border-bottom-color:#9ec0bd;text-decoration-color:#9ec0bd}.o-typography-link:focus{border-bottom-color:transparent;text-decoration-color:transparent;color:#08474d}.o-typography-link--external{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&tint=%230D7680,%230D7680&format=svg");background-repeat:no-repeat;padding-right:calc(1em + 0.5ch - 0.25em - 0.25em);background-position-x:calc(100% + .5ch);background-origin:border-box;background-size:calc(1em + 0.5ch) calc(1em + 0.5ch)}@media screen and (-ms-high-contrast: active){.o-typography-link--external{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-typography-link--external{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&tint=%23000000,%23000000&format=svg")}}@supports(background-size: contain){.o-typography-link--external{background-position-y:calc(100% + 0.25ex - 1px)}}@supports(text-decoration-thickness: 0.25ex){.o-typography-link--external{background-position-y:calc(100% + 0.25em - 0.25ex - 1px)}}@supports(background-size: contain){.o-typography-link--external{background-size:contain}}.o-typography-link--external[target=_blank]:after{position:absolute;clip:rect(0 0 0 0);clip-path:polygon(0 0, 0 0);margin:-1px;border:0;overflow:hidden;padding:0;width:2px;height:2px;white-space:nowrap;content:"(opens a new window)"}.o-typography-list{margin:0 0 24px;padding:0;list-style:none}.o-typography-list>li{position:relative;margin:0;padding-left:calc(2ch + 4px)}.o-typography-list>li:before{font-family:MetricWeb, sans-serif;display:inline-block;position:absolute;left:0;transform-origin:center left}.o-typography-list--ordered{counter-reset:item}.o-typography-list--ordered>li:before{font-weight:600;content:counter(item);counter-increment:item;font-feature-settings:"tnum";transform:scale(0.8888888889);margin-left:-0.1422222222ch}.o-typography-list--unordered>li:before{content:"\2022";color:inherit;transform:scale(1.5555555556);margin-top:-0.2488888889ch}.o-typography-caption{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;margin-top:8px;margin-bottom:0;color:#33302e}.o-typography--loading-sans .o-typography-caption{font-size:12.18px;font-family:sans-serif}.o-typography-footer{font-family:MetricWeb, sans-serif;font-size:18px;line-height:24px;color:#33302e}.o-typography--loading-sans .o-typography-footer{font-size:15.66px;font-family:sans-serif}.o-typography-wrapper>p,.o-typography-wrapper{font-family:MetricWeb, sans-serif;font-size:18px;line-height:20px;margin:0 0 24px;color:#33302e}.o-typography--loading-sans .o-typography-wrapper>p,.o-typography--loading-sans .o-typography-wrapper{font-size:15.66px;font-family:sans-serif}.o-typography-wrapper>p>h1,.o-typography-wrapper>h1{font-family:MetricWeb, sans-serif;font-size:32px;line-height:32px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h1,.o-typography--loading-sans-bold .o-typography-wrapper>h1{font-size:26.56px;font-family:sans-serif}.o-typography-wrapper>p>h2,.o-typography-wrapper>h2{font-family:MetricWeb, sans-serif;font-size:28px;line-height:32px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h2,.o-typography--loading-sans-bold .o-typography-wrapper>h2{font-size:23.24px;font-family:sans-serif}.o-typography-wrapper>p>h3,.o-typography-wrapper>h3{font-family:MetricWeb, sans-serif;font-size:24px;line-height:28px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h3,.o-typography--loading-sans-bold .o-typography-wrapper>h3{font-size:19.92px;font-family:sans-serif}.o-typography-wrapper>p>h4,.o-typography-wrapper>h4{font-family:MetricWeb, sans-serif;font-size:20px;line-height:24px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h4,.o-typography--loading-sans-bold .o-typography-wrapper>h4{font-size:16.6px;font-family:sans-serif}.o-typography-wrapper>p>h5,.o-typography-wrapper>h5{font-family:MetricWeb, sans-serif;font-size:18px;line-height:20px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h5,.o-typography--loading-sans-bold .o-typography-wrapper>h5{font-size:14.94px;font-family:sans-serif}.o-typography-wrapper>p>h6,.o-typography-wrapper>h6{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h6,.o-typography--loading-sans-bold .o-typography-wrapper>h6{font-size:13.28px;font-family:sans-serif}.o-typography-wrapper>p>a,.o-typography-wrapper>a{text-decoration:none;cursor:pointer;border-bottom:.25ex solid;color:#0d7680;border-bottom-color:#cfd8d1;text-decoration-color:#cfd8d1}@supports(text-decoration-thickness: 0.25ex){.o-typography-wrapper>p>a,.o-typography-wrapper>a{border-bottom:0;text-decoration-thickness:.25ex;text-decoration-line:underline}}.o-typography-wrapper>p>a:hover,.o-typography-wrapper>a:hover{color:#08474d;border-bottom-color:#9ec0bd;text-decoration-color:#9ec0bd}.o-typography-wrapper>p>a:focus,.o-typography-wrapper>a:focus{border-bottom-color:transparent;text-decoration-color:transparent;color:#08474d}.o-typography-wrapper>p>p,.o-typography-wrapper>p{font-family:MetricWeb, sans-serif;font-size:18px;line-height:20px;margin:0 0 24px;color:#33302e}.o-typography--loading-sans .o-typography-wrapper>p>p,.o-typography--loading-sans .o-typography-wrapper>p{font-size:15.66px;font-family:sans-serif}.o-typography-wrapper>p>ol,.o-typography-wrapper>p>ul,.o-typography-wrapper>ol,.o-typography-wrapper>ul{margin:0 0 24px;padding:0;list-style:none}.o-typography-wrapper>p>ol>li,.o-typography-wrapper>p>ul>li,.o-typography-wrapper>ol>li,.o-typography-wrapper>ul>li{position:relative;margin:0;padding-left:calc(2ch + 4px)}.o-typography-wrapper>p>ol>li:before,.o-typography-wrapper>p>ul>li:before,.o-typography-wrapper>ol>li:before,.o-typography-wrapper>ul>li:before{font-family:MetricWeb, sans-serif;display:inline-block;position:absolute;left:0;transform-origin:center left}.o-typography-wrapper>p>ol,.o-typography-wrapper>ol{counter-reset:item}.o-typography-wrapper>p>ol>li:before,.o-typography-wrapper>ol>li:before{font-weight:600;content:counter(item);counter-increment:item;font-feature-settings:"tnum";transform:scale(0.8888888889);margin-left:-0.1422222222ch}.o-typography-wrapper>p>ul>li:before,.o-typography-wrapper>ul>li:before{content:"\2022";color:inherit;transform:scale(1.5555555556);margin-top:-0.2488888889ch}.o-typography-wrapper>p>footer,.o-typography-wrapper>footer{font-family:MetricWeb, sans-serif;font-size:18px;line-height:24px;color:#33302e}.o-typography--loading-sans .o-typography-wrapper>p>footer,.o-typography--loading-sans .o-typography-wrapper>footer{font-size:15.66px;font-family:sans-serif}.o-typography-wrapper>p>strong,.o-typography-wrapper>strong{font-weight:600}.o-typography-wrapper>p>em,.o-typography-wrapper>em{font-style:italic}.o-typography-wrapper>p>sup,.o-typography-wrapper>sup{font-family:MetricWeb, sans-serif;font-size:.666em;position:static;vertical-align:super;line-height:0;display:inline-block;margin-top:-1em}.o-typography-wrapper>p>sub,.o-typography-wrapper>sub{font-family:MetricWeb, sans-serif;font-size:.666em;position:static;vertical-align:sub;line-height:0;display:inline-block;margin-bottom:-1em}.o-typography-wrapper>p>figcaption,.o-typography-wrapper>figcaption{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;margin-top:8px;margin-bottom:0;color:#33302e}.o-typography--loading-sans .o-typography-wrapper>p>figcaption,.o-typography--loading-sans .o-typography-wrapper>figcaption{font-size:12.18px;font-family:sans-serif}html:before{display:none;content:'{"layouts": {"S": "490px", "M": "740px", "L": "980px", "XL": "1220px"}}'}
.g-epilogue-copyright{margin-top:48px;margin-bottom:16px;font-size:14px;line-height:16px}.g-epilogue-copyright a{border-bottom:.25ex solid #cfd8d1;color:#0d7680;text-decoration:none;text-decoration-color:#cfd8d1;-webkit-text-decoration-color:#cfd8d1}
.o-share{display:inline-block}.o-share .o-share__icon{color:#000;border-color:#807973}.o-share .o-share__icon--twitter:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:twitter?source=ig-projects&format=svg&tint=000000")}.o-share .o-share__icon--twitter:hover,.o-share .o-share__icon--twitter:focus{border-color:#1da1f2;background-color:#1da1f2;color:#fff}.o-share .o-share__icon--twitter:hover:before,.o-share .o-share__icon--twitter:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:twitter?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share .o-share__icon--twitter{background-color:#000;color:#fff}.o-share .o-share__icon--twitter:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:twitter?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share .o-share__icon--twitter{background-color:#fff;color:#000}.o-share .o-share__icon--twitter:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:twitter?source=ig-projects&format=svg&tint=%23000000")}}.o-share .o-share__icon--facebook:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:facebook?source=ig-projects&format=svg&tint=000000")}.o-share .o-share__icon--facebook:hover,.o-share .o-share__icon--facebook:focus{border-color:#3b579d;background-color:#3b579d;color:#fff}.o-share .o-share__icon--facebook:hover:before,.o-share .o-share__icon--facebook:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:facebook?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share .o-share__icon--facebook{background-color:#000;color:#fff}.o-share .o-share__icon--facebook:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:facebook?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share .o-share__icon--facebook{background-color:#fff;color:#000}.o-share .o-share__icon--facebook:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:facebook?source=ig-projects&format=svg&tint=%23000000")}}.o-share .o-share__icon--linkedin:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:linkedin?source=ig-projects&format=svg&tint=000000")}.o-share .o-share__icon--linkedin:hover,.o-share .o-share__icon--linkedin:focus{border-color:#0077b5;background-color:#0077b5;color:#fff}.o-share .o-share__icon--linkedin:hover:before,.o-share .o-share__icon--linkedin:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:linkedin?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share .o-share__icon--linkedin{background-color:#000;color:#fff}.o-share .o-share__icon--linkedin:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:linkedin?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share .o-share__icon--linkedin{background-color:#fff;color:#000}.o-share .o-share__icon--linkedin:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:linkedin?source=ig-projects&format=svg&tint=%23000000")}}.o-share .o-share__icon--link:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:link?source=ig-projects&format=svg&tint=000000")}.o-share .o-share__icon--link:hover,.o-share .o-share__icon--link:focus{border-color:#0a5e66;background-color:#0a5e66;color:#fff}.o-share .o-share__icon--link:hover:before,.o-share .o-share__icon--link:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:link?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share .o-share__icon--link{background-color:#000;color:#fff}.o-share .o-share__icon--link:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:link?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share .o-share__icon--link{background-color:#fff;color:#000}.o-share .o-share__icon--link:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:link?source=ig-projects&format=svg&tint=%23000000")}}.o-share .o-share__icon--share:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:share?source=ig-projects&format=svg&tint=000000")}.o-share .o-share__icon--share:hover,.o-share .o-share__icon--share:focus{border-color:#0a5e66;background-color:#0a5e66;color:#fff}.o-share .o-share__icon--share:hover:before,.o-share .o-share__icon--share:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:share?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share .o-share__icon--share{background-color:#000;color:#fff}.o-share .o-share__icon--share:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:share?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share .o-share__icon--share{background-color:#fff;color:#000}.o-share .o-share__icon--share:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:share?source=ig-projects&format=svg&tint=%23000000")}}.o-share .o-share__icon--mail:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mail?source=ig-projects&format=svg&tint=000000")}.o-share .o-share__icon--mail:hover,.o-share .o-share__icon--mail:focus{border-color:#0a5e66;background-color:#0a5e66;color:#fff}.o-share .o-share__icon--mail:hover:before,.o-share .o-share__icon--mail:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mail?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share .o-share__icon--mail{background-color:#000;color:#fff}.o-share .o-share__icon--mail:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mail?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share .o-share__icon--mail{background-color:#fff;color:#000}.o-share .o-share__icon--mail:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mail?source=ig-projects&format=svg&tint=%23000000")}}.o-share .o-share__icon--pinterest:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:pinterest?source=ig-projects&format=svg&tint=000000")}.o-share .o-share__icon--pinterest:hover,.o-share .o-share__icon--pinterest:focus{border-color:#bd081c;background-color:#bd081c;color:#fff}.o-share .o-share__icon--pinterest:hover:before,.o-share .o-share__icon--pinterest:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:pinterest?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share .o-share__icon--pinterest{background-color:#000;color:#fff}.o-share .o-share__icon--pinterest:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:pinterest?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share .o-share__icon--pinterest{background-color:#fff;color:#000}.o-share .o-share__icon--pinterest:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:pinterest?source=ig-projects&format=svg&tint=%23000000")}}.o-share .o-share__icon--whatsapp:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:whatsapp?source=ig-projects&format=svg&tint=000000")}.o-share .o-share__icon--whatsapp:hover,.o-share .o-share__icon--whatsapp:focus{border-color:#25d366;background-color:#25d366;color:#fff}.o-share .o-share__icon--whatsapp:hover:before,.o-share .o-share__icon--whatsapp:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:whatsapp?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share .o-share__icon--whatsapp{background-color:#000;color:#fff}.o-share .o-share__icon--whatsapp:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:whatsapp?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share .o-share__icon--whatsapp{background-color:#fff;color:#000}.o-share .o-share__icon--whatsapp:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:whatsapp?source=ig-projects&format=svg&tint=%23000000")}}.o-share .o-share__icon--corporate:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:corporate?source=ig-projects&format=svg&tint=000000")}.o-share .o-share__icon--corporate:hover,.o-share .o-share__icon--corporate:focus{border-color:#0a5e66;background-color:#0a5e66;color:#fff}.o-share .o-share__icon--corporate:hover:before,.o-share .o-share__icon--corporate:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:corporate?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share .o-share__icon--corporate{background-color:#000;color:#fff}.o-share .o-share__icon--corporate:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:corporate?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share .o-share__icon--corporate{background-color:#fff;color:#000}.o-share .o-share__icon--corporate:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:corporate?source=ig-projects&format=svg&tint=%23000000")}}.o-share .o-share__text{margin-right:10px}.o-share .o-share__icon:before{width:38px;height:38px;background-size:40px 40px}.o-share .o-share__icon{margin:0 -1px 0 0}.o-share .o-share__action:last-child .o-share__icon{margin:0}.o-share.o-share--vertical .o-share__icon{margin:0 0 -1px}.o-share.o-share--vertical .o-share__action--labelled .o-share__text{margin:4px;margin-top:calc(-10px + 4px)}.o-share.o-share--vertical .o-share__action{max-width:40px}.o-share ul{margin:0;padding:0}.o-share__action{box-sizing:border-box;float:left;list-style-type:none;cursor:pointer;line-height:1}.o-share__icon{display:flex;align-items:center;position:relative;cursor:pointer;padding:0;background-color:transparent;background-repeat:no-repeat;border:1px solid #807973;color:#000;text-decoration:none}.o-share__icon:hover,.o-share__icon:focus{z-index:1}.o-share__icon:before{content:"";display:inline-block;background-repeat:no-repeat;background-position:center}.o-share__icon:after{position:absolute;display:block;content:""}.o-share__text{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;text-align:center}.o-typography--loading-sans .o-share__text{font-size:12.18px;font-family:sans-serif}.o-share__action:not(.o-share__action--labelled) .o-share__text{position:absolute;clip:rect(0 0 0 0);clip-path:polygon(0 0, 0 0);margin:-1px;border:0;overflow:hidden;padding:0;width:2px;height:2px;white-space:nowrap}.o-share--small .o-share__text{margin-right:7px}.o-share--small .o-share__icon:before{width:26px;height:26px;background-size:28px 28px}.o-share--small .o-share__action{margin:0 12px 0 0}.o-share--small .o-share__icon{margin:0}.o-share--small .o-share__icon:after{width:calc(100% + 12px);height:calc(100% + 12px);top:-6px;left:-6px}.o-share--small.o-share--vertical .o-share__action{margin:0 0 12px}.o-share--small.o-share--vertical .o-share__action--labelled .o-share__text{margin:4px;margin-top:calc(-7px + 4px)}.o-share--small.o-share--vertical .o-share__action{max-width:28px}.o-share--inverse .o-share__icon{color:#fff;border-color:#939599}.o-share--inverse .o-share__icon--twitter:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:twitter?source=ig-projects&format=svg&tint=FFFFFF")}.o-share--inverse .o-share__icon--twitter:hover,.o-share--inverse .o-share__icon--twitter:focus{border-color:#1da1f2;background-color:#1da1f2;color:#fff}.o-share--inverse .o-share__icon--twitter:hover:before,.o-share--inverse .o-share__icon--twitter:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:twitter?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share--inverse .o-share__icon--twitter{background-color:#000;color:#fff}.o-share--inverse .o-share__icon--twitter:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:twitter?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share--inverse .o-share__icon--twitter{background-color:#fff;color:#000}.o-share--inverse .o-share__icon--twitter:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:twitter?source=ig-projects&format=svg&tint=%23000000")}}.o-share--inverse .o-share__icon--facebook:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:facebook?source=ig-projects&format=svg&tint=FFFFFF")}.o-share--inverse .o-share__icon--facebook:hover,.o-share--inverse .o-share__icon--facebook:focus{border-color:#3b579d;background-color:#3b579d;color:#fff}.o-share--inverse .o-share__icon--facebook:hover:before,.o-share--inverse .o-share__icon--facebook:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:facebook?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share--inverse .o-share__icon--facebook{background-color:#000;color:#fff}.o-share--inverse .o-share__icon--facebook:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:facebook?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share--inverse .o-share__icon--facebook{background-color:#fff;color:#000}.o-share--inverse .o-share__icon--facebook:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:facebook?source=ig-projects&format=svg&tint=%23000000")}}.o-share--inverse .o-share__icon--linkedin:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:linkedin?source=ig-projects&format=svg&tint=FFFFFF")}.o-share--inverse .o-share__icon--linkedin:hover,.o-share--inverse .o-share__icon--linkedin:focus{border-color:#0077b5;background-color:#0077b5;color:#fff}.o-share--inverse .o-share__icon--linkedin:hover:before,.o-share--inverse .o-share__icon--linkedin:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:linkedin?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share--inverse .o-share__icon--linkedin{background-color:#000;color:#fff}.o-share--inverse .o-share__icon--linkedin:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:linkedin?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share--inverse .o-share__icon--linkedin{background-color:#fff;color:#000}.o-share--inverse .o-share__icon--linkedin:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:linkedin?source=ig-projects&format=svg&tint=%23000000")}}.o-share--inverse .o-share__icon--link:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:link?source=ig-projects&format=svg&tint=FFFFFF")}.o-share--inverse .o-share__icon--link:hover,.o-share--inverse .o-share__icon--link:focus{border-color:#0a5e66;background-color:#0a5e66;color:#fff}.o-share--inverse .o-share__icon--link:hover:before,.o-share--inverse .o-share__icon--link:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:link?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share--inverse .o-share__icon--link{background-color:#000;color:#fff}.o-share--inverse .o-share__icon--link:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:link?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share--inverse .o-share__icon--link{background-color:#fff;color:#000}.o-share--inverse .o-share__icon--link:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:link?source=ig-projects&format=svg&tint=%23000000")}}.o-share--inverse .o-share__icon--share:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:share?source=ig-projects&format=svg&tint=FFFFFF")}.o-share--inverse .o-share__icon--share:hover,.o-share--inverse .o-share__icon--share:focus{border-color:#0a5e66;background-color:#0a5e66;color:#fff}.o-share--inverse .o-share__icon--share:hover:before,.o-share--inverse .o-share__icon--share:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:share?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share--inverse .o-share__icon--share{background-color:#000;color:#fff}.o-share--inverse .o-share__icon--share:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:share?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share--inverse .o-share__icon--share{background-color:#fff;color:#000}.o-share--inverse .o-share__icon--share:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:share?source=ig-projects&format=svg&tint=%23000000")}}.o-share--inverse .o-share__icon--mail:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mail?source=ig-projects&format=svg&tint=FFFFFF")}.o-share--inverse .o-share__icon--mail:hover,.o-share--inverse .o-share__icon--mail:focus{border-color:#0a5e66;background-color:#0a5e66;color:#fff}.o-share--inverse .o-share__icon--mail:hover:before,.o-share--inverse .o-share__icon--mail:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mail?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share--inverse .o-share__icon--mail{background-color:#000;color:#fff}.o-share--inverse .o-share__icon--mail:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mail?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share--inverse .o-share__icon--mail{background-color:#fff;color:#000}.o-share--inverse .o-share__icon--mail:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mail?source=ig-projects&format=svg&tint=%23000000")}}.o-share--inverse .o-share__icon--pinterest:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:pinterest?source=ig-projects&format=svg&tint=FFFFFF")}.o-share--inverse .o-share__icon--pinterest:hover,.o-share--inverse .o-share__icon--pinterest:focus{border-color:#bd081c;background-color:#bd081c;color:#fff}.o-share--inverse .o-share__icon--pinterest:hover:before,.o-share--inverse .o-share__icon--pinterest:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:pinterest?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share--inverse .o-share__icon--pinterest{background-color:#000;color:#fff}.o-share--inverse .o-share__icon--pinterest:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:pinterest?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share--inverse .o-share__icon--pinterest{background-color:#fff;color:#000}.o-share--inverse .o-share__icon--pinterest:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:pinterest?source=ig-projects&format=svg&tint=%23000000")}}.o-share--inverse .o-share__icon--whatsapp:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:whatsapp?source=ig-projects&format=svg&tint=FFFFFF")}.o-share--inverse .o-share__icon--whatsapp:hover,.o-share--inverse .o-share__icon--whatsapp:focus{border-color:#25d366;background-color:#25d366;color:#fff}.o-share--inverse .o-share__icon--whatsapp:hover:before,.o-share--inverse .o-share__icon--whatsapp:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:whatsapp?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share--inverse .o-share__icon--whatsapp{background-color:#000;color:#fff}.o-share--inverse .o-share__icon--whatsapp:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:whatsapp?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share--inverse .o-share__icon--whatsapp{background-color:#fff;color:#000}.o-share--inverse .o-share__icon--whatsapp:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/ftsocial-v2:whatsapp?source=ig-projects&format=svg&tint=%23000000")}}.o-share--inverse .o-share__icon--corporate:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:corporate?source=ig-projects&format=svg&tint=FFFFFF")}.o-share--inverse .o-share__icon--corporate:hover,.o-share--inverse .o-share__icon--corporate:focus{border-color:#0a5e66;background-color:#0a5e66;color:#fff}.o-share--inverse .o-share__icon--corporate:hover:before,.o-share--inverse .o-share__icon--corporate:focus:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:corporate?source=ig-projects&format=svg&tint=FFFFFF")}@media screen and (-ms-high-contrast: active){.o-share--inverse .o-share__icon--corporate{background-color:#000;color:#fff}.o-share--inverse .o-share__icon--corporate:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:corporate?source=ig-projects&format=svg&tint=%23ffffff")}}@media screen and (-ms-high-contrast: black-on-white){.o-share--inverse .o-share__icon--corporate{background-color:#fff;color:#000}.o-share--inverse .o-share__icon--corporate:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:corporate?source=ig-projects&format=svg&tint=%23000000")}}.o-share--vertical .o-share__action{float:none}.o-share--vertical .o-share__icon{flex-direction:column}.o-share--vertical .o-share__text{font-size:12px;line-height:16px;word-wrap:anywhere;overflow-wrap:anywhere}.o-typography--loading-sans .o-share--vertical .o-share__text{font-size:10.44px}.g-share.g-share--separated li{margin-left:16px}.g-share.g-share--separated li:first-of-type{margin-left:0}@media(min-width: 30.625em){.g-share .o-share__icon--whatsapp{display:none}}.g-share--small .o-share .o-share__icon::before{width:28px;height:28px;background-size:30px 30px}.g-share--small.g-share--separated li{margin-left:12px}.g-share--small.g-share--separated li:first-of-type{margin-left:0}
.bylines time{color:#66605c;text-transform:uppercase}
header.o-header{position:relative;z-index:1}.large-topper{position:relative;margin-bottom:0;margin-top:22px;box-sizing:border-box}@media(min-width: 61.25em){.large-topper{margin-top:54px}}.large-topper__video-background{height:78px;width:165px;margin:0 auto}@media(min-width: 46.25em){.large-topper__video-background{height:130px;width:280px}}.large-topper__video-background video{object-fit:cover;object-position:center top;height:100%;width:100%;-webkit-mask-image:-webkit-radial-gradient(white, black);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden}.large-topper__title{font-family:FinancierDisplayWeb,Georgia,serif;font-weight:normal;font-size:28px;line-height:30px;text-align:center;color:#333;margin:0 0 8px}@media(min-width: 61.25em){.large-topper__title{font-size:56px;line-height:56px;margin-bottom:40px}}.large-topper__summary{font-family:"MetricWeb",sans-serif;color:#66605c;text-align:center;font-size:20px;line-height:24px;font-weight:400;margin:0 0 30px 0;text-align:left}@media(min-width: 61.25em){.large-topper__summary{margin:0 0 20px 0}}.bylines{text-align:center;margin-bottom:36px}@media(min-width: 61.25em){.bylines{margin-bottom:46px}}.topic{font-size:16px;line-height:20px;margin:16px 0 5px;text-align:center}@media(min-width: 61.25em){.topic{margin:24px 0 12px}}
.MIDISounds{display:none}
.mute,.mute.o-forms-field{margin:12px 0}@media(min-width: 61.25em){.mute,.mute.o-forms-field{margin-top:9px}}.mute .o-forms-input--toggle{margin-top:4px}.mute .o-forms-input--toggle .o-forms-input__label{box-sizing:border-box;padding:2px 45px 2px 0;position:relative;min-width:117px}@media(max-width: 23.375em){.mute .o-forms-input--toggle .o-forms-input__label{padding-right:42px;min-width:114px}}.mute .o-forms-input--toggle .o-forms-input__label:before,.mute .o-forms-input--toggle .o-forms-input__label:after{right:0;left:auto}.mute .o-forms-input--toggle .o-forms-input__label:after{right:16px}.mute .o-forms-input--toggle input[type=checkbox]{-webkit-appearance:none;width:0}.mute .o-forms-input--toggle input[type=checkbox]:checked+.o-forms-input__label:after{right:0;left:auto}.sound-legend{padding:0;font-family:MetricWeb,sans-serif;margin-bottom:24px;background:#fff1e5}.sound-legend__wrapper{box-sizing:border-box;width:100%}@media(min-width: 61.25em){.sound-legend__wrapper{display:flex;justify-content:space-between;flex-direction:row-reverse}}.sound-legend__top{display:flex;justify-content:space-between;width:100%}@media(min-width: 61.25em){.sound-legend__top{display:block;width:auto}}.sound-legend--sticky,.sticky-header-wrapper--fixed>.sound-legend--sticky{box-shadow:0px 4px 6px 0px rgba(77,72,69,.1),0px 2px 1px 0px rgba(77,72,69,.24)}.sound-legend__on-off{font-weight:600}.sound-legend--sticky .sound-legend__wrapper,.sticky-header-wrapper--fixed>.sound-legend--sticky .sound-legend__wrapper{padding:0 10px}@media(min-width: 46.25em){.sound-legend--sticky .sound-legend__wrapper,.sticky-header-wrapper--fixed>.sound-legend--sticky .sound-legend__wrapper{margin:0 auto;transform:translateX(-10px);width:75%;width:calc((100% - 20px)*.75);padding:0;box-sizing:border-box;padding-left:20px}}@media(min-width: 61.25em){.sound-legend--sticky .sound-legend__wrapper,.sticky-header-wrapper--fixed>.sound-legend--sticky .sound-legend__wrapper{width:66.667%;width:calc((100% - 20px)*.66667);padding-top:4px;padding-bottom:10px}}@media(min-width: 76.25em){.sound-legend--sticky .sound-legend__wrapper,.sticky-header-wrapper--fixed>.sound-legend--sticky .sound-legend__wrapper{padding-left:0;transform:none;width:680px}}.sound-legend--sticky{margin-bottom:0}.sound-legend__title.o-typography-heading-level-3{display:block;margin-bottom:0;font-size:16px;line-height:20px;font-weight:normal}@media(min-width: 61.25em){.sound-legend__title.o-typography-heading-level-3{display:none}}.sound-legend__icon.o-icons-icon{width:32px;height:32px;margin-left:4px;position:absolute;top:6px}@media(max-width: 23.375em){.sound-legend__icon.o-icons-icon{right:0}}.sound-legend__toggle[type=button]{-webkit-appearance:none;appearance:none;background:none;border:1px solid #000;cursor:pointer;display:block;font-family:MetricWeb;margin:6px 0;padding:10px 42px 10px 20px;position:relative;font-size:16px;line-height:20px;font-weight:600;text-align:center}.sound-legend__toggle[type=button],.sound-legend__toggle[type=button]:hover,.sound-legend__toggle[type=button]:active,.sound-legend__toggle[type=button]:focus,.sound-legend__toggle[type=button]:visited{color:#33302e}@media(max-width: 23.375em){.sound-legend__toggle[type=button]{padding:10px 28px 10px 10px}}@media(min-width: 46.25em){.sound-legend__toggle[type=button]{margin-right:0}}.sound-legend__text{display:flex}@media(max-width: 61.24em){.sound-legend__text{display:none;flex-wrap:wrap;padding:0 0 4px;left:0px;width:100%;right:0px;box-sizing:border-box}}@media(min-width: 46.25em){.sound-legend__text{margin:6px auto 0}}@media(min-width: 61.25em){.sound-legend__text{margin:10px 0 0;width:auto;padding-right:18px}}.sound-legend--open .sound-legend__text{display:flex}.sound-legend__list{list-style-type:none;margin:0;padding:0;display:flex;flex-wrap:wrap}.sound-legend__text-intro{font-size:16px;line-height:16px;height:16px;margin-right:16px;padding-top:3px;font-weight:600;margin-bottom:7px;width:100%}@media(min-width: 46.25em){.sound-legend__text-intro{width:auto;margin-top:4px}}@media(min-width: 61.25em){.sound-legend__text-intro{font-size:18px;line-height:20px;height:20px;margin-top:2px}}@media(min-width: 76.25em){.sound-legend__text-intro{margin-right:28px}}.sound-legend__list-item{margin-bottom:8px;margin-right:12px;display:flex;justify-content:space-between;box-sizing:border-box;align-items:center;font-weight:400}@media(min-width: 76.25em){.sound-legend__list-item{margin-right:18px}}.sound-legend__button{appearance:none;-webkit-appearance:none;background:#f2dfce;border:none;border-radius:26px;color:#262a33;position:relative;padding:6px 14px 6px 32px;line-height:20px}.sound-legend__button .o-icons-icon{padding:0;height:32px;position:absolute;top:0;left:2px;width:32px}.sound-legend__button[disabled]{opacity:.4}
.chart-container{margin-bottom:20px}@keyframes scale{0%{transform:scale(4);stroke-width:.5;fill:#fff}19%{fill:#fff}20%{transform:scale(1);stroke-width:2;fill:#0f5499}90%{transform:scale(1);stroke-width:2}}
.yield-curve{margin-bottom:20px;position:relative}@media(min-width: 46.25em){.yield-curve{margin-bottom:46px;margin-top:20px}}p+.yield-curve{display:inline-block;width:100%}.yield-curve__flourish{margin-bottom:20px}@media(min-width: 46.25em){.yield-curve__flourish{margin-bottom:46px;margin-top:0px}}.yield-curve__title{color:#000;font-family:"MetricWeb";font-size:20px;font-weight:400;line-height:24px;margin-bottom:-33px;margin-top:0}@media(min-width: 46.25em){.yield-curve__title{font-size:24px;line-height:28px}}@media(min-width: 46.25em){.yield-curve__split-container{display:flex}}@media(max-width: 46.24em){.yield-curve__half:first-child .chart-container{margin-bottom:0}}@media(max-width: 46.24em){.yield-curve__half:nth-child(2){margin-top:-32px}}@media(min-width: 46.25em){.yield-curve__half{width:50%}}.yield-curve__button--hidden-text{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.yield-curve__buttons-wrapper{display:flex}.yield-curve__controls-wrapper{display:flex;justify-content:space-between}@media(min-width: 46.25em){.yield-curve__controls-wrapper{justify-content:flex-start}}.yield-curve__controls-wrapper--disabled{opacity:.4}.yield-curve__controls-wrapper--disabled .o-buttons[disabled]{opacity:1}@media(min-width: 61.25em){.break-out-full-width .yield-curve__controls-wrapper{box-sizing:border-box;padding-left:20px;margin-left:auto;margin-right:auto;width:66.667%;width:calc((100% + 20px)*.66667);transform:translateX(-10px)}}@media(min-width: 76.25em){.break-out-full-width .yield-curve__controls-wrapper{padding-left:0;transform:none;width:680px}}.yield-curve__button-wrapper{display:flex;flex-direction:column;margin-right:12px}@media(max-width: 23.375em){.yield-curve__button-wrapper{margin-right:8px}}.yield-curve__button-label{color:#000;font-family:"MetricWeb",sans-serif;font-size:14px;line-height:16px;margin-top:6px;text-align:center}.yield-curve__button-label span{display:inline-block;width:46px;text-align:center}@media(max-width: 23.375em){.yield-curve__button-label span{width:40px}}.yield-curve__button.o-buttons{width:48px;height:48px}.yield-curve__button--back,.yield-curve__button--forward{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:48px;height:48px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:refresh?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.yield-curve__button--back,.yield-curve__button--forward{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:refresh?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.yield-curve__button--back,.yield-curve__button--forward{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:refresh?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.yield-curve__button--back{transform:scaleX(-1)}.yield-curve .o-forms-input--radio-box label .o-forms-input__label{width:46px;box-sizing:border-box;height:42px}@media(max-width: 23.375em){.yield-curve .o-forms-input--radio-box label .o-forms-input__label{width:40px}}.yield-curve .o-forms-input--radio-box input[type=radio]+.o-forms-input__label{color:#333}.yield-curve .o-forms-input--radio-box input[type=radio]:checked+.o-forms-input__label{background:#333;color:#fff}.yield-curve .o-forms-input--radio-box input[type=radio]:not(:checked):not(:disabled):hover+.o-forms-input__label{background:rgba(0,0,0,.15)}.yield-curve .o-forms-input--radio-box label{flex-grow:0;min-width:unset}.yield-curve .o-forms-input{margin-top:0}.yield-curve .o-forms-field{margin-bottom:0}@media(min-width: 46.25em){.yield-curve .o-forms-field{margin-left:12px}}.yield-curve__spreads-container{position:relative}.yield-curve__footnote{font-size:14px;line-height:16px;font-family:MetricWeb,sans-serif;font-weight:400;color:#66605c;margin-top:-10px}
.sticky-header-wrapper--fixed>*{position:fixed;top:0;left:0;right:0;z-index:1000;box-shadow:none;transition:box-shadow .5s}.sticky-header-wrapper--shadow>*{box-shadow:0 4px 6px 0 rgba(77,72,69,.1),0 1px 2px 0 rgba(77,72,69,.24)}
@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Thin.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Thin.woff") format("woff");font-family:"MetricWeb";font-weight:100;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Light.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Light.woff") format("woff");font-family:"MetricWeb";font-weight:300;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-LightItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-LightItalic.woff") format("woff");font-family:"MetricWeb";font-weight:300;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Regular.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Regular.woff") format("woff");font-family:"MetricWeb";font-weight:400;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-RegularItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-RegularItalic.woff") format("woff");font-family:"MetricWeb";font-weight:400;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Medium.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Medium.woff") format("woff");font-family:"MetricWeb";font-weight:500;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Semibold.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Semibold.woff") format("woff");font-family:"MetricWeb";font-weight:600;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Bold.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Bold.woff") format("woff");font-family:"MetricWeb";font-weight:700;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-BoldItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-BoldItalic.woff") format("woff");font-family:"MetricWeb";font-weight:700;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Black.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/MetricWeb-Black.woff") format("woff");font-family:"MetricWeb";font-weight:900;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Light.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Light.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:300;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-LightItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-LightItalic.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:300;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Regular.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Regular.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:400;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-RegularItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-RegularItalic.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:400;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-MediumItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-MediumItalic.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:500;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Medium.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Medium.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:500;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Semibold.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Semibold.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:600;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-SemiboldItalic.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-SemiboldItalic.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:600;font-style:italic;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Bold.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Bold.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:700;font-style:normal;font-display:swap}@font-face{src:url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Black.woff2") format("woff2"),url("https://www.ft.com/__origami/service/build/v2/files/o-fonts-assets@1.7.0/FinancierDisplayWeb-Black.woff") format("woff");font-family:"FinancierDisplayWeb";font-weight:900;font-style:normal;font-display:swap}.o-typography-heading-level-1{font-family:MetricWeb, sans-serif;font-size:32px;line-height:32px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-1{font-size:26.56px;font-family:sans-serif}.o-typography-heading-level-2{font-family:MetricWeb, sans-serif;font-size:28px;line-height:32px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-2{font-size:23.24px;font-family:sans-serif}.o-typography-heading-level-3{font-family:MetricWeb, sans-serif;font-size:24px;line-height:28px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-3{font-size:19.92px;font-family:sans-serif}.o-typography-heading-level-4{font-family:MetricWeb, sans-serif;font-size:20px;line-height:24px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-4{font-size:16.6px;font-family:sans-serif}.o-typography-heading-level-5{font-family:MetricWeb, sans-serif;font-size:18px;line-height:20px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-5{font-size:14.94px;font-family:sans-serif}.o-typography-heading-level-6{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-heading-level-6{font-size:13.28px;font-family:sans-serif}.o-typography-bold{font-weight:600}.o-typography-italic{font-style:italic}.o-typography-sup{font-family:MetricWeb, sans-serif;font-size:.666em;position:static;vertical-align:super;line-height:0;display:inline-block;margin-top:-1em}.o-typography-sub{font-family:MetricWeb, sans-serif;font-size:.666em;position:static;vertical-align:sub;line-height:0;display:inline-block;margin-bottom:-1em}.o-typography-body{font-family:MetricWeb, sans-serif;font-size:18px;line-height:20px;margin:0 0 24px;color:#33302e}.o-typography--loading-sans .o-typography-body{font-size:15.66px;font-family:sans-serif}.o-typography-link{text-decoration:none;cursor:pointer;border-bottom:.25ex solid;color:#0d7680;border-bottom-color:#cfd8d1;text-decoration-color:#cfd8d1}@supports(text-decoration-thickness: 0.25ex){.o-typography-link{border-bottom:0;text-decoration-thickness:.25ex;text-decoration-line:underline}}.o-typography-link:hover{color:#08474d;border-bottom-color:#9ec0bd;text-decoration-color:#9ec0bd}.o-typography-link:focus{border-bottom-color:transparent;text-decoration-color:transparent;color:#08474d}.o-typography-link--external{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&tint=%230D7680,%230D7680&format=svg");background-repeat:no-repeat;padding-right:calc(1em + 0.5ch - 0.25em - 0.25em);background-position-x:calc(100% + .5ch);background-origin:border-box;background-size:calc(1em + 0.5ch) calc(1em + 0.5ch)}@media screen and (-ms-high-contrast: active){.o-typography-link--external{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-typography-link--external{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&tint=%23000000,%23000000&format=svg")}}@supports(background-size: contain){.o-typography-link--external{background-position-y:calc(100% + 0.25ex - 1px)}}@supports(text-decoration-thickness: 0.25ex){.o-typography-link--external{background-position-y:calc(100% + 0.25em - 0.25ex - 1px)}}@supports(background-size: contain){.o-typography-link--external{background-size:contain}}.o-typography-link--external[target=_blank]:after{position:absolute;clip:rect(0 0 0 0);clip-path:polygon(0 0, 0 0);margin:-1px;border:0;overflow:hidden;padding:0;width:2px;height:2px;white-space:nowrap;content:"(opens a new window)"}.o-typography-list{margin:0 0 24px;padding:0;list-style:none}.o-typography-list>li{position:relative;margin:0;padding-left:calc(2ch + 4px)}.o-typography-list>li:before{font-family:MetricWeb, sans-serif;display:inline-block;position:absolute;left:0;transform-origin:center left}.o-typography-list--ordered{counter-reset:item}.o-typography-list--ordered>li:before{font-weight:600;content:counter(item);counter-increment:item;font-feature-settings:"tnum";transform:scale(0.8888888889);margin-left:-0.1422222222ch}.o-typography-list--unordered>li:before{content:"\2022";color:inherit;transform:scale(1.5555555556);margin-top:-0.2488888889ch}.o-typography-caption{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;margin-top:8px;margin-bottom:0;color:#33302e}.o-typography--loading-sans .o-typography-caption{font-size:12.18px;font-family:sans-serif}.o-typography-footer{font-family:MetricWeb, sans-serif;font-size:18px;line-height:24px;color:#33302e}.o-typography--loading-sans .o-typography-footer{font-size:15.66px;font-family:sans-serif}.o-typography-wrapper>p,.o-typography-wrapper{font-family:MetricWeb, sans-serif;font-size:18px;line-height:20px;margin:0 0 24px;color:#33302e}.o-typography--loading-sans .o-typography-wrapper>p,.o-typography--loading-sans .o-typography-wrapper{font-size:15.66px;font-family:sans-serif}.o-typography-wrapper>p>h1,.o-typography-wrapper>h1{font-family:MetricWeb, sans-serif;font-size:32px;line-height:32px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h1,.o-typography--loading-sans-bold .o-typography-wrapper>h1{font-size:26.56px;font-family:sans-serif}.o-typography-wrapper>p>h2,.o-typography-wrapper>h2{font-family:MetricWeb, sans-serif;font-size:28px;line-height:32px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h2,.o-typography--loading-sans-bold .o-typography-wrapper>h2{font-size:23.24px;font-family:sans-serif}.o-typography-wrapper>p>h3,.o-typography-wrapper>h3{font-family:MetricWeb, sans-serif;font-size:24px;line-height:28px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h3,.o-typography--loading-sans-bold .o-typography-wrapper>h3{font-size:19.92px;font-family:sans-serif}.o-typography-wrapper>p>h4,.o-typography-wrapper>h4{font-family:MetricWeb, sans-serif;font-size:20px;line-height:24px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h4,.o-typography--loading-sans-bold .o-typography-wrapper>h4{font-size:16.6px;font-family:sans-serif}.o-typography-wrapper>p>h5,.o-typography-wrapper>h5{font-family:MetricWeb, sans-serif;font-size:18px;line-height:20px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h5,.o-typography--loading-sans-bold .o-typography-wrapper>h5{font-size:14.94px;font-family:sans-serif}.o-typography-wrapper>p>h6,.o-typography-wrapper>h6{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;font-weight:600;color:#33302e;margin:0 0 16px}.o-typography--loading-sans-bold .o-typography-wrapper>p>h6,.o-typography--loading-sans-bold .o-typography-wrapper>h6{font-size:13.28px;font-family:sans-serif}.o-typography-wrapper>p>a,.o-typography-wrapper>a{text-decoration:none;cursor:pointer;border-bottom:.25ex solid;color:#0d7680;border-bottom-color:#cfd8d1;text-decoration-color:#cfd8d1}@supports(text-decoration-thickness: 0.25ex){.o-typography-wrapper>p>a,.o-typography-wrapper>a{border-bottom:0;text-decoration-thickness:.25ex;text-decoration-line:underline}}.o-typography-wrapper>p>a:hover,.o-typography-wrapper>a:hover{color:#08474d;border-bottom-color:#9ec0bd;text-decoration-color:#9ec0bd}.o-typography-wrapper>p>a:focus,.o-typography-wrapper>a:focus{border-bottom-color:transparent;text-decoration-color:transparent;color:#08474d}.o-typography-wrapper>p>p,.o-typography-wrapper>p{font-family:MetricWeb, sans-serif;font-size:18px;line-height:20px;margin:0 0 24px;color:#33302e}.o-typography--loading-sans .o-typography-wrapper>p>p,.o-typography--loading-sans .o-typography-wrapper>p{font-size:15.66px;font-family:sans-serif}.o-typography-wrapper>p>ol,.o-typography-wrapper>p>ul,.o-typography-wrapper>ol,.o-typography-wrapper>ul{margin:0 0 24px;padding:0;list-style:none}.o-typography-wrapper>p>ol>li,.o-typography-wrapper>p>ul>li,.o-typography-wrapper>ol>li,.o-typography-wrapper>ul>li{position:relative;margin:0;padding-left:calc(2ch + 4px)}.o-typography-wrapper>p>ol>li:before,.o-typography-wrapper>p>ul>li:before,.o-typography-wrapper>ol>li:before,.o-typography-wrapper>ul>li:before{font-family:MetricWeb, sans-serif;display:inline-block;position:absolute;left:0;transform-origin:center left}.o-typography-wrapper>p>ol,.o-typography-wrapper>ol{counter-reset:item}.o-typography-wrapper>p>ol>li:before,.o-typography-wrapper>ol>li:before{font-weight:600;content:counter(item);counter-increment:item;font-feature-settings:"tnum";transform:scale(0.8888888889);margin-left:-0.1422222222ch}.o-typography-wrapper>p>ul>li:before,.o-typography-wrapper>ul>li:before{content:"\2022";color:inherit;transform:scale(1.5555555556);margin-top:-0.2488888889ch}.o-typography-wrapper>p>footer,.o-typography-wrapper>footer{font-family:MetricWeb, sans-serif;font-size:18px;line-height:24px;color:#33302e}.o-typography--loading-sans .o-typography-wrapper>p>footer,.o-typography--loading-sans .o-typography-wrapper>footer{font-size:15.66px;font-family:sans-serif}.o-typography-wrapper>p>strong,.o-typography-wrapper>strong{font-weight:600}.o-typography-wrapper>p>em,.o-typography-wrapper>em{font-style:italic}.o-typography-wrapper>p>sup,.o-typography-wrapper>sup{font-family:MetricWeb, sans-serif;font-size:.666em;position:static;vertical-align:super;line-height:0;display:inline-block;margin-top:-1em}.o-typography-wrapper>p>sub,.o-typography-wrapper>sub{font-family:MetricWeb, sans-serif;font-size:.666em;position:static;vertical-align:sub;line-height:0;display:inline-block;margin-bottom:-1em}.o-typography-wrapper>p>figcaption,.o-typography-wrapper>figcaption{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;margin-top:8px;margin-bottom:0;color:#33302e}.o-typography--loading-sans .o-typography-wrapper>p>figcaption,.o-typography--loading-sans .o-typography-wrapper>figcaption{font-size:12.18px;font-family:sans-serif}.o-editorial-typography-body{font-family:Georgia,serif;font-size:18px;line-height:1.6;color:#33302e;margin:0}@media(min-width: 76.25em){.o-editorial-typography-body{font-size:20px;line-height:1.6}}.o-editorial-typography-list{margin:0 0 24px;padding:0;list-style:none;margin:0}.o-editorial-typography-list>li{position:relative;margin:0;padding-left:calc(2ch + 4px)}.o-editorial-typography-list>li:before{font-family:MetricWeb, sans-serif;display:inline-block;position:absolute;left:0;transform-origin:center left}.o-editorial-typography-list--ordered{counter-reset:item}.o-editorial-typography-list--ordered>li:before{font-weight:600;content:counter(item);counter-increment:item;font-feature-settings:"tnum";transform:scale(0.8888888889);margin-left:-0.1422222222ch}.o-editorial-typography-list--unordered>li:before{content:"\2022";color:inherit;transform:scale(1.5555555556);margin-top:-0.2488888889ch}.o-editorial-typography-caption{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;color:#33302e}.o-typography--loading-sans .o-editorial-typography-caption{font-size:12.18px;font-family:sans-serif}.o-editorial-typography-headline{font-family:FinancierDisplayWeb, serif;font-size:32px;line-height:32px;font-weight:700;margin:0}.o-editorial-typography-headline:after{content:"";display:block;border-bottom:calc(.34ex + 1px) solid;width:calc(7ch - 10px);max-width:100%;padding-top:.416em}@media(min-width: 30.625em){.o-editorial-typography-headline{font-size:40px;line-height:40px}}@media(min-width: 61.25em){.o-editorial-typography-headline{font-size:48px;line-height:48px}}.o-typography--loading-display-bold .o-editorial-typography-headline{font-size:28.8px;font-family:serif}@media(min-width: 30.625em){.o-typography--loading-display-bold .o-editorial-typography-headline{font-size:36px}}@media(min-width: 61.25em){.o-typography--loading-display-bold .o-editorial-typography-headline{font-size:43.2px}}.o-editorial-typography-heading-level-1{margin:0;color:#33302e;font-family:FinancierDisplayWeb, serif;font-size:28px;line-height:32px;font-weight:400}@media(min-width: 30.625em){.o-editorial-typography-heading-level-1{font-size:32px;line-height:32px}}@media(min-width: 61.25em){.o-editorial-typography-heading-level-1{font-size:40px;line-height:40px}}.o-typography--loading-display .o-editorial-typography-heading-level-1{font-size:25.2px;font-family:serif}@media(min-width: 30.625em){.o-typography--loading-display .o-editorial-typography-heading-level-1{font-size:28.8px}}@media(min-width: 61.25em){.o-typography--loading-display .o-editorial-typography-heading-level-1{font-size:36px}}.o-editorial-typography-heading-level-2{margin:0;color:#33302e;font-family:MetricWeb, sans-serif;font-size:28px;line-height:32px;font-weight:600}.o-typography--loading-sans-bold .o-editorial-typography-heading-level-2{font-size:23.24px;font-family:sans-serif}.o-editorial-typography-heading-level-3{margin:0;color:#33302e;font-family:MetricWeb, sans-serif;font-size:28px;line-height:32px;font-weight:400}.o-typography--loading-sans .o-editorial-typography-heading-level-3{font-size:24.36px;font-family:sans-serif}.o-editorial-typography-heading-level-4{margin:0;color:#33302e;font-family:MetricWeb, sans-serif;font-size:24px;line-height:28px;font-weight:400}.o-typography--loading-sans .o-editorial-typography-heading-level-4{font-size:20.88px;font-family:sans-serif}.o-editorial-typography-heading-level-5{margin:0;color:#33302e;font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;font-weight:400;text-transform:uppercase;letter-spacing:.5px}.o-typography--loading-sans .o-editorial-typography-heading-level-5{font-size:13.92px;font-family:sans-serif}.o-editorial-typography-standfirst{font-family:MetricWeb, sans-serif;font-size:20px;line-height:24px;color:#33302e}.o-typography--loading-sans .o-editorial-typography-standfirst{font-size:17.4px;font-family:sans-serif}.o-editorial-typography-author{color:#33302e;font-family:MetricWeb, sans-serif;font-weight:600}a.o-editorial-typography-author{text-decoration:none;border-bottom:0}a.o-editorial-typography-author:hover{color:#990f3d}.o-editorial-typography-topic{color:#33302e;font-family:MetricWeb, sans-serif;font-weight:600}a.o-editorial-typography-topic{color:#990f3d;text-decoration:none;border-bottom:0}a.o-editorial-typography-topic:hover{color:#4d081f}.o-editorial-typography-byline{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px}.o-typography--loading-sans .o-editorial-typography-byline{font-size:13.92px;font-family:sans-serif}.o-editorial-typography-timestamp{text-transform:uppercase;color:#66605c}.o-editorial-layout-wrapper>blockquote{display:block;margin:0;padding-top:0px;padding-bottom:0px;padding-left:16px}.o-editorial-layout-wrapper>blockquote p{margin-top:0;margin-bottom:16px}.o-editorial-layout-wrapper>blockquote p:last-child{margin-bottom:0}.o-editorial-layout-wrapper>blockquote{position:relative;border-left:4px solid #1a1817;color:#000}.o-editorial-layout-wrapper>blockquote a{text-decoration:none;cursor:pointer;border-bottom:.25ex solid;color:#0d7680;border-bottom-color:#cfd8d1;text-decoration-color:#cfd8d1}@supports(text-decoration-thickness: 0.25ex){.o-editorial-layout-wrapper>blockquote a{border-bottom:0;text-decoration-thickness:.25ex;text-decoration-line:underline}}.o-editorial-layout-wrapper>blockquote a:hover{color:#08474d;border-bottom-color:#9ec0bd;text-decoration-color:#9ec0bd}.o-editorial-layout-wrapper>blockquote a:focus{border-bottom-color:transparent;text-decoration-color:transparent;color:#08474d}.o-editorial-layout-wrapper>blockquote cite,.o-editorial-layout-wrapper>blockquote footer{font-family:MetricWeb, sans-serif;font-size:18px;line-height:20px;font-weight:400;font-style:normal}.o-typography--loading-sans .o-editorial-layout-wrapper>blockquote cite,.o-editorial-layout-wrapper>blockquote .o-typography--loading-sans cite,.o-typography--loading-sans .o-editorial-layout-wrapper>blockquote footer,.o-editorial-layout-wrapper>blockquote .o-typography--loading-sans footer{font-size:15.66px;font-family:sans-serif}.o-editorial-layout-wrapper>blockquote cite a,.o-editorial-layout-wrapper>blockquote footer a{text-decoration:none;cursor:pointer;border-bottom:.25ex solid;color:#0d7680;border-bottom-color:#cfd8d1;text-decoration-color:#cfd8d1}@supports(text-decoration-thickness: 0.25ex){.o-editorial-layout-wrapper>blockquote cite a,.o-editorial-layout-wrapper>blockquote footer a{border-bottom:0;text-decoration-thickness:.25ex;text-decoration-line:underline}}.o-editorial-layout-wrapper>blockquote cite a:hover,.o-editorial-layout-wrapper>blockquote footer a:hover{color:#08474d;border-bottom-color:#9ec0bd;text-decoration-color:#9ec0bd}.o-editorial-layout-wrapper>blockquote cite a:focus,.o-editorial-layout-wrapper>blockquote footer a:focus{border-bottom-color:transparent;text-decoration-color:transparent;color:#08474d}.o-editorial-layout-wrapper>blockquote footer>cite{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;font-weight:600;font-style:normal;text-transform:uppercase}.o-typography--loading-sans-bold .o-editorial-layout-wrapper>blockquote footer>cite,.o-editorial-layout-wrapper>blockquote .o-typography--loading-sans-bold footer>cite{font-size:13.28px;font-family:sans-serif}.o-editorial-layout-wrapper>blockquote:before{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:36px;height:36px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech-left?source=ig-projects&tint=%231A1817,%231A1817&format=svg");content:"";position:relative;left:-7.2px;margin-top:-7.2px;margin-bottom:calc(16px - 14.4px)}@media screen and (-ms-high-contrast: active){.o-editorial-layout-wrapper>blockquote:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech-left?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-editorial-layout-wrapper>blockquote:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech-left?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-editorial-layout-wrapper>blockquote p{font-family:Georgia,serif}.o-editorial-layout-wrapper>ol,.o-editorial-layout-wrapper>ul{margin:0 0 24px;padding:0;list-style:none;margin:0}.o-editorial-layout-wrapper>ol>li,.o-editorial-layout-wrapper>ul>li{position:relative;margin:0;padding-left:calc(2ch + 4px)}.o-editorial-layout-wrapper>ol>li:before,.o-editorial-layout-wrapper>ul>li:before{font-family:MetricWeb, sans-serif;display:inline-block;position:absolute;left:0;transform-origin:center left}.o-editorial-layout-wrapper>h1,.o-editorial-layout-heading-1{margin-bottom:4px;margin-top:0}.o-editorial-layout-wrapper>h2,.o-editorial-layout-heading-2{margin-bottom:14px;margin-top:32px}.o-editorial-layout-wrapper>h3,.o-editorial-layout-heading-3,.o-editorial-layout-wrapper>h4,.o-editorial-layout-heading-4{margin-bottom:14px;margin-top:0}.o-editorial-layout-wrapper>h5,.o-editorial-layout-heading-5{margin-bottom:4px;margin-top:0}.o-editorial-layout-wrapper>blockquote,.o-editorial-layout-wrapper>ol,.o-editorial-layout-wrapper>ul,.o-editorial-layout-wrapper>p,.o-editorial-layout-body{margin-bottom:24px;margin-top:0}.o-editorial-layout-wrapper>h1+blockquote,.o-editorial-layout-wrapper>h1+ol,.o-editorial-layout-wrapper>h1+ul,.o-editorial-layout-wrapper>h1+p,.o-editorial-layout-wrapper>h1+.o-editorial-layout-body,.o-editorial-layout-wrapper>.o-editorial-layout-heading-1+blockquote,.o-editorial-layout-wrapper>.o-editorial-layout-heading-1+ol,.o-editorial-layout-wrapper>.o-editorial-layout-heading-1+ul,.o-editorial-layout-wrapper>.o-editorial-layout-heading-1+p,.o-editorial-layout-heading-1+.o-editorial-layout-body,.o-editorial-layout-wrapper>h1+ol,.o-editorial-layout-wrapper>h1+ul,.o-editorial-layout-wrapper>.o-editorial-layout-heading-1+ol,.o-editorial-layout-wrapper>.o-editorial-layout-heading-1+ul,.o-editorial-layout-wrapper>h2+blockquote,.o-editorial-layout-wrapper>h2+ol,.o-editorial-layout-wrapper>h2+ul,.o-editorial-layout-wrapper>h2+p,.o-editorial-layout-wrapper>h2+.o-editorial-layout-body,.o-editorial-layout-wrapper>.o-editorial-layout-heading-2+blockquote,.o-editorial-layout-wrapper>.o-editorial-layout-heading-2+ol,.o-editorial-layout-wrapper>.o-editorial-layout-heading-2+ul,.o-editorial-layout-wrapper>.o-editorial-layout-heading-2+p,.o-editorial-layout-heading-2+.o-editorial-layout-body,.o-editorial-layout-wrapper>h2+ol,.o-editorial-layout-wrapper>h2+ul,.o-editorial-layout-wrapper>.o-editorial-layout-heading-2+ol,.o-editorial-layout-wrapper>.o-editorial-layout-heading-2+ul,.o-editorial-layout-wrapper>h3+blockquote,.o-editorial-layout-wrapper>h3+ol,.o-editorial-layout-wrapper>h3+ul,.o-editorial-layout-wrapper>h3+p,.o-editorial-layout-wrapper>h3+.o-editorial-layout-body,.o-editorial-layout-wrapper>.o-editorial-layout-heading-3+blockquote,.o-editorial-layout-wrapper>.o-editorial-layout-heading-3+ol,.o-editorial-layout-wrapper>.o-editorial-layout-heading-3+ul,.o-editorial-layout-wrapper>.o-editorial-layout-heading-3+p,.o-editorial-layout-heading-3+.o-editorial-layout-body,.o-editorial-layout-wrapper>h3+ol,.o-editorial-layout-wrapper>h3+ul,.o-editorial-layout-wrapper>.o-editorial-layout-heading-3+ol,.o-editorial-layout-wrapper>.o-editorial-layout-heading-3+ul,.o-editorial-layout-wrapper>h4+blockquote,.o-editorial-layout-wrapper>h4+ol,.o-editorial-layout-wrapper>h4+ul,.o-editorial-layout-wrapper>h4+p,.o-editorial-layout-wrapper>h4+.o-editorial-layout-body,.o-editorial-layout-wrapper>.o-editorial-layout-heading-4+blockquote,.o-editorial-layout-wrapper>.o-editorial-layout-heading-4+ol,.o-editorial-layout-wrapper>.o-editorial-layout-heading-4+ul,.o-editorial-layout-wrapper>.o-editorial-layout-heading-4+p,.o-editorial-layout-heading-4+.o-editorial-layout-body,.o-editorial-layout-wrapper>h4+ol,.o-editorial-layout-wrapper>h4+ul,.o-editorial-layout-wrapper>.o-editorial-layout-heading-4+ol,.o-editorial-layout-wrapper>.o-editorial-layout-heading-4+ul,.o-editorial-layout-wrapper>h5+blockquote,.o-editorial-layout-wrapper>h5+ol,.o-editorial-layout-wrapper>h5+ul,.o-editorial-layout-wrapper>h5+p,.o-editorial-layout-wrapper>h5+.o-editorial-layout-body,.o-editorial-layout-wrapper>.o-editorial-layout-heading-5+blockquote,.o-editorial-layout-wrapper>.o-editorial-layout-heading-5+ol,.o-editorial-layout-wrapper>.o-editorial-layout-heading-5+ul,.o-editorial-layout-wrapper>.o-editorial-layout-heading-5+p,.o-editorial-layout-heading-5+.o-editorial-layout-body,.o-editorial-layout-wrapper>h5+ol,.o-editorial-layout-wrapper>h5+ul,.o-editorial-layout-wrapper>.o-editorial-layout-heading-5+ol,.o-editorial-layout-wrapper>.o-editorial-layout-heading-5+ul{margin-top:4px}.o-editorial-layout-wrapper>h1+figure,.o-editorial-layout-heading-1+figure,.o-editorial-layout-wrapper>h1+ul,.o-editorial-layout-heading-1+ul,.o-editorial-layout-wrapper>h1+ol,.o-editorial-layout-heading-1+ol,.o-editorial-layout-wrapper>h1+aside,.o-editorial-layout-heading-1+aside,.o-editorial-layout-wrapper>h1+div,.o-editorial-layout-heading-1+div,.o-editorial-layout-wrapper>h2+figure,.o-editorial-layout-heading-2+figure,.o-editorial-layout-wrapper>h2+ul,.o-editorial-layout-heading-2+ul,.o-editorial-layout-wrapper>h2+ol,.o-editorial-layout-heading-2+ol,.o-editorial-layout-wrapper>h2+aside,.o-editorial-layout-heading-2+aside,.o-editorial-layout-wrapper>h2+div,.o-editorial-layout-heading-2+div,.o-editorial-layout-wrapper>h3+figure,.o-editorial-layout-heading-3+figure,.o-editorial-layout-wrapper>h3+ul,.o-editorial-layout-heading-3+ul,.o-editorial-layout-wrapper>h3+ol,.o-editorial-layout-heading-3+ol,.o-editorial-layout-wrapper>h3+aside,.o-editorial-layout-heading-3+aside,.o-editorial-layout-wrapper>h3+div,.o-editorial-layout-heading-3+div,.o-editorial-layout-wrapper>h4+figure,.o-editorial-layout-heading-4+figure,.o-editorial-layout-wrapper>h4+ul,.o-editorial-layout-heading-4+ul,.o-editorial-layout-wrapper>h4+ol,.o-editorial-layout-heading-4+ol,.o-editorial-layout-wrapper>h4+aside,.o-editorial-layout-heading-4+aside,.o-editorial-layout-wrapper>h4+div,.o-editorial-layout-heading-4+div,.o-editorial-layout-wrapper>h5+figure,.o-editorial-layout-heading-5+figure,.o-editorial-layout-wrapper>h5+ul,.o-editorial-layout-heading-5+ul,.o-editorial-layout-wrapper>h5+ol,.o-editorial-layout-heading-5+ol,.o-editorial-layout-wrapper>h5+aside,.o-editorial-layout-heading-5+aside,.o-editorial-layout-wrapper>h5+div,.o-editorial-layout-heading-5+div{margin-top:16px}.o-editorial-layout-heading-1{color:#33302e;font-family:FinancierDisplayWeb, serif;font-size:28px;line-height:32px;font-weight:400}@media(min-width: 30.625em){.o-editorial-layout-heading-1{font-size:32px;line-height:32px}}@media(min-width: 61.25em){.o-editorial-layout-heading-1{font-size:40px;line-height:40px}}.o-typography--loading-display .o-editorial-layout-heading-1{font-size:25.2px;font-family:serif}@media(min-width: 30.625em){.o-typography--loading-display .o-editorial-layout-heading-1{font-size:28.8px}}@media(min-width: 61.25em){.o-typography--loading-display .o-editorial-layout-heading-1{font-size:36px}}.o-editorial-layout-heading-2{color:#33302e;font-family:MetricWeb, sans-serif;font-size:28px;line-height:32px;font-weight:600}.o-typography--loading-sans-bold .o-editorial-layout-heading-2{font-size:23.24px;font-family:sans-serif}.o-editorial-layout-heading-3{color:#33302e;font-family:MetricWeb, sans-serif;font-size:28px;line-height:32px;font-weight:400}.o-typography--loading-sans .o-editorial-layout-heading-3{font-size:24.36px;font-family:sans-serif}.o-editorial-layout-heading-4{color:#33302e;font-family:MetricWeb, sans-serif;font-size:24px;line-height:28px;font-weight:400}.o-typography--loading-sans .o-editorial-layout-heading-4{font-size:20.88px;font-family:sans-serif}.o-editorial-layout-heading-5{color:#33302e;font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;font-weight:400;text-transform:uppercase;letter-spacing:.5px}.o-typography--loading-sans .o-editorial-layout-heading-5{font-size:13.92px;font-family:sans-serif}.o-editorial-layout-body{font-family:Georgia,serif;font-size:18px;line-height:1.6;color:#33302e}@media(min-width: 76.25em){.o-editorial-layout-body{font-size:20px;line-height:1.6}}.o-editorial-layout-wrapper>h1{color:#33302e;font-family:FinancierDisplayWeb, serif;font-size:28px;line-height:32px;font-weight:400}@media(min-width: 30.625em){.o-editorial-layout-wrapper>h1{font-size:32px;line-height:32px}}@media(min-width: 61.25em){.o-editorial-layout-wrapper>h1{font-size:40px;line-height:40px}}.o-typography--loading-display .o-editorial-layout-wrapper>h1{font-size:25.2px;font-family:serif}@media(min-width: 30.625em){.o-typography--loading-display .o-editorial-layout-wrapper>h1{font-size:28.8px}}@media(min-width: 61.25em){.o-typography--loading-display .o-editorial-layout-wrapper>h1{font-size:36px}}.o-editorial-layout-wrapper>h2{color:#33302e;font-family:MetricWeb, sans-serif;font-size:28px;line-height:32px;font-weight:600}.o-typography--loading-sans-bold .o-editorial-layout-wrapper>h2{font-size:23.24px;font-family:sans-serif}.o-editorial-layout-wrapper>h3{color:#33302e;font-family:MetricWeb, sans-serif;font-size:28px;line-height:32px;font-weight:400}.o-typography--loading-sans .o-editorial-layout-wrapper>h3{font-size:24.36px;font-family:sans-serif}.o-editorial-layout-wrapper>h4{color:#33302e;font-family:MetricWeb, sans-serif;font-size:24px;line-height:28px;font-weight:400}.o-typography--loading-sans .o-editorial-layout-wrapper>h4{font-size:20.88px;font-family:sans-serif}.o-editorial-layout-wrapper>h5{color:#33302e;font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;font-weight:400;text-transform:uppercase;letter-spacing:.5px}.o-typography--loading-sans .o-editorial-layout-wrapper>h5{font-size:13.92px;font-family:sans-serif}.o-editorial-layout-wrapper>blockquote,.o-editorial-layout-wrapper>ol,.o-editorial-layout-wrapper>ul,.o-editorial-layout-wrapper>p{font-family:Georgia,serif;font-size:18px;line-height:1.6;color:#33302e}@media(min-width: 76.25em){.o-editorial-layout-wrapper>blockquote,.o-editorial-layout-wrapper>ol,.o-editorial-layout-wrapper>ul,.o-editorial-layout-wrapper>p{font-size:20px;line-height:1.6}}.o-editorial-layout-wrapper>ol{counter-reset:item}.o-editorial-layout-wrapper>ol>li:before{font-weight:600;content:counter(item);counter-increment:item;font-feature-settings:"tnum";transform:scale(0.8888888889);margin-left:-0.1422222222ch}.o-editorial-layout-wrapper>ul>li:before{content:"\2022";color:inherit;transform:scale(1.5555555556);margin-top:-0.2488888889ch}.o-editorial-layout-wrapper>footer{font-family:MetricWeb, sans-serif;font-size:18px;line-height:24px;color:#33302e}.o-typography--loading-sans .o-editorial-layout-wrapper>footer{font-size:15.66px;font-family:sans-serif}.o-editorial-layout-wrapper>figure>figcaption,.o-editorial-layout-wrapper>figcaption{font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;color:#33302e}.o-typography--loading-sans .o-editorial-layout-wrapper>figure>figcaption,.o-typography--loading-sans .o-editorial-layout-wrapper>figcaption{font-size:12.18px;font-family:sans-serif}.o-editorial-layout-wrapper>blockquote{margin-bottom:28px;max-width:56.25ch}.o-editorial-layout-wrapper>p a,.o-editorial-layout-wrapper>a{text-decoration:none;cursor:pointer;border-bottom:.25ex solid;color:#0d7680;border-bottom-color:#cfd8d1;text-decoration-color:#cfd8d1}@supports(text-decoration-thickness: 0.25ex){.o-editorial-layout-wrapper>p a,.o-editorial-layout-wrapper>a{border-bottom:0;text-decoration-thickness:.25ex;text-decoration-line:underline}}.o-editorial-layout-wrapper>p a:hover,.o-editorial-layout-wrapper>a:hover{color:#08474d;border-bottom-color:#9ec0bd;text-decoration-color:#9ec0bd}.o-editorial-layout-wrapper>p a:focus,.o-editorial-layout-wrapper>a:focus{border-bottom-color:transparent;text-decoration-color:transparent;color:#08474d}.o-editorial-layout-wrapper>p strong,.o-editorial-layout-wrapper>strong{font-weight:700}.o-editorial-layout-wrapper>p em,.o-editorial-layout-wrapper>em,.o-editorial-layout-wrapper>p i,.o-editorial-layout-wrapper>i{font-style:italic}.o-editorial-layout-wrapper>p sup{font-family:MetricWeb, sans-serif;font-size:.666em;position:static;vertical-align:super;line-height:0;display:inline-block;margin-top:-1em}.o-editorial-layout-wrapper>p sub{font-family:MetricWeb, sans-serif;font-size:.666em;position:static;vertical-align:sub;line-height:0;display:inline-block;margin-bottom:-1em}html:before{display:none;content:'{"layouts": {"S": "490px", "M": "740px", "L": "980px", "XL": "1220px"}}'}html,body{margin:0;text-rendering:optimizeLegibility;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-reduced-motion: reduce){html *,html *:before,html *:after,body *,body *:before,body *:after{animation-duration:.001s !important;transition-duration:.001s !important;animation-iteration-count:1 !important}}main{display:block}body:not(.js-focus-visible) :focus,html:not(.js-focus-visible) :focus{outline:2px solid #807973}body:not(.js-focus-visible) input:focus,body:not(.js-focus-visible) textarea:focus,body:not(.js-focus-visible) select:focus,html:not(.js-focus-visible) input:focus,html:not(.js-focus-visible) textarea:focus,html:not(.js-focus-visible) select:focus{box-shadow:0 0 0 1px #807973}body.js-focus-visible .focus-visible,html.js-focus-visible .focus-visible{outline:2px solid #807973}body.js-focus-visible input.focus-visible,body.js-focus-visible textarea.focus-visible,body.js-focus-visible select.focus-visible,html.js-focus-visible input.focus-visible,html.js-focus-visible textarea.focus-visible,html.js-focus-visible select.focus-visible{box-shadow:0 0 0 1px #807973}body.js-focus-visible :focus:not(.focus-visible),html.js-focus-visible :focus:not(.focus-visible){outline:0}:focus-visible,body:not(.js-focus-visible) :focus,html:not(.js-focus-visible) :focus{outline:unset}:focus-visible,body:not(.js-focus-visible) input:focus,html:not(.js-focus-visible) input:focus,body:not(.js-focus-visible) textarea:focus,html:not(.js-focus-visible) textarea:focus,body:not(.js-focus-visible) select:focus,html:not(.js-focus-visible) select:focus{box-shadow:unset}body:not(.js-focus-visible) :focus-visible,html:not(.js-focus-visible) :focus-visible,:focus-visible{outline:2px solid #807973}body:not(.js-focus-visible) input:focus-visible,html:not(.js-focus-visible) input:focus-visible,body:not(.js-focus-visible) textarea:focus-visible,html:not(.js-focus-visible) textarea:focus-visible,body:not(.js-focus-visible) select:focus-visible,html:not(.js-focus-visible) select:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{box-shadow:0 0 0 1px #807973}html:focus,body:focus,[readonly]:focus{outline:none}a{background-color:transparent}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:0;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}dfn{font-style:italic}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}optgroup{font-weight:bold}button,input,select{overflow:visible}button,input,select,textarea{margin:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{cursor:pointer}[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto}.o-normalise-clearfix{zoom:1}.o-normalise-clearfix:before,.o-normalise-clearfix:after{content:"";display:table;display:flex}.o-normalise-clearfix:after{clear:both}.o-normalise-visually-hidden{position:absolute;clip:rect(0 0 0 0);clip-path:polygon(0 0, 0 0);margin:-1px;border:0;overflow:hidden;padding:0;width:2px;height:2px;white-space:nowrap}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}html,body{background-color:#fff1e5;font-family:MetricWeb,sans-serif;margin:0;padding:0}main{display:block}.core .o--if-js,.enhanced .o--if-no-js,.is-next .hide-next,.is-falcon .hide-falcon,.is-loggedin .hide-loggedin,.is-anonymous .hide-anonymous{display:none !important}.show-loggedin,.show-anonymous,.show-next,.show-falcon,.hide-falcon,.hide-next,.hide-loggedin,.hide-anonymous{display:none}.is-loggedin .show-loggedin,.is-anonymous .show-anonymous,.is-next .show-next,.is-falcon .show-falcon,.is-falcon .hide-next,.is-next .hide-falcon{display:inherit}body{background:#fff1e5;margin:0;border:0;font-family:MetricWeb,sans-serif}.article-head{margin-top:18px;margin-bottom:0}.graphic{display:block;max-width:100%;margin:0;padding:0;box-sizing:border-box;width:100%}.graphic>img,.graphic>svg{width:100%;height:auto;display:block}.graphic-b-0{max-width:625px}.graphic-b-1{max-width:700px}.dark{background-color:#262a33}.dark body{background-color:inherit}.dark .pink{background:#fff1e5;padding:1em 0}@media(min-width: 46.25em){.dark .pink{padding:2em 0}}.dark .article .o-editorial-typography-topic,.dark .article .o-editorial-typography-author{color:#fff}.dark .article .o-editorial-typography-topic:hover,.dark .article .o-editorial-typography-author:hover{color:#c4c5c8}.dark .article h1,.dark .article h2,.dark .article h3,.dark .article h4,.dark .article h5,.dark .article h6{color:#fff}.dark .article .o-editorial-typography-standfirst{color:#c4c5c8}.dark .article .o-editorial-typography-standfirst a{color:#fff;border-bottom:2px solid #c4c5c8}.dark .article .o-editorial-typography-standfirst a:hover{border-bottom:2px solid #fff}.dark .article p,.dark .article .o-date,.dark .article .byline,.dark .article small{color:#c4c5c8}.dark .article figcaption,.dark .article figcaption a,.dark .article footer small a{color:#979797}.dark .article p a{color:#fff;border-bottom:2px solid #c4c5c8}.dark .article p a:hover{color:#fff;border-bottom:2px solid #fff}.dark .article p a:focus{color:#fff;border-bottom-color:transparent}.dark .article p{font-family:Georgia,serif;font-size:18px;line-height:1.6}@media(min-width: 76.25em){.dark .article p{font-size:20px;line-height:1.6}}.dark .article ol li,.dark .article ul li{font-family:Georgia,serif;font-size:18px;line-height:28px;color:#c4c5c8}.dark .article ol li::before,.dark .article ul li::before{color:#c4c5c8 !important}.dark .onward-journey a,.dark .onward-journey h2{color:#fff}.dark .onward-journey a:hover,.dark .onward-journey h2:hover{color:#c4c5c8}.dark .onward-journey a:focus,.dark .onward-journey h2:focus{color:#c4c5c8}.dark .onward-journey a:visited,.dark .onward-journey h2:visited{color:#fff}.dark .onward-journey .o-date{color:#c4c5c8}
.o-icons-icon{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline}.o-icons-icon--arrow-down{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--arrow-down{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--arrow-down{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--arrow-left{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-left?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--arrow-left{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-left?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--arrow-left{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-left?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--arrow-right{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--arrow-right{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--arrow-right{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-right?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--arrow-up{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-up?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--arrow-up{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-up?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--arrow-up{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-up?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--arrows-left-right{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrows-left-right?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--arrows-left-right{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrows-left-right?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--arrows-left-right{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrows-left-right?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--arrows-up-down{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrows-up-down?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--arrows-up-down{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrows-up-down?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--arrows-up-down{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrows-up-down?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--audio{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:audio?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--audio{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:audio?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--audio{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:audio?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--book{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:book?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--book{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:book?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--book{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:book?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--bookmark-outline{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:bookmark-outline?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--bookmark-outline{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:bookmark-outline?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--bookmark-outline{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:bookmark-outline?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--bookmark{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:bookmark?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--bookmark{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:bookmark?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--bookmark{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:bookmark?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--circle{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:circle?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--circle{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:circle?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--circle{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:circle?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--corporate{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:corporate?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--corporate{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:corporate?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--corporate{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:corporate?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--cross{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:cross?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--cross{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:cross?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--cross{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:cross?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--data{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:data?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--data{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:data?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--data{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:data?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--dollar{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:dollar?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--dollar{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:dollar?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--dollar{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:dollar?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--download{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:download?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--download{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:download?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--download{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:download?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--edit{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:edit?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--edit{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:edit?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--edit{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:edit?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--first{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:first?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--first{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:first?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--first{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:first?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--gift{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:gift?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--gift{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:gift?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--gift{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:gift?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--grid{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:grid?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--grid{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:grid?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--grid{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:grid?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--hamburger{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:hamburger?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--hamburger{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:hamburger?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--hamburger{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:hamburger?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--info{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:info?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--info{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:info?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--info{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:info?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--ipad{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:ipad?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--ipad{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:ipad?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--ipad{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:ipad?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--label-outline{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:label-outline?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--label-outline{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:label-outline?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--label-outline{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:label-outline?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--label{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:label?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--label{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:label?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--label{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:label?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--last{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:last?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--last{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:last?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--last{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:last?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--link{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:link?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--link{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:link?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--link{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:link?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--list{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:list?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--list{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:list?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--list{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:list?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--lock{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:lock?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--lock{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:lock?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--lock{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:lock?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--mail{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mail?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--mail{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mail?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--mail{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mail?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--minus{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--minus{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--minus{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--more{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:more?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--more{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:more?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--more{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:more?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--mute-notifications{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mute-notifications?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--mute-notifications{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mute-notifications?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--mute-notifications{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mute-notifications?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--mute{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mute?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--mute{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mute?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--mute{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:mute?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--newspaper{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:newspaper?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--newspaper{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:newspaper?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--newspaper{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:newspaper?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--notifications{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:notifications?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--notifications{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:notifications?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--notifications{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:notifications?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--outside-page{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--outside-page{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--outside-page{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:outside-page?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--pause{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--phone{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:phone?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--phone{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:phone?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--phone{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:phone?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--pin{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pin?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--pin{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pin?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--pin{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pin?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--play{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--plus{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:plus?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--plus{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:plus?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--plus{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:plus?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--podcast{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:podcast?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--podcast{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:podcast?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--podcast{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:podcast?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--print{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:print?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--print{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:print?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--print{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:print?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--refresh{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:refresh?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--refresh{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:refresh?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--refresh{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:refresh?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--restore{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:restore?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--restore{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:restore?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--restore{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:restore?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--scroll-to{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:scroll-to?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--scroll-to{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:scroll-to?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--scroll-to{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:scroll-to?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--search{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--search{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--search{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:search?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--series{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:series?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--series{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:series?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--series{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:series?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--settings{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:settings?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--settings{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:settings?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--settings{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:settings?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--share{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:share?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--share{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:share?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--share{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:share?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--skip-backward-30{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:skip-backward-30?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--skip-backward-30{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:skip-backward-30?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--skip-backward-30{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:skip-backward-30?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--skip-forward-30{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:skip-forward-30?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--skip-forward-30{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:skip-forward-30?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--skip-forward-30{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:skip-forward-30?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--speech-left{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech-left?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--speech-left{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech-left?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--speech-left{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech-left?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--speech-right{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech-right?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--speech-right{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech-right?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--speech-right{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech-right?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--speech{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--speech{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--speech{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:speech?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--stop{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:stop?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--stop{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:stop?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--stop{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:stop?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--tick{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--tick{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--tick{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--trash{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:trash?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--trash{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:trash?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--trash{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:trash?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--upload{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:upload?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--upload{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:upload?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--upload{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:upload?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--user{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:user?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--user{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:user?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--user{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:user?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--users{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:users?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--users{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:users?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--users{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:users?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--video{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:video?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--video{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:video?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--video{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:video?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--warning-alt{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:warning-alt?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--warning-alt{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:warning-alt?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--warning-alt{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:warning-alt?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--warning{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:warning?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--warning{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:warning?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--warning{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:warning?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-icons-icon--written-text{width:128px;height:128px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:written-text?source=ig-projects&format=svg")}@media screen and (-ms-high-contrast: active){.o-icons-icon--written-text{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:written-text?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-icons-icon--written-text{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:written-text?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-forms-input--valid *:valid:not(button):not(:disabled){color:#007a3e;border-color:#007a3e}*:invalid{box-shadow:none}.o-forms-input__error{display:none}.o-forms-input--invalid *:invalid:not(:disabled){color:#c00;border-color:#c00}.o-forms-input--invalid *:invalid:not(:disabled)+.o-forms-input__label:before,.o-forms-input--invalid *:invalid:not(:disabled)+.o-forms-input__label:after{border-color:#c00}.o-forms-input--invalid .o-forms-input__error{font-size:14px;line-height:16px;color:#c00;display:block;position:relative;margin-top:4px;margin-bottom:-20px}.o-typography--loading-sans .o-forms-input--invalid .o-forms-input__error{font-size:12.18px}.o-forms-field,.o-forms-title,.o-forms-input{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px}.o-typography--loading-sans .o-forms-field,.o-typography--loading-sans .o-forms-title,.o-typography--loading-sans .o-forms-input{font-size:13.92px;font-family:sans-serif}.o-forms-field{display:flex;flex-direction:column;margin-bottom:24px;position:relative}.o-forms-field label{display:block;margin:0 0 12px;position:relative}.o-forms-field label:last-of-type{margin-bottom:0}.o-forms-field--optional .o-forms-title__main:after{font-size:14px;line-height:16px;content:"(optional)";color:#66605c;font-weight:400;margin-left:4px}.o-typography--loading-sans .o-forms-field--optional .o-forms-title__main:after{font-size:12.18px}.o-forms-title__main{font-weight:600;display:block}.o-forms-title__prompt{font-size:14px;line-height:16px;color:#66605c;display:block}.o-typography--loading-sans .o-forms-title__prompt{font-size:12.18px}.o-forms-input{margin-top:12px}.o-forms-input input{border-radius:0;appearance:none}.o-forms-input--checkbox input[type=checkbox]{z-index:1;opacity:0;cursor:pointer;position:absolute;padding:0;width:24px;height:24px}.o-forms-input--checkbox input[type=checkbox]:checked~.o-forms-input__label:after{opacity:1}.o-forms-input--checkbox input[type=checkbox]:disabled{opacity:0}.o-forms-input--checkbox input[type=checkbox]:disabled~.o-forms-input__label{opacity:.4}.o-forms-input--checkbox input[type=checkbox]:focus+.o-forms-input__label:before{border-color:#807973;box-shadow:0 0 0 2px #807973;outline:none}.o-forms-input--checkbox input[type=checkbox]:indeterminate+.o-forms-input__label:after{display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:24px;height:24px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");background-color:#0d7680;opacity:1}@media screen and (-ms-high-contrast: active){.o-forms-input--checkbox input[type=checkbox]:indeterminate+.o-forms-input__label:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-forms-input--checkbox input[type=checkbox]:indeterminate+.o-forms-input__label:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:minus?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-forms-input--checkbox .o-forms-input__label{display:inline-block;padding:2px 0 0 38px;vertical-align:top}.o-forms-input--checkbox .o-forms-input__label:before{content:"";cursor:pointer;position:absolute;top:0;left:0;width:24px;height:24px;box-sizing:border-box;border:1px solid #807973;background-color:#fff}.o-forms-input--checkbox .o-forms-input__label:after{content:"";cursor:pointer;position:absolute;top:0;left:0;width:24px;height:24px;box-sizing:border-box;display:inline-block;background-repeat:no-repeat;background-size:contain;background-position:50%;background-color:transparent;vertical-align:baseline;width:24px;height:24px;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");background-color:#0d7680;opacity:0;transition:opacity .1s ease}@media screen and (-ms-high-contrast: active){.o-forms-input--checkbox .o-forms-input__label:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-forms-input--checkbox .o-forms-input__label:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:tick?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-forms-input--checkbox .o-forms-input__label+.o-forms-input__label{padding-top:12px}.o-forms-input--date label{display:flex;float:left;flex-direction:column-reverse;margin-bottom:0}.o-forms-input--date input[type=text]{font-family:inherit;font-size:inherit;background-color:#fff;border:1px solid #807973;box-sizing:border-box;min-height:40px;padding:8px;width:100%;display:block;margin:4px 12px 0 0}.o-forms-input--date input[type=text]:disabled{cursor:default;color:#66605c;background-color:#e6d9ce;border-color:#e6d9ce;-webkit-text-fill-color:currentColor;opacity:1}.o-forms-input--date input[type=text].o-forms-input__day-part,.o-forms-input--date input[type=text].o-forms-input__month-part,.o-forms-input--date input[type=text][pattern$="{2}"],.o-forms-input--date input[type=text][pattern$="[012]"]{width:calc(2.2ch + 1em)}.o-forms-input--date input[type=text].o-forms-input__year-part,.o-forms-input--date input[type=text][pattern$="{4}"]{width:calc(4.2ch + 1em)}.o-forms-input--date .o-forms-input__error{padding-top:4px;clear:both}.o-forms-input--radio-box{border-color:#807973}.o-forms-input--radio-box .o-forms-input--radio-box__container{background-color:transparent}.o-forms-input--radio-box .o-forms-input--radio-box__container,.o-forms-input--radio-box label:not(:first-of-type){border-color:#807973}.o-forms-input--radio-box input[type=radio]+.o-forms-input__label{color:#0d7680}.o-forms-input--radio-box input[type=radio]:not(:checked):not(:disabled):hover+.o-forms-input__label{background-color:rgba(13,118,128,.15)}.o-forms-input--radio-box input[type=radio]:focus+.o-forms-input__label{border-color:#807973;box-shadow:0 0 0 2px #807973;outline:none}.o-forms-input--radio-box input[type=radio]:checked+.o-forms-input__label{background-color:#0d7680;color:#fff}.o-forms-input--radio-box input[type=radio]:checked+.o-forms-input__label.o-forms-input__label--negative{background-color:#08474d}.o-forms-input--radio-box .o-forms-input--radio-box__container{font-size:14px;line-height:unset;font-weight:600;box-sizing:border-box;border:1px solid #807973;display:inline-flex;flex-wrap:wrap;text-align:center;padding:2px}.o-typography--loading-sans-bold .o-forms-input--radio-box .o-forms-input--radio-box__container{font-size:11.62px}.o-forms-input--radio-box.o-forms-input--invalid .o-forms-input--radio-box__container{border-color:#c00}.o-forms-input--radio-box label{display:inline-flex;flex-grow:1;cursor:pointer;margin:0;min-height:28px;min-width:8ch}.o-forms-input--radio-box label:not(:first-of-type){border-left:1px solid #807973}.o-forms-input--radio-box label .o-forms-input__label{box-sizing:border-box;padding:4px 8px;transition:.3s background-color,.15s color ease-out;width:100%;height:100%;display:inline-flex;align-items:center;justify-content:center}.o-forms-input--radio-box input[type=radio]{position:absolute;opacity:0;z-index:1;width:100%;height:100%;cursor:pointer}.o-forms-input--radio-box input[type=radio]:disabled+.o-forms-input__label{cursor:default;opacity:.4}@media(min-width: 30.625em){.o-forms-input--radio-box.o-forms-input--inline .o-forms-input__state{position:relative;margin-bottom:0}}.o-forms-input--radio-box .o-forms-input__state{position:relative;margin-bottom:-22px}.o-forms-input--select.o-forms-input--small select{font-size:14px;line-height:1.65;min-height:28px;padding:0 8px}.o-typography--loading-sans .o-forms-input--select.o-forms-input--small select{font-size:12.18px}.o-forms-input--select select{font-family:inherit;font-size:inherit;background-color:#fff;border:1px solid #807973;box-sizing:border-box;min-height:40px;padding:8px;width:100%;background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&format=svg");appearance:none;background-repeat:no-repeat;background-size:24px 24px;border-radius:0;background-clip:padding-box;color:#33302e;cursor:pointer;outline:none;background-position:right center;background-position:right 8px center}.o-forms-input--select select:disabled{cursor:default;color:#66605c;background-color:#e6d9ce;border-color:#e6d9ce;-webkit-text-fill-color:currentColor;opacity:1}@media screen and (-ms-high-contrast: active){.o-forms-input--select select{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-forms-input--select select{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-forms-input--select select::-ms-expand{color:#fff;display:none}.o-forms-input--select select:disabled{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%2366605C,%2366605C&format=svg")}@media screen and (-ms-high-contrast: active){.o-forms-input--select select:disabled{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23ffffff,%23ffffff&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-forms-input--select select:disabled{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:arrow-down?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-forms-input--select select[multiple]{background-image:none}.o-forms-input--toggle .o-forms-input__label{display:inline-block;padding:2px 0 2px 44px;vertical-align:top}.o-forms-input--toggle .o-forms-input__label:before,.o-forms-input--toggle .o-forms-input__label:after{content:"";cursor:pointer;position:absolute;top:0;left:0}.o-forms-input--toggle .o-forms-input__label:before{background-color:#000;border-radius:40px;height:24px;width:40px}.o-forms-input--toggle .o-forms-input__label:after{background-color:#fff1e5;border:2px solid #33302e;border-radius:50%;box-sizing:border-box;height:24px;width:24px;transition:left 75ms ease-in-out}.o-forms-input--toggle input[type=checkbox]:checked+.o-forms-input__label:before{background-color:#0d7680}.o-forms-input--toggle input[type=checkbox]:checked+.o-forms-input__label:after{left:16px;border-color:#0d7680}.o-forms-input--toggle input[type=checkbox]:invalid:not(:disabled)+.o-forms-input__label:after{border-color:inherit}.o-forms-input--toggle input[type=checkbox]:disabled+.o-forms-input__label{color:#66605c}.o-forms-input--toggle input[type=checkbox]:disabled+.o-forms-input__label:after{border-color:#ccc1b7;background-color:#999189}.o-forms-input--toggle input[type=checkbox]:disabled+.o-forms-input__label:before{background-color:#ccc1b7}@media(min-width: 30.625em){.o-forms-field--inline{flex-direction:row;justify-content:space-between}.o-forms-field--inline .o-forms-title{flex:0 1 50%;margin-right:12px;box-sizing:border-box}.o-forms-field--inline .o-forms-title.o-forms-title--shrink{flex-basis:auto}.o-forms-field--inline .o-forms-title.o-forms-title--vertical-center{align-self:center}.o-forms-field--inline .o-forms-input{display:flex;flex-direction:column;flex:1 0 50%;align-items:flex-start;margin:0}.o-forms-input.o-forms-input--inline{display:flex;flex-flow:row wrap}.o-forms-input.o-forms-input--inline label{margin:0 16px 12px 0;max-width:75%}.o-forms-input.o-forms-input--inline.o-forms-input--date label,.o-forms-input.o-forms-input--inline.o-forms-input--radio-box label{margin:0}}.o-buttons{font-family:MetricWeb, sans-serif;font-weight:600;font-family:MetricWeb, sans-serif;font-size:14px;line-height:16px;line-height:14px;background-size:21px 21px;min-height:28px;min-width:60px;padding:6px 8px;display:inline-block;box-sizing:border-box;vertical-align:middle;margin:0;border-style:solid;text-align:center;text-decoration:none;cursor:pointer;transition:.3s background-color,.15s color ease-out,.15s border-color ease-out;user-select:none;background-clip:border-box;border-width:1px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-appearance:none;-webkit-appearance:none;border-radius:0}.o-typography--loading-sans .o-buttons{font-size:12.18px;font-family:sans-serif}.o-buttons[disabled]{pointer-events:none;opacity:.4;cursor:default}.o-buttons--hide-disabled[disabled]{visibility:hidden}.o-buttons--big{font-family:MetricWeb, sans-serif;font-size:16px;line-height:20px;line-height:16px;background-size:40px 40px;min-height:40px;min-width:80px;padding:11px 20px}.o-typography--loading-sans .o-buttons--big{font-size:13.92px;font-family:sans-serif}.o-buttons-icon{background-repeat:no-repeat;background-position:3px;padding-left:24px}.o-buttons--big.o-buttons-icon{background-size:40px 40px;padding-left:40px}.o-buttons-icon.o-buttons-icon--icon-only{padding-left:0;background-position:50%;min-width:40px}.o-buttons-icon__label{position:absolute;clip:rect(0 0 0 0);clip-path:polygon(0 0, 0 0);margin:-1px;border:0;overflow:hidden;padding:0;width:2px;height:2px;white-space:nowrap}.o-buttons--primary{background-color:#0d7680;color:#fff;border-color:transparent}.o-buttons--primary:hover{background-color:#095259;color:#fff;border-color:transparent;text-decoration:none}.o-buttons--primary:focus{background-color:#095259;color:#fff;border-color:transparent}.o-buttons--primary[aria-selected=true],.o-buttons--primary[aria-current],.o-buttons--primary[aria-pressed=true],.o-buttons--primary:active{background-color:#052f33;color:#fff;border-color:transparent}.o-buttons--primary.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-buttons--primary.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-buttons--primary.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-buttons--primary.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-buttons--primary.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-buttons--primary.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-buttons--primary.o-buttons--mono{background-color:#262a33;color:#fff;border-color:transparent}.o-buttons--primary.o-buttons--mono:hover{background-color:#515257;color:#fff;border-color:transparent;text-decoration:none}.o-buttons--primary.o-buttons--mono:focus{background-color:#515257;color:#fff;border-color:transparent}.o-buttons--primary.o-buttons--mono[aria-selected=true],.o-buttons--primary.o-buttons--mono[aria-current],.o-buttons--primary.o-buttons--mono[aria-pressed=true],.o-buttons--primary.o-buttons--mono:active{background-color:#727071;color:#fff;border-color:transparent}.o-buttons--primary.o-buttons--mono.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-buttons--primary.o-buttons--mono.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-buttons--primary.o-buttons--mono.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-buttons--primary.o-buttons--mono.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}@media screen and (-ms-high-contrast: active){.o-buttons--primary.o-buttons--mono.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-buttons--primary.o-buttons--mono.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-buttons--secondary{background-color:transparent;color:#0d7680;border-color:#0d7680}.o-buttons--secondary:hover{background-color:rgba(13,118,128,.1);color:#0c707a;border-color:#0d7680;text-decoration:none}.o-buttons--secondary:focus{background-color:rgba(13,118,128,.1);color:#0c707a;border-color:#0d7680}.o-buttons--secondary[aria-selected=true],.o-buttons--secondary[aria-current],.o-buttons--secondary[aria-pressed=true],.o-buttons--secondary:active{background-color:#0d7680;color:#fff;border-color:#0d7680}.o-buttons--secondary.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%230D7680,%230D7680&format=svg")}.o-buttons--secondary.o-buttons-icon--play:hover{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%230C707A,%230C707A&format=svg")}.o-buttons--secondary.o-buttons-icon--play:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%230C707A,%230C707A&format=svg");content:" "}.o-buttons--secondary.o-buttons-icon--play:focus{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%230C707A,%230C707A&format=svg")}.o-buttons--secondary.o-buttons-icon--play[aria-selected=true],.o-buttons--secondary.o-buttons-icon--play[aria-current],.o-buttons--secondary.o-buttons-icon--play[aria-pressed=true],.o-buttons--secondary.o-buttons-icon--play:active{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}.o-buttons--secondary.o-buttons-icon--play:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");content:""}@media screen and (-ms-high-contrast: active){.o-buttons--secondary.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-buttons--secondary.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-buttons--secondary.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%230D7680,%230D7680&format=svg")}.o-buttons--secondary.o-buttons-icon--pause:hover{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%230C707A,%230C707A&format=svg")}.o-buttons--secondary.o-buttons-icon--pause:before{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%230C707A,%230C707A&format=svg");content:" "}.o-buttons--secondary.o-buttons-icon--pause:focus{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%230C707A,%230C707A&format=svg")}.o-buttons--secondary.o-buttons-icon--pause[aria-selected=true],.o-buttons--secondary.o-buttons-icon--pause[aria-current],.o-buttons--secondary.o-buttons-icon--pause[aria-pressed=true],.o-buttons--secondary.o-buttons-icon--pause:active{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}.o-buttons--secondary.o-buttons-icon--pause:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");content:""}@media screen and (-ms-high-contrast: active){.o-buttons--secondary.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-buttons--secondary.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-buttons--secondary.o-buttons--mono{background-color:transparent;color:#262a33;border-color:#262a33}.o-buttons--secondary.o-buttons--mono:hover{background-color:rgba(38,42,51,.15);color:#262a33;border-color:#262a33;text-decoration:none}.o-buttons--secondary.o-buttons--mono:focus{background-color:rgba(38,42,51,.15);color:#262a33;border-color:#262a33}.o-buttons--secondary.o-buttons--mono[aria-selected=true],.o-buttons--secondary.o-buttons--mono[aria-current],.o-buttons--secondary.o-buttons--mono[aria-pressed=true],.o-buttons--secondary.o-buttons--mono:active{background-color:#262a33;color:#fff;border-color:#262a33}.o-buttons--secondary.o-buttons--mono.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23262A33,%23262A33&format=svg")}.o-buttons--secondary.o-buttons--mono.o-buttons-icon--play[aria-selected=true],.o-buttons--secondary.o-buttons--mono.o-buttons-icon--play[aria-current],.o-buttons--secondary.o-buttons--mono.o-buttons-icon--play[aria-pressed=true],.o-buttons--secondary.o-buttons--mono.o-buttons-icon--play:active{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}.o-buttons--secondary.o-buttons--mono.o-buttons-icon--play:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");content:""}@media screen and (-ms-high-contrast: active){.o-buttons--secondary.o-buttons--mono.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-buttons--secondary.o-buttons--mono.o-buttons-icon--play{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:play?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-buttons--secondary.o-buttons--mono.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23262A33,%23262A33&format=svg")}.o-buttons--secondary.o-buttons--mono.o-buttons-icon--pause[aria-selected=true],.o-buttons--secondary.o-buttons--mono.o-buttons-icon--pause[aria-current],.o-buttons--secondary.o-buttons--mono.o-buttons-icon--pause[aria-pressed=true],.o-buttons--secondary.o-buttons--mono.o-buttons-icon--pause:active{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}.o-buttons--secondary.o-buttons--mono.o-buttons-icon--pause:after{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg");content:""}@media screen and (-ms-high-contrast: active){.o-buttons--secondary.o-buttons--mono.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23FFFFFF,%23FFFFFF&format=svg")}}@media screen and (-ms-high-contrast: black-on-white){.o-buttons--secondary.o-buttons--mono.o-buttons-icon--pause{background-image:url("https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:pause?source=ig-projects&tint=%23000000,%23000000&format=svg")}}.o-buttons-group{display:flex;flex-wrap:wrap}.o-buttons-group>.o-buttons{position:relative}.o-buttons-group>.o-buttons+.o-buttons{margin-left:-1px}@media(min-width: 46.25em){.split-paragraph{float:left;width:50%}}@media(min-width: 46.25em){.split-chart{box-sizing:border-box;float:left;padding-right:40px;width:50%}}@media(min-width: 46.25em){.split-chart--right{float:right;padding-left:40px;padding-right:0}}.sources{border-top:1px solid rgba(0,0,0,.2);clear:both;font-size:16px;line-height:20px;padding:22px 0 26px}@media(min-width: 61.25em){.sources{font-size:18px;line-height:22px;padding:33px 0 39px}}.sources__title{font-weight:600}.sources__text{color:#333;font-family:"MetricWeb",sans-serif;margin-top:0;margin-bottom:20px}.sources .credits{color:#333;font-family:"MetricWeb",sans-serif;margin-bottom:0}.sources .credits a{text-decoration:none;cursor:pointer;border-bottom:.25ex solid;color:#0d7680;border-bottom-color:#cfd8d1;text-decoration-color:#cfd8d1;font-weight:600}@supports(text-decoration-thickness: 0.25ex){.sources .credits a{border-bottom:0;text-decoration-thickness:.25ex;text-decoration-line:underline}}.sources .credits a:hover{color:#08474d;border-bottom-color:#9ec0bd;text-decoration-color:#9ec0bd}.sources .credits a:focus{border-bottom-color:transparent;text-decoration-color:transparent;color:#08474d}.g-epilogue-copyright{color:#66605c;margin-bottom:24px;margin-top:0}@media(min-width: 46.25em){.g-epilogue-copyright{margin-left:auto;margin-right:auto;width:90%}}@media(min-width: 61.25em){.g-epilogue-copyright{width:88.6%}}@media(min-width: 76.25em){.g-epilogue-copyright{width:680px}}.g-epilogue-copyright a{text-decoration:none;cursor:pointer;border-bottom:.25ex solid;color:#0d7680;border-bottom-color:#cfd8d1;text-decoration-color:#cfd8d1}@supports(text-decoration-thickness: 0.25ex){.g-epilogue-copyright a{border-bottom:0;text-decoration-thickness:.25ex;text-decoration-line:underline}}.g-epilogue-copyright a:hover{color:#08474d;border-bottom-color:#9ec0bd;text-decoration-color:#9ec0bd}.g-epilogue-copyright a:focus{border-bottom-color:transparent;text-decoration-color:transparent;color:#08474d}.content-heading,.o-editorial-layout-wrapper>h2.content-heading{font-weight:400;margin-bottom:28px}.content-subheading,.o-editorial-layout-wrapper>h3.content-subheading{color:#000;font-weight:400;font-size:24px;line-height:26px}.break-out-full-width{overflow:hidden;position:relative}.sticky-header-wrapper+.break-out-full-width .yield-curve{margin-top:0}.break-out-full-width+.content-heading{margin-top:0}@media(min-width: 61.25em){.break-out-full-width{position:relative;width:100vw;margin-left:-50vw;left:50%}}.break-out-full-width__wrapper{width:100%}@media(min-width: 61.25em){.break-out-full-width__wrapper{box-sizing:border-box;margin-left:auto;margin-right:auto;min-width:240px;position:relative;max-width:1220px;padding-left:20px;padding-right:20px}}.chart-subtitle,.o-editorial-layout-wrapper>h4.chart-subtitle{color:#4d4845;font-family:MetricWeb;font-weight:400;font-size:18px;line-height:20px}.yield-curve__title+.chart-subtitle,.yield-curve__title+.o-editorial-layout-wrapper>h4.chart-subtitle{margin-top:41px}.chart-subtitle__select{display:inline-block;margin-left:3px;width:112px}.chart-subtitle__select--frequency{width:90px;margin-right:3px}.chart-subtitle__select--year{width:80px}.ios-message,.o-editorial-layout-wrapper>p.ios-message{background:#fff;border:1px solid #ccc1b7;font-family:MetricWeb;font-size:16px;line-height:20px;margin:32px 0 40px;padding:12px 10px 18px}.g-share{text-align:center;margin-bottom:26px}@media(min-width: 61.25em){.g-share{margin-bottom:40px}}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2hlYWRlci9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWhlYWRlci9zcmMvc2Nzcy9fYmFzZS5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvaGVhZGVyL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tZ3JpZC9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9oZWFkZXIvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1ub3JtYWxpc2Uvc3JjL3Njc3MvX21peGlucy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvaGVhZGVyL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL3Nhc3MtbXEvX21xLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9oZWFkZXIvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1oZWFkZXIvc3JjL3Njc3MvZmVhdHVyZXMvX3RvcC5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvaGVhZGVyL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28taGVhZGVyL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2hlYWRlci9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWljb25zL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2hlYWRlci9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWhlYWRlci9zcmMvc2Nzcy9mZWF0dXJlcy9fc3VibmF2LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9oZWFkZXIvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10eXBvZ3JhcGh5L3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2hlYWRlci9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWhlYWRlci9zcmMvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9oZWFkZXIvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1oZWFkZXIvc3JjL3Njc3MvZmVhdHVyZXMvX3NlYXJjaC5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvaGVhZGVyL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tYnV0dG9ucy9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9oZWFkZXIvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1oZWFkZXIvc3JjL3Njc3MvZmVhdHVyZXMvX25hdi5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvaGVhZGVyL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28taGVhZGVyL3NyYy9zY3NzL2ZlYXR1cmVzL19hbm9uLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9oZWFkZXIvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1oZWFkZXIvc3JjL3Njc3MvZmVhdHVyZXMvX2RyYXdlci5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvaGVhZGVyL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdmlzdWFsLWVmZmVjdHMvc3JjL3Njc3MvX3NoYWRvd3Muc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2hlYWRlci9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWhlYWRlci9zcmMvc2Nzcy9mZWF0dXJlcy9fbWVnYW1lbnUuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2hlYWRlci9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWhlYWRlci9zcmMvc2Nzcy9mZWF0dXJlcy9fc3RpY2t5LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9oZWFkZXIvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1oZWFkZXIvc3JjL3Njc3MvZmVhdHVyZXMvX3NpbXBsZS5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvaGVhZGVyL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28taGVhZGVyL3NyYy9zY3NzL2ZlYXR1cmVzL19zdWJicmFuZC5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvaGVhZGVyL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28taGVhZGVyL3NyYy9zY3NzL2ZlYXR1cmVzL190cmFuc3BhcmVudC5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvYWRzL3N0eWxlcy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvYWRzL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2Fkcy1sZWdhY3ktby1hZHMvbWFpbi5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvYWRzL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL3Nhc3MtbXEvX21xLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9vbndhcmRqb3VybmV5L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tbGFiZWxzL3NyYy9zY3NzL19wbGFjZWhvbGRlcnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL29ud2FyZGpvdXJuZXkvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10eXBvZ3JhcGh5L3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL29ud2FyZGpvdXJuZXkvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1lZGl0b3JpYWwtdHlwb2dyYXBoeS9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9vbndhcmRqb3VybmV5L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdGVhc2VyL21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL29ud2FyZGpvdXJuZXkvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10ZWFzZXIvc3JjL3Njc3MvZWxlbWVudHMvX2RlZmF1bHQuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL29ud2FyZGpvdXJuZXkvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10ZWFzZXIvc3JjL3Njc3MvX21peGlucy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvb253YXJkam91cm5leS9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLXRlYXNlci9zcmMvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9vbndhcmRqb3VybmV5L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdGVhc2VyL3NyYy9zY3NzL2VsZW1lbnRzL19pbWFnZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL29ud2FyZGpvdXJuZXkvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10ZWFzZXIvc3JjL3Njc3MvZWxlbWVudHMvX3RpbWVzdGFtcC5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvb253YXJkam91cm5leS9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWxhYmVscy9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9vbndhcmRqb3VybmV5L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdGVhc2VyL3NyYy9zY3NzL2VsZW1lbnRzL19wcm9tb3RlZC5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvb253YXJkam91cm5leS9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWljb25zL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL29ud2FyZGpvdXJuZXkvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10eXBvZ3JhcGh5L3NyYy9zY3NzL3VzZS1jYXNlcy9fZ2VuZXJhbC5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvb253YXJkam91cm5leS9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLW5vcm1hbGlzZS9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9vbndhcmRqb3VybmV5L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdGVhc2VyL3NyYy9zY3NzL2VsZW1lbnRzL19yZWxhdGVkLWl0ZW1zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9vbndhcmRqb3VybmV5L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL3Nhc3MtbXEvX21xLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9vbndhcmRqb3VybmV5L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdGVhc2VyL3NyYy9zY3NzL2VsZW1lbnRzL19zeW5kaWNhdGlvbi5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvb253YXJkam91cm5leS9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLXRlYXNlci9zcmMvc2Nzcy90aGVtZXMvX3NtYWxsLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9vbndhcmRqb3VybmV5L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdGVhc2VyL3NyYy9zY3NzL3RoZW1lcy9fbGFyZ2Uuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL29ud2FyZGpvdXJuZXkvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10ZWFzZXIvc3JjL3Njc3MvdGhlbWVzL19zdGFuZGFyZC5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvb253YXJkam91cm5leS9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLXRlYXNlci9zcmMvc2Nzcy90aGVtZXMvX3ZpZGVvLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9vbndhcmRqb3VybmV5L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdGVhc2VyL3NyYy9zY3NzL3RoZW1lcy9fYXVkaW8uc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL29ud2FyZGpvdXJuZXkvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10ZWFzZXIvc3JjL3Njc3MvdGhlbWVzL19oZXJvLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9vbndhcmRqb3VybmV5L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdGVhc2VyL3NyYy9zY3NzL3RoZW1lcy9fdG9wLXN0b3JpZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL29ud2FyZGpvdXJuZXkvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10ZWFzZXIvc3JjL3Njc3MvdGhlbWVzL19wYWNrYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9vbndhcmRqb3VybmV5L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdGVhc2VyL3NyYy9zY3NzL3RoZW1lcy9fbGl2ZS5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvb253YXJkam91cm5leS9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL29ud2FyZGpvdXJuZXkvc3R5bGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9jb21tZW50cy9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWNvbW1lbnRzL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2NvbW1lbnRzL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdHlwb2dyYXBoeS9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9jb21tZW50cy9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWJ1dHRvbnMvc3JjL3Njc3MvX21peGlucy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvY29tbWVudHMvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1pY29ucy9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9jb21tZW50cy9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLW5vcm1hbGlzZS9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9mb290ZXIvc3R5bGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9mb290ZXIvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1ncmlkL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2Zvb3Rlci9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9zYXNzLW1xL19tcS5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvZm9vdGVyL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tZm9vdGVyL21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2Zvb3Rlci9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLXR5cG9ncmFwaHkvc3JjL3Njc3MvX21peGlucy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvZm9vdGVyL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tZm9vdGVyL3NyYy9zY3NzL192YXJpYWJsZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2Zvb3Rlci9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWdyaWQvc3JjL3Njc3MvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvZm9vdGVyL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tZm9vdGVyL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2Zvb3Rlci9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWljb25zL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2Zvb3Rlci9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLW5vcm1hbGlzZS9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9hcnRpY2xlLWxheW91dC9zdHlsZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2FydGljbGUtbGF5b3V0L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tZ3JpZC9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9hcnRpY2xlLWxheW91dC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9zYXNzLW1xL19tcS5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvYXJ0aWNsZS1sYXlvdXQvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1ncmlkL21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2FydGljbGUtbGF5b3V0L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tZ3JpZC9zcmMvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9hcnRpY2xlLWxheW91dC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWZvbnRzL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2FydGljbGUtbGF5b3V0L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tZm9udHMvbWFpbi5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvYXJ0aWNsZS1sYXlvdXQvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10eXBvZ3JhcGh5L21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2FydGljbGUtbGF5b3V0L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdHlwb2dyYXBoeS9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9hcnRpY2xlLWxheW91dC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLXR5cG9ncmFwaHkvc3JjL3Njc3MvdXNlLWNhc2VzL19nZW5lcmFsLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9hcnRpY2xlLWxheW91dC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWljb25zL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2FydGljbGUtbGF5b3V0L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tbm9ybWFsaXNlL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2FydGljbGUtbGF5b3V0L25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdHlwb2dyYXBoeS9zcmMvc2Nzcy91c2UtY2FzZXMvX3dyYXBwZXIuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2VwaWxvZ3VlL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvZXBpbG9ndWUvc3R5bGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9zaGFyZS9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLXNoYXJlL21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL3NoYXJlL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tc2hhcmUvc3JjL3Njc3MvX21peGlucy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvc2hhcmUvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10eXBvZ3JhcGh5L3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL3NoYXJlL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tbm9ybWFsaXNlL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL3NoYXJlL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvc2hhcmUvc3R5bGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9zaGFyZS9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9zYXNzLW1xL19tcS5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvYnlsaW5lcy9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2J5bGluZXMvc3R5bGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXBwL2NvbXBvbmVudHMvbGFyZ2UtdG9wcGVyL2FwcC9jb21wb25lbnRzL2xhcmdlLXRvcHBlci9zdHlsZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvY29tcG9uZW50cy9sYXJnZS10b3BwZXIvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvc2Fzcy1tcS9fbXEuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL2RhdGEtc29uaWZpY2F0aW9uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvZGF0YS1zb25pZmljYXRpb24vc3R5bGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXBwL2NvbXBvbmVudHMvbGVnZW5kL2FwcC9jb21wb25lbnRzL2xlZ2VuZC9zdHlsZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvY29tcG9uZW50cy9sZWdlbmQvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvc2Fzcy1tcS9fbXEuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvY29tcG9uZW50cy9saW5lLWNoYXJ0L2FwcC9jb21wb25lbnRzL2xpbmUtY2hhcnQvc3R5bGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXBwL2NvbXBvbmVudHMveWllbGQtY3VydmUvYXBwL2NvbXBvbmVudHMveWllbGQtY3VydmUvc3R5bGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXBwL2NvbXBvbmVudHMveWllbGQtY3VydmUvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvc2Fzcy1tcS9fbXEuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvY29tcG9uZW50cy95aWVsZC1jdXJ2ZS9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWljb25zL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvY29tcG9uZW50cy9zdGlja3ktaGVhZGVyL2FwcC9jb21wb25lbnRzL3N0aWNreS1oZWFkZXIvc3R5bGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9zaGFyZWQvY3JpdGljYWwtcGF0aC5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvc2hhcmVkL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tZm9udHMvc3JjL3Njc3MvX21peGlucy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvc2hhcmVkL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tZm9udHMvbWFpbi5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvc2hhcmVkL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdHlwb2dyYXBoeS9tYWluLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9zaGFyZWQvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10eXBvZ3JhcGh5L3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL3NoYXJlZC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLXR5cG9ncmFwaHkvc3JjL3Njc3MvdXNlLWNhc2VzL19nZW5lcmFsLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9zaGFyZWQvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1pY29ucy9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9zaGFyZWQvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1ub3JtYWxpc2Uvc3JjL3Njc3MvX21peGlucy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvc2hhcmVkL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tdHlwb2dyYXBoeS9zcmMvc2Nzcy91c2UtY2FzZXMvX3dyYXBwZXIuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL3NoYXJlZC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWVkaXRvcmlhbC10eXBvZ3JhcGh5L21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL3NoYXJlZC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWVkaXRvcmlhbC10eXBvZ3JhcGh5L3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL3NoYXJlZC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9zYXNzLW1xL19tcS5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvc2hhcmVkL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tcXVvdGUvc3JjL3Njc3MvX3BsYWNlaG9sZGVycy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvc2hhcmVkL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tZWRpdG9yaWFsLWxheW91dC9zcmMvc2Nzcy9fcGxhY2Vob2xkZXJzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9zaGFyZWQvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1lZGl0b3JpYWwtbGF5b3V0L21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL3NoYXJlZC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWdyaWQvc3JjL3Njc3MvX21peGlucy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL2ctY29tcG9uZW50cy9zcmMvc2hhcmVkL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tbm9ybWFsaXNlL21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL3NoYXJlZC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9nLWNvbXBvbmVudHMvc3JjL3NoYXJlZC9jcml0aWNhbC1wYXRoLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9zaGFyZWQvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvZy1jb21wb25lbnRzL3NyYy9zaGFyZWQvX2Rhcmsuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1pY29ucy9tYWluLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXBwL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28taWNvbnMvc3JjL3Njc3MvX21peGlucy5zY3NzIiwid2VicGFjazovLy8uL2FwcC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWZvcm1zL3NyYy9zY3NzL3NoYXJlZC9fdmFsaWRpdHkuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby10eXBvZ3JhcGh5L3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1mb3Jtcy9zcmMvc2Nzcy9zaGFyZWQvX2Jhc2Uuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1mb3Jtcy9zcmMvc2Nzcy9zaGFyZWQvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovLy8uL2FwcC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWZvcm1zL3NyYy9zY3NzL19jaGVja2JveC5zY3NzIiwid2VicGFjazovLy8uL2FwcC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWZvcm1zL3NyYy9zY3NzL3NoYXJlZC9fY29udHJvbC1pbnB1dHMuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1mb3Jtcy9zcmMvc2Nzcy9fZGF0ZS5zY3NzIiwid2VicGFjazovLy8uL2FwcC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWZvcm1zL3NyYy9zY3NzL3NoYXJlZC9fc2luZ2xlLWlucHV0cy5zY3NzIiwid2VicGFjazovLy8uL2FwcC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWZvcm1zL3NyYy9zY3NzL19yYWRpby1ib3guc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvc2Fzcy1tcS9fbXEuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvbm9kZV9tb2R1bGVzL0BmaW5hbmNpYWwtdGltZXMvby1mb3Jtcy9zcmMvc2Nzcy9fc2VsZWN0LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXBwL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tZm9ybXMvc3JjL3Njc3MvX3RvZ2dsZS5zY3NzIiwid2VicGFjazovLy8uL2FwcC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLWZvcm1zL3NyYy9zY3NzL3NoYXJlZC9faW5saW5lLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXBwL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tYnV0dG9ucy9tYWluLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXBwL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tYnV0dG9ucy9zcmMvc2Nzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXBwL25vZGVfbW9kdWxlcy9AZmluYW5jaWFsLXRpbWVzL28tbm9ybWFsaXNlL3NyYy9zY3NzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9hcHAvYXBwL3N0eWxlcy5zY3NzIiwid2VicGFjazovLy8uL2FwcC9ub2RlX21vZHVsZXMvQGZpbmFuY2lhbC10aW1lcy9vLXR5cG9ncmFwaHkvc3JjL3Njc3MvdXNlLWNhc2VzL19nZW5lcmFsLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0MsVUFDQyxjQUNBLHlCQUdELGVBQ0MsZ0NBSUQscUJDbUlBLHNCQUNBLGlCQUNBLGtCQUNBLGdCQUVBLGlCQUNBLGtCQWVDLGlCQUtHLGtCQUNBLG1CQ3ZKSixPQ2lPTywyQkh4T1AscUJDbUtLLGtCQUNBLG9CRW9FRSwyQkZ0REYsaUVBRUMsaUJFb0RDLDJCRnRERixpRUFFQyxpQkVvREMsMkJGdERGLGlFQUVDLGtCQzNLTix1REFFQyxXQUNBLGNBQ0EsYUFFRCwyQkFDQyxXRlhELDJCRWJBLGtCQUNBLG1CQUNBLDRCQUNBLFlBQ0EsU0FDQSxnQkFDQSxVQUNBLFVBQ0EsV0FDQSxtQkVYQSx1QkFDQyxjQUNBLFdBR0Qsc0JBQ0MsbUJBQ0Esc0JBR0QseURBSUMsWUFDQSxtQkFHRCw0QkFDQyxnQkFHRCw2QkFDQyxpQkFHRCw4QkFDQyxrQkFHRCx3QkFDQyxhRG1OTSwyQkNwTlAsd0JBSUUsY0FFQSwwQkFDQyx5QkFLSCxvQkNwQ0EsY0FDQSxxQkFDQSxTRG9DQyxxQkFDQSxpQkFDQSx5QkFDQSxlQUNBLGtCQUNBLFlBQ0EsZUFDQSxrQkN6Q0QsMEJBQ0MsY0FHRCxpRUFFQyxjRmtPTSwyQkN4TVAsb0JBWUUsaUJBQ0EsZ0JBQ0Esb0JEMExLLDJCQ3hNUCxvQkFrQkUsZ0JBQ0Esb0JBR0QsMkJFREQscUJBQ0EsNEJBQ0Esd0JBQ0Esd0JBQ0EsNkJBQ0Esd0JGRkUsWUFDQSxXQUNBLFlBSUQsZ0NBQ0Msa0JBS0QsaUNFcENELDRKQU9DLDhDRjZCQSxpQ0U1QkMsNkpBR0Qsc0RGeUJBLGlDRXhCQyw2SkZnQ0QsbUNFNUNELHlKQU9DLDhDRnFDQSxtQ0VwQ0MsMEpBR0Qsc0RGaUNBLG1DRWhDQywwSkg0TEssMkJDdkpOLHNEQUVFLGNBTUYsaUNDTEQsMEpEUUUsV0FFQSxhQ1BGLDhDREVDLGlDQ0RBLDJKQUdELHNEREZDLGlDQ0dBLDJKRjRJTSwyQkMvSU4saUNBUUUsWUR1SUksMkJDL0lOLGlDQVlFLFlBS0gsMEJGbEhBLGtCQUNBLG1CQUNBLDRCQUNBLFlBQ0EsU0FDQSxnQkFDQSxVQUNBLFVBQ0EsV0FDQSxtQkU2R0Esb0JDMUJBLGlLQWxCQSxZQUNBLFlEK0NDLGNBQ0EsU0FDQSxpQkFDQSwwQkFDQSx3QkFDQSw0QkNoQ0QsOENEdUJBLG9CQ3RCQyxrS0FHRCxzRERtQkEsb0JDbEJDLGtLRjRJTSw0QkMxSFAsb0JDNUNBLFlBQ0EsYUZxS08sMkJDMUhQLG9CQzVDQSxZQUNBLFlENERFLGdCQUNBLG9CRHdHSywyQkMxSFAsb0JDNUNBLFlBQ0EsWURrRUUsZ0JBQ0Esb0JHaEpGLGtCQzBQQyxrQ0FnREEsZUFDQSxpQkR6U0EseUJBQ0EsZ0NDbVZFLDhDQXNDRixrQkFuQ0ksdUJEblZMLCtCQUNDLGlCQUNBLGtCQUVBLG1EQUNDLGdCQUdBLFdFRjRCLENOc092QiwyQkl4T04sbURBTUUsV0VINkIsRUZRaEMsOEJBQ0MsY0FFQSxrREFHQyxpQ0FHQSx1QkFFQSxvQkFJRiwwQkFFQyxhQUNBLG1CQUNBLGdCQUNBLGdCRTFCa0MsQ0Y2Qm5DLHVCQUNDLHFCQUNBLFVBQ0EsU0FPQyxvSEZFRixrQkFDQSxpQkFDQSxpQkl6RHFCLENKMkRyQiwySEFDQyxXQUNBLGtCQUNBLFFBQ0EsT0FDQSxXQUNBLDhCRVZFLDJIQUNDLFFBQ0EsbUJBQ0EsY0p1TEcsMkJJMUxKLDJIQUtFLG1CQUNBLGVBT0wsdUJBQ0Msa0JBQ0EscUJBQ0EsaUJBRUEsd0RBQ0Msa0JBR0QsdUdBRUMsZUFJQSxpRURyQkYscUJBQ0EsNEJBQ0Esd0JBQ0Esd0JBQ0EsNkJBQ0Esd0JBcENBLFdBQ0EsWUFTQSw4SkM0Q0csV0FDQSxrQkFDQSxXQUNBLGlCRHhDRiw4Q0NtQ0MsaUVEbENBLCtKQUdELHNEQytCQyxpRUQ5QkEsK0pDc0NBLDZFQUNDLGFBTUgsOERBQ0MsaUJBSUQsdUJGbEdBLGNBQ0EscUJBQ0EsU0FjQSxrQkFDQSxjQUNBLGNBQ0EsbUJFa0ZDLGNBQ0EscUJBQ0EsZUZuR0QsNkJBQ0MsY0FHRCx1RUFFQyxjQVdELDZCQUNDLFdBQ0Esa0JBQ0EsU0FDQSxPQUNBLFdBQ0EsV0FHRCxtQ0FDQyx5QkFHRCxtRkFFQyx5QkZ3TU0sMkJJMUlQLHVCQU9FLGVBR0QsMERBQ0MsY0FDQSx5QkFDQSxnQkFJRiw4QkFDQyxZQUNBLGFKdUhNLDJCSXpIUCw4QkFJRSxlQUlGLHlCRGxFQSxxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkExQkEsNkpDeUZDLHlCQUNBLGtCQUNBLE1BQ0EsV0FDQSxZQUNBLFVBQ0EsU0FDQSw0QkR6RkEsOENDZ0ZELHlCRC9FRSw4SkFHRCxzREM0RUQseUJEM0VFLDhKQ3NGRCwrQkFDQyx5QkFHRCxtQ0FDQyxVQUNBLG9CQUdELGdEQUNDLGFBSUYsK0JBQ0MsT0FHRCxnQ0FDQyxRQUVBLHlCR2pLRCxrQkFDQyxjQUNBLGtCQUNBLG1CQUVBLHFDQUNDLGNBSUYsdUJBQ0MsYUFHRCx1QkFDQyxhQUNBLG1CQUNBLGdCQUNBLGNBR0QsdUJGcU9DLGtDQWdEQSxlQUNBLGlCRXBSQSxzQkFDQSxZQUNBLGNBQ0Esc0JBRUEsZ0JBQ0EsZ0JBQ0EsbUJBQ0EseUJBQ0EsZ0JBQ0EsZ0JBRUEsY0FDQSxZRmtURSxtREFzQ0Ysa0JBbkNJLHVCRW5USiw2QkFFQyxhQUNBLHFCQUlGLHlCRjZNQyxrQ0FVQSxnQkFWQSxrQ0FnREEsZUFDQSxpQkdoRkQsaUJBSUEsMEJBQ0EsZ0JBQ0EsZUFDQSxnQkEzREEscUJBQ0Esc0JBQ0Esc0JBQ0EsU0FDQSxtQkFDQSxrQkFDQSxxQkFDQSxlQUNBLCtFQUNBLGlCQUNBLDJCQUNBLGlCQUVBLG1DQUNBLGtDQUNBLHFCQUNBLHdCQUNBLGdCQWlEQSx5QkFDQSxXQUNBLHlCRHpMQyxZQUNBLGdCRGxEb0IsQ0RxVmxCLHFEQXNDRixrQkFuQ0ksdUJHNUpMLG1DQUNDLG9CQUNBLFdBQ0EsZUE2Q0QsK0JBQ0MseUJBQ0EsV0FDQSx5QkFDQSxxQkFHRCwrQkFDQyx5QkFDQSxXQUNBLHlCQUtELGdLQUlDLHlCQUNBLFdBQ0EseUJENU1ELHdCSlNBLHFCQUNBLDRCQUNBLHdCQUNBLHdCQUNBLDZCQUNBLHdCQXBDQSxXQUNBLFlBU0Esd0pJY0MsU0FDQSxpQkFDQSxzQkpUQSw4Q0lLRCx3QkpKRSx5SkFHRCxzRElDRCxpTEFNQyw0REFFQyxZUG9MSywyQk81TFAsd0JBWUUsY0VsRUYsZUowUEMsa0NBZ0RBLGVBQ0EsaUJBMkNFLDJDQXNDRixrQkFuQ0ksdUJJclZMLHVCQUNDLGFUNk9NLDRCUzlPUCx1QkFJRSxlQUlGLHVCQUNDLG1CVHFPTSwyQlN0T1AsdUJBSUUsY0FJRix3QkFDQyxhVDZOTSwyQlM5TlAsd0JBSUUsZUFJRixvQkFDQyxjQUNBLHFCQUNBLGNBQ0EsVUFHRCwwQkFDQyxXQUdELDJCQUNDLFlBR0Qsb0JBQ0MsbUJBQ0Esc0JBQ0Esa0JBRUEsZ0NBQ0MsZUFHRCwyQ0FDQyxrQkFFQSx1REFDQyxlQUtILDRCQUNDLGFUb0xNLDRCU3JMUCw0QkFJRSxvQlRpTEssMkJTN0tQLDhCQUVFLGNBSUYsb0JQckVBLGNBQ0EscUJBQ0EsU0FjQSxrQkFDQSxjQUNBLGNBQ0EsbUJBZkEsMEJBQ0MsY0FHRCxpRUFFQyxjQVdELDBCQUNDLFdBQ0Esa0JBQ0EsU0FDQSxPQUNBLFdBQ0EsV0FHRCxnQ0FDQyx5QkFHRCw2RUFFQyx5Qk9zQ0QsNkJBQ0MsZ0JBQ0EseUJBRUEsbUNBSUQsc0JKa0tDLGtDQVVBLGdCQVZBLGtDQWdEQSxlQUNBLGlCR2hGRCxpQkFJQSwwQkFDQSxnQkFDQSxlQUNBLGdCQTNEQSxxQkFDQSxzQkFDQSxzQkFDQSxTQUNBLG1CQUNBLGtCQUNBLHFCQUNBLGVBQ0EsK0VBQ0EsaUJBQ0EsMkJBQ0EsaUJBRUEsbUNBQ0Esa0NBQ0EscUJBQ0Esd0JBQ0EsZ0JBaURBLHlCQUNBLFdBQ0EseUJIMkdHLGtEQXNDRixrQkFuQ0ksdUJHNUpMLGdDQUNDLG9CQUNBLFdBQ0EsZUE2Q0QsNEJBQ0MseUJBQ0EsV0FDQSx5QkFDQSxxQkFHRCw0QkFDQyx5QkFDQSxXQUNBLHlCQUtELG9KQUlDLHlCQUNBLFdBQ0EseUJFbFFELGdCQUNDLGtCVmlQTSwyQlVsUFAsZ0JBSUUsY0FJRixxQkFDQyxTQUNBLFVBR0QscUJBRUMscUJSaUNELDBDQVFBLGtCQUNBLGlCQUNBLGlCSXpEcUIsQ0oyRHJCLGlEQUNDLFdBQ0Esa0JBQ0EsUUFDQSxPQUNBLFdBQ0EsOEJRaERELHFCTHdPQyxrQ0FnREEsZUFDQSxpQkhyU0QsY0FDQSxxQkFDQSxTQWNBLGtCQUNBLGNBQ0EsY0FDQSxtQkc2VEcsaURBc0NGLGtCQW5DSSx1QkgvVUwsMkJBQ0MsY0FHRCxtRUFFQyxjQVdELDJCQUNDLFdBQ0Esa0JBQ0EsU0FDQSxPQUNBLFdBQ0EsV0FHRCxpQ0FDQyx5QkFHRCwrRUFFQyx5QlN6Q0Qsa0JOeVBDLGtDTXZQQSx5QkFDQSx1QkFFQSw0Q0FDQyxlQUNBLE1BQ0EsU0FDQSxPQUNBLFlBQ0EsV0FDQSwrQkFFQSw0QkFDQSxtQ0FHQSxzQlgrTkssMkJXNU9OLDRDQWdCRSxXTGRxQixFS2lCdEIseURDaEJELG9FRG9CRSxtQ0FDQSxrQkFHRCwrREFFQyx3QkFDQSwrQkFNSCxzREFFQyxzREFJQSxtREFDQyxZQUNBLGdCQUVBLGlDQUVBLHVCQUVBLG9DQUdBLHNFQUNDLFdBRUQsNEVBQ0MsbUJBRUEsNEJBQ0EsNkJBUUgsd0JBQ0MsZ0JBQ0EseUJBQ0EsNkJBQ0EsY0FHRCw2QlRhQSxpS1NYQyxxQkFDQSw0QkFDQSx3QkFDQSxZQUNBLFlBQ0EsZ0JUU0QsOENTaEJBLDZCVGlCQyxrS0FHRCxzRFNwQkEsNkJUcUJDLGtLU1hELDhCUjVCQSxxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkFwQ0EsV0FDQSxZQVNBLHdKUW9EQyxzQkFDQSxZQUNBLFNBQ0EsWUFDQSxlQUNBLGlCUmxEQSw4Q1EwQ0QsOEJSekNFLHlKQUdELHNEUXNDRCw4QlJyQ0UseUpROENELHdFQUVDLFVBR0QsNERBQ0MsYUFPRixrQ055SUMsa0NBZ0RBLGVBQ0EsaUJNeExBLGNBQ0EsY05rT0UsOERBc0NGLGtCQW5DSSx1Qk1qT0wsMkJBQ0MsZUFJRCxnQ0FDQyxjQUNBLHFCQUNBLGtCQUNBLGlCQUNBLGdCQUNBLGVBQ0EsMEJBRUEsNENBQ0MsY0FHRCw4Q0FDQyxjQUNBLGdCQUNBLHFCQUNBLG9CQU9GLHlCQUNDLDZCQUNBLGtCWDJGTSwyQlc3RlAseUJBS0UsY0FJRiw4QkFDQyxhQUdELDhEQUVDLHNCQUNBLFlBQ0EsZ0JBQ0EsaUJBRUEsZUFHRCw4QkFDQyxzQkFDQSxxQkFDQSxZQUVBLGdCQUNBLGdCQUNBLG1CQUNBLGdCQUNBLGdCQUdBLHlCQUVBLG9DQUNDLHFCQUlGLGdDQUNDLHlCQUNBLHlCQUVBLHNDUnBJRCxxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkFwQ0EsV0FDQSxZQVNBLHlKUTJKRSxXQUNBLGdCUnJKRCw4Q1FrSkEsc0NSakpDLDBKQUdELHNEUThJQSxzQ1I3SUMsMEpRdUpGLHVCQUNDLGNBQ0EscUJBR0QsNkJBQ0MseUJBQ0Esb0JBQ0EsNkJBR0QsNEJBQ0MscUJBQ0EsVUFDQSxTQUNBLGdCQUlBLGlFQUNDLGFBR0QsOERBRUMsYUFFQSxrQkFDQSxvQ0FFQSxpRkFDQyx5QkFHQSxpQkFDQSxtQkFFQSx3REFLSCw0QkFDQyxlQUdELG9DQUNDLDZCQUdELHFDQUNDLHlCQUNBLGlCQUNBLGdCQU1ELHNDQUNDLGtCQUdELDhCQUNDLGtCQUNBLE1BQ0EsUUFDQSxZQUNBLFdBRUEsVUFDQSxnQkFDQSxTQUNBLGVBRUEsWUFFQSxxQ0FDQyxZQUNBLGdCQUlBLHlEQUVDLHlCQUlGLG9DQUVDLFVBR0QsNERBQ0MsYUFJRix3Q0FDQyxpQ0FFQSwrQ1JwUEQscUJBQ0EsNEJBQ0Esd0JBQ0Esd0JBQ0EsNkJBQ0Esd0JBcENBLFdBQ0EsWUFTQSw2SkFPQyw4Q1FrUUEsK0NSalFDLDhKQUdELHNEUThQQSwrQ1I3UEMsOEpRa1FGLDBDQUNDLGlDQUVBLGlEUjVQRCxxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkFwQ0EsV0FDQSxZQVNBLDZKQU9DLDhDUTBRQSxpRFJ6UUMsOEpBR0Qsc0RRc1FBLGlEUnJRQyw4SlE2UUYsNEJBQ0MsY0FDQSxjQUNBLGtCQUNBLGdCQUNBLGVBQ0EscUJBRUEsa0NBQ0MsY0FHRCxpREFDQyx5QkFJRixzQ0FDQyxXQUNBLHlCQUVBLHdGQUVDLGNBRUEsc0JBR0QsMkRBRUMseUJBSUYsbUNBQ0Msa0JBR0QsdUNBQ0MsZ0JBR0QsbUNBQ0MsY0FDQSxpQkFDQSxlRWhYRCx5QkFDQyxHQUNDLFVBRUQsS0FDQyxXQUlGLGdCUmlQQyxrQ0FnREEsZUFDQSxpQk9sU0Esb0VDR0EsYUFDQSxrQkFDQSxTQUNBLFVBQ0EsV0FDQSxVQUNBLHNCQUNBLGVBQ0EsNkJBQ0EseUJSaVVFLDRDQXNDRixrQkFuQ0ksdUJRbFVKLGtGQUdDLGNBSUYsMkJBQ0MscUNBR0Qsd0JBQ0MsY0FDQSxtQkFDQSxXQUVBLHNCQUNBLGtCQUdELHVCQUNDLG1CQUNBLGtCQUNBLDhCQUVBLG1DQUNDLGNBQ0EsZUFPQSw2RFZNRixxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkFwQ0EsV0FDQSxZQVNBLDhKVWlCRyx3QkFDQSxXVlhGLDhDVVFDLDZEVlBBLCtKQUdELHNEVUlDLDZEVkhBLCtKVVVELHNEQUNDLGlCQUlGLG9DQUNDLFVBRUEseURBQ0MsVUFJQSxxRUFDQyxnQkFLSCx3QkFDQyxlQUNBLGtCQUNBLHlCQUdELHFCQUNDLFNBQ0EsVUFDQSxnQkFHRCxxQkFDQyxnQkFHRCxxQlg3RkEsY0FDQSxxQkFDQSxTQUVBLDJCQUNDLGNBR0QsbUVBRUMsY1dzRkEsMkJBQ0MsMEJDdkdGLGtCQUNDLGVBQ0EsTUFDQSxPQUNBLFdBQ0EsV0FDQSw0QkFDQSx5REFDQSxzQkFHQSxrQ0FDQSxpQkFFQSxhQWRELGtCQWVFLGNBSUYseUJGTkMscUVFUUEsd0JDbkJBLHlDQUNDLFdUa0JzQixDU2Z2QixzQ0FDQyxlQUNBLGtCQUdELHNDQUNDLGFBQ0EsZ0JmcU9LLDJCZXZPTixzQ2JpRUQsWUFDQSxhYXpEQyw4REFDQyxVQUNBLGdCVERzQixDVXJCeEIsb0JBQ0MsWUFDQSx5QkFDQSxjQUNBLGNBQ0EsV2hCNk9NLDJCZ0JsUFAsb0JBUUUsYUFJRix5QkFDQyxtQkFDQSxzQkFDQSxTQUNBLGlCQUNBLHdCQUNBLHdCQUNBLDRCQ25CRCx1QkFDQyxXQUNBLGtDQUNBLDZCQUVBLHNDQUNDLHlDQUdELHdEZGlDRCw0SkFPQyw4Q2N4Q0Esd0RkeUNDLDZKQUdELHNEYzVDQSx3RGQ2Q0MsNkpjekNELDBEZDZCRCx5SkFPQyw4Q2NwQ0EsMERkcUNDLDBKQUdELHNEY3hDQSwwRGR5Q0MsMEpjckNELHdEZjZFRCwwSkFHQSw4Q2VoRkMsd0RmaUZBLDJKQUdELHNEZXBGQyx3RGZxRkEsMkplakZBLDJDZnlFRCxpS0FHQSw4Q2U1RUMsMkNmNkVBLGtLQUdELHNEZWhGQywyQ2ZpRkEsa0tlN0VBLDZDVGdORCxzQkFDQSxjQUNBLHlCQUVBLG1EQUNDLHlCQUNBLGNBQ0EseUJBQ0EscUJBR0QsbURBQ0MseUJBQ0EsY0FDQSx5QkFLRCxnUEFJQyx5QkFDQSxjQUNBLHlCU2hPQyxtR0FDQyxXQUdELCtHQUNDLHNCQUdELGdPQUVDLFdBR0Qsd1BBRUMsc0I7QUNsREosYUM4SUMsT0FDQyx1QkFDQywyQkFHRixtQkEzSUEsd0NBRUEsMkJBQ0MsZ0JBNklELFdBeElBLGlCQUNBLGVBMklBLFFBdklBLFNBQ0EsYUFDQSxpQkFDQSwwQ0FJQSxzQ0FDQyxjQUNBLGVBQ0EsaUJBSnFCLDJDQUN0QixzQ0FDQyxjQUNBLGVBQ0Esa0JBc0ltQiw0Q0F6SXBCLHNDQUNDLGNBQ0EsZUFDQSxtQkEwSW1CLG9CQUdwQixzQ0F0RUEsK0JBQ0EsK0pBQ0EsNEJBd0VBLGVBakVBLGlCQUZpQyxvRUFJakMsZ0JBRUMsY0FDQSxxQkFDQSxtQkFDQSxjQUNBLG1DQUdELHdCQUNDLG9CQUNBLGtCQUNBLG9CQUNBLGtDQUdELFdBQ0MsaUJBcEJTLHVCQXNCVCxzWkFrRFUsa0JBRUwsb0JBS04sd0JBQ0MsMEJBR0Qsd0JBQ0MscUJBR0QsbUpBQ0Msb0JBR0QsdUJBcEtBLGdCQUNBLFlBQ0EsZUFDQSxlQUNBLHVHQUVBLFlBRUMscUJBZ0tELHVCQTNKQSxhQUNBLGlCQUNBLGVBQ0EsZUFDQSx3SUFNQyxrQkFDQyxRQUNBLGdCQUNBLDBNQUdELFNBQ0MsZ0JBQ0EsZ1JBT0EsUUFDQyxnQkFDQSxvR0FPRix1QkFDQyxhQUNBLGlCQUNBLGNBQ0EseUJDMkpLLG1HRC9KTixZQU1FLG1CQUNBLFNBQ0EsOEJDdUpJLG1HRC9KTixZQVdFLGlCQUNBLDhCQXlIRixhQUNFLEM7QUVsTkgscUJDbVBDLGtDQWdEQSxlQUNBLGlCQTJDRSxpREFzQ0Ysa0JBbkNJLHVCRDlVTCxzS0V5SEEseUJBQ0EsY0ZwSEEsb0hBQ0MsV0FLRCw2QkFDQyxjQWlCRCxxQkFFQyxxQkFJQSxtQ0FDQyxXQUNBLHVCQUNBLHdCQUNBLGVBQ0EsZ0JBQ0EsaUJBQ0Esa0JBQ0EsOEJBQ0EscUJBQ0Esd0JBRUEsbUJHbEJGLFVGaU5DLGtDQWdEQSxlQUNBLGlCRzNSRCxrQkFDQSxXQUNBLGtDQUNBLG1CQUVBLG1DQUNBLGtDQUdBLDhCQUNBLDJCQUNBLHNCSDJURyxzQ0FzQ0Ysa0JBbkNJLHVCRzVUTCxpREFJQywyQkFDQSx3QkFDQSxtQkNXRCxnQko0UEMsZUFDQSxpQkdqUUQsY0FDQSxrQkgyU0csNENBc0NGLGtCSTFVRCxzQkp3TUMsa0NBVUEsZ0JHak1ELG1CQ2JBLGVKOE1DLGdCR2xORCxjQUNBLHFCQUNBLFNBQ0EsbUJBRUEsMENBRUMsYUV2Q3NCLENGMEN2QixvQkFDQyxxQkNIRCxzQkpnUEMsZUFDQSxpQkduT0QsY0g4UUcsa0RBc0NGLGtCSTlURCxtQko0TEMsdUNBZ0RBLGVBQ0EsaUJHdFNELFdBQ0EsYUFDQSxnQkFDQSxnQkg4VUcsa0RBc0NGLGVBbkNJLGtCRy9QTCxxQkFDQyxjQUNBLHFCQUNBLFNBRUEsc0RBRUMsYUUvRXFCLENGa0Z0Qiw2QkFDQyxhRTlFZSxDRDJDakIsc0JKd09DLGVBQ0EsaUJHNU5ELGNBQ0EsYUFDQSxnQkhxUUcsa0RBc0NGLGtCR2xTRCx3QkFDQyxjQUNBLHFCQUNBLFNBRUEsNERBRUMsYUUvRXFCLENGa0Z0QixnQ0FDQyxhRTlFZSxDRjREakIseUNBQ0MsZUNaRCw2QkUvREEsa0JBQ0EsU0FDQSxzQkFDQSxVQUVBLDhDQUNDLFdGNkRELGlCRTNFQSxjQUNBLFdBQ0EsU0FtQkEsMkNBQ0MsbUJBQ0EsZ0JBR0Qsb0JBQ0Msa0JBQ0EsU0FDQSxRQUNBLFlBQ0EsV0ZvREQscUJHbEZBLGNBRUEsZ0JBRUEsaUJDc05DLGtJQUNDLHlEQU9BLCtCQVJELGtJQVNFLGdCQU9ELGdDQUNDLEdBQ0MsVUFFRCxJQUNDLFdBRUQsSUFDQyxXQUVELEtBQ0MsV0R2TUosaUNBQ0MsYUZyQnVDLENEZ0V4QyxpREs1RkEsV0FFQSxpRlR3UEMsa0NBZ0RBLGVBQ0EsaUJBdkNBLGdCU2hRQSxjQUNBLGtCVGlWRSxtSkFzQ0Ysa0JBbkNJLHVCU2pWTCx1R1RrU0MsZUFDQSxpQlNqU0EseUJBQ0EsY0FDQSxjVDBVRSwrSkFzQ0Ysa0JTN1dELCtGQUNDLHlCTGtGQSxpRE14REQsK0pDMkhDLDRCQUtBLGtEQUNBLHdDQVFBLDZCQUlBLG9EQTBCQSxXQUVBLDRCQUNBLDZCQUZtQixDRGpLbkIsOENOaURBLGlETWhEQyxnS0FHRCxzRE42Q0EsaURNNUNDLGdLQ3VIRCxvQ1AzRUEsaURPNEVDLGlEQUVELDZDUDlFQSxpRE8rRUMsMERBT0Qsb0NQdEZBLGlET3VGQyx5QkFFRCxzRUN6TEQsa0JBQ0EsbUJBQ0EsNEJBQ0EsWUFDQSxTQUNBLGdCQUNBLFVBQ0EsVUFDQSxXQUNBLG1CRGtMRSwrQkEwQkYsdURBRUUsY0FFQSw0QkFDQSw2QkFGbUIsQ0FPckIsdURBT0UsYUE3RmEsQ1AzQmYsbUJTL0dBLHdCQUNBLGtCQUNBLGdCQUNBLDhCQzhPTywyQlZsSVAsbUJTekdDLGNUNkdELHdCSjBLRyxlQUNBLGlCYTlRSCxhUk1pQixDUzJOViwyQlY5SFAsd0JKZ0xJLGVBQ0Esa0JBaURELG9EQXNCQyxrQmMxSEcsMkJkb0dKLG9EQTZCRSxtQmFoV0wsNERBRUMsYVJIc0IsQ1FNdkIsMEJBQ0MsZ0JBQ0EscUJBQ0EsY0FFQSxnQ0FDQyxjQUlGLDhESDZCQSxxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkFwQ0EsV0FDQSxZQVNBLHVKR05DLFdBQ0Esa0JBQ0EsUUFDQSxzQkFDQSxnQkhTQSw4Q0dmRCw4REhnQkUsd0pBR0Qsc0RHbkJELDhESG9CRSx3SktyREYsaUNBQ0Msa0JBQ0EsUUFDQSxrQkFFQSxzQ0FDQyxrQkFDQSw4QkFDQSxVQUNBLFNBQ0EsV0FDQSxVQUNBLGdCQUlGLHVDTDhDQSxxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkFwQ0EsV0FDQSxZQVNBLHdKS3ZCQyx5Qkw4QkEsOENLaENELHVDTGlDRSx5SkFHRCxzREtwQ0QsdUNMcUNFLHlKS2hDRixrRkx5Q0EscUJBQ0EsNEJBQ0Esd0JBQ0Esd0JBQ0EsNkJBQ0Esd0JBcENBLFdBQ0EsWUFTQSx1SktqQkMseUJMd0JBLDhDSzNCRCxrRkw0QkUsd0pBR0Qsc0RLL0JELGtGTGdDRSx3SksxQkYsZ0ZMbUNBLHFCQUNBLDRCQUNBLHdCQUNBLHdCQUNBLDZCQUNBLHdCQXBDQSxXQUNBLFlBU0Esd0pLWEMsc0JMa0JBLDhDS3JCRCxnRkxzQkUseUpBR0Qsc0RLekJELGdGTDBCRSx5SktwQkYsd0ZMNkJBLHFCQUNBLDRCQUNBLHdCQUNBLHdCQUNBLDZCQUNBLHdCQXBDQSxXQUNBLFlBU0EsdUpLTEMsc0JMWUEsOENLZkQsd0ZMZ0JFLHdKQUdELHNES25CRCx3RkxvQkUsd0pOa0ZGLGlCWXZJQSxhQUNBLG9CQUNBLGdDQUVBLG9DQUVDLFlBQ0EsUUFHRCw0Q0FDQyxVQUVBLGNBQ0EsbUJGbU9NLDJCRXZPUCw0Q0FPRSxjWnlIRCxtQ1lqSEQsc0JBRUEsc0RBQ0MsZ0JGcU5NLDJCVnZHTixtQ1kxR0EsZ0JBQ0Esa0JBR0QsOERBQ0MsbUJBQ0EsV0FFQSxlQUNBLGNBQ0EsZ0JBS0QsK0ZBQ0MsUUFDQSxrQkFDQSxzQlptR0Qsc0VRcklBLE9BRUEsbUxBRUMsV0FDQSxjQUNBLGFBRUQsd0ZBQ0MsV0t0QkQsK0hBQ0MsYUFDQSx5QkFHRCwrSGpCaVBDLHVDQWdEQSxlQUNBLGlCQTJDRSw0TkFzQ0YsaUJBbkNJLGtCaUI1VUwsd0lqQmlSRyxlQUNBLGlCaUI3UUYsZ0JIZ09NLDJCR3JPUCx3SWpCdVJJLGVBQ0Esa0JBaURELDROQXNCQyxrQmMxSEcsMkJkb0dKLDROQTZCRSxrQmlCOVBMLDZDQUNDLGdCQUdELDJDQUNDLGtCQUNBLFVBR0QscURBQ0Msa0JBQ0EsV0FDQSxXQUNBLGdCQUNBLGlCQUVBLDJEQUNDLGtCQUNBLE1BQ0EsT0FDQSxXQUNBLGNBQ0EsV0FDQSxXQUNBLDhCQUNBLGdDQVFGLDhDQUNDLGtCQUNBLFdBQ0EsVUFDQSxlQUVBLG9EQUNDLFdBQ0Esa0JBQ0EsUUFDQSxXQUNBLFlBQ0EsVUFDQSxjQUNBLHlCQUNBLGNBSUYsNENBQ0Msa0JBQ0EsZ0JBQ0EsVUFHRCxzREFDQyxrQkFDQSxZQUNBLFVBQ0EsYUFDQSxlQUVBLDREQUNDLGFBckhGLHNEQUNDLGtCQUNBLFVIOEtNLG1ER2hMUCxzREFLRSxpQkFJRixnRUFDQyxrQkFDQSxXQUNBLFdBQ0EsZ0JBQ0EsaUJBRUEsc0VBQ0Msa0JBQ0EsTUFDQSxPQUNBLFdBQ0EsY0FDQSxXQUNBLFdBQ0EsOEJBQ0EsZ0NIdUpLLG9ER3ZLUCxnRUFvQkUsWUFDQSxhQUNBLGVBRUEsc0VBQ0MsY0g4SUksb0RHdktQLGdFQThCRSxXSHlJSyxtREd2S1AsZ0VBa0NFLFdIcUlLLDRCR3hOUCx3REFFRSxpQkhzTkssb0RHeE5QLHdEQU1FLGtCQUNBLFdBQ0EsZUFFQSw4REFDQyxXQUNBLGtCQUNBLFFBQ0EsV0FDQSxZQUNBLFVBQ0EsY0FDQSx5QkFDQSxlSHFNSSxvREd4TlAsd0RBd0JFLFdIZ01LLG1ER3hOUCx3REE0QkUsV0g0TEssMkJHeE5QLHdEQWdDRSxpQkNYRixtQ0FDQyxjQVFELDJJQUVDLGNBSUEsb0xBRUMsV0FDQSxtQkFDQSxTSmdMSyxvREk3S04seUZBRUUsV0FDQSxtQkFDQSxNQUNBLFVBdkVILGlYQVFDLFdBR0Qsa0hBR0MsV0FHRCxpRkFFQyxXQUdELHdEQUNDLHlCQzFCRCwyQ1QrREEscUJBQ0EsNEJBQ0Esd0JBQ0Esd0JBQ0EsNkJBQ0Esd0JBMUJBLHVKU3hDQyxXQUNBLFdBQ0EsWUFDQSxlQUNBLGdCQUNBLG1CQUNBLHlCVHlDQSw4Q1NqREQsMkNUa0RFLHdKQUdELHNEU3JERCwyQ1RzREUsd0pTekNGLCtEQUNDLGFMb09NLDJCS2hPUCwrRUFFRSxZQUtGLDhDQUNDLGtCQUVBLG9EVG1DRCxxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkExQkEsdUpTWkUsb0JBQ0EsV0FDQSxrQkFDQSxTQUNBLE9BQ0EsVUFDQSxVQUNBLGdCQUNBLGVBQ0EsZ0JBQ0EseUJUU0QsOENTckJBLG9EVHNCQyx3SkFHRCxzRFN6QkEsb0RUMEJDLHdKU1ZGLG9EQUNDLGNBQ0EsU0FVRCwrQ0FDQyxhQUdELGdEQUdDLGlCQUdELCtIQUVDLGlCQUNBLGtCQUdELGdFQUNDLGlCQUdELCtEQUNDLGdCQzdFRCwyQ1YrREEscUJBQ0EsNEJBQ0Esd0JBQ0Esd0JBQ0EsNkJBQ0Esd0JBMUJBLHdKVXhDQyxXQUNBLFdBQ0EsWUFDQSxlQUNBLGdCQUNBLG1CQUNBLHlCVnlDQSw4Q1VqREQsMkNWa0RFLHlKQUdELHNEVXJERCwyQ1ZzREUseUpVekNGLCtEQUNDLGFOb09NLDJCTWhPUCwrRUFFRSxZQUtGLDhDQUNDLGtCQUVBLG9EVm1DRCxxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkExQkEsd0pVWkUsb0JBQ0EsV0FDQSxrQkFDQSxTQUNBLE9BQ0EsVUFDQSxVQUNBLGdCQUNBLGVBQ0EsZ0JBQ0EseUJWU0QsOENVckJBLG9EVnNCQyx5SkFHRCxzRFV6QkEsb0RWMEJDLHlKTnFIRixnQlExSkEsT1NoQkEsYUFDQSx3QlRpQkEsNkNBRUMsV0FDQSxjQUNBLGFBRUQsc0JBQ0MsV0t0QkQsbUNBQ0MsYUFDQSx5QkFHRCxtQ2pCaVBDLHVDQWdEQSxlQUNBLGlCQTJDRSxrRUFzQ0YsaUJBbkNJLGtCaUI1VUwsc0NqQmlSRyxlQUNBLGlCaUI3UUYsZ0JIZ09NLDJCR3JPUCxzQ2pCdVJJLGVBQ0Esa0JBaURELGtFQXNCQyxrQmMxSEcsMkJkb0dKLGtFQTZCRSxrQnFCL1dMLG1DQUNDLG1CQUNBLFNBQ0Esc0JBR0Qsc0NBQ0MsV0FDQSxjQUNBLFdBQ0EsZ0NBQ0EsZUFDQSxrQmpCa0tBLDBFQUVDLDJCYWxIRixxREFDQyxrQkFDQSxVSDhLTSxtREdoTFAscURBS0UsaUJBSUYsK0RBQ0Msa0JBQ0EsV0FDQSxXQUNBLGdCQUNBLGlCQUVBLHFFQUNDLGtCQUNBLE1BQ0EsT0FDQSxXQUNBLGNBQ0EsV0FDQSxXQUNBLDhCQUNBLGdDSHVKSyxvREd2S1AsK0RBb0JFLFlBQ0EsYUFDQSxlQUVBLHFFQUNDLGNIOElJLG9ER3ZLUCwrREE4QkUsV0h5SUssbURHdktQLCtEQWtDRSxXSTRCRiwrREFDQyxTQUNBLFdBQ0EsaUJBRUEscUVBQ0MsbUJBQ0EsY0FDQSxRQUNBLFNBSUYscURBQ0MsZVAyRk0sMkJPckZQLDRFQUNDLGtCQUdELDRFckJ5RkMsdUNBZ0RBLGVBQ0EsaUJBMkNFLDJHQXNDRixpQkFuQ0ksa0JxQnBMTCwrRUFDQyxpQkFDQSxrQkFNRCxvRkFDQyxlUG9FTSwyQlZ2REwseURpQnZHRCxrQkFFQSxvRkFDQyxrQkFDQSxhQUNBLGVBQ0EsVUFFQSwwRkFDQyxhQUlGLDRFQUNDLGtCQUNBLE1BQ0EsT0FDQSxVQUNBLFdBQ0EsZUFDQSw2QkFDQSw4RUFDQSxvQkFHRCxnb0JBUUMsV0FDQSxvQkFHRCwrRUFDQywwQkEwREYsd0RyQnNIQyxlQUNBLGlCQTJDRSxvRkFzQ0Ysa0JxQnBNRCxnRUFDQyxpQkFFQSxzRUFDQyxRQUNBLFdBaENGLHFDQUNDLGtCQUdELHFDckJ5RkMsdUNBZ0RBLGVBQ0EsaUJBMkNFLG9FQXNDRixpQkFuQ0ksa0JxQnBMTCx3Q0FDQyxpQkFDQSxrQkFNRCxpRUFDQyxjakIrQkQscUJjM0tBLGFBQ0EsWUFFQSx3Q0FDQyxhQUNBLHNCQUNBLFlBQ0EsZ0JBdENELGsrQkFRQyxXQUdELG9VQUdDLFdBR0Qsa09BRUMsV0FHRCxnSkFDQyx5QkdEQSxnVEFFQyxTUHVOSyxvRE9wTk4sc0pBRUUsTUFDQSxVQVVILHllQVFDLGNBR0Qsb0xBR0MsY0FHRCxxRUFDQyx5QkFHRCx3SEFFQyxrQkF4Qm9CLENQd01kLG9ETzdLUCwyREFFRSxrQkE3Qm1CLEVIMENyQix5ZkFRQyxjQUdELDBMQUdDLGNBR0QsdUVBQ0MseUJBSUEsMEpBRUMsV0FDQSxrQkExQjJCLENKK0p0QixvRElsSU4sNEVBRUUsV0FDQSxrQkFoQzBCLEVHc0g3QixrUkFJQyxhQUw0QixDQVE3QiwwSEFFQyxjQUdELHdEQUNDLGFBZDRCLENBZ0I1Qiw4REFDQyxvQkFsQjRCLENBc0I5Qix5SEFFQyxXQUNBLDZJQUNDLGNBSUYsMkhBRUMsY0FHRCxvSUFFQyxrQkF2Q3VCLENQNkNqQixvRE9IUCxpRUFFRSxrQkE1Q3NCLEVQNkNqQixtRE9qSE4sbUVBQ0MsZWpCd0dGLHFCUXpOQSxPQUVBLHVEQUVDLFdBQ0EsY0FDQSxhQUVELDJCQUNDLFdLdEJELHdDQUNDLGFBQ0EseUJBR0Qsd0NqQmlQQyx1Q0FnREEsZUFDQSxpQkEyQ0UsdUVBc0NGLGlCQW5DSSxrQmlCNVVMLDJDakJpUkcsZUFDQSxpQmlCN1FGLGdCSGdPTSwyQkdyT1AsMkNqQnVSSSxlQUNBLGtCQWlERCx1RUFzQkMsa0JjMUhHLDJCZG9HSix1RUE2QkUsa0JzQmxYTCx3Q0FDQyxpQkFDQSxTQUdELHdDdEJvUEMsdUNBb0NFLGVBQ0EsY2M3Q0ksMkJRNU9QLHdDdEI4UkksZUFDQSxrQkFpREQsdUVBc0JDLGlCQW5CQyxrQmN2R0UsMkJkb0dKLHVFQStCRSxrQnNCM1dMLDJDdEJnU0MsZUFDQSxpQkEyQ0UsdUVBc0NGLGlCc0IzV0QseUlBQ0MsbUJsQmlPQSxrRlFsT0QsT1VRQSxtQkFDQSxhVlBBLDhMQUVDLFdBQ0EsY0FDQSxhQUVELDhGQUNDLFdFd05NLDJCVkNOLGtGa0J0TkEsc0JBRUEsd0hBQ0MsV0FDQSxVQUNBLG1CQUdELGdRQUVDLFlBQ0EsVUFHRCx3SEFDQyxvQmxCNE1ELHlDa0JyTUQsZ0JBQ0EsVUFDQSxnQkFFQSxzRUFDQyxvQkFHRCw0REFDQyxvQlJzTE0sMkJRbExOLDREQUNDLFdBQ0EsVUFDQSx5QkFHRCxvRUFDQyxVQUNBLGFSMEtLLDJCUXJLTixvRUFDQyxpQmxCaU1GLG9GbUI3UUEsV0FDQSxtMENMUUMsV0FHRCx1YUFHQyxXQUdELHlTQUVDLFdBR0QsbU1BQ0MseUJLOEVBLHNKQUNDLGlCQUNBLG9CQUNBLG1CQUNBLGdCQUdELG1WdkIySUEsa0NBZ0RBLGVBQ0EsaUJ1QnpMQyxldkJvT0MsMmZBc0NGLGtCQW5DSSx1QnVCck9ILCtWQUNDLHFCQUNBLFNBSUYsMktBQ0MsY0FFQSw2TEFDQyxhbEI1R29CLENrQmdIdEIsb0xBQ0MsY0FFQSx3bEJBS0MsY0FHRCxzTWI5RUYscUJBQ0EsNEJBQ0Esd0JBQ0Esd0JBQ0EsNkJBQ0Esd0JBcENBLFdBQ0EsWUFTQSw4SmFxR0csV0FDQSxrQkFDQSxZYmhHRiw4Q2E0RkMsc01iM0ZBLCtKQUdELHNEYXdGQyxzTWJ2RkEsK0phakRGLDJLQUNDLFdBR0QsNklBQ0MsbUJBR0Qsb0lBQ0MsY0FDQSxzQkFDQSx3QkFDQSxrQkFDQSxVQUNBLG1CQUVBLHNKQUNDLFdBQ0EsY0FDQSxXQUNBLGdDQUNBLGVBSUYsNkl2QjROQyx1Q0FnREEsZUFDQSxpQnVCM1FBLFdBQ0EsbUJBQ0EsYUFDQSxpQkFDQSxXdkJrVEUsME9Bc0NGLGlCQW5DSSxrQnVCblRKLG9VQUVDLGFsQnRCcUIsQ2tCeUl0QiwrREFDQyxXQUVBLHFFQUNDLGNBSUYsa0VBQ0MsY0FFQSx3RUFDQyxXQUdELHdFYjNHRixxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkFwQ0EsV0FDQSxZQVNBLDhKQU9DLDhDYXlIQyx3RWJ4SEEsK0pBR0Qsc0RhcUhDLHdFYnBIQSwrSmFORixxREFDQyxtQkFHRCxrREFDQyxXQUVBLHdEQUNDLGtCQUlGLHFEQUNDLFdBRUEsdUxBS0MsY0FnSEQsc0RBQ0MsV0FFQSw0REFDQyxhQUwyQixDQVM3Qix5REFDQyxhQVY0QixDQVk1QiwrREFDQyxXQUdELCtEYnBJRixxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkFwQ0EsV0FDQSxZQVNBLDhKQU9DLDhDYWtKQywrRGJqSkEsK0pBR0Qsc0RhOElDLCtEYjdJQSwrSmFzQkYsNENBQ0MsbUJBR0QseUNBQ0MsY0FFQSwrQ0FDQyxxQkFJRiw0Q0FDQyxXQUVBLHNHQUVDLGNBSUYsOENBQ0MsV0NsR0QsbURBQ0MsYUFHRCxvREFDQyxhQUNBLHVFQUNDLFlBSUYsZ0NBR0MsZ0JOWEQseWRBUUMsV0FHRCx5SkFHQyxXQUdELDJHQUVDLFdBR0QscUVBQ0MseUJNVkEscURBQ0MsV0FDQSwyREFDQyxXQU9ELHloQkFHQyxjQUNBLDJCQU1GLDZNQUdDLHNCQUtELG1DQUNDLGFBQ0Esc0JBRUQscUNBQ0MsU0FDQSxjQUVBLDRDQUNDLFFBR0YsMENBQ0MsYUNyREgsNEJBQ0UsbUJBR0Ysc0JBQ0UsY0FDQSxxQkFFQSx5QkFDRSxnQkFFQSwrQkFDRSxXQUNBLGNBQ0EsV0FDQSxlQUNBLDZCQUNBLGtCQUNBLFU7QUNyQkwsdUNBQ0Msa0JBQ0EsVUFHRCxxQ0FDQyxnQkFDQSxtQkFDQSx5QkFHRCw2QkFDQyxXQUNBLGlCQUNBLGtCQUdELDRCQ3dPQyxrQ0FnREEsZUFDQSxpQkEyQ0Usd0RBc0NGLGtCQW5DSSx1QkRuVUwsa0NDb09DLGtDQWdEQSxlQUNBLGlCRG5SQSxpQkM4VEUsOERBc0NGLGlCQW5DSSx1QkQ5VEwsaUNBQ0MsbUJBR0QsK0JDMk5DLGtDQVVBLGdCQVZBLGtDQWdEQSxlQUNBLGlCQ2hGRCxpQkFJQSwwQkFDQSxnQkFDQSxlQUNBLGdCQTNEQSxxQkFDQSxzQkFDQSxzQkFDQSxTQUNBLG1CQUNBLGtCQUNBLHFCQUNBLGVBQ0EsK0VBQ0EsaUJBQ0EsMkJBQ0EsaUJBRUEsbUNBQ0Esa0NBQ0EscUJBQ0Esd0JBQ0EsZ0JBaURBLHlCQUNBLFdBQ0EseUJBcENBLDRCQUNBLHdCQUNBLGtCQy9KQSx1SkhMQyxnQkNpVEUsMkRBc0NGLGtCQW5DSSx1QkM1SkwseUNBQ0Msb0JBQ0EsV0FDQSxlQTZDRCxxQ0FDQyx5QkFDQSxXQUNBLHlCQUNBLHFCQUdELHFDQUNDLHlCQUNBLFdBQ0EseUJBS0Qsd0xBSUMseUJBQ0EsV0FDQSx5QkE2REQsOENGaFNBLCtCR1dBLHdKRHdSQSxzREZuU0EsK0JHV0Esd0pIRkEsMkNJdENBLGtCQUNBLG1CQUNBLDRCQUNBLFlBQ0EsU0FDQSxnQkFDQSxVQUNBLFVBQ0EsV0FDQSxtQkppQ0EsMENBQ0MsbUJBQ0EsYUFDQSxXQUNBLGdCQUVBLDREQUNDLHFCQUNBLGlCQUNBLHNCQUNBLGVBQ0EsaUJBR0Qsd0VBQ0Msa0JBQ0EsaUJBR0QsNkVBQ0MsZUFDQSxhQUdELHlFQUNDLGdCQUdELHlFQUNDLFdBQ0Esa0JBQ0EsYUFHRCwwRUM0S0Esa0NBVUEsZ0JBVkEsa0NBZ0RBLGVBQ0EsaUJDaEZELGlCQUlBLDBCQUNBLGdCQUNBLGVBQ0EsZ0JBM0RBLHFCQUNBLHNCQUNBLHNCQUNBLFNBQ0EsbUJBQ0Esa0JBQ0EscUJBQ0EsZUFDQSwrRUFDQSxpQkFDQSwyQkFDQSxpQkFFQSxtQ0FDQSxrQ0FDQSxxQkFDQSx3QkFDQSxnQkFpREEseUJBQ0EsV0FDQSx5QkQyR0csc0dBc0NGLGtCQW5DSSx1QkM1Skwsb0ZBQ0Msb0JBQ0EsV0FDQSxlQTZDRCxnRkFDQyx5QkFDQSxXQUNBLHlCQUNBLHFCQUdELGdGQUNDLHlCQUNBLFdBQ0EseUJBS0Qsb1dBSUMseUJBQ0EsV0FDQSx5QkY5S0EseUVBQ0Msa0JBQ0EsUztBS3ZGSCxXQ29VQyxvREFDQyxZQUNBLDZCQ25GTSxXRGlGUCw2Q0FNRyw2QkN2RkksV0RpRlAsNkNBTUcsNkJDdkZJLFdEaUZQLDZDQU1HLDZCQ3ZGSSxXRGlGUCw4Q0FNRyxZRTdTSCxrQ0M4TkMsZUFnREEsaUJBQ0EsZ0JEdlJRLGdCRWpCZSx1Q0RtVnJCLGtCQXNDRixzQkFuQ0ksYUR4VEosZ0JBQ0Msb0JBQ0Esc0JBSUYsc0JGc0dBLGlCQUNBLGtCQUNBLGdCS3RHa0IsaUJMeUdsQixrQkFDQSxpQktoRW1CLGtCTG9GZixtQkFDQSxnQkU5SEgsNEJEd01NLHFCQzNNUCxrQkZzSUssa0JBQ0EsNkJDb0VFLGlFRHRERixlQUVDLDZCQ29EQyxpRUR0REYsZUFFQyw2QkNvREMsaUVEdERGLGdCQUVDLGlCRWpKTixlRTFDd0Isd0JGOEN4QixnQkFDQywwQkFFQSxvQkFDQywyQkFHRCxlQ2tQQSxpQkFDQSxnQkRqUEMsb0JBQ0EsdURDMlJDLGlCQXNDRixrQ0QvVEMsZ0JBQ0MsaUJBQ0EsaUJBQ0EsOENBRUQsV0FDQyxTQUNBLHNCQUtILGdCRXRFd0IsMENGMEV2Qix5QkFDQyxrQkFJRixpQkFDQyxtQkFDQSx1QkFHRCwySUk1RUEsWUo4RUMsNEJBQ0EseUJBQ0EsY0FHRCxVQUNDLFlBQ0MsOENJMUJGLFdObUlBLGVBQ0EsYUFDQSxrQkFXRyxNQVVILGNBbkJBLDRDTXZJQSxlTndJQyw2QkNvQ00sNENLNUtQLGlCTm1KSSxvSEFTSixXQUVDLGNBQ0EsWUFDQSx5REFFRCxVQUNDLGtETTlKRCxzQk5xQ0MsV0FDQSxZQUNBLGtCQUNBLGlCQU9HLDRCQ3dIRyxpREt2S1AsaUJOa0RLLDZCTTVDSixjTmdZQyxnQkE3SEYsZUFpSUUsY0FDQSw0QkNwT0ssMkJLaktOLGNOdVpJLDBCQXBKTCx5QkF1Skssd0JBQ0EsNkJDMVBFLDJCS2pLTixjTnVaSSwwQkFwSkwseUJBdUpLLHdCQUNBLHNETXhaSCxjTjZYQSxnQkE3SEYsZUFpSUUsY0FDQSw0Qk1yWUQsY05nWUMsZ0JBN0hGLGVBaUlFLGNBQ0EsNEJDcE9LLDJCS2pLTixjTnVaSSxlQXBKTCxjQXVKSyxhQUNBLDZCQzFQRSwyQktqS04sY051WkksMEJBcEpMLHlCQXVKSyx3QkFDQSxzRE14WkgsY042WEEsZUE3SEYsY0FpSUUsYUFDQSw0Qk1yWUQsY05nWUMsZ0JBN0hGLGVBaUlFLGNBQ0EsNEJDcE9LLDJCS2pLTixjTnVaSSwwQkFwSkwseUJBdUpLLHdCQUNBLHNETXhaSCxjTjZYQSxlQTdIRixjQWlJRSxhQUNBLDRCQ3BPSyxvREs5SkwsY05vWkcsZUFwSkwsY0F1SkssYUFDQSw2Qk0zWkosY05nWUMsZ0JBN0hGLGVBaUlFLGNBQ0EscURNbFlBLGNONlhBLGVBN0hGLGNBaUlFLGFBQ0EsNEJDcE9LLG9ESzlKTCxjTm9aRyxlQXBKTCxjQXVKSyxhQUNBLDZCQzFQRSxvREs5SkwsY05vWkcsMEJBcEpMLHlCQXVKSyx3QkFDQSx1RE1sWkwsZ0JBRUMsbUJBQ0EsdUJBQ0EsYUFDQSx5QkFHRCxTQUNDLG9CQUNBLGtCQUNBLGVBQ0Esd0NBRUEsa0JBR0MscUJBQ0EsaUJBSFksY0FLWiw4Q0FFQSxZQUNDLGtCQUNBLFFBQ0EsUUFDQSxxRUFHQyxxQkN4REosNEJBQ0Esd0JBQ0Esd0JBQ0EsNkJBQ0Esd0JBQ0EsV0FqRFEsd0tBdUJSLCtDQU9DLG9FRHNFRyw0SkNyRUYsd0RBR0Qsb0VEa0VHLDRKQ2pFRixxRURpRUUscUJDeERKLDRCQUNBLHdCQUNBLHdCQUNBLDZCQUNBLHdCQUNBLFdBakRRLHdLQXVCUiwrQ0FPQyxtRURzRUcsNEpDckVGLHdEQUdELG1FRGtFRyw0SkNqRUYsb0REeUVBLHdCQUVDLCtCQU1ILGlCQUVDLGlCQUNBLG9CQUVBLDRCTHNHTSw4QkszR1AsYUFPRSxtQkFDQSw4Q0FLRCxZQUNDLDBCQUlGLGdCQUNDLGtCQUNBLHdCQUdELGdCQUNDLG1CQUNBLGFBQ0Esb0NBRUEsYUFDQyw4QkFJRixZQUNDLG9DQUVBLHFCQzVHRCw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkFDQSxXQWpEUSxpSkF1QlIsV0R3SUUsaUJBQ0EsK0NDbElELG1DRDBIQSw2SkN6SEMsd0RBR0QsbUNEc0hBLDZKQ3JIQyx5QkRqQ0YsY0FDQyxrQkFDQSx5Q0FFQSxVQUNDLDJEQUdELFdDVk8seUtBdUJSLCtDQU9DLDBERHBCQSw2SkNxQkMsd0RBR0QsMEREeEJBLDZKQ3lCQyxxSERoQkQsb0JBRUMsa0RBR0QsYUFDQywwQkFHRCxhQUNDLCtEQUVBLFVBRUMsNkNBSUYsYUFDQyx5Q0FHRCxjQUNDLGtCQUNBLHVCQXpDRixXQUNDLGtCQUNBLHdDQUVBLFVBQ0MsMERBR0QsV0NWTyx5S0F1QlIsK0NBT0MseUREcEJBLDZKQ3FCQyx3REFHRCx5RER4QkEsNkpDeUJDLG1IRGhCRCxvQkFFQyxpREFHRCxVQUNDLHlCQUdELGFBQ0MsNkRBRUEsVUFFQyw0Q0FJRixhQUNDLHdDQUdELFdBQ0MsZUFDQSwyQkorQ0Ysa0JNM0dBLG1CQUNBLDRCQUNBLFlBQ0EsU0FDQSxnQkFDQSxVQUNBLFVBQ0EsV0FDQSxrQkFDQSxDO0FDWkQsV0NvVUMsb0RBQ0MsWUFDQSw2QkNuRk0sV0RpRlAsNkNBTUcsNkJDdkZJLFdEaUZQLDZDQU1HLDZCQ3ZGSSxXRGlGUCw2Q0FNRyw2QkN2RkksV0RpRlAsOENBTUcsY0F5QkgsYUFrQkMsaUZBRlcsbUJFclRaLHNCRmdGQSxpQkFDQSxrQkFDQSxnQkd0R2tCLGlCSHlHbEIsa0JBQ0EsaUJHaEVtQixrQkhvRmYsa0JBQ0EsNEJDMEVHLGtCQ3JMUCxrQkZnSEssa0JBQ0EsNkJDb0VFLDJERHRERixlQUVDLDZCQ29EQywyRER0REYsZUFFQyw2QkNvREMsMkREdERGLGdCQUVDLDJCRTVITCxlQUNDLGVBQ0EsYUFLRixXRmdJQSxlQUNBLGFBQ0Esa0JBV0csTUFVSCxjQW5CQSxZRXBJQSxlRnFJQyw2QkNvQ00sWUN6S1AsaUJGZ0pJLHVDQVNKLFdBRUMsY0FDQSxZQUNBLG1CQUVELFVBQ0Msc0JFMUpBLGFBQ0MsNENBRUEsY0FDQyx1QkFNSCxzQkZ1QkMsV0FDQSxZQUNBLGtCQUNBLGlCQU9HLDRCQ3dIRyxzQkN6SlAsaUJGb0NLLDZCRWhDTCxZQUNDLDRCQUlBLGNGK1dDLHlCQTdIRix3QkFpSUUsdUJBQ0EsNEJFcFhELGNGK1dDLDBCQTdIRix5QkFpSUUsd0JBQ0EsNEJFcFhELGNGK1dDLGVBN0hGLGNBaUlFLGFBQ0EsNEJFcFhELGNGK1dDLDBCQTdIRix5QkFpSUUsd0JBQ0EsNEJFcFhELGNGK1dDLDBCQTdIRix5QkFpSUUsd0JBQ0EsNEJFcFhELGNGK1dDLGVBN0hGLGNBaUlFLGFBQ0EsNEJFcFhELGNGK1dDLDBCQTdIRix5QkFpSUUsd0JBQ0EsNEJFcFhELGNGK1dDLDBCQTdIRix5QkFpSUUsd0JBQ0EsNEJFcFhELGNGK1dDLGVBN0hGLGNBaUlFLGFBQ0EsNkJFcFhELGNGK1dDLDBCQTdIRix5QkFpSUUsd0JBQ0EsNkJFcFhELGNGK1dDLDBCQTdIRix5QkFpSUUsd0JBQ0EsNkJFcFhELGNGK1dDLGdCQTdIRixlQWlJRSxjQUNBLDZCQTdFRixZQUNDLCtCQUlELGlCQXZJQSxrQkFDQSxVQUNBLG1DQWtKQyxjQUdDLGdCQTFFRixlQThFRSxlQUNBLFVBQ0EsaUNBVEQsY0FHQyxlQTFFRixjQThFRSxjQUNBLFNBQ0Esa0NBVEQsY0FHQywwQkExRUYseUJBOEVFLHlCQUNBLG9CQUNBLG1DQVRELGNBR0MsMEJBMUVGLHlCQThFRSx5QkFDQSxvQkFDQSxvQ0FURCxjQUdDLGVBMUVGLGNBOEVFLGNBQ0EsU0FDQSx1Q0FURCxjQUdDLGVBMUVGLGNBOEVFLGNBQ0EsU0FDQSw4QkFZRCxRQXRJRCxVQUNBLDhCQXdJQyxTQWpKRCxTQUNBLGdDQW1KQyxjQXBJRCw4QkE4SEMsbUJBdElELFVBQ0EsOEJBd0lDLG9CQWpKRCxTQUNBLGdDQW1KQyx5QkFwSUQsOEJBOEhDLG9CQXRJRCxVQUNBLDhCQXdJQyxxQkFqSkQsU0FDQSxnQ0FtSkMsMEJBcElELDhCQThIQyxTQXRJRCxVQUNBLDhCQXdJQyxVQWpKRCxTQUNBLGdDQW1KQyxlQXBJRCw4QkE4SEMsb0JBdElELFVBQ0EsOEJBd0lDLHFCQWpKRCxTQUNBLGdDQW1KQywwQkFwSUQsOEJBOEhDLG9CQXRJRCxVQUNBLDhCQXdJQyxxQkFqSkQsU0FDQSxnQ0FtSkMsMEJBcElELDhCQThIQyxTQXRJRCxVQUNBLDhCQXdJQyxVQWpKRCxTQUNBLGdDQW1KQyxlQXBJRCw4QkE4SEMsb0JBdElELFVBQ0EsOEJBd0lDLHFCQWpKRCxTQUNBLGdDQW1KQywwQkFwSUQsOEJBOEhDLG9CQXRJRCxVQUNBLDhCQXdJQyxxQkFqSkQsU0FDQSxnQ0FtSkMsMEJBcElELDhCQThIQyxTQXRJRCxVQUNBLDhCQXdJQyxVQWpKRCxTQUNBLGdDQW1KQyxlQXBJRCwrQkE4SEMsb0JBdElELFVBQ0EsK0JBd0lDLHFCQWpKRCxTQUNBLGlDQW1KQywwQkFwSUQsK0JBOEhDLG9CQXRJRCxVQUNBLCtCQXdJQyxxQkFqSkQsU0FDQSxpQ0FtSkMsMEJBcElELDZCQ2hFTyw2QkR1SlAsWUFDQyxnQ0FJRCxpQkF2SUEsa0JBQ0EsVUFDQSxrQ0EySUMsY0F0SUQsZUFDQSxVQUNBLG9DQTJJQyxjQUdDLGdCQTFFRixlQThFRSxlQUNBLFVBQ0Esa0NBVEQsY0FHQyxlQTFFRixjQThFRSxjQUNBLFNBQ0EsbUNBVEQsY0FHQywwQkExRUYseUJBOEVFLHlCQUNBLG9CQUNBLG9DQVRELGNBR0MsMEJBMUVGLHlCQThFRSx5QkFDQSxvQkFDQSxxQ0FURCxjQUdDLGVBMUVGLGNBOEVFLGNBQ0EsU0FDQSx3Q0FURCxjQUdDLGVBMUVGLGNBOEVFLGNBQ0EsU0FDQSwrQkFZRCxRQXRJRCxVQUNBLCtCQXdJQyxTQWpKRCxTQUNBLGlDQW1KQyxjQXBJRCwrQkE4SEMsbUJBdElELFVBQ0EsK0JBd0lDLG9CQWpKRCxTQUNBLGlDQW1KQyx5QkFwSUQsK0JBOEhDLG9CQXRJRCxVQUNBLCtCQXdJQyxxQkFqSkQsU0FDQSxpQ0FtSkMsMEJBcElELCtCQThIQyxTQXRJRCxVQUNBLCtCQXdJQyxVQWpKRCxTQUNBLGlDQW1KQyxlQXBJRCwrQkE4SEMsb0JBdElELFVBQ0EsK0JBd0lDLHFCQWpKRCxTQUNBLGlDQW1KQywwQkFwSUQsK0JBOEhDLG9CQXRJRCxVQUNBLCtCQXdJQyxxQkFqSkQsU0FDQSxpQ0FtSkMsMEJBcElELCtCQThIQyxTQXRJRCxVQUNBLCtCQXdJQyxVQWpKRCxTQUNBLGlDQW1KQyxlQXBJRCwrQkE4SEMsb0JBdElELFVBQ0EsK0JBd0lDLHFCQWpKRCxTQUNBLGlDQW1KQywwQkFwSUQsK0JBOEhDLG9CQXRJRCxVQUNBLCtCQXdJQyxxQkFqSkQsU0FDQSxpQ0FtSkMsMEJBcElELCtCQThIQyxTQXRJRCxVQUNBLCtCQXdJQyxVQWpKRCxTQUNBLGlDQW1KQyxlQXBJRCxnQ0E4SEMsb0JBdElELFVBQ0EsZ0NBd0lDLHFCQWpKRCxTQUNBLGtDQW1KQywwQkFwSUQsZ0NBOEhDLG9CQXRJRCxVQUNBLGdDQXdJQyxxQkFqSkQsU0FDQSxrQ0FtSkMsMEJBcElELDJCRXZMRSxZQUNDLDJCQUlBLGNBR0MseUJGaU5KLHdCRTdNSSx3QkFDQSxtQkFDQSwyQkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsMkJBVEQsY0FHQyxlRmlOSixjRTdNSSxjQUNBLFNBQ0EsMkJBVEQsY0FHQywwQkZpTkoseUJFN01JLHlCQUNBLG9CQUNBLDJCQVRELGNBR0MsMEJGaU5KLHlCRTdNSSx5QkFDQSxvQkFDQSwyQkFURCxjQUdDLGVGaU5KLGNFN01JLGNBQ0EsU0FDQSwyQkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsMkJBVEQsY0FHQywwQkZpTkoseUJFN01JLHlCQUNBLG9CQUNBLDJCQVRELGNBR0MsZUZpTkosY0U3TUksY0FDQSxTQUNBLDRCQVRELGNBR0MsMEJGaU5KLHlCRTdNSSx5QkFDQSxvQkFDQSw0QkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsNEJBVEQsY0FHQyxnQkZpTkosZUU3TUksZUFDQSxVQUNBLDZCRHlHRyw2QkR1SlAsWUFDQyxnQ0FJRCxpQkF2SUEsa0JBQ0EsVUFDQSxrQ0EySUMsY0F0SUQsZUFDQSxVQUNBLG9DQTJJQyxjQUdDLGdCQTFFRixlQThFRSxlQUNBLFVBQ0Esa0NBVEQsY0FHQyxlQTFFRixjQThFRSxjQUNBLFNBQ0EsbUNBVEQsY0FHQywwQkExRUYseUJBOEVFLHlCQUNBLG9CQUNBLG9DQVRELGNBR0MsMEJBMUVGLHlCQThFRSx5QkFDQSxvQkFDQSxxQ0FURCxjQUdDLGVBMUVGLGNBOEVFLGNBQ0EsU0FDQSx3Q0FURCxjQUdDLGVBMUVGLGNBOEVFLGNBQ0EsU0FDQSwrQkFZRCxRQXRJRCxVQUNBLCtCQXdJQyxTQWpKRCxTQUNBLGlDQW1KQyxjQXBJRCwrQkE4SEMsbUJBdElELFVBQ0EsK0JBd0lDLG9CQWpKRCxTQUNBLGlDQW1KQyx5QkFwSUQsK0JBOEhDLG9CQXRJRCxVQUNBLCtCQXdJQyxxQkFqSkQsU0FDQSxpQ0FtSkMsMEJBcElELCtCQThIQyxTQXRJRCxVQUNBLCtCQXdJQyxVQWpKRCxTQUNBLGlDQW1KQyxlQXBJRCwrQkE4SEMsb0JBdElELFVBQ0EsK0JBd0lDLHFCQWpKRCxTQUNBLGlDQW1KQywwQkFwSUQsK0JBOEhDLG9CQXRJRCxVQUNBLCtCQXdJQyxxQkFqSkQsU0FDQSxpQ0FtSkMsMEJBcElELCtCQThIQyxTQXRJRCxVQUNBLCtCQXdJQyxVQWpKRCxTQUNBLGlDQW1KQyxlQXBJRCwrQkE4SEMsb0JBdElELFVBQ0EsK0JBd0lDLHFCQWpKRCxTQUNBLGlDQW1KQywwQkFwSUQsK0JBOEhDLG9CQXRJRCxVQUNBLCtCQXdJQyxxQkFqSkQsU0FDQSxpQ0FtSkMsMEJBcElELCtCQThIQyxTQXRJRCxVQUNBLCtCQXdJQyxVQWpKRCxTQUNBLGlDQW1KQyxlQXBJRCxnQ0E4SEMsb0JBdElELFVBQ0EsZ0NBd0lDLHFCQWpKRCxTQUNBLGtDQW1KQywwQkFwSUQsZ0NBOEhDLG9CQXRJRCxVQUNBLGdDQXdJQyxxQkFqSkQsU0FDQSxrQ0FtSkMsMEJBcElELDJCRXZMRSxZQUNDLDJCQUlBLGNBR0MseUJGaU5KLHdCRTdNSSx3QkFDQSxtQkFDQSwyQkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsMkJBVEQsY0FHQyxlRmlOSixjRTdNSSxjQUNBLFNBQ0EsMkJBVEQsY0FHQywwQkZpTkoseUJFN01JLHlCQUNBLG9CQUNBLDJCQVRELGNBR0MsMEJGaU5KLHlCRTdNSSx5QkFDQSxvQkFDQSwyQkFURCxjQUdDLGVGaU5KLGNFN01JLGNBQ0EsU0FDQSwyQkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsMkJBVEQsY0FHQywwQkZpTkoseUJFN01JLHlCQUNBLG9CQUNBLDJCQVRELGNBR0MsZUZpTkosY0U3TUksY0FDQSxTQUNBLDRCQVRELGNBR0MsMEJGaU5KLHlCRTdNSSx5QkFDQSxvQkFDQSw0QkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsNEJBVEQsY0FHQyxnQkZpTkosZUU3TUksZUFDQSxVQUNBLDZCRHlHRyw2QkR1SlAsWUFDQyxnQ0FJRCxpQkF2SUEsa0JBQ0EsVUFDQSxrQ0EySUMsY0F0SUQsZUFDQSxVQUNBLG9DQTJJQyxjQUdDLGdCQTFFRixlQThFRSxlQUNBLFVBQ0Esa0NBVEQsY0FHQyxlQTFFRixjQThFRSxjQUNBLFNBQ0EsbUNBVEQsY0FHQywwQkExRUYseUJBOEVFLHlCQUNBLG9CQUNBLG9DQVRELGNBR0MsMEJBMUVGLHlCQThFRSx5QkFDQSxvQkFDQSxxQ0FURCxjQUdDLGVBMUVGLGNBOEVFLGNBQ0EsU0FDQSx3Q0FURCxjQUdDLGVBMUVGLGNBOEVFLGNBQ0EsU0FDQSwrQkFZRCxRQXRJRCxVQUNBLCtCQXdJQyxTQWpKRCxTQUNBLGlDQW1KQyxjQXBJRCwrQkE4SEMsbUJBdElELFVBQ0EsK0JBd0lDLG9CQWpKRCxTQUNBLGlDQW1KQyx5QkFwSUQsK0JBOEhDLG9CQXRJRCxVQUNBLCtCQXdJQyxxQkFqSkQsU0FDQSxpQ0FtSkMsMEJBcElELCtCQThIQyxTQXRJRCxVQUNBLCtCQXdJQyxVQWpKRCxTQUNBLGlDQW1KQyxlQXBJRCwrQkE4SEMsb0JBdElELFVBQ0EsK0JBd0lDLHFCQWpKRCxTQUNBLGlDQW1KQywwQkFwSUQsK0JBOEhDLG9CQXRJRCxVQUNBLCtCQXdJQyxxQkFqSkQsU0FDQSxpQ0FtSkMsMEJBcElELCtCQThIQyxTQXRJRCxVQUNBLCtCQXdJQyxVQWpKRCxTQUNBLGlDQW1KQyxlQXBJRCwrQkE4SEMsb0JBdElELFVBQ0EsK0JBd0lDLHFCQWpKRCxTQUNBLGlDQW1KQywwQkFwSUQsK0JBOEhDLG9CQXRJRCxVQUNBLCtCQXdJQyxxQkFqSkQsU0FDQSxpQ0FtSkMsMEJBcElELCtCQThIQyxTQXRJRCxVQUNBLCtCQXdJQyxVQWpKRCxTQUNBLGlDQW1KQyxlQXBJRCxnQ0E4SEMsb0JBdElELFVBQ0EsZ0NBd0lDLHFCQWpKRCxTQUNBLGtDQW1KQywwQkFwSUQsZ0NBOEhDLG9CQXRJRCxVQUNBLGdDQXdJQyxxQkFqSkQsU0FDQSxrQ0FtSkMsMEJBcElELDJCRXZMRSxZQUNDLDJCQUlBLGNBR0MseUJGaU5KLHdCRTdNSSx3QkFDQSxtQkFDQSwyQkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsMkJBVEQsY0FHQyxlRmlOSixjRTdNSSxjQUNBLFNBQ0EsMkJBVEQsY0FHQywwQkZpTkoseUJFN01JLHlCQUNBLG9CQUNBLDJCQVRELGNBR0MsMEJGaU5KLHlCRTdNSSx5QkFDQSxvQkFDQSwyQkFURCxjQUdDLGVGaU5KLGNFN01JLGNBQ0EsU0FDQSwyQkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsMkJBVEQsY0FHQywwQkZpTkoseUJFN01JLHlCQUNBLG9CQUNBLDJCQVRELGNBR0MsZUZpTkosY0U3TUksY0FDQSxTQUNBLDRCQVRELGNBR0MsMEJGaU5KLHlCRTdNSSx5QkFDQSxvQkFDQSw0QkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsNEJBVEQsY0FHQyxnQkZpTkosZUU3TUksZUFDQSxVQUNBLDZCRHlHRyw4QkR1SlAsWUFDQyxpQ0FJRCxpQkF2SUEsa0JBQ0EsVUFDQSxtQ0EySUMsY0F0SUQsZUFDQSxVQUNBLHFDQTJJQyxjQUdDLGdCQTFFRixlQThFRSxlQUNBLFVBQ0EsbUNBVEQsY0FHQyxlQTFFRixjQThFRSxjQUNBLFNBQ0Esb0NBVEQsY0FHQywwQkExRUYseUJBOEVFLHlCQUNBLG9CQUNBLHFDQVRELGNBR0MsMEJBMUVGLHlCQThFRSx5QkFDQSxvQkFDQSxzQ0FURCxjQUdDLGVBMUVGLGNBOEVFLGNBQ0EsU0FDQSx5Q0FURCxjQUdDLGVBMUVGLGNBOEVFLGNBQ0EsU0FDQSxnQ0FZRCxRQXRJRCxVQUNBLGdDQXdJQyxTQWpKRCxTQUNBLGtDQW1KQyxjQXBJRCxnQ0E4SEMsbUJBdElELFVBQ0EsZ0NBd0lDLG9CQWpKRCxTQUNBLGtDQW1KQyx5QkFwSUQsZ0NBOEhDLG9CQXRJRCxVQUNBLGdDQXdJQyxxQkFqSkQsU0FDQSxrQ0FtSkMsMEJBcElELGdDQThIQyxTQXRJRCxVQUNBLGdDQXdJQyxVQWpKRCxTQUNBLGtDQW1KQyxlQXBJRCxnQ0E4SEMsb0JBdElELFVBQ0EsZ0NBd0lDLHFCQWpKRCxTQUNBLGtDQW1KQywwQkFwSUQsZ0NBOEhDLG9CQXRJRCxVQUNBLGdDQXdJQyxxQkFqSkQsU0FDQSxrQ0FtSkMsMEJBcElELGdDQThIQyxTQXRJRCxVQUNBLGdDQXdJQyxVQWpKRCxTQUNBLGtDQW1KQyxlQXBJRCxnQ0E4SEMsb0JBdElELFVBQ0EsZ0NBd0lDLHFCQWpKRCxTQUNBLGtDQW1KQywwQkFwSUQsZ0NBOEhDLG9CQXRJRCxVQUNBLGdDQXdJQyxxQkFqSkQsU0FDQSxrQ0FtSkMsMEJBcElELGdDQThIQyxTQXRJRCxVQUNBLGdDQXdJQyxVQWpKRCxTQUNBLGtDQW1KQyxlQXBJRCxpQ0E4SEMsb0JBdElELFVBQ0EsaUNBd0lDLHFCQWpKRCxTQUNBLG1DQW1KQywwQkFwSUQsaUNBOEhDLG9CQXRJRCxVQUNBLGlDQXdJQyxxQkFqSkQsU0FDQSxtQ0FtSkMsMEJBcElELDRCRXZMRSxZQUNDLDRCQUlBLGNBR0MseUJGaU5KLHdCRTdNSSx3QkFDQSxtQkFDQSw0QkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsNEJBVEQsY0FHQyxlRmlOSixjRTdNSSxjQUNBLFNBQ0EsNEJBVEQsY0FHQywwQkZpTkoseUJFN01JLHlCQUNBLG9CQUNBLDRCQVRELGNBR0MsMEJGaU5KLHlCRTdNSSx5QkFDQSxvQkFDQSw0QkFURCxjQUdDLGVGaU5KLGNFN01JLGNBQ0EsU0FDQSw0QkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsNEJBVEQsY0FHQywwQkZpTkoseUJFN01JLHlCQUNBLG9CQUNBLDRCQVRELGNBR0MsZUZpTkosY0U3TUksY0FDQSxTQUNBLDZCQVRELGNBR0MsMEJGaU5KLHlCRTdNSSx5QkFDQSxvQkFDQSw2QkFURCxjQUdDLDBCRmlOSix5QkU3TUkseUJBQ0Esb0JBQ0EsNkJBVEQsY0FHQyxnQkZpTkosZUU3TUksZUFDQSxVQUNBLGFFUUgsNE9BQ0Msd0JDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELDhPQUNDLHdCQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCwwUEFDQyx3QkNoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsa1BBQ0Msd0JDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELDhQQUNDLHdCQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCxnUEFDQyx3QkNoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsb1BBQ0Msd0JDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELDRPQUNDLHdCQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCx3UEFDQyx3QkNoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsOE9BQ0Msd0JDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELGtRQUNDLGtDQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCw4UUFDQyxrQ0NoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsc1FBQ0Msa0NDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELGtSQUNDLGtDQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCxnUkFDQyxrQ0NoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsb1FBQ0Msa0NDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELHdRQUNDLGtDQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCxvUkFDQyxrQ0NoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsZ1FBQ0Msa0NDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELGtRQUNDLGtDQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsK0JFdkZELGtDQzJMQSxlQW9DRSxpQkFDQSxnQkEzQkYsY0M3TkQsZUFDQSxnRUQ4U0csa0JBd0JDLHNCQXJCQywrQkQxUkosa0NDMkxBLGVBb0NFLGlCQUNBLGdCQTNCRixjQzdORCxlQUNBLGdFRDhTRyxrQkF3QkMsc0JBckJDLCtCRDFSSixrQ0MyTEEsZUFvQ0UsaUJBQ0EsZ0JBM0JGLGNDN05ELGVBQ0EsZ0VEOFNHLGtCQXdCQyxzQkFyQkMsK0JEMVJKLGtDQzJMQSxlQW9DRSxpQkFDQSxnQkEzQkYsY0M3TkQsZUFDQSxnRUQ4U0csaUJBd0JDLHNCQXJCQywrQkQxUkosa0NDMkxBLGVBb0NFLGlCQUNBLGdCQTNCRixjQzdORCxlQUNBLGdFRDhTRyxrQkF3QkMsc0JBckJDLCtCRDFSSixrQ0MyTEEsZUFvQ0UsaUJBQ0EsZ0JBM0JGLGNDN05ELGVBQ0EsZ0VEOFNHLGtCQXdCQyxzQkFyQkMsb0JEblJKLGVDOExBLHNCRHZMQSxpQkFDQyxtQkFHRCxrQ0N5S0EsaUJDbkxELGdCQUVBLHFCQUNBLGNBQ0EscUJBRUEsZUFDQSxtQkZPQyxrQ0NxS0EsaUJDbE1ELGdCQUVBLG1CQUNBLGNBQ0EscUJBRUEsa0JBQ0Esb0JGNkJDLGtDQzhKQSxlQWdEQSxpQkFDQSxnQkM1UEQsYUFDQSxnRERzU0csa0JBc0NGLHNCQW5DSSxvQkR0UEoscUJFZ0dBLGVBQ0EsMEJBQ0EsY0E1RVksNEJBeUZPLDJFQVhuQixtQkZwR0EsZ0JFcUdDLGdDQTVFZSw4QkE4RWYsMkJBYUYsY0E3RmMsNEJBZ0dPLHVEQU9yQixnQ0FFcUIsK0NBekdQLDhCRm5CYiwrSkc3REQsNEJEMkhDLGtEQUtBLHdDQUNBLDZCQVFBLG1EQUlBLCtDQ3RJQSw2QkhzREEsOEpHckRDLHdEQUdELDZCSGtEQSw4SkdqREMsc0NEdUhELDZCRnRFQSwrQ0V1RUMsK0NBRUQsNkJGekVBLHdERTBFQyxzQ0FPRCw2QkZqRkEsdUJFa0ZDLG9EQUVELGtCRXpMRCxtQkFDQSw0QkFDQSxZQUNBLFNBQ0EsZ0JBQ0EsVUFDQSxVQUNBLFdBQ0EsbUJBQ0EsOEJGa0xFLG9CRjVFRCxnQkV5SkEsVUFDQSxlQUNBLHVCQU1ELGtCQUVFLFNBRUEsNEJBR0EsOEJBRUQsa0NEakNBLHFCQ29DRSxrQkFDQSxPQUNBLDRCQUNBLDZCRnpLRixrQkV3SkEsdUNBV0EsZ0JEdkJBLHNCQzJDRSx1QkFDQSw2QkFDQSw4QkFFQSwyQkFFQSx5Q0ExQkYsZ0JBVUUsY0FDQSw4QkFFQSwwQkFFQSx1QkZuS0Ysa0NDbUhBLGVBZ0RBLGlCQUNBLGVDeUJELGdCQUNBLGFBQ0EsbUREZ0JHLGtCQXNDRixzQkFuQ0ksc0JEM01KLGtDQzRHQSxlQWdEQSxpQkFDQSxhQ21CRCxrRER3Qkcsa0JBc0NGLHNCQW5DSSwrQ0RwTUosa0NDcUdBLGVBZ0RBLGlCQUNBLGdCQzVQRCxhQUNBLHVHRHNTRyxrQkFzQ0Ysc0JBbkNJLHFESXBWTCxrQ0pxUEMsZUFvQ0UsaUJBQ0EsZ0JBM0JGLGNDN05ELGVBQ0EsdUhEOFNHLGtCQXdCQyxzQkFyQkMscURJaFZMLGtDSmlQQyxlQW9DRSxpQkFDQSxnQkEzQkYsY0M3TkQsZUFDQSx1SEQ4U0csa0JBd0JDLHNCQXJCQyxxREk1VUwsa0NKNk9DLGVBb0NFLGlCQUNBLGdCQTNCRixjQzdORCxlQUNBLHVIRDhTRyxrQkF3QkMsc0JBckJDLHFESXhVTCxrQ0p5T0MsZUFvQ0UsaUJBQ0EsZ0JBM0JGLGNDN05ELGVBQ0EsdUhEOFNHLGlCQXdCQyxzQkFyQkMscURJcFVMLGtDSnFPQyxlQW9DRSxpQkFDQSxnQkEzQkYsY0M3TkQsZUFDQSx1SEQ4U0csa0JBd0JDLHNCQXJCQyxxREloVUwsa0NKaU9DLGVBb0NFLGlCQUNBLGdCQTNCRixjQzdORCxlQUNBLHVIRDhTRyxrQkF3QkMsc0JBckJDLG1ESTVUTCxxQkhzS0MsZUFDQSwwQkFDQSxjQTVFWSw0QkF5Rk8sMkVBWG5CLGtERzFLRCxnQkgyS0UsZ0NBNUVlLDhCQThFZixnRUFhRixjQTdGYyw0QkFnR08sNEZBT3JCLGdDQUVxQiwrQ0F6R1AsbURHekZkLGtDSnlOQyxlQWdEQSxpQkFDQSxnQkM1UEQsYUFDQSwyR0RzU0csa0JBc0NGLHNCQW5DSSx5R0lwVEwsZ0JIcU9DLFVBQ0EsZUFDQSxxSEFNRCxrQkFFRSxTQUVBLDRCQUdBLGlKQUVELGtDRGpDQSxxQkNvQ0Usa0JBQ0EsT0FDQSw0QkFDQSxxREd0UEgsa0JIcU9DLHlFQVdBLGdCRHZCQSxzQkMyQ0UsdUJBQ0EsNkJBQ0EsOEJBRUEsMkJBRUEseUVBMUJGLGdCQVVFLGNBQ0EsOEJBRUEsMEJBRUEsNkRHclBILGtDSnFNQyxlQWdEQSxpQkFDQSxhQ21CRCxxSER3Qkcsa0JBc0NGLHNCQW5DSSw2REloU0wsZUoyTUMscURJcE1ELGlCQUNDLHVEQUdELGtDSnNMQyxpQkNuTEQsZ0JBRUEscUJBQ0EsY0FDQSxxQkFFQSxlQUNBLHVER05BLGtDSmtMQyxpQkNsTUQsZ0JBRUEsbUJBQ0EsY0FDQSxxQkFFQSxrQkFDQSxxRUdhQSxrQ0o4S0MsZUFnREEsaUJBQ0EsZUN5QkQsZ0JBQ0EsYUFDQSw2SERnQkcsa0JBc0NGLHNCQW5DSSxhUFNMLGFBa0JDLGlGQUZXLEM7QVluWGIsc0JBQ0UsZ0JBQ0EsbUJBQ0EsZUFDQSxpQkFHRix3QkFDRSxrQ0FDQSxjQUNBLHFCQUNBLDhCQUNBLHNDO0FDbUNELFNBS0MscUJDM0NELHdCQUNDLFdBQ0Esb0JBTmMsQ0FtQmQsd0NBQ0MsK0lBR0QsOEVBTUMscUJBQ0EseUJBQ0EsV0FDQSw0RkFFQywrSUFRRCw4Q0FERCxpQ0FFRSxzQkFDQSxXQUNBLHdDQUNDLG1KQUdGLHNEQVJELGlDQVNFLHNCQUNBLFdBQ0Esd0NBQ0MsbUpBbENILHlDQUNDLGdKQUdELGdGQU1DLHFCQUNBLHlCQUNBLFdBQ0EsOEZBRUMsZ0pBUUQsOENBREQsa0NBRUUsc0JBQ0EsV0FDQSx5Q0FDQyxvSkFHRixzREFSRCxrQ0FTRSxzQkFDQSxXQUNBLHlDQUNDLG9KQWxDSCx5Q0FDQyxnSkFHRCxnRkFNQyxxQkFDQSx5QkFDQSxXQUNBLDhGQUVDLGdKQVFELDhDQURELGtDQUVFLHNCQUNBLFdBQ0EseUNBQ0Msb0pBR0Ysc0RBUkQsa0NBU0Usc0JBQ0EsV0FDQSx5Q0FDQyxvSkFsQ0gscUNBQ0MsMElBR0Qsd0VBTUMscUJBQ0EseUJBQ0EsV0FDQSxzRkFFQywwSUFRRCw4Q0FERCw4QkFFRSxzQkFDQSxXQUNBLHFDQUNDLDhJQUdGLHNEQVJELDhCQVNFLHNCQUNBLFdBQ0EscUNBQ0MsOElBbENILHNDQUNDLDJJQUdELDBFQU1DLHFCQUNBLHlCQUNBLFdBQ0Esd0ZBRUMsMklBUUQsOENBREQsK0JBRUUsc0JBQ0EsV0FDQSxzQ0FDQywrSUFHRixzREFSRCwrQkFTRSxzQkFDQSxXQUNBLHNDQUNDLCtJQWxDSCxxQ0FDQywwSUFHRCx3RUFNQyxxQkFDQSx5QkFDQSxXQUNBLHNGQUVDLDBJQVFELDhDQURELDhCQUVFLHNCQUNBLFdBQ0EscUNBQ0MsOElBR0Ysc0RBUkQsOEJBU0Usc0JBQ0EsV0FDQSxxQ0FDQyw4SUFsQ0gsMENBQ0MsaUpBR0Qsa0ZBTUMscUJBQ0EseUJBQ0EsV0FDQSxnR0FFQyxpSkFRRCw4Q0FERCxtQ0FFRSxzQkFDQSxXQUNBLDBDQUNDLHFKQUdGLHNEQVJELG1DQVNFLHNCQUNBLFdBQ0EsMENBQ0MscUpBbENILHlDQUNDLGdKQUdELGdGQU1DLHFCQUNBLHlCQUNBLFdBQ0EsOEZBRUMsZ0pBUUQsOENBREQsa0NBRUUsc0JBQ0EsV0FDQSx5Q0FDQyxvSkFHRixzREFSRCxrQ0FTRSxzQkFDQSxXQUNBLHlDQUNDLG9KQWxDSCwwQ0FDQywrSUFHRCxrRkFNQyxxQkFDQSx5QkFDQSxXQUNBLGdHQUVDLCtJQVFELDhDQURELG1DQUVFLHNCQUNBLFdBQ0EsMENBQ0MsbUpBR0Ysc0RBUkQsbUNBU0Usc0JBQ0EsV0FDQSwwQ0FDQyxtSkFzQkosd0JBQ0MsaUJBSGlCLENBTWxCLCtCQUNDLFdBQ0EsWUFDQSwwQkFNQSx3QkFDQyxrQkFHRCxvREFDQyxTQW9DQSwwQ0FDQyxnQkFJRixxRUFDQyxXQUNBLDZCQUdELDRDQUNDLGNBekVLLENEbEJOLFlBQ0MsU0FDQSxVQUlGLGlCQUNDLHNCQUNBLFdBQ0EscUJBQ0EsZUFDQSxjQUdELGVBQ0MsYUFDQSxtQkFDQSxrQkFDQSxlQUNBLFVBQ0EsNkJBQ0EsNEJBQ0EseUJBRUEsV0FDQSxxQkFHQSwwQ0FFQyxVQUlELHNCQUNDLFdBQ0EscUJBQ0EsNEJBQ0EsMkJBSUQscUJBQ0Msa0JBQ0EsY0FDQSxXQUlGLGVFb0pDLGtDQWdEQSxlQUNBLGlCRm5NQSxrQkU4T0UsMkNBc0NGLGtCQW5DSSx1QkY1T0wsZ0VHM0dBLGtCQUNBLG1CQUNBLDRCQUNBLFlBQ0EsU0FDQSxnQkFDQSxVQUNBLFVBQ0EsV0FDQSxtQkZvRUEsK0JBQ0MsZ0JBSGlCLENBTWxCLHNDQUNDLFdBQ0EsWUFDQSwwQkFtQkEsaUNBQ0Msa0JBSUQsK0JBQ0MsU0FJRCxxQ0FDQyx3QkFDQSx5QkFDQSxTQUNBLFVBUUEsbURBQ0MsZ0JBVUYsNEVBQ0MsV0FDQSw0QkFHRCxtREFDQyxjQXpFSyxDQS9EUCxpQ0FDQyxXQUNBLG9CQU5jLENBbUJkLGlEQUNDLCtJQUdELGdHQU1DLHFCQUNBLHlCQUNBLFdBQ0EsOEdBRUMsK0lBUUQsOENBREQsMENBRUUsc0JBQ0EsV0FDQSxpREFDQyxtSkFHRixzREFSRCwwQ0FTRSxzQkFDQSxXQUNBLGlEQUNDLG1KQWxDSCxrREFDQyxnSkFHRCxrR0FNQyxxQkFDQSx5QkFDQSxXQUNBLGdIQUVDLGdKQVFELDhDQURELDJDQUVFLHNCQUNBLFdBQ0Esa0RBQ0Msb0pBR0Ysc0RBUkQsMkNBU0Usc0JBQ0EsV0FDQSxrREFDQyxvSkFsQ0gsa0RBQ0MsZ0pBR0Qsa0dBTUMscUJBQ0EseUJBQ0EsV0FDQSxnSEFFQyxnSkFRRCw4Q0FERCwyQ0FFRSxzQkFDQSxXQUNBLGtEQUNDLG9KQUdGLHNEQVJELDJDQVNFLHNCQUNBLFdBQ0Esa0RBQ0Msb0pBbENILDhDQUNDLDBJQUdELDBGQU1DLHFCQUNBLHlCQUNBLFdBQ0Esd0dBRUMsMElBUUQsOENBREQsdUNBRUUsc0JBQ0EsV0FDQSw4Q0FDQyw4SUFHRixzREFSRCx1Q0FTRSxzQkFDQSxXQUNBLDhDQUNDLDhJQWxDSCwrQ0FDQywySUFHRCw0RkFNQyxxQkFDQSx5QkFDQSxXQUNBLDBHQUVDLDJJQVFELDhDQURELHdDQUVFLHNCQUNBLFdBQ0EsK0NBQ0MsK0lBR0Ysc0RBUkQsd0NBU0Usc0JBQ0EsV0FDQSwrQ0FDQywrSUFsQ0gsOENBQ0MsMElBR0QsMEZBTUMscUJBQ0EseUJBQ0EsV0FDQSx3R0FFQywwSUFRRCw4Q0FERCx1Q0FFRSxzQkFDQSxXQUNBLDhDQUNDLDhJQUdGLHNEQVJELHVDQVNFLHNCQUNBLFdBQ0EsOENBQ0MsOElBbENILG1EQUNDLGlKQUdELG9HQU1DLHFCQUNBLHlCQUNBLFdBQ0Esa0hBRUMsaUpBUUQsOENBREQsNENBRUUsc0JBQ0EsV0FDQSxtREFDQyxxSkFHRixzREFSRCw0Q0FTRSxzQkFDQSxXQUNBLG1EQUNDLHFKQWxDSCxrREFDQyxnSkFHRCxrR0FNQyxxQkFDQSx5QkFDQSxXQUNBLGdIQUVDLGdKQVFELDhDQURELDJDQUVFLHNCQUNBLFdBQ0Esa0RBQ0Msb0pBR0Ysc0RBUkQsMkNBU0Usc0JBQ0EsV0FDQSxrREFDQyxvSkFsQ0gsbURBQ0MsK0lBR0Qsb0dBTUMscUJBQ0EseUJBQ0EsV0FDQSxrSEFFQywrSUFRRCw4Q0FERCw0Q0FFRSxzQkFDQSxXQUNBLG1EQUNDLG1KQUdGLHNEQVJELDRDQVNFLHNCQUNBLFdBQ0EsbURBQ0MsbUpEdUVGLG9DQUNDLFdBR0Qsa0NBQ0Msc0JBRUQsa0NFbUtELGVBQ0EsaUJGaktFLG1CQUNBLHVCRTJNQSw4REFzQ0Ysa0JFeFhGLCtCQUNFLGlCQUdGLDZDQUNFLGNDeU9NLDRCRHJPTixrQ0FDRSxjQUtGLGdEQUNFLFdBQ0EsWUFDQSwwQkFJSixzQ0FDRSxpQkFHRixvREFDRSxjO0FFaENGLGNBQ0UsY0FDQSx5QjtBQ0tGLGdCQUNFLGtCQUNBLFVBR0YsY0FDRSxrQkFDQSxnQkFDQSxnQkFDQSxzQkNtT00sMkJEdk9SLGNBT0ksaUJBR0YsZ0NBQ0UsWUFDQSxZQUNBLGNDME5JLDJCRDdOTixnQ0FNSSxhQUNBLGFBRUYsc0NBQ0UsaUJBQ0EsMkJBQ0EsWUFDQSxXQUNBLHlEQUNBLG1DQUNBLGdDQUlKLHFCQUNFLDhDQUNBLG1CQUNBLGVBQ0EsaUJBQ0Esa0JBQ0EsV0FDQSxlQ2tNSSwyQkR6TU4scUJBVUksZUFDQSxpQkFDQSxvQkFJSix1QkFDRSxtQ0FDQSxjQUNBLGtCQUNBLGVBQ0EsaUJBQ0EsZ0JBQ0Esa0JBQ0EsZ0JDaUxJLDJCRHpMTix1QkFXSSxtQkFLTixTQUNFLGtCQUNBLG1CQ3VLTSwyQkR6S1IsU0FLSSxvQkFJSixPQUNFLGVBQ0EsaUJBQ0Esa0JBQ0Esa0JDNEpNLDJCRGhLUixPQU9JLG9CO0FFMUZKLFlBQ0ksYTtBQ0VKLDBCQUVFLGNDOE9NLDJCRGhQUiwwQkFLSSxnQkFJSiw2QkFDRSxlQUdGLG1EQUNFLHNCQUNBLHVCQUNBLGtCQUNBLGdCQUVBLDRCQU5GLG1EQU9JLG1CQUNBLGlCQUlKLG1IQUVFLFFBQ0EsVUFHRix5REFDRSxXQUlGLGtEQUNFLHdCQUNBLFFBR0Ysc0ZBQ0UsUUFDQSxVQUdGLGNBQ0UsVUFDQSxpQ0FDQSxtQkFDQSxtQkFFQSx1QkFDRSxzQkFDQSxXQzBMSSwyQkQ1TE4sdUJBS0ksYUFDQSw4QkFDQSw0QkFJSixtQkFDRSxhQUNBLDhCQUNBLFdDOEtJLDJCRGpMTixtQkFNSSxjQUNBLFlBSUosMEVBRUUsZ0ZBR0Ysc0JBQ0UsZ0JBR0Ysd0hBRUUsZUMySkksMkJEN0pOLHdIQUtJLGNBQ0EsNEJBQ0EsVUFDQSw4QkFDQSxVQUNBLHNCQUNBLG1CQ2tKRSwyQkQ3Sk4sd0hBZUksY0FDQSxpQ0FDQSxnQkFDQSxxQkMySUUsMkJEN0pOLHdIQXNCSSxlQUNBLGVBQ0EsYUFJSixzQkFDRSxnQkFHRixrREFDRSxjQUNBLGdCQUNBLGVBQ0EsaUJBQ0EsbUJDd0hJLDJCRDdITixrREFRSSxjQUlKLGlDQUNFLFdBQ0EsWUFDQSxnQkFDQSxrQkFDQSxRQUVBLDRCQVBGLGlDQVFJLFNBSUosbUNBQ0Usd0JBQ0EsZ0JBQ0EsZ0JBQ0Esc0JBQ0EsZUFDQSxjQUNBLHNCQUNBLGFBQ0EsNEJBQ0Esa0JBQ0EsZUFDQSxpQkFDQSxnQkFDQSxrQkFFQSwwTUFLRSxjQUdGLDRCQXhCRixtQ0F5QkksNkJDNEVFLDJCRHJHTixtQ0E2QkksZ0JBSUosb0JBQ0UsYUNtRUksMkJEcEVOLG9CQUlJLGFBQ0EsZUFDQSxnQkFDQSxTQUNBLFdBQ0EsVUFDQSx1QkMwREUsMkJEcEVOLG9CQWNJLG1CQ3NERSwyQkRwRU4sb0JBa0JJLGdCQUNBLFdBQ0Esb0JBSUosd0NBQ0UsYUFHRixvQkFDRSxxQkFDQSxTQUNBLFVBQ0EsYUFDQSxlQUdGLDBCQUNFLGVBQ0EsaUJBQ0EsWUFDQSxrQkFDQSxnQkFDQSxnQkFDQSxrQkFDQSxXQ3dCSSwyQkRoQ04sMEJBV0ksV0FDQSxnQkNvQkUsMkJEaENOLDBCQWdCSSxlQUNBLGlCQUNBLFlBQ0EsZ0JDYUUsMkJEaENOLDBCQXVCSSxtQkFJSix5QkFDRSxrQkFDQSxrQkFDQSxhQUNBLDhCQUNBLHNCQUNBLG1CQUNBLGdCQ0ZJLDJCRExOLHlCQVVJLG1CQUlKLHNCQUNFLGdCQUNBLHdCQUNBLG1CQUNBLFlBQ0EsbUJBQ0EsY0FDQSxrQkFDQSwwQkFDQSxpQkFFQSxvQ0FDRSxVQUNBLFlBQ0Esa0JBQ0EsTUFDQSxTQUNBLFdBR0YsZ0NBQ0UsVztBRWpSTixpQkFDRSxtQkFHRixpQkFDRSxHQUNFLG1CQUNBLGdCQUNBLFVBRUYsSUFDRSxVQUVGLElBQ0UsbUJBQ0EsZUFDQSxhQUVGLElBQ0UsbUJBQ0EsZ0I7QUNoQkosYUFDRSxtQkFDQSxrQkM2T00sMkJEL09SLGFBS0ksbUJBQ0EsaUJBR0YsZUFDRSxxQkFDQSxXQUdGLHVCQUNFLG1CQ2dPSSwyQkRqT04sdUJBSUksbUJBQ0EsZ0JBSUosb0JBQ0UsV0FDQSx3QkFDQSxlQUNBLGdCQUNBLGlCQUNBLG9CQUNBLGFDaU5JLDJCRHhOTixvQkFVSSxlQUNBLGtCQzZNRSwyQkR6TU4sOEJBRUksY0N1TUUsMkJEbE1KLGdEQUVJLGlCQ2dNQSwyQkQ3TEosZ0NBRUksa0JDMkxBLDJCRG5NTixtQkFZSSxXQUlKLGtDQUNFLG1CQUNBLHFCQUNBLFdBQ0EsZ0JBQ0Esa0JBQ0EsbUJBQ0EsVUFHRiw4QkFDRSxhQUdGLCtCQUNFLGFBQ0EsOEJDbUtJLDJCRHJLTiwrQkFLSSw0QkFHRix5Q0FDRSxXQUVBLDhEQUNFLFVDeUpBLDJCRHBKTixxREFFSSxzQkFDQSxrQkFDQSxpQkFDQSxrQkFDQSxjQUNBLGlDQUNBLDZCQzRJRSwyQkRwSk4scURBWUksZUFDQSxlQUNBLGFBSUosNkJBQ0UsYUFDQSxzQkFDQSxrQkFFQSw0QkFMRiw2QkFNSSxrQkFJSiwyQkFDRSxXQUNBLG1DQUNBLGVBQ0EsaUJBQ0EsZUFDQSxrQkFFQSxnQ0FDRSxxQkFDQSxXQUNBLGtCQUVBLDRCQUxGLGdDQU1JLFlBS04sK0JBQ0UsV0FDQSxZQUdGLHlERW5GRCxxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkFwQ0EsV0FDQSxZQVNBLDBKQU9DLDhDRmlHQSx5REVoR0MsMkpBR0Qsc0RGNkZBLHlERTVGQywySkZpR0QsMkJBQ0UscUJBRUYsbUVBQ0UsV0FDQSxzQkFDQSxZQUVBLDRCQUxGLG1FQU1JLFlBSUosK0VBQ0UsV0FHRix1RkFDRSxnQkFDQSxXQUdGLGtIQUdFLDJCQUdGLDZDQUNFLFlBQ0EsZ0JBR0YsNEJBQ0UsYUFHRiw0QkFDRSxnQkNxREksMkJEdEROLDRCQUdJLGtCQUlKLGdDQUNFLGtCQUdGLHVCQUNFLGVBQ0EsaUJBQ0EsaUNBQ0EsZ0JBQ0EsY0FDQSxpQjtBR3pNQSxnQ0FDRSxlQUNBLE1BQ0EsT0FDQSxRQUNBLGFBQ0EsZ0JBQ0EsMEJBS0YsaUNBQ0UsdUVBakJjLEM7QUNEcEIsV0NrSkUsNE9BQ0Msd0JDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELDhPQUNDLHdCQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCwwUEFDQyx3QkNoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsa1BBQ0Msd0JDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELDhQQUNDLHdCQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCxnUEFDQyx3QkNoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsb1BBQ0Msd0JDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELDRPQUNDLHdCQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCx3UEFDQyx3QkNoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsOE9BQ0Msd0JDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELGtRQUNDLGtDQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCw4UUFDQyxrQ0NoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsc1FBQ0Msa0NDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELGtSQUNDLGtDQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCxnUkFDQyxrQ0NoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsb1FBQ0Msa0NDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELHdRQUNDLGtDQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsWUFMRCxvUkFDQyxrQ0NoR1EsZ0JEa0dSLGtCQUNBLGlCQUNBLFlBTEQsZ1FBQ0Msa0NDaEdRLGdCRGtHUixrQkFDQSxpQkFDQSxZQUxELGtRQUNDLGtDQ2hHUSxnQkRrR1Isa0JBQ0EsaUJBQ0EsK0JFdkZELGtDQzJMQSxlQW9DRSxpQkFDQSxnQkEzQkYsY0M3TkQsZUFDQSxnRUQ4U0csa0JBd0JDLHNCQXJCQywrQkQxUkosa0NDMkxBLGVBb0NFLGlCQUNBLGdCQTNCRixjQzdORCxlQUNBLGdFRDhTRyxrQkF3QkMsc0JBckJDLCtCRDFSSixrQ0MyTEEsZUFvQ0UsaUJBQ0EsZ0JBM0JGLGNDN05ELGVBQ0EsZ0VEOFNHLGtCQXdCQyxzQkFyQkMsK0JEMVJKLGtDQzJMQSxlQW9DRSxpQkFDQSxnQkEzQkYsY0M3TkQsZUFDQSxnRUQ4U0csaUJBd0JDLHNCQXJCQywrQkQxUkosa0NDMkxBLGVBb0NFLGlCQUNBLGdCQTNCRixjQzdORCxlQUNBLGdFRDhTRyxrQkF3QkMsc0JBckJDLCtCRDFSSixrQ0MyTEEsZUFvQ0UsaUJBQ0EsZ0JBM0JGLGNDN05ELGVBQ0EsZ0VEOFNHLGtCQXdCQyxzQkFyQkMsb0JEblJKLGVDOExBLHNCRHZMQSxpQkFDQyxtQkFHRCxrQ0N5S0EsaUJDbkxELGdCQUVBLHFCQUNBLGNBQ0EscUJBRUEsZUFDQSxtQkZPQyxrQ0NxS0EsaUJDbE1ELGdCQUVBLG1CQUNBLGNBQ0EscUJBRUEsa0JBQ0Esb0JGNkJDLGtDQzhKQSxlQWdEQSxpQkFDQSxnQkM1UEQsYUFDQSxnRERzU0csa0JBc0NGLHNCQW5DSSxvQkR0UEoscUJFZ0dBLGVBQ0EsMEJBQ0EsY0E1RVksNEJBeUZPLDJFQVhuQixtQkZwR0EsZ0JFcUdDLGdDQTVFZSw4QkE4RWYsMkJBYUYsY0E3RmMsNEJBZ0dPLHVEQU9yQixnQ0FFcUIsK0NBekdQLDhCRm5CYiwrSkc3REQsNEJEMkhDLGtEQUtBLHdDQUNBLDZCQVFBLG1EQUlBLCtDQ3RJQSw2QkhzREEsOEpHckRDLHdEQUdELDZCSGtEQSw4SkdqREMsc0NEdUhELDZCRnRFQSwrQ0V1RUMsK0NBRUQsNkJGekVBLHdERTBFQyxzQ0FPRCw2QkZqRkEsdUJFa0ZDLG9EQUVELGtCRXpMRCxtQkFDQSw0QkFDQSxZQUNBLFNBQ0EsZ0JBQ0EsVUFDQSxVQUNBLFdBQ0EsbUJBQ0EsOEJGa0xFLG9CRjVFRCxnQkV5SkEsVUFDQSxlQUNBLHVCQU1ELGtCQUVFLFNBRUEsNEJBR0EsOEJBRUQsa0NEakNBLHFCQ29DRSxrQkFDQSxPQUNBLDRCQUNBLDZCRnpLRixrQkV3SkEsdUNBV0EsZ0JEdkJBLHNCQzJDRSx1QkFDQSw2QkFDQSw4QkFFQSwyQkFFQSx5Q0ExQkYsZ0JBVUUsY0FDQSw4QkFFQSwwQkFFQSx1QkZuS0Ysa0NDbUhBLGVBZ0RBLGlCQUNBLGVDeUJELGdCQUNBLGFBQ0EsbUREZ0JHLGtCQXNDRixzQkFuQ0ksc0JEM01KLGtDQzRHQSxlQWdEQSxpQkFDQSxhQ21CRCxrRER3Qkcsa0JBc0NGLHNCQW5DSSwrQ0RwTUosa0NDcUdBLGVBZ0RBLGlCQUNBLGdCQzVQRCxhQUNBLHVHRHNTRyxrQkFzQ0Ysc0JBbkNJLHFESXBWTCxrQ0pxUEMsZUFvQ0UsaUJBQ0EsZ0JBM0JGLGNDN05ELGVBQ0EsdUhEOFNHLGtCQXdCQyxzQkFyQkMscURJaFZMLGtDSmlQQyxlQW9DRSxpQkFDQSxnQkEzQkYsY0M3TkQsZUFDQSx1SEQ4U0csa0JBd0JDLHNCQXJCQyxxREk1VUwsa0NKNk9DLGVBb0NFLGlCQUNBLGdCQTNCRixjQzdORCxlQUNBLHVIRDhTRyxrQkF3QkMsc0JBckJDLHFESXhVTCxrQ0p5T0MsZUFvQ0UsaUJBQ0EsZ0JBM0JGLGNDN05ELGVBQ0EsdUhEOFNHLGlCQXdCQyxzQkFyQkMscURJcFVMLGtDSnFPQyxlQW9DRSxpQkFDQSxnQkEzQkYsY0M3TkQsZUFDQSx1SEQ4U0csa0JBd0JDLHNCQXJCQyxxREloVUwsa0NKaU9DLGVBb0NFLGlCQUNBLGdCQTNCRixjQzdORCxlQUNBLHVIRDhTRyxrQkF3QkMsc0JBckJDLG1ESTVUTCxxQkhzS0MsZUFDQSwwQkFDQSxjQTVFWSw0QkF5Rk8sMkVBWG5CLGtERzFLRCxnQkgyS0UsZ0NBNUVlLDhCQThFZixnRUFhRixjQTdGYyw0QkFnR08sNEZBT3JCLGdDQUVxQiwrQ0F6R1AsbURHekZkLGtDSnlOQyxlQWdEQSxpQkFDQSxnQkM1UEQsYUFDQSwyR0RzU0csa0JBc0NGLHNCQW5DSSx5R0lwVEwsZ0JIcU9DLFVBQ0EsZUFDQSxxSEFNRCxrQkFFRSxTQUVBLDRCQUdBLGlKQUVELGtDRGpDQSxxQkNvQ0Usa0JBQ0EsT0FDQSw0QkFDQSxxREd0UEgsa0JIcU9DLHlFQVdBLGdCRHZCQSxzQkMyQ0UsdUJBQ0EsNkJBQ0EsOEJBRUEsMkJBRUEseUVBMUJGLGdCQVVFLGNBQ0EsOEJBRUEsMEJBRUEsNkRHclBILGtDSnFNQyxlQWdEQSxpQkFDQSxhQ21CRCxxSER3Qkcsa0JBc0NGLHNCQW5DSSw2REloU0wsZUoyTUMscURJcE1ELGlCQUNDLHVEQUdELGtDSnNMQyxpQkNuTEQsZ0JBRUEscUJBQ0EsY0FDQSxxQkFFQSxlQUNBLHVER05BLGtDSmtMQyxpQkNsTUQsZ0JBRUEsbUJBQ0EsY0FDQSxxQkFFQSxrQkFDQSxxRUdhQSxrQ0o4S0MsZUFnREEsaUJBQ0EsZUN5QkQsZ0JBQ0EsYUFDQSw2SERnQkcsa0JBc0NGLHNCQW5DSSw4Qks1UkosMEJMNkxBLGVBb0NFLGdCQUNBLGNNdFJILFFBR0MsNEJDc09NLDZCRnJMTixlTHVPRyxlQUNBLCtCS2xPSCxnQkp1TUEsVUFDQSxnQkFDQSxRSzVOQSxpQ0xrT0Qsa0JBRUUsU0FFQSw0QkFHQSx3Q0FFRCxrQ0RqQ0EscUJDb0NFLGtCQUNBLE9BQ0EsNEJBQ0EsdUNJdk5GLGtCSnNNQSxpREFXQSxnQkR2QkEsc0JDMkNFLHVCQUNBLDZCQUNBLDhCQUVBLDJCQUVBLG1EQTFCRixnQkFVRSxjQUNBLDhCQUVBLDBCQUVBLGlDSWxORixrQ0xrS0EsZUFnREEsaUJBQ0EsYU1uUEQsNkROOFJHLGtCQXNDRixzQkFuQ0ksa0NLM1BKLHVDTDRKQSxlQW9DRSxpQkFDQSxnQkEzQkYsUU03TEQsd0NBa0pDLFdBQ0MsY0FDQSxzQ0FHQSx1QkFHQSxlQUNBLGtCQUVBLDZCQ2NLLGlDRnBKTixlTHNNRyxnQkFDQSw2Qk9uREcsaUNGcEpOLGVMc01HLGdCQUNBLHVFQWlERCxpQkF3QkMsaUJBckJDLDZCT3ZHRSxxRVBvR0osY0ErQkUsNkJPbklFLHFFUG9HSixnQkErQkUsMENLalJKLFNDZEEsY0FJRCx1Q05nS0MsZUFvQ0UsaUJBQ0EsZUEzQkYsNkJPbEJNLHdDRjlJTixlTGdNRyxnQkFDQSw2Qk9uREcsd0NGOUlOLGVMZ01HLGdCQUNBLHlFQWlERCxpQkF3QkMsaUJBckJDLDZCT3ZHRSx1RVBvR0osZ0JBK0JFLDZCT25JRSx1RVBvR0osY0ErQkUsMENLalJKLFNDZEEsY0FJRCxrQ05nS0MsZUFnREEsaUJBQ0EsZUF2Q0EsMEVBa0ZFLGtCQXNDRixzQkFuQ0kseUNLclBKLFNDZEEsY0FJRCxrQ05nS0MsZUFnREEsaUJBQ0EsZUF2Q0EscUVBa0ZFLGtCQXNDRixzQkFuQ0kseUNLclBKLFNDZEEsY0FJRCxrQ05nS0MsZUFnREEsaUJBQ0EsZUF2Q0EscUVBa0ZFLGtCQXNDRixzQkFuQ0kseUNLclBKLFNDZEEsY0FJRCxrQ05nS0MsZUFnREEsaUJBQ0EsZ0JBdkNBLHlCTXRKQSxtQkFDQSxxRU51T0Usa0JBc0NGLHNCQW5DSSxvQ0svT0osa0NMZ0pBLGVBZ0RBLGlCQUNBLGFNckxELGdFTmdPRyxpQkFzQ0Ysc0JBbkNJLGdDS3pPSixjQzRDQSxrQ044RkEsZUFVQSxpQ012RlEscUJBS1IsZUFDQSx1Q0FFQSxhQUVDLCtCRGpFRCxjQ3NDQSxrQ044RkEsZUFVQSxnQ012RlEsY0FFUCxxQkFHRCxlQUNBLHNDQUVBLGFBRUMsZ0NEM0RELGtDTDhIQSxlQWdEQSxnQkFDQSw0REEyQ0Usa0JBc0NGLHNCQW5DSSxtQ0t2TkoseUJDRUQsYUFDQSx3Q0VwSUEsY0FDQyxTQUNBLGdCQUNBLG1CQUNBLGlCQUNBLDBDQUVBLGFBQ0Msa0JBQ0EscURBQ0EsZUFDQyx3Q0FRSCxrQkFDQyw4QkFDQSxVQUNBLDBDQUVBLHFCUDBLQSxlQUNBLDBCQUNBLGNBNUVZLDRCQXlGTywyRUFYbkIseUNPOUtBLGdCUCtLQyxnQ0E1RWUsOEJBOEVmLGlEQWFGLGNBN0ZjLDRCQWdHTyw2RUFPckIsZ0NBRXFCLCtDQXpHUCwyRk81RmQsa0NSNE5DLGVBZ0RBLGlCQUNBLGdCQXZDQSxpQkFJQSxxU0E4RUUsa0JBc0NGLHNCQW5DSSwrRlFwVEoscUJQOEpBLGVBQ0EsMEJBQ0EsY0E1RVksNEJBeUZPLDJFQVhuQiw4Rk9sS0EsZ0JQbUtDLGdDQTVFZSw4QkE4RWYsNEdBYUYsY0E3RmMsNEJBZ0dPLHdJQU9yQixnQ0FFcUIsK0NBekdQLG9ET2hGZCxrQ1JnTkMsZUFnREEsaUJBQ0EsZ0JBdkNBLGtCQUlBLHdCUXZOQSx5S1JxU0Usa0JBc0NGLHNCQW5DSSwrQ1E5UUoscUJOWkQsNEJBQ0Esd0JBQ0Esd0JBQ0EsNkJBQ0Esd0JBQ0EsV01RYywwS05sQ2QsV013Q0Usa0JBRUEsWUFDQSxrQkFDQSxpQ0FDQSwrQ050Q0QsOENNMEJBLDZKTnpCQyx3REFHRCw4Q01zQkEsNkpOckJDLDJDTW9DRCx5QlJnS0EsK0RTblBELGdCUm1RQyxVQUNBLGdCQUNBLFFLNU5BLHFFTGtPRCxrQkFFRSxTQUVBLDRCQUdBLG1GQUVELGtDRGpDQSxxQkNvQ0Usa0JBQ0EsT0FDQSw0QkFDQSw4RFFwUkgsa0JBQ0MsWUFDQSw4REFLRCxtQkFHQyxlQUNBLDJIQUlELG1CQUlDLFlBQ0EsOERBSUQsa0JBQ0MsWUFDQSw2SkFJRCxtQkFDQyxZQUNBLG81R0FXQSxjQUNDLDR0REFHRCxlQUtDLCtCQzlCRCxjSnVERCx1Q05nS0MsZUFvQ0UsaUJBQ0EsZUEzQkYsNkJPbEJNLDhCRy9NTixlVmlRRyxnQkFDQSw2Qk9uREcsOEJHL01OLGVWaVFHLGdCQUNBLCtEQWlERCxpQkF3QkMsaUJBckJDLDZCT3ZHRSw2RFBvR0osZ0JBK0JFLDZCT25JRSw2RFBvR0osY0ErQkUsZ0NVNVVKLGNKaURELGtDTmdLQyxlQWdEQSxpQkFDQSxlQXZDQSxnRUFrRkUsa0JBc0NGLHNCQW5DSSwrQlUxU0osY0oyQ0Qsa0NOZ0tDLGVBZ0RBLGlCQUNBLGVBdkNBLDJEQWtGRSxrQkFzQ0Ysc0JBbkNJLCtCVXBTSixjSnFDRCxrQ05nS0MsZUFnREEsaUJBQ0EsZUF2Q0EsMkRBa0ZFLGtCQXNDRixzQkFuQ0ksK0JVOVJKLGNKK0JELGtDTmdLQyxlQWdEQSxpQkFDQSxnQkF2Q0EseUJNdEpBLG1CQUNBLDJETnVPRSxrQkFzQ0Ysc0JBbkNJLDBCVXhSSiwwQlZ5TEEsZUFvQ0UsZ0JBQ0EsYU10UkgsNEJDeU9PLHlCR2pMTixlVm1PRyxlQUNBLGlDVTdORixjSmtCRix1Q05nS0MsZUFvQ0UsaUJBQ0EsZUEzQkYsNkJPbEJNLCtCRzFLTCxlVjRORSxnQkFDQSw2Qk9uREcsK0JHMUtMLGVWNE5FLGdCQUNBLGdFQWlERCxpQkF3QkMsaUJBckJDLDZCT3ZHRSw4RFBvR0osZ0JBK0JFLDZCT25JRSw4RFBvR0osY0ErQkUsaUNVelNILGNKY0Ysa0NOZ0tDLGVBZ0RBLGlCQUNBLGVBdkNBLGlFQWtGRSxrQkFzQ0Ysc0JBbkNJLGdDVXpRSCxjSlVGLGtDTmdLQyxlQWdEQSxpQkFDQSxlQXZDQSw0REFrRkUsa0JBc0NGLHNCQW5DSSxnQ1VyUUgsY0pNRixrQ05nS0MsZUFnREEsaUJBQ0EsZUF2Q0EsNERBa0ZFLGtCQXNDRixzQkFuQ0ksZ0NValFILGNKRUYsa0NOZ0tDLGVBZ0RBLGlCQUNBLGdCQXZDQSx5Qk10SkEsbUJBQ0EsNEROdU9FLGtCQXNDRixzQkFuQ0ksb0lVN1BILDBCVjhKRCxlQW9DRSxnQkFDQSxhTXRSSCw0QkN5T08sbUlHdEpMLGVWd01FLGVBQ0EsaUNVN0xGLGtCVHdLRCwwQ0FXQSxnQkR2QkEsc0JDMkNFLHVCQUNBLDZCQUNBLDhCQUVBLDJCQUVBLDBDQTFCRixnQkFVRSxjQUNBLDhCQUVBLDBCQUVBLG9DUzFMRCxrQ1YwSUQsZUFnREEsaUJBQ0EsYUNtQkQsZ0VEd0JHLGtCQXNDRixzQkFuQ0ksc0ZVck9ILGtDVnNJRCxlQWdEQSxpQkFDQSxhTW5QRCw4SU44Ukcsa0JBc0NGLHNCQW5DSSx3Q1VoT0gsbUJBRUMsaUJBQ0EsK0RBYUYscUJUMERBLGVBQ0EsMEJBQ0EsY0E1RVksNEJBeUZPLDJFQVhuQiw4RFM5REEsZ0JUK0RDLGdDQTVFZSw4QkE4RWYsNEVBYUYsY0E3RmMsNEJBZ0dPLHdHQU9yQixnQ0FFcUIsK0NBekdQLHlFU29CYixlVnNIQSwrSFU5R0EsaUJBSUMsbUNBR0Qsa0NWNkZBLGlCQ25MRCxnQkFFQSxxQkFDQSxjQUNBLHFCQUVBLGVBQ0EsbUNTb0ZDLGtDVndGQSxpQkNsTUQsZ0JBRUEsbUJBQ0EsY0FDQSxxQkFFQSxrQkFDQSxhVW1TQSxhQWtCQyxpRkFGVyxXUjNUWixTQUVDLGtDQUNBLDBCQUVBLDhCQUNBLG1DQUtDLGlDQUNBLHdDQVlBLG9FQUNDLG9DQUlDLHFDQUNBLHNDQUNBLE9BUUosYUFDQyx1RUFnQkEseUJBQ0MseVBBR0QsNEJBR0MsMkVBWUQseUJBQ0MscVFBR0QsNEJBR0MsbUdBSUQsU0FDQyxzRkFRRixhQUdDLHdRQUdELGdCQU9DLHNHQUtELHlCQUdDLHlXQUdELDRCQVNDLHdDQUtELFlBR0MsR0FVRCw0QkFDQyxrQkFLRCxlQUVDLGFBWUQsZ0JBQ0MsMEJBQ0EsZ0NBRUEsVUFJRCxtQkFFQyxVQUlELGtCQUVDLEtBSUQsaUJBQ0MsU0FLRCxjQUVDLGNBQ0Esa0JBQ0EsdUJBQ0EsS0FHRCxjQUNDLEtBR0QsVUFDQyxLQVFELGlCQUNDLFVBUUQsZ0JBQ0MscUJBTUQsZ0JBR0MsOEJBS0QsUUFJQyxlQUtELG1CQUVDLGlEQUlELGNBSUMsWUFJRCxjQUNDLGtEQUlELFNBRUMsU0FDQSxVQUlELGFBQ0MsdUJTOVFBLE1UekNELDBEQUVBLFdBRUMsY0FDQSxZQUNBLDZCQUVELFVBQ0MsOEJTc0NBLGtCVDlERCxtQkFDQSw0QkFDQSxZQUNBLFNBQ0EsZ0JBQ0EsVUFDQSxVQUNBLFdBQ0Esa0JBQ0EsTVVRRCwwQkFDRSw2QkFDQSxXQUdGLHlCQUVFLGlDQUNBLFNBQ0EsU0FDQSxNQUdGLGFBQ0UsOElBR0YsdUJBTUUsK0dBR0YsWUFRRSxtSkFHRixlQU1FLE1BR0YsbUJBQ0UsU0FDQSxTQUNBLGdDQXJEVSxlQTBEVixnQkFDRSxlQUNBLFVBY0osY0FDRSxlQUNBLFNBQ0EsVUFDQSxzQkFDQSxVQUNBLDJCQUVBLFdBRUUsWUFDQSxhQUNBLGNBR0YsZUFDRSxjQUdGLGVBQ0UsT0M1R0osd0JBQ0UsWUFFQSx3QkFDRSxhQUdGLG1CQUNFLGFBQ0EsNEJQd09JLFlPMU9OLGFBS0ksNkZBS0YsVUFFRSx3R0FFQSxhQUNFLDZHQUlKLFVBTUUsbURBR0YsYUFDRSxxREFFQSxXQUNFLCtCQUNBLDJEQUVBLDRCQUNFLHFGQUtOLGFBSUUscUZBR0YsYUFHRSxvQkFHRixXQUNFLCtCQUNBLDBCQUVBLFdBQ0UsNEJBQ0EsMEJBR0YsV0FDRSwrQkFDQSxrQkFJSiwwQmQ2S0YsZUFvQ0UsZUFDQSw0Qk83Q0ksaUJPcktKLGVkdU5DLGVBQ0EsNENjOU1ELDBCZG1LRixlQWdEQSxpQkFDQSxhY2pOSSwyREFFQSx3QkFDRSxrREFNSixVQUVFLDhEQUVBLGFBQ0UsOERBR0YsYUFDRSxrRUFHRixVQUNFLCtCQUlKLGFBQ0UsQztBQ3hHTCxjQ2tEQSxxQkFDQSw0QkFDQSx3QkFDQSx3QkFDQSw2QkFDQSx3QkRsREMsMEJDY0QsWUFDQSxhQVNBLG9JQU9DLDhDRC9CQSwwQkNnQ0MsOEpBR0Qsc0REbkNBLDBCQ29DQyw4SkRwQ0QsMEJDY0QsWUFDQSxhQVNBLG9JQU9DLDhDRC9CQSwwQkNnQ0MsOEpBR0Qsc0REbkNBLDBCQ29DQyw4SkRwQ0QsMkJDY0QsWUFDQSxhQVNBLHFJQU9DLDhDRC9CQSwyQkNnQ0MsK0pBR0Qsc0REbkNBLDJCQ29DQywrSkRwQ0Qsd0JDY0QsWUFDQSxhQVNBLGtJQU9DLDhDRC9CQSx3QkNnQ0MsNEpBR0Qsc0REbkNBLHdCQ29DQyw0SkRwQ0QsaUNDY0QsWUFDQSxhQVNBLDJJQU9DLDhDRC9CQSxpQ0NnQ0MscUtBR0Qsc0REbkNBLGlDQ29DQyxxS0RwQ0QsOEJDY0QsWUFDQSxhQVNBLHdJQU9DLDhDRC9CQSw4QkNnQ0Msa0tBR0Qsc0REbkNBLDhCQ29DQyxrS0RwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0QsZ0NDY0QsWUFDQSxhQVNBLDBJQU9DLDhDRC9CQSxnQ0NnQ0Msb0tBR0Qsc0REbkNBLGdDQ29DQyxvS0RwQ0Qsd0JDY0QsWUFDQSxhQVNBLGtJQU9DLDhDRC9CQSx3QkNnQ0MsNEpBR0Qsc0REbkNBLHdCQ29DQyw0SkRwQ0Qsc0JDY0QsWUFDQSxhQVNBLGdJQU9DLDhDRC9CQSxzQkNnQ0MsMEpBR0Qsc0REbkNBLHNCQ29DQywwSkRwQ0QseUJDY0QsWUFDQSxhQVNBLG1JQU9DLDhDRC9CQSx5QkNnQ0MsNkpBR0Qsc0REbkNBLHlCQ29DQyw2SkRwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0Qsc0JDY0QsWUFDQSxhQVNBLGdJQU9DLDhDRC9CQSxzQkNnQ0MsMEpBR0Qsc0REbkNBLHNCQ29DQywwSkRwQ0Qsd0JDY0QsWUFDQSxhQVNBLGtJQU9DLDhDRC9CQSx3QkNnQ0MsNEpBR0Qsc0REbkNBLHdCQ29DQyw0SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0QseUJDY0QsWUFDQSxhQVNBLG1JQU9DLDhDRC9CQSx5QkNnQ0MsNkpBR0Qsc0REbkNBLHlCQ29DQyw2SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0QsNkJDY0QsWUFDQSxhQVNBLHVJQU9DLDhDRC9CQSw2QkNnQ0MsaUtBR0Qsc0REbkNBLDZCQ29DQyxpS0RwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0Qsa0NDY0QsWUFDQSxhQVNBLDRJQU9DLDhDRC9CQSxrQ0NnQ0Msc0tBR0Qsc0REbkNBLGtDQ29DQyxzS0RwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0QseUJDY0QsWUFDQSxhQVNBLG1JQU9DLDhDRC9CQSx5QkNnQ0MsNkpBR0Qsc0REbkNBLHlCQ29DQyw2SkRwQ0QsNkJDY0QsWUFDQSxhQVNBLHVJQU9DLDhDRC9CQSw2QkNnQ0MsaUtBR0Qsc0REbkNBLDZCQ29DQyxpS0RwQ0QsNEJDY0QsWUFDQSxhQVNBLHNJQU9DLDhDRC9CQSw0QkNnQ0MsZ0tBR0Qsc0REbkNBLDRCQ29DQyxnS0RwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0QsbUJDY0QsWUFDQSxhQVNBLDZIQU9DLDhDRC9CQSxtQkNnQ0MsdUpBR0Qsc0REbkNBLG1CQ29DQyx1SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0QsdUJDY0QsWUFDQSxhQVNBLGlJQU9DLDhDRC9CQSx1QkNnQ0MsMkpBR0Qsc0REbkNBLHVCQ29DQywySkRwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0QsdUJDY0QsWUFDQSxhQVNBLGlJQU9DLDhDRC9CQSx1QkNnQ0MsMkpBR0Qsc0REbkNBLHVCQ29DQywySkRwQ0QsdUJDY0QsWUFDQSxhQVNBLGlJQU9DLDhDRC9CQSx1QkNnQ0MsMkpBR0Qsc0REbkNBLHVCQ29DQywySkRwQ0QseUJDY0QsWUFDQSxhQVNBLG1JQU9DLDhDRC9CQSx5QkNnQ0MsNkpBR0Qsc0REbkNBLHlCQ29DQyw2SkRwQ0Qsc0JDY0QsWUFDQSxhQVNBLGdJQU9DLDhDRC9CQSxzQkNnQ0MsMEpBR0Qsc0REbkNBLHNCQ29DQywwSkRwQ0Qsc0JDY0QsWUFDQSxhQVNBLGdJQU9DLDhDRC9CQSxzQkNnQ0MsMEpBR0Qsc0REbkNBLHNCQ29DQywwSkRwQ0Qsd0JDY0QsWUFDQSxhQVNBLGtJQU9DLDhDRC9CQSx3QkNnQ0MsNEpBR0Qsc0REbkNBLHdCQ29DQyw0SkRwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0QsZ0NDY0QsWUFDQSxhQVNBLDBJQU9DLDhDRC9CQSxnQ0NnQ0Msb0tBR0Qsc0REbkNBLGdDQ29DQyxvS0RwQ0QsK0JDY0QsWUFDQSxhQVNBLHlJQU9DLDhDRC9CQSwrQkNnQ0MsbUtBR0Qsc0REbkNBLCtCQ29DQyxtS0RwQ0QsMkJDY0QsWUFDQSxhQVNBLHFJQU9DLDhDRC9CQSwyQkNnQ0MsK0pBR0Qsc0REbkNBLDJCQ29DQywrSkRwQ0QsNEJDY0QsWUFDQSxhQVNBLHNJQU9DLDhDRC9CQSw0QkNnQ0MsZ0tBR0Qsc0REbkNBLDRCQ29DQyxnS0RwQ0Qsc0JDY0QsWUFDQSxhQVNBLGdJQU9DLDhDRC9CQSxzQkNnQ0MsMEpBR0Qsc0REbkNBLHNCQ29DQywwSkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0Qsc0JDY0QsWUFDQSxhQVNBLGdJQU9DLDhDRC9CQSxzQkNnQ0MsMEpBR0Qsc0REbkNBLHNCQ29DQywwSkRwQ0Qsb0JDY0QsWUFDQSxhQVNBLDhIQU9DLDhDRC9CQSxvQkNnQ0Msd0pBR0Qsc0REbkNBLG9CQ29DQyx3SkRwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0QscUJDY0QsWUFDQSxhQVNBLCtIQU9DLDhDRC9CQSxxQkNnQ0MseUpBR0Qsc0REbkNBLHFCQ29DQyx5SkRwQ0QsMkJDY0QsWUFDQSxhQVNBLHFJQU9DLDhDRC9CQSwyQkNnQ0MsK0pBR0Qsc0REbkNBLDJCQ29DQywrSkRwQ0QsdUJDY0QsWUFDQSxhQVNBLGlJQU9DLDhDRC9CQSx1QkNnQ0MsMkpBR0Qsc0REbkNBLHVCQ29DQywySkRwQ0QsNEJDY0QsWUFDQSxhQVNBLHNJQU9DLDhDRC9CQSw0QkNnQ0MsZ0tBR0Qsc0REbkNBLDRCQ29DQyxnS0NuREQseURBQ0MsY0FDQSxxQkFJRixVQUNDLGdCQUdELHNCQUNDLGFBSUEsaURBQ0MsV0FDQSxrQkFFQSwySkFFQyxrQkFJRiw4Q0M4UUEsZUFDQSxpQkQxUUMsV0FDQSxjQUNBLGtCQUNBLGVBQ0Esb0JDaVRDLDBFQXNDRixrQkN4WEQsNkNEc1BDLGtDQWdEQSxlQUNBLGlCQTJDRSxpSUFzQ0Ysa0JBbkNJLHVCQy9VTCxlQUNDLGFBQ0Esc0JBQ0EsbUJBQ0Esa0JBRUEscUJBQ0MsY0FDQSxnQkFDQSxrQkFHRCxrQ0FDQyxnQkFJRixvREQrUUMsZUFDQSxpQkM5UUEscUJBQ0EsY0FDQSxnQkFDQSxlQzVCcUIsQ0ZrVm5CLGdGQXNDRixrQkN6VkQscUJEaU9DLGdCQy9OQSxjQUdELHVCRGtRQyxlQUNBLGlCQ2pRQSxjQUNBLGNEMlNFLG1EQXNDRixrQkM5VUQsZUFDQyxlQ3pDdUIsQ0QyQ3ZCLHFCQUNDLGdCQUNBLGdCRTNDRCw4Q0NKRCxVQUNBLFVBQ0EsZUFFQSxrQkFDQSxVQUNBLFdBQ0EsV0ZGc0IsQ0VJdEIsa0ZBQ0MsVUFJQSx1REFDQyxVQUVBLDZFQUNDLFdEWEQsaUZBQ0MscUJBQ0EsNkJBQ0EsYUFHRCx3Rkw4Q0YscUJBQ0EsNEJBQ0Esd0JBQ0Esd0JBQ0EsNkJBQ0Esd0JBcENBLFdBQ0EsWUFTQSx3Skt2QkcseUJBQ0EsVUw2QkYsOENLaENDLHdGTGlDQSx5SkFHRCxzREtwQ0Msd0ZMcUNBLHlKS1ZELCtDQUNDLHFCQUNBLHFCQUNBLG1CQUVBLHNEQ2xCRixXQUNBLGVBQ0Esa0JBQ0EsTUFDQSxPQUNBLFdBQ0EsWUFDQSxzQkRhRyx5QkFDQSxzQkFHRCxxREN4QkYsV0FDQSxlQUNBLGtCQUNBLE1BQ0EsT0FDQSxXQUNBLFlBQ0Esc0JOeUJBLHFCQUNBLDRCQUNBLHdCQUNBLHdCQUNBLDZCQUNBLHdCQXBDQSxXQUNBLFlBU0EsdUpLZ0JHLHlCQUNBLFVBQ0EsNEJMWEYsOENLTUMscURMTEEsd0pBR0Qsc0RLRUMscURMREEsd0pLV0EscUVBQ0MsZ0JENURxQixDR0d2QiwyQkFDQyxhQUNBLFdBQ0EsOEJBQ0EsZ0JBR0Qsc0NDYkQsb0JBQ0Esa0JBQ0Esc0JBQ0EseUJBQ0Esc0JBQ0EsZ0JBQ0EsWUFDQSxXRFFFLGNBQ0Esb0JDQ0YsK0NBQ0MsZUFDQSxjQUNBLHlCQUNBLHFCQUlBLHFDQUdBLFVETEMsNE9BS0Msd0JBT0QscUhBR0Msd0JBSUYsMkNBQ0MsZ0JBQ0EsV0V6Q0YsMEJBa0VBLHFCQUVBLCtEQUNDLDZCQUdELG1IQUVDLHFCQUlBLGtFQUNDLGNBR0QscUdBQ0Msc0NBR0Qsd0VBQ0MscUJBQ0EsNkJBQ0EsYUFHRCwwRUFDQyx5QkFDQSxXQUVBLHlHQUNDLHlCQTlGRiwrRFBpU0EsZUFDQSxrQkF2Q0EsZ0JJdk1ELHNCQUNBLHlCQUNBLG9CQUNBLGVBQ0Esa0JBQ0EsV0YvRHVCLENGbVZwQixnR0FzQ0Ysa0JPL1dBLHNGQUNDLGtCQUdELGdDSDJCRCxvQkFDQSxZQUNBLGVBQ0EsU0FDQSxnQkFDQSxjRzdCRSxvREFDQyw2QkxwQmMsQ0t1QmYsc0RBQ0Msc0JBQ0EsZ0JBQ0Esb0RBQ0EsV0FDQSxZQUNBLG9CQUNBLG1CQUNBLHVCQUlGLDRDQUNDLGtCQUdBLFVBQ0EsVUFDQSxXQUNBLFlBQ0EsZUFHQywyRUFDQyxlQUNBLFdDaU1HLDRCRDNMTCxzRUFDQyxrQkFDQSxpQkFJRixnREFDQyxrQkFDQSxvQkR4QkQsbURObVFBLGVBQ0EsaUJNOVBDLGdCQUNBLGNOd1NDLCtFQXNDRixrQlMxV0EsOEJIZkQsb0JBQ0Esa0JBQ0Esc0JBQ0EseUJBQ0Esc0JBQ0EsZ0JBQ0EsWUFDQSxXUmdDQSxvSVdyQkUsZ0JBQ0EsNEJBQ0EsMEJBQ0EsZ0JBQ0EsNEJBQ0EsY0FDQSxlQUNBLGFBR0EsaUNBRUEscUNIYkYsdUNBQ0MsZUFDQSxjQUNBLHlCQUNBLHFCQUlBLHFDQUdBLFVSa0JBLDhDVy9CQSw4QlhnQ0MsOEpBR0Qsc0RXbkNBLDhCWG9DQyw4SldsQkEsMENBQ0MsV0FDQSxhQUdELHVDWENGLDZKQU9DLDhDV1JDLHVDWFNBLDhKQUdELHNEV1pDLHVDWGFBLDhKV1RBLHdDQUNDLHNCQ3pDRiw2Q0FDQyxxQkFDQSx1QkFDQSxtQkFFQSx1R0FFQyxXQUNBLGVBQ0Esa0JBQ0EsTUFDQSxPQUdELG9EQUNDLHNCQUNBLG1CQUNBLFlBQ0EsVVJWbUIsQ1FhcEIsbURBQ0MseUJBQ0EseUJBQ0Esa0JBQ0Esc0JBQ0EsWUFDQSxXQUNBLGlDQU1BLGlGQUNDLHlCQUVELGdGQUNDLFVBQ0EscUJBSUYsK0ZBQ0MscUJBS0QsMkVBQ0MsY0FFQSxpRkFDQyxxQkFDQSx5QkFHRCxrRkFDQyx5QkZtTEcsNEJHek9OLHVCQUNDLG1CQUNBLDhCQUVBLHNDQUNDLGFBQ0Esa0JBQ0Esc0JBRUEsNERBQ0MsZ0JBR0QscUVBQ0Msa0JBSUYsc0NBQ0MsYUFDQSxzQkFDQSxhQUNBLHVCQUNBLFNBVUYscUNBQ0MsYUFDQSxtQkFFQSwyQ0FDQyxxQkFDQSxjQUdELG1JQUVDLFVDR0gsV1prTUMsa0NBVUEsZ0JBVkEsa0NBZ0RBLGVBQ0EsaUJhaEZELGlCQUlBLDBCQUNBLGdCQUNBLGVBQ0EsZ0JBM0RBLHFCQUNBLHNCQUNBLHNCQUNBLFNBQ0EsbUJBQ0Esa0JBQ0EscUJBQ0EsZUFDQSwrRUFDQSxpQkFDQSwyQkFDQSxpQkFFQSxtQ0FDQSxrQ0FDQSxxQkFDQSx3QkFDQSxnQmI4SkcsdUNBc0NGLGtCQW5DSSx1QmE1SkwscUJBQ0Msb0JBQ0EsV0FDQSxlRG5JRCxvQ0FDQyxrQkFNQyxnQlpzTEQsa0NBZ0RBLGVBQ0EsaUJhaEZELGlCQUlBLDBCQUNBLGdCQUNBLGVBQ0Esa0Jib0hHLDRDQXNDRixrQkFuQ0ksdUJZN1FKLGdCQzJIRCw0QkFDQSx3QkFDQSxrQkR2SEcsK0JBSUMsMEJBQ0Esa0JBTUgsMENDaUhELGVBQ0Esd0JBQ0EsZUQvR0MsdUJFL0ZELGtCQUNBLG1CQUNBLDRCQUNBLFlBQ0EsU0FDQSxnQkFDQSxVQUNBLFVBQ0EsV0FDQSxtQkQ0SUEsb0JBa0ZBLHlCQUNBLFdBQ0EseUJBRUEsMEJBQ0MseUJBQ0EsV0FDQSx5QkFDQSxxQkFHRCwwQkFDQyx5QkFDQSxXQUNBLHlCQUtELDRJQUlDLHlCQUNBLFdBQ0EseUJBdEdBLHlDZmxIRCx1SmVxUkEsOENBbktDLHlDZmxIRCx3SmV3UkEsc0RBdEtDLHlDZmxIRCx3SmVrSEMsMENmbEhELHdKZXFSQSw4Q0FuS0MsMENmbEhELHlKZXdSQSxzREF0S0MsMENmbEhELHlKZTZHQSxvQ0FrRkEseUJBQ0EsV0FDQSx5QkFFQSwwQ0FDQyx5QkFDQSxXQUNBLHlCQUNBLHFCQUdELDBDQUNDLHlCQUNBLFdBQ0EseUJBS0QsNE1BSUMseUJBQ0EsV0FDQSx5QkF0R0EseURmbEhELHVKZXFSQSw4Q0FuS0MseURmbEhELHdKZXdSQSxzREF0S0MseURmbEhELHdKZWtIQywwRGZsSEQsd0plcVJBLDhDQW5LQywwRGZsSEQseUpld1JBLHNEQXRLQywwRGZsSEQseUplNkdBLHNCQWtGQSw2QkFDQSxjQUNBLHFCQUVBLDRCQUNDLHFDQUNBLGNBQ0EscUJBQ0EscUJBR0QsNEJBQ0MscUNBQ0EsY0FDQSxxQkFLRCxvSkFJQyx5QkFDQSxXQUNBLHFCQXRHQSwyQ2ZsSEQsdUpleU9DLGlEZnpPRCx1SmU4T0Msa0RmOU9ELHVKZXFQRSxZQU1ELGlEZjNQRCx1SmVvUUMsd09mcFFELHVKZTRRQyxpRGY1UUQsdUplOFFFLFdBT0YsOENBbktDLDJDZmxIRCx3SmV3UkEsc0RBdEtDLDJDZmxIRCx3SmVrSEMsNENmbEhELHdKZXlPQyxrRGZ6T0Qsd0plOE9DLG1EZjlPRCx3SmVxUEUsWUFNRCxrRGYzUEQsd0plb1FDLDRPZnBRRCx3SmU0UUMsa0RmNVFELHdKZThRRSxXQU9GLDhDQW5LQyw0Q2ZsSEQseUpld1JBLHNEQXRLQyw0Q2ZsSEQseUplNkdBLHNDQWtGQSw2QkFDQSxjQUNBLHFCQUVBLDRDQUNDLG9DQUNBLGNBQ0EscUJBQ0EscUJBR0QsNENBQ0Msb0NBQ0EsY0FDQSxxQkFLRCxvTkFJQyx5QkFDQSxXQUNBLHFCQXRHQSwyRGZsSEQsdUplb1FDLHdTZnBRRCx1SmU0UUMsaUVmNVFELHVKZThRRSxXQU9GLDhDQW5LQywyRGZsSEQsd0pld1JBLHNEQXRLQywyRGZsSEQsd0pla0hDLDREZmxIRCx3SmVvUUMsNFNmcFFELHdKZTRRQyxrRWY1UUQsd0plOFFFLFdBT0YsOENBbktDLDREZmxIRCx5SmV3UkEsc0RBdEtDLDREZmxIRCx5SmNrSEMsaUJBQ0MsYUFDQSxlQUNBLDRCQUNDLGtCQUVBLHVDQUNDLGlCSitFRywyQk9wTVIsaUJBRUksV0FDQSxXUGlNSSwyQk83TFIsYUFFSSxzQkFDQSxXQUNBLG1CQUNBLFdQd0xJLDJCT3JMTixvQkFFSSxZQUNBLGtCQUNBLGlCQUtOLFNBQ0Usb0NBQ0EsV0FDQSxlQUNBLGlCQUNBLG9CUHVLTSwyQk81S1IsU0FRSSxlQUNBLGlCQUNBLHFCQUdGLGdCQUNFLGdCQUdGLGVBQ0UsV0FDQSxtQ0FDQSxhQUNBLG1CQUdGLGtCQUNFLFdBQ0EsbUNBQ0EsZ0JBRUEsb0JDZ0dGLHFCQUNBLGVBQ0EsMEJBWUEsY0FFQSw0QkFDQSw4QkQvR0ksZ0JDa0dKLDZDRHBHRSxvQkNxR0QsZ0JBQ0EsZ0NBQ0EsZ0NBYUYsMEJBRUUsY0FFQSw0QkFDQSw2QkFGbUIsQ0FPckIsMEJBR0UsZ0NBQ0Esa0NBR0EsYUE5R1ksQ0RoQmYsc0JBQ0UsY0FDQSxtQkFDQSxhUHFJTSwyQk94SVIsc0JBTUksaUJBQ0Esa0JBQ0EsV1BnSUksMkJPeElSLHNCQVlJLGFQNEhJLDJCT3hJUixzQkFnQkksYUFHRix3QkNzRUEscUJBQ0EsZUFDQSwwQkFZQSxjQUVBLDRCQUNBLDZCQUZtQixDQVhuQiw2Q0QxRUEsd0JDMkVDLGdCQUNBLGdDQUNBLGdDQWFGLDhCQUVFLGNBRUEsNEJBQ0EsNkJBRm1CLENBT3JCLDhCQUdFLGdDQUNBLGtDQUdBLGFBOUdZLENEUWYsZ0VBRUUsZ0JBQ0EsbUJBR0Ysc0VBRUUsV0FDQSxnQkFDQSxlQUNBLGlCQUdGLHNCQUNFLGdCQUNBLGtCQUVBLDBEQUNFLGFBR0YsdUNBQ0UsYVB5RkksMkJPbEdSLHNCQWFJLGtCQUNBLFlBQ0Esa0JBQ0EsVUFHRiwrQkFDRSxXUDhFSSwyQk8vRU4sK0JBSUksc0JBQ0EsaUJBQ0Esa0JBQ0EsZ0JBQ0Esa0JBQ0EsaUJBQ0Esa0JBQ0Esb0JBS04sOERBRUUsY0FDQSxzQkFDQSxnQkFDQSxlQUNBLGlCQUVBLHNHQUNFLGdCQUlKLHdCQUNFLHFCQUNBLGdCQUNBLFlBRUEsbUNBQ0UsV0FDQSxpQkFHRiw4QkFDRSxXQUlKLHVEQUVFLGdCQUNBLHlCQUNBLHNCQUNBLGVBQ0EsaUJBQ0EsbUJBQ0EsdUJBR0YsU0FDRSxrQkFDQSxtQlBzQk0sMkJPeEJSLFNBS0ksb0IiLCJmaWxlIjoibWFpbi5hMWIxYzYyYzY4MzlhNWI2MTZlOC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAbWl4aW4gX29IZWFkZXJCYXNlKCkge1xuXHQuby1oZWFkZXIge1xuXHRcdGNvbG9yOiBfb0hlYWRlckdldCgnaGVhZGVyLXRleHQnKTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0hlYWRlckdldCgnaGVhZGVyLWJhY2tncm91bmQnKTtcblx0fVxuXG5cdC5vLWhlYWRlcl9fcm93IHtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgX29IZWFkZXJHZXQoJ2hlYWRlci1ib3JkZXInKTtcblx0fVxuXG5cblx0Lm8taGVhZGVyX19jb250YWluZXIge1xuXHRcdEBpbmNsdWRlIG9HcmlkQ29udGFpbmVyKCk7XG5cdFx0QGluY2x1ZGUgb05vcm1hbGlzZUNsZWFyZml4KCk7XG5cdH1cblxuXHQuby1oZWFkZXJfX3Zpc3VhbGx5LWhpZGRlbiB7XG5cdFx0QGluY2x1ZGUgb05vcm1hbGlzZVZpc3VhbGx5SGlkZGVuO1xuXHR9XG59XG4iLCIvLy8gT3V0cHV0IGRlYnVnIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgbG9hZGVkIGxheW91dHMuXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJGxheW91dHMgLSBNYXAgb2YgbGF5b3V0c1xuQG1peGluIG9HcmlkRGVidWdJbmZvKCRsYXlvdXRzOiAkby1ncmlkLWxheW91dHMpIHtcblx0LyohIERFQlVHXG5cdCAqIExheW91dHM6XG5cdCAqICN7aW5zcGVjdCgkbGF5b3V0cyl9XG5cdCAqL1xuXHRAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzKCRfby1ncmlkLWxheW91dC1uYW1lcywgJG8tZ3JpZC1sYXlvdXRzKTtcbn1cblxuLy8vIEFkZCBhIGxheW91dCAoYnJlYWtwb2ludCkuIFRoaXMgY2FuIGJlIHVzZWQgdG8gYWRkIGEgbmV3IGJyZWFrcG9pbnQgdG8gYVxuLy8vIHByb2plY3QsIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGxheW91dHMgKFMsIE0sIEwsIFhMKS5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgQGluY2x1ZGUgb0dyaWRBZGRMYXlvdXQoJGxheW91dC1uYW1lOiBQLCAkbGF5b3V0LXdpZHRoOiA2MDBweCk7XG4vLy8gIEBpbmNsdWRlIG9HcmlkQWRkTGF5b3V0KCRsYXlvdXQtbmFtZTogWFhMLCAkbGF5b3V0LXdpZHRoOiAxNjAwcHgsICRndXR0ZXItd2lkdGg6IDMwcHgpO1xuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRsYXlvdXQtbmFtZSAtIE5hbWUgb2YgdGhlIGxheW91dCAoZS5nLiBTKVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGF5b3V0LXdpZHRoIC0gTGF5b3V0IHdpZHRoIGluIHB4XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRndXR0ZXItd2lkdGggW251bGxdIC0gR3V0dGVyIHdpZHRoIGluIHB4XG5AbWl4aW4gb0dyaWRBZGRMYXlvdXQoJGxheW91dC1uYW1lLCAkbGF5b3V0LXdpZHRoLCAkZ3V0dGVyLXdpZHRoOiBudWxsKSB7XG5cdCR0ZW1wLWxheW91dHM6ICgpO1xuXHQkdGVtcC1ndXR0ZXJzOiAoZGVmYXVsdDogb0dyaWRHdXR0ZXIoKSk7XG5cblx0Ly8gQWRkIHRoZSBuZXcgbGF5b3V0IGluIHRoZSBjb3JyZWN0IHBvc2l0aW9uOlxuXHQvLyAod2Ugd2FudCAkby1ncmlkLWxheW91dHMgYW5kICRvLWdyaWQtZ3V0dGVycyB0byBiZSBvcmRlcmVkIGZyb20gdGhlIHNtYWxsZXN0IHRvIHRoZSBsYXJnZXN0IGxheW91dClcblx0QGZvciAkaW5kZXggZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRvLWdyaWQtbGF5b3V0cykge1xuXHRcdCRwcmV2aW91cy1sYXlvdXQtd2lkdGg6IGlmKCRpbmRleCA9PSAxLCAwLCBtYXAtZ2V0KCRvLWdyaWQtbGF5b3V0cywgbnRoKCRfby1ncmlkLWxheW91dC1uYW1lcywgJGluZGV4IC0gMSkpKTtcblx0XHQkY3VycmVudC1sYXlvdXQtbmFtZTogbnRoKCRfby1ncmlkLWxheW91dC1uYW1lcywgJGluZGV4KTtcblx0XHQkY3VycmVudC1sYXlvdXQtd2lkdGg6IG1hcC1nZXQoJG8tZ3JpZC1sYXlvdXRzLCAkY3VycmVudC1sYXlvdXQtbmFtZSk7XG5cblx0XHQkY3VycmVudC1ndXR0ZXItd2lkdGg6IG1hcC1nZXQoJG8tZ3JpZC1ndXR0ZXJzLCAkY3VycmVudC1sYXlvdXQtbmFtZSk7XG5cblx0XHQvLyBBc3N1bWVzIGFsbCBsYXlvdXRzIHVzZSB0aGUgc2FtZSB1bml0IGUuZy4gcHggb3IgcmVtIChhcyBkb2VzIHRoZSBKYXZhU2NyaXB0KVxuXHRcdEBpZiBub3QgKCRwcmV2aW91cy1sYXlvdXQtd2lkdGggPiAkbGF5b3V0LXdpZHRoIG9yICRjdXJyZW50LWxheW91dC13aWR0aCA8ICRsYXlvdXQtd2lkdGgpIHtcblx0XHRcdCR0ZW1wLWxheW91dHM6IG1hcC1tZXJnZSgkdGVtcC1sYXlvdXRzLCAoJGxheW91dC1uYW1lOiAkbGF5b3V0LXdpZHRoKSk7XG5cdFx0XHQkdGVtcC1ndXR0ZXJzOiBtYXAtbWVyZ2UoJHRlbXAtZ3V0dGVycywgKCRsYXlvdXQtbmFtZTogJGd1dHRlci13aWR0aCkpO1xuXHRcdH1cblxuXHRcdCR0ZW1wLWxheW91dHM6IG1hcC1tZXJnZSgkdGVtcC1sYXlvdXRzLCAoJGN1cnJlbnQtbGF5b3V0LW5hbWU6ICRjdXJyZW50LWxheW91dC13aWR0aCkpO1xuXG5cdFx0QGlmICRjdXJyZW50LWd1dHRlci13aWR0aCB7XG5cdFx0XHQkdGVtcC1ndXR0ZXJzOiBtYXAtbWVyZ2UoJHRlbXAtZ3V0dGVycywgKCRjdXJyZW50LWxheW91dC1uYW1lOiAkY3VycmVudC1ndXR0ZXItd2lkdGgpKTtcblx0XHR9XG5cdH1cblx0JG8tZ3JpZC1sYXlvdXRzOiAkdGVtcC1sYXlvdXRzICFnbG9iYWw7XG5cdCRfby1ncmlkLWxheW91dC1uYW1lczogbWFwLWtleXMoJG8tZ3JpZC1sYXlvdXRzKSAhZ2xvYmFsO1xuXG5cdEBpZiAkZ3V0dGVyLXdpZHRoIHtcblx0XHQkby1ncmlkLWd1dHRlcnM6ICR0ZW1wLWd1dHRlcnMgIWdsb2JhbDtcblx0fVxuXG5cdCRfby1ncmlkLW1heC13aWR0aDogbWFwLWdldCgkby1ncmlkLWxheW91dHMsIG50aCgkX28tZ3JpZC1sYXlvdXQtbmFtZXMsIC0xKSkgIWdsb2JhbDtcbn1cblxuLy8vIEFwcGx5IHN0eWxlcyBhdCBhIGdpdmVuIGxheW91dCBzaXplIChicmVha3BvaW50KSBhcyB0aGUgZ3JpZC4gSXQgc2hvdWxkIGJlXG4vLyBwYXNzZWQgb25lIG9mICRvLWdyaWQtbGF5b3V0cyBlLmcuIGBTYCwgYE1gLCBldGMuLi4gZGVwZW5kaW5nIG9uIHdoaWNoIGxheW91dFxuLy8gc2l6ZSB0aGUgc3R5bGUgc2hvdWxkIGFwcGx5IGF0LlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAgLy8gVHVybiB0aGUgY29sb3Igb2YgYW4gZWxlbWVudCByZWQgYXQgbWVkaXVtIGxheW91dCBzaXplIGFuZCB1cFxuLy8vICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbyhNKSB7XG4vLy8gIFx0ZWxlbWVudCB7XG4vLy8gIFx0XHRjb2xvcjogcmVkO1xuLy8vICBcdH1cbi8vLyAgfVxuLy8vICAvLyBUdXJuIHRoZSBjb2xvciBvZiBhbiBlbGVtZW50IGJsdWUgdW50aWwgbWVkaXVtIGxheW91dFxuLy8vICBlbGVtZW50IHtcbi8vLyAgXHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkdW50aWw6IE0pIHtcbi8vLyAgXHRcdGNvbG9yOiBibHVlO1xuLy8vICBcdH1cbi8vLyAgfVxuLy8vICAvLyBUdXJuIHRoZSBjb2xvciBvZiBhbiBlbGVtZW50IGdyZWVuIGZyb20gc21hbGwgbGF5b3V0IHVudGlsIG1lZGl1bSBsYXlvdXRcbi8vLyAgZWxlbWVudCB7XG4vLy8gIFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IFMsICR1bnRpbDogTSkge1xuLy8vICBcdFx0Y29sb3I6IGdyZWVuO1xuLy8vICBcdH1cbi8vLyAgfVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9IGZyb20gLSBvbmUgb2YgJG8tZ3JpZC1sYXlvdXRzXG4vLy8gQHBhcmFtIHtTdHJpbmd9IHVudGlsIC0gb25lIG9mICRvLWdyaWQtbGF5b3V0c1xuQG1peGluIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBmYWxzZSwgJHVudGlsOiBmYWxzZSkge1xuXG5cdCRncmlkLWlzLXJlc3BvbnNpdmU6ICRvLWdyaWQtbW9kZSAhPSAnZml4ZWQnO1xuXHRAaW5jbHVkZSBtcShcblx0XHQkZnJvbTogJGZyb20sXG5cdFx0JHVudGlsOiAkdW50aWwsXG5cdFx0JHJlc3BvbnNpdmU6ICRncmlkLWlzLXJlc3BvbnNpdmUsXG5cdFx0JGJyZWFrcG9pbnRzOiAkby1ncmlkLWxheW91dHMsXG5cdFx0JHN0YXRpYy1icmVha3BvaW50OiAkby1ncmlkLWZpeGVkLWxheW91dFxuXHQpIHtcblx0XHRAY29udGVudDtcblx0fVxufVxuXG4vLy8gQmFzZSBjb2x1bW4gc3R5bGVzIGFuZCByZXNwb25zaXZlIGxheW91dCB3aWR0aFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyBCbG9jayBoYXMgY29sdW1uIHN0eWxlc1xuLy8vICAgZWwgeyBAaW5jbHVkZSBvR3JpZENvbHNwYW4oKTsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyA0LWNvbHVtbiB3aWRlIGJsb2NrXG4vLy8gICBlbCB7IEBpbmNsdWRlIG9HcmlkQ29sc3Bhbig0KTsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyBIYWxmLXdpZHRoIGJsb2NrXG4vLy8gICBlbCB7IEBpbmNsdWRlIG9HcmlkQ29sc3BhbigxLzIpOyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIEJsb2NrIGlzIGZ1bGwtd2lkdGggYnkgZGVmYXVsdCwgOC1jb2x1bW4gd2lkZSBvbiBNZWRpdW0gbGF5b3V0cyBhbmQgaGlkZGVuIG9uIExhcmdlIGxheW91dHNcbi8vLyAgIGVsIHsgQGluY2x1ZGUgb0dyaWRDb2xzcGFuKChkZWZhdWx0OiAxMiwgTTogOCwgTDogaGlkZSkpOyB9XG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IE1hcH0gJHNwYW4gW251bGxdXG5AbWl4aW4gb0dyaWRDb2xzcGFuKCRzcGFuOiBudWxsLCAkd2lkdGgtb25seTogZmFsc2UpIHtcblx0QGlmIG5vdCAkd2lkdGgtb25seSB7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRmbG9hdDogbGVmdDtcblx0XHRmbGV4OiAxIDEgMCU7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlOyAvLyBSZXF1aXJlZCBmb3IgcHVzaCBhbmQgcHVsbFxuXG5cdFx0QGlmICRvLWdyaWQtbW9kZSA9PSAnZml4ZWQnIHtcblx0XHRcdHBhZGRpbmctbGVmdDogb0dyaWRHdXR0ZXIoJG8tZ3JpZC1maXhlZC1sYXlvdXQpO1xuXHRcdH0gQGVsc2Uge1xuXHRcdFx0QGVhY2ggJGxheW91dC1uYW1lIGluIG1hcC1rZXlzKCRvLWdyaWQtZ3V0dGVycykge1xuXHRcdFx0XHRAaWYgJGxheW91dC1uYW1lID09ICdkZWZhdWx0JyB7XG5cdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiBvR3JpZEd1dHRlcigpO1xuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkbGF5b3V0LW5hbWUpIHtcblx0XHRcdFx0XHRcdHBhZGRpbmctbGVmdDogb0dyaWRHdXR0ZXIoJGxheW91dC1uYW1lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0QGlmICRzcGFuIHtcblx0XHRAaW5jbHVkZSBfb0dyaWRDb2x1bW5XaWR0aCgkc3Bhbik7XG5cdH1cbn1cblxuLy8vIEdyaWQgY29udGFpbmVyXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGdyaWQtbW9kZSBbJG8tZ3JpZC1tb2RlXVxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGJsZWVkIFtmYWxzZV1cbkBtaXhpbiBvR3JpZENvbnRhaW5lcigkZ3JpZC1tb2RlOiAkby1ncmlkLW1vZGUsICRibGVlZDogZmFsc2UpIHtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdG1hcmdpbi1yaWdodDogYXV0bztcblx0bWluLXdpZHRoOiAkby1ncmlkLW1pbi13aWR0aDtcblx0Ly8gT2xkZXIgYnJvd3NlcnMgZ2V0IGEgZml4ZWQtd2lkdGggbGF5b3V0XG5cdG1heC13aWR0aDogb0dyaWRHZXRNYXhXaWR0aEZvckxheW91dCgkby1ncmlkLWZpeGVkLWxheW91dCk7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRAaWYgJGJsZWVkIHtcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0cGFkZGluZy1yaWdodDogMDtcblx0fVxuXG5cdEBpZiAkZ3JpZC1tb2RlID09ICdmaXhlZCcge1xuXHRcdC8vIElmIHRoZSBncmlkIGlzbid0IGZsdWlkLCB3ZSBzZXQgaXQgdG8gYSBjZXJ0YWluIHdpZHRoXG5cdFx0d2lkdGg6IG9HcmlkR2V0TWF4V2lkdGhGb3JMYXlvdXQoJG8tZ3JpZC1maXhlZC1sYXlvdXQsICRncmlkLW1vZGU6ICdmaXhlZCcpO1xuXHRcdEBpZiBub3QgJGJsZWVkIHtcblx0XHRcdHBhZGRpbmctbGVmdDogb0dyaWRHdXR0ZXIoJG8tZ3JpZC1maXhlZC1sYXlvdXQpO1xuXHRcdFx0cGFkZGluZy1yaWdodDogb0dyaWRHdXR0ZXIoJG8tZ3JpZC1maXhlZC1sYXlvdXQpO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0bWF4LXdpZHRoOiAkX28tZ3JpZC1tYXgtd2lkdGg7XG5cblx0XHRAZWFjaCAkbGF5b3V0LW5hbWUgaW4gbWFwLWtleXMoJG8tZ3JpZC1ndXR0ZXJzKSB7XG5cdFx0XHRAaWYgJGxheW91dC1uYW1lID09ICdkZWZhdWx0JyB7XG5cdFx0XHRcdEBpZiBub3QgJGJsZWVkIHtcblx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IG9HcmlkR3V0dGVyKCk7XG5cdFx0XHRcdFx0cGFkZGluZy1yaWdodDogb0dyaWRHdXR0ZXIoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRsYXlvdXQtbmFtZSkge1xuXHRcdFx0XHRcdEBpZiBub3QgJGJsZWVkIHtcblx0XHRcdFx0XHRcdHBhZGRpbmctbGVmdDogb0dyaWRHdXR0ZXIoJGxheW91dC1uYW1lKTtcblx0XHRcdFx0XHRcdHBhZGRpbmctcmlnaHQ6IG9HcmlkR3V0dGVyKCRsYXlvdXQtbmFtZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0QGVhY2ggJGxheW91dC1uYW1lIGluICRfby1ncmlkLWxheW91dC1uYW1lcyB7XG5cdFx0XHRAaWYgaW5kZXgoJF9vLWdyaWQtbGF5b3V0LW5hbWVzLCAkbGF5b3V0LW5hbWUpID49IGluZGV4KCRfby1ncmlkLWxheW91dC1uYW1lcywgJG8tZ3JpZC1zdGFydC1zbmFwcHktbW9kZS1hdCkge1xuXHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkbGF5b3V0LW5hbWUpIHtcblx0XHRcdFx0XHRAaWYgJGdyaWQtbW9kZSA9PSAnc25hcHB5JyB7XG5cdFx0XHRcdFx0XHRtYXgtd2lkdGg6IG1hcC1nZXQoJG8tZ3JpZC1sYXlvdXRzLCAkbGF5b3V0LW5hbWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRAaWYgJGdyaWQtbW9kZSA9PSAnZmx1aWQnIHtcblx0XHRcdFx0XHRcdC8vIElmIHRoZSBncmlkIG1vZGUgaXMgZmx1aWQsIHRoZW4gdXNlIGEgY2xhc3MgdG8gbWFrZSBhIHJvdyBvciBhIHNldCBvZiByb3dzIHNuYXBweVxuXHRcdFx0XHRcdFx0Lm8tZ3JpZC1zbmFwcHkgJixcblx0XHRcdFx0XHRcdCYtLXNuYXBweSB7XG5cdFx0XHRcdFx0XHRcdG1heC13aWR0aDogbWFwLWdldCgkby1ncmlkLWxheW91dHMsICRsYXlvdXQtbmFtZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBCYXNlIHJvdyBzdHlsZXNcbkBtaXhpbiBvR3JpZFJvdyB7XG5cdGNsZWFyOiBib3RoO1xuXHRmbGV4LXdyYXA6IHdyYXA7IC8vIE5vdGUgdGhhdCB0aGlzIGJyZWFrcyBpbiBvbGQgRmlyZWZveFxuXHRkaXNwbGF5OiBmbGV4O1xuXG5cdEBtZWRpYSBwcmludCB7XG5cdFx0ZGlzcGxheTogaW5oZXJpdDtcblx0fVxuXG5cdEBpZiAkby1ncmlkLW1vZGUgPT0gJ2ZpeGVkJyB7XG5cdFx0bWFyZ2luLWxlZnQ6IC0xICogb0dyaWRHdXR0ZXIoJG8tZ3JpZC1maXhlZC1sYXlvdXQpO1xuXHR9IEBlbHNlIHtcblx0XHRAZWFjaCAkbGF5b3V0LW5hbWUgaW4gbWFwLWtleXMoJG8tZ3JpZC1ndXR0ZXJzKSB7XG5cdFx0XHRAaWYgJGxheW91dC1uYW1lID09ICdkZWZhdWx0JyB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAtMSAqIG9HcmlkR3V0dGVyKCk7XG5cdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGxheW91dC1uYW1lKSB7XG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IC0xICogb0dyaWRHdXR0ZXIoJGxheW91dC1uYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIENsZWFyZml4IGZvciBJRTkgYW5kIGJlbG93XG5cdHpvb206IDE7XG5cblx0JjpiZWZvcmUsXG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHRcdGRpc3BsYXk6IGZsZXg7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tYmxvY2stbm8tZHVwbGljYXRlLXByb3BlcnRpZXNcblx0fVxuXHQmOmFmdGVyIHtcblx0XHRjbGVhcjogYm90aDtcblx0fVxufVxuXG4vLy8gUmVtb3ZlIGd1dHRlcnMgZnJvbSBjb2x1bW5zIGluIGEgcm93XG4vLy9cbi8vLyBAcGFyYW0ge3N0cmluZ30gJGNvbHVtbi1zZWxlY3RvciBbXCJbby1ncmlkLWNvbHNwYW5dXCJdIC0gQ1NTIHNlbGVjdG9yIGZvciByb3cgZWxlbWVudFxuQG1peGluIG9HcmlkUm93Q29tcGFjdCgkY29sdW1uLXNlbGVjdG9yOiBcIltvLWdyaWQtY29sc3Bhbl1cIikge1xuXHRtYXJnaW4tbGVmdDogMDtcblxuXHQ+ICN7dW5xdW90ZSgkY29sdW1uLXNlbGVjdG9yKX0ge1xuXHRcdHBhZGRpbmctbGVmdDogMDtcblx0fVxufVxuXG4vLy8gUmVtb3ZlIHJvdyBzdHlsZXNcbkBtaXhpbiBvR3JpZFJlc2V0Um93IHtcblx0Y2xlYXI6IG5vbmU7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0bWFyZ2luLWxlZnQ6IDA7XG5cblx0JjpiZWZvcmUsXG5cdCY6YWZ0ZXIge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cbn1cblxuLy8vIENlbnRlciBjb2x1bW5cbkBtaXhpbiBvR3JpZENlbnRlciB7XG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdGZsb2F0OiBub25lO1xufVxuXG4vLy8gVW5jZW50ZXIgY29sdW1uXG5AbWl4aW4gb0dyaWRVbmNlbnRlciB7XG5cdG1hcmdpbi1sZWZ0OiAwO1xuXHRtYXJnaW4tcmlnaHQ6IDA7XG5cdGZsb2F0OiBsZWZ0O1xufVxuXG4vLy8gUmVtb3ZlIGNvbHVtbiBzdHlsZXNcbkBtaXhpbiBvR3JpZFJlc2V0Q29sdW1uIHtcblx0cGFkZGluZy1sZWZ0OiAwO1xuXHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHRmbG9hdDogbm9uZTtcblx0d2lkdGg6IGF1dG87XG5cdG1pbi13aWR0aDogMDtcblx0bWF4LXdpZHRoOiBub25lO1xuXHRmbGV4OiBub25lO1xufVxuXG4vLy8gUmVvcmRlciB2aXN1YWxseTogcHVsbFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zXG5AbWl4aW4gb0dyaWRQdWxsKCRjb2x1bW5zKSB7XG5cdHJpZ2h0OiBvR3JpZENvbHNwYW4oJGNvbHVtbnMpO1xuXHRsZWZ0OiBhdXRvO1xufVxuXG4vLy8gUmVvcmRlciB2aXN1YWxseTogcHVzaFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zXG5AbWl4aW4gb0dyaWRQdXNoKCRjb2x1bW5zKSB7XG5cdGxlZnQ6IG9HcmlkQ29sc3BhbigkY29sdW1ucyk7XG5cdHJpZ2h0OiBhdXRvO1xufVxuXG4vLy8gT2Zmc2V0OiBhZGQgc3BhY2UgYmVmb3JlIGEgY29sdW1uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnNcbkBtaXhpbiBvR3JpZE9mZnNldCgkY29sdW1ucykge1xuXHRtYXJnaW4tbGVmdDogb0dyaWRDb2xzcGFuKCRjb2x1bW5zKTtcbn1cblxuLy8vIFN1cmZhY2UgdGhlIGxheW91dCBjdXJyZW50bHkgZGlzcGxheWVkIHRvIG1ha2UgaXQgcmVhZGFibGUgaW4gSlMuXG4vLy9cbi8vLyBAZXhhbXBsZSBqc1xuLy8vICAvLyB5b3VyLWFwcC9tYWluLmpzXG4vLy8gIC8vIFJldHVybiB0aGUgY3VycmVudCBsYXlvdXQgKGUuZy4gZGVmYXVsdCwgUywgTSwgTCwgWEwpXG4vLy8gIGltcG9ydCBvR3JpZCBmcm9tICdvLWdyaWQnO1xuLy8vICBsZXQgY3VycmVudExheW91dCA9IG9HcmlkLmdldEN1cnJlbnRMYXlvdXQoKTtcbi8vLyAgY29uc29sZS5sb2coY3VycmVudExheW91dCk7XG4vLy9cbi8vLyAgLy8gUmV0dXJuIHRoZSBjdXJyZW50IGd1dHRlciAoZS5nLiAxMHB4LCAyMHB4KVxuLy8vICBpbXBvcnQgb0dyaWQgZnJvbSAnby1ncmlkJztcbi8vLyAgbGV0IGN1cnJlbnRHdXR0ZXIgPSBvR3JpZC5nZXRDdXJyZW50R3V0dGVyKCk7XG4vLy8gIGNvbnNvbGUubG9nKGN1cnJlbnRHdXR0ZXIpO1xuQG1peGluIG9HcmlkU3VyZmFjZUN1cnJlbnRMYXlvdXQge1xuXHRodG1sOmFmdGVyIHtcblx0XHRjb250ZW50OiAneyBcImxheW91dFwiOiBcImRlZmF1bHRcIiwgXCJndXR0ZXJcIjogXCInICsgb0dyaWRHdXR0ZXIoKSArICdcIiB9Jztcblx0XHRkaXNwbGF5OiBub25lO1xuXG5cdFx0QGVhY2ggJGJyZWFrcG9pbnQgaW4gJF9vLWdyaWQtbGF5b3V0LW5hbWVzIHtcblx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRicmVha3BvaW50KSB7XG5cdFx0XHRcdGNvbnRlbnQ6ICd7IFwibGF5b3V0XCI6IFwiJyArICRicmVha3BvaW50ICsgJ1wiLCBcImd1dHRlclwiOiBcIicgKyBvR3JpZEd1dHRlcigkYnJlYWtwb2ludCkgKyAnXCIgfSc7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBGaXggYSBidWcgaW4gU2FmYXJpIHdoZXJlIGl0ZW1zIHdvdWxkbid0IHdyYXAgcHJvcGVybHlcbi8vLyBSZW1vdmUgd2hlbiBTYWZhcmkgMTAgc3VwcG9ydCBpcyBubyBsb25nZXIgcmVxdWlyZWQuXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3BoaWxpcHdhbHRvbi9mbGV4YnVncyMxMS1taW4tYW5kLW1heC1zaXplLWRlY2xhcmF0aW9ucy1hcmUtaWdub3JlZC13aGVuLXdyYXBwaW5nLWZsZXgtaXRlbXNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb0dyaWRGaXhTYWZhcmlXcmFwKCRhcmdzLi4uKSB7XG5cdGZsZXgtYmFzaXM6IG9HcmlkQ29sc3BhbigkYXJncy4uLik7XG59XG5cbi8vLyBTdXJmYWNlIHRoZSBwcm9qZWN0cyBsYXlvdXRzIChicmVha3BvaW50cykgdG8gbWFrZSBpdCByZWFkYWJsZSBpbiBKUy5cbi8vL1xuLy8vIEBleGFtcGxlIGpzXG4vLy8gIC8vIHlvdXItYXBwL21haW4uanNcbi8vLyAgLy8gUmV0dXJuIHRoZSBsYXlvdXRzIChlLmcuIHtcImxheW91dHNcIjoge1wiU1wiOiBcIjQ5MHB4XCIsXCJNXCI6IFwiNzQwcHhcIixcIkxcIjogXCI5ODBweFwiLFwiWExcIjogXCIxMjIwcHhcIn19KVxuLy8vICBpbXBvcnQgb0dyaWQgZnJvbSAnby1ncmlkJztcbi8vLyAgbGV0IGJyZWFrcG9pbnRzID0gb0dyaWQuZ2V0R3JpZEJyZWFrcG9pbnRzKCk7XG4vLy8gIGNvbnNvbGUubG9nKGJyZWFrcG9pbnRzKTtcbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG5AbWl4aW4gb0dyaWRTdXJmYWNlTGF5b3V0U2l6ZXMge1xuXHRodG1sOmJlZm9yZSB7XG5cdFx0JGNvbWJpbmVkOiAne1wibGF5b3V0c1wiOiB7JztcblxuXHRcdCRrZXlzOiBtYXAta2V5cygkby1ncmlkLWxheW91dHMpO1xuXG5cdFx0QGZvciAkaXR0ciBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGtleXMpIHtcblx0XHRcdCRrZXk6IG50aCgka2V5cywgJGl0dHIpO1xuXHRcdFx0JHZhbHVlOiBtYXAtZ2V0KCRvLWdyaWQtbGF5b3V0cywgJGtleSk7XG5cblx0XHRcdCRjb21iaW5lZDogJGNvbWJpbmVkICsgX29HcmlkUXVvdGVTdHJpbmcoJGtleSkgKyAnOiAnICsgX29HcmlkUXVvdGVTdHJpbmcoJHZhbHVlKTtcblxuXHRcdFx0QGlmICRpdHRyIDwgbGVuZ3RoKCRrZXlzKSB7XG5cdFx0XHRcdCRjb21iaW5lZDogJGNvbWJpbmVkICsgXCIsIFwiO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCRjb21iaW5lZDogJGNvbWJpbmVkICsgJ319JztcblxuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0Y29udGVudDogJGNvbWJpbmVkO1xuXHR9XG59XG5cbi8vLyBIdW1hbiBmcmllbmRseSBuYW1lcyBmb3IgcG9ydGlvbnMgYW5kIGNlbnRlcmluZzpcbi8vL1xuLy8vIC0gaGlkZVxuLy8vIC0gZnVsbC13aWR0aFxuLy8vIC0gb25lLWhhbGZcbi8vLyAtIG9uZS10aGlyZFxuLy8vIC0gdHdvLXRoaXJkc1xuLy8vIC0gb25lLXF1YXJ0ZXJcbi8vLyAtIHRocmVlLXF1YXJ0ZXJzXG4vLy8gLSBjZW50ZXJcbi8vLyAtIHVuY2VudGVyXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGF5b3V0LW5hbWUgW251bGxdXG5AbWl4aW4gX29HcmlkSHVtYW5GcmllbmRseUNvbHVtbnMoJGxheW91dC1uYW1lOiBudWxsKSB7XG5cdFtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIiN7JGxheW91dC1uYW1lfWhpZGVcIl0ge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQvLyBDZW50ZXIgYW5kIHVuLWNlbnRlclxuXHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX1jZW50ZXJcIl0ge1xuXHRcdEBpbmNsdWRlIG9HcmlkQ2VudGVyO1xuXHR9XG5cdC8vIFNpbmNlIHdyaXRpbmcgW2RhdGEtby1ncmlkLWNvbHNwYW5+PVwidW5jZW50ZXJcIl0gd291bGRuJ3QgbWFrZSBtdWNoIHNlbnNlXG5cdC8vIHdlIG9ubHkgYWxsb3cgXCJ1bmNlbnRlclwiIGNvbWJpbmVkIHdpdGggYSBsYXlvdXQgKGUuZy4gWEx1bmNlbnRlcilcblx0QGlmICRsYXlvdXQtbmFtZSAhPSBudWxsIHtcblx0XHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX11bmNlbnRlclwiXSB7XG5cdFx0XHRAaW5jbHVkZSBvR3JpZFVuY2VudGVyO1xuXHRcdH1cblx0fVxuXG5cdC8vIFBvcnRpb25zXG5cdEBlYWNoICRodW1hbi1mcmllbmRseS1uYW1lIGluIChmdWxsLXdpZHRoLCBvbmUtaGFsZiwgb25lLXRoaXJkLCB0d28tdGhpcmRzLCBvbmUtcXVhcnRlciwgdGhyZWUtcXVhcnRlcnMpIHtcblx0XHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX0jeyRodW1hbi1mcmllbmRseS1uYW1lfVwiXSB7XG5cdFx0XHQvLyBSZXN0b3JlIHZpc2liaWxpdHkgZnJvbSBgZGlzcGxheTogbm9uZWBcblx0XHRcdC8vIGlmIGBkYXRhLW8tZ3JpZC1jb2xzcGFuYCB3YXMgc2V0IHRvIGAwYCBvciBgaGlkZWBcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXG5cdFx0XHQvLyBEZWZpbmUgd2lkdGggaW4gJVxuXHRcdFx0QGluY2x1ZGUgX29HcmlkRml4U2FmYXJpV3JhcCgkaHVtYW4tZnJpZW5kbHktbmFtZSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgb3JkZXIvb3JkZXJcblx0XHRcdG1pbi13aWR0aDogb0dyaWRDb2xzcGFuKCRodW1hbi1mcmllbmRseS1uYW1lKTtcblx0XHRcdG1heC13aWR0aDogb0dyaWRDb2xzcGFuKCRodW1hbi1mcmllbmRseS1uYW1lKTtcblx0XHRcdHdpZHRoOiBvR3JpZENvbHNwYW4oJGh1bWFuLWZyaWVuZGx5LW5hbWUpO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gU2h1ZmZsZSBjb2x1bW5zIGFyb3VuZCB1c2luZyBwdWxsLCBwdXNoIGFuZCBvZmZzZXRcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRsYXlvdXQtbmFtZSBbbnVsbF1cbkBtaXhpbiBfb0dyaWRTaHVmZmxlQ29sdW1ucygkbGF5b3V0LW5hbWU6IG51bGwpIHtcblx0QGZvciAkY29sc3BhbiBmcm9tIDAgdGhyb3VnaCAoJG8tZ3JpZC1jb2x1bW5zIC0gMSkge1xuXHRcdFtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIiN7JGxheW91dC1uYW1lfXB1c2gjeyRjb2xzcGFufVwiXSB7XG5cdFx0XHRAaW5jbHVkZSBvR3JpZFB1c2goJGNvbHNwYW4pO1xuXHRcdH1cblx0XHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX1wdWxsI3skY29sc3Bhbn1cIl0ge1xuXHRcdFx0QGluY2x1ZGUgb0dyaWRQdWxsKCRjb2xzcGFuKTtcblx0XHR9XG5cdFx0W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiI3skbGF5b3V0LW5hbWV9b2Zmc2V0I3skY29sc3Bhbn1cIl0ge1xuXHRcdFx0QGluY2x1ZGUgb0dyaWRPZmZzZXQoJGNvbHNwYW4pO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gQ3Jvc3MgYnJvd3NlciBjb2x1bW4gd2lkdGhzIGFjcm9zcyBsYXlvdXRzXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIGVsIHsgQGluY2x1ZGUgX29HcmlkQ29sdW1uV2lkdGgoNCk7IH1cbi8vLyAgIGVsIHsgQGluY2x1ZGUgX29HcmlkQ29sdW1uV2lkdGgoMS8yKTsgfVxuLy8vICAgZWwgeyBAaW5jbHVkZSBfb0dyaWRDb2x1bW5XaWR0aChoaWRlKTsgfVxuLy8vICAgZWwgeyBAaW5jbHVkZSBfb0dyaWRDb2x1bW5XaWR0aCgoZGVmYXVsdDogMTIsIE06IDgsIEw6IGhpZGUpKTsgfVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgfCBNYXB9ICRzcGFuXG5AbWl4aW4gX29HcmlkQ29sdW1uV2lkdGgoJHNwYW4pIHtcblx0Ly8gU3BlY2lhbCBjYXNlOiB0aGUgY29sdW1uIGlzIGhpZGRlbiBieSBkZWZhdWx0XG5cdEBpZiAkc3BhbiA9PSAnaGlkZScge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH0gQGVsc2Uge1xuXHRcdC8vICRzcGFuIGlzIGEgbnVtYmVyIG9yIGEga2V5d29yZCwgc28gd2UncmUgb3V0cHV0dGluZyB0aGUgZGVmYXVsdCB3aWR0aCBmb3IgdGhhdCBjb2x1bW5cblx0XHRAaWYgdHlwZS1vZigkc3BhbikgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJHNwYW4pID09IHN0cmluZyB7XG5cblx0XHRcdC8vIFJlc3RvcmUgdmlzaWJpbGl0eSBmcm9tIGBkaXNwbGF5OiBub25lYFxuXHRcdFx0Ly8gaWYgYGRhdGEtby1ncmlkLWNvbHNwYW5gIHdhcyBzZXQgdG8gYDBgIG9yIGBoaWRlYFxuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cblx0XHRcdC8vIERlZmluZSB3aWR0aCBpbiAlXG5cdFx0XHRAaW5jbHVkZSBfb0dyaWRGaXhTYWZhcmlXcmFwKCRzcGFuKTsgLy9zdHlsZWxpbnQtZGlzYWJsZS1saW5lIG9yZGVyL29yZGVyXG5cdFx0XHRtaW4td2lkdGg6IG9HcmlkQ29sc3Bhbigkc3Bhbik7XG5cdFx0XHRtYXgtd2lkdGg6IG9HcmlkQ29sc3Bhbigkc3Bhbik7XG5cdFx0fVxuXHR9XG5cblx0Ly8gJHNwYW4gaXMgYSBtYXAsIHdlJ3JlIGxvb3BpbmcgdGhyb3VnaCBhbGwgb2YgdGhlIGxheW91dHNcblx0QGlmIHR5cGUtb2YoJHNwYW4pID09IG1hcCB7XG5cdFx0QGVhY2ggJGxheW91dC1uYW1lLCAkbGF5b3V0LXNwYW4gaW4gJHNwYW4ge1xuXHRcdFx0QGlmICRsYXlvdXQtbmFtZSA9PSAnZGVmYXVsdCcge1xuXHRcdFx0XHRAaW5jbHVkZSBfb0dyaWRDb2x1bW5XaWR0aCgkbGF5b3V0LXNwYW4pO1xuXHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdEBpZiAkbGF5b3V0LXNwYW4gPT0gJ2hpZGUnIHtcblx0XHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkbGF5b3V0LW5hbWUpIHtcblx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkbGF5b3V0LW5hbWUpIHtcblx0XHRcdFx0XHRcdC8vIFJlc3RvcmUgdmlzaWJpbGl0eSBmcm9tIGBkaXNwbGF5OiBub25lYFxuXHRcdFx0XHRcdFx0Ly8gaWYgYGRhdGEtby1ncmlkLWNvbHNwYW5gIHdhcyBzZXQgdG8gYDBgIG9yIGBoaWRlYFxuXHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0XHQvLyBEZWZpbmUgd2lkdGggaW4gJVxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgX29HcmlkRml4U2FmYXJpV3JhcCgkbGF5b3V0LXNwYW4pOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIG9yZGVyL29yZGVyXG5cdFx0XHRcdFx0XHRtaW4td2lkdGg6IG9HcmlkQ29sc3BhbigkbGF5b3V0LXNwYW4pO1xuXHRcdFx0XHRcdFx0bWF4LXdpZHRoOiBvR3JpZENvbHNwYW4oJGxheW91dC1zcGFuKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi8vLyBWaXN1YWxseSBoaWRlIGFuIGVsZW1lbnQgd2hpbGUgc3RpbGxcbi8vLyBhbGxvd2luZyBpdCB0byBiZSByZWFkIGJ5IGEgc2NyZWVucmVhZGVyXG5AbWl4aW4gb05vcm1hbGlzZVZpc3VhbGx5SGlkZGVuIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRjbGlwOiByZWN0KDAgMCAwIDApO1xuXHRjbGlwLXBhdGg6IHBvbHlnb24oMCAwLCAwIDApO1xuXHRtYXJnaW46IC0xcHg7XG5cdGJvcmRlcjogMDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0cGFkZGluZzogMDtcblx0d2lkdGg6IDJweDtcblx0aGVpZ2h0OiAycHg7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8vLyBDbGVhcmZpeCBoZWxwZXIgc3R5bGVzXG4vLy8gT3V0cHV0cyBjbGVhcmZpeCBzdHlsZXMgb24gdGhlIGN1cnJlbnQgZWxlbWVudFxuQG1peGluIG9Ob3JtYWxpc2VDbGVhcmZpeCB7XG5cdHpvb206IDE7XG5cblx0JjpiZWZvcmUsXG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHRcdGRpc3BsYXk6IGZsZXg7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tYmxvY2stbm8tZHVwbGljYXRlLXByb3BlcnRpZXNcblx0fVxuXHQmOmFmdGVyIHtcblx0XHRjbGVhcjogYm90aDtcblx0fVxufVxuXG4vLy8gQWRkcyBib3ggc2l6aW5nIHRvIGN1cnJlbnQgYW5kIGFsbCBjaGlsZCBlbGVtZW50c1xuQG1peGluIG9Ob3JtYWxpc2VCb3hTaXppbmcge1xuXG5cdC8qYXV0b3ByZWZpeGVyOiBvZmYqL1xuXHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHQtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG5cblx0JiAqLFxuXHQmICo6YmVmb3JlLFxuXHQmICo6YWZ0ZXIge1xuXG5cdFx0LyphdXRvcHJlZml4ZXI6IG9mZiovXG5cdFx0LXdlYmtpdC1ib3gtc2l6aW5nOiBpbmhlcml0OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblx0XHQtbW96LWJveC1zaXppbmc6IGluaGVyaXQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRcdGJveC1zaXppbmc6IGluaGVyaXQ7XG5cblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gZ2VuZXJhbCBodG1sIGVsZW1lbnRzXG4vLy8gZWZmZWN0czogPGh0bWw+LCA8Ym9keT4sIDxtYWluPiwgYW5kIDpmb2N1cyBzdGF0ZVxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTm9ybWFsaXNlQm9keSgkZm9udC1zbW9vdGhpbmc6IHRydWUsICRib3gtc2l6aW5nOiB0cnVlLCAkZm9jdXM6IHRydWUsICRyZWR1Y2UtbW90aW9uOiB0cnVlKSB7XG5cdGh0bWwsXG5cdGJvZHkge1xuXHRcdG1hcmdpbjogMDtcblx0XHR0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuXG5cdFx0LW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRcdC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cblxuXHRcdEBpZiAkZm9udC1zbW9vdGhpbmcge1xuXG5cdFx0XHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0XHRcdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG5cblx0XHR9XG5cblx0XHRAaWYgJGJveC1zaXppbmcge1xuXHRcdFx0QGluY2x1ZGUgb05vcm1hbGlzZUJveFNpemluZztcblx0XHR9XG5cblx0XHRAaWYgJHJlZHVjZS1tb3Rpb24ge1xuXHRcdFx0Ly8gSW1tZWRpYXRlbHkganVtcCBhbnkgYW5pbWF0aW9uIHRvIHRoZSBlbmQgcG9pbnQgaWYgdGhlIHVzZXIgaGFzXG5cdFx0XHQvLyBzZXQgdGhlaXIgZGV2aWNlIHRvIFwicHJlZmVycyByZWR1Y2VkIG1vdGlvblwiLlxuXHRcdFx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTFcblx0XHRcdEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cdFx0XHRcdCosXG5cdFx0XHRcdCo6YmVmb3JlLFxuXHRcdFx0XHQqOmFmdGVyIHtcblxuXHRcdFx0XHRcdGFuaW1hdGlvbi1kdXJhdGlvbjogMC4wMDFzICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cdFx0XHRcdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMDFzICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cdFx0XHRcdFx0YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMSAhaW1wb3J0YW50OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBHaXZlIDxtYWluPnMgdGhlIHByb3BlciBkaXNwbGF5IHZhbHVlIGluIElFLlxuXHRtYWluIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG5cdEBpZiAkZm9jdXMge1xuXHRcdEBpbmNsdWRlIF9vTm9ybWFsaXNlRm9jdXMoKTtcblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgZm9yIGZvY3VzZWQgZWxlbWVudHMuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VGb2N1cyB7XG5cdC8vIEFwcGx5IDpmb2N1cyBzdHlsZXMgYXMgYSBmYWxsYmFja1xuXHQvLyBUaGVzZSBzdHlsZXMgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbCBicm93c2VycyB0aGF0IGRvbid0IHVzZSB0aGUgcG9seWZpbGwsIHRoaXMgaW5jbHVkZXMgYnJvd3NlcnMgd2hpY2ggc3VwcG9ydCB0aGUgZmVhdHVyZSBuYXRpdmVseS5cblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkge1xuXHRcdC8vIFN0YW5kYXJkaXNlIGZvY3VzIHN0eWxlcy5cblx0XHQ6Zm9jdXMge1xuXHRcdFx0b3V0bGluZTogMnB4IHNvbGlkICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXG5cdFx0aW5wdXQ6Zm9jdXMsXG5cdFx0dGV4dGFyZWE6Zm9jdXMsXG5cdFx0c2VsZWN0OmZvY3VzIHtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHRcdH1cblx0fVxuXG5cdC8vIFdoZW4gdGhlIGZvY3VzLXZpc2libGUgcG9seWZpbGwgaXMgYXBwbGllZCBgLmpzLWZvY3VzLXZpc2libGVgIGlzIGFkZGVkIHRvIHRoZSBodG1sIGRvbSBub2RlXG5cdC8vICh0aGUgYm9keSBub2RlIGluIHY0IG9mIHRoZSAzcmQgcGFydHkgcG9seWZpbGwpXG5cblx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRib2R5LmpzLWZvY3VzLXZpc2libGUsIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0aHRtbC5qcy1mb2N1cy12aXNpYmxlIHtcblx0XHQvLyBTdGFuZGFyZGlzZSBmb2N1cyBzdHlsZXMuXG5cdFx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdC5mb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IDJweCBzb2xpZCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHRcdH1cblx0XHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0aW5wdXQuZm9jdXMtdmlzaWJsZSwgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdHRleHRhcmVhLmZvY3VzLXZpc2libGUsXG5cdFx0c2VsZWN0LmZvY3VzLXZpc2libGUge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4ICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXHRcdC8vIERpc2FibGUgYnJvd3NlciBkZWZhdWx0IGZvY3VzIHN0eWxlLlxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHQ6Zm9jdXM6bm90KC5mb2N1cy12aXNpYmxlKSB7XG5cdFx0XHRvdXRsaW5lOiAwO1xuXHRcdH1cblx0fVxuXG5cblx0Ly8gVGhlc2Ugc3R5bGVzIHdpbGwgYmUgaWdub3JlZCBieSBicm93c2VycyB3aGljaCBkbyBub3QgcmVjb2duaXNlIHRoZSA6Zm9jdXMtdmlzaWJsZSBzZWxlY3RvciAoYXMgcGVyIHRoZSB0aGlyZCBidWxsZXQgcG9pbnQgaW4gaHR0cHM6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy0zLyNDb25mb3JtYW5jZSlcblx0Ly8gSWYgYSBicm93c2VyIHN1cHBvcnRzIDpmb2N1cy12aXNpYmxlIHdlIHVuc2V0IHRoZSA6Zm9jdXMgc3R5bGVzIHRoYXQgd2VyZSBhcHBsaWVkIGFib3ZlXG5cdC8vICh3aXRoaW4gdGhlIGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBibG9jaykuXG5cdDpmb2N1cy12aXNpYmxlLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzIHtcblx0XHRvdXRsaW5lOiB1bnNldDtcblx0fVxuXG5cdDpmb2N1cy12aXNpYmxlLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cyxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHRleHRhcmVhOmZvY3VzLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMge1xuXHRcdGJveC1zaGFkb3c6IHVuc2V0O1xuXHR9XG5cblx0Ly8gU3R5bGVzIGdpdmVuIDpmb2N1cy12aXNpYmxlIHN1cHBvcnQuIEV4dHJhIHNlbGVjdG9ycyBuZWVkZWQgdG8gbWF0Y2hcblx0Ly8gcHJldmlvdXMgYDpmb2N1c2Agc2VsZWN0b3Igc3BlY2lmaWNpdHkuXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMtdmlzaWJsZSxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIDpmb2N1cy12aXNpYmxlLFxuXHQ6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0b3V0bGluZTogMnB4IHNvbGlkICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdH1cblxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMtdmlzaWJsZSxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIGlucHV0OmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgc2VsZWN0OmZvY3VzLXZpc2libGUsXG5cdGlucHV0OmZvY3VzLXZpc2libGUsXG5cdHRleHRhcmVhOmZvY3VzLXZpc2libGUsXG5cdHNlbGVjdDpmb2N1cy12aXNpYmxlIHtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0fVxuXG5cdC8vIFByZXZlbnQgSUUgZnJvbSBwdXR0aW5nIGZvY3VzIHN0eWxlcyBvbiB0aGUgYm9keSBvciBodG1sLiBUaGVzZSBzZWxlY3RvcnNcblx0Ly8gc2VydmUgYXMgYSBibGFja2xpc3QgZm9yIFwidGhpbmdzIHdlJ3ZlIGZvdW5kIGNhbiBoYXZlIGZvY3VzIGJ1dCB3ZSBkb24ndCB3YW50XCJcblx0aHRtbDpmb2N1cyxcblx0Ym9keTpmb2N1cyxcblx0W3JlYWRvbmx5XTpmb2N1cyB7XG5cdFx0b3V0bGluZTogbm9uZTtcblx0fVxuXG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byBsaW5rIGVsZW1lbnRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VMaW5rcyB7XG5cblx0Ly8gUmVtb3ZlIHRoZSBncmV5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuXHRhIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgb3V0bGluZSBvbiBmb2N1c2VkIGxpbmtzIHdoZW4gdGhleSBhcmVcblx0Ly8gYWxzbyBhY3RpdmUgb3IgaG92ZXJlZCBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cblx0YTphY3RpdmUsXG5cdGE6aG92ZXIge1xuXHRcdG91dGxpbmUtd2lkdGg6IDA7XG5cdH1cblxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gdGV4dCByZWxhdGVkIGVsZW1lbnRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VUZXh0IHtcblxuXHQvLyAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gRmlyZWZveCAzOS0uXG5cdC8vIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG5cdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0YWJiclt0aXRsZV0ge1xuXHRcdGJvcmRlci1ib3R0b206IDA7IC8vIFsxXVxuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvLyBbMl1cblx0XHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVjbGFyYXRpb24tYmxvY2stbm8tZHVwbGljYXRlLXByb3BlcnRpZXNcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8vIFsyXVxuXHR9XG5cblx0Ly8gUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXG5cdGIsXG5cdHN0cm9uZyB7XG5cdFx0Zm9udC13ZWlnaHQ6IGluaGVyaXQ7XG5cdH1cblxuXHQvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuXHRiLFxuXHRzdHJvbmcge1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkZXI7XG5cdH1cblxuXHQvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCBzdHlsZSBpbiBBbmRyb2lkIDQuMy0uXG5cdGRmbiB7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHR9XG5cblx0Ly8gUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG5cdC8vIGFsbCBicm93c2Vycy5cblx0c3ViLFxuXHRzdXAge1xuXHRcdGZvbnQtc2l6ZTogNzUlO1xuXHRcdGxpbmUtaGVpZ2h0OiAwO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG5cdH1cblxuXHRzdWIge1xuXHRcdGJvdHRvbTogLTAuMjVlbTtcblx0fVxuXG5cdHN1cCB7XG5cdFx0dG9wOiAtMC41ZW07XG5cdH1cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIHRoZSBpbWFnZSBlbGVtZW50XG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VJbWFnZXMge1xuXHQvLyBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLS5cblx0aW1nIHtcblx0XHRib3JkZXItc3R5bGU6IG5vbmU7XG5cdH1cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIGZvcm0gZWxlbWVudHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUZvcm1zIHtcblx0Ly8gUmVzdG9yZSB0aGUgZm9udCB3ZWlnaHQgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG5cdG9wdGdyb3VwIHtcblx0XHRmb250LXdlaWdodDogYm9sZDtcblx0fVxuXG5cdC8vIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuXHQvLyAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuXHQvLyAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG5cdGJ1dHRvbixcblx0aW5wdXQsICAgLy8gWzFdXG5cdHNlbGVjdCB7IC8vIFsyXVxuXHRcdG92ZXJmbG93OiB2aXNpYmxlO1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gU2FmYXJpLlxuXHQvLyAxLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG5cdGJ1dHRvbixcblx0aW5wdXQsXG5cdHNlbGVjdCxcblx0dGV4dGFyZWEgeyAvLyBbMV1cblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cblx0Ly8gMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuXHRidXR0b24sXG5cdHNlbGVjdCB7IC8vIFsxXVxuXHRcdHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHR9XG5cblx0Ly8gQ2hhbmdlIHRoZSBjdXJzb3IgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG5cdGJ1dHRvbixcblx0W3R5cGU9XCJidXR0b25cIl0sXG5cdFt0eXBlPVwicmVzZXRcIl0sXG5cdFt0eXBlPVwic3VibWl0XCJdIHtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdH1cblxuXHQvLyBSZXN0b3JlIHRoZSBkZWZhdWx0IGN1cnNvciB0byBkaXNhYmxlZCBlbGVtZW50cyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cblx0W2Rpc2FibGVkXSB7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cblx0YnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuXHRpbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdHBhZGRpbmc6IDA7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuXHR0ZXh0YXJlYSB7XG5cdFx0b3ZlcmZsb3c6IGF1dG87XG5cdH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjsgLy8gRml4ZXMgYW4gaXNzdWUgd2hlcmUgUnVieSBsb2NhbGUgaXMgbm90IHNldCBwcm9wZXJseVxuICAgICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvcHVsbC8xMFxuXG5AaW1wb3J0IFwiQGZpbmFuY2lhbC10aW1lcy9tYXRoXCI7XG5cbi8vLyBCYXNlIGZvbnQgc2l6ZSBvbiB0aGUgYDxib2R5PmAgZWxlbWVudFxuLy8vXG4vLy8gRG8gbm90IG92ZXJyaWRlIHRoaXMgdmFsdWUsIG9yIHRoaW5ncyB3aWxsIGJyZWFrXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjJcbi8vLyBAZGVwcmVjYXRlZCBUaGlzIHNldHRpbmcgd2lsbCBiZSByZW1vdmVkIGluIHNhc3MtbXEgdjYuMC4wXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTnVtYmVyICh1bml0KVxuJG1xLWJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLy8gUmVzcG9uc2l2ZSBtb2RlXG4vLy9cbi8vLyBTZXQgdG8gYGZhbHNlYCB0byBlbmFibGUgc3VwcG9ydCBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBAbWVkaWEgcXVlcmllcyxcbi8vLyAoSUUgPD0gOCwgRmlyZWZveCA8PSAzLCBPcGVyYSA8PSA5KVxuLy8vXG4vLy8gWW91IGNvdWxkIGNyZWF0ZSBhIHN0eWxlc2hlZXQgc2VydmVkIGV4Y2x1c2l2ZWx5IHRvIG9sZGVyIGJyb3dzZXJzLFxuLy8vIHdoZXJlIEBtZWRpYSBxdWVyaWVzIGFyZSByYXN0ZXJpemVkXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIG9sZC1pZS5zY3NzXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9mZiBEaXNhYmxlZCByZXNwb25zaXZlIG1vZGUgZG9jdW1lbnRhdGlvblxuJG1xLXJlc3BvbnNpdmU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGxpc3Rcbi8vL1xuLy8vIE5hbWUgeW91ciBicmVha3BvaW50cyBpbiBhIHdheSB0aGF0IGNyZWF0ZXMgYSB1YmlxdWl0b3VzIGxhbmd1YWdlXG4vLy8gYWNyb3NzIHRlYW0gbWVtYmVycy4gSXQgd2lsbCBpbXByb3ZlIGNvbW11bmljYXRpb24gYmV0d2VlblxuLy8vIHN0YWtlaG9sZGVycywgZGVzaWduZXJzLCBkZXZlbG9wZXJzLCBhbmQgdGVzdGVycy5cbi8vL1xuLy8vIEB0eXBlIE1hcFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLWJyZWFrcG9pbnRzOiAoXG4gICAgbW9iaWxlOiAgMzIwcHgsXG4gICAgdGFibGV0OiAgNzQwcHgsXG4gICAgZGVza3RvcDogOTgwcHgsXG4gICAgd2lkZTogICAgMTMwMHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gU3RhdGljIGJyZWFrcG9pbnQgKGZvciBmaXhlZC13aWR0aCBsYXlvdXRzKVxuLy8vXG4vLy8gRGVmaW5lIHRoZSBicmVha3BvaW50IGZyb20gJG1xLWJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkXG4vLy8gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0IHdpZHRoIGZvciB0aGUgZml4ZWQtd2lkdGggbGF5b3V0XG4vLy8gKGkuZS4gd2hlbiAkbXEtcmVzcG9uc2l2ZSBpcyBzZXQgdG8gJ2ZhbHNlJykgaW4gYSBvbGQtaWUuc2Nzc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyB0YWJsZXQtb25seS5zY3NzXG4vLy8gIC8vXG4vLy8gIC8vIElnbm9yZSBhbGwgc3R5bGVzIGFib3ZlIHRhYmxldCBicmVha3BvaW50LFxuLy8vICAvLyBhbmQgZml4IHRoZSBzdHlsZXMgKHN1Y2ggYXMgdGhlIGxheW91dCkgYXQgdGFibGV0IHdpZHRoXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgJG1xLXN0YXRpYy1icmVha3BvaW50OiB0YWJsZXQ7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvIHRhYmxldFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjYWRkaW5nLWN1c3RvbS1icmVha3BvaW50cyBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtc3RhdGljLWJyZWFrcG9pbnQ6IGRlc2t0b3AgIWRlZmF1bHQ7XG5cbi8vLyBTaG93IGJyZWFrcG9pbnRzIGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy9cbi8vLyBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZSBjdXJyZW50bHkgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcFxuLy8vIHJpZ2h0IGNvcm5lciBvZiB5b3VyIHNpdGUgZHVyaW5nIGRldmVsb3BtZW50LCBhZGQgdGhlIGJyZWFrcG9pbnRzXG4vLy8gdG8gdGhpcyBsaXN0LCBvcmRlcmVkIGJ5IHdpZHRoLiBGb3IgZXhhbXBsZTogKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKS5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgICRtcS1zaG93LWJyZWFrcG9pbnRzOiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApO1xuLy8vICAgQGltcG9ydCAncGF0aC90by9tcSc7XG4vLy9cbi8vLyBAdHlwZSBtYXBcbiRtcS1zaG93LWJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcblxuLy8vIEN1c3RvbWl6ZSB0aGUgbWVkaWEgdHlwZSAoZm9yIGV4YW1wbGU6IGBAbWVkaWEgc2NyZWVuYCBvciBgQG1lZGlhIHByaW50YClcbi8vLyBCeSBkZWZhdWx0IHNhc3MtbXEgdXNlcyBhbiBcImFsbFwiIG1lZGlhIHR5cGUgKGBAbWVkaWEgYWxsIGFuZCDigKZgKVxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNjaGFuZ2luZy1tZWRpYS10eXBlIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1tZWRpYS10eXBlOiBhbGwgIWRlZmF1bHQ7XG5cbi8vLyBDb252ZXJ0IHBpeGVscyB0byBlbXNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHggLSB2YWx1ZSB0byBjb252ZXJ0XG4vLy8gQGlnbm9yZSBAcGFyYW0ge051bWJlcn0gJGJhc2UtZm9udC1zaXplIFskbXEtYmFzZS1mb250LXNpemVdIC0gYDxib2R5PmAgZm9udCBzaXplIChkZXByZWNhdGVkKVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkZm9udC1zaXplLWluLWVtczogbXEtcHgyZW0oMTZweCk7XG4vLy8gIHAgeyBmb250LXNpemU6IG1xLXB4MmVtKDE2cHgpOyB9XG4vLy9cbi8vLyBAcmVxdWlyZXMgJG1xLWJhc2UtZm9udC1zaXplXG4vLy8gQHJldHVybnMge051bWJlcn1cbkBmdW5jdGlvbiBtcS1weDJlbSgkcHgsICRiYXNlLWZvbnQtc2l6ZTogJG1xLWJhc2UtZm9udC1zaXplKSB7XG4gICAgQGlmICgkbXEtYmFzZS1mb250LXNpemUgIT0gMTZweCkge1xuICAgICAgICBAd2FybiBcIk92ZXJyaWRpbmcgJG1xLWJhc2UtZm9udC1zaXplIHdpbGwgYnJlYWsgdGhpbmdzLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyLlwiO1xuICAgIH1cbiAgICBAaWYgKCRiYXNlLWZvbnQtc2l6ZSAhPSAxNnB4KSB7XG4gICAgICAgIEB3YXJuIFwiVGhlICRiYXNlLWZvbnQtc2l6ZSBhcmd1bWVudCB3aWxsIGJlIHJlbW92ZWQgaW4gc2Fzcy1tcSB2Ni4wLjAsIGFzIG92ZXJyaWRpbmcgaXQgYnJlYWtzIHRoaW5ncywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMi5cIjtcbiAgICB9XG4gICAgQGlmIHVuaXRsZXNzKCRweCkge1xuICAgICAgICBAd2FybiBcIkFzc3VtaW5nICN7JHB4fSB0byBiZSBpbiBwaXhlbHMsIGF0dGVtcHRpbmcgdG8gY29udmVydCBpdCBpbnRvIHBpeGVscy5cIjtcbiAgICAgICAgQHJldHVybiBtcS1weDJlbSgkcHggKiAxcHgsICRiYXNlLWZvbnQtc2l6ZSk7XG4gICAgfSBAZWxzZSBpZiB1bml0KCRweCkgPT0gZW0ge1xuICAgICAgICBAcmV0dXJuICRweDtcbiAgICB9XG4gICAgQHJldHVybiAoZGl2KCRweCwgJGJhc2UtZm9udC1zaXplKSkgKiAxZW07XG59XG5cbi8vLyBHZXQgYSBicmVha3BvaW50J3Mgd2lkdGhcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnQuIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJHRhYmxldC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgodGFibGV0KTtcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKGRlc2t0b3ApKSB7fVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBWYWx1ZSBpbiBwaXhlbHNcbkBmdW5jdGlvbiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkge1xuICAgICAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEB3YXJuIFwiQnJlYWtwb2ludCAjeyRuYW1lfSB3YXNuJ3QgZm91bmQgaW4gJGJyZWFrcG9pbnRzLlwiO1xuICAgIH1cbn1cblxuLy8vIE1lZGlhIFF1ZXJ5IG1peGluXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRmcm9tIFtmYWxzZV0gLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkdW50aWwgW2ZhbHNlXSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRhbmQgW2ZhbHNlXSAtIEFkZGl0aW9uYWwgbWVkaWEgcXVlcnkgcGFyYW1ldGVyc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVkaWEtdHlwZSBbJG1xLW1lZGlhLXR5cGVdIC0gTWVkaWEgdHlwZTogc2NyZWVuLCBwcmludOKAplxuLy8vXG4vLy8gQGlnbm9yZSBVbmRvY3VtZW50ZWQgQVBJLCBmb3IgYWR2YW5jZWQgdXNlIG9ubHk6XG4vLy8gQGlnbm9yZSBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzIFskbXEtYnJlYWtwb2ludHNdXG4vLy8gQGlnbm9yZSBAcGFyYW0ge1N0cmluZ30gJHN0YXRpYy1icmVha3BvaW50IFskbXEtc3RhdGljLWJyZWFrcG9pbnRdXG4vLy9cbi8vLyBAY29udGVudCBzdHlsaW5nIHJ1bGVzLCB3cmFwcGVkIGludG8gYSBAbWVkaWEgcXVlcnkgd2hlbiAkcmVzcG9uc2l2ZSBpcyB0cnVlXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtbWVkaWEtdHlwZVxuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLXB4MmVtXG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGhcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9uLWRlZmF1bHQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAuZWxlbWVudCB7XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IG1vYmlsZSkge1xuLy8vICAgICAgY29sb3I6IHJlZDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJHVudGlsOiB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBibHVlO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcShtb2JpbGUsIHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGdyZWVuO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogdGFibGV0LCAkYW5kOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJykge1xuLy8vICAgICAgY29sb3I6IHRlYWw7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKDk1MHB4KSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEodGFibGV0LCAkbWVkaWEtdHlwZTogc2NyZWVuKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgLy8gQWR2YW5jZWQgdXNlOlxuLy8vICAgICRteS1icmVha3BvaW50czogKEw6IDkwMHB4LCBYTDogMTIwMHB4KTtcbi8vLyAgICBAaW5jbHVkZSBtcShMLCAkYnJlYWtwb2ludHM6ICRteS1icmVha3BvaW50cywgJHN0YXRpYy1icmVha3BvaW50OiBMKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gIH1cbkBtaXhpbiBtcShcbiAgICAkZnJvbTogZmFsc2UsXG4gICAgJHVudGlsOiBmYWxzZSxcbiAgICAkYW5kOiBmYWxzZSxcbiAgICAkbWVkaWEtdHlwZTogJG1xLW1lZGlhLXR5cGUsXG4gICAgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMsXG4gICAgJHJlc3BvbnNpdmU6ICRtcS1yZXNwb25zaXZlLFxuICAgICRzdGF0aWMtYnJlYWtwb2ludDogJG1xLXN0YXRpYy1icmVha3BvaW50XG4pIHtcbiAgICAkbWluLXdpZHRoOiAwO1xuICAgICRtYXgtd2lkdGg6IDA7XG4gICAgJG1lZGlhLXF1ZXJ5OiAnJztcblxuICAgIC8vIEZyb206IHRoaXMgYnJlYWtwb2ludCAoaW5jbHVzaXZlKVxuICAgIEBpZiAkZnJvbSB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRmcm9tKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0oJGZyb20pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRmcm9tLCAkYnJlYWtwb2ludHMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVudGlsOiB0aGF0IGJyZWFrcG9pbnQgKGV4Y2x1c2l2ZSlcbiAgICBAaWYgJHVudGlsIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJHVudGlsKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0oJHVudGlsKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkdW50aWwsICRicmVha3BvaW50cykpIC0gLjAxZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZGlzYWJsZWQsIHJhc3Rlcml6ZSB0aGUgb3V0cHV0IG91dHNpZGUgQG1lZGlhIGJsb2Nrc1xuICAgIC8vIFRoZSBicm93c2VyIHdpbGwgcmVseSBvbiB0aGUgY2FzY2FkZSBpdHNlbGYuXG4gICAgQGlmICRyZXNwb25zaXZlID09IGZhbHNlIHtcbiAgICAgICAgJHN0YXRpYy1icmVha3BvaW50LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc3RhdGljLWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICR0YXJnZXQtd2lkdGg6IG1xLXB4MmVtKCRzdGF0aWMtYnJlYWtwb2ludC13aWR0aCk7XG5cbiAgICAgICAgLy8gT3V0cHV0IG9ubHkgcnVsZXMgdGhhdCBzdGFydCBhdCBvciBzcGFuIG91ciB0YXJnZXQgd2lkdGhcbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgICRhbmQgPT0gZmFsc2VcbiAgICAgICAgICAgIGFuZCAkbWluLXdpZHRoIDw9ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIGFuZCAoXG4gICAgICAgICAgICAgICAgJHVudGlsID09IGZhbHNlIG9yICRtYXgtd2lkdGggPj0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYW5kICRtZWRpYS10eXBlICE9ICdwcmludCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBlbmFibGVkLCBvdXRwdXQgcnVsZXMgaW5zaWRlIEBtZWRpYSBxdWVyaWVzXG4gICAgQGVsc2Uge1xuICAgICAgICBAaWYgJG1pbi13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWluLXdpZHRoOiAjeyRtaW4td2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRtYXgtd2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1heC13aWR0aDogI3skbWF4LXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkYW5kICAgICAgICAgICAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kICN7JGFuZH0nOyB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIHVubmVjZXNzYXJ5IG1lZGlhIHF1ZXJ5IHByZWZpeCAnYWxsIGFuZCAnXG4gICAgICAgIEBpZiAoJG1lZGlhLXR5cGUgPT0gJ2FsbCcgYW5kICRtZWRpYS1xdWVyeSAhPSAnJykge1xuICAgICAgICAgICAgJG1lZGlhLXR5cGU6ICcnO1xuICAgICAgICAgICAgJG1lZGlhLXF1ZXJ5OiBzdHItc2xpY2UodW5xdW90ZSgkbWVkaWEtcXVlcnkpLCA2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAjeyRtZWRpYS10eXBlICsgJG1lZGlhLXF1ZXJ5fSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8vIFF1aWNrIHNvcnRcbi8vL1xuLy8vIEBhdXRob3IgU2FtIFJpY2hhcmRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc29ydFxuLy8vIEByZXR1cm5zIHtMaXN0fSBTb3J0ZWQgTGlzdFxuQGZ1bmN0aW9uIF9tcS1xdWljay1zb3J0KCRsaXN0KSB7XG4gICAgJGxlc3M6ICAoKTtcbiAgICAkZXF1YWw6ICgpO1xuICAgICRsYXJnZTogKCk7XG5cbiAgICBAaWYgbGVuZ3RoKCRsaXN0KSA+IDEge1xuICAgICAgICAkc2VlZDogbnRoKCRsaXN0LCBjZWlsKGRpdihsZW5ndGgoJGxpc3QpLCAyKSkpO1xuXG4gICAgICAgIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICAgICAgICAgIEBpZiAoJGl0ZW0gPT0gJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkZXF1YWw6IGFwcGVuZCgkZXF1YWwsICRpdGVtKTtcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtIDwgJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkbGVzczogYXBwZW5kKCRsZXNzLCAkaXRlbSk7XG4gICAgICAgICAgICB9IEBlbHNlIGlmICgkaXRlbSA+ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGxhcmdlOiBhcHBlbmQoJGxhcmdlLCAkaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAcmV0dXJuIGpvaW4oam9pbihfbXEtcXVpY2stc29ydCgkbGVzcyksICRlcXVhbCksIF9tcS1xdWljay1zb3J0KCRsYXJnZSkpO1xuICAgIH1cblxuICAgIEByZXR1cm4gJGxpc3Q7XG59XG5cbi8vLyBTb3J0IGEgbWFwIGJ5IHZhbHVlcyAod29ya3Mgd2l0aCBudW1iZXJzIG9ubHkpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBzb3J0XG4vLy8gQHJldHVybnMge01hcH0gTWFwIHNvcnRlZCBieSB2YWx1ZVxuQGZ1bmN0aW9uIF9tcS1tYXAtc29ydC1ieS12YWx1ZSgkbWFwKSB7XG4gICAgJG1hcC1zb3J0ZWQ6ICgpO1xuICAgICRtYXAta2V5czogbWFwLWtleXMoJG1hcCk7XG4gICAgJG1hcC12YWx1ZXM6IG1hcC12YWx1ZXMoJG1hcCk7XG4gICAgJG1hcC12YWx1ZXMtc29ydGVkOiBfbXEtcXVpY2stc29ydCgkbWFwLXZhbHVlcyk7XG5cbiAgICAvLyBSZW9yZGVyIGtleS92YWx1ZSBwYWlycyBiYXNlZCBvbiBrZXkgdmFsdWVzXG4gICAgQGVhY2ggJHZhbHVlIGluICRtYXAtdmFsdWVzLXNvcnRlZCB7XG4gICAgICAgICRpbmRleDogaW5kZXgoJG1hcC12YWx1ZXMsICR2YWx1ZSk7XG4gICAgICAgICRrZXk6IG50aCgkbWFwLWtleXMsICRpbmRleCk7XG4gICAgICAgICRtYXAtc29ydGVkOiBtYXAtbWVyZ2UoJG1hcC1zb3J0ZWQsICgka2V5OiAkdmFsdWUpKTtcblxuICAgICAgICAvLyBVbnNldCB0aGUgdmFsdWUgaW4gJG1hcC12YWx1ZXMgdG8gcHJldmVudCB0aGUgbG9vcFxuICAgICAgICAvLyBmcm9tIGZpbmRpbmcgdGhlIHNhbWUgaW5kZXggdHdpY2VcbiAgICAgICAgJG1hcC12YWx1ZXM6IHNldC1udGgoJG1hcC12YWx1ZXMsICRpbmRleCwgMCk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkbWFwLXNvcnRlZDtcbn1cblxuLy8vIEFkZCBhIGJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIC0gV2lkdGggb2YgdGhlIGJyZWFrcG9pbnRcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICBAaW5jbHVkZSBtcS1hZGQtYnJlYWtwb2ludCh0dnNjcmVlbiwgMTkyMHB4KTtcbi8vLyAgQGluY2x1ZGUgbXEodHZzY3JlZW4pIHt9XG5AbWl4aW4gbXEtYWRkLWJyZWFrcG9pbnQoJG5hbWUsICR3aWR0aCkge1xuICAgICRuZXctYnJlYWtwb2ludDogKCRuYW1lOiAkd2lkdGgpO1xuICAgICRtcS1icmVha3BvaW50czogbWFwLW1lcmdlKCRtcS1icmVha3BvaW50cywgJG5ldy1icmVha3BvaW50KSAhZ2xvYmFsO1xuICAgICRtcS1icmVha3BvaW50czogX21xLW1hcC1zb3J0LWJ5LXZhbHVlKCRtcS1icmVha3BvaW50cykgIWdsb2JhbDtcbn1cblxuLy8vIFNob3cgdGhlIGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyIG9mIHRoZSB2aWV3cG9ydFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3ctYnJlYWtwb2ludHMgWyRtcS1zaG93LWJyZWFrcG9pbnRzXSAtIExpc3Qgb2YgYnJlYWtwb2ludHMgdG8gc2hvdyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgWyRtcS1icmVha3BvaW50c10gLSBCcmVha3BvaW50IG5hbWVzIGFuZCBzaXplc1xuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXNob3ctYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBnbG9iYWwgc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbi8vL1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGN1c3RvbSBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzKChMLCBYTCksIChTOiAzMDBweCwgTDogODAwcHgsIFhMOiAxMjAwcHgpKTtcbkBtaXhpbiBtcS1zaG93LWJyZWFrcG9pbnRzKCRzaG93LWJyZWFrcG9pbnRzOiAkbXEtc2hvdy1icmVha3BvaW50cywgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBib2R5OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0Y4RTM7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGNvbG9yOiAjQzA5ODUzO1xuICAgICAgICBmb250OiBzbWFsbC1jYXB0aW9uO1xuICAgICAgICBwYWRkaW5nOiAzcHggNnB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBicmVha3BvaW50cyB0aGF0IHNob3VsZCBiZSBzaG93blxuICAgICAgICBAZWFjaCAkc2hvdy1icmVha3BvaW50IGluICRzaG93LWJyZWFrcG9pbnRzIHtcbiAgICAgICAgICAgICR3aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50czogJGJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCIjeyRzaG93LWJyZWFrcG9pbnR9IOKJpSAjeyR3aWR0aH0gKCN7bXEtcHgyZW0oJHdpZHRoKX0pXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpZiBsZW5ndGgoJG1xLXNob3ctYnJlYWtwb2ludHMpID4gMCB7XG4gICAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbn1cbiIsIkBtaXhpbiBfb0hlYWRlclRvcCgpIHtcblx0Lm8taGVhZGVyX190b3Atd3JhcHBlciB7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cblxuXHQuby1oZWFkZXJfX3RvcC1jb2x1bW4ge1xuXHRcdGRpc3BsYXk6IHRhYmxlLWNlbGw7XG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0fVxuXG5cdC5vLWhlYWRlcl9fdG9wLWNvbHVtbi0tbGVmdCxcblx0Lm8taGVhZGVyX190b3AtY29sdW1uLS1yaWdodCB7XG5cdFx0Ly8gdG8ga2VlcCB0aGUgbG9nbyBob3Jpem9udGFsbHkgY2VudGVyZWQgcmVsYXRpdmUgdG8gdGhlIHBhZ2UgdGhlc2UgY29sdW1ucyBtdXN0IGJlIGVxdWFsLi4uXG5cdFx0Ly8gLi4uIGNhbiBiZSByZW1vdmVkIGZyb20gbGF5b3V0IGJ5IGZpeGluZyB0YWJsZSBsYXlvdXQgYW5kIHNldHRpbmcgd2lkdGggdG8gemVyby5cblx0XHR3aWR0aDogMTIuNSU7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC5vLWhlYWRlcl9fdG9wLWNvbHVtbi0tbGVmdCB7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0fVxuXG5cdC5vLWhlYWRlcl9fdG9wLWNvbHVtbi0tcmlnaHQge1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHR9XG5cblx0Lm8taGVhZGVyX190b3AtY29sdW1uLS1jZW50ZXIge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0fVxuXG5cdC5vLWhlYWRlcl9fdG9wLXRha2VvdmVyIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXG5cdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJ0wnKSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblxuXHRcdFx0JiB+ICoge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IC8vc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuby1oZWFkZXJfX3RvcC1saW5rIHtcblx0XHRAaW5jbHVkZSBfb0hlYWRlckxpbms7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdG1hcmdpbi1sZWZ0OiAxMHB4O1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRoZWlnaHQ6IDQwcHg7XG5cdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDRweDtcblxuXHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCdMJykge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDIwcHg7XG5cdFx0XHRtYXJnaW4tdG9wOiAzMHB4O1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMzBweDtcblx0XHR9XG5cblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygnTScpIHtcblx0XHRcdG1hcmdpbi10b3A6IDI0cHg7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyNHB4O1xuXHRcdH1cblxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnRCYXNlU3R5bGVzKCk7XG5cdFx0XHRjb250ZW50OiAnICc7XG5cdFx0XHR3aWR0aDogI3skX28taGVhZGVyLWljb24tc2l6ZS1sYXJnZX1weDtcblx0XHRcdGhlaWdodDogI3skX28taGVhZGVyLWljb24tc2l6ZS1sYXJnZX1weDtcblx0XHR9XG5cblx0XHQvLyBmaXJzdCBjaGlsZCBmb3Igb2xkIElFXG5cdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogLTEwcHg7IC8vIC0xMHB4IHRvIHJlbW92ZSB0aGUgcGFkZGluZyB0aGF0IHRoZSBpY29uIGltYWdlIGhhcyBhcm91bmQgaXQgd2hlbiB1c2VkIGF0IGEgc2l6ZSBvZiA0MHB4LlxuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fdG9wLWxpbmstLW1lbnUge1xuXHRcdCY6YmVmb3JlIHtcblx0XHRcdC8vIGNvbnRhaW5lciBzaXplICgyNCkgaXMgb25seSBpbmNsdWRlZCBmb3IgdGhlIGZhbGxiYWNrIGltYWdlLlxuXHRcdFx0Ly8gSUU4IGhhcyBhIHN0YXRpYyBzdHlsZXNoZWV0IGdlbmVyYXRlZCBmb3IgdGhlIEwgYnJlYWtwb2ludC5cblx0XHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ2hhbWJ1cmdlcicsIF9vSGVhZGVyR2V0KCdoZWFkZXItaWNvbicpLCAkc2l6ZTogbnVsbCwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHQuby1oZWFkZXJfX3RvcC1saW5rLS1zZWFyY2gge1xuXHRcdCY6YmVmb3JlIHtcblx0XHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ3NlYXJjaCcsIF9vSGVhZGVyR2V0KCdoZWFkZXItaWNvbicpLCAkc2l6ZTogbnVsbCwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0XHR9XG5cblx0XHQvLyB3aGVuIHVzZWQgaW4gdGFuZGVtIHdpdGggdGhlIG1lbnUgdG9nZ2xlLCBoaWRlIHRoaXMgb24gc21hbGxlciBzY3JlZW4gc2l6ZXNcblx0XHQuby1oZWFkZXJfX3RvcC1saW5rLS1tZW51ICsgJiB7XG5cdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkdW50aWw6ICdMJykge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fdG9wLWxpbmstLW15ZnQge1xuXHRcdCY6YmVmb3JlIHtcblx0XHRcdEBpbmNsdWRlIF9vSGVhZGVyQnJhbmRJbWFnZSgnYnJhbmQtbXlmdCcsIF9vSGVhZGVyR2V0KCdoZWFkZXItaWNvbicpLCA1Mik7XG5cdFx0XHQvLyB0aGlzIGlzIG5vdCBhIHZlcnkgc3F1YXJlIGljb25cblx0XHRcdHdpZHRoOiAzNXB4O1xuXHRcdFx0Ly8gUmVtb3ZlIHRoZSBuZWdhdGl2ZSBtYXJnaW4gYWRkZWQgZm9yIG5ldyBpY29ucyB3aGljaCBoYXZlIGFkZGl0aW9uYWwgcGFkZGluZ1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblxuXHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJ00nKSB7XG5cdFx0XHRcdHdpZHRoOiA0NHB4O1xuXHRcdFx0fVxuXG5cdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygnTCcpIHtcblx0XHRcdFx0d2lkdGg6IDUycHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Lm8taGVhZGVyX190b3AtbGluay1sYWJlbCB7XG5cdFx0QGluY2x1ZGUgb05vcm1hbGlzZVZpc3VhbGx5SGlkZGVuO1xuXHR9XG5cblx0Lm8taGVhZGVyX190b3AtbG9nbyB7XG5cdFx0QGluY2x1ZGUgX29IZWFkZXJCcmFuZEltYWdlKCdicmFuZC1mdC1tYXN0aGVhZCcsIF9vSGVhZGVyR2V0KCdoZWFkZXItaWNvbicpLCA1MDApO1xuXHRcdEBpbmNsdWRlIF9vSGVhZGVyTG9nb1NpemUoJ1hTJyk7XG5cblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRib3JkZXI6IDA7XG5cdFx0bWFyZ2luOiAxNnB4IGF1dG87XG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7IC8vIEVkZ2UgU1ZHIGJhY2tncm91bmQgY2xpcHBlZCB3aGVuIHNjYWxlZCBodHRwczovL2RldmVsb3Blci5taWNyb3NvZnQuY29tL2VuLXVzL21pY3Jvc29mdC1lZGdlL3BsYXRmb3JtL2lzc3Vlcy80NzA1MzQwL1xuXHRcdGJhY2tncm91bmQtcG9zaXRpb246IDUwJTtcblx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXG5cdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJ1MnKSB7XG5cdFx0XHRAaW5jbHVkZSBfb0hlYWRlckxvZ29TaXplKCdTJyk7XG5cdFx0fVxuXG5cdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJ00nKSB7XG5cdFx0XHRAaW5jbHVkZSBfb0hlYWRlckxvZ29TaXplKCdNJyk7XG5cdFx0XHRtYXJnaW4tdG9wOiAyNHB4O1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjRweDtcblx0XHR9XG5cblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygnTCcpIHtcblx0XHRcdEBpbmNsdWRlIF9vSGVhZGVyTG9nb1NpemUoJ0wnKTtcblx0XHRcdG1hcmdpbi10b3A6IDMwcHg7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAzMHB4O1xuXHRcdH1cblx0fVxuXG59XG4iLCIvLy8vXG4vLy8gQGdyb3VwIG8taGVhZGVyXG4vLy8gQGxpbmsgaHR0cDovL3JlZ2lzdHJ5Lm9yaWdhbWkuZnQuY29tL2NvbXBvbmVudHMvby1oZWFkZXJcbi8vLy9cblxuLy8vIEJhc2Ugc3R5bGVzIGZvciBoZWFkZXIgbGlua3NcbkBtaXhpbiBfb0hlYWRlckxpbmsoKSB7XG5cdGNvbG9yOiBpbmhlcml0O1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdGJvcmRlcjogMDtcblxuXHQmOmhvdmVyIHtcblx0XHRjb2xvcjogX29IZWFkZXJHZXQoJ2xpbmstaG92ZXItdGV4dCcpO1xuXHR9XG5cblx0Ji0taGlnaGxpZ2h0LFxuXHQmW2FyaWEtY3VycmVudF0ge1xuXHRcdGNvbG9yOiBfb0hlYWRlckdldCgnbGluay1oaWdobGlnaHQtdGV4dCcpO1xuXHR9XG59XG5cbi8vLyBNb3JlIHZpc3VhbGx5IGRlY29yYXRlZCBsaW5rIHN0eWxlc1xuQG1peGluIF9vSGVhZGVyRmFuY3lMaW5rKCkge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRwYWRkaW5nOiAkX28taGVhZGVyLXBhZGRpbmcteSAwO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRib3R0b206IDA7XG5cdFx0bGVmdDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDRweDtcblx0fVxuXG5cdCY6aG92ZXI6YWZ0ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IF9vSGVhZGVyR2V0KCdsaW5rLWhvdmVyLXRleHQnKTtcblx0fVxuXG5cdCYtLWhpZ2hsaWdodDphZnRlcixcblx0JlthcmlhLWN1cnJlbnRdOmFmdGVyIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0hlYWRlckdldCgnbGluay1oaWdobGlnaHQtdGV4dCcpO1xuXHR9XG59XG5cbi8vLyBIb3Jpem9udGFsIGxpc3QgaXRlbSBzZXBhcmF0b3JcbkBtaXhpbiBfb0hlYWRlckl0ZW1TZXBhcmF0b3IoKSB7XG5cdCYgKyAmIHtcblx0XHRAaW5jbHVkZSBfb0hlYWRlckl0ZW1TZXBhcmF0b3JDb250ZW50KCk7XG5cdH1cbn1cblxuQG1peGluIF9vSGVhZGVySXRlbVNlcGFyYXRvckNvbnRlbnQoKSB7XG5cdCRib3JkZXItd2lkdGg6IDFweDtcblxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG1hcmdpbi1sZWZ0OiAkX28taGVhZGVyLXBhZGRpbmcteCAtICRib3JkZXItd2lkdGg7XG5cdHBhZGRpbmctbGVmdDogJF9vLWhlYWRlci1wYWRkaW5nLXg7XG5cblx0JjpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDE1JTtcblx0XHRsZWZ0OiAwO1xuXHRcdGhlaWdodDogcGVyY2VudGFnZSgkX28taGVhZGVyLWl0ZW0tc2VwYXJhdG9yLXBlcmNlbnRhZ2UtaGVpZ2h0KTtcblx0XHRib3JkZXItbGVmdDogJGJvcmRlci13aWR0aCBzb2xpZCBfb0hlYWRlckdldCgnaGVhZGVyLWJvcmRlcicpO1xuXHR9XG59XG5cbi8vLyBDYWxjdWxhdGUgbG9nbyBkaW1lbnNpb25zIGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IC0gWFMsIFMsIE0sIEwgb3IgWExcbkBtaXhpbiBfb0hlYWRlckxvZ29TaXplKCRicmVha3BvaW50KSB7XG5cdCRpbWFnZS1hc3BlY3QtcmF0aW86IGRpdigyNSwgMik7XG5cdCRsb2dvLWhlaWdodHM6ICgnWFMnOiAxNiwgJ1MnOiAyMCwgJ00nOiAyNCwgJ0wnOiA0MCwgJ1hMJzogNDApO1xuXHR3aWR0aDogbWFwLWdldCgkbG9nby1oZWlnaHRzLCAkYnJlYWtwb2ludCkgKiAkaW1hZ2UtYXNwZWN0LXJhdGlvICsgMHB4O1xuXHRoZWlnaHQ6IG1hcC1nZXQoJGxvZ28taGVpZ2h0cywgJGJyZWFrcG9pbnQpICsgMHB4O1xufVxuXG4vLy8gQ29uc3RydWN0IGEgbG9nbyBpbWFnZSBVUkxcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbG9nby1uYW1lXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmYWxsYmFjay13aWR0aFxuQG1peGluIF9vSGVhZGVyQnJhbmRJbWFnZSgkbG9nby1uYW1lLCAkY29sb3IsICRmYWxsYmFjay13aWR0aCkge1xuXHQvLyBFcnJvciBpZiB0aGUgZ2xvYmFsICRzeXN0ZW0tY29kZSB2YXJpYWJsZSBpcyBub3Qgc2V0LlxuXHQvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciBpbWFnZSBzZXJ2aWNlIHJlcXVlc3RzLlxuXHRAaWYoZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnc3lzdGVtLWNvZGUnKSA9PSBmYWxzZSBvciB0eXBlLW9mKCRzeXN0ZW0tY29kZSkgIT0gJ3N0cmluZycpIHtcblx0XHRAZXJyb3IgJ0EgZ2xvYmFsIFwiJHN5c3RlbS1jb2RlXCIgU2FzcyB2YXJpYWJsZSBtdXN0IGJlIHNldCB0byBhIHZhbGlkIFtCaXpvcHMgc3lzdGVtIGNvZGVdKGh0dHBzOi8vYml6LW9wcy5pbi5mdC5jb20vbGlzdC9TeXN0ZW1zKS4nO1xuXHR9XG5cblx0JGJhc2UtdXJsOiBcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0bG9nbzpcIjtcblx0JGNvbG9yOiBzdHItc2xpY2UoaWUtaGV4LXN0cigkY29sb3IpLCA0KTtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRiYXNlLXVybCArICRsb2dvLW5hbWUgKyBcIj9zb3VyY2U9I3skc3lzdGVtLWNvZGV9JnRpbnQ9JTIzI3skY29sb3J9LCUyMyN7JGNvbG9yfSZmb3JtYXQ9c3ZnXCIpO1xuXG5cdC8vIHNhc3MtbGludDpkaXNhYmxlIG5vLXZlbmRvci1wcmVmaXhlc1xuXHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkYmFzZS11cmwgKyAkbG9nby1uYW1lICsgXCI/c291cmNlPSN7JHN5c3RlbS1jb2RlfSZ0aW50PSUyM2ZmZmZmZiwlMjNmZmZmZmYmZm9ybWF0PXN2Z1wiKTtcblx0fVxuXG5cdEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYmxhY2stb24td2hpdGUpIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJGJhc2UtdXJsICsgJGxvZ28tbmFtZSArIFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX0mdGludD0lMjMwMDAwMDAsJTIzMDAwMDAwJmZvcm1hdD1zdmdcIik7XG5cdH1cblx0Ly8gc2Fzcy1saW50OmVuYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcbn1cbiIsIi8vLyBPdXRwdXQgc3R5bGVzIGZvciBhbiBTVkcgaWNvbi5cbi8vLyBTdHlsZXMgdGhlIGljb24gYXMgYSBiYWNrZ3JvdW5kIGltYWdlLCBzZXR0aW5nIGEgd2lkdGggYW5kIGhlaWdodCBvbiB0aGUgZWxlbWVudCBhcyByZXF1ZXN0ZWQuXG4vLy8gQSBmYWxsYmFjayBiYWNrZ3JvdW5kIGZvciBXaW5kb3dzIEhpZ2ggQ29udHJhc3QgbW9kZSBpcyBhbHNvIG91dHB1dC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRpY29uLW5hbWUgLSBUaGlzIHNob3VsZCBiZSBhIHJlZmVyZW5jZSB0byBhbiBpY29uIGluY2x1ZGVkIGluIG8taWNvbnMgZWcgYXJyb3ctZG93blxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkY29sb3IgLSBUaGlzIHNob3VsZCBiZSBhIGhleCBjb2xvdXIgdmFsdWUuIFVzZWQgdG8gY29sb3IgdGhlIGljb24uIFdlIHN1Z2dlc3QgdXNpbmcgYW4gby1jb2xvcnMgZnVuY3Rpb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TnVsbH0gJHNpemUgWzEyOF0gLSBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgaWNvbiAodW5pdHMgb3B0aW9uYWwsIGRlZmF1bHRzIHRvIHB4KS4gU2V0IHRvIGBudWxsYCB0byBzZXQgbm8gd2lkdGggb3IgaGVpZ2h0LlxuLy8vIEBwYXJhbSB7Qm9vbH0gJGluY2x1ZGUtYmFzZS1zdHlsZXMgW3RydWVdIC0gSWYgdHJ1ZSwgd2lsbCBvdXRwdXQgc3R5bGUgcnVsZXMgZm9yIHRoZSBjb250YWluZXIuIElmIGZhbHNlIHdpbGwgb25seSBvdXRwdXQgdGhlIGJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHlcbi8vLyBAcGFyYW0ge0Jvb2x9ICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrIFt0cnVlXSAtIFRvIG91dHB1dCBNaWNyb3NvZnQgSGlnaCBDb250cmFzdCBmYWxsYmFjayBmb3IgYWNjZXNzaWJpbGl0eSByZWFzb25zIG9yIG5vdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGljb25zZXQtdmVyc2lvbiBbMV0gLSBBdCBwcmVzZW50IG9ubHkgMSB2ZXJzaW9uIG9mIHRoZSBpY29uIHNldCBpcyBhdmFpbGFibGUuXG5AbWl4aW4gb0ljb25zQ29udGVudCgkaWNvbi1uYW1lLCAkY29sb3I6IG51bGwsICRzaXplOiAxMjgsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiB0cnVlLCAkaGlnaC1jb250cmFzdC1mYWxsYmFjazogdHJ1ZSwgJGljb25zZXQtdmVyc2lvbjogMSkge1xuXHQvLyBFcnJvciBpZiB0aGUgZ2xvYmFsICRzeXN0ZW0tY29kZSB2YXJpYWJsZSBpcyBub3Qgc2V0LlxuXHQvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciBpbWFnZSBzZXJ2aWNlIHJlcXVlc3RzLlxuXHRAaWYoZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnc3lzdGVtLWNvZGUnKSA9PSBmYWxzZSBvciB0eXBlLW9mKCRzeXN0ZW0tY29kZSkgIT0gJ3N0cmluZycpIHtcblx0XHRAZXJyb3IgJ0EgZ2xvYmFsIFwiJHN5c3RlbS1jb2RlXCIgU2FzcyB2YXJpYWJsZSBtdXN0IGJlIHNldCB0byBhIHZhbGlkIEJpem9wcyBzeXN0ZW0gY29kZSAoXFxlXTg7O2h0dHBzOi8vYml6LW9wcy5pbi5mdC5jb20vbGlzdC9TeXN0ZW1zXFxlXFxcXGh0dHBzOi8vYml6LW9wcy5pbi5mdC5jb20vbGlzdC9TeXN0ZW1zXFxlXTg7O1xcZVxcXFwpLic7XG5cdH1cblxuXHQvLyBJZiB0aGUgc2l6ZSBvZiB0aGUgaWNvbnMgaGFzIGJlZW4gZ2l2ZW4gd2l0aG91dCBhIHVuaXQsIGRlZmF1bHQgdG8gcHguXG5cdEBpZiAodHlwZS1vZigkc2l6ZSkgPT0gJ251bWJlcicgYW5kIHVuaXRsZXNzKCRzaXplKSkge1xuXHRcdCRzaXplOiAkc2l6ZSArIDBweDtcblx0fVxuXG5cdC8vIERlZmluZSBiYXNlIGltYWdlIHNlcnZpY2UgcGF0aC5cblx0JHNjaGVtZTogXCJmdGljb24tdiN7JGljb25zZXQtdmVyc2lvbn1cIjtcblx0JHNlcnZpY2UtdXJsOiBcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3LyN7JHNjaGVtZX06I3skaWNvbi1uYW1lfVwiO1xuXG5cdC8vIEluY2x1ZGUgYmFzZSBzdHlsZXMgc2hhcmVkIGJ5IGFsbCBpY29ucy5cblx0QGlmICgkaW5jbHVkZS1iYXNlLXN0eWxlcyA9PSB0cnVlKSB7XG5cdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudEJhc2VTdHlsZXM7XG5cdH1cblxuXHQvLyBTZXQgdGhlIGljb24gZGltZW50aW9ucy5cblx0d2lkdGg6ICRzaXplO1xuXHRoZWlnaHQ6ICRzaXplO1xuXG5cdC8vIEluY2x1ZGUgdGhlIGljb24gdmlhIHRoZSBpbWFnZSBzZXJ2aWNlLlxuXHQvLyBCdWlsZCBhbiBpbWFnZSBzZXJ2aWNlIHVybCBmb3IgdGhlIHJlcXVlc3RlZCBpY29uLlxuXHQkcXVlcnk6IFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX1cIjtcblx0QGlmICRjb2xvciAhPSBudWxsIHtcblx0XHQkY29sb3I6IHN0ci1zbGljZShpZS1oZXgtc3RyKCRjb2xvciksIDQpO1xuXHRcdCRxdWVyeTogJHF1ZXJ5ICsgXCImdGludD0lMjMjeyRjb2xvcn0sJTIzI3skY29sb3J9XCI7XG5cdH1cblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArICRxdWVyeSArIFwiJmZvcm1hdD1zdmdcIik7XG5cblx0Ly8gSW5jbHVkZSBhIGZhbGxiYWNrIGZvciBXaW5kb3cncyBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdC8vIFRoaXMgbW9kZSByZW1vdmVzIGJhY2tncm91bmQgaW1hZ2VzIHVubGVzcyBzcGVjaWZjYWxseSBpbmNsdWRlZFxuXHQvLyBmb3IgaGlnaCBjb250cmFzdCBtb2RlLlxuXHQvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcblx0QGlmICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrIHtcblx0XHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArIFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX0mdGludD0lMjNmZmZmZmYsJTIzZmZmZmZmJmZvcm1hdD1zdmdcIik7XG5cdFx0fVxuXG5cdFx0QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBibGFjay1vbi13aGl0ZSkge1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArIFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX0mdGludD0lMjMwMDAwMDAsJTIzMDAwMDAwJmZvcm1hdD1zdmdcIik7XG5cdFx0fVxuXHR9XG5cdC8vIHNhc3MtbGludDplbmFibGUgbm8tdmVuZG9yLXByZWZpeGVzXG59XG5cbi8vLyBCYXNlIHN0eWxlcyBmb3IgYWxsIGljb25zXG4vLy8gQGFjY2VzcyBwdWJsaWNcbkBtaXhpbiBvSWNvbnNDb250ZW50QmFzZVN0eWxlcygpIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDUwJTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cbiIsIkBtaXhpbiBfb0hlYWRlclN1Ym5hdigpIHtcblx0Lm8taGVhZGVyX19zdWJuYXYge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygwKTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0hlYWRlckdldCgnc3VibmF2LWJhY2tncm91bmQnKTtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgX29IZWFkZXJHZXQoJ3N1Ym5hdi1ib3JkZXInKTtcblx0fVxuXG5cdC5vLWhlYWRlcl9fc3VibmF2LXdyYXAtb3V0c2lkZSB7XG5cdFx0bWFyZ2luLWxlZnQ6IC0kX28taGVhZGVyLXN1Yi1oZWFkZXItZm9jdXMtbWFyZ2luO1xuXHRcdG1hcmdpbi1yaWdodDogLSRfby1oZWFkZXItc3ViLWhlYWRlci1mb2N1cy1tYXJnaW47XG5cblx0XHRbZGF0YS1vLWhlYWRlci0tanNdICYge1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdC8vIGhlaWdodCAqbmVlZHMqIHNldHRpbmcgc28gd2UgY2FuIGhpZGUgc2Nyb2xsYmFycy5cblx0XHRcdC8vIFRoaXMgaXMgdGhlIGNvbnRlbnQgaGVpZ2h0IG9mIC5vLWhlYWRlcl9fc3VibmF2LWNvbnRlbnRcblx0XHRcdGhlaWdodDogJF9vLWhlYWRlci1zdWJuYXYtaGVpZ2h0LWJhc2U7XG5cdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygnTScpIHtcblx0XHRcdFx0aGVpZ2h0OiAkX28taGVhZGVyLXN1Ym5hdi1oZWlnaHQtbWVkaXVtO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fc3VibmF2LXdyYXAtaW5zaWRlIHtcblx0XHRvdmVyZmxvdzogYXV0bztcblxuXHRcdFtkYXRhLW8taGVhZGVyLS1qc10gJiB7XG5cdFx0XHQvLyBpbmVydGlhbCBzY3JvbGxpbmcgZm9yIGlPUyBTYWZhcmlcblx0XHRcdC8vIHNhc3MtbGludDpkaXNhYmxlIG5vLXZlbmRvci1wcmVmaXhlc1xuXHRcdFx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXHRcdFx0Ly8gc2Fzcy1saW50OmVuYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcblx0XHRcdC8vIHdvcmtpbmcgZHJhZnRcblx0XHRcdHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuXHRcdFx0Ly8gaGlkZSB0aGUgc2Nyb2xsYmFyIGJlbmVhdGggdGhlIHdhdmVzL21hbnkgd3JhcHBlcnMuIDMwcHggc2hvdWxkIGJlIHBsZW50eS5cblx0XHRcdHBhZGRpbmctYm90dG9tOiAzMHB4O1xuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fc3VibmF2LWNvbnRlbnQge1xuXHRcdC8vIFVzZSBmbGV4Ym94IHRvIHN1cHBvcnQgcmlnaHQgYWxpZ25lZCBzdWJuYXYgY2hpbGRyZW5cblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0bWFyZ2luLWxlZnQ6ICRfby1oZWFkZXItc3ViLWhlYWRlci1mb2N1cy1tYXJnaW47XG5cdFx0bWFyZ2luLXJpZ2h0OiAkX28taGVhZGVyLXN1Yi1oZWFkZXItZm9jdXMtbWFyZ2luO1xuXHR9XG5cblx0Lm8taGVhZGVyX19zdWJuYXYtbGlzdCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bWFyZ2luOiAwO1xuXG5cdFx0Ly8gU2VwYXJhdG9ycyBmb3Igc3VibmF2IGxpc3RzIGFyZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBzdWJuYXZzIGZpcnN0IGl0ZW1cblx0XHQvLyB0byBhdm9pZCBwb3NpdGlvbmluZyBzdWJuYXZzIHJlbGF0aXZlLiBUaGlzIGlzIHNvIGFic29sdXRlIGNoaWxkcmVuIG9mIHRoZSBzdWJuYXYgYXJlXG5cdFx0Ly8gcG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGVpciBjbG9zZXN0IHBvc2l0aW9uZWQgYW5jZXN0b3IgYG8taGVhZGVyX19jb250YWluZXJgLlxuXHRcdC8vIEFuIGV4YW1wbGUgYmVuZWZpdCBpcyBvLXRvb2x0aXAgc3VwcG9ydCBhZ2FpbnN0IHN1YiBuYXYgaXRlbXMuXG5cdFx0JiArICY6bm90KC5vLWhlYWRlcl9fc3VibmF2LWxpc3QtLXJpZ2h0KSAuby1oZWFkZXJfX3N1Ym5hdi1pdGVtIHtcblx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRAaW5jbHVkZSBfb0hlYWRlckl0ZW1TZXBhcmF0b3JDb250ZW50KCk7XG5cdFx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0XHR0b3A6IDUwJTtcblx0XHRcdFx0XHRtYXJnaW4tdG9wOiAtICRfby1oZWFkZXItc3VibmF2LWhlaWdodC1iYXNlICogZGl2KCRfby1oZWFkZXItaXRlbS1zZXBhcmF0b3ItcGVyY2VudGFnZS1oZWlnaHQsIDIpO1xuXHRcdFx0XHRcdGhlaWdodDogJF9vLWhlYWRlci1zdWJuYXYtaGVpZ2h0LWJhc2UgKiAkX28taGVhZGVyLWl0ZW0tc2VwYXJhdG9yLXBlcmNlbnRhZ2UtaGVpZ2h0O1xuXHRcdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCdNJykgeyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIG1heC1uZXN0aW5nLWRlcHRoXG5cdFx0XHRcdFx0XHRtYXJnaW4tdG9wOiAtICRfby1oZWFkZXItc3VibmF2LWhlaWdodC1tZWRpdW0gKiBkaXYoJF9vLWhlYWRlci1pdGVtLXNlcGFyYXRvci1wZXJjZW50YWdlLWhlaWdodCwgMik7XG5cdFx0XHRcdFx0XHRoZWlnaHQ6ICRfby1oZWFkZXItc3VibmF2LWhlaWdodC1tZWRpdW0gKiAkX28taGVhZGVyLWl0ZW0tc2VwYXJhdG9yLXBlcmNlbnRhZ2UtaGVpZ2h0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fc3VibmF2LWl0ZW0ge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0cGFkZGluZy1sZWZ0OiA4cHg7XG5cblx0XHQuby1oZWFkZXJfX3N1Ym5hdi1saXN0LS1jaGlsZHJlbiAmIHtcblx0XHRcdHBhZGRpbmctbGVmdDogMTZweDtcblx0XHR9XG5cblx0XHQuby1oZWFkZXJfX3N1Ym5hdi1saXN0LS1jaGlsZHJlbjpub3QoLm8taGVhZGVyX19zdWJuYXYtbGlzdC0tcmlnaHQpICY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0Ly8gYWxpZ24gbGVmdCBzaWRlIGNvcnJlY3RseVxuXHRcdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHRcdH1cblxuXHRcdC5vLWhlYWRlcl9fc3VibmF2LWxpc3QtLWJyZWFkY3J1bWIgJiB7XG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ2Fycm93LXJpZ2h0JywgX29IZWFkZXJHZXQoJ2xpbmstaGlnaGxpZ2h0LXRleHQnKSwgJHNpemU6ICRfby1oZWFkZXItaWNvbi1zaXplLXNtYWxsKTtcblx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0dG9wOiAwLjEyNWVtO1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDZweDtcblx0XHRcdH1cblxuXHRcdFx0JjpmaXJzdC1jaGlsZDpiZWZvcmUge1xuXHRcdFx0XHRjb250ZW50OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cblx0Lm8taGVhZGVyX19zdWJuYXYtbGlzdC0tY2hpbGRyZW4uby1oZWFkZXJfX3N1Ym5hdi1saXN0LS1yaWdodCB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdH1cblxuXG5cdC5vLWhlYWRlcl9fc3VibmF2LWxpbmsge1xuXHRcdEBpbmNsdWRlIF9vSGVhZGVyTGluaztcblx0XHRAaW5jbHVkZSBfb0hlYWRlckZhbmN5TGluaztcblx0XHRjb2xvcjogX29IZWFkZXJHZXQoJ3N1Ym5hdi1saW5rJyk7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHBhZGRpbmc6IDEycHggMDtcblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygnTScpIHtcblx0XHRcdHBhZGRpbmc6IDhweCAwO1xuXHRcdH1cblxuXHRcdC5vLWhlYWRlcl9fc3VibmF2LWxpc3QtLWJyZWFkY3J1bWIgJiB7XG5cdFx0XHRjb2xvcjogX29IZWFkZXJHZXQoJ2xpbmstaGlnaGxpZ2h0LXRleHQnKTtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fc3VibmF2LWxpbmstLXJpZ2h0IHtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygnTScpIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fc3VibmF2LWJ1dHRvbiB7XG5cdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgnYXJyb3ctbGVmdCcsIF9vSGVhZGVyR2V0KCdzdWJuYXYtYnV0dG9uLXRleHQnKSwgJHNpemU6IG51bGwpO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IF9vSGVhZGVyR2V0KCdzdWJuYXYtYnV0dG9uLWJhY2tncm91bmQnKTtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdHdpZHRoOiAjeyRfby1oZWFkZXItaWNvbi1zaXplfXB4O1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogMDtcblx0XHR0cmFuc2l0aW9uOiAwLjI1cyBvcGFjaXR5IDAuNXM7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IF9vSGVhZGVyR2V0KCdzdWJuYXYtYnV0dG9uLWhvdmVyLWJhY2tncm91bmQnKTtcblx0XHR9XG5cblx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXG5cdFx0W2RhdGEtby1oZWFkZXItLW5vLWpzXSAmIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0Lm8taGVhZGVyX19zdWJuYXYtYnV0dG9uLS1sZWZ0IHtcblx0XHRsZWZ0OiAwO1xuXHR9XG5cblx0Lm8taGVhZGVyX19zdWJuYXYtYnV0dG9uLS1yaWdodCB7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0Ly8gZG9uJ3QgZG93bmxvYWQgYW5vdGhlciBpY29uLi4uXG5cdFx0dHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcblx0fVxufVxuIiwiLy8vIE91dHB1dHMgdHlwb2dyYXBoeSBzdHlsZXMgZm9yIHRoZSBTZXJpZiBmb250LlxuLy8vIEluY2x1ZGluZzogZmFtaWx5LCBzaXplLCBsaW5lLWhlaWdodCwgd2VpZ2h0LCBzdHlsZSwgYW5kIGZvbnQgc2l6ZXNcbi8vLyBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nLlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGEgZm9udC1mYW1pbHkgcHJvcGVydHkgb25seSBmb3IgdGhlIHNlcmlmIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzZXJpZiBmb250LiBTZXQgYSBjdXN0b20gbGluZS1oZWlnaHQgb2YgMS42LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICRsaW5lLWhlaWdodDogMS42KTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtd2VpZ2h0IGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkd2VpZ2h0OiAnYm9sZCcpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC1zdHlsZSBmb3IgdGhlIHNlcmlmIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgc2VyaWYgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgZm9udC1mYW1pbHkuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBzZXJpZiBmb250IHByb3BlcnRpZXMgd2l0aG91dCBzaXplcyBmb3IgdGhlIGZhbGxiYWNrIGZvbnQgKHdpdGhvdXQgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nKS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1wcm9ncmVzc2l2ZTogZmFsc2UpO1xuLy8vXG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkc2NhbGUgW251bGxdIC0gYSBzY2FsZSBudW1iZXIgdG8gb3V0cHV0IGEgZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFtudWxsXSAtIGN1c3RvbSBsaW5lLWhlaWdodCB2YWx1ZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc2NhbGUncyBkZWZhdWx0XG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIG91dHB1dCBhIGZvbnQtd2VpZ2h0IHByb3BlcnR5LCBlLmcuICdib2xkJywgJ3NlbWlib2xkJ1xuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHN0eWxlIFtudWxsXSAtIG91dHB1dCBhIGZvbnQtc3R5bGUgcHJvcGVydHksIGUuZy4gJ2l0YWxpYydcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWZvbnQtZmFtaWx5IFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHRoZSBmb250LWZhbWlseSBwcm9wZXJ0eSBmcm9tIHRoZSBvdXRwdXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVzaXppbmcgdHlwb2dyYXBoeSwgd2hlcmUgdGhlIHNlcmlmIGZvbnQtZmFtaWx5IGlzIGluaGVyaXRlZCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1wcm9ncmVzc2l2ZSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBzdHlsZXMgdXNlZCBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nIChmb250LWZhbWlseSBhbmQgc2l6ZSBmYWxsYmFja3MgZm9yIGxvYWRpbmcgZm9udHMpLlxuQG1peGluIG9UeXBvZ3JhcGh5U2VyaWYoXG5cdCRzY2FsZTogbnVsbCxcblx0JGxpbmUtaGVpZ2h0OiBudWxsLFxuXHQkd2VpZ2h0OiBudWxsLFxuXHQkc3R5bGU6IG51bGwsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlLFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZTogJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmdcbikge1xuXHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb3IoXG5cdFx0JF9vLXR5cG9ncmFwaHktc2VyaWYsXG5cdFx0JHNjYWxlLFxuXHRcdCRsaW5lLWhlaWdodCxcblx0XHQkd2VpZ2h0LFxuXHRcdCRzdHlsZSxcblx0XHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0XHQkaW5jbHVkZS1wcm9ncmVzc2l2ZVxuXHQpO1xufVxuXG4vLy8gT3V0cHV0cyB0eXBvZ3JhcGh5IHN0eWxlcyBmb3IgdGhlIERpc3BsYXkgZm9udC5cbi8vLyBJbmNsdWRpbmc6IGZhbWlseSwgc2l6ZSwgbGluZS1oZWlnaHQsIHdlaWdodCwgc3R5bGUsIGFuZCBmb250IHNpemVzXG4vLy8gZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZy5cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGZvbnQtZmFtaWx5IHByb3BlcnR5IG9ubHkgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBkaXNwbGF5IGZvbnQuIFNldCBhIGN1c3RvbSBsaW5lLWhlaWdodCBvZiAxLjYuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxLCAkbGluZS1oZWlnaHQ6IDEuNik7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXdlaWdodCBmb3IgdGhlIGRpc3BsYXkgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICR3ZWlnaHQ6ICdib2xkJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXN0eWxlIGZvciB0aGUgZGlzcGxheSBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZGlzcGxheSBmb250IHByb3BlcnRpZXMgd2l0aG91dCBmb250LWZhbWlseS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZGlzcGxheSBmb250IHByb3BlcnRpZXMgd2l0aG91dCBzaXplcyBmb3IgdGhlIGZhbGxiYWNrIGZvbnQgKHdpdGhvdXQgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nKS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLXByb2dyZXNzaXZlOiBmYWxzZSk7XG4vLy9cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgZGlzcGxheSBmb250LWZhbWlseSBpcyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudCBlbGVtZW50LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtcHJvZ3Jlc3NpdmUgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgc3R5bGVzIHVzZWQgZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZyAoZm9udC1mYW1pbHkgYW5kIHNpemUgZmFsbGJhY2tzIGZvciBsb2FkaW5nIGZvbnRzKS5cbkBtaXhpbiBvVHlwb2dyYXBoeURpc3BsYXkoXG5cdCRzY2FsZTogbnVsbCxcblx0JGxpbmUtaGVpZ2h0OiBudWxsLFxuXHQkd2VpZ2h0OiBudWxsLFxuXHQkc3R5bGU6IG51bGwsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlLFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZTogJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmdcbikge1xuXHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb3IoXG5cdFx0JF9vLXR5cG9ncmFwaHktZGlzcGxheSxcblx0XHQkc2NhbGUsXG5cdFx0JGxpbmUtaGVpZ2h0LFxuXHRcdCR3ZWlnaHQsXG5cdFx0JHN0eWxlLFxuXHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5LFxuXHRcdCRpbmNsdWRlLXByb2dyZXNzaXZlXG5cdCk7XG59XG5cbi8vLyBPdXRwdXRzIHR5cG9ncmFwaHkgc3R5bGVzIGZvciB0aGUgU2FucyBmb250LlxuLy8vIEluY2x1ZGluZzogZmFtaWx5LCBzaXplLCBsaW5lLWhlaWdodCwgd2VpZ2h0LCBzdHlsZSwgYW5kIGZvbnQgc2l6ZXNcbi8vLyBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nLlxuLy8vXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBmb250LWZhbWlseSBwcm9wZXJ0eSBvbmx5IGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2FucyBmb250LiBTZXQgYSBjdXN0b20gbGluZS1oZWlnaHQgb2YgMS42LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJGxpbmUtaGVpZ2h0OiAxLjYpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC13ZWlnaHQgZm9yIHRoZSBzYW5zIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkd2VpZ2h0OiAnYm9sZCcpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC1zdHlsZSBmb3IgdGhlIHNhbnMgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNhbnMgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgZm9udC1mYW1pbHkuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNhbnMgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgc2l6ZXMgZm9yIHRoZSBmYWxsYmFjayBmb250ICh3aXRob3V0IHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZykuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1wcm9ncmVzc2l2ZTogZmFsc2UpO1xuLy8vXG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkc2NhbGUgW251bGxdIC0gYSBzY2FsZSBudW1iZXIgdG8gb3V0cHV0IGEgZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFtudWxsXSAtIGN1c3RvbSBsaW5lLWhlaWdodCB2YWx1ZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc2NhbGUncyBkZWZhdWx0XG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIG91dHB1dCBhIGZvbnQtd2VpZ2h0IHByb3BlcnR5LCBlLmcuICdib2xkJywgJ3NlbWlib2xkJ1xuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHN0eWxlIFtudWxsXSAtIG91dHB1dCBhIGZvbnQtc3R5bGUgcHJvcGVydHksIGUuZy4gJ2l0YWxpYydcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWZvbnQtZmFtaWx5IFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHRoZSBmb250LWZhbWlseSBwcm9wZXJ0eSBmcm9tIHRoZSBvdXRwdXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVzaXppbmcgdHlwb2dyYXBoeSwgd2hlcmUgdGhlIHNhbnMgZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG5AbWl4aW4gb1R5cG9ncmFwaHlTYW5zKFxuXHQkc2NhbGU6IG51bGwsXG5cdCRsaW5lLWhlaWdodDogbnVsbCxcblx0JHdlaWdodDogbnVsbCxcblx0JHN0eWxlOiBudWxsLFxuXHQkaW5jbHVkZS1mb250LWZhbWlseTogdHJ1ZSxcblx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmU6ICRvLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1sb2FkaW5nXG4pIHtcblx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5Rm9yKFxuXHRcdCRfby10eXBvZ3JhcGh5LXNhbnMsXG5cdFx0JHNjYWxlLFxuXHRcdCRsaW5lLWhlaWdodCxcblx0XHQkd2VpZ2h0LFxuXHRcdCRzdHlsZSxcblx0XHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0XHQkaW5jbHVkZS1wcm9ncmVzc2l2ZVxuXHQpO1xufVxuXG4vLy8gU2V0IGEgY3VzdG9tIGZvbnQuXG4vLy9cbi8vLyBAZXhhbXBsZSBUaGlzIGV4YW1wbGUgc2hvd3Mgc2V0dGluZyBhIGN1c3RvbSBmb250IFwiTXlTYW5zRm9udFwiIGFzIHRoZSBcInNhbnNcIiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXRGb250KCR0eXBlOiAnc2FucycsICRmYW1pbHk6ICdNeVNhbnNGb250LCBzYW5zJyk7XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUgLSBPbmUgb2YgJ3NhbnMnLCAnc2VyaWYnLCBvciAnZGlzcGxheScuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmYW1pbHkgLSBUaGUgZm9udCBmYW1pbHkgdG8gc2V0LlxuQG1peGluIG9UeXBvZ3JhcGh5U2V0Rm9udCgkdHlwZSwgJGZhbWlseSkge1xuXHQkZm9udDogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZhbWlseSk7XG5cdEBpZiBub3Qgb0ZvbnRzVmFyaWFudEV4aXN0cygkZm9udCwgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsKSB7XG5cdFx0QGVycm9yICdDb3VsZCBub3Qgc2V0IHRoZSBmb250IGZhbWlseSBcIiN7JGZhbWlseX1cIiBhcyBcIiN7JGZvbnR9XCIgZG9lcyBub3QgZXhpc3QgaW4gXCJvLWZvbnRzXCIuIElmIHlvdSBhcmUgc2V0dGluZyBhIGN1c3RvbSBmb250LCBmaXJzdCByZWdpc3RlciB5b3VyIGN1c3RvbSBmb250IHdpdGggby1mb250cyAoaHR0cHM6Ly9yZWdpc3RyeS5vcmlnYW1pLmZ0LmNvbS9jb21wb25lbnRzL28tZm9udHMpLic7XG5cdH1cblx0QGlmIG5vdCBpbmRleCgkX28tdHlwb2dyYXBoeS10eXBlcywgJHR5cGUpIHtcblx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBzZXQgZm9udC1mYW1pbHkgXCIjeyRmYW1pbHl9XCIgZm9yIGZhbWlseSBzdHlsZSBcIiN7JHR5cGV9XCIsIGZhbWlseSBzdHlsZSBtdXN0IGJlIG9uZSBvZiBcIiN7JF9vLXR5cG9ncmFwaHktdHlwZXN9XCIuJztcblx0fVxuXHQvLyBTZXQgdGhlIGN1c3RvbSBmb250LlxuXHRAaWYgJHR5cGUgPT0gJ3NhbnMnIHtcblx0XHQkX28tdHlwb2dyYXBoeS1zYW5zOiAkZmFtaWx5ICFnbG9iYWw7XG5cdH1cblx0QGlmICR0eXBlID09ICdzZXJpZicge1xuXHRcdCRfby10eXBvZ3JhcGh5LXNlcmlmOiAkZmFtaWx5ICFnbG9iYWw7XG5cdH1cblx0QGlmICR0eXBlID09ICdkaXNwbGF5JyB7XG5cdFx0JF9vLXR5cG9ncmFwaHktZGlzcGxheTogJGZhbWlseSAhZ2xvYmFsO1xuXHR9XG59XG5cbi8vLyBEZWZpbmUgdGhlIHR5cG9ncmFwaGljIHNjYWxlIGZvciBhIGdpdmVuIGZvbnQuIFRoZSBmb250IG1heSBiZSBhbiBleGlzdGluZyBvciBjdXN0b20gZm9udC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZhbWlseSAtIFRoZSBmb250IG5hbWUgb3IgZmFtaWx5IHRvIGFwcGx5IGEgc2NhbGUgdG8uXG4vLy8gQHBhcmFtIHtNYXB9ICRzY2FsZSAtIEEgbWFwIG9mIHNjYWxlIG51bWJlcnMgYXMga2V5cyAoLTIgdG8gMTApLCB3aXRoIGxpc3QgdmFsdWVzIG9mIGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgXCIoLTI6ICgxMiwgMTYpLCAtMTogKDE0LCAxNiksIDA6ICgxNiwgMjApKVwiIGV0Yy4uLlxuLy8vIEBleGFtcGxlIFRoaXMgZXhhbXBsZSBzaG93cyBkZWZpbmluZyBhIGN1c3RvbSBmb250IHNjYWxlIGZvciBhIGN1c3RvbSBmb250IFwiTXlTYW5zRm9udFwiLiBBdCBzY2FsZSBcIjBcIiB0aGUgZm9udCBzaXplIHdpbGwgYmUgMTZweCwgYW5kIHRoZSBsaW5lLWhlaWdodCAyMHB4LlxuLy8vXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGVmaW5lRm9udFNjYWxlKCRmYW1pbHk6ICdNeVNhbnNGb250LCBzYW5zJywgKFxuLy8vXHRcdCAgIC0yOiAoMTIsIDE2KSxcbi8vL1x0XHQgICAtMTogKDE0LCAxOCksXG4vLy9cdFx0ICAgIDA6ICgxNiwgMjApLFxuLy8vXHRcdCAgICAxOiAoMTgsIDI0KSxcbi8vL1x0XHQgICAgMjogKDIwLCAyNiksXG4vLy9cdFx0ICAgIDM6ICgyNCwgMzIpLFxuLy8vXHRcdCAgICA0OiAoMjgsIDM2KSxcbi8vL1x0XHQgICAgNTogKDMyLCA0MiksXG4vLy9cdFx0ICAgIDY6ICg0MCwgNTIpLFxuLy8vXHRcdCAgICA3OiAoNDgsIDYyKSxcbi8vL1x0XHQgICAgODogKDU2LCA3MiksXG4vLy9cdFx0ICAgIDk6ICg3MiwgOTQpLFxuLy8vXHRcdCAgIDEwOiAoODQsIDExMClcbi8vL1x0XHQpKTtcbkBtaXhpbiBvVHlwb2dyYXBoeURlZmluZUZvbnRTY2FsZSgkZmFtaWx5LCAkc2NhbGUpIHtcblx0QGlmIHR5cGUtb2YoJHNjYWxlKSAhPSAnbWFwJyB7XG5cdFx0QGVycm9yICdDb3VsZCBub3Qgc2V0IHRoZSBzY2FsZSBmb3IgZm9udCBcIiN7JGZhbWlseX1cIiwgZXhwZWN0ZWQgdGhlIHNjYWxlIHRvIGJlIGEgbWFwIGJ1dCBmb3VuZCBcIiN7JHNjYWxlfVwiLCBvZiB0eXBlIFwiI3t0eXBlLW9mKCRzY2FsZSl9XCIuJztcblx0fVxuXHRAZWFjaCAkc2NhbGUtbnVtYmVyLCAkc2NhbGUtaXRlbSBpbiAkc2NhbGUge1xuXHRcdEBpZiB0eXBlLW9mKCRzY2FsZS1pdGVtKSAhPSAnbGlzdCcgb3IgbGVuZ3RoKCRzY2FsZS1pdGVtKSAhPSAyIHtcblx0XHRcdEBlcnJvciAnRXhwZWN0ZWQgZWFjaCBpdGVtIGluIHRoZSBzY2FsZSB0byBiZSBhIGxpc3Qgd2l0aCB0d28gaXRlbXMsIHRoZSBmb250IHNpemUgZm9sbG93ZWQgYnkgdGhlIGxpbmUgaGVpZ2h0Lic7XG5cdFx0fVxuXHR9XG5cdEBpZiBtYXAta2V5cygkc2NhbGUpICE9ICgtMiwgLTEsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwKSB7XG5cdFx0QGVycm9yICdFeHBlY3RlZCB0aGUgc2NhbGUgZm9yIGZvbnQgXCIjeyRmYW1pbHl9XCIgdG8gY29udGFpbiB2YWx1ZXMgZm9yIHNjYWxlcyAtMiB0byAxMCwgYnV0IGZvdW5kIHNjYWxlcyBcIiN7bWFwLWtleXMoJHNjYWxlKX1cIi4nO1xuXHR9XG5cdCRmYW1pbHk6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmYW1pbHkpO1xuXHQkX28tdHlwb2dyYXBoeS1mb250LXNjYWxlLWJ5LWZvbnQ6IG1hcC1tZXJnZSgoJGZhbWlseTogJHNjYWxlKSwgJF9vLXR5cG9ncmFwaHktZm9udC1zY2FsZS1ieS1mb250KSAhZ2xvYmFsO1xufVxuXG4vLy8gT3V0cHV0IGEgdHlwb2dyYXBoeSBmb3IgZm9udFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCAtIFRoZSBmb250IHRvIG91dHB1dCB0eXBvZ3JhcGh5IGZvci5cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgZ2l2ZW4gZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29UeXBvZ3JhcGh5Rm9yKFxuXHQkZm9udCxcblx0JHNjYWxlLFxuXHQkbGluZS1oZWlnaHQsXG5cdCR3ZWlnaHQsXG5cdCRzdHlsZSxcblx0JGluY2x1ZGUtZm9udC1mYW1pbHksXG5cdCRpbmNsdWRlLXByb2dyZXNzaXZlXG4pIHtcblx0Ly8gQ2hlY2sgZm9udCB2YXJpYW50IGlzIHN1cHBvcnRlZC5cblx0JGZvbnQtd2l0aG91dC1mYWxsYmFja3M6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTtcblx0JHZhcmlhbnQtZXhpc3RzOiBvRm9udHNWYXJpYW50RXhpc3RzKCRmb250LXdpdGhvdXQtZmFsbGJhY2tzLCAkd2VpZ2h0LCAkc3R5bGUpO1xuXHRAaWYgbm90ICR2YXJpYW50LWV4aXN0cyB7XG5cdFx0QGVycm9yICdGb250IGZhbWlseSBcIiN7JGZvbnQtd2l0aG91dC1mYWxsYmFja3N9XCIgb2Ygd2VpZ2h0ICcgK1xuXHRcdFx0J1wiI3tpZigkd2VpZ2h0LCAkd2VpZ2h0LCAncmVndWxhcicpfVwiIGFuZCBzdHlsZSAnICtcblx0XHRcdCdcIiN7aWYoJHN0eWxlLCAkc3R5bGUsICdub3JtYWwnKX1cIiBpcyBub3Qgc3VwcG9ydGVkLic7XG5cdH1cblxuXHQvLyBDaGVjayBmb250IHZhcmlhbnQgaGFzIGJlZW4gaW5jbHVkZWQsIGFuZCBlcnJvciBpZiBhbiBlcnJvciBtZXNzYWdlXG5cdC8vIGhhcyBiZWVuIHNldCBieSB0aGUgdXNlci5cblx0JHZhcmlhbnQtaW5jbHVkZWQ6IG9Gb250c1ZhcmlhbnRJbmNsdWRlZCgkZm9udC13aXRob3V0LWZhbGxiYWNrcywgJHdlaWdodCwgJHN0eWxlKTtcblx0QGlmIG5vdCAkdmFyaWFudC1pbmNsdWRlZCBhbmQgdHlwZS1vZigkby10eXBvZ3JhcGh5LWVycm9yLWZvci1taXNzaW5nLWZvbnRzKSA9PSAnc3RyaW5nJyB7XG5cdFx0QGVycm9yICdUaGUgZm9udCBmYWNlIGZvciBmb250IGZhbWlseSBcIiN7JGZvbnQtd2l0aG91dC1mYWxsYmFja3N9XCIgb2YgJyArXG5cdFx0XHQnd2VpZ2h0IFwiI3tpZigkd2VpZ2h0LCAkd2VpZ2h0LCAncmVndWxhcicpfVwiIGFuZCBzdHlsZSAnICtcblx0XHRcdCdcIiN7aWYoJHN0eWxlLCAkc3R5bGUsICdub3JtYWwnKX1cIiBoYXMgbm90IGJlZW4gaW5jbHVkZWQgaW4geW91ciAnICtcblx0XHRcdCdwcm9qZWN0LiAje2luc3BlY3QoJG8tdHlwb2dyYXBoeS1lcnJvci1mb3ItbWlzc2luZy1mb250cyl9Jztcblx0fVxuXG5cdEBpZiAkaW5jbHVkZS1mb250LWZhbWlseSB7XG5cdFx0Zm9udC1mYW1pbHk6IGlmKHR5cGUtb2YoJGZvbnQpID09ICdzdHJpbmcnLCB1bnF1b3RlKCRmb250KSwgJGZvbnQpO1xuXHR9XG5cblx0QGlmICRzY2FsZSB7XG5cdFx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5U2l6ZSgkc2NhbGU6ICRzY2FsZSwgJGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQsICRmb250OiAkZm9udCk7XG5cdH0gQGVsc2UgaWYgJGxpbmUtaGVpZ2h0IHtcblx0XHRsaW5lLWhlaWdodDogX29UeXBvZ3JhcGh5QWRqdXN0VW5pdCgkbGluZS1oZWlnaHQpO1xuXHR9XG5cblx0QGlmICR3ZWlnaHQge1xuXHRcdGZvbnQtd2VpZ2h0OiBvRm9udHNXZWlnaHQoJHdlaWdodCk7XG5cdH1cblxuXHRAaWYgJHN0eWxlIHtcblx0XHRmb250LXN0eWxlOiB1bnF1b3RlKCRzdHlsZSk7XG5cdH1cblxuXHRAaWYgJGluY2x1ZGUtcHJvZ3Jlc3NpdmUge1xuXHRcdEBpbmNsdWRlIF9vVHlwb2dyYXBoeVByb2dyZXNzaXZlRm9udEZhbGxiYWNrKCRmb250LCAkc2NhbGUsICR3ZWlnaHQsICRzdHlsZSwgJGluY2x1ZGUtZm9udC1mYW1pbHkpO1xuXHR9XG59XG5cbi8vLyBPdXRwdXRzIHRoZSBmb250IHNpemUgYW5kIGxpbmUgaGVpZ2h0IGJhc2VkIG9uIHRoZSBzY2FsZSwgYWxzb1xuLy8vIGFjY2VwdHMgYW4gb3ZlcnJpZGUgbGluZS1oZWlnaHQgdG8gb3V0cHV0IGFuZCBhIGZvbnQgYWRqdXN0bWVudFxuLy8vIHBhcmFtZXRlciBmb3Igd2hlbiBvdXRwdXR0aW5nIHN0eWxlcyBmb3IgcHJvZ3Jlc3NpdmVseSBsb2FkZWQgZm9udHNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2NhbGUgbnVtYmVyIG9uIHNjYWxlIHRoZSBzaXplcyBhcmUgYmFzZWQgb25cbi8vLyBAcGFyYW0ge0Jvb2xlYW4gfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBzaXplIHRvIG92ZXJyaWRlIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCBbJyddIC0gVGhlIGZvbnQgdG8gZ2V0IHRoZSBmb250IHNpemUgZm9yLCBhcyBmb250cyBtYXkgaGF2ZSBkaWZmZXJlbnQgc2NhbGVzLiBVc2VzIHRoZSBkZWZhdWx0IHNjYWxlIGlmIG5vdCBzcGVjaWZpZWQuXG5AbWl4aW4gX29UeXBvZ3JhcGh5U2l6ZSgkc2NhbGUsICRsaW5lLWhlaWdodDogZmFsc2UsICRmb250OiAnJykge1xuXHRAaWYgdHlwZS1vZigkc2NhbGUpID09IG1hcCB7XG5cdFx0QGVhY2ggJGJyZWFrcG9pbnQsICRzY2FsZSBpbiAkc2NhbGUge1xuXHRcdFx0JGN1cnJlbnQtbGluZS1oZWlnaHQ6IGlmKGxlbmd0aCgkc2NhbGUpID09IDIsIG50aCgkc2NhbGUsIDIpLCAkbGluZS1oZWlnaHQpO1xuXHRcdFx0JGN1cnJlbnQtc2NhbGU6IGlmKHR5cGUtb2YoJHNjYWxlKSA9PSBsaXN0IGFuZCBsZW5ndGgoJHNjYWxlKSAhPSAwLCBudGgoJHNjYWxlLCAxKSwgJHNjYWxlKTtcblxuXHRcdFx0QGlmICRicmVha3BvaW50ID09ICdkZWZhdWx0JyBhbmQgJGN1cnJlbnQtc2NhbGUge1xuXHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAxLCAkZm9udCk7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAkY3VycmVudC1saW5lLWhlaWdodCwgJGZvbnQpO1xuXHRcdFx0fVxuXG5cdFx0XHRAaWYgJGJyZWFrcG9pbnQgIT0gJ2RlZmF1bHQnIGFuZCAkY3VycmVudC1zY2FsZSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRicmVha3BvaW50KSB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkY3VycmVudC1zY2FsZSwgMSwgJGZvbnQpO1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAkY3VycmVudC1saW5lLWhlaWdodCwgJGZvbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRzY2FsZSwgMSwgJGZvbnQpO1xuXHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRzY2FsZSwgJGxpbmUtaGVpZ2h0LCAkZm9udCk7XG5cdH1cbn1cblxuLy8vIE91dHB1dHMgdGhlIHByb2dyZXNzaXZlIGZvbnQgZmFsbGJhY2sgc3R5bGVzIGJhc2VkIG9uXG4vLy8gZm9udCBhbmQgc2NhbGUgaWYgdGhlIGZvbnQgaGFzIGZhbGxiYWNrIHNldHRpbmdzXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQgLSBGb250IHRvIG91dHB1dCBmYWxsYmFjayBzdHlsZXMgZm9yIChvciAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSAtIE51bWJlciBvbiBzY2FsZSB0aGUgc2l6ZSBpcyBiYXNlZCBvbi5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBUaGUgd2VpZ2h0IG9mIHRoZSBmb250IHdoaWNoIG5lZWRzIGEgZmFsbGJhY2sgZS5nLiAnYm9sZCcuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBUaGUgc3R5bGUgb2YgdGhlIGZvbnQgd2hpY2ggbmVlZHMgYSBmYWxsYmFjayBlLmcuICdpdGFsaWMnLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gV2hldGhlciB0byBvdXRwdXQgdGhlIGZvbnQgZmFtaWx5IG9mIHRoZSBmYWxsYmFjayBmb250ICh2cy4ganVzdCB0aGUgc2l6ZSlcbkBtaXhpbiBfb1R5cG9ncmFwaHlQcm9ncmVzc2l2ZUZvbnRGYWxsYmFjaygkZm9udCwgJHNjYWxlLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlKSB7XG5cdEBpZiBub3QgJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmcge1xuXHRcdEBlcnJvciAnUHJvZ3Jlc3NpdmUgZm9udCBmYWxsYmFja3MgYXJlIGRpc2FibGVkLicgK1xuXHRcdFx0J0lmIHlvdSBhcmUgc3VyZSB5b3Ugd2FudCB0byBvdXRwdXQgcHJvZ3Jlc3NpdmUgZm9udCBmYWxsYmFja3MgaW4gJyArXG5cdFx0XHQneW91ciBwcm9qZWN0IHNldCBgJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmc6IHRydWU7YCAnICtcblx0XHRcdCdhdCB0aGUgdG9wIG9mIHlvdXIgcHJvamVjdCwgYmVmb3JlIGltcG9ydGluZyBTYXNzIGZpbGVzLiAnICtcblx0XHRcdCdTZWUgdGhlIFJFQURNRSBmb3IgZGV0YWlscyBhbmQgbW9yZSBvcHRpb25zIG9yIGNvbnRhY3QgdGhlIE9yaWdhbWkgdGVhbS4nO1xuXHR9XG5cdEBpZiAkc2NhbGUge1xuXHRcdC8vIElmIGZhbHN5IHdlaWdodC9zdHlsZSBkZWZhdWx0IHRvIHJlZ3VsYXIvbm9ybWFsLlxuXHRcdCR3ZWlnaHQ6IGlmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyk7XG5cdFx0JHN0eWxlOiBpZigkc3R5bGUsICRzdHlsZSwgJ25vcm1hbCcpO1xuXHRcdC8vIEZpbmQgZmFsbGJhY2sgY29uZmlnIGZvciBmb250LCB3ZWlnaHQsIGFuZCBzdHlsZS5cblx0XHRAZWFjaCAkZmFsbGJhY2sgaW4gJF9vLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1mYWxsYmFja3Mge1xuXHRcdFx0Ly8gR2V0IGZhbGxiYWNrIHByb3BlcnRpZXMuXG5cdFx0XHQkZmFsbGJhY2stZmFtaWx5OiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2ZhbWlseScpO1xuXHRcdFx0JGZhbGxiYWNrLWxhYmVsOiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2xhYmVsJyk7XG5cdFx0XHQvLyBNYXRjaCByZWd1bGFyIGJ5IGRlZmF1bHQuXG5cdFx0XHQkZmFsbGJhY2std2VpZ2h0OiBtYXAtZ2V0KCRmYWxsYmFjaywgJ3dlaWdodCcpO1xuXHRcdFx0JGZhbGxiYWNrLXdlaWdodDogaWYoJGZhbGxiYWNrLXdlaWdodCwgJGZhbGxiYWNrLXdlaWdodCwgKCdyZWd1bGFyJykpO1xuXHRcdFx0Ly8gTWF0Y2ggbm9ybWFsIGJ5IGRlZmF1bHQuXG5cdFx0XHQkZmFsbGJhY2stc3R5bGU6IG1hcC1nZXQoJGZhbGxiYWNrLCAnc3R5bGUnKTtcblx0XHRcdCRmYWxsYmFjay1zdHlsZTogaWYoJGZhbGxiYWNrLXN0eWxlLCAkZmFsbGJhY2stc3R5bGUsICgnbm9ybWFsJykpO1xuXHRcdFx0JGZhbGxiYWNrLXNjYWxlOiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2ZhbGxiYWNrLXNjYWxlJyk7XG5cdFx0XHQvLyBDaGVjayBpZiBmYWxsYmFjayBpcyBmb3IgdGhlIGdpdmVuIGZvbnQsIHdlaWdodCwgYW5kIHN0eWxlLjtcblx0XHRcdCRsYWJlbC1tYXRjaDogJGZhbGxiYWNrLWxhYmVsID09IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTsgLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcblx0XHRcdCRmYW1pbHktbWF0Y2g6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmYWxsYmFjay1mYW1pbHkpID09IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTtcblx0XHRcdCR3ZWlnaHQtbWF0Y2g6IGluZGV4KCRmYWxsYmFjay13ZWlnaHQsICR3ZWlnaHQpO1xuXHRcdFx0JHN0eWxlLW1hdGNoOiBpZigkZmFsbGJhY2stc3R5bGUsIGluZGV4KCRmYWxsYmFjay1zdHlsZSwgJHN0eWxlKSwgdHJ1ZSk7XG5cdFx0XHQvLyBPdXRwdXQgdGhlIGZhbGxiYWNrIGlmIGl0IG1hdGNoZXMuXG5cdFx0XHRAaWYgKCRsYWJlbC1tYXRjaCBvciAoJGZhbWlseS1tYXRjaCBhbmQgJHdlaWdodC1tYXRjaCBhbmQgJHN0eWxlLW1hdGNoKSkge1xuXHRcdFx0XHQuI3skX28tdHlwb2dyYXBoeS1sb2FkaW5nLXByZWZpeH0tI3skZmFsbGJhY2stbGFiZWx9ICYge1xuXHRcdFx0XHRcdEBpbmNsdWRlIF9vVHlwb2dyYXBoeUZvbnRTaXplKCRzY2FsZTogJHNjYWxlLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3Q6ICRmYWxsYmFjay1zY2FsZSwgJGZvbnQ6ICRmYWxsYmFjay1mYW1pbHkpO1xuXHRcdFx0XHRcdEBpZiAkaW5jbHVkZS1mb250LWZhbWlseSB7XG5cdFx0XHRcdFx0XHRmb250LWZhbWlseTogbWFwLWdldCgkZmFsbGJhY2ssICdmYWxsYmFjaycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gT3V0cHV0cyB0aGUgZm9udCBzaXplIGJhc2VkIG9uIHRoZSBzY2FsZSwgYWxzbyBhY2NlcHRzIGEgZm9udCBhZGp1c3RtZW50XG4vLy8gcGFyYW1ldGVyIGZvciB3aGVuIG91dHB1dHRpbmcgc3R5bGVzIGZvciBwcm9ncmVzc2l2ZWx5IGxvYWRlZCBmb250c1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSAtIE51bWJlciBvbiBzY2FsZSB0aGUgc2l6ZXMgYXJlIGJhc2VkIG9uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QgLSBNdWx0aXBsaWVyIGZvciBmb250LXNpemUgYWRqdXN0bWVudHMsIHdoZW4gYWRkaW5nIHN0eWxlcyBmb3IgcHJvZ3Jlc3NpdmVseSBsb2FkZWQgZm9udC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQgWycnXSAtIFRoZSBmb250IHRvIGdldCB0aGUgZm9udCBzaXplIGZvciwgYXMgZm9udHMgbWF5IGhhdmUgZGlmZmVyZW50IHNjYWxlcy4gVXNlcyB0aGUgZGVmYXVsdCBzY2FsZSBpZiBub3Qgc3BlY2lmaWVkLlxuQG1peGluIF9vVHlwb2dyYXBoeUZvbnRTaXplKCRzY2FsZSwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0OiAxLCAkZm9udDogJycpIHtcblx0QGlmIHR5cGUtb2YoJHNjYWxlKSA9PSBtYXAge1xuXHRcdEBlYWNoICRicmVha3BvaW50LCAkbnVtYmVyIGluICRzY2FsZSB7XG5cdFx0XHRAaWYgJGJyZWFrcG9pbnQgPT0gJ2RlZmF1bHQnIHtcblx0XHRcdFx0QGlmIHR5cGUtb2YoJG51bWJlcikgPT0gbGlzdCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZShudGgoJG51bWJlciwgMSksICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRudW1iZXIsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IEBlbHNlIGlmKCRudW1iZXIpIHtcblx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGJyZWFrcG9pbnQpIHtcblx0XHRcdFx0XHRAaWYgdHlwZS1vZigkbnVtYmVyKSA9PSBsaXN0IHtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUobnRoKCRudW1iZXIsIDEpLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0XHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJG51bWJlciwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJHNjYWxlLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0fVxufVxuIiwiJG8taGVhZGVyLWlzLXNpbGVudDogdHJ1ZSAhZGVmYXVsdDtcblxuJF9vLWhlYWRlci1wYWRkaW5nLXg6IDE0cHg7XG4kX28taGVhZGVyLXBhZGRpbmcteTogOHB4O1xuJF9vLWhlYWRlci1idXR0b25zLXRoZW1lOiAnbW9ubyc7XG4kX28taGVhZGVyLW1lZ2EtcGFkZGluZy14OiAyNHB4O1xuJF9vLWhlYWRlci1tZWdhLXBhZGRpbmcteTogMThweDtcbiRfby1oZWFkZXItbWVnYS16LWluZGV4OiAxO1xuJF9vLWhlYWRlci1kcmF3ZXItei1pbmRleDogMTAwO1xuJF9vLWhlYWRlci1kcmF3ZXItd2lkdGg6IDMyMHB4O1xuJF9vLWhlYWRlci1kcmF3ZXItZGl2aWRlLWhlaWdodDogNDBweDtcbiRfby1oZWFkZXItZHJhd2VyLXBhZGRpbmcteDogMTZweDtcbiRfby1oZWFkZXItZHJhd2VyLXBhZGRpbmcteTogMTJweDtcbiRfby1oZWFkZXItc3VibmF2LWhlaWdodC1iYXNlOiA0NHB4O1xuJF9vLWhlYWRlci1zdWJuYXYtaGVpZ2h0LW1lZGl1bTogMzZweDtcbiRfby1oZWFkZXItaXRlbS1zZXBhcmF0b3ItcGVyY2VudGFnZS1oZWlnaHQ6IDAuNztcbiRfby1oZWFkZXItc3ViLWhlYWRlci1mb2N1cy1tYXJnaW46IDVweDtcbiRfby1oZWFkZXItc3RpY2t5LXotaW5kZXg6IDk5O1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gcHVibGljIHNvIHVzZXJzIG1heSBwb3NpdGlvbiBlbGVtZW50cyBiZWxvdyB0aGUgc3RpY2t5IG5hdixcbi8vLyBpbiBjYXNlcyB3aGVyZSB0aGUgZWxlbWVudCBtdXN0IGFsaWduIHdpdGggb3RoZXIgZWxlbWVudHMgaW4gdGhlIHBhZ2Vcbi8vLyBhbmQgdGh1cyBjYW5ub3QgYmUgYSBjaGlsZCBvZiB0aGUgby1oZWFkZXIgZWxlbWVudFxuJG8taGVhZGVyLXN0aWNreS1oZWlnaHQ6IDU1cHg7XG5cbi8vIGF0IHNvbWUgcG9pbnQgdGhlc2Ugc2hvdWxkIGJlIG5vcm1hbGlzZWQgaW4gby1pY29uc1xuJF9vLWhlYWRlci1pY29uLXNpemUtbGFyZ2U6IDQwO1xuJF9vLWhlYWRlci1pY29uLXNpemU6IDI1O1xuJF9vLWhlYWRlci1pY29uLXNpemUtc21hbGw6IDE1O1xuXG4kX28taGVhZGVyLWZlYXR1cmVzOiAndG9wJywgJ3N1Ym5hdicsICdzZWFyY2gnLCAnbmF2JywgJ2Fub24nLCAnZHJhd2VyJywgJ21lZ2FtZW51JywgJ3N0aWNreScsICdzaW1wbGUnLCAnc3ViYnJhbmQnLCAndHJhbnNwYXJlbnQnO1xuIiwiQG1peGluIF9vSGVhZGVyU2VhcmNoKCkge1xuXHQuby1oZWFkZXJfX3NlYXJjaCB7XG5cdFx0cGFkZGluZzogJF9vLWhlYWRlci1wYWRkaW5nLXkgMDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0YmFja2dyb3VuZDogX29IZWFkZXJHZXQoJ3NlYXJjaC1iYWNrZ3JvdW5kJyk7XG5cblx0XHQmW2FyaWEtaGlkZGVuPVwiZmFsc2VcIl0ge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVxuXHR9XG5cblx0W2RhdGEtby1oZWFkZXItc2VhcmNoXSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC5vLWhlYWRlcl9fc2VhcmNoLWZvcm0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRtYXgtd2lkdGg6IDY0MHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHR9XG5cblx0Lm8taGVhZGVyX19zZWFyY2gtdGVybSB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogLTEpO1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0aGVpZ2h0OiAzMnB4OyAvLyBtYXRjaCBvdmVycmlkZGVuIG8tYnV0dG9ucyBoZWlnaHRcblx0XHRwYWRkaW5nOiAwIDhweDtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdC8vIG5vcm1hbGl6ZVxuXHRcdGFwcGVhcmFuY2U6IG5vbmU7XG5cdFx0YmFja2dyb3VuZDogd2hpdGU7XG5cdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogMDtcblx0XHQvLyBmaWxsIVxuXHRcdG1pbi13aWR0aDogNTAlO1xuXHRcdGZsZXgtZ3JvdzogMTtcblxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Ly9hbHNvLCBvdmVycmlkZW4gYnkgby1ub3JtYWxpc2Vcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3JkZXItY29sb3I6IF9vSGVhZGVyR2V0KCdzZWFyY2gtYm9yZGVyJyk7XG5cdFx0fVxuXHR9XG5cblx0Lm8taGVhZGVyX19zZWFyY2gtc3VibWl0IHtcblx0XHRAaW5jbHVkZSBvQnV0dG9uc0NvbnRlbnQoKFxuXHRcdFx0J3R5cGUnOiAncHJpbWFyeScsXG5cdFx0XHQndGhlbWUnOiAkX28taGVhZGVyLWJ1dHRvbnMtdGhlbWVcblx0XHQpKTtcblx0XHRoZWlnaHQ6IDMycHg7IC8vIG92ZXJyaWRlIG8tYnV0dG9ucyBoZWlnaHRcblx0XHRtYXJnaW4tbGVmdDogJF9vLWhlYWRlci1wYWRkaW5nLXg7XG5cdH1cblxuXHQuby1oZWFkZXJfX3NlYXJjaC1jbG9zZSB7XG5cdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgnY3Jvc3MnLCBfb0hlYWRlckdldCgnc2VhcmNoLWNsb3NlJyksICRzaXplOiAkX28taGVhZGVyLWljb24tc2l6ZS1sYXJnZSk7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdG1hcmdpbi1sZWZ0OiAkX28taGVhZGVyLXBhZGRpbmcteDtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdC8vIE1hdGNoIHRoZSBzZWFyY2ggYnV0dG9uJ3MgaG92ZXIvZm9jdXMgc3RhdGUuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzIHtcblx0XHRcdG9wYWNpdHk6IDAuNzU7XG5cdFx0fVxuXG5cdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJHVudGlsOiAnTScpIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG59XG4iLCIvLy8gQG91dHB1dCBTdHlsZXMgZm9yIGEgY3VzdG9tIGJ1dHRvbiB0aGVtZSBgLm8tYnV0dG9ucy0tWyRuYW1lXWAuXG4vLy8gQGV4YW1wbGUgLSBBZGQgYSBuZXcgY2xhcmV0IHRoZW1lIGZvciBib3RoIHByaW1hcnkgYW5kIHNlY29uZGFyeSBidXR0b25zLlxuLy8vICAgICAvLyBPdXRwdXRzIGNsYXNzIC5vLWJ1dHRvbnMtLW15LXNwZWNpYWwtYnV0dG9uXG4vLy8gICAgIEBpbmNsdWRlIG9CdXR0b25zQWRkVGhlbWUoXG4vLy8gICAgICAgICAkbmFtZTogJ215LXNwZWNpYWwtYnV0dG9uJyxcbi8vLyAgICAgICAgICRvcHRzOiAoJ2NvbG9yJzogJ2NsYXJldC04MCcpLFxuLy8vICAgICAgICAgJHR5cGVzOiAoJ3ByaW1hcnknLCAnc2Vjb25kYXJ5Jylcbi8vLyAgICAgKTtcbi8vLyBAZXhhbXBsZSAtIEFkZCBhIG5ldyBjbGFyZXQgdGhlbWUgdG8gZ28gb24gYSBzbGF0ZSBiYWNrZ3JvdW5kLlxuLy8vICAgICAvLyBPdXRwdXRzIGNsYXNzIC5vLWJ1dHRvbnMtLW15LXNwZWNpYWwtYnV0dG9uXG4vLy8gICAgIEBpbmNsdWRlIG9CdXR0b25zQWRkVGhlbWUoXG4vLy8gICAgICAgICAkbmFtZTogJ215LXNwZWNpYWwtYnV0dG9uJyxcbi8vLyAgICAgICAgICRvcHRzOiAoJ2NvbG9yJzogJ2NsYXJldC04MCcsICdjb250ZXh0JzogJ3NsYXRlJyksXG4vLy8gICAgICAgICAkdHlwZXM6ICgncHJpbWFyeScsICdzZWNvbmRhcnknKVxuLy8vICAgICApO1xuLy8vIEBleGFtcGxlIC0gQWRkIGEgbmV3IGNsYXJldCB0aGVtZSBmb3IgYnV0dG9ucyB3aXRoIGljb25zLlxuLy8vICAgICAvLyBPdXRwdXRzIGNsYXNzIC5vLWJ1dHRvbnMtLW15LXNwZWNpYWwtYnV0dG9uXG4vLy8gICAgIEBpbmNsdWRlIG9CdXR0b25zQWRkVGhlbWUoXG4vLy8gICAgICAgICAkbmFtZTogJ215LXNwZWNpYWwtYnV0dG9uJyxcbi8vLyAgICAgICAgICRvcHRzOiAoJ2NvbG9yJzogJ2NsYXJldC04MCcpLFxuLy8vICAgICAgICAgJHR5cGVzOiAoJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JyksXG4vLy8gICAgICAgICAkaWNvbnM6ICgnYXJyb3ctdXAnLCAnYXJyb3ctZG93bicpXG4vLy8gICAgICk7XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gQSB0aGVtZSBuYW1lIGUuZy4gYG15LXNwZWNpYWwtYnV0dG9uYC5cbi8vLyBAcGFyYW0ge01hcH0gJG9wdHMgLSBBIGN1c3RvbSB0aGVtZSBtYXAgd2l0aCBhIGBjb2xvcmAgYW5kIG9wdGlvbmFsIGBjb250ZXh0YCBrZXkuIFRoZSBjb250ZXh0IGtleSBpbmRpY2F0ZXMgdGhlIGJhY2tncm91bmQgY29sb3VyIHlvdXIgYnV0dG9uIGlzIHBsYWNlZCBvbiwgaXQgZGVmYXVsdHMgdG8gdGhlIHBhZ2UgY29sb3VyIChwYXBlciBmb3IgdGhlIGNvcmUgYnJhbmQsIHdoaXRlIG90aGVyd2lzZSkuIFNlZSBbdGhlIFJFQURNRV0oaHR0cHM6Ly9yZWdpc3RyeS5vcmlnYW1pLmZ0LmNvbS9jb21wb25lbnRzL28tYnV0dG9ucy9yZWFkbWUpIGZvciBtb3JlIGRldGFpbHMuXG4vLy8gQHBhcmFtIHtMaXN0fSAkdHlwZXMgLSBUaGUgdHlwZXMgb2YgYnV0dG9uIHRvIG91dHB1dCB0aGUgdGhlbWUgZm9yIGUuZy4gKCdwcmltYXJ5JywgJ3NlY29uZGFyeScpLlxuLy8vIEBwYXJhbSB7TGlzdHxOdWxsfSAkaWNvbnMgW251bGxdIC0gVGhlIGJ1dHRvbiBpY29ucyB0byBvdXRwdXQgZm9yIHRoaXMgdGhlbWUuXG5AbWl4aW4gb0J1dHRvbnNBZGRUaGVtZSgkbmFtZSwgJG9wdHMsICR0eXBlcywgJGljb25zOiBudWxsKSB7XG5cdC8vIEFkZCB0aGUgbmFtZSB0byB0aGUgdGhlbWUgbWFwLlxuXHQkdGhlbWU6IG1hcC1tZXJnZSgoJ25hbWUnOiAkbmFtZSksICRvcHRzKTtcblx0Ly8gQ3JlYXRlIGVhY2ggYnV0dG9uIHR5cGUgZm9yIHRoZSBuZXcgdGhlbWUuXG5cdEBlYWNoICR0eXBlIGluICR0eXBlcyB7XG5cdFx0QGluY2x1ZGUgX29CdXR0b25zQWRkKCR0eXBlLCAkdGhlbWUsICRpY29ucyk7XG5cdH1cbn1cblxuLy8vIENyZWF0ZSBhIHNpbmdsZSBidXR0b24gd2l0aCBhIGN1c3RvbSBjbGFzcy4gVG8gYXZvaWQgZHVwbGljYXRlIENTUyB0aGlzIGlzXG4vLy8gbm90IHJlY29tbWVuZGVkIHVubGVzcyBgby1idXR0b25zYCBkZWZhdWx0IGNsYXNzZXMgY2Fubm90IGJlIHVzZWQuIFNlZSBbdGhlXG4vLy8gUkVBRE1FXShodHRwczovL3JlZ2lzdHJ5Lm9yaWdhbWkuZnQuY29tL2NvbXBvbmVudHMvby1idXR0b25zL3JlYWRtZSkgZm9yXG4vLy8gbW9yZSBkZXRhaWxzLlxuLy8vXG4vLy8gQGV4YW1wbGUgLSBPdXRwdXQgYSBwcmltYXJ5IGJ1dHRvbiB3aXRoIHJpZ2h0IGFycm93LlxuLy8vICAgICAubXktYnV0dG9uIHtcbi8vLyAgICAgICAgIEBpbmNsdWRlIG9CdXR0b25zQ29udGVudCgkb3B0czogKFxuLy8vICAgICAgICAgICAgICd0eXBlJzogJ3ByaW1hcnknLFxuLy8vICAgICAgICAgICAgICdpY29uJzogJ2Fycm93LXJpZ2h0J1xuLy8vICAgICAgICAgKSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIC0gT3V0cHV0IGEgcHJpbWFyeSBidXR0b24gd2l0aCBhIGN1c3RvbSBsZW1vbiB0aGVtZS5cbi8vLyAgICAgLm15LWxlbW9uLWJ1dHRvbiB7XG4vLy8gICAgICAgICBAaW5jbHVkZSBvQnV0dG9uc0NvbnRlbnQoJG9wdHM6IChcbi8vLyAgICAgICAgICAgICAndHlwZSc6ICdwcmltYXJ5Jyxcbi8vLyAgICAgICAgICAgICAndGhlbWUnOiAoJ2NvbG9yJzogJ2xlbW9uJylcbi8vLyAgICAgICAgICkpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSAtIFNoYXJlIGJhc2UgYnV0dG9uIHN0eWxlcy5cbi8vLyAgICAgLy8gb3V0cHV0IGJhc2UgYnV0dG9uIHN0eWxlcyBvbmx5XG4vLy8gICAgIC5teS1idXR0b24ge1xuLy8vICAgICAgICAgQGluY2x1ZGUgb0J1dHRvbnNDb250ZW50KCRvcHRzOiAoKSk7XG4vLy8gICAgIH1cbi8vLyAgICAgLy8gb3V0cHV0IG1vZGlmaWVyIGNsYXNzZXMgZm9yIGJ1dHRvbiB0eXBlcywgd2l0aG91dCBkdXBsaWNhdGluZyBiYXNlIHN0eWxlc1xuLy8vICAgICAubXktYnV0dG9uLS1zZWNvbmRhcnkge1xuLy8vICAgICAgICAgQGluY2x1ZGUgb0J1dHRvbnNDb250ZW50KCRvcHRzOiAoXG4vLy8gICAgICAgICAgICAgJ3R5cGUnOiAnc2Vjb25kYXJ5J1xuLy8vICAgICAgICAgKSwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcbi8vLyAgICAgfVxuLy8vICAgICAubXktYnV0dG9uLS1wcmltYXJ5IHtcbi8vLyAgICAgICAgIEBpbmNsdWRlIG9CdXR0b25zQ29udGVudCgkb3B0czogKFxuLy8vICAgICAgICAgICAgICd0eXBlJzogJ3ByaW1hcnknXG4vLy8gICAgICAgICApLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UpO1xuLy8vICAgICB9XG4vLy8gQG91dHB1dCBCdXR0b24gQ1NTIGRlY2xhcmF0aW9ucyB3aXRob3V0IGFueSBzZWxlY3RvcnMuXG4vLy8gQHBhcmFtIHtNYXB9ICRvcHRzIFsoJ3R5cGUnOiAnbnVsbCcsICd0aGVtZSc6IG51bGwsICdzaXplJzogbnVsbCwgJ2ljb24nOiBudWxsLCAnaWNvbi1vbmx5JzogZmFsc2UpXSAtIFRoZSBraW5kIG9mIGJ1dHRvbiBzdHlsZXMgdG8gb3V0cHV0LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtYmFzZS1zdHlsZXMgW3RydWVdIC0gV2hldGhlciB0byBpbmNsdWRlIGJhc2UgYnV0dG9uIHN0eWxlcywgc2hhcmVkIGJ5IGFsbCBidXR0b25zLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtYmFzZS1pY29uLXN0eWxlcyBbdHJ1ZV0gLSBXaGV0aGVyIHRvIGluY2x1ZGUgYmFzZSBpY29uIGJ1dHRvbiBzdHlsZXMsIHNoYXJlZCBieSBhbGwgaWNvbiBidXR0b25zIChkZWZhdWx0cyB0byB0cnVlIG9ubHkgd2hlbiBvdXRwdXR0aW5nIGFuIGljb24gYnV0dG9uKS5cbkBtaXhpbiBvQnV0dG9uc0NvbnRlbnQoJG9wdHM6IChcblx0J3R5cGUnOiBudWxsLFxuXHQndGhlbWUnOiBudWxsLFxuXHQnc2l6ZSc6IG51bGwsXG5cdCdpY29uJzogbnVsbCxcblx0J2ljb24tb25seSc6IGZhbHNlXG4pLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogdHJ1ZSwgJGluY2x1ZGUtYmFzZS1pY29uLXN0eWxlczogdHJ1ZSkge1xuXHQkdGhlbWU6IG1hcC1nZXQoJG9wdHMsICd0aGVtZScpO1xuXHQkdHlwZTogbWFwLWdldCgkb3B0cywgJ3R5cGUnKTtcblx0JGljb24tb25seTogbWFwLWdldCgkb3B0cywgJ2ljb24tb25seScpO1xuXHQkc2l6ZTogbWFwLWdldCgkb3B0cywgJ3NpemUnKTtcblx0JGljb246IG1hcC1nZXQoJG9wdHMsICdpY29uJyk7XG5cblx0Ly8gSWYgYSBzaXplIGlzIGdpdmVuLCBlbmZvcmNlIGl0cyBhbiBhY3R1YWwgYnV0dG9uIHNpemVcblx0QGlmICRzaXplIGFuZCBub3QgaW5kZXgoJF9vLWJ1dHRvbnMtc2l6ZXMsICRzaXplKSB7XG5cdFx0QGVycm9yICdcIiN7JHNpemV9XCIgaXMgbm90IGEgYnV0dG9uIHNpemUuIEFsbG93ZWQgc2l6ZXMgaW5jbHVkZSAnICtcblx0XHRcdCdcIiN7JF9vLWJ1dHRvbnMtc2l6ZXN9XCIuIE9yLCBkbyBub3Qgc2V0IHRoZSBidXR0b24gc2l6ZSB0byBvdXRwdXQgJyArXG5cdFx0XHQndGhlIGRlZmF1bHQgc2l6ZS4nO1xuXHR9XG5cblx0QGlmICR0aGVtZSBhbmQgbm90ICR0eXBlIHtcblx0XHQkdGhlbWUtZGVzY3JpcHRpb246IGlmKHR5cGUtb2YoJHRoZW1lKSA9PSAnc3RyaW5nJywgJHRoZW1lLCAnY3VzdG9tJyk7XG5cdFx0QHdhcm4gJ0EgYnV0dG9uIHRoZW1lIGNhbm5vdCBiZSBvdXRwdXQgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBidXR0b24gJyArXG5cdFx0XHQndHlwZS4gVG8gb3V0cHV0IHN0eWxlcyBmb3IgYSBcIiN7JHRoZW1lLWRlc2NyaXB0aW9ufVwiIGJ1dHRvbiB0aGVtZSBhbHNvICcgK1xuXHRcdFx0J3NwZWNpZnkgdGhlIGJ1dHRvbiB0eXBlIGFzIGVpdGhlciBhIFwicHJpbWFyeVwiIG9yIFwic2Vjb25kYXJ5XCIgYnV0dG9uJztcblx0fVxuXG5cdC8vIEdldCBidXR0b24gY29sb3VycyBmb3IgdGhlIGJ1dHRvbiB0eXBlIGFuZCB0aGVtZS5cblx0JGJ1dHRvbi1jb2xvcnMtbWFwOiBpZigkdHlwZSwgX29CdXR0b25zR2VuZXJhdGVDb2xvcnMoJHR5cGUsICR0aGVtZSksICgpKTtcblxuXHRAaWYgJGluY2x1ZGUtYmFzZS1zdHlsZXMge1xuXHRcdEBpbmNsdWRlIF9vQnV0dG9uc0Jhc2VDb250ZW50KCRzaXplKTtcblx0fVxuXG5cdC8vIEluY2x1ZGUgc2l6ZSBzdHlsZXMgaWYgdGhleSBoYXZlbid0IGJlZW4gaW5jbHVkZWRcblx0Ly8gYWxyZWFkeSBhcyBwYXJ0IG9mIHRoZSBiYXNlIHN0eWxlcy5cblx0QGlmICRzaXplIGFuZCBub3QgJGluY2x1ZGUtYmFzZS1zdHlsZXMge1xuXHRcdEBpbmNsdWRlIF9vQnV0dG9uc1NpemVDb250ZW50KCRzaXplKTtcblx0fVxuXG5cdEBpZiAkdHlwZSB7XG5cdFx0QGluY2x1ZGUgX29CdXR0b25zU3RhdGVDb250ZW50KCR0eXBlLCAkYnV0dG9uLWNvbG9ycy1tYXApO1xuXHR9XG5cblx0QGlmICRpY29uIGFuZCAkaW5jbHVkZS1iYXNlLWljb24tc3R5bGVzIHtcblx0XHRAaW5jbHVkZSBfb0J1dHRvbnNJY29uQmFzZUNvbnRlbnQoJHNpemUpO1xuXHR9XG5cblx0QGlmICRpY29uIGFuZCAkdHlwZSB7XG5cdFx0QGluY2x1ZGUgX29CdXR0b25zSWNvblN0YXRlc0NvbnRlbnQoJGljb24sICRidXR0b24tY29sb3JzLW1hcCk7XG5cdH1cblxuXHRAaWYgJGljb24tb25seSB7XG5cdFx0QGluY2x1ZGUgX29CdXR0b25zSWNvbk9ubHlDb250ZW50KCk7XG5cdH1cbn1cblxuXG4vLy8gQG91dHB1dCBTdHlsZXMgZm9yIGEgYnV0dG9uIGUuZy4gYC5vLWJ1dHRvbnMtLXByaW1hcnlgLCBgLm8tYnV0dG9ucy0tcHJpbWFyeS5vLWJ1dHRvbnMtLWludmVyc2VgLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlIC0gVGhlIHR5cGUgb2YgYnV0dG9uIHRvIG91dHB1dCBlLmcuICgncHJpbWFyeScsICdzZWNvbmRhcnknKS5cbi8vLyBAcGFyYW0ge1N0cmluZ3xNYXB9ICR0aGVtZSAtIFRoZSBidXR0b24gdGhlbWUgdG8gb3V0cHV0LiBFaXRoZXIgYSBkZWZhdWx0IHRoZW1lICdpbnZlcnNlJyBvciBjdXN0b20gdGhlbWUgbWFwIHdpdGggcHJvcGVydGllcyBgbmFtZWAsIGBjb2xvcmAsIGFuZCBvcHRpb25hbCBgY29udGV4dGAga2V5LlxuLy8vIEBwYXJhbSB7TGlzdHxOdWxsfSAkaWNvbnMgW251bGxdIC0gVGhlIGJ1dHRvbiBpY29ucyB0byBvdXRwdXQgZm9yIHRoZSBidXR0b24gdHlwZSBhbmQgdGhlbWUuXG5AbWl4aW4gX29CdXR0b25zQWRkKCR0eXBlLCAkdGhlbWU6IG51bGwsICRpY29uczogbnVsbCkge1xuXHQvLyBFcnJvciBpZiB0aGUgdGhlbWUgaXMgbm90IGV4cGVjdGVkLlxuXHRAaWYgKCR0aGVtZSAhPSBudWxsIGFuZCB0eXBlLW9mKCR0aGVtZSkgIT0gJ3N0cmluZycgYW5kIHR5cGUtb2YoJHRoZW1lKSAhPSAnbWFwJykge1xuXHRcdEBlcnJvciAnRXhwZWN0ZWQgdGhlIGJ1dHRvbiB0aGVtZSB0byBiZSBhIHN0cmluZywgbWFwLCBvciBgbnVsbGAuJztcblx0fVxuXHQvLyBHZW5lcmF0ZSBidXR0b24gY29sb3VycyBpZiB0aGV5IGRvbid0IGFscmVhZHkgZXhpc3QgZm9yIHRoaXMgYnV0dG9uLlxuXHQkYnV0dG9uLWNvbG9yczogX29CdXR0b25zR2V0Q29sb3JzKCR0eXBlLCAkdGhlbWUpO1xuXHQvLyBDcmVhdGUgQ1NTIHNlbGVjdG9ycy5cblx0JHRoZW1lLW5hbWU6IGlmKHR5cGUtb2YoJHRoZW1lKSA9PSAnbWFwJywgbWFwLWdldCgkdGhlbWUsICduYW1lJyksICR0aGVtZSk7XG5cdCR0eXBlLXNlbGVjdG9yOiAnLm8tYnV0dG9ucy0tI3skdHlwZX0nO1xuXHQkdGhlbWUtc2VsZWN0b3I6IGlmKCR0aGVtZS1uYW1lLCAnLm8tYnV0dG9ucy0tI3skdGhlbWUtbmFtZX0nLCAnJyk7XG5cdC8vIE91dHB1dCB2YXJpYW50IHN0eWxlcy5cblx0I3skdHlwZS1zZWxlY3Rvcn0jeyR0aGVtZS1zZWxlY3Rvcn0ge1xuXHRcdEBpbmNsdWRlIF9vQnV0dG9uc1N0YXRlQ29udGVudCgkdHlwZSwgJGJ1dHRvbi1jb2xvcnMpO1xuXHR9XG5cdC8vIE91dHB1dCB2YXJpYW50IGljb24gc3R5bGVzLlxuXHRAZWFjaCAkaWNvbiBpbiAkaWNvbnMge1xuXHRcdCN7JHR5cGUtc2VsZWN0b3J9I3skdGhlbWUtc2VsZWN0b3J9Lm8tYnV0dG9ucy1pY29uLS0jeyRpY29ufSB7XG5cdFx0XHRAaW5jbHVkZSBfb0J1dHRvbnNJY29uU3RhdGVzQ29udGVudCgkaWNvbiwgJGJ1dHRvbi1jb2xvcnMpO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gU3R5bGVzIHNoYXJlZCBieSBhbGwgYnV0dG9ucyBvZiBhIGdpdmVuIHNpemUuXG4vLy8gQHBhcmFtIHtOdWxsfE51bWJlcn0gJHNpemVcbkBtaXhpbiBfb0J1dHRvbnNCYXNlQ29udGVudCgkc2l6ZTogbnVsbCkge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHdlaWdodDogJ3NlbWlib2xkJyk7XG5cdEBpbmNsdWRlIF9vQnV0dG9uc1NpemVDb250ZW50KCRzaXplKTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRtYXJnaW46IDA7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdHRyYW5zaXRpb246IDAuM3MgYmFja2dyb3VuZC1jb2xvciwgMC4xNXMgY29sb3IgZWFzZS1vdXQsIDAuMTVzIGJvcmRlci1jb2xvciBlYXNlLW91dDtcblx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cdGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdC8vIFByZXZlbnQgZmF0IHdoaXRlIHR5cGUgb24gYSBkYXJrIGJhY2tncm91bmRcblx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG5cdC1tb3otYXBwZWFyYW5jZTogbm9uZTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdGJvcmRlci1yYWRpdXM6IDA7IC8vIEVkZ2UgODAgaW5zaXN0cyBvbiBhIGJvYXJkZXIgcmFkaXVzLlxuXG5cdC8vIFNhbWUgYXMgYXJpYS1kaXNhYmxlZDpcblx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvc3RhdGVzX2FuZF9wcm9wZXJ0aWVzI2FyaWEtZGlzYWJsZWRcblx0Ly8gVGhpcyBpcyBhIGNvbW1vbiBzdHlsZSBmb3IgYWxsIGJ1dHRvbiB0aGVtZXNcblx0JltkaXNhYmxlZF0ge1xuXHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdG9wYWNpdHk6IDAuNDtcblx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdH1cbn1cblxuLy8vIFN0eWxlcyBzaGFyZWQgYnkgYWxsIGJ1dHRvbnMgb2YgYSBnaXZlbiBzaXplIHdpdGggYW4gaWNvbi5cbi8vLyBAcGFyYW0ge051bGx8TnVtYmVyfSAkc2l6ZVxuQG1peGluIF9vQnV0dG9uc0ljb25CYXNlQ29udGVudCgkc2l6ZTogbnVsbCkge1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAzcHg7XG5cdHBhZGRpbmctbGVmdDogX29CdXR0b25zR2V0KCdpY29uLXBhZGRpbmcnLCAkc2l6ZSk7XG59XG5cbi8vLyBTdHlsZXMgZm9yIGEgYnV0dG9uIHdoaWNoIGlzIGFuIGljb24gb25seS5cbkBtaXhpbiBfb0J1dHRvbnNJY29uT25seUNvbnRlbnQoKSB7XG5cdHBhZGRpbmctbGVmdDogMDtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNTAlO1xuXHRtaW4td2lkdGg6IDQwcHg7XG59XG5cbi8vLyBTdHlsZXMgdG8gc2l6ZSBhIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge051bGx8TnVtYmVyfSAkc2l6ZVxuQG1peGluIF9vQnV0dG9uc1NpemVDb250ZW50KCRzaXplOiBudWxsKSB7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IF9vQnV0dG9uc0dldCgnc2NhbGUnLCAkc2l6ZSkpO1xuXHQkbGluZS1oZWlnaHQ6IG50aChvVHlwb2dyYXBoeUdldFNjYWxlKFxuXHRcdCRpbmRleDogX29CdXR0b25zR2V0KCdzY2FsZScsICRzaXplKSxcblx0XHQkZm9udDogb1R5cG9ncmFwaHlHZXRGb250RmFtaWx5KCdzYW5zJylcblx0KSwgMSk7XG5cdGxpbmUtaGVpZ2h0OiAjeyRsaW5lLWhlaWdodH1weDtcblx0Ly8gSUUxMSByZW5kZXJzIHRoZSBiYWNrZ3JvdW5kIGltYWdlIGF0IGEgdmVyeSBzbWFsbCBzaXplIGlmIHlvdSBkbyBub3Rcblx0Ly8gZG91YmxlLXVwIHRoZSBiYWNrZ3JvdW5kIHNpemUgaGVyZSwgZGVjbGFyaW5nIGEgd2lkdGggX2FuZF8gaGVpZ2h0LlxuXHQvLyBTZWUgaHR0cHM6Ly90aGF0ZW1pbC5jb20vYmxvZy8yMDE1LzAzLzE1L3NpemluZy1zdmctYmFja2dyb3VuZC1pbWFnZXMtaW4taW50ZXJuZXQtZXhwbG9yZXIvXG5cdGJhY2tncm91bmQtc2l6ZTogX29CdXR0b25zR2V0KCdiYWNrZ3JvdW5kLXNpemUnLCAkc2l6ZSkgX29CdXR0b25zR2V0KCdiYWNrZ3JvdW5kLXNpemUnLCAkc2l6ZSk7XG5cdG1pbi1oZWlnaHQ6IF9vQnV0dG9uc0dldCgnbWluLWhlaWdodCcsICRzaXplKTtcblx0bWluLXdpZHRoOiBfb0J1dHRvbnNHZXQoJ21pbi13aWR0aCcsICRzaXplKTtcblx0cGFkZGluZzogX29CdXR0b25zR2V0KCdwYWRkaW5nJywgJHNpemUpO1xufVxuXG4vLy8gU3R5bGVzIHRvIGFwcGx5IGNvbG91cnMgdG8gZWFjaCBidXR0b24gc3RhdGUsIGUuZy4gZm9jdXMsIGFjdGl2ZS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUgLSBUaGUgdHlwZSBvZiBidXR0b24sIGUuZy4gJ3ByaW1hcnknXG4vLy8gQHBhcmFtIHtNYXB9ICRidXR0b24tY29sb3JzLW1hcCAtIFRoZSBjb2xvdXJzIGZvciB0aGlzIGJ1dHRvbiAoQHNlZSBfb0J1dHRvbnNHZXRDb2xvcnMpLlxuQG1peGluIF9vQnV0dG9uc1N0YXRlQ29udGVudCgkdHlwZSwgJGJ1dHRvbi1jb2xvcnMtbWFwKSB7XG5cdGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnYmFja2dyb3VuZCcpO1xuXHRjb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdjb2xvcicpO1xuXHRib3JkZXItY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnYm9yZGVyJyk7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdob3Zlci1iYWNrZ3JvdW5kJyk7XG5cdFx0Y29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnaG92ZXItY29sb3InKTtcblx0XHRib3JkZXItY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnaG92ZXItYm9yZGVyJyk7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHR9XG5cblx0Jjpmb2N1cyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdmb2N1cy1iYWNrZ3JvdW5kJyk7XG5cdFx0Y29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnZm9jdXMtY29sb3InKTtcblx0XHRib3JkZXItY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnZm9jdXMtYm9yZGVyJyk7XG5cdH1cblxuXHQvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNlbGVjdGVkXG5cdC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZFxuXHQmW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0sIC8vIGUuZy4gQSBzZWxlY3RlZCB0YWIgb3IgcGFnZSBudW1iZXIgaW4gcGFnaW5hdGlvbi5cblx0JlthcmlhLWN1cnJlbnRdLCAvLyBlLmcuIEEgc2VsZWN0ZWQgdGFiIG9yIHBhZ2UgbnVtYmVyIGluIHBhZ2luYXRpb24gKGZvciBsaW5rcyBvbmx5KS5cblx0JlthcmlhLXByZXNzZWQ9dHJ1ZV0sIC8vIGUuZy4gQSBcImZvbGxvd1wiIGJ1dHRvbiB0aGF0IGlzIHByZXNzZWQuXG5cdCY6YWN0aXZlIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2FjdGl2ZS1iYWNrZ3JvdW5kJyk7XG5cdFx0Y29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnYWN0aXZlLWNvbG9yJyk7XG5cdFx0Ym9yZGVyLWNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2FjdGl2ZS1ib3JkZXInKTtcblx0fVxufVxuXG4vLy8gU3R5bGVzIHRvIGFwcGx5IGljb25zIG9mIGRpZmZlcmVudCBjb2xvdXJzIHRvIGVhY2ggYnV0dG9uIHN0YXRlLCBlLmcuIGZvY3VzLCBhY3RpdmUuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlIC0gVGhlIHR5cGUgb2YgYnV0dG9uLCBlLmcuICdwcmltYXJ5J1xuLy8vIEBwYXJhbSB7TWFwfSAkYnV0dG9uLWNvbG9ycy1tYXAgLSBUaGUgY29sb3VycyBmb3IgdGhpcyBidXR0b24gKEBzZWUgX29CdXR0b25zR2V0Q29sb3JzKS5cbkBtaXhpbiBfb0J1dHRvbnNJY29uU3RhdGVzQ29udGVudCgkaWNvbiwgJGJ1dHRvbi1jb2xvcnMtbWFwKSB7XG5cdCRub3JtYWwtaWNvbi1jb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdjb2xvcicpO1xuXHQkaG92ZXItaWNvbi1jb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdob3Zlci1jb2xvcicpO1xuXHQkYWN0aXZlLWljb24tY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnYWN0aXZlLWNvbG9yJyk7XG5cdCRmb2N1cy1pY29uLWNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2ZvY3VzLWNvbG9yJyk7XG5cblx0QGluY2x1ZGUgX29CdXR0b25zR2V0SWNvbigkaWNvbiwgJG5vcm1hbC1pY29uLWNvbG9yKTtcblxuXHQvLyBPbmx5IG91dHB1dCB0aGUgaG92ZXIgaWNvbiBpZiBpdCBpcyBkaWZmZXJlbnQgdG8gdGhlIGRlZmF1bHQgaWNvbi5cblx0QGlmKCRob3Zlci1pY29uLWNvbG9yICE9ICRub3JtYWwtaWNvbi1jb2xvcikge1xuXHRcdCY6aG92ZXIge1xuXHRcdFx0QGluY2x1ZGUgX29CdXR0b25zR2V0SWNvbigkaWNvbiwgJGhvdmVyLWljb24tY29sb3IpO1xuXHRcdH1cblx0XHQvLyBIYWNrIHRvIGdldCB0aGUgaG92ZXIgc3RhdGUgY29sb3VyIHN2ZyB0byBkb3dubG9hZCB0byBwcmV2ZW50IGZsYXNoXG5cdFx0Ly8gYXMgaWNvbiBpcyBkb3dubG9hZGVkIG9uIGhvdmVyXG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0QGluY2x1ZGUgX29CdXR0b25zR2V0SWNvbigkaWNvbiwgJGhvdmVyLWljb24tY29sb3IpO1xuXHRcdFx0Ly8gRm9yIGFuIHVua25vd24gcmVhc29uIHdoZW4gYnV0dG9uIGNvcHkgaGFzIGxlYWRpbmcgd2hpdGVzcGFjZVxuXHRcdFx0Ly8gU2FmYXJpIHJlbmRlcnMgdGhlIGJlZm9yZSBwc2V1ZG8gZWxlbWVudCBhYm92ZSB0aGUgY29udGVudCB3aXRoXG5cdFx0XHQvLyBhIGhlaWdodCBvZiAxNnB4IGFuZCB3aWR0aCAxcHgsIG1ha2luZyB0aGUgYnV0dG9uIHRvbyB0YWxsLlxuXHRcdFx0Ly8gSWYgd2hpdGVzcGFjZSBpcyBpbmNsdWRlZCBpbiB0aGUgcHNldWRvIGVsZW1lbnQgU2FmYXJpIGRvZXMgbm90XG5cdFx0XHQvLyBkbyB0aGlzOiBodHRwczovL2dpdGh1Yi5jb20vRmluYW5jaWFsLVRpbWVzL28tYnV0dG9ucy9pc3N1ZXMvMjUwXG5cdFx0XHRjb250ZW50OiAnICc7XG5cdFx0fVxuXHR9XG5cblx0Ly8gT25seSBvdXRwdXQgdGhlIGZvY3VzIGljb24gaWYgaXQgaXMgZGlmZmVyZW50IHRvIHRoZSBkZWZhdWx0IG9yIGhvdmVyIGljb24uXG5cdEBpZigkZm9jdXMtaWNvbi1jb2xvciAhPSAkbm9ybWFsLWljb24tY29sb3Igb3IgJGZvY3VzLWljb24tY29sb3IgIT0gJGhvdmVyLWljb24tY29sb3IpIHtcblx0XHQmOmZvY3VzIHtcblx0XHRcdEBpbmNsdWRlIF9vQnV0dG9uc0dldEljb24oJGljb24sICRmb2N1cy1pY29uLWNvbG9yKTtcblx0XHR9XG5cdH1cblxuXHQvLyBPbmx5IG91dHB1dCB0aGUgYWN0aXZlIGljb24gaWYgaXQgaXMgZGlmZmVyZW50IHRvIHN0YXRlcyB3aXRoIGxlc3Mgc3BlY2lmaWNpdHkuXG5cdEBpZigkYWN0aXZlLWljb24tY29sb3IgIT0gJG5vcm1hbC1pY29uLWNvbG9yIG9yICRhY3RpdmUtaWNvbi1jb2xvciAhPSAkaG92ZXItaWNvbi1jb2xvciBvciAkYWN0aXZlLWljb24tY29sb3IgIT0gJGZvY3VzLWljb24tY29sb3IpIHtcblx0XHQvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNlbGVjdGVkXG5cdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wcmVzc2VkXG5cdFx0JlthcmlhLXNlbGVjdGVkPXRydWVdLCAvLyBlLmcuIEEgc2VsZWN0ZWQgdGFiIG9yIHBhZ2UgbnVtYmVyIGluIHBhZ2luYXRpb24uXG5cdFx0JlthcmlhLWN1cnJlbnRdLCAvLyBlLmcuIEEgc2VsZWN0ZWQgdGFiIG9yIHBhZ2UgbnVtYmVyIGluIHBhZ2luYXRpb24gKGZvciBsaW5rcyBvbmx5KS5cblx0XHQmW2FyaWEtcHJlc3NlZD10cnVlXSwgLy8gZS5nLiBBIFwiZm9sbG93XCIgYnV0dG9uIHRoYXQgaXMgcHJlc3NlZC5cblx0XHQmOmFjdGl2ZSB7XG5cdFx0XHRAaW5jbHVkZSBfb0J1dHRvbnNHZXRJY29uKCRpY29uLCAkYWN0aXZlLWljb24tY29sb3IpO1xuXHRcdH1cblx0XHQvLyBIYWNrIHRvIGdldCB0aGUgYWN0aXZlIHN0YXRlIGNvbG91ciBzdmcgdG8gZG93bmxvYWQgdG8gcHJldmVudCBmbGFzaFxuXHRcdC8vIGFzIGljb24gaXMgZG93bmxvYWRlZCBvbiBhY3RpdmVcblx0XHQmOmFmdGVyIHtcblx0XHRcdEBpbmNsdWRlIF9vQnV0dG9uc0dldEljb24oJGljb24sICRhY3RpdmUtaWNvbi1jb2xvcik7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHR9XG5cdH1cblxuXHQvLyBBZGQgZmFsbGJhY2sgZm9yIE1TIEhpZ2ggQ29udHJhc3QgbW9kZS5cblx0Ly8gVGhpcyBvbmx5IG5lZWRzIHRvIGJlIG91dHB1dCBvbmNlLCBub3QgZm9yIGV2ZXJ5IGJ1dHRvbiBzdGF0ZS5cblx0Ly8gc2Fzcy1saW50OmRpc2FibGUgbm8tdmVuZG9yLXByZWZpeGVzXG5cdEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG5cdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgkaWNvbi1uYW1lOiAkaWNvbiwgJHNpemU6IG51bGwsICRjb2xvcjogI2ZmZmZmZiwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlLCAkaGlnaC1jb250cmFzdC1mYWxsYmFjazogZmFsc2UpO1xuXHR9XG5cdEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYmxhY2stb24td2hpdGUpIHtcblx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCRpY29uLW5hbWU6ICRpY29uLCAkc2l6ZTogbnVsbCwgJGNvbG9yOiAjMDAwMDAwLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UsICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrOiBmYWxzZSk7XG5cdH1cblx0Ly8gc2Fzcy1saW50OmVuYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcbn1cblxuLy8vIFJlcXVlc3QgYW4gaWNvbiBmcm9tIG8taWNvbnMgb2YgYSBzcGVjaWZpYyBjb2xvdXIgZm9yIGEgYnV0dG9uLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRpY29uLW5hbWUgLSBpY29uIHRvIHJlcXVlc3Rcbi8vLyBAcGFyYW0ge0NvbG9yfSAkaWNvbi1jb2xvciAtIGEgaGV4IGZvciB0aGUgYnV0dG9uIGljb24gY29sb3VyXG5AbWl4aW4gX29CdXR0b25zR2V0SWNvbigkaWNvbi1uYW1lLCAkaWNvbi1jb2xvcikge1xuXHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCRpY29uLW5hbWU6ICRpY29uLW5hbWUsICRzaXplOiBudWxsLCAkY29sb3I6ICRpY29uLWNvbG9yLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UsICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrOiBmYWxzZSk7XG59XG4iLCJAbWl4aW4gX29IZWFkZXJOYXYoKSB7XG5cdC5vLWhlYWRlcl9fbmF2IHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAtMSwgJGxpbmUtaGVpZ2h0OiAyMHB4KTtcblx0fVxuXG5cdC5vLWhlYWRlcl9fbmF2LS1oaWRlLXMge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygnUycpIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fbmF2LS1tb2JpbGUge1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygnTCcpIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0Lm8taGVhZGVyX19uYXYtLWRlc2t0b3Age1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygnTCcpIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fbmF2LWxpc3Qge1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblx0XHRtYXJnaW46IDAgYXV0bztcblx0XHRwYWRkaW5nOiAwO1xuXHR9XG5cblx0Lm8taGVhZGVyX19uYXYtbGlzdC0tbGVmdCB7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdH1cblxuXHQuby1oZWFkZXJfX25hdi1saXN0LS1yaWdodCB7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHR9XG5cblx0Lm8taGVhZGVyX19uYXYtaXRlbSB7XG5cdFx0ZGlzcGxheTogdGFibGUtY2VsbDtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdHBhZGRpbmctbGVmdDogJF9vLWhlYWRlci1wYWRkaW5nLXggLSAyO1xuXG5cdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0fVxuXG5cdFx0Lm8taGVhZGVyX19uYXYtLW1vYmlsZSAmIHtcblx0XHRcdHBhZGRpbmctbGVmdDogJF9vLWhlYWRlci1wYWRkaW5nLXggKiAyO1xuXG5cdFx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fbmF2LWl0ZW0tLWhpZGUtcyB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCdTJykge1xuXHRcdFx0ZGlzcGxheTogdGFibGUtY2VsbDtcblx0XHR9XG5cdH1cblxuXHQuby1oZWFkZXJfX25hdi1pdGVtLS1leHBhbmRlZCB7XG5cdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJHVudGlsOiAnTScpIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0Lm8taGVhZGVyX19uYXYtbGluayB7XG5cdFx0QGluY2x1ZGUgX29IZWFkZXJMaW5rKCk7XG5cdFx0QGluY2x1ZGUgX29IZWFkZXJGYW5jeUxpbmsoKTtcblx0fVxuXG5cdC5vLWhlYWRlcl9fbmF2LWxpbmstLXByaW1hcnkge1xuXHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHQvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcblx0XHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0XHQvLyBzYXNzLWxpbnQ6ZW5hYmxlIG5vLXZlbmRvci1wcmVmaXhlc1xuXHR9XG5cblx0Lm8taGVhZGVyX19uYXYtYnV0dG9uIHtcblx0XHRAaW5jbHVkZSBvQnV0dG9uc0NvbnRlbnQoKFxuXHRcdFx0J3R5cGUnOiAncHJpbWFyeScsXG5cdFx0XHQndGhlbWUnOiAkX28taGVhZGVyLWJ1dHRvbnMtdGhlbWVcblx0XHQpKTtcblx0fVxufVxuIiwiQG1peGluIF9vSGVhZGVyQW5vbigpIHtcblx0Lm8taGVhZGVyX19hbm9uIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygnTCcpIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0Lm8taGVhZGVyX19hbm9uLWxpc3Qge1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAwO1xuXHR9XG5cblx0Lm8taGVhZGVyX19hbm9uLWl0ZW0ge1xuXHRcdEBpbmNsdWRlIF9vSGVhZGVySXRlbVNlcGFyYXRvcigpO1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0fVxuXG5cdC5vLWhlYWRlcl9fYW5vbi1saW5rIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoLTEpO1xuXHRcdEBpbmNsdWRlIF9vSGVhZGVyTGluaygpO1xuXHRcdEBpbmNsdWRlIF9vSGVhZGVyRmFuY3lMaW5rKCk7XG5cdH1cbn1cbiIsIkBtaXhpbiBfb0hlYWRlckRyYXdlcigpIHtcblx0Ly8gYWRkZWQgdG8gdGhlIGRvY3VtZW50IGVsZW1lbnQsIHNlZSBuLXVpL2xheW91dFxuXHQuby1oZWFkZXJfX2RyYXdlciB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogX29IZWFkZXJHZXQoJ2RyYXdlci1iYWNrZ3JvdW5kJyk7XG5cdFx0Ym94LXNpemluZzogY29udGVudC1ib3g7XG5cblx0XHQmW2RhdGEtby1oZWFkZXItZHJhd2VyLS1qc10ge1xuXHRcdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0Ym90dG9tOiAwO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHotaW5kZXg6ICRfby1oZWFkZXItZHJhd2VyLXotaW5kZXg7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGJvcmRlci1yaWdodDogMXB4IHNvbGlkIF9vSGVhZGVyR2V0KCdkcmF3ZXItYm9yZGVyJyk7XG5cdFx0XHQvLyB1c2UgYSAyRCB0cmFuc2Zvcm0gYmVjYXVzZSAzRCBhcmUgdW5zdXBwb3J0ZWQgYnkgSUU5XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tYmxvY2stbm8tZHVwbGljYXRlLXByb3BlcnRpZXNcblxuXHRcdFx0Ly8gdGhpcyBpcyBsaXRlcmFsbHkgdGhlIHNwZWMgZXhhbXBsZSBmb3Igd2lsbC1jaGFuZ2Vcblx0XHRcdHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG5cblx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCdNJykge1xuXHRcdFx0XHR3aWR0aDogJF9vLWhlYWRlci1kcmF3ZXItd2lkdGg7XG5cdFx0XHR9XG5cblx0XHRcdCZbYXJpYS1oaWRkZW5dIHtcblx0XHRcdFx0QGluY2x1ZGUgb1Zpc3VhbEVmZmVjdHNTaGFkb3dDb250ZW50KCdsb3cnKTtcblxuXHRcdFx0XHQvLyBiZWNhdXNlIHRoZSB0cmFuc2l0aW9uIGlzIHNsaWdodGx5IGJvdW5jeSBpdCB3aWxsIHJldmVhbCBzb21lIG9mIHRoZSBiYWNrZ3JvdW5kXG5cdFx0XHRcdGJvcmRlci1sZWZ0OiAzMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogLTMwcHg7XG5cdFx0XHR9XG5cblx0XHRcdCZbYXJpYS1oaWRkZW49XCJmYWxzZVwiXSB7XG5cdFx0XHRcdC8vIHVzZSBhIDJEIHRyYW5zZm9ybSBiZWNhdXNlIDNEIGFyZSB1bnN1cHBvcnRlZCBieSBJRTlcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLWJsb2NrLW5vLWR1cGxpY2F0ZS1wcm9wZXJ0aWVzXG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gU3VwcG9ydHMgZGlmZmVyZW50IHRyYW5zaXRpb25zIGZvciBvcGVuaW5nIGFuZCBjbG9zaW5nXG5cdC5vLWhlYWRlcl9fZHJhd2VyLS1vcGVuaW5nLFxuXHQuby1oZWFkZXJfX2RyYXdlci0tY2xvc2luZyB7XG5cdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXMgY3ViaWMtYmV6aWVyKDEsIDAsIDAuNSwgMS4yKTtcblx0fVxuXG5cdC5vLWhlYWRlcl9fZHJhd2VyLWlubmVyIHtcblx0XHRbZGF0YS1vLWhlYWRlci1kcmF3ZXItLWpzXSAmIHtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0XHQvLyBpbnRlcnRpYWwgc2Nyb2xsaW5nIGZvciBpT1MgU2FmYXJpXG5cdFx0XHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG5cdFx0XHQvLyB3b3JraW5nIGRyYWZ0XG5cdFx0XHRzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcblxuXHRcdFx0c2Nyb2xsYmFyLWNvbG9yOiBvQ29sb3JzQnlOYW1lKCdibGFjay0zMCcpIHRyYW5zcGFyZW50O1xuXG5cdFx0XHQvLyAo4pWvwrDilqHCsO+8ieKVr++4tSDilLvilIHilLtcblx0XHRcdCY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcblx0XHRcdFx0d2lkdGg6IDEycHg7XG5cdFx0XHR9XG5cdFx0XHQmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IG9Db2xvcnNCeU5hbWUoJ2JsYWNrLTMwJyk7XG5cdFx0XHRcdC8vIHlvdSBjYW4ndCBzZXQgdGhlIGRpbWVuc2lvbnMgc28gdXNlIGEgYm9yZGVyIGFzIGEgbWFyZ2luLi4uXG5cdFx0XHRcdGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7XG5cdFx0XHRcdGJvcmRlcjogNHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vXG5cdC8vIFRvb2xzXG5cdC8vXG5cdC5vLWhlYWRlcl9fZHJhd2VyLXRvb2xzIHtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHBhZGRpbmc6ICgkX28taGVhZGVyLWRyYXdlci1wYWRkaW5nLXkgKiAxLjUpIDAgJF9vLWhlYWRlci1kcmF3ZXItcGFkZGluZy15ICRfby1oZWFkZXItZHJhd2VyLXBhZGRpbmcteDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0hlYWRlckdldCgnZHJhd2VyLXRvb2xzLWJhY2tncm91bmQnKTtcblx0XHRjb2xvcjogX29IZWFkZXJHZXQoJ2RyYXdlci10b29scy10ZXh0Jyk7XG5cdH1cblxuXHQuby1oZWFkZXJfX2RyYXdlci10b29scy1sb2dvIHtcblx0XHRAaW5jbHVkZSBfb0hlYWRlckJyYW5kSW1hZ2UoJ2JyYW5kLWZ0LW1hc3RoZWFkJywgX29IZWFkZXJHZXQoJ2hlYWRlci1pY29uJyksIDIxMCk7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdFx0YmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuXHRcdHdpZHRoOiAyMTBweDtcblx0XHRoZWlnaHQ6IDE4cHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0fVxuXG5cdC5vLWhlYWRlcl9fZHJhd2VyLXRvb2xzLWNsb3NlIHtcblx0XHQvLyBkaXZpZGluZyBieSAxcHggcmVtb3ZlcyB0aGUgdW5pdFxuXHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ2Nyb3NzJywgX29IZWFkZXJHZXQoJ2RyYXdlci10b29scy1jbG9zZScpLCAkc2l6ZTogJF9vLWhlYWRlci1pY29uLXNpemUtbGFyZ2UpO1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdGJvcmRlcjogMDtcblx0XHRvcGFjaXR5OiAwLjc1O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRtYXJnaW4tdG9wOiAtMTBweDtcblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHR9XG5cblx0XHRbZGF0YS1vLWhlYWRlci1kcmF3ZXItLW5vLWpzXSAmIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0Ly9cblx0Ly8gRWRpdGlvbnNcblx0Ly9cblx0Lm8taGVhZGVyX19kcmF3ZXItY3VycmVudC1lZGl0aW9uIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAtMSk7XG5cdFx0Y29sb3I6IG9Db2xvcnNCeU5hbWUoJ2JsYWNrLTYwJyk7XG5cdFx0bWFyZ2luOiAwLjVlbSAwO1xuXHR9XG5cblx0Ly8gQGRlcHJlY2F0ZWQgLSBSZW1vdmUgYG8taGVhZGVyX19kcmF3ZXItZWRpdGlvbnNgIGluIHRoZSBuZXh0IG1ham9yXG5cdC5vLWhlYWRlcl9fZHJhd2VyLWVkaXRpb25zIHtcblx0XHRwYWRkaW5nOiAwICRfby1oZWFkZXItZHJhd2VyLXBhZGRpbmcteDtcblx0fVxuXG5cdC8vIEBkZXByZWNhdGVkIC0gUmVtb3ZlIGBvLWhlYWRlcl9fZHJhd2VyLWVkaXRpb25zLWxpbmtgIGluIHRoZSBuZXh0IG1ham9yXG5cdC5vLWhlYWRlcl9fZHJhd2VyLWVkaXRpb25zLWxpbmsge1xuXHRcdGNvbG9yOiBfb0hlYWRlckdldCgnZHJhd2VyLWVkaXRpb25zLWxpbmsnKTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0cGFkZGluZzogZGl2KCRfby1oZWFkZXItZHJhd2VyLXBhZGRpbmcteSwgMikgMCA4cHg7XG5cdFx0bWFyZ2luLWxlZnQ6IDAuNWVtO1xuXHRcdGJvcmRlci1ib3R0b206IDA7XG5cdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXG5cdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHR9XG5cblx0XHQmW2FyaWEtY3VycmVudF0ge1xuXHRcdFx0Y29sb3I6IF9vSGVhZGVyR2V0KCdkcmF3ZXItZWRpdGlvbnMtbGluay1oaWdobGlnaHQnKTtcblx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQvL1xuXHQvLyBTZWFyY2hcblx0Ly9cblx0Lm8taGVhZGVyX19kcmF3ZXItc2VhcmNoIHtcblx0XHRib3JkZXItdG9wOiAycHggc29saWQgb0NvbG9yc0J5TmFtZSgnYmxhY2stMTAnKTtcblx0XHRwYWRkaW5nOiAkX28taGVhZGVyLWRyYXdlci1wYWRkaW5nLXkgJF9vLWhlYWRlci1kcmF3ZXItcGFkZGluZy14O1xuXG5cdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJ0wnKSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fZHJhd2VyLXNlYXJjaC1mb3JtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHR9XG5cblx0Lm8taGVhZGVyX19kcmF3ZXItc2VhcmNoLXRlcm0sXG5cdC5vLWhlYWRlcl9fZHJhd2VyLXNlYXJjaC1zdWJtaXQge1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0aGVpZ2h0OiAzMnB4O1xuXHRcdHBhZGRpbmc6IDhweCAoZGl2KCRfby1oZWFkZXItZHJhd2VyLXBhZGRpbmcteCwgMikpO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkO1xuXHRcdC8vIHByZXZlbnQgem9vbSBvbiBmb2N1c1xuXHRcdGZvbnQtc2l6ZTogMTAwJTtcblx0fVxuXG5cdC5vLWhlYWRlcl9fZHJhd2VyLXNlYXJjaC10ZXJtIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0hlYWRlckdldCgnZHJhd2VyLXNlYXJjaC10ZXJtLWJhY2tncm91bmQnKTtcblx0XHRib3JkZXItY29sb3I6IF9vSGVhZGVyR2V0KCdkcmF3ZXItc2VhcmNoLXRlcm0tYm9yZGVyJyk7XG5cdFx0ZmxleC1ncm93OiAxO1xuXHRcdC8vIG5vcm1hbGl6ZVxuXHRcdGFwcGVhcmFuY2U6IG5vbmU7XG5cdFx0YmFja2dyb3VuZDogd2hpdGU7XG5cdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0Ly8gbWFyZ2luIGNvcGllZCBmcm9tIG8tZm9ybXMgc2luY2UgaW50cm9kdWNpbmcgYSBuZXcgZGVwZW5kZW5jeSB3b3VsZFxuXHRcdC8vIGJlIGEgYnJlYWtpbmcgY2hhbmdlLCB0aGlzIGNvbG91ciBjb3VsZCBnbyBpbiBvLWNvbG9ycyBhcyBhIHVzZWNhc2Vcblx0XHRib3JkZXI6IDFweCBzb2xpZCBvQ29sb3JzQnlOYW1lKCdibGFjay01MCcpO1xuXG5cdFx0Jjpmb2N1cyB7IC8vY3VycmVudGx5IG92ZXJyaWRlbiBieSBvLW5vcm1hbGlzZVxuXHRcdFx0Ym9yZGVyLWNvbG9yOiBfb0hlYWRlckdldCgnZHJhd2VyLXNlYXJjaC10ZXJtLWhpZ2hsaWdodC1ib3JkZXInKTtcblx0XHR9XG5cdH1cblxuXHQuby1oZWFkZXJfX2RyYXdlci1zZWFyY2gtc3VibWl0IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0hlYWRlckdldCgnZHJhd2VyLXNlYXJjaC1zdWJtaXQtYmFja2dyb3VuZCcpO1xuXHRcdGJvcmRlci1jb2xvcjogX29IZWFkZXJHZXQoJ2RyYXdlci1zZWFyY2gtc3VibWl0LWJvcmRlcicpO1xuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCdzZWFyY2gnLCBvQ29sb3JzQnlOYW1lKCd3aGl0ZScpLCAkc2l6ZTogJF9vLWhlYWRlci1pY29uLXNpemUpO1xuXHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRtYXJnaW4tdG9wOiAtKGRpdigkX28taGVhZGVyLWRyYXdlci1wYWRkaW5nLXksIDIpKTtcblx0XHR9XG5cdH1cblxuXHQvL1xuXHQvLyBMaXN0c1xuXHQvL1xuXHQuby1oZWFkZXJfX2RyYXdlci1tZW51IHtcblx0XHRjb2xvcjogX29IZWFkZXJHZXQoJ2RyYXdlci1tZW51LXRleHQnKTtcblx0XHRib3JkZXItY29sb3I6IF9vSGVhZGVyR2V0KCdkcmF3ZXItbWVudS1ib3JkZXInKTtcblx0fVxuXG5cdC5vLWhlYWRlcl9fZHJhd2VyLW1lbnUtLXVzZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IF9vSGVhZGVyR2V0KCdkcmF3ZXItbWVudS11c2VyLWJhY2tncm91bmQnKTtcblx0XHRwYWRkaW5nLWJvdHRvbTogJF9vLWhlYWRlci1kcmF3ZXItcGFkZGluZy15O1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCBfb0hlYWRlckdldCgnZHJhd2VyLW1lbnUtdXNlci1ib3JkZXInKTtcblx0fVxuXG5cdC5vLWhlYWRlcl9fZHJhd2VyLW1lbnUtbGlzdCB7XG5cdFx0bGlzdC1zdHlsZS10eXBlOiBub25lO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdH1cblxuXHQuby1oZWFkZXJfX2RyYXdlci1tZW51LWxpc3QtLWNoaWxkIHtcblx0XHRbZGF0YS1vLWhlYWRlci1kcmF3ZXItLW5vLWpzXSAmIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0W2RhdGEtby1oZWFkZXItZHJhd2VyLS1qc10gJiB7XG5cdFx0XHQvLyBoaWRlIGZyb20gdGhlIG9mZiB0byBhdm9pZCBhbnkgdHJhbnNpdGlvbiBvbiBwYWdlIGxvYWRcblx0XHRcdG1heC1oZWlnaHQ6IDA7XG5cdFx0XHQvLyB0YWtlIHRoZSBjb250ZW50cyBhd2F5IGZyb20gdGFiIG9yZGVyXG5cdFx0XHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0XHR0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMjVzIGVhc2Utb3V0O1xuXG5cdFx0XHQmW2FyaWEtaGlkZGVuPVwiZmFsc2VcIl0ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0hlYWRlckdldCgnZHJhd2VyLW1lbnUtbGlzdC1iYWNrZ3JvdW5kJyk7XG5cdFx0XHRcdC8vIG1hZ2ljIG51bWJlci4uLiB5b3UgY2FuJ3QgdHJhbnNpdGlvbiBiZXR3ZWVuIDAgYW5kIHVua25vd25cblx0XHRcdFx0Ly8gYnV0IGFzIGxvbmcgYXMgdGhpcyBpcyBsYXJnZXIgdGhhbiB0aGUgY29udGVudCBpdCB3aWxsIGRvXG5cdFx0XHRcdG1heC1oZWlnaHQ6IDYwMHB4O1xuXHRcdFx0XHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRcdFx0XHQvLyBhIGJvcmRlciB3b3VsZCBjcmVhdGUgc29tZSBmbGlja2VyeSBsYXlvdXRcblx0XHRcdFx0Ym94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDAgX29IZWFkZXJHZXQoJ2RyYXdlci1tZW51LWJvcmRlcicpLCBpbnNldCAwIDFweCAwIF9vSGVhZGVyR2V0KCdkcmF3ZXItbWVudS1ib3JkZXInKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuby1oZWFkZXJfX2RyYXdlci1tZW51LWl0ZW0ge1xuXHRcdG1hcmdpbi10b3A6IDFweDtcblx0fVxuXG5cdC5vLWhlYWRlcl9fZHJhd2VyLW1lbnUtaXRlbS0tZGl2aWRlIHtcblx0XHRib3JkZXItdG9wOiAycHggc29saWQgX29IZWFkZXJHZXQoJ2RyYXdlci1tZW51LWJvcmRlcicpO1xuXHR9XG5cblx0Lm8taGVhZGVyX19kcmF3ZXItbWVudS1pdGVtLS1oZWFkaW5nIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0hlYWRlckdldCgnZHJhd2VyLW1lbnUtaXRlbS1iYWNrZ3JvdW5kJyk7XG5cdFx0cGFkZGluZzogKGRpdigkX28taGVhZGVyLWRyYXdlci1wYWRkaW5nLXgsIDIpKSAkX28taGVhZGVyLWRyYXdlci1wYWRkaW5nLXg7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0fVxuXG5cdC8vXG5cdC8vIFRvZ2dsZXNcblx0Ly9cblx0Lm8taGVhZGVyX19kcmF3ZXItbWVudS10b2dnbGUtd3JhcHBlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR9XG5cblx0Lm8taGVhZGVyX19kcmF3ZXItbWVudS10b2dnbGUge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDA7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdHdpZHRoOiA0MnB4O1xuXHRcdC8vIG5vcm1hbGl6ZSB0aGUgYnV0dG9uXG5cdFx0cGFkZGluZzogMDtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdGJvcmRlcjogMDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Ly8gdmlzdWFsbHkgaGlkZSB0ZXh0Li4uXG5cdFx0Zm9udC1zaXplOiAwO1xuXG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0Y29udGVudDogJyAnO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDlweDsgLy8gbWFnaWMgbnVtYmVyIHRvIHZlcnRpY2FsbHkgYWxpZ24gaWNvbiBpbiBib3hcblx0XHR9XG5cblx0XHQmW2FyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJdIHtcblx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0Ly8gZG9uJ3QgZG93bmxvYWQgYW5vdGhlciBpY29uLi4uXG5cdFx0XHRcdHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHQvLyBoaWRlIGZvY3VzIG91dGxpbmUgb24gaG92ZXJcblx0XHRcdG91dGxpbmU6IDA7XG5cdFx0fVxuXG5cdFx0W2RhdGEtby1oZWFkZXItZHJhd2VyLS1uby1qc10gJiB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fZHJhd2VyLW1lbnUtdG9nZ2xlLS1zZWxlY3RlZCB7XG5cdFx0YmFja2dyb3VuZDogcmdiYShfb0hlYWRlckdldCgnZHJhd2VyLXNlbGVjdGVkLXRvZ2dsZS1iYWNrZ3JvdW5kJyksIDAuMjUpO1xuXG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgnYXJyb3ctZG93bicsIF9vSGVhZGVyR2V0KCdkcmF3ZXItc2VsZWN0ZWQtdG9nZ2xlLXRleHQnKSwgJHNpemU6ICRfby1oZWFkZXItaWNvbi1zaXplKTtcblx0XHR9XG5cdH1cblxuXHQuby1oZWFkZXJfX2RyYXdlci1tZW51LXRvZ2dsZS0tdW5zZWxlY3RlZCB7XG5cdFx0YmFja2dyb3VuZDogcmdiYShfb0hlYWRlckdldCgnZHJhd2VyLXVuc2VsZWN0ZWQtdG9nZ2xlLWJhY2tncm91bmQnKSwgMC44NSk7XG5cblx0XHQmOmJlZm9yZSB7XG5cdFx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCdhcnJvdy1kb3duJywgX29IZWFkZXJHZXQoJ2RyYXdlci11bnNlbGVjdGVkLXRvZ2dsZS10ZXh0JyksICRzaXplOiAkX28taGVhZGVyLWljb24tc2l6ZSk7XG5cdFx0fVxuXHR9XG5cblx0Ly9cblx0Ly8gTGlua3Ncblx0Ly9cblx0Lm8taGVhZGVyX19kcmF3ZXItbWVudS1saW5rIHtcblx0XHRjb2xvcjogX29IZWFkZXJHZXQoJ2RyYXdlci1tZW51LWxpbmstdGV4dCcpO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBhZGRpbmc6ICRfby1oZWFkZXItZHJhd2VyLXBhZGRpbmcteSAkX28taGVhZGVyLWRyYXdlci1wYWRkaW5nLXg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogX29IZWFkZXJHZXQoJ2RyYXdlci1tZW51LWxpbmstaG92ZXItdGV4dCcpO1xuXHRcdH1cblxuXHRcdFthcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXSArICYge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogX29IZWFkZXJHZXQoJ2RyYXdlci1tZW51LWxpbmstYmFja2dyb3VuZCcpO1xuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fZHJhd2VyLW1lbnUtbGluay0tc2VsZWN0ZWQge1xuXHRcdGNvbG9yOiBfb0hlYWRlckdldCgnZHJhd2VyLW1lbnUtc2VsZWN0ZWQtbGluay10ZXh0Jyk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogX29IZWFkZXJHZXQoJ2RyYXdlci1tZW51LXNlbGVjdGVkLWxpbmstYmFja2dyb3VuZCcpO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzIHtcblx0XHRcdGNvbG9yOiBfb0hlYWRlckdldCgnZHJhd2VyLW1lbnUtc2VsZWN0ZWQtbGluay1ob3Zlci10ZXh0Jyk7XG5cdFx0XHQvL2Fsc28gb3ZlcnJpZGVuIGJ5IG8tbm9ybWFsaXNlXG5cdFx0XHRvdXRsaW5lLWNvbG9yOiBfb0hlYWRlckdldCgnZHJhd2VyLW1lbnUtdGV4dCcpO1xuXHRcdH1cblxuXHRcdFthcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXSArICYge1xuXHRcdFx0Ly8gc3BlY2lmaWNpdHlcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IF9vSGVhZGVyR2V0KCdkcmF3ZXItbWVudS1zZWxlY3RlZC1saW5rLWJhY2tncm91bmQnKTtcblx0XHR9XG5cdH1cblxuXHQuby1oZWFkZXJfX2RyYXdlci1tZW51LWxpbmstLWNoaWxkIHtcblx0XHRwYWRkaW5nLWxlZnQ6IDQwcHg7XG5cdH1cblxuXHQuby1oZWFkZXJfX2RyYXdlci1tZW51LWxpbmstLXNlY29uZGFyeSB7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0fVxuXG5cdC5vLWhlYWRlcl9fZHJhd2VyLW1lbnUtbGluay1kZXRhaWwge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbi10b3A6IDAuMjVlbTtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdH1cbn1cbiIsIi8vLyBFbGV2YXRpb25cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGVsZXZhdGlvbiAtICd1bHRyYScsICdsb3cnLCAnbWlkJyBvciAnaGlnaCdcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3Jcbi8vLyBAb3V0cHV0IEEgcmVwZWF0aW5nIGxpbmVhciBncmFkaWVudCBiYWNrZ3JvdW5kXG5AbWl4aW4gb1Zpc3VhbEVmZmVjdHNTaGFkb3dDb250ZW50KCRlbGV2YXRpb246ICdsb3cnLCAkY29sb3I6ICRvLXZpc3VhbC1lZmZlY3RzLXNoYWRvdy1jb2xvcikge1xuXHRAaWYgJGVsZXZhdGlvbiA9PSAndWx0cmFsb3cnIHtcblx0XHRib3gtc2hhZG93OiAwIDJweCAycHggcmdiYSgkY29sb3IsIDAuMTIpLCAwIDRweCA2cHggcmdiYSgkY29sb3IsIDAuMSk7XG5cdH1cblxuXHRAaWYgJGVsZXZhdGlvbiA9PSAnbG93JyB7XG5cdFx0Ym94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoJGNvbG9yLCAwLjI1KSwgMCA0cHggNnB4IHJnYmEoJGNvbG9yLCAwLjEpO1xuXHR9XG5cblx0QGlmICRlbGV2YXRpb24gPT0gJ21pZCcge1xuXHRcdGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKCRjb2xvciwgMC4yKSwgMCA2cHggMTBweCByZ2JhKCRjb2xvciwgMC4xNSk7XG5cdH1cblxuXHRAaWYgJGVsZXZhdGlvbiA9PSAnaGlnaCcge1xuXHRcdGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKCRjb2xvciwgMC4xNSksIDAgOHB4IDE0cHggcmdiYSgkY29sb3IsIDAuMik7XG5cdH1cbn1cbiIsIkBtaXhpbiBfb0hlYWRlck1lZ2FNZW51KCkge1xuXHRAa2V5ZnJhbWVzIG8taGVhZGVyLW1lZ2Ege1xuXHRcdDAlIHtcblx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0fVxuXHRcdDEwMCUge1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHR9XG5cdH1cblxuXHQuby1oZWFkZXJfX21lZ2Ege1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygwKTtcblx0XHRAaW5jbHVkZSBvVmlzdWFsRWZmZWN0c1NoYWRvd0NvbnRlbnQoJ2xvdycpO1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMTAwJTtcblx0XHRsZWZ0OiBvR3JpZEd1dHRlcignTCcpO1xuXHRcdHJpZ2h0OiBvR3JpZEd1dHRlcignTCcpO1xuXHRcdHotaW5kZXg6ICRfby1oZWFkZXItbWVnYS16LWluZGV4O1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0cGFkZGluZzogJF9vLWhlYWRlci1tZWdhLXBhZGRpbmcteSAwO1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCBfb0hlYWRlckdldCgnaGVhZGVyLWJvcmRlcicpO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IF9vSGVhZGVyR2V0KCdtZWdhLW1lbnUtYmFja2dyb3VuZCcpO1xuXG5cdFx0JlthcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXSxcblx0XHQvLyBjb3JlIGV4cGVyaWVuY2UgZmFsbGJhY2tcblx0XHRbZGF0YS1vLWhlYWRlci0tbm8tanNdIDpob3ZlciA+ICYge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVxuXHR9XG5cblx0Lm8taGVhZGVyX19tZWdhLS1hbmltYXRpb24ge1xuXHRcdGFuaW1hdGlvbjogby1oZWFkZXItbWVnYSAwLjVzIGVhc2Utb3V0O1xuXHR9XG5cblx0Lm8taGVhZGVyX19tZWdhLXdyYXBwZXIge1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHRcdHRhYmxlLWxheW91dDogZml4ZWQ7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0Ly8gbm8gbWFyZ2lucyBmb3IgdGFibGUgY2VsbHMuLi4gYWxzbyBzbyB3ZSBhdm9pZCB1c2luZyA6bGFzdC1jaGlsZCBmb3Igb2xkIElFXG5cdFx0Ym9yZGVyLXNwYWNpbmc6ICRfby1oZWFkZXItbWVnYS1wYWRkaW5nLXggMDtcblx0XHRtYXJnaW4tbGVmdDogJF9vLWhlYWRlci1tZWdhLXBhZGRpbmcteCAqIC0xO1xuXHR9XG5cblx0Lm8taGVhZGVyX19tZWdhLWNvbHVtbiB7XG5cdFx0ZGlzcGxheTogdGFibGUtY2VsbDtcblx0XHRwYWRkaW5nLWxlZnQ6ICRfby1oZWFkZXItbWVnYS1wYWRkaW5nLXg7XG5cdFx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBfb0hlYWRlckdldCgnaGVhZGVyLWJvcmRlcicpO1xuXG5cdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItbGVmdDogMDtcblx0XHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHR9XG5cdH1cblxuXHQuby1oZWFkZXJfX21lZ2EtY29sdW1uLS1hcnRpY2xlcyB7XG5cblx0XHQuby1oZWFkZXJfX21lZ2EtaXRlbSB7XG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ2Fycm93LXJpZ2h0Jywgb0NvbG9yc0J5TmFtZSgnY2xhcmV0JyksICRzaXplOiAkX28taGVhZGVyLWljb24tc2l6ZS1zbWFsbCk7XG5cdFx0XHRcdHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcblx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lm8taGVhZGVyX19tZWdhLWxpbmsge1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0Lm8taGVhZGVyX19tZWdhLWNvbHVtbi0tc3Vic2VjdGlvbnMge1xuXHRcdHdpZHRoOiAzMCU7XG5cblx0XHQuby1oZWFkZXJfX21lZ2EtbGlzdCB7XG5cdFx0XHRjb2x1bW5zOiAyO1xuXHRcdH1cblxuXHRcdC5vLWhlYWRlcl9fbWVnYS1pdGVtIHtcblx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fbWVnYS1oZWFkaW5nIHtcblx0XHRtYXJnaW46IDAgMCAkX28taGVhZGVyLXBhZGRpbmcteTtcblx0XHRmb250LXNpemU6IGluaGVyaXQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0fVxuXG5cdC5vLWhlYWRlcl9fbWVnYS1saXN0IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMDtcblx0XHRsaXN0LXN0eWxlOiBub25lO1xuXHR9XG5cblx0Lm8taGVhZGVyX19tZWdhLWl0ZW0ge1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdH1cblxuXHQuby1oZWFkZXJfX21lZ2EtbGluayB7XG5cdFx0QGluY2x1ZGUgX29IZWFkZXJMaW5rKCk7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRcdH1cblx0fVxufVxuIiwiQG1peGluIF9vSGVhZGVyU3RpY2t5KCkge1xuXHQuby1oZWFkZXItLXN0aWNreSB7XG5cdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHotaW5kZXg6ICRfby1oZWFkZXItc3RpY2t5LXotaW5kZXg7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcblx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zNXMgJG8tdmlzdWFsLWVmZmVjdHMtdGltaW5nLXNsaWRlO1xuXHRcdHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG5cblx0XHQvLyBiZWNhdXNlIHRoZSB0cmFuc2l0aW9uIGlzIHNsaWdodGx5IGJvdW5jeSBpdCB3aWxsIHJldmVhbCBzb21lIG9mIHRoZSBiYWNrZ3JvdW5kXG5cdFx0Ym9yZGVyLXRvcDogMzBweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0XHRtYXJnaW4tdG9wOiAtMzBweDtcblxuXHRcdEBtZWRpYSBwcmludCB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlci0tc3RpY2t5LWFjdGl2ZSB7XG5cdFx0QGluY2x1ZGUgb1Zpc3VhbEVmZmVjdHNTaGFkb3dDb250ZW50KCdtaWQnKTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG5cdH1cbn1cbiIsIkBtaXhpbiBfb0hlYWRlclNpbXBsZSgpIHtcblx0Lm8taGVhZGVyLS1zaW1wbGUge1xuXHRcdC8vIGZpeCBoZWlnaHRzXG5cdFx0Lm8taGVhZGVyX190b3Atd3JhcHBlciB7XG5cdFx0XHRoZWlnaHQ6ICRvLWhlYWRlci1zdGlja3ktaGVpZ2h0O1xuXHRcdH1cblxuXHRcdC5vLWhlYWRlcl9fdG9wLWxpbmsge1xuXHRcdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNHB4O1xuXHRcdH1cblxuXHRcdC5vLWhlYWRlcl9fdG9wLWxvZ28ge1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cblx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCdMJykge1xuXHRcdFx0XHRAaW5jbHVkZSBfb0hlYWRlckxvZ29TaXplKCdNJyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lm8taGVhZGVyX190b3AtdGFrZW92ZXIgLm8taGVhZGVyX19uYXYtbGluayB7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0bGluZS1oZWlnaHQ6ICRvLWhlYWRlci1zdGlja3ktaGVpZ2h0O1xuXHRcdH1cblx0fVxufVxuIiwiQG1peGluIF9vSGVhZGVyU3ViYnJhbmQoJF9vLWhlYWRlci1zdWJicmFuZC1iZy1jb2xvcjogIzQ0M2M0Nykge1xuXHQuby1oZWFkZXJfX3N1YmJyYW5kIHtcblx0XHRoZWlnaHQ6IDU1cHggLSAoJF9vLWhlYWRlci1wYWRkaW5nLXkqMik7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJF9vLWhlYWRlci1zdWJicmFuZC1iZy1jb2xvcjtcblx0XHRwYWRkaW5nOiAkX28taGVhZGVyLXBhZGRpbmcteSAwO1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHRcdHdpZHRoOiAxMDAlO1xuXG5cdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oTSkge1xuXHRcdFx0aGVpZ2h0OiA4MHB4IC0gKCRfby1oZWFkZXItcGFkZGluZy15KjIpO1xuXHRcdH1cblx0fVxuXG5cdC5vLWhlYWRlcl9fc3ViYnJhbmQtbG9nbyB7XG5cdFx0ZGlzcGxheTogdGFibGUtY2VsbDtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdGJvcmRlcjogMDtcblx0XHRtYXJnaW46IDE2cHggYXV0bztcblx0XHRiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogNTAlO1xuXHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdH1cbn1cbiIsIkBtaXhpbiBfb0hlYWRlclRyYW5zcGFyZW50KCkge1xuXHQuby1oZWFkZXItLXRyYW5zcGFyZW50IHtcblx0XHRjb2xvcjogX29IZWFkZXJHZXQoJ2hlYWRlci10ZXh0JywgJGZyb206ICd0cmFuc3BhcmVudCcpO1xuXHRcdGJvcmRlci1jb2xvcjogX29IZWFkZXJHZXQoJ2hlYWRlci1ib3JkZXInLCAkZnJvbTogJ3RyYW5zcGFyZW50Jyk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogX29IZWFkZXJHZXQoJ2hlYWRlci1iYWNrZ3JvdW5kJywgJGZyb206ICd0cmFuc3BhcmVudCcpO1xuXG5cdFx0Lm8taGVhZGVyX19yb3cge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogX29IZWFkZXJHZXQoJ2hlYWRlci1ib3JkZXInLCAkZnJvbTogJ3RyYW5zcGFyZW50Jyk7XG5cdFx0fVxuXG5cdFx0Lm8taGVhZGVyX190b3AtbGluay0tbWVudTpiZWZvcmUge1xuXHRcdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgnaGFtYnVyZ2VyJywgX29IZWFkZXJHZXQoJ2hlYWRlci1pY29uJywgJGZyb206ICd0cmFuc3BhcmVudCcpLCAkc2l6ZTogbnVsbCwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0XHR9XG5cblx0XHQuby1oZWFkZXJfX3RvcC1saW5rLS1zZWFyY2g6YmVmb3JlIHtcblx0XHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ3NlYXJjaCcsIF9vSGVhZGVyR2V0KCdoZWFkZXItaWNvbicsICRmcm9tOiAndHJhbnNwYXJlbnQnKSwgJHNpemU6IG51bGwsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG5cdFx0fVxuXG5cdFx0Lm8taGVhZGVyX190b3AtbGluay0tbXlmdDpiZWZvcmUge1xuXHRcdFx0QGluY2x1ZGUgX29IZWFkZXJCcmFuZEltYWdlKCdicmFuZC1teWZ0JywgX29IZWFkZXJHZXQoJ2hlYWRlci1pY29uJywgJGZyb206ICd0cmFuc3BhcmVudCcpLCA1Mik7XG5cdFx0fVxuXG5cdFx0Lm8taGVhZGVyX190b3AtbG9nbyB7XG5cdFx0XHRAaW5jbHVkZSBfb0hlYWRlckJyYW5kSW1hZ2UoJ2JyYW5kLWZ0LW1hc3RoZWFkJywgX29IZWFkZXJHZXQoJ2hlYWRlci1pY29uJywgJGZyb206ICd0cmFuc3BhcmVudCcpLCA1MDApO1xuXHRcdH1cblxuXHRcdC5vLWhlYWRlcl9fbmF2LWJ1dHRvbiB7XG5cdFx0XHRAaW5jbHVkZSBvQnV0dG9uc0NvbnRlbnQoKFxuXHRcdFx0XHQndHlwZSc6ICdwcmltYXJ5Jyxcblx0XHRcdFx0J3RoZW1lJzogJ2ludmVyc2UnXG5cdFx0XHQpLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UpO1xuXHRcdH1cblxuXHRcdC5vLWhlYWRlcl9fbmF2LWxpbmssXG5cdFx0Lm8taGVhZGVyX19hbm9uLWxpbmsge1xuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGNvbG9yOiBfb0hlYWRlckdldCgnbGluay1ob3Zlci10ZXh0JywgJGZyb206ICd0cmFuc3BhcmVudCcpO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmhvdmVyOmFmdGVyIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogX29IZWFkZXJHZXQoJ2xpbmstaG92ZXItdGV4dCcsICRmcm9tOiAndHJhbnNwYXJlbnQnKTtcblx0XHRcdH1cblxuXHRcdFx0Ji0taGlnaGxpZ2h0LFxuXHRcdFx0JlthcmlhLWN1cnJlbnRdIHtcblx0XHRcdFx0Y29sb3I6IF9vSGVhZGVyR2V0KCdsaW5rLWhpZ2hsaWdodC10ZXh0JywgJGZyb206ICd0cmFuc3BhcmVudCcpO1xuXHRcdFx0fVxuXG5cdFx0XHQmLS1oaWdobGlnaHQ6YWZ0ZXIsXG5cdFx0XHQmW2FyaWEtY3VycmVudF06YWZ0ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0hlYWRlckdldCgnbGluay1oaWdobGlnaHQtdGV4dCcsICRmcm9tOiAndHJhbnNwYXJlbnQnKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIkBtZWRpYSBwcmludHsuby1hZHN7ZGlzcGxheTpub25lICFpbXBvcnRhbnR9fS5vLWFkcyxbZGF0YS1vLWFkcy1uYW1lXXthbmltYXRpb24tbmFtZTpub25lfS5vLWFkcyBpZnJhbWUsW2RhdGEtby1hZHMtbmFtZV0gaWZyYW1le2JhY2tncm91bmQ6bm9uZSB0cmFuc3BhcmVudH0uby1hZHMtLWNlbnRlcnt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyfS5vLWFkcy0tZW1wdHl7d2lkdGg6MDtoZWlnaHQ6MDtkaXNwbGF5Om5vbmU7dmlzaWJpbGl0eTpoaWRkZW59Lm8tYWRzLS1sYWJlbC1sZWZ0IC5vLWFkc19faW5uZXI6OmJlZm9yZXtjb250ZW50Olwi4pa8IEFkdmVydGlzZW1lbnQg4pa8XCI7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTRweDt0ZXh0LWFsaWduOlwibGVmdFwifS5vLWFkcy0tbGFiZWwtcmlnaHQgLm8tYWRzX19pbm5lcjo6YmVmb3Jle2NvbnRlbnQ6XCLilrwgQWR2ZXJ0aXNlbWVudCDilrxcIjtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxNHB4O3RleHQtYWxpZ246XCJyaWdodFwifS5vLWFkcy0tbGFiZWwtY2VudGVyIC5vLWFkc19faW5uZXI6OmJlZm9yZXtjb250ZW50Olwi4pa8IEFkdmVydGlzZW1lbnQg4pa8XCI7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTRweDt0ZXh0LWFsaWduOlwiY2VudGVyXCJ9Lm8tYWRzLS10cmFuc2l0aW9ue3dpbGwtY2hhbmdlOm1pbi1oZWlnaHQscGFkZGluZyxoZWlnaHQ7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246aGVpZ2h0IC4zNXMgY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSksbWluLWhlaWdodCAuMzVzIGN1YmljLWJlemllcigwLjIxNSwgMC42MSwgMC4zNTUsIDEpLHBhZGRpbmcgLjM1cyBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKX0uby1hZHMtLWxhYmVsLXdpdGgtYm9yZGVyc3tmb250LXNpemU6MTRweDt0ZXh0LWFsaWduOlwibGVmdFwifS5vLWFkcy0tbGFiZWwtd2l0aC1ib3JkZXJzOmJlZm9yZSwuby1hZHMtLWxhYmVsLXdpdGgtYm9yZGVyczphZnRlcnt0ZXh0LWFsaWduOmxlZnQ7ZGlzcGxheTpibG9jaztib3JkZXItY29sb3I6I2NjYzFiNztib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjB9Lm8tYWRzLS1sYWJlbC13aXRoLWJvcmRlcnM6YmVmb3Jle2NvbnRlbnQ6XCJBZHZlcnRpc2VtZW50XCI7cGFkZGluZzoyNXB4IDAgMjBweDttYXJnaW4tdG9wOjEyLjVweDtib3JkZXItdG9wLXdpZHRoOjFweH0uby1hZHMtLWxhYmVsLXdpdGgtYm9yZGVyczphZnRlcntjb250ZW50OlwiXCI7cGFkZGluZy10b3A6MjVweDtib3JkZXItYm90dG9tLXdpZHRoOjFweH0uby1hZHMtLWxhYmVsLXdpdGgtYm9yZGVycy5vLWFkcy0tbGFiZWwtd2l0aC1ib3JkZXJzLS1sZWZ0OjpiZWZvcmUsLm8tYWRzLS1sYWJlbC13aXRoLWJvcmRlcnMuby1hZHMtLWxhYmVsLXdpdGgtYm9yZGVycy0tbGVmdDo6YWZ0ZXIsLm8tYWRzLS1sYWJlbC13aXRoLWJvcmRlcnMuby1hZHMtLWxhYmVsLXdpdGgtYm9yZGVycy0tY2VudGVyOjpiZWZvcmUsLm8tYWRzLS1sYWJlbC13aXRoLWJvcmRlcnMuby1hZHMtLWxhYmVsLXdpdGgtYm9yZGVycy0tY2VudGVyOjphZnRlciwuby1hZHMtLWxhYmVsLXdpdGgtYm9yZGVycy5vLWFkcy0tbGFiZWwtd2l0aC1ib3JkZXJzLS1yaWdodDo6YmVmb3JlLC5vLWFkcy0tbGFiZWwtd2l0aC1ib3JkZXJzLm8tYWRzLS1sYWJlbC13aXRoLWJvcmRlcnMtLXJpZ2h0OjphZnRlcnt0ZXh0LWFsaWduOmluaGVyaXR9Lm8tYWRzLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2NjYzFiN30uby1hZHMtLXNsYXRlLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojMjYyYTMzfS5vLWFkcy0tcGxhY2Vob2xkZXJ7YmFja2dyb3VuZDp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvaW1hZ2UvdjIvaW1hZ2VzL3Jhdy9mdGljb246bW9yZT9zb3VyY2U9bmV4dCZ0aW50PTk5OTk5OSw5OTk5OTlcIikgNTAlLzI1JSBuby1yZXBlYXQgdHJhbnNwYXJlbnR9Lm8tYWRzLS1yZXNlcnZlLTkwe2JveC1zaXppbmc6Y29udGVudC1ib3g7bWluLWhlaWdodDo5MHB4O2hlaWdodDo5MHB4O3BhZGRpbmc6MTBweCAwO292ZXJmbG93OmhpZGRlbn0uby1hZHMtLXJlc2VydmUtOTBbZGF0YS1vLWFkcy1sb2FkZWQ9TWVkaXVtUmVjdGFuZ2xlXSwuby1hZHMtLXJlc2VydmUtOTBbZGF0YS1vLWFkcy1sb2FkZWQ9QmlsbGJvYXJkXXtoZWlnaHQ6MjUwcHh9Lm8tYWRzLS1yZXNlcnZlLTI1MHtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2hlaWdodDoyNTBweDttaW4taGVpZ2h0OjI1MHB4O3BhZGRpbmc6MTBweCAwO292ZXJmbG93OmhpZGRlbn0uby1hZHMtLXJlc2VydmUtMjUwW2RhdGEtby1hZHMtbG9hZGVkPUxlYWRlcmJvYXJkXSAuby1hZHNfX291dGVyLC5vLWFkcy0tcmVzZXJ2ZS0yNTBbZGF0YS1vLWFkcy1sb2FkZWQ9U3VwZXJMZWFkZXJib2FyZF0gLm8tYWRzX19vdXRlcntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6NTAlO21hcmdpbi10b3A6LTQ1cHh9Lm8tYWRzLS1yZXNlcnZlLTI1MFtkYXRhLW8tYWRzLWxvYWRlZD1MZWFkZXJib2FyZF1bZGF0YS1vLWFkcy10YXJnZXRpbmc9XCJwb3M9dG9wO1wiXSAuby1hZHNfX291dGVyLC5vLWFkcy0tcmVzZXJ2ZS0yNTBbZGF0YS1vLWFkcy1sb2FkZWQ9U3VwZXJMZWFkZXJib2FyZF1bZGF0YS1vLWFkcy10YXJnZXRpbmc9XCJwb3M9dG9wO1wiXSAuby1hZHNfX291dGVye3RvcDoxMDAlO21hcmdpbi10b3A6LTkwcHh9OnJvb3RbZGF0YS1wZXJmLWphbmt5PWNhbG0tbWlkZGxlXSBbZGF0YS1vLWFkcy1sb2FkZWQ9TGVhZGVyYm9hcmRdLm8tYWRzLS1yZXNlcnZlLTI1MFtkYXRhLW8tYWRzLXRhcmdldGluZz1cInBvcz10b3A7XCJdIC5vLWFkc19fb3V0ZXIsOnJvb3RbZGF0YS1wZXJmLWphbmt5PWNhbG0tbWlkZGxlXSBbZGF0YS1vLWFkcy1sb2FkZWQ9U3VwZXJMZWFkZXJib2FyZF0uby1hZHMtLXJlc2VydmUtMjUwW2RhdGEtby1hZHMtdGFyZ2V0aW5nPVwicG9zPXRvcDtcIl0gLm8tYWRzX19vdXRlcnt0b3A6NTAlO21hcmdpbi10b3A6LTQ1cHh9Lm8tYWRzLS1yZXNlcnZlLTkwW2RhdGEtby1hZHMtbG9hZGVkPVJlc3BvbnNpdmVdLC5vLWFkcy0tcmVzZXJ2ZS0yNTBbZGF0YS1vLWFkcy1sb2FkZWQ9UmVzcG9uc2l2ZV17Ym94LXNpemluZzpjb250ZW50LWJveDtoZWlnaHQ6MjUwcHg7bWluLWhlaWdodDoyNTBweDtwYWRkaW5nOjEwcHggMH1AbWVkaWEobWF4LXdpZHRoOiA5MGVtKXsuby1hZHMtLXJlc2VydmUtOTBbZGF0YS1vLWFkcy1sb2FkZWQ9UmVzcG9uc2l2ZV0sLm8tYWRzLS1yZXNlcnZlLTI1MFtkYXRhLW8tYWRzLWxvYWRlZD1SZXNwb25zaXZlXXtoZWlnaHQ6YXV0bzttaW4taGVpZ2h0OjE3LjM0dnc7cGFkZGluZzowfX1AbWVkaWEobWF4LXdpZHRoOiAzMC42MTVlbSl7Lm8tYWRzLS1yZXNlcnZlLTkwW2RhdGEtby1hZHMtbG9hZGVkPVJlc3BvbnNpdmVdLC5vLWFkcy0tcmVzZXJ2ZS0yNTBbZGF0YS1vLWFkcy1sb2FkZWQ9UmVzcG9uc2l2ZV17aGVpZ2h0OmF1dG87bWluLWhlaWdodDo0OC4xdnd9fWRpdltpZF49Z29vZ2xlX2Fkc19pZnJhbWVfXXttYXJnaW46MCBhdXRvfSIsIiRvLWFkcy1pcy1zaWxlbnQ6IHRydWUgIWRlZmF1bHQ7XG5cbkBpbXBvcnQgXCJvLWdyaWQvbWFpblwiO1xuQGltcG9ydCBcIm8tdmlzdWFsLWVmZmVjdHMvbWFpblwiO1xuXG4kYWQtbWF4LXJlc3BvbnNpdmUtd2lkdGg6IDE0NDBweDtcblxuQG1peGluIG9BZHMge1xuXHRhbmltYXRpb24tbmFtZTogbm9uZTtcblx0Ly9yZW1vdmUgYmFja2dyb3VuZCBmcm9tIGlmcmFtZXMuXG5cdGlmcmFtZSB7XG5cdFx0YmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcblx0fVxufVxuXG5AbWl4aW4gb0Fkc0NlbnRlciB7XG5cdHdpZHRoOiAxMDAlO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbkBtaXhpbiBvQWRzRW1wdHkge1xuXHR3aWR0aDogMDtcblx0aGVpZ2h0OiAwO1xuXHRkaXNwbGF5OiBub25lO1xuXHR2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBvQWRzTGFiZWwoJHBvczogJ2xlZnQnKSB7XG5cdC5vLWFkc19faW5uZXI6OmJlZm9yZSB7XG5cdFx0Y29udGVudDogXCLilrwgQWR2ZXJ0aXNlbWVudCDilrxcIjtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0dGV4dC1hbGlnbjogJHBvcztcblx0fVxufVxuXG5AbWl4aW4gb0Fkc1Jlc2VydmU5MCB7XG5cdGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXHRtaW4taGVpZ2h0OiA5MHB4O1xuXHRoZWlnaHQ6IDkwcHg7XG5cdHBhZGRpbmc6IDEwcHggMDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHQmW2RhdGEtby1hZHMtbG9hZGVkPVwiTWVkaXVtUmVjdGFuZ2xlXCJdLFxuXHQmW2RhdGEtby1hZHMtbG9hZGVkPVwiQmlsbGJvYXJkXCJdIHtcblx0XHRoZWlnaHQ6IDI1MHB4O1xuXHR9XG59XG5cbkBtaXhpbiBvQWRzUmVzZXJ2ZTI1MCB7XG5cdGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXHRoZWlnaHQ6IDI1MHB4O1xuXHRtaW4taGVpZ2h0OiAyNTBweDtcblx0cGFkZGluZzogMTBweCAwO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXG5cdCRiYXNlU2VsZWN0b3I6ICY7XG5cblx0JltkYXRhLW8tYWRzLWxvYWRlZD1cIkxlYWRlcmJvYXJkXCJdLFxuXHQmW2RhdGEtby1hZHMtbG9hZGVkPVwiU3VwZXJMZWFkZXJib2FyZFwiXSB7XG5cdFx0Lm8tYWRzX19vdXRlciB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdG1hcmdpbi10b3A6IC00NXB4O1xuXHRcdH1cblxuXHRcdCZbZGF0YS1vLWFkcy10YXJnZXRpbmc9XCJwb3M9dG9wO1wiXSAuby1hZHNfX291dGVyIHtcblx0XHRcdHRvcDogMTAwJTtcblx0XHRcdG1hcmdpbi10b3A6IC05MHB4O1xuXHRcdH1cblx0fVxuXG5cdEBhdC1yb290OnJvb3RbZGF0YS1wZXJmLWphbmt5PVwiY2FsbS1taWRkbGVcIl0ge1xuXHRcdFtkYXRhLW8tYWRzLWxvYWRlZD1cIkxlYWRlcmJvYXJkXCJdLFxuXHRcdFtkYXRhLW8tYWRzLWxvYWRlZD1cIlN1cGVyTGVhZGVyYm9hcmRcIl0ge1xuXHRcdFx0JiN7JGJhc2VTZWxlY3Rvcn1bZGF0YS1vLWFkcy10YXJnZXRpbmc9XCJwb3M9dG9wO1wiXSAuby1hZHNfX291dGVyIHtcblx0XHRcdFx0dG9wOiA1MCU7XG5cdFx0XHRcdG1hcmdpbi10b3A6IC00NXB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5AbWl4aW4gb0Fkc1Jlc3BvbnNpdmVSZXNlcnZlIHtcblx0XHQmW2RhdGEtby1hZHMtbG9hZGVkPVwiUmVzcG9uc2l2ZVwiXSB7XG5cdFx0XHRib3gtc2l6aW5nOiBjb250ZW50LWJveDtcblx0XHRcdGhlaWdodDogMjUwcHg7XG5cdFx0XHRtaW4taGVpZ2h0OiAyNTBweDtcblx0XHRcdHBhZGRpbmc6IDEwcHggMDtcblx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCR1bnRpbDogJGFkLW1heC1yZXNwb25zaXZlLXdpZHRoKSB7XG5cdFx0XHRcdGhlaWdodDogYXV0bztcblx0XHRcdFx0bWluLWhlaWdodDogY2FsYygxMDB2dyAqIDAuMTczNCk7XG5cdFx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHR9XG5cdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkdW50aWw6IFMpIHtcblx0XHRcdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdFx0XHRtaW4taGVpZ2h0OiBjYWxjKDEwMHZ3ICogMC40ODEpO1xuXHRcdFx0fVxuXHRcdH1cbn1cblxuQG1peGluIG9BZHNUcmFuc2l0aW9uIHtcblx0d2lsbC1jaGFuZ2U6IG1pbi1oZWlnaHQsIHBhZGRpbmcsIGhlaWdodDtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcblx0dHJhbnNpdGlvbjogaGVpZ2h0IDAuMzVzICRvLXZpc3VhbC1lZmZlY3RzLXRpbWluZy1leHBhbmQsXG5cdG1pbi1oZWlnaHQgMC4zNXMgJG8tdmlzdWFsLWVmZmVjdHMtdGltaW5nLWV4cGFuZCxcblx0cGFkZGluZyAwLjM1cyAkby12aXN1YWwtZWZmZWN0cy10aW1pbmctZXhwYW5kO1xufVxuXG5AbWl4aW4gb0Fkc0xhYmVsV2l0aEJvcmRlcnMoJHBvczogJ2xlZnQnKSB7XG5cdCRwYWRkaW5nOiAyNXB4O1xuXHRmb250LXNpemU6IDE0cHg7XG5cblx0JjpiZWZvcmUsXG5cdCY6YWZ0ZXIge1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Ym9yZGVyLWNvbG9yOiAjY2NjMWI3O1xuXHRcdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdFx0Ym9yZGVyLXdpZHRoOiAwO1xuXHR9XG5cblx0JjpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6ICdBZHZlcnRpc2VtZW50Jztcblx0XHRwYWRkaW5nOiAkcGFkZGluZyAwICgkcGFkZGluZyAtIDVweCk7XG5cdFx0bWFyZ2luLXRvcDogJHBhZGRpbmcgLyAyO1xuXHRcdGJvcmRlci10b3Atd2lkdGg6IDFweDtcblx0fVxuXG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdHBhZGRpbmctdG9wOiAkcGFkZGluZztcblx0XHRib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XG5cdH1cblxuXHR0ZXh0LWFsaWduOiAkcG9zO1xufVxuXG5AaW1wb3J0IFwiby12aXN1YWwtZWZmZWN0cy9tYWluXCI7XG5AaW1wb3J0IFwiby1jb2xvcnMvbWFpblwiO1xuXG5AaWYoJG8tYWRzLWlzLXNpbGVudCA9PSBmYWxzZSkge1xuXHRAbWVkaWEgcHJpbnQge1xuXHRcdC5vLWFkcyB7XG5cdFx0XHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8taW1wb3J0YW50XG5cdFx0fVxuXHR9XG5cdC5vLWFkcyxcblx0W2RhdGEtby1hZHMtbmFtZV0ge1xuXHRcdEBpbmNsdWRlIG9BZHMoKTtcblx0fVxuXG5cdC5vLWFkcy0tY2VudGVyIHtcblx0XHRAaW5jbHVkZSBvQWRzQ2VudGVyKCk7XG5cdH1cblxuXHQuby1hZHMtLWVtcHR5IHtcblx0XHRAaW5jbHVkZSBvQWRzRW1wdHkoKTtcblx0fVxuXG5cdC5vLWFkcy0tbGFiZWwtbGVmdCB7XG5cdFx0QGluY2x1ZGUgb0Fkc0xhYmVsKCk7XG5cdH1cblxuXHQuby1hZHMtLWxhYmVsLXJpZ2h0IHtcblx0XHRAaW5jbHVkZSBvQWRzTGFiZWwoXCJyaWdodFwiKTtcblx0fVxuXG5cdC5vLWFkcy0tbGFiZWwtY2VudGVyIHtcblx0XHRAaW5jbHVkZSBvQWRzTGFiZWwoXCJjZW50ZXJcIik7XG5cdH1cblxuXHQuby1hZHMtLXRyYW5zaXRpb24ge1xuXHRcdEBpbmNsdWRlIG9BZHNUcmFuc2l0aW9uKCk7XG5cdH1cblxuXHQuby1hZHMtLWxhYmVsLXdpdGgtYm9yZGVycyB7XG5cdFx0QGluY2x1ZGUgb0Fkc0xhYmVsV2l0aEJvcmRlcnMoKTtcblxuICAgICAgICAmLm8tYWRzLS1sYWJlbC13aXRoLWJvcmRlcnMtLWxlZnQsXG4gICAgICAgICYuby1hZHMtLWxhYmVsLXdpdGgtYm9yZGVycy0tY2VudGVyLFxuICAgICAgICAmLm8tYWRzLS1sYWJlbC13aXRoLWJvcmRlcnMtLXJpZ2h0IHtcbiAgICAgICAgICAgICY6OmJlZm9yZSxcbiAgICAgICAgICAgICY6OmFmdGVyIHtcblx0XHRcdCAgICB0ZXh0LWFsaWduOiBpbmhlcml0O1xuXHRcdCAgICB9O1xuXHQgICAgfVxuXHR9XG5cblx0Lm8tYWRzLS1iYWNrZ3JvdW5kIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBvQ29sb3JzQnlOYW1lKCdibGFjay0yMCcpO1xuXHR9XG5cblx0Lm8tYWRzLS1zbGF0ZS1iYWNrZ3JvdW5kIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBvQ29sb3JzQnlOYW1lKCdzbGF0ZScpO1xuXHR9XG5cblx0Lm8tYWRzLS1wbGFjZWhvbGRlciB7XG5cdFx0YmFja2dyb3VuZDogdXJsKCdodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvaW1hZ2UvdjIvaW1hZ2VzL3Jhdy9mdGljb246bW9yZT9zb3VyY2U9bmV4dCZ0aW50PTk5OTk5OSw5OTk5OTknKSA1MCUvMjUlIG5vLXJlcGVhdCB0cmFuc3BhcmVudDtcblx0fVxuXG5cdC5vLWFkcy0tcmVzZXJ2ZS05MCB7XG5cdFx0QGluY2x1ZGUgb0Fkc1Jlc2VydmU5MCgpO1xuXHR9XG5cblx0Lm8tYWRzLS1yZXNlcnZlLTI1MCB7XG5cdFx0QGluY2x1ZGUgb0Fkc1Jlc2VydmUyNTAoKTtcblx0fVxuXG5cdC5vLWFkcy0tcmVzZXJ2ZS05MCxcblx0Lm8tYWRzLS1yZXNlcnZlLTI1MCB7XG5cdFx0QGluY2x1ZGUgb0Fkc1Jlc3BvbnNpdmVSZXNlcnZlKCk7XG5cdH1cblxuICAvLyBIQUNLOiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBvdmVyY29tZSBhbiBpc3N1ZSBpbnRyb2R1Y2VkeSBieSBHUFQgdGhhdCBtaXNwbGFjZXMgYWRzXG4gIC8vIFNlZTogaHR0cHM6Ly9hZHMuZ29vZ2xlLmNvbS9zdGF0dXMjaGw9ZW4mdj1pc3N1ZSZzaWQ9MjQmaWlkPTY3OTBkZWY5MTVkOTU5ZjYxZjU2ZmI3MDA1Y2JhMmNjXG5cbiAgZGl2W2lkXj0nZ29vZ2xlX2Fkc19pZnJhbWVfJ10geyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgfVxuXG5cdCRvLWFkcy1pcy1zaWxlbnQ6IHRydWUgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjsgLy8gRml4ZXMgYW4gaXNzdWUgd2hlcmUgUnVieSBsb2NhbGUgaXMgbm90IHNldCBwcm9wZXJseVxuICAgICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvcHVsbC8xMFxuXG5AaW1wb3J0IFwiQGZpbmFuY2lhbC10aW1lcy9tYXRoXCI7XG5cbi8vLyBCYXNlIGZvbnQgc2l6ZSBvbiB0aGUgYDxib2R5PmAgZWxlbWVudFxuLy8vXG4vLy8gRG8gbm90IG92ZXJyaWRlIHRoaXMgdmFsdWUsIG9yIHRoaW5ncyB3aWxsIGJyZWFrXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjJcbi8vLyBAZGVwcmVjYXRlZCBUaGlzIHNldHRpbmcgd2lsbCBiZSByZW1vdmVkIGluIHNhc3MtbXEgdjYuMC4wXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTnVtYmVyICh1bml0KVxuJG1xLWJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLy8gUmVzcG9uc2l2ZSBtb2RlXG4vLy9cbi8vLyBTZXQgdG8gYGZhbHNlYCB0byBlbmFibGUgc3VwcG9ydCBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBAbWVkaWEgcXVlcmllcyxcbi8vLyAoSUUgPD0gOCwgRmlyZWZveCA8PSAzLCBPcGVyYSA8PSA5KVxuLy8vXG4vLy8gWW91IGNvdWxkIGNyZWF0ZSBhIHN0eWxlc2hlZXQgc2VydmVkIGV4Y2x1c2l2ZWx5IHRvIG9sZGVyIGJyb3dzZXJzLFxuLy8vIHdoZXJlIEBtZWRpYSBxdWVyaWVzIGFyZSByYXN0ZXJpemVkXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIG9sZC1pZS5zY3NzXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9mZiBEaXNhYmxlZCByZXNwb25zaXZlIG1vZGUgZG9jdW1lbnRhdGlvblxuJG1xLXJlc3BvbnNpdmU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGxpc3Rcbi8vL1xuLy8vIE5hbWUgeW91ciBicmVha3BvaW50cyBpbiBhIHdheSB0aGF0IGNyZWF0ZXMgYSB1YmlxdWl0b3VzIGxhbmd1YWdlXG4vLy8gYWNyb3NzIHRlYW0gbWVtYmVycy4gSXQgd2lsbCBpbXByb3ZlIGNvbW11bmljYXRpb24gYmV0d2VlblxuLy8vIHN0YWtlaG9sZGVycywgZGVzaWduZXJzLCBkZXZlbG9wZXJzLCBhbmQgdGVzdGVycy5cbi8vL1xuLy8vIEB0eXBlIE1hcFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLWJyZWFrcG9pbnRzOiAoXG4gICAgbW9iaWxlOiAgMzIwcHgsXG4gICAgdGFibGV0OiAgNzQwcHgsXG4gICAgZGVza3RvcDogOTgwcHgsXG4gICAgd2lkZTogICAgMTMwMHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gU3RhdGljIGJyZWFrcG9pbnQgKGZvciBmaXhlZC13aWR0aCBsYXlvdXRzKVxuLy8vXG4vLy8gRGVmaW5lIHRoZSBicmVha3BvaW50IGZyb20gJG1xLWJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkXG4vLy8gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0IHdpZHRoIGZvciB0aGUgZml4ZWQtd2lkdGggbGF5b3V0XG4vLy8gKGkuZS4gd2hlbiAkbXEtcmVzcG9uc2l2ZSBpcyBzZXQgdG8gJ2ZhbHNlJykgaW4gYSBvbGQtaWUuc2Nzc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyB0YWJsZXQtb25seS5zY3NzXG4vLy8gIC8vXG4vLy8gIC8vIElnbm9yZSBhbGwgc3R5bGVzIGFib3ZlIHRhYmxldCBicmVha3BvaW50LFxuLy8vICAvLyBhbmQgZml4IHRoZSBzdHlsZXMgKHN1Y2ggYXMgdGhlIGxheW91dCkgYXQgdGFibGV0IHdpZHRoXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgJG1xLXN0YXRpYy1icmVha3BvaW50OiB0YWJsZXQ7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvIHRhYmxldFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjYWRkaW5nLWN1c3RvbS1icmVha3BvaW50cyBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtc3RhdGljLWJyZWFrcG9pbnQ6IGRlc2t0b3AgIWRlZmF1bHQ7XG5cbi8vLyBTaG93IGJyZWFrcG9pbnRzIGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy9cbi8vLyBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZSBjdXJyZW50bHkgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcFxuLy8vIHJpZ2h0IGNvcm5lciBvZiB5b3VyIHNpdGUgZHVyaW5nIGRldmVsb3BtZW50LCBhZGQgdGhlIGJyZWFrcG9pbnRzXG4vLy8gdG8gdGhpcyBsaXN0LCBvcmRlcmVkIGJ5IHdpZHRoLiBGb3IgZXhhbXBsZTogKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKS5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgICRtcS1zaG93LWJyZWFrcG9pbnRzOiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApO1xuLy8vICAgQGltcG9ydCAncGF0aC90by9tcSc7XG4vLy9cbi8vLyBAdHlwZSBtYXBcbiRtcS1zaG93LWJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcblxuLy8vIEN1c3RvbWl6ZSB0aGUgbWVkaWEgdHlwZSAoZm9yIGV4YW1wbGU6IGBAbWVkaWEgc2NyZWVuYCBvciBgQG1lZGlhIHByaW50YClcbi8vLyBCeSBkZWZhdWx0IHNhc3MtbXEgdXNlcyBhbiBcImFsbFwiIG1lZGlhIHR5cGUgKGBAbWVkaWEgYWxsIGFuZCDigKZgKVxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNjaGFuZ2luZy1tZWRpYS10eXBlIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1tZWRpYS10eXBlOiBhbGwgIWRlZmF1bHQ7XG5cbi8vLyBDb252ZXJ0IHBpeGVscyB0byBlbXNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHggLSB2YWx1ZSB0byBjb252ZXJ0XG4vLy8gQGlnbm9yZSBAcGFyYW0ge051bWJlcn0gJGJhc2UtZm9udC1zaXplIFskbXEtYmFzZS1mb250LXNpemVdIC0gYDxib2R5PmAgZm9udCBzaXplIChkZXByZWNhdGVkKVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkZm9udC1zaXplLWluLWVtczogbXEtcHgyZW0oMTZweCk7XG4vLy8gIHAgeyBmb250LXNpemU6IG1xLXB4MmVtKDE2cHgpOyB9XG4vLy9cbi8vLyBAcmVxdWlyZXMgJG1xLWJhc2UtZm9udC1zaXplXG4vLy8gQHJldHVybnMge051bWJlcn1cbkBmdW5jdGlvbiBtcS1weDJlbSgkcHgsICRiYXNlLWZvbnQtc2l6ZTogJG1xLWJhc2UtZm9udC1zaXplKSB7XG4gICAgQGlmICgkbXEtYmFzZS1mb250LXNpemUgIT0gMTZweCkge1xuICAgICAgICBAd2FybiBcIk92ZXJyaWRpbmcgJG1xLWJhc2UtZm9udC1zaXplIHdpbGwgYnJlYWsgdGhpbmdzLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyLlwiO1xuICAgIH1cbiAgICBAaWYgKCRiYXNlLWZvbnQtc2l6ZSAhPSAxNnB4KSB7XG4gICAgICAgIEB3YXJuIFwiVGhlICRiYXNlLWZvbnQtc2l6ZSBhcmd1bWVudCB3aWxsIGJlIHJlbW92ZWQgaW4gc2Fzcy1tcSB2Ni4wLjAsIGFzIG92ZXJyaWRpbmcgaXQgYnJlYWtzIHRoaW5ncywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMi5cIjtcbiAgICB9XG4gICAgQGlmIHVuaXRsZXNzKCRweCkge1xuICAgICAgICBAd2FybiBcIkFzc3VtaW5nICN7JHB4fSB0byBiZSBpbiBwaXhlbHMsIGF0dGVtcHRpbmcgdG8gY29udmVydCBpdCBpbnRvIHBpeGVscy5cIjtcbiAgICAgICAgQHJldHVybiBtcS1weDJlbSgkcHggKiAxcHgsICRiYXNlLWZvbnQtc2l6ZSk7XG4gICAgfSBAZWxzZSBpZiB1bml0KCRweCkgPT0gZW0ge1xuICAgICAgICBAcmV0dXJuICRweDtcbiAgICB9XG4gICAgQHJldHVybiAoZGl2KCRweCwgJGJhc2UtZm9udC1zaXplKSkgKiAxZW07XG59XG5cbi8vLyBHZXQgYSBicmVha3BvaW50J3Mgd2lkdGhcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnQuIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJHRhYmxldC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgodGFibGV0KTtcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKGRlc2t0b3ApKSB7fVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBWYWx1ZSBpbiBwaXhlbHNcbkBmdW5jdGlvbiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkge1xuICAgICAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEB3YXJuIFwiQnJlYWtwb2ludCAjeyRuYW1lfSB3YXNuJ3QgZm91bmQgaW4gJGJyZWFrcG9pbnRzLlwiO1xuICAgIH1cbn1cblxuLy8vIE1lZGlhIFF1ZXJ5IG1peGluXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRmcm9tIFtmYWxzZV0gLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkdW50aWwgW2ZhbHNlXSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRhbmQgW2ZhbHNlXSAtIEFkZGl0aW9uYWwgbWVkaWEgcXVlcnkgcGFyYW1ldGVyc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVkaWEtdHlwZSBbJG1xLW1lZGlhLXR5cGVdIC0gTWVkaWEgdHlwZTogc2NyZWVuLCBwcmludOKAplxuLy8vXG4vLy8gQGlnbm9yZSBVbmRvY3VtZW50ZWQgQVBJLCBmb3IgYWR2YW5jZWQgdXNlIG9ubHk6XG4vLy8gQGlnbm9yZSBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzIFskbXEtYnJlYWtwb2ludHNdXG4vLy8gQGlnbm9yZSBAcGFyYW0ge1N0cmluZ30gJHN0YXRpYy1icmVha3BvaW50IFskbXEtc3RhdGljLWJyZWFrcG9pbnRdXG4vLy9cbi8vLyBAY29udGVudCBzdHlsaW5nIHJ1bGVzLCB3cmFwcGVkIGludG8gYSBAbWVkaWEgcXVlcnkgd2hlbiAkcmVzcG9uc2l2ZSBpcyB0cnVlXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtbWVkaWEtdHlwZVxuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLXB4MmVtXG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGhcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9uLWRlZmF1bHQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAuZWxlbWVudCB7XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IG1vYmlsZSkge1xuLy8vICAgICAgY29sb3I6IHJlZDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJHVudGlsOiB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBibHVlO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcShtb2JpbGUsIHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGdyZWVuO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogdGFibGV0LCAkYW5kOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJykge1xuLy8vICAgICAgY29sb3I6IHRlYWw7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKDk1MHB4KSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEodGFibGV0LCAkbWVkaWEtdHlwZTogc2NyZWVuKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgLy8gQWR2YW5jZWQgdXNlOlxuLy8vICAgICRteS1icmVha3BvaW50czogKEw6IDkwMHB4LCBYTDogMTIwMHB4KTtcbi8vLyAgICBAaW5jbHVkZSBtcShMLCAkYnJlYWtwb2ludHM6ICRteS1icmVha3BvaW50cywgJHN0YXRpYy1icmVha3BvaW50OiBMKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gIH1cbkBtaXhpbiBtcShcbiAgICAkZnJvbTogZmFsc2UsXG4gICAgJHVudGlsOiBmYWxzZSxcbiAgICAkYW5kOiBmYWxzZSxcbiAgICAkbWVkaWEtdHlwZTogJG1xLW1lZGlhLXR5cGUsXG4gICAgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMsXG4gICAgJHJlc3BvbnNpdmU6ICRtcS1yZXNwb25zaXZlLFxuICAgICRzdGF0aWMtYnJlYWtwb2ludDogJG1xLXN0YXRpYy1icmVha3BvaW50XG4pIHtcbiAgICAkbWluLXdpZHRoOiAwO1xuICAgICRtYXgtd2lkdGg6IDA7XG4gICAgJG1lZGlhLXF1ZXJ5OiAnJztcblxuICAgIC8vIEZyb206IHRoaXMgYnJlYWtwb2ludCAoaW5jbHVzaXZlKVxuICAgIEBpZiAkZnJvbSB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRmcm9tKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0oJGZyb20pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRmcm9tLCAkYnJlYWtwb2ludHMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVudGlsOiB0aGF0IGJyZWFrcG9pbnQgKGV4Y2x1c2l2ZSlcbiAgICBAaWYgJHVudGlsIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJHVudGlsKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0oJHVudGlsKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkdW50aWwsICRicmVha3BvaW50cykpIC0gLjAxZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZGlzYWJsZWQsIHJhc3Rlcml6ZSB0aGUgb3V0cHV0IG91dHNpZGUgQG1lZGlhIGJsb2Nrc1xuICAgIC8vIFRoZSBicm93c2VyIHdpbGwgcmVseSBvbiB0aGUgY2FzY2FkZSBpdHNlbGYuXG4gICAgQGlmICRyZXNwb25zaXZlID09IGZhbHNlIHtcbiAgICAgICAgJHN0YXRpYy1icmVha3BvaW50LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc3RhdGljLWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICR0YXJnZXQtd2lkdGg6IG1xLXB4MmVtKCRzdGF0aWMtYnJlYWtwb2ludC13aWR0aCk7XG5cbiAgICAgICAgLy8gT3V0cHV0IG9ubHkgcnVsZXMgdGhhdCBzdGFydCBhdCBvciBzcGFuIG91ciB0YXJnZXQgd2lkdGhcbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgICRhbmQgPT0gZmFsc2VcbiAgICAgICAgICAgIGFuZCAkbWluLXdpZHRoIDw9ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIGFuZCAoXG4gICAgICAgICAgICAgICAgJHVudGlsID09IGZhbHNlIG9yICRtYXgtd2lkdGggPj0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYW5kICRtZWRpYS10eXBlICE9ICdwcmludCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBlbmFibGVkLCBvdXRwdXQgcnVsZXMgaW5zaWRlIEBtZWRpYSBxdWVyaWVzXG4gICAgQGVsc2Uge1xuICAgICAgICBAaWYgJG1pbi13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWluLXdpZHRoOiAjeyRtaW4td2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRtYXgtd2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1heC13aWR0aDogI3skbWF4LXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkYW5kICAgICAgICAgICAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kICN7JGFuZH0nOyB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIHVubmVjZXNzYXJ5IG1lZGlhIHF1ZXJ5IHByZWZpeCAnYWxsIGFuZCAnXG4gICAgICAgIEBpZiAoJG1lZGlhLXR5cGUgPT0gJ2FsbCcgYW5kICRtZWRpYS1xdWVyeSAhPSAnJykge1xuICAgICAgICAgICAgJG1lZGlhLXR5cGU6ICcnO1xuICAgICAgICAgICAgJG1lZGlhLXF1ZXJ5OiBzdHItc2xpY2UodW5xdW90ZSgkbWVkaWEtcXVlcnkpLCA2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAjeyRtZWRpYS10eXBlICsgJG1lZGlhLXF1ZXJ5fSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8vIFF1aWNrIHNvcnRcbi8vL1xuLy8vIEBhdXRob3IgU2FtIFJpY2hhcmRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc29ydFxuLy8vIEByZXR1cm5zIHtMaXN0fSBTb3J0ZWQgTGlzdFxuQGZ1bmN0aW9uIF9tcS1xdWljay1zb3J0KCRsaXN0KSB7XG4gICAgJGxlc3M6ICAoKTtcbiAgICAkZXF1YWw6ICgpO1xuICAgICRsYXJnZTogKCk7XG5cbiAgICBAaWYgbGVuZ3RoKCRsaXN0KSA+IDEge1xuICAgICAgICAkc2VlZDogbnRoKCRsaXN0LCBjZWlsKGRpdihsZW5ndGgoJGxpc3QpLCAyKSkpO1xuXG4gICAgICAgIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICAgICAgICAgIEBpZiAoJGl0ZW0gPT0gJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkZXF1YWw6IGFwcGVuZCgkZXF1YWwsICRpdGVtKTtcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtIDwgJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkbGVzczogYXBwZW5kKCRsZXNzLCAkaXRlbSk7XG4gICAgICAgICAgICB9IEBlbHNlIGlmICgkaXRlbSA+ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGxhcmdlOiBhcHBlbmQoJGxhcmdlLCAkaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAcmV0dXJuIGpvaW4oam9pbihfbXEtcXVpY2stc29ydCgkbGVzcyksICRlcXVhbCksIF9tcS1xdWljay1zb3J0KCRsYXJnZSkpO1xuICAgIH1cblxuICAgIEByZXR1cm4gJGxpc3Q7XG59XG5cbi8vLyBTb3J0IGEgbWFwIGJ5IHZhbHVlcyAod29ya3Mgd2l0aCBudW1iZXJzIG9ubHkpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBzb3J0XG4vLy8gQHJldHVybnMge01hcH0gTWFwIHNvcnRlZCBieSB2YWx1ZVxuQGZ1bmN0aW9uIF9tcS1tYXAtc29ydC1ieS12YWx1ZSgkbWFwKSB7XG4gICAgJG1hcC1zb3J0ZWQ6ICgpO1xuICAgICRtYXAta2V5czogbWFwLWtleXMoJG1hcCk7XG4gICAgJG1hcC12YWx1ZXM6IG1hcC12YWx1ZXMoJG1hcCk7XG4gICAgJG1hcC12YWx1ZXMtc29ydGVkOiBfbXEtcXVpY2stc29ydCgkbWFwLXZhbHVlcyk7XG5cbiAgICAvLyBSZW9yZGVyIGtleS92YWx1ZSBwYWlycyBiYXNlZCBvbiBrZXkgdmFsdWVzXG4gICAgQGVhY2ggJHZhbHVlIGluICRtYXAtdmFsdWVzLXNvcnRlZCB7XG4gICAgICAgICRpbmRleDogaW5kZXgoJG1hcC12YWx1ZXMsICR2YWx1ZSk7XG4gICAgICAgICRrZXk6IG50aCgkbWFwLWtleXMsICRpbmRleCk7XG4gICAgICAgICRtYXAtc29ydGVkOiBtYXAtbWVyZ2UoJG1hcC1zb3J0ZWQsICgka2V5OiAkdmFsdWUpKTtcblxuICAgICAgICAvLyBVbnNldCB0aGUgdmFsdWUgaW4gJG1hcC12YWx1ZXMgdG8gcHJldmVudCB0aGUgbG9vcFxuICAgICAgICAvLyBmcm9tIGZpbmRpbmcgdGhlIHNhbWUgaW5kZXggdHdpY2VcbiAgICAgICAgJG1hcC12YWx1ZXM6IHNldC1udGgoJG1hcC12YWx1ZXMsICRpbmRleCwgMCk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkbWFwLXNvcnRlZDtcbn1cblxuLy8vIEFkZCBhIGJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIC0gV2lkdGggb2YgdGhlIGJyZWFrcG9pbnRcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICBAaW5jbHVkZSBtcS1hZGQtYnJlYWtwb2ludCh0dnNjcmVlbiwgMTkyMHB4KTtcbi8vLyAgQGluY2x1ZGUgbXEodHZzY3JlZW4pIHt9XG5AbWl4aW4gbXEtYWRkLWJyZWFrcG9pbnQoJG5hbWUsICR3aWR0aCkge1xuICAgICRuZXctYnJlYWtwb2ludDogKCRuYW1lOiAkd2lkdGgpO1xuICAgICRtcS1icmVha3BvaW50czogbWFwLW1lcmdlKCRtcS1icmVha3BvaW50cywgJG5ldy1icmVha3BvaW50KSAhZ2xvYmFsO1xuICAgICRtcS1icmVha3BvaW50czogX21xLW1hcC1zb3J0LWJ5LXZhbHVlKCRtcS1icmVha3BvaW50cykgIWdsb2JhbDtcbn1cblxuLy8vIFNob3cgdGhlIGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyIG9mIHRoZSB2aWV3cG9ydFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3ctYnJlYWtwb2ludHMgWyRtcS1zaG93LWJyZWFrcG9pbnRzXSAtIExpc3Qgb2YgYnJlYWtwb2ludHMgdG8gc2hvdyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgWyRtcS1icmVha3BvaW50c10gLSBCcmVha3BvaW50IG5hbWVzIGFuZCBzaXplc1xuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXNob3ctYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBnbG9iYWwgc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbi8vL1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGN1c3RvbSBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzKChMLCBYTCksIChTOiAzMDBweCwgTDogODAwcHgsIFhMOiAxMjAwcHgpKTtcbkBtaXhpbiBtcS1zaG93LWJyZWFrcG9pbnRzKCRzaG93LWJyZWFrcG9pbnRzOiAkbXEtc2hvdy1icmVha3BvaW50cywgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBib2R5OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0Y4RTM7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGNvbG9yOiAjQzA5ODUzO1xuICAgICAgICBmb250OiBzbWFsbC1jYXB0aW9uO1xuICAgICAgICBwYWRkaW5nOiAzcHggNnB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBicmVha3BvaW50cyB0aGF0IHNob3VsZCBiZSBzaG93blxuICAgICAgICBAZWFjaCAkc2hvdy1icmVha3BvaW50IGluICRzaG93LWJyZWFrcG9pbnRzIHtcbiAgICAgICAgICAgICR3aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50czogJGJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCIjeyRzaG93LWJyZWFrcG9pbnR9IOKJpSAjeyR3aWR0aH0gKCN7bXEtcHgyZW0oJHdpZHRoKX0pXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpZiBsZW5ndGgoJG1xLXNob3ctYnJlYWtwb2ludHMpID4gMCB7XG4gICAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbn1cbiIsIlxuLy8gRG8gbm90IG91dHB1dCBwbGFjZWhvbGRlcnMgdHdpY2UgaS5lLiBpZiBvLWxhYmVscyBpcyBpbXBvcnRlZCB0d2ljZS5cbi8vIFRoaXMgaXMgYSB0ZW1wb3JhcnkgdmFyaWFibGUsIHVudGlsIHdlIGNhbiB1c2UgdGhlIG5ldyBzYXNzIGBAdXNlYCBmZWF0dXJlXG4vLyB0aGF0IHdpbGwgbm90IGhhdmUgdGhlIHByb2JsZW0gb2YgcmUtb3V0cHV0dGluZyBwbGFjZWhvbGRlcnMgb24gZXZlcnkgaW1wb3J0XG4kX28tbGFiZWxzLWZpcnN0LWltcG9ydDogdHJ1ZSAhZGVmYXVsdDtcblxuQGlmICRfby1sYWJlbHMtZmlyc3QtaW1wb3J0ID09IHRydWUge1xuXHQvLyBzaGFyZWQgcGxhY2Vob2xkZXJzXG5cdCVfby1sYWJlbHMtaW5kaWNhdG9yLXNpemUge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygtMik7XG5cdH1cblxuXHQlX28tbGFiZWxzLXRpbWVzdGFtcC10eXBvZ3JhcGh5IHtcblx0XHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeVRpbWVzdGFtcCgpO1xuXHR9XG5cblx0Ly8gbXVzdCBjb21lIGFmdGVyICVfby1sYWJlbHMtdGltZXN0YW1wLXR5cG9ncmFwaHlcblx0Ly8gZm9yIGhpZ2hlciBzcGVjaWZpY2l0eVxuXHQlX28tbGFiZWxzLWluZGljYXRvci1saXZlLWNvbG9yIHtcblx0XHRjb2xvcjogb0NvbG9yc0J5TmFtZSgnY3JpbXNvbicpO1xuXHR9XG5cblx0Ly8gbXVzdCBjb21lIGFmdGVyICVfby1sYWJlbHMtdGltZXN0YW1wLXR5cG9ncmFwaHlcblx0Ly8gZm9yIGhpZ2hlciBzcGVjaWZpY2l0eVxuXHQlX28tbGFiZWxzLWluZGljYXRvci1jbG9zZWQtY29sb3Ige1xuXHRcdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCdibGFjay02MCcpO1xuXHR9XG5cblx0Ly8gdGltZXN0YW1wIGJsb2NrIHBsYWNlaG9sZGVyc1xuXHQlX28tbGFiZWxzLXRpbWVzdGFtcCB7XG5cdFx0QGV4dGVuZCAlX28tbGFiZWxzLXRpbWVzdGFtcC10eXBvZ3JhcGh5O1xuXHRcdEBleHRlbmQgJV9vLWxhYmVscy1pbmRpY2F0b3Itc2l6ZTtcblx0fVxuXG5cdC8vIG11c3QgY29tZSBhZnRlciBvdGhlciBjb2xvdXIgcGxhY2Vob2xkZXJzXG5cdC8vIGUuZy4gJV9vLWxhYmVscy1pbmRpY2F0b3ItbGl2ZS1jb2xvclxuXHQvLyBmb3IgaGlnaGVyIHNwZWNpZmljaXR5XG5cdCVfby1sYWJlbHMtdGltZXN0YW1wLS1pbnZlcnNlIHtcblx0XHRjb2xvcjogb0NvbG9yc0J5TmFtZSgnd2hpdGUnKTtcblx0fVxuXG5cdC8vIGluZGljYXRvciBibG9jayBwbGFjZWhvbGRlcnNcblx0JV9vLWxhYmVscy1pbmRpY2F0b3Ige1xuXHRcdEBleHRlbmQgJV9vLWxhYmVscy1pbmRpY2F0b3Itc2l6ZTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdH1cblxuXHQlX28tbGFiZWxzLWluZGljYXRvcl9fc3RhdHVzIHtcblx0XHQmOmJlZm9yZSB7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHRcdHdpZHRoOiBjYWxjKDAuNWVtICsgNHB4KTtcblx0XHRcdGhlaWdodDogY2FsYygwLjVlbSArIDRweCk7XG5cdFx0XHRtaW4td2lkdGg6IDEwcHg7XG5cdFx0XHRtaW4taGVpZ2h0OiAxMHB4O1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Y29sb3I7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG5cdFx0XHQvLyBhbGlnbiBiZXR0ZXIgd2l0aCBNZXRyaWNXZWJcblx0XHRcdG1hcmdpbi1ib3R0b206IC0xcHg7XG5cdFx0fVxuXHR9XG59XG5cbiRfby1sYWJlbHMtZmlyc3QtaW1wb3J0OiBmYWxzZTtcbiIsIi8vLyBPdXRwdXRzIHR5cG9ncmFwaHkgc3R5bGVzIGZvciB0aGUgU2VyaWYgZm9udC5cbi8vLyBJbmNsdWRpbmc6IGZhbWlseSwgc2l6ZSwgbGluZS1oZWlnaHQsIHdlaWdodCwgc3R5bGUsIGFuZCBmb250IHNpemVzXG4vLy8gZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZy5cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGZvbnQtZmFtaWx5IHByb3BlcnR5IG9ubHkgZm9yIHRoZSBzZXJpZiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIHNlcmlmIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2VyaWYgZm9udC4gU2V0IGEgY3VzdG9tIGxpbmUtaGVpZ2h0IG9mIDEuNi5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkbGluZS1oZWlnaHQ6IDEuNik7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXdlaWdodCBmb3IgdGhlIHNlcmlmIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJHdlaWdodDogJ2JvbGQnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtc3R5bGUgZm9yIHRoZSBzZXJpZiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNlcmlmIGZvbnQgcHJvcGVydGllcyB3aXRob3V0IGZvbnQtZmFtaWx5LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgc2VyaWYgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgc2l6ZXMgZm9yIHRoZSBmYWxsYmFjayBmb250ICh3aXRob3V0IHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZykuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtcHJvZ3Jlc3NpdmU6IGZhbHNlKTtcbi8vL1xuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJHNjYWxlIFtudWxsXSAtIGEgc2NhbGUgbnVtYmVyIHRvIG91dHB1dCBhIGZvbnQtc2l6ZSBhbmQgbGluZS1oZWlnaHQgcHJvcGVydHlcbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBbbnVsbF0gLSBjdXN0b20gbGluZS1oZWlnaHQgdmFsdWUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIHNjYWxlJ3MgZGVmYXVsdFxuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXdlaWdodCBwcm9wZXJ0eSwgZS5nLiAnYm9sZCcsICdzZW1pYm9sZCdcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXN0eWxlIHByb3BlcnR5LCBlLmcuICdpdGFsaWMnXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1mb250LWZhbWlseSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSB0aGUgZm9udC1mYW1pbHkgcHJvcGVydHkgZnJvbSB0aGUgb3V0cHV0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHJlc2l6aW5nIHR5cG9ncmFwaHksIHdoZXJlIHRoZSBzZXJpZiBmb250LWZhbWlseSBpcyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudCBlbGVtZW50LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtcHJvZ3Jlc3NpdmUgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgc3R5bGVzIHVzZWQgZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZyAoZm9udC1mYW1pbHkgYW5kIHNpemUgZmFsbGJhY2tzIGZvciBsb2FkaW5nIGZvbnRzKS5cbkBtaXhpbiBvVHlwb2dyYXBoeVNlcmlmKFxuXHQkc2NhbGU6IG51bGwsXG5cdCRsaW5lLWhlaWdodDogbnVsbCxcblx0JHdlaWdodDogbnVsbCxcblx0JHN0eWxlOiBudWxsLFxuXHQkaW5jbHVkZS1mb250LWZhbWlseTogdHJ1ZSxcblx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmU6ICRvLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1sb2FkaW5nXG4pIHtcblx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5Rm9yKFxuXHRcdCRfby10eXBvZ3JhcGh5LXNlcmlmLFxuXHRcdCRzY2FsZSxcblx0XHQkbGluZS1oZWlnaHQsXG5cdFx0JHdlaWdodCxcblx0XHQkc3R5bGUsXG5cdFx0JGluY2x1ZGUtZm9udC1mYW1pbHksXG5cdFx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmVcblx0KTtcbn1cblxuLy8vIE91dHB1dHMgdHlwb2dyYXBoeSBzdHlsZXMgZm9yIHRoZSBEaXNwbGF5IGZvbnQuXG4vLy8gSW5jbHVkaW5nOiBmYW1pbHksIHNpemUsIGxpbmUtaGVpZ2h0LCB3ZWlnaHQsIHN0eWxlLCBhbmQgZm9udCBzaXplc1xuLy8vIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcuXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBmb250LWZhbWlseSBwcm9wZXJ0eSBvbmx5IGZvciB0aGUgZGlzcGxheSBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgZGlzcGxheSBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgZGlzcGxheSBmb250LiBTZXQgYSBjdXN0b20gbGluZS1oZWlnaHQgb2YgMS42LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJGxpbmUtaGVpZ2h0OiAxLjYpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC13ZWlnaHQgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxLCAkd2VpZ2h0OiAnYm9sZCcpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC1zdHlsZSBmb3IgdGhlIGRpc3BsYXkgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGRpc3BsYXkgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgZm9udC1mYW1pbHkuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGRpc3BsYXkgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgc2l6ZXMgZm9yIHRoZSBmYWxsYmFjayBmb250ICh3aXRob3V0IHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZykuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1wcm9ncmVzc2l2ZTogZmFsc2UpO1xuLy8vXG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkc2NhbGUgW251bGxdIC0gYSBzY2FsZSBudW1iZXIgdG8gb3V0cHV0IGEgZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFtudWxsXSAtIGN1c3RvbSBsaW5lLWhlaWdodCB2YWx1ZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc2NhbGUncyBkZWZhdWx0XG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIG91dHB1dCBhIGZvbnQtd2VpZ2h0IHByb3BlcnR5LCBlLmcuICdib2xkJywgJ3NlbWlib2xkJ1xuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHN0eWxlIFtudWxsXSAtIG91dHB1dCBhIGZvbnQtc3R5bGUgcHJvcGVydHksIGUuZy4gJ2l0YWxpYydcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWZvbnQtZmFtaWx5IFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHRoZSBmb250LWZhbWlseSBwcm9wZXJ0eSBmcm9tIHRoZSBvdXRwdXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVzaXppbmcgdHlwb2dyYXBoeSwgd2hlcmUgdGhlIGRpc3BsYXkgZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG5AbWl4aW4gb1R5cG9ncmFwaHlEaXNwbGF5KFxuXHQkc2NhbGU6IG51bGwsXG5cdCRsaW5lLWhlaWdodDogbnVsbCxcblx0JHdlaWdodDogbnVsbCxcblx0JHN0eWxlOiBudWxsLFxuXHQkaW5jbHVkZS1mb250LWZhbWlseTogdHJ1ZSxcblx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmU6ICRvLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1sb2FkaW5nXG4pIHtcblx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5Rm9yKFxuXHRcdCRfby10eXBvZ3JhcGh5LWRpc3BsYXksXG5cdFx0JHNjYWxlLFxuXHRcdCRsaW5lLWhlaWdodCxcblx0XHQkd2VpZ2h0LFxuXHRcdCRzdHlsZSxcblx0XHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0XHQkaW5jbHVkZS1wcm9ncmVzc2l2ZVxuXHQpO1xufVxuXG4vLy8gT3V0cHV0cyB0eXBvZ3JhcGh5IHN0eWxlcyBmb3IgdGhlIFNhbnMgZm9udC5cbi8vLyBJbmNsdWRpbmc6IGZhbWlseSwgc2l6ZSwgbGluZS1oZWlnaHQsIHdlaWdodCwgc3R5bGUsIGFuZCBmb250IHNpemVzXG4vLy8gZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZy5cbi8vL1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGEgZm9udC1mYW1pbHkgcHJvcGVydHkgb25seSBmb3IgdGhlIHNhbnMgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIHNhbnMgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIHNhbnMgZm9udC4gU2V0IGEgY3VzdG9tIGxpbmUtaGVpZ2h0IG9mIDEuNi5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICRsaW5lLWhlaWdodDogMS42KTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtd2VpZ2h0IGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJHdlaWdodDogJ2JvbGQnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtc3R5bGUgZm9yIHRoZSBzYW5zIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBzYW5zIGZvbnQgcHJvcGVydGllcyB3aXRob3V0IGZvbnQtZmFtaWx5LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBzYW5zIGZvbnQgcHJvcGVydGllcyB3aXRob3V0IHNpemVzIGZvciB0aGUgZmFsbGJhY2sgZm9udCAod2l0aG91dCBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcpLlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtcHJvZ3Jlc3NpdmU6IGZhbHNlKTtcbi8vL1xuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJHNjYWxlIFtudWxsXSAtIGEgc2NhbGUgbnVtYmVyIHRvIG91dHB1dCBhIGZvbnQtc2l6ZSBhbmQgbGluZS1oZWlnaHQgcHJvcGVydHlcbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBbbnVsbF0gLSBjdXN0b20gbGluZS1oZWlnaHQgdmFsdWUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIHNjYWxlJ3MgZGVmYXVsdFxuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXdlaWdodCBwcm9wZXJ0eSwgZS5nLiAnYm9sZCcsICdzZW1pYm9sZCdcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXN0eWxlIHByb3BlcnR5LCBlLmcuICdpdGFsaWMnXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1mb250LWZhbWlseSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSB0aGUgZm9udC1mYW1pbHkgcHJvcGVydHkgZnJvbSB0aGUgb3V0cHV0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHJlc2l6aW5nIHR5cG9ncmFwaHksIHdoZXJlIHRoZSBzYW5zIGZvbnQtZmFtaWx5IGlzIGluaGVyaXRlZCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1wcm9ncmVzc2l2ZSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBzdHlsZXMgdXNlZCBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nIChmb250LWZhbWlseSBhbmQgc2l6ZSBmYWxsYmFja3MgZm9yIGxvYWRpbmcgZm9udHMpLlxuQG1peGluIG9UeXBvZ3JhcGh5U2Fucyhcblx0JHNjYWxlOiBudWxsLFxuXHQkbGluZS1oZWlnaHQ6IG51bGwsXG5cdCR3ZWlnaHQ6IG51bGwsXG5cdCRzdHlsZTogbnVsbCxcblx0JGluY2x1ZGUtZm9udC1mYW1pbHk6IHRydWUsXG5cdCRpbmNsdWRlLXByb2dyZXNzaXZlOiAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZ1xuKSB7XG5cdEBpbmNsdWRlIF9vVHlwb2dyYXBoeUZvcihcblx0XHQkX28tdHlwb2dyYXBoeS1zYW5zLFxuXHRcdCRzY2FsZSxcblx0XHQkbGluZS1oZWlnaHQsXG5cdFx0JHdlaWdodCxcblx0XHQkc3R5bGUsXG5cdFx0JGluY2x1ZGUtZm9udC1mYW1pbHksXG5cdFx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmVcblx0KTtcbn1cblxuLy8vIFNldCBhIGN1c3RvbSBmb250LlxuLy8vXG4vLy8gQGV4YW1wbGUgVGhpcyBleGFtcGxlIHNob3dzIHNldHRpbmcgYSBjdXN0b20gZm9udCBcIk15U2Fuc0ZvbnRcIiBhcyB0aGUgXCJzYW5zXCIgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2V0Rm9udCgkdHlwZTogJ3NhbnMnLCAkZmFtaWx5OiAnTXlTYW5zRm9udCwgc2FucycpO1xuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlIC0gT25lIG9mICdzYW5zJywgJ3NlcmlmJywgb3IgJ2Rpc3BsYXknLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZmFtaWx5IC0gVGhlIGZvbnQgZmFtaWx5IHRvIHNldC5cbkBtaXhpbiBvVHlwb2dyYXBoeVNldEZvbnQoJHR5cGUsICRmYW1pbHkpIHtcblx0JGZvbnQ6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmYW1pbHkpO1xuXHRAaWYgbm90IG9Gb250c1ZhcmlhbnRFeGlzdHMoJGZvbnQsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCkge1xuXHRcdEBlcnJvciAnQ291bGQgbm90IHNldCB0aGUgZm9udCBmYW1pbHkgXCIjeyRmYW1pbHl9XCIgYXMgXCIjeyRmb250fVwiIGRvZXMgbm90IGV4aXN0IGluIFwiby1mb250c1wiLiBJZiB5b3UgYXJlIHNldHRpbmcgYSBjdXN0b20gZm9udCwgZmlyc3QgcmVnaXN0ZXIgeW91ciBjdXN0b20gZm9udCB3aXRoIG8tZm9udHMgKGh0dHBzOi8vcmVnaXN0cnkub3JpZ2FtaS5mdC5jb20vY29tcG9uZW50cy9vLWZvbnRzKS4nO1xuXHR9XG5cdEBpZiBub3QgaW5kZXgoJF9vLXR5cG9ncmFwaHktdHlwZXMsICR0eXBlKSB7XG5cdFx0QGVycm9yICdDb3VsZCBub3Qgc2V0IGZvbnQtZmFtaWx5IFwiI3skZmFtaWx5fVwiIGZvciBmYW1pbHkgc3R5bGUgXCIjeyR0eXBlfVwiLCBmYW1pbHkgc3R5bGUgbXVzdCBiZSBvbmUgb2YgXCIjeyRfby10eXBvZ3JhcGh5LXR5cGVzfVwiLic7XG5cdH1cblx0Ly8gU2V0IHRoZSBjdXN0b20gZm9udC5cblx0QGlmICR0eXBlID09ICdzYW5zJyB7XG5cdFx0JF9vLXR5cG9ncmFwaHktc2FuczogJGZhbWlseSAhZ2xvYmFsO1xuXHR9XG5cdEBpZiAkdHlwZSA9PSAnc2VyaWYnIHtcblx0XHQkX28tdHlwb2dyYXBoeS1zZXJpZjogJGZhbWlseSAhZ2xvYmFsO1xuXHR9XG5cdEBpZiAkdHlwZSA9PSAnZGlzcGxheScge1xuXHRcdCRfby10eXBvZ3JhcGh5LWRpc3BsYXk6ICRmYW1pbHkgIWdsb2JhbDtcblx0fVxufVxuXG4vLy8gRGVmaW5lIHRoZSB0eXBvZ3JhcGhpYyBzY2FsZSBmb3IgYSBnaXZlbiBmb250LiBUaGUgZm9udCBtYXkgYmUgYW4gZXhpc3Rpbmcgb3IgY3VzdG9tIGZvbnQuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmYW1pbHkgLSBUaGUgZm9udCBuYW1lIG9yIGZhbWlseSB0byBhcHBseSBhIHNjYWxlIHRvLlxuLy8vIEBwYXJhbSB7TWFwfSAkc2NhbGUgLSBBIG1hcCBvZiBzY2FsZSBudW1iZXJzIGFzIGtleXMgKC0yIHRvIDEwKSwgd2l0aCBsaXN0IHZhbHVlcyBvZiBmb250IHNpemUgYW5kIGxpbmUgaGVpZ2h0IFwiKC0yOiAoMTIsIDE2KSwgLTE6ICgxNCwgMTYpLCAwOiAoMTYsIDIwKSlcIiBldGMuLi5cbi8vLyBAZXhhbXBsZSBUaGlzIGV4YW1wbGUgc2hvd3MgZGVmaW5pbmcgYSBjdXN0b20gZm9udCBzY2FsZSBmb3IgYSBjdXN0b20gZm9udCBcIk15U2Fuc0ZvbnRcIi4gQXQgc2NhbGUgXCIwXCIgdGhlIGZvbnQgc2l6ZSB3aWxsIGJlIDE2cHgsIGFuZCB0aGUgbGluZS1oZWlnaHQgMjBweC5cbi8vL1x0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeURlZmluZUZvbnRTY2FsZSgkZmFtaWx5OiAnTXlTYW5zRm9udCwgc2FucycsIChcbi8vL1x0XHQgICAtMjogKDEyLCAxNiksXG4vLy9cdFx0ICAgLTE6ICgxNCwgMTgpLFxuLy8vXHRcdCAgICAwOiAoMTYsIDIwKSxcbi8vL1x0XHQgICAgMTogKDE4LCAyNCksXG4vLy9cdFx0ICAgIDI6ICgyMCwgMjYpLFxuLy8vXHRcdCAgICAzOiAoMjQsIDMyKSxcbi8vL1x0XHQgICAgNDogKDI4LCAzNiksXG4vLy9cdFx0ICAgIDU6ICgzMiwgNDIpLFxuLy8vXHRcdCAgICA2OiAoNDAsIDUyKSxcbi8vL1x0XHQgICAgNzogKDQ4LCA2MiksXG4vLy9cdFx0ICAgIDg6ICg1NiwgNzIpLFxuLy8vXHRcdCAgICA5OiAoNzIsIDk0KSxcbi8vL1x0XHQgICAxMDogKDg0LCAxMTApXG4vLy9cdFx0KSk7XG5AbWl4aW4gb1R5cG9ncmFwaHlEZWZpbmVGb250U2NhbGUoJGZhbWlseSwgJHNjYWxlKSB7XG5cdEBpZiB0eXBlLW9mKCRzY2FsZSkgIT0gJ21hcCcge1xuXHRcdEBlcnJvciAnQ291bGQgbm90IHNldCB0aGUgc2NhbGUgZm9yIGZvbnQgXCIjeyRmYW1pbHl9XCIsIGV4cGVjdGVkIHRoZSBzY2FsZSB0byBiZSBhIG1hcCBidXQgZm91bmQgXCIjeyRzY2FsZX1cIiwgb2YgdHlwZSBcIiN7dHlwZS1vZigkc2NhbGUpfVwiLic7XG5cdH1cblx0QGVhY2ggJHNjYWxlLW51bWJlciwgJHNjYWxlLWl0ZW0gaW4gJHNjYWxlIHtcblx0XHRAaWYgdHlwZS1vZigkc2NhbGUtaXRlbSkgIT0gJ2xpc3QnIG9yIGxlbmd0aCgkc2NhbGUtaXRlbSkgIT0gMiB7XG5cdFx0XHRAZXJyb3IgJ0V4cGVjdGVkIGVhY2ggaXRlbSBpbiB0aGUgc2NhbGUgdG8gYmUgYSBsaXN0IHdpdGggdHdvIGl0ZW1zLCB0aGUgZm9udCBzaXplIGZvbGxvd2VkIGJ5IHRoZSBsaW5lIGhlaWdodC4nO1xuXHRcdH1cblx0fVxuXHRAaWYgbWFwLWtleXMoJHNjYWxlKSAhPSAoLTIsIC0xLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCkge1xuXHRcdEBlcnJvciAnRXhwZWN0ZWQgdGhlIHNjYWxlIGZvciBmb250IFwiI3skZmFtaWx5fVwiIHRvIGNvbnRhaW4gdmFsdWVzIGZvciBzY2FsZXMgLTIgdG8gMTAsIGJ1dCBmb3VuZCBzY2FsZXMgXCIje21hcC1rZXlzKCRzY2FsZSl9XCIuJztcblx0fVxuXHQkZmFtaWx5OiBvRm9udHNHZXRGb250RmFtaWx5V2l0aG91dEZhbGxiYWNrcygkZmFtaWx5KTtcblx0JF9vLXR5cG9ncmFwaHktZm9udC1zY2FsZS1ieS1mb250OiBtYXAtbWVyZ2UoKCRmYW1pbHk6ICRzY2FsZSksICRfby10eXBvZ3JhcGh5LWZvbnQtc2NhbGUtYnktZm9udCkgIWdsb2JhbDtcbn1cblxuLy8vIE91dHB1dCBhIHR5cG9ncmFwaHkgZm9yIGZvbnRcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQgLSBUaGUgZm9udCB0byBvdXRwdXQgdHlwb2dyYXBoeSBmb3IuXG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkc2NhbGUgW251bGxdIC0gYSBzY2FsZSBudW1iZXIgdG8gb3V0cHV0IGEgZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFtudWxsXSAtIGN1c3RvbSBsaW5lLWhlaWdodCB2YWx1ZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc2NhbGUncyBkZWZhdWx0XG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIG91dHB1dCBhIGZvbnQtd2VpZ2h0IHByb3BlcnR5LCBlLmcuICdib2xkJywgJ3NlbWlib2xkJ1xuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHN0eWxlIFtudWxsXSAtIG91dHB1dCBhIGZvbnQtc3R5bGUgcHJvcGVydHksIGUuZy4gJ2l0YWxpYydcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWZvbnQtZmFtaWx5IFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHRoZSBmb250LWZhbWlseSBwcm9wZXJ0eSBmcm9tIHRoZSBvdXRwdXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVzaXppbmcgdHlwb2dyYXBoeSwgd2hlcmUgdGhlIGdpdmVuIGZvbnQtZmFtaWx5IGlzIGluaGVyaXRlZCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1wcm9ncmVzc2l2ZSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBzdHlsZXMgdXNlZCBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nIChmb250LWZhbWlseSBhbmQgc2l6ZSBmYWxsYmFja3MgZm9yIGxvYWRpbmcgZm9udHMpLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vVHlwb2dyYXBoeUZvcihcblx0JGZvbnQsXG5cdCRzY2FsZSxcblx0JGxpbmUtaGVpZ2h0LFxuXHQkd2VpZ2h0LFxuXHQkc3R5bGUsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5LFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZVxuKSB7XG5cdC8vIENoZWNrIGZvbnQgdmFyaWFudCBpcyBzdXBwb3J0ZWQuXG5cdCRmb250LXdpdGhvdXQtZmFsbGJhY2tzOiBvRm9udHNHZXRGb250RmFtaWx5V2l0aG91dEZhbGxiYWNrcygkZm9udCk7XG5cdCR2YXJpYW50LWV4aXN0czogb0ZvbnRzVmFyaWFudEV4aXN0cygkZm9udC13aXRob3V0LWZhbGxiYWNrcywgJHdlaWdodCwgJHN0eWxlKTtcblx0QGlmIG5vdCAkdmFyaWFudC1leGlzdHMge1xuXHRcdEBlcnJvciAnRm9udCBmYW1pbHkgXCIjeyRmb250LXdpdGhvdXQtZmFsbGJhY2tzfVwiIG9mIHdlaWdodCAnICtcblx0XHRcdCdcIiN7aWYoJHdlaWdodCwgJHdlaWdodCwgJ3JlZ3VsYXInKX1cIiBhbmQgc3R5bGUgJyArXG5cdFx0XHQnXCIje2lmKCRzdHlsZSwgJHN0eWxlLCAnbm9ybWFsJyl9XCIgaXMgbm90IHN1cHBvcnRlZC4nO1xuXHR9XG5cblx0Ly8gQ2hlY2sgZm9udCB2YXJpYW50IGhhcyBiZWVuIGluY2x1ZGVkLCBhbmQgZXJyb3IgaWYgYW4gZXJyb3IgbWVzc2FnZVxuXHQvLyBoYXMgYmVlbiBzZXQgYnkgdGhlIHVzZXIuXG5cdCR2YXJpYW50LWluY2x1ZGVkOiBvRm9udHNWYXJpYW50SW5jbHVkZWQoJGZvbnQtd2l0aG91dC1mYWxsYmFja3MsICR3ZWlnaHQsICRzdHlsZSk7XG5cdEBpZiBub3QgJHZhcmlhbnQtaW5jbHVkZWQgYW5kIHR5cGUtb2YoJG8tdHlwb2dyYXBoeS1lcnJvci1mb3ItbWlzc2luZy1mb250cykgPT0gJ3N0cmluZycge1xuXHRcdEBlcnJvciAnVGhlIGZvbnQgZmFjZSBmb3IgZm9udCBmYW1pbHkgXCIjeyRmb250LXdpdGhvdXQtZmFsbGJhY2tzfVwiIG9mICcgK1xuXHRcdFx0J3dlaWdodCBcIiN7aWYoJHdlaWdodCwgJHdlaWdodCwgJ3JlZ3VsYXInKX1cIiBhbmQgc3R5bGUgJyArXG5cdFx0XHQnXCIje2lmKCRzdHlsZSwgJHN0eWxlLCAnbm9ybWFsJyl9XCIgaGFzIG5vdCBiZWVuIGluY2x1ZGVkIGluIHlvdXIgJyArXG5cdFx0XHQncHJvamVjdC4gI3tpbnNwZWN0KCRvLXR5cG9ncmFwaHktZXJyb3ItZm9yLW1pc3NpbmctZm9udHMpfSc7XG5cdH1cblxuXHRAaWYgJGluY2x1ZGUtZm9udC1mYW1pbHkge1xuXHRcdGZvbnQtZmFtaWx5OiBpZih0eXBlLW9mKCRmb250KSA9PSAnc3RyaW5nJywgdW5xdW90ZSgkZm9udCksICRmb250KTtcblx0fVxuXG5cdEBpZiAkc2NhbGUge1xuXHRcdEBpbmNsdWRlIF9vVHlwb2dyYXBoeVNpemUoJHNjYWxlOiAkc2NhbGUsICRsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LCAkZm9udDogJGZvbnQpO1xuXHR9IEBlbHNlIGlmICRsaW5lLWhlaWdodCB7XG5cdFx0bGluZS1oZWlnaHQ6IF9vVHlwb2dyYXBoeUFkanVzdFVuaXQoJGxpbmUtaGVpZ2h0KTtcblx0fVxuXG5cdEBpZiAkd2VpZ2h0IHtcblx0XHRmb250LXdlaWdodDogb0ZvbnRzV2VpZ2h0KCR3ZWlnaHQpO1xuXHR9XG5cblx0QGlmICRzdHlsZSB7XG5cdFx0Zm9udC1zdHlsZTogdW5xdW90ZSgkc3R5bGUpO1xuXHR9XG5cblx0QGlmICRpbmNsdWRlLXByb2dyZXNzaXZlIHtcblx0XHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlQcm9ncmVzc2l2ZUZvbnRGYWxsYmFjaygkZm9udCwgJHNjYWxlLCAkd2VpZ2h0LCAkc3R5bGUsICRpbmNsdWRlLWZvbnQtZmFtaWx5KTtcblx0fVxufVxuXG4vLy8gT3V0cHV0cyB0aGUgZm9udCBzaXplIGFuZCBsaW5lIGhlaWdodCBiYXNlZCBvbiB0aGUgc2NhbGUsIGFsc29cbi8vLyBhY2NlcHRzIGFuIG92ZXJyaWRlIGxpbmUtaGVpZ2h0IHRvIG91dHB1dCBhbmQgYSBmb250IGFkanVzdG1lbnRcbi8vLyBwYXJhbWV0ZXIgZm9yIHdoZW4gb3V0cHV0dGluZyBzdHlsZXMgZm9yIHByb2dyZXNzaXZlbHkgbG9hZGVkIGZvbnRzXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNjYWxlIG51bWJlciBvbiBzY2FsZSB0aGUgc2l6ZXMgYXJlIGJhc2VkIG9uXG4vLy8gQHBhcmFtIHtCb29sZWFuIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgc2l6ZSB0byBvdmVycmlkZSB0aGUgbGluZS1oZWlnaHQgcHJvcGVydHlcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQgWycnXSAtIFRoZSBmb250IHRvIGdldCB0aGUgZm9udCBzaXplIGZvciwgYXMgZm9udHMgbWF5IGhhdmUgZGlmZmVyZW50IHNjYWxlcy4gVXNlcyB0aGUgZGVmYXVsdCBzY2FsZSBpZiBub3Qgc3BlY2lmaWVkLlxuQG1peGluIF9vVHlwb2dyYXBoeVNpemUoJHNjYWxlLCAkbGluZS1oZWlnaHQ6IGZhbHNlLCAkZm9udDogJycpIHtcblx0QGlmIHR5cGUtb2YoJHNjYWxlKSA9PSBtYXAge1xuXHRcdEBlYWNoICRicmVha3BvaW50LCAkc2NhbGUgaW4gJHNjYWxlIHtcblx0XHRcdCRjdXJyZW50LWxpbmUtaGVpZ2h0OiBpZihsZW5ndGgoJHNjYWxlKSA9PSAyLCBudGgoJHNjYWxlLCAyKSwgJGxpbmUtaGVpZ2h0KTtcblx0XHRcdCRjdXJyZW50LXNjYWxlOiBpZih0eXBlLW9mKCRzY2FsZSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRzY2FsZSkgIT0gMCwgbnRoKCRzY2FsZSwgMSksICRzY2FsZSk7XG5cblx0XHRcdEBpZiAkYnJlYWtwb2ludCA9PSAnZGVmYXVsdCcgYW5kICRjdXJyZW50LXNjYWxlIHtcblx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkY3VycmVudC1zY2FsZSwgMSwgJGZvbnQpO1xuXHRcdFx0XHRsaW5lLWhlaWdodDogX29UeXBvZ3JhcGh5TGluZUhlaWdodEZyb21TY2FsZSgkY3VycmVudC1zY2FsZSwgJGN1cnJlbnQtbGluZS1oZWlnaHQsICRmb250KTtcblx0XHRcdH1cblxuXHRcdFx0QGlmICRicmVha3BvaW50ICE9ICdkZWZhdWx0JyBhbmQgJGN1cnJlbnQtc2NhbGUge1xuXHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkYnJlYWtwb2ludCkge1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJGN1cnJlbnQtc2NhbGUsIDEsICRmb250KTtcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogX29UeXBvZ3JhcGh5TGluZUhlaWdodEZyb21TY2FsZSgkY3VycmVudC1zY2FsZSwgJGN1cnJlbnQtbGluZS1oZWlnaHQsICRmb250KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkc2NhbGUsIDEsICRmb250KTtcblx0XHRsaW5lLWhlaWdodDogX29UeXBvZ3JhcGh5TGluZUhlaWdodEZyb21TY2FsZSgkc2NhbGUsICRsaW5lLWhlaWdodCwgJGZvbnQpO1xuXHR9XG59XG5cbi8vLyBPdXRwdXRzIHRoZSBwcm9ncmVzc2l2ZSBmb250IGZhbGxiYWNrIHN0eWxlcyBiYXNlZCBvblxuLy8vIGZvbnQgYW5kIHNjYWxlIGlmIHRoZSBmb250IGhhcyBmYWxsYmFjayBzZXR0aW5nc1xuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250IC0gRm9udCB0byBvdXRwdXQgZmFsbGJhY2sgc3R5bGVzIGZvciAob3IgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2NhbGUgLSBOdW1iZXIgb24gc2NhbGUgdGhlIHNpemUgaXMgYmFzZWQgb24uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gVGhlIHdlaWdodCBvZiB0aGUgZm9udCB3aGljaCBuZWVkcyBhIGZhbGxiYWNrIGUuZy4gJ2JvbGQnLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3R5bGUgW251bGxdIC0gVGhlIHN0eWxlIG9mIHRoZSBmb250IHdoaWNoIG5lZWRzIGEgZmFsbGJhY2sgZS5nLiAnaXRhbGljJy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWZvbnQtZmFtaWx5IFt0cnVlXSAtIFdoZXRoZXIgdG8gb3V0cHV0IHRoZSBmb250IGZhbWlseSBvZiB0aGUgZmFsbGJhY2sgZm9udCAodnMuIGp1c3QgdGhlIHNpemUpXG5AbWl4aW4gX29UeXBvZ3JhcGh5UHJvZ3Jlc3NpdmVGb250RmFsbGJhY2soJGZvbnQsICRzY2FsZSwgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5jbHVkZS1mb250LWZhbWlseTogdHJ1ZSkge1xuXHRAaWYgbm90ICRvLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1sb2FkaW5nIHtcblx0XHRAZXJyb3IgJ1Byb2dyZXNzaXZlIGZvbnQgZmFsbGJhY2tzIGFyZSBkaXNhYmxlZC4nICtcblx0XHRcdCdJZiB5b3UgYXJlIHN1cmUgeW91IHdhbnQgdG8gb3V0cHV0IHByb2dyZXNzaXZlIGZvbnQgZmFsbGJhY2tzIGluICcgK1xuXHRcdFx0J3lvdXIgcHJvamVjdCBzZXQgYCRvLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1sb2FkaW5nOiB0cnVlO2AgJyArXG5cdFx0XHQnYXQgdGhlIHRvcCBvZiB5b3VyIHByb2plY3QsIGJlZm9yZSBpbXBvcnRpbmcgU2FzcyBmaWxlcy4gJyArXG5cdFx0XHQnU2VlIHRoZSBSRUFETUUgZm9yIGRldGFpbHMgYW5kIG1vcmUgb3B0aW9ucyBvciBjb250YWN0IHRoZSBPcmlnYW1pIHRlYW0uJztcblx0fVxuXHRAaWYgJHNjYWxlIHtcblx0XHQvLyBJZiBmYWxzeSB3ZWlnaHQvc3R5bGUgZGVmYXVsdCB0byByZWd1bGFyL25vcm1hbC5cblx0XHQkd2VpZ2h0OiBpZigkd2VpZ2h0LCAkd2VpZ2h0LCAncmVndWxhcicpO1xuXHRcdCRzdHlsZTogaWYoJHN0eWxlLCAkc3R5bGUsICdub3JtYWwnKTtcblx0XHQvLyBGaW5kIGZhbGxiYWNrIGNvbmZpZyBmb3IgZm9udCwgd2VpZ2h0LCBhbmQgc3R5bGUuXG5cdFx0QGVhY2ggJGZhbGxiYWNrIGluICRfby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtZmFsbGJhY2tzIHtcblx0XHRcdC8vIEdldCBmYWxsYmFjayBwcm9wZXJ0aWVzLlxuXHRcdFx0JGZhbGxiYWNrLWZhbWlseTogbWFwLWdldCgkZmFsbGJhY2ssICdmYW1pbHknKTtcblx0XHRcdCRmYWxsYmFjay1sYWJlbDogbWFwLWdldCgkZmFsbGJhY2ssICdsYWJlbCcpO1xuXHRcdFx0Ly8gTWF0Y2ggcmVndWxhciBieSBkZWZhdWx0LlxuXHRcdFx0JGZhbGxiYWNrLXdlaWdodDogbWFwLWdldCgkZmFsbGJhY2ssICd3ZWlnaHQnKTtcblx0XHRcdCRmYWxsYmFjay13ZWlnaHQ6IGlmKCRmYWxsYmFjay13ZWlnaHQsICRmYWxsYmFjay13ZWlnaHQsICgncmVndWxhcicpKTtcblx0XHRcdC8vIE1hdGNoIG5vcm1hbCBieSBkZWZhdWx0LlxuXHRcdFx0JGZhbGxiYWNrLXN0eWxlOiBtYXAtZ2V0KCRmYWxsYmFjaywgJ3N0eWxlJyk7XG5cdFx0XHQkZmFsbGJhY2stc3R5bGU6IGlmKCRmYWxsYmFjay1zdHlsZSwgJGZhbGxiYWNrLXN0eWxlLCAoJ25vcm1hbCcpKTtcblx0XHRcdCRmYWxsYmFjay1zY2FsZTogbWFwLWdldCgkZmFsbGJhY2ssICdmYWxsYmFjay1zY2FsZScpO1xuXHRcdFx0Ly8gQ2hlY2sgaWYgZmFsbGJhY2sgaXMgZm9yIHRoZSBnaXZlbiBmb250LCB3ZWlnaHQsIGFuZCBzdHlsZS47XG5cdFx0XHQkbGFiZWwtbWF0Y2g6ICRmYWxsYmFjay1sYWJlbCA9PSBvRm9udHNHZXRGb250RmFtaWx5V2l0aG91dEZhbGxiYWNrcygkZm9udCk7IC8vIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5cdFx0XHQkZmFtaWx5LW1hdGNoOiBvRm9udHNHZXRGb250RmFtaWx5V2l0aG91dEZhbGxiYWNrcygkZmFsbGJhY2stZmFtaWx5KSA9PSBvRm9udHNHZXRGb250RmFtaWx5V2l0aG91dEZhbGxiYWNrcygkZm9udCk7XG5cdFx0XHQkd2VpZ2h0LW1hdGNoOiBpbmRleCgkZmFsbGJhY2std2VpZ2h0LCAkd2VpZ2h0KTtcblx0XHRcdCRzdHlsZS1tYXRjaDogaWYoJGZhbGxiYWNrLXN0eWxlLCBpbmRleCgkZmFsbGJhY2stc3R5bGUsICRzdHlsZSksIHRydWUpO1xuXHRcdFx0Ly8gT3V0cHV0IHRoZSBmYWxsYmFjayBpZiBpdCBtYXRjaGVzLlxuXHRcdFx0QGlmICgkbGFiZWwtbWF0Y2ggb3IgKCRmYW1pbHktbWF0Y2ggYW5kICR3ZWlnaHQtbWF0Y2ggYW5kICRzdHlsZS1tYXRjaCkpIHtcblx0XHRcdFx0LiN7JF9vLXR5cG9ncmFwaHktbG9hZGluZy1wcmVmaXh9LSN7JGZhbGxiYWNrLWxhYmVsfSAmIHtcblx0XHRcdFx0XHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb250U2l6ZSgkc2NhbGU6ICRzY2FsZSwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0OiAkZmFsbGJhY2stc2NhbGUsICRmb250OiAkZmFsbGJhY2stZmFtaWx5KTtcblx0XHRcdFx0XHRAaWYgJGluY2x1ZGUtZm9udC1mYW1pbHkge1xuXHRcdFx0XHRcdFx0Zm9udC1mYW1pbHk6IG1hcC1nZXQoJGZhbGxiYWNrLCAnZmFsbGJhY2snKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy8vIE91dHB1dHMgdGhlIGZvbnQgc2l6ZSBiYXNlZCBvbiB0aGUgc2NhbGUsIGFsc28gYWNjZXB0cyBhIGZvbnQgYWRqdXN0bWVudFxuLy8vIHBhcmFtZXRlciBmb3Igd2hlbiBvdXRwdXR0aW5nIHN0eWxlcyBmb3IgcHJvZ3Jlc3NpdmVseSBsb2FkZWQgZm9udHNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2NhbGUgLSBOdW1iZXIgb24gc2NhbGUgdGhlIHNpemVzIGFyZSBiYXNlZCBvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0IC0gTXVsdGlwbGllciBmb3IgZm9udC1zaXplIGFkanVzdG1lbnRzLCB3aGVuIGFkZGluZyBzdHlsZXMgZm9yIHByb2dyZXNzaXZlbHkgbG9hZGVkIGZvbnQuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250IFsnJ10gLSBUaGUgZm9udCB0byBnZXQgdGhlIGZvbnQgc2l6ZSBmb3IsIGFzIGZvbnRzIG1heSBoYXZlIGRpZmZlcmVudCBzY2FsZXMuIFVzZXMgdGhlIGRlZmF1bHQgc2NhbGUgaWYgbm90IHNwZWNpZmllZC5cbkBtaXhpbiBfb1R5cG9ncmFwaHlGb250U2l6ZSgkc2NhbGUsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdDogMSwgJGZvbnQ6ICcnKSB7XG5cdEBpZiB0eXBlLW9mKCRzY2FsZSkgPT0gbWFwIHtcblx0XHRAZWFjaCAkYnJlYWtwb2ludCwgJG51bWJlciBpbiAkc2NhbGUge1xuXHRcdFx0QGlmICRicmVha3BvaW50ID09ICdkZWZhdWx0JyB7XG5cdFx0XHRcdEBpZiB0eXBlLW9mKCRudW1iZXIpID09IGxpc3Qge1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUobnRoKCRudW1iZXIsIDEpLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkbnVtYmVyLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBAZWxzZSBpZigkbnVtYmVyKSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRicmVha3BvaW50KSB7XG5cdFx0XHRcdFx0QGlmIHR5cGUtb2YoJG51bWJlcikgPT0gbGlzdCB7XG5cdFx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKG50aCgkbnVtYmVyLCAxKSwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdFx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRudW1iZXIsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRzY2FsZSwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdH1cbn1cbiIsIi8vLyBPdXRwdXQgZWRpdG9yaWFsIHN0eWxlcyBmb3IgYm9keSB0ZXh0LlxuLy8vIEBleGFtcGxlXG4vLy8gICAgIHAge1xuLy8vICAgICBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5Qm9keSgpO1xuLy8vICAgICB9XG4vLy8gQHBhcmFtIHttYXB9ICRvcHRzIFsoJ21hcmdpbi1yZXNldCc6IHRydWUpXSAtIE9wdGlvbnMuIFNldCBgbWFyZ2luLXJlc2V0YCB0byBmYWxzZSB0byBhdm9pZCBvdXRwdXR0aW5nIGEgbWFyZ2luLlxuQG1peGluIG9FZGl0b3JpYWxUeXBvZ3JhcGh5Qm9keSgkb3B0czogKFxuXHQnbWFyZ2luLXJlc2V0JzogdHJ1ZVxuKSkge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogKGRlZmF1bHQ6IDEsIFhMOiAyKSwgJGxpbmUtaGVpZ2h0OiAxLjYpO1xuXHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnYm9keScsICd0ZXh0Jyk7XG5cdC8vIHVuZG8gYnJvd3NlciBkZWZhdWx0c1xuXHRAaWYobWFwLWdldCgkb3B0cywnbWFyZ2luLXJlc2V0JykpIHtcblx0XHRtYXJnaW46IDA7XG5cdH1cbn1cblxuLy8vIE91dHB1dCBlZGl0b3JpYWwgc3R5bGVzIGZvciBsaXN0cy5cbi8vLyBTdHlsZXMgY2hpbGQgYGxpYCBlbGVtZW50cy4gQXBwbHkgdG8gYVxuLy8vIGNvbnRhaW5pbmcgbGlzdCBlbGVtZW50IHN1Y2ggYXMgYHVsYCBvciBgb2xgLlxuLy8vIERvZXMgbm90IG91dHB1dCBmb250IHN0eWxlcywgdGhlc2UgYXJlXG4vLy8gaW5oZXJpdGVkIChAc2VlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5Qm9keSkuXG4vLy9cbi8vLyBXcmFwcyBhbiBvLXR5cG9ncmFwaHkgbWl4aW4gc28gdGhlIHR3byBtYXkgZGl2ZXJnZVxuLy8vIChAc2VlIG9UeXBvZ3JhcGh5TGlzdClcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCB0aGUgc3R5bGVzIGZvciBhbiB1bm9yZGVyZWQgbGlzdC5cbi8vLyAgICAgLm15LXVub3JkZXJlZC1saXN0IHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeUxpc3QoJ3Vub3JkZXJlZCcpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgdGhlIHN0eWxlcyBmb3IgYW4gb3JkZXJlZCBhbmQgdW5vcmRlcmVkIGxpc3QsIHNoYXJpbmcgYmFzZSBsaXN0IHN0eWxlcy5cbi8vLyAgICAgLm15LWxpc3Qge1xuLy8vICAgICBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5TGlzdCgpO1xuLy8vICAgICB9XG4vLy9cbi8vLyAgICAgLm15LWxpc3QtLW9yZGVyZWQge1xuLy8vICAgICBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5TGlzdCgnb3JkZXJlZCcsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vICAgICAubXktbGlzdC0tdW5vcmRlcmVkIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeUxpc3QoJ3Vub3JkZXJlZCcsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfE51bGx9ICR0eXBlIFtudWxsXSAtIFwib3JkZXJlZFwiLCBcInVub3JkZXJlZFwiLCBvciBudWxsIGZvciBqdXN0IHRoZSBiYXNlIHN0eWxlcyBzaGFyZWQgYnkgYWxsIGxpc3RzXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1iYXNlLXN0eWxlcyBbdHJ1ZV0gLSBzZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBiYXNlIHN0eWxlcyB3aGljaCBhcmUgc2hhcmVkIGJ5IGFsbCBsaXN0IHR5cGVzXG5AbWl4aW4gb0VkaXRvcmlhbFR5cG9ncmFwaHlMaXN0KCR0eXBlOiBudWxsLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogdHJ1ZSkge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpc3QoJHR5cGUsICRpbmNsdWRlLWJhc2Utc3R5bGVzKTtcblx0QGlmICRpbmNsdWRlLWJhc2Utc3R5bGVzIHtcblx0XHRtYXJnaW46IDA7IC8vIERvIG5vdCBhc3N1bWUgdGhlIGNvbnRleHQgdGhlIGxpc3QgaXMgdXNlZC5cblx0fVxufVxuXG4vLy8gT3V0cHV0IHN0eWxlcyBmb3IgY2FwdGlvbnMsXG4vLy8gZS5nLiBmb3IgcGhvdG8gb3IgdmlkZW8gY3JlZGl0L2NhcHRpb24uXG5AbWl4aW4gb0VkaXRvcmlhbFR5cG9ncmFwaHlDYXB0aW9uKCkge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAtMSk7XG5cdGNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdib2R5JywgJ3RleHQnKTtcbn1cblxuLy8vIE91dHB1dCBzdHlsZXMgZm9yIGxhcmdlIGhlYWRsaW5lIHRleHQuXG4vLy8gVGhpcyBzdHlsZSBoYXMgaGlnaCB2aXN1YWwgcHJvbWluZW5jZS5cbi8vL1xuLy8vIEFsdGVybmF0aXZlbHksIHlvdSBtYXkgcHJlZmVyIHRvIHVzZVxuLy8vIHRoZSBsZXZlbCBvbmUgaGVhZGluZyBzdHlsZS5cbi8vLyBAc2VlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5SGVhZGluZ1xuQG1peGluIG9FZGl0b3JpYWxUeXBvZ3JhcGh5SGVhZGxpbmUoKSB7XG5cdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5RGVjb3JhdGVkKCk7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheShcblx0XHQkc2NhbGU6IChkZWZhdWx0OiA1LCBTOiA2LCBMOiA3KSxcblx0XHQkd2VpZ2h0OiAnYm9sZCdcblx0KTtcblx0bWFyZ2luOiAwOyAvLyByZW1vdmUgYnJvd3NlciBkZWZhdWx0IG1hcmdpbiBmcm9tIGhlYWRpbmdzXG59XG5cbi8vLyBPdXRwdXQgc3R5bGVzIGZvciBlZGl0b3JpYWwgcGFnZSBoZWFkaW5nIGNvcHkuXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRsZXZlbCAtIFRoZSBoZWFkaW5nIGxldmVsIDEtNS5cbi8vLyBAcGFyYW0ge21hcH0gJG9wdHMgWygnbWFyZ2luLXJlc2V0JzogdHJ1ZSldIC0gT3B0aW9ucy4gU2V0IGBtYXJnaW4tcmVzZXRgIHRvIGZhbHNlIHRvIGF2b2lkIG91dHB1dHRpbmcgYSBtYXJnaW4uXG5AbWl4aW4gb0VkaXRvcmlhbFR5cG9ncmFwaHlIZWFkaW5nKCRsZXZlbCwgJG9wdHM6IChcblx0J21hcmdpbi1yZXNldCc6IHRydWVcbikpIHtcblx0QGlmIHR5cGUtb2YoJGxldmVsKSAhPSAnbnVtYmVyJyBvciAkbGV2ZWwgPCAxIG9yICRsZXZlbCA+IDUge1xuXHRcdEBlcnJvciAnSGVhZGluZyBsZXZlbHMgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDUuJztcblx0fVxuXG5cdC8vIHVuZG8gYnJvd3NlciBkZWZhdWx0c1xuXHRAaWYobWFwLWdldCgkb3B0cywgJ21hcmdpbi1yZXNldCcpKSB7XG5cdFx0bWFyZ2luOiAwO1xuXHR9XG5cblx0Ly8gc2V0IGNvbG9yXG5cdGNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdib2R5JywgJ3RleHQnKTtcblxuXHRAaWYoJGxldmVsID09IDEpIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAoZGVmYXVsdDogNCwgUzogNSwgTDogNiksICR3ZWlnaHQ6ICdyZWd1bGFyJyk7XG5cdH1cblxuXHRAaWYoJGxldmVsID09IDIpIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiA0LCAkd2VpZ2h0OiAnc2VtaWJvbGQnKTtcblx0fVxuXG5cdEBpZigkbGV2ZWwgPT0gMykge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDQsICR3ZWlnaHQ6ICdyZWd1bGFyJyk7XG5cdH1cblxuXHRAaWYoJGxldmVsID09IDQpIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAzLCAkd2VpZ2h0OiAncmVndWxhcicpO1xuXHR9XG5cblx0QGlmKCRsZXZlbCA9PSA1KSB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMCwgJHdlaWdodDogJ3JlZ3VsYXInKTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjVweDtcblx0fVxufVxuXG4vLy8gT3V0cHV0IHN0eWxlcyBmb3IgZWRpdG9yaWFsIHN0YW5kZmlyc3QuXG5AbWl4aW4gb0VkaXRvcmlhbFR5cG9ncmFwaHlTdGFuZGZpcnN0KCkge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAyKTtcblx0Y29sb3I6IG9Db2xvcnNCeU5hbWUoJ2JsYWNrLTgwJyk7XG59XG5cbi8vLyBPdXRwdXQgc3R5bGVzIGZvciB0aGUgZWRpdG9yaWFsIGJ5bGluZS5cbkBtaXhpbiBvRWRpdG9yaWFsVHlwb2dyYXBoeUJ5bGluZSgpIHtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMCk7XG59XG5cbi8vLyBPdXRwdXQgc3R5bGVzIGZvciBhIHRpbWVzdGFtcC5cbi8vLyBGb250IGZhbWlseSBhbmQgc2l6ZSBhcmUgaW5oZXJpdGVkIGZyb20gdGhlXG4vLy8gcGFyZW50IGVsZW1lbnQgc28gdGhpcyBtaXhpbiBtYXkgYmUgdXNlZCBpblxuLy8vIG11bHRpcGxlIGNvbnRleHRzLiBGb3IgZXhhbXBsZSB0aW1lc3RhbXBzIGluXG4vLy8gYSBjb21tZW50IHNlY3Rpb24gb3IgYSBieWxpbmUuXG5AbWl4aW4gb0VkaXRvcmlhbFR5cG9ncmFwaHlUaW1lc3RhbXAoKSB7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCdibGFjay02MCcpO1xufVxuXG4vLy8gT3V0cHV0IHNwZWNpZmljIHRhZyBzdHlsZXMsIHN1Y2ggYXMgYXV0aG9yIGFuZFxuLy8vIHRvcGljIHRhZ3MsIG9yIHN0eWxlcyBmb3Igb3RoZXIgdGFncyBvZiBzaW1pbGFyXG4vLy8gYXBwZWFyYW5jZS4gRm9udCBzaXplIGlzIGluaGVyaXRlZCBmcm9tIHRoZVxuLy8vIHBhcmVudCBlbGVtZW50LCBmb3IgZXhhbXBsZSBpZiBhIHRhZyBpcyB1c2VkXG4vLy8gd2l0aGluIGEgYnlsaW5lIGl0IHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSBhc1xuLy8vIHRoZSBieWxpbmUgdGV4dC5cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIHRvcGljIGFuZCBhdXRob3IgdGFnLlxuLy8vICAgICAubXktdG9waWMtdGFnIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeVRhZygndG9waWMnKTtcbi8vLyAgICAgfVxuLy8vXG4vLy8gICAgIC5teS1hdXRob3ItdGFnIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeVRhZygnYXV0aG9yJyk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBwYXJhbSB7TnVsbHxTdHJpbmd9ICR0eXBlIC0gdGhlIHR5cGUgb2YgdGFnICgndG9waWMnLCAnYXV0aG9yJywgb3IgYG51bGxgIGZvciBhbiB1bnNwZWNpZmljIGtpbmQgb2YgdGFnKS5cbkBtaXhpbiBvRWRpdG9yaWFsVHlwb2dyYXBoeVRhZygkdHlwZSkge1xuXHQvLyBOb24tbGlua2VkIHRhZ3MgYW5kIGF1dGhvciB0YWdzIGFyZSB0aGUgc2FtZSBjb2xvdXIgYXMgdGhlIGJvZHkgY29weS5cblx0QGlmIG5vdCBpcy1zdXBlcnNlbGVjdG9yKCdhJywgJyN7Jn0nKSB7XG5cdFx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ2JvZHknLCAndGV4dCcpO1xuXHR9XG5cblx0Ly8gQXV0aG9yIGFuZCB0b3BpYyB0YWdzIGFyZSBib2xkLlxuXHQvLyBUaGV5IGluaGVyaXQgdGhlaXIgZm9udCBzaXplIGJ1dCBiZWNhdXNlIHdlIHdhbnRcblx0Ly8gdGhlIHRhZ3MgdG8gYmUgYm9sZCB3ZSBtdXN0IHNldCB0aGUgZm9udCBmYW1pbHlcblx0Ly8gcmF0aGVyIHRoYW4gYXNzdW1lIGl0LCBhcyBvdXIgc2FucyBhbmQgc2VyaWYgZm9udHNcblx0Ly8gdXNlIGRpZmZlcmVudCBmb250IHdlaWdodHMuXG5cdEBpZigkdHlwZSA9PSAnYXV0aG9yJyBvciAkdHlwZSA9PSAndG9waWMnKSB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCR3ZWlnaHQ6ICdzZW1pYm9sZCcpO1xuXHR9XG5cblx0Ly8gQXBwbHkgdGFnIGxpbmsgc3R5bGVzIG9ubHkgdG8gYW5jaG9yIGVsZW1lbnRzLlxuXHQvLyBlLmcuIGBhLm15LWF1dGhvci10YWc6aG92ZXJgXG5cdC8vIFRhZ3Mgd2hpY2ggYXJlIGxpbmtzIGFyZSBoaWdobGlnaHRlZCB3aXRoIGNvbG91ciBieSBkZWZhdWx0LlxuXHQvLyBCdXQgYXV0aG9yIHRhZ3MgYXJlIHRoZSBzYW1lIGNvbG91ciBhcyBib2R5IGNvcHkgdW50aWwgaG92ZXIuXG5cdCR0YWctbGluay1zZWxlY3Rvcjogc2VsZWN0b3ItdW5pZnkoJ2EnLCAnI3smfScpO1xuXHRAYXQtcm9vdCAjeyR0YWctbGluay1zZWxlY3Rvcn0ge1xuXHRcdEBpZigkdHlwZSAhPSAnYXV0aG9yJykge1xuXHRcdFx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ3RhZy1saW5rJywgdGV4dCk7XG5cdFx0fVxuXG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdGJvcmRlci1ib3R0b206IDA7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdCRob3Zlci1jb2xvcjogaWYoJHR5cGUgIT0gJ2F1dGhvcicsICd0YWctbGluay1ob3ZlcicsICd0YWctbGluaycpO1xuXHRcdFx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJGhvdmVyLWNvbG9yLCB0ZXh0KTtcblx0XHR9XG5cdH1cbn1cblxuLy8vIE91dHB1dCBzdHlsZXMgdG8gZGVjb3JhdGUgdHlwb2dyYXBoeSB3aXRoIGEgc2hvcnQsXG4vLy8gdGhpY2sgdW5kZXJsaW5lLiBTdHlsZXMgYWZ0ZXIgcHNldWRvIGVsZW1lbnQuXG4vLy8gQGV4YW1wbGUgRGVjb3JhdGUgYSBoZWFkZXIuXG4vLy8gICAgIC5kZWNvcmF0ZWQtaGVhZGVyIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeURlY29yYXRlZCgpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBEZWNvcmF0ZSBhIGNlbnRyZWQgaGVhZGVyLlxuLy8vICAgICAuY2VudGVyZWQtZGVjb3JhdGVkLWhlYWRlciB7XG4vLy8gICAgIFx0dGV4dC1hbGlnbjogY2VudGVyO1xuLy8vICAgICBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5RGVjb3JhdGVkKCRhbGlnbjogJ2NlbnRlcicpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBEZWNvcmF0ZSBhIGNlbnRyZWQgYW5kIG5vbi1jZW50cmVkIGhlYWRlciB3aXRob3V0IGR1cGxpY2F0aW5nIGNzcy5cbi8vLyAgICAgLmRlY29yYXRlZC1oZWFkZXIge1xuLy8vICAgICBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5RGVjb3JhdGVkKCk7XG4vLy8gICAgIH1cbi8vLyAgICAgLmRlY29yYXRlZC1oZWFkZXItLWNlbnRlciB7XG4vLy8gICAgIFx0dGV4dC1hbGlnbjogY2VudGVyO1xuLy8vICAgICBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5RGVjb3JhdGVkKCRhbGlnbjogJ2NlbnRlcicsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG4vLy8gICAgIH1cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGFsaWduIFsnbGVmdCddIC0gZWl0aGVyICdsZWZ0JyBvciAnY2VudGVyJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtYmFzZS1zdHlsZXMgW3RydWVdIC0gc2V0IHRvIGZhbHNlIHRvIG9ubHkgb3V0cHV0IHN0eWxlcyB0byBtb2RpZnkgc3RhbmRhcmQgZGVjb3JhdG9yIGFsaWdubWVudFxuQG1peGluIG9FZGl0b3JpYWxUeXBvZ3JhcGh5RGVjb3JhdGVkKCRhbGlnbjogJ2xlZnQnLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogdHJ1ZSkge1xuXHRAaWYoJGFsaWduICE9ICdsZWZ0JyBhbmQgJGFsaWduICE9ICdjZW50ZXInKSB7XG5cdFx0QGVycm9yICdBbGlnbiBtdXN0IGJlIFwibGVmdFwiIG9yIFwiY2VudGVyXCIsIGZvdW5kIFwiI3tpbnNwZWN0KCRhbGlnbil9XCIuJztcblx0fVxuXG5cdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcykge1xuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdC8vIDE4cHggTWV0cmljID0gNHB4XG5cdFx0XHQvLyA0OHB4IEZpbmFuY2llckRpc3BsYXlXZWIgPSA4cHhcblx0XHRcdGJvcmRlci1ib3R0b206IGNhbGMoMC4zNGV4ICsgMXB4KSBzb2xpZDtcblx0XHRcdC8vIDE4cHggTWV0cmljID0gfjYwcHhcblx0XHRcdC8vIDQ4cHggRmluYW5jaWVyRGlzcGxheVdlYiA9IH4xODBweFxuXHRcdFx0d2lkdGg6IGNhbGMoN2NoIC0gMTBweCk7XG5cdFx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0XHQvLyAyMHB4IGFzc3VtaW5nIGEgNDhweCBmb250IHNpemVcblx0XHRcdHBhZGRpbmctdG9wOiAwLjQxNmVtO1xuXHRcdFx0QGlmKCRhbGlnbiA9PSAnY2VudGVyJykge1xuXHRcdFx0XHRtYXJnaW46IGF1dG87XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0QGlmKCRhbGlnbiA9PSAnY2VudGVyJykge1xuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0bWFyZ2luOiBhdXRvO1xuXHRcdH1cblx0fVxufVxuIiwiQGltcG9ydCBcIkBmaW5hbmNpYWwtdGltZXMvby1zcGFjaW5nL21haW5cIjtcbkBpbXBvcnQgXCJAZmluYW5jaWFsLXRpbWVzL28tY29sb3JzL21haW5cIjtcbkBpbXBvcnQgXCJAZmluYW5jaWFsLXRpbWVzL28tZ3JpZC9tYWluXCI7XG5AaW1wb3J0IFwiQGZpbmFuY2lhbC10aW1lcy9vLWljb25zL21haW5cIjtcbkBpbXBvcnQgXCJAZmluYW5jaWFsLXRpbWVzL28tdHlwb2dyYXBoeS9tYWluXCI7XG5AaW1wb3J0IFwiQGZpbmFuY2lhbC10aW1lcy9vLWxhYmVscy9tYWluXCI7XG5AaW1wb3J0IFwiQGZpbmFuY2lhbC10aW1lcy9vLW5vcm1hbGlzZS9tYWluXCI7XG5cbkBpbXBvcnQgXCJzcmMvc2Nzcy9jb2xvci11c2UtY2FzZXNcIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy92YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy9taXhpbnNcIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy9kZXByZWNhdGVkXCI7XG5cbkBpbXBvcnQgXCJzcmMvc2Nzcy9lbGVtZW50cy9kZWZhdWx0XCI7XG5AaW1wb3J0IFwic3JjL3Njc3MvZWxlbWVudHMvaW1hZ2VzXCI7XG5AaW1wb3J0IFwic3JjL3Njc3MvZWxlbWVudHMvcHJvbW90ZWRcIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy9lbGVtZW50cy9yZWxhdGVkLWl0ZW1zXCI7XG5AaW1wb3J0IFwic3JjL3Njc3MvZWxlbWVudHMvdGltZXN0YW1wXCI7XG5AaW1wb3J0IFwic3JjL3Njc3MvZWxlbWVudHMvc3luZGljYXRpb25cIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy90aGVtZXMvc21hbGxcIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy90aGVtZXMvbGFyZ2VcIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy90aGVtZXMvYXVkaW9cIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy90aGVtZXMvdmlkZW9cIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy90aGVtZXMvc3RhbmRhcmRcIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy90aGVtZXMvaGVyb1wiO1xuQGltcG9ydCBcInNyYy9zY3NzL3RoZW1lcy90b3Atc3Rvcmllc1wiO1xuQGltcG9ydCBcInNyYy9zY3NzL3RoZW1lcy9wYWNrYWdlXCI7XG5AaW1wb3J0IFwic3JjL3Njc3MvdGhlbWVzL2xpdmVcIjtcblxuLy8vIE91dHB1dCBhbGwgc3R5bGVzIGZvciB0ZWFzZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRvcHRzIFthbGxdIC0gQSBtYXAgb2YgdGVhc2VyIG9wdGlvbnMuIEluY2x1ZGVzIGFuICdlbGVtZW50cycga2V5LCB0byBsaXN0IHdoaWNoIHRlYXNlciBlbGVtZW50cyB3aWxsIGJlIHVzZWQ7IGFuZCBhICd0aGVtZXMnIGtleSwgdG8gbGlzdCB3aGlsc3QgdGhlbWVzIHdpbGwgYmUgdXNlZCB0byBtb2RpZnkgdGhlIGluY2x1ZGVkIHRlYXNlciBlbGVtZW50cy5cbkBtaXhpbiBvVGVhc2VyKCRvcHRzOiAoXG5cdCdlbGVtZW50cyc6ICRfby10ZWFzZXItZWxlbWVudHMsXG5cdCd0aGVtZXMnOiAkX28tdGVhc2VyLXRoZW1lc1xuKSkge1xuXHQkZWxlbWVudHM6IG1hcC1nZXQoJG9wdHMsICdlbGVtZW50cycpO1xuXHQkZWxlbWVudHM6IGlmKCRlbGVtZW50cywgJGVsZW1lbnRzLCAoKSk7XG5cblx0JHRoZW1lczogbWFwLWdldCgkb3B0cywgJ3RoZW1lcycpO1xuXHQkdGhlbWVzOiBpZigkdGhlbWVzLCAkdGhlbWVzLCAoKSk7XG5cblx0Lm8tdGVhc2VyIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlckJhc2U7XG5cdH1cblxuXHRAZWFjaCAkZ3JvdXAgaW4gJGVsZW1lbnRzIHtcblx0XHRAaWYgaW5kZXgoJF9vLXRlYXNlci1lbGVtZW50cywgJGdyb3VwKSAhPSBudWxsIHtcblx0XHRcdEBpbmNsdWRlIF9vVGVhc2VyR2V0RWxlbWVudHNNaXhpbigkZ3JvdXApO1xuXHRcdH0gQGVsc2Uge1xuXHRcdFx0QGVycm9yIFwiVGhlcmUgaXMgbm8gdGhlbWUgJyN7JGdyb3VwfScgYXZhaWxhYmxlIGluIG8tdGVhc2VyLCBwbGVhc2UgdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nOiAjeyRfby10ZWFzZXItZWxlbWVudHN9LlwiO1xuXHRcdH1cblx0fVxuXG5cdEBlYWNoICR0aGVtZSBpbiAkdGhlbWVzIHtcblx0XHRAaWYgaW5kZXgoJF9vLXRlYXNlci10aGVtZXMsICR0aGVtZSkgIT0gbnVsbCB7XG5cdFx0XHRAaW5jbHVkZSBfb1RlYXNlckdldFRoZW1lTWl4aW4oJHRoZW1lKTtcblx0XHR9IEBlbHNlIHtcblx0XHRcdEBlcnJvciBcIlRoZXJlIGlzIG5vIHRoZW1lICcjeyR0aGVtZX0nIGF2YWlsYWJsZSBpbiBvLXRlYXNlciwgcGxlYXNlIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZzogI3skX28tdGVhc2VyLXRoZW1lc30uXCI7XG5cdFx0fVxuXHR9XG59XG5cbkBpZiAoJG8tdGVhc2VyLWlzLXNpbGVudCA9PSBmYWxzZSkge1xuXHRAaW5jbHVkZSBvVGVhc2VyKCk7XG5cblx0Ly8gU2V0IHRvIHNpbGVudCBhZ2FpbiB0byBhdm9pZCBiZWluZyBvdXRwdXQgdHdpY2Vcblx0JG8tdGVhc2VyLWlzLXNpbGVudDogdHJ1ZSAhZ2xvYmFsO1xufVxuIiwiLy8vIFRlYXNlciBoZWFkaW5nIHN0eWxlcy5cbi8vLyBJbmNsdWRpbmcgc3R5bGVzIGZvciBhIG5lc3RlZCBsaW5rLlxuLy8vIEBhY2Nlc3MgcHVibGljXG5AbWl4aW4gb1RlYXNlckhlYWRpbmcge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoMik7XG5cdEBpbmNsdWRlIF9vVGVhc2VyTGluaygpO1xuXHRjb2xvcjogJF9vLXRlYXNlci1iYXNlLWNvbG9yO1xuXHRtYXJnaW4tdG9wOiAwO1xuXHRtYXJnaW4tYm90dG9tOiAwO1xuXHRmb250LXdlaWdodDogb0ZvbnRzV2VpZ2h0KG1lZGl1bSk7XG59XG5cblxuLy8vIEJhc2Ugc3R5bGVzIGZvciBhIHRlYXNlclxuLy8vIHNldHMgdGhlIGZvbnQgYW5kIGJhc2ljIGRpc3BsYXkgcHJvcGVydGllc1xuQG1peGluIF9vVGVhc2VyQmFzZSB7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygtMSk7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0d2lkdGg6IDEwMCU7XG5cdHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG5cdG1hcmdpbi1ib3R0b206IG9TcGFjaW5nQnlOYW1lKCdzNCcpO1xuXG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXG5cdC8qYXV0b3ByZWZpeGVyOiBvZmYqL1xuXHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHQtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG5cdCYgKixcblx0JiAqOmJlZm9yZSxcblx0JiAqOmFmdGVyIHtcblx0XHQvKmF1dG9wcmVmaXhlcjogb2ZmKi9cblx0XHQtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRcdC1tb3otYm94LXNpemluZzogaW5oZXJpdDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdFx0Ym94LXNpemluZzogaW5oZXJpdDtcblx0fVxufVxuXG4vLy8gTWV0YSBhcmVhIGFuZCBjb2xvdXJpbmcgc3R5bGVzXG5AbWl4aW4gX29UZWFzZXJNZXRhIHtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKDAsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG5cdGNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci90YWcnLCAndGV4dCcpO1xuXHRtYXJnaW4tYm90dG9tOiBvU3BhY2luZ0J5TmFtZSgnczEnKTtcbn1cblxuLy8vIFRhZyBzdHlsaW5nLlxuLy8vIEVsZW1lbnQgc2hvdWxkIGJlIGEgbGluaywgb3RoZXJ3aXNlIHVzZSBfb1RlYXNlck1ldGFcbkBtaXhpbiBfb1RlYXNlclRhZyB7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkd2VpZ2h0OiAncmVndWxhcicsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG5cdGNvbG9yOiBpbmhlcml0O1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdGJvcmRlcjogMDtcblx0bWFyZ2luLXJpZ2h0OiAwLjI1ZW07XG5cblx0Jjpob3Zlcixcblx0Jjpmb2N1cyB7XG5cdFx0Y29sb3I6ICRfby10ZWFzZXItZm9jdXMtaG92ZXI7XG5cdH1cblxuXHRzcGFuIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdH1cbn1cblxuQG1peGluIF9vVGVhc2VyVGFnUHJlZml4IHtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCR3ZWlnaHQ6ICdzZW1pYm9sZCcpO1xuXHRtYXJnaW4tcmlnaHQ6IDAuMjVlbTtcbn1cblxuQG1peGluIF9vVGVhc2VyVGFnU3VmZml4IHtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKC0xLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuXHRjb2xvcjogb0NvbG9yc0J5TmFtZSgnYmxhY2stNjAnKTtcbn1cblxuLy8vIFN0eWxlcyBmb3Igc3RhbmRmaXJzdCBlbGVtZW50XG5AbWl4aW4gX29UZWFzZXJTdGFuZGZpcnN0IHtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKDAsIDIwcHgsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG5cdEBpbmNsdWRlIF9vVGVhc2VyTGluaygpO1xuXHRjb2xvcjogJF9vLXRlYXNlci1tdXRlZDtcblx0bWFyZ2luLXRvcDogMDtcblx0bWFyZ2luLWJvdHRvbTogMDtcblxuXHQuby10ZWFzZXJfX2hlYWRpbmcgKyAmIHtcblx0XHRtYXJnaW4tdG9wOiBvU3BhY2luZ0J5TmFtZSgnczInKTtcblx0fVxufVxuXG4vLy8gTGlua3Mgd2l0aGluIHRpdGxlIG9yIHN0YW5kZmlyc3RcbkBtaXhpbiBfb1RlYXNlckxpbmsge1xuXHRhIHtcblx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0Ym9yZGVyOiAwO1xuXG5cdFx0Jjpmb2N1cyxcblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkX28tdGVhc2VyLWZvY3VzLWhvdmVyO1xuXHRcdH1cblxuXHRcdCY6dmlzaXRlZCB7XG5cdFx0XHRjb2xvcjogJF9vLXRlYXNlci1tdXRlZDtcblx0XHR9XG5cdH1cbn1cbiIsIi8vLyBJbmNsdWRlcyB0aGUgY29ycmVjdCBtaXhpbiBmb3IgZWxlbWVudHNcbi8vLyBiYXNlZCBvbiB0aGUgZ3JvdXAgbmFtZSBwYXNzZWRcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZ3JvdXBcbkBtaXhpbiBfb1RlYXNlckdldEVsZW1lbnRzTWl4aW4oJGdyb3VwKSB7XG5cdEBpZiAkZ3JvdXAgPT0gJ2RlZmF1bHQnIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlckVsZW1lbnRzRGVmYXVsdDtcblx0fSBAZWxzZSBpZiAkZ3JvdXAgPT0gJ2ltYWdlcycge1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VyRWxlbWVudHNJbWFnZXM7XG5cdH0gQGVsc2UgaWYgJGdyb3VwID09ICd0aW1lc3RhbXAnIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlckVsZW1lbnRzVGltZXN0YW1wO1xuXHR9IEBlbHNlIGlmICRncm91cCA9PSAncHJvbW90ZWQnIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlckVsZW1lbnRzUHJvbW90ZWQ7XG5cdH0gQGVsc2UgaWYgJGdyb3VwID09ICdyZWxhdGVkLWl0ZW1zJyB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJFbGVtZW50c1JlbGF0ZWRJdGVtcztcblx0fSBAZWxzZSBpZiAkZ3JvdXAgPT0gJ3N5bmRpY2F0aW9uJyB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJTeW5kaWNhdGlvbkluZGljYXRvcjtcblx0fVxufVxuXG4vLy8gSW5jbHVkZXMgdGhlIGNvcnJlY3QgbWl4aW4gZm9yIHRoZW1lc1xuLy8vIGJhc2VkIG9uIHRoZSB0aGVtZSBuYW1lIHBhc3NlZFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0aGVtZVxuQG1peGluIF9vVGVhc2VyR2V0VGhlbWVNaXhpbigkdGhlbWUpIHtcblx0QGlmICR0aGVtZSA9PSAnc21hbGwnIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlclRoZW1lU21hbGw7XG5cdH0gQGVsc2UgaWYgJHRoZW1lID09ICdsYXJnZScge1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VyVGhlbWVMYXJnZTtcblx0fSBAZWxzZSBpZiAkdGhlbWUgPT0gJ3N0YW5kYXJkJyB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJUaGVtZVN0YW5kYXJkO1xuXHR9IEBlbHNlIGlmICR0aGVtZSA9PSAnaGVybycge1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VyVGhlbWVIZXJvO1xuXHR9IEBlbHNlIGlmICR0aGVtZSA9PSAndG9wLXN0b3JpZXMnIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlclRoZW1lVG9wU3Rvcmllcztcblx0fSBAZWxzZSBpZiAkdGhlbWUgPT0gJ3ZpZGVvJyB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJUaGVtZVZpZGVvO1xuXHR9IEBlbHNlIGlmICR0aGVtZSA9PSAnYXVkaW8nIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlclRoZW1lQXVkaW87XG5cdH0gQGVsc2UgaWYgJHRoZW1lID09ICdwYWNrYWdlJyB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJUaGVtZVBhY2thZ2U7XG5cdH0gQGVsc2UgaWYgJHRoZW1lID09ICdsaXZlJyB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJUaGVtZUxpdmU7XG5cdH1cbn1cblxuQG1peGluIF9vVGVhc2VyRWxlbWVudHNEZWZhdWx0IHtcblx0Lm8tdGVhc2VyX19tZXRhIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlck1ldGE7XG5cdH1cblxuXHQuby10ZWFzZXJfX3RhZy1wcmVmaXgge1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VyVGFnUHJlZml4O1xuXHR9XG5cblx0Lm8tdGVhc2VyX190YWcge1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VyVGFnO1xuXHR9XG5cblx0Lm8tdGVhc2VyX190YWctc3VmZml4IHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlclRhZ1N1ZmZpeDtcblx0fVxuXG5cdC5vLXRlYXNlcl9faGVhZGluZyB7XG5cdFx0QGluY2x1ZGUgb1RlYXNlckhlYWRpbmc7XG5cdH1cblxuXHQuby10ZWFzZXJfX3N0YW5kZmlyc3Qge1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VyU3RhbmRmaXJzdDtcblx0fVxufVxuXG5AbWl4aW4gX29UZWFzZXJFbGVtZW50c0ltYWdlcyB7XG5cdC5vLXRlYXNlcl9faW1hZ2UtcGxhY2Vob2xkZXIge1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VySW1hZ2VQbGFjZWhvbGRlcjtcblx0fVxuXG5cdC5vLXRlYXNlcl9faW1hZ2Uge1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VySW1hZ2U7XG5cdH1cblxuXHRAaW5jbHVkZSBfb1RlYXNlckhlYWRzaG90O1xufVxuXG5AbWl4aW4gX29UZWFzZXJFbGVtZW50c1RpbWVzdGFtcCB7XG5cdC5vLXRlYXNlcl9fdGltZXN0YW1wIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlclRpbWVzdGFtcDtcblx0fVxuXG5cdEBpbmNsdWRlIF9vVGVhc2VyVGltZXN0YW1wVmFyaWFudHM7XG59XG5cbkBtaXhpbiBfb1RlYXNlckVsZW1lbnRzUHJvbW90ZWQge1xuXHQuby10ZWFzZXItLXByb21vdGVkLWNvbnRlbnQsXG5cdC5vLXRlYXNlci0tcGFpZC1wb3N0IHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlclBhcnRuZXJDb250ZW50O1xuXHR9XG5cblx0Lm8tdGVhc2VyLS1wcm9tb3RlZC1jb250ZW50IHtcblx0XHQuby10ZWFzZXJfX2hlYWRpbmcgYSB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpbmsoXG5cdFx0XHRcdCRleHRlcm5hbDogdHJ1ZSxcblx0XHRcdFx0JGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlLFxuXHRcdFx0XHQkdGhlbWU6IChcblx0XHRcdFx0XHQnYmFzZSc6ICRfby10ZWFzZXItYmFzZS1jb2xvcixcblx0XHRcdFx0XHQnaG92ZXInOiAkX28tdGVhc2VyLWZvY3VzLWhvdmVyXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG59XG5cbkBtaXhpbiBfb1RlYXNlckVsZW1lbnRzUmVsYXRlZEl0ZW1zIHtcblx0Lm8tdGVhc2VyX19yZWxhdGVkIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlclJlbGF0ZWQ7XG5cdH1cblxuXHQuby10ZWFzZXJfX3JlbGF0ZWQtaXRlbSB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJSZWxhdGVkSXRlbTtcblx0fVxufVxuXG5AbWl4aW4gX29UZWFzZXJUaGVtZVN0YW5kYXJkIHtcblx0Lm8tdGVhc2VyLS1vcGluaW9uIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlck9waW5pb247XG5cblx0XHQmLm8tdGVhc2VyLS1vcGluaW9uLWJhY2tncm91bmQge1xuXHRcdFx0QGluY2x1ZGUgX29UZWFzZXJPcGluaW9uQmFja2dyb3VuZDtcblx0XHR9XG5cdH1cblxuXHQuby10ZWFzZXItLWludmVyc2Uge1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VySW52ZXJzZTtcblx0fVxufVxuXG5AbWl4aW4gX29UZWFzZXJUaGVtZVNtYWxsIHtcblx0Lm8tdGVhc2VyLS1zbWFsbCB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJTbWFsbDtcblxuXHRcdCYuby10ZWFzZXItLXN0YWNrZWQge1xuXHRcdFx0QGluY2x1ZGUgX29UZWFzZXJTbWFsbFN0YWNrZWQ7XG5cdFx0fVxuXG5cdFx0Ji5vLXRlYXNlci0taW1hZ2UtcG9zaXRpb24tcmlnaHQge1xuXHRcdFx0QGluY2x1ZGUgX29UZWFzZXJTbWFsbEltYWdlUG9zaXRpb25SaWdodDtcblx0XHR9XG5cdH1cbn1cblxuQG1peGluIF9vVGVhc2VyVGhlbWVMYXJnZSB7XG5cdC5vLXRlYXNlci0tbGFyZ2UsXG5cdC5vLXRlYXNlci0tbGFyZ2UtcG9ydHJhaXQsXG5cdC5vLXRlYXNlci0tbGFyZ2UtbGFuZHNjYXBlIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlckxhcmdlO1xuXHR9XG5cblx0Lm8tdGVhc2VyLS1sYXJnZS1wb3J0cmFpdCB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJMYXJnZUltYWdlUG9ydHJhaXQ7XG5cdH1cblxuXHQuby10ZWFzZXItLWxhcmdlLWxhbmRzY2FwZSB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJMYXJnZUltYWdlTGFuZHNjYXBlO1xuXHR9XG5cblx0Lm8tdGVhc2VyLS1sYXJnZS5vLXRlYXNlci0taGFzLWltYWdlIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlckltYWdlQ29udGFpbmVyO1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VyTGFyZ2VXaXRoSW1hZ2U7XG5cdH1cbn1cblxuQG1peGluIF9vVGVhc2VyVGhlbWVIZXJvIHtcblx0Lm8tdGVhc2VyLS1oZXJvIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlckxhcmdlO1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VySGVybztcblxuXHRcdC8vIEFkZGl0aW9uYWwgby10ZWFzZXIgY2xhc3Mgc2VsZWN0b3IgaXMgdXNlZCB0byBmaWdodCBvLW5vcm1hbGlzZVxuXHRcdC8vIHNwZWNpZmljaXR5LCB3aGljaCBpcyB1bmZvcnR1bmF0ZWx5IGhpZ2ggdG8gc3VwcG9ydCBhIDpmb2N1cy12aXNpYmxlXG5cdFx0Ly8gcG9seWZpbGxcblx0XHQmLm8tdGVhc2VyICo6Zm9jdXMtdmlzaWJsZSxcblx0XHQmLm8tdGVhc2VyICo6Zm9jdXMge1xuXHRcdFx0b3V0bGluZS1jb2xvcjogY3VycmVudENvbG9yO1xuXHRcdH1cblxuXHRcdCYuby10ZWFzZXItLWhhcy1pbWFnZSB7XG5cdFx0XHRAaW5jbHVkZSBfb1RlYXNlckltYWdlQ29udGFpbmVyO1xuXHRcdFx0QGluY2x1ZGUgX29UZWFzZXJIZXJvSW1hZ2VDb250YWluZXI7XG5cblx0XHRcdCYuby10ZWFzZXItLWhlcm8taW1hZ2Uge1xuXHRcdFx0XHRAaW5jbHVkZSBfb1RlYXNlckhlcm9JbWFnZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLm8tdGVhc2VyLS1zdGFuZGFsb25lIHtcblx0XHRcdEBpbmNsdWRlIF9vVGVhc2VySGVyb1N0YW5kYWxvbmU7XG5cdFx0fVxuXHR9XG5cblx0Lm8tdGVhc2VyLS1jZW50cmUge1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VySGVyb0NlbnRyZTtcblxuXHRcdCYuby10ZWFzZXItLWhhcy1pbWFnZSB7XG5cdFx0XHRAaW5jbHVkZSBfb1RlYXNlckhlcm9DZW50cmVJbWFnZTtcblx0XHR9XG5cdH1cblxuXHQuby10ZWFzZXItLXN0cmV0Y2hlZCB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJTdHJldGNoZWQ7XG5cdH1cblxuXHQuby10ZWFzZXItLWhlcm8ge1xuXHRcdCYuby10ZWFzZXItLWhpZ2hsaWdodCxcblx0XHQmLm8tdGVhc2VyLS1vcGluaW9uIHtcblx0XHRcdEBpbmNsdWRlIF9vVGVhc2VySGVyb1RoZW1lQmFzZTtcblx0XHR9XG5cblx0XHQmLm8tdGVhc2VyLS1vcGluaW9uIHtcblx0XHRcdEBpbmNsdWRlIF9vVGVhc2VySGVyb09waW5pb247XG5cdFx0fVxuXG5cdFx0Ji5vLXRlYXNlci0taGlnaGxpZ2h0IHtcblx0XHRcdEBpbmNsdWRlIF9vVGVhc2VySGlnaGxpZ2h0O1xuXHRcdH1cblxuXHRcdCYuby10ZWFzZXItLWV4dHJhLWFydGljbGUge1xuXHRcdFx0QGluY2x1ZGUgX29UZWFzZXJIZXJvRXh0cmE7XG5cdFx0fVxuXHR9XG5cblx0Lm8tdGVhc2VyLS1taWRzbGljZS5vLXRlYXNlci0taGFzLWltYWdlIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlckhlcm9NaWRTbGljZTtcblx0fVxufVxuXG5AbWl4aW4gX29UZWFzZXJUaGVtZVRvcFN0b3JpZXMge1xuXHQuby10ZWFzZXItLXRvcC1zdG9yeSB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJMYXJnZTtcblx0XHRAaW5jbHVkZSBfb1RlYXNlclRvcFN0b3J5QmFzZTtcblxuXHRcdCYuby10ZWFzZXItLWxhbmRzY2FwZSxcblx0XHQmLm8tdGVhc2VyLS1zdGFuZGFsb25lIHtcblx0XHRcdEBpbmNsdWRlIF9vVGVhc2VyVG9wU3RvcnlTdGFuZGFsb25lO1xuXHRcdH1cblxuXHRcdCYuby10ZWFzZXItLWxhbmRzY2FwZSxcblx0XHQmLm8tdGVhc2VyLS1iaWctc3Rvcnkge1xuXHRcdFx0QGluY2x1ZGUgX29UZWFzZXJUb3BTdG9yeUxhbmRzY2FwZTtcblx0XHR9XG5cblx0XHQmLm8tdGVhc2VyLS1iaWctc3Rvcnkge1xuXHRcdFx0QGluY2x1ZGUgX29UZWFzZXJUb3BTdG9yeUJpZ1N0b3J5O1xuXHRcdH1cblx0fVxufVxuXG5AbWl4aW4gX29UZWFzZXJUaGVtZUF1ZGlvIHtcblx0Lm8tdGVhc2VyLS1hdWRpbyB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJBdWRpbztcblx0fVxufVxuXG5AbWl4aW4gX29UZWFzZXJUaGVtZVZpZGVvIHtcblx0Lm8tdGVhc2VyLS12aWRlbyB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJWaWRlbztcblx0fVxuXG5cdC5vLXRlYXNlci0taGFzLXZpZGVvIHtcblx0XHRAaW5jbHVkZSBfb1RlYXNlckJpZ1ZpZGVvO1xuXHR9XG59XG5cbkBtaXhpbiBfb1RlYXNlclRoZW1lUGFja2FnZSB7XG5cdC5vLXRlYXNlci0tYmFzaWMtcGFja2FnZSxcblx0Lm8tdGVhc2VyLS1zcGVjaWFsLXJlcG9ydC1wYWNrYWdlLFxuXHQuby10ZWFzZXItLWV4dHJhLXBhY2thZ2Uge1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VyUGFja2FnZTtcblx0fVxuXG5cdC5vLXRlYXNlci0tc3BlY2lhbC1yZXBvcnQtcGFja2FnZSB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJTcGVjaWFsUmVwb3J0UGFja2FnZTtcblx0fVxuXG5cdC5vLXRlYXNlci0tZXh0cmEtcGFja2FnZSB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJFeHRyYVBhY2thZ2U7XG5cdH1cbn1cbiIsIi8vLyBJcyBzaWxlbnQgc2V0dGluZ1xuJG8tdGVhc2VyLWlzLXNpbGVudDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIExpc3Qgb2YgdGhlbWUgc3R5bGVzIGF2YWlsYWJsZVxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuJF9vLXRlYXNlci10aGVtZXM6ICgnc21hbGwnLCAnbGFyZ2UnLCAnc3RhbmRhcmQnLCAndmlkZW8nLCAnYXVkaW8nLCAnaGVybycsICd0b3Atc3RvcmllcycsICdwYWNrYWdlJywgJ2xpdmUnKTtcblxuLy8vIExpc3Qgb2YgZWxlbWVudCBzdHlsZXMgYXZhaWxhYmxlXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4kX28tdGVhc2VyLWVsZW1lbnRzOiAoJ2RlZmF1bHQnLCAnaW1hZ2VzJywgJ3RpbWVzdGFtcCcsICdwcm9tb3RlZCcsICdyZWxhdGVkLWl0ZW1zJywgJ3N5bmRpY2F0aW9uJyk7XG5cbi8vLyBDb21tb25seSB1c2VkIHRleHQgY29sb3VyLlxuLy8vIEB0eXBlIENvbG9yXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4kX28tdGVhc2VyLWJhc2UtY29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL2Jhc2UnLCAndGV4dCcpO1xuXG4vLy8gQ29tbW9ubHkgdXNlZCBob3Zlci9mb2N1cyB0ZXh0IGNvbG91ci5cbi8vLyBAdHlwZSBDb2xvclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuJF9vLXRlYXNlci1mb2N1cy1ob3Zlcjogb0NvbG9yc01peCgkX28tdGVhc2VyLWJhc2UtY29sb3IsICRwZXJjZW50YWdlOiA1NSk7XG5cbi8vLyBDb21tb25seSB1c2VkIHRleHQgY29sb3VyIGZvciBtdXRlZCBjb3B5LCBpbmNsdWRpbmcgdmlzaXRlZCB0ZXh0LlxuLy8vIEB0eXBlIENvbG9yXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4kX28tdGVhc2VyLW11dGVkOiBvQ29sb3JzTWl4KCRfby10ZWFzZXItYmFzZS1jb2xvciwgJHBlcmNlbnRhZ2U6IDYwKTtcblxuLy8vIEB0eXBlIENvbG9yXG4vLy8gQGRlcHJlY2F0ZWRcbi8vLyBAYWNjZXNzIHByaXZhdGVcbiRfby10ZWFzZXItZGVwcmVjYXRlZC1jb21pbmctc29vbi1jb2xvcjogI2ZkOWQwMDtcbiIsIi8vLyBEZWZhdWx0IGltYWdlIHN0eWxlc1xuQG1peGluIF9vVGVhc2VySW1hZ2Uge1xuXHRkaXNwbGF5OiBibG9jaztcblx0d2lkdGg6IDEwMCU7XG5cdG1hcmdpbjogMDtcbn1cblxuLy8vIEltYWdlIHBsYWNlaG9sZGVyIHN0eWxlcyB0byBjcmVhdGUgYSAxNjo5IHNwYWNlXG4vLy8gZm9yIHdoZW4gYW4gaW1hZ2UgaXMgYmVpbmcgbGF6eS1sb2FkZWRcbkBtaXhpbiBfb1RlYXNlckltYWdlUGxhY2Vob2xkZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGhlaWdodDogMDtcblx0cGFkZGluZy1ib3R0b206IDU2LjI1JTtcblx0ei1pbmRleDogMTtcblxuXHQuby10ZWFzZXJfX2ltYWdlIHtcblx0XHRmbG9hdDogbGVmdDtcblx0fVxufVxuXG4vLy8gSGVhZHNob3Qgc3R5bGVzIGFuZCBtb2RpZmljYXRpb24gb2YgY29udGVudCB0byBhY2NvbW1vZGF0ZVxuLy8vIHRoZSBoZWFkc2hvdC4gU2hvdWxkIGJlIHVzZWQgb3V0c2lkZSBvZiBhIHNlbGVjdG9yXG5AbWl4aW4gX29UZWFzZXJIZWFkc2hvdCB7XG5cdC5vLXRlYXNlci0taGFzLWhlYWRzaG90IC5vLXRlYXNlcl9fY29udGVudCB7XG5cdFx0cGFkZGluZy1yaWdodDogOTVweDtcblx0XHRtaW4taGVpZ2h0OiA2MHB4O1xuXHR9XG5cblx0Lm8tdGVhc2VyX19oZWFkc2hvdCB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGJvdHRvbTogMDtcblx0XHRyaWdodDogMDtcblx0XHRoZWlnaHQ6IDc1cHg7XG5cdFx0d2lkdGg6IDc1cHg7XG5cdH1cbn1cbiIsIi8vLyBUaW1lc3RhbXAgYmFzZSBzdHlsZXNcbkBtaXhpbiBfb1RlYXNlclRpbWVzdGFtcCB7XG5cdEBpbmNsdWRlIG9MYWJlbHNUaW1lc3RhbXBDb250ZW50KCk7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHQvLyBNb3ZlcyB0aW1lc3RhbXAgdG8gdGhlIGJvdHRvbSB3aGVuIHN0cmV0Y2hlZCBtb2RpZmllciBpcyB1c2VkXG5cdG1hcmdpbi10b3A6IGF1dG87XG5cdC8vIGFuZCBlbnN1cmVzIHRoZXJlIGlzIGFsd2F5cyBzb21lIGdhcCBhYm92ZVxuXHRwYWRkaW5nLXRvcDogb1NwYWNpbmdCeU5hbWUoJ3M0Jyk7XG59XG5cbi8vLyBUaW1lc3RhbXAgdmFyaWFudCBzdHlsZXMgYWRkaW5nIGNvbG91cmVkIHByZWZpeGVzLlxuLy8vIEluY2x1ZGVzIGtleWZyYW1lIGRlY2xhcmF0aW9uIHNvIG11c3QgYmUgdXNlZCBvdXRzaWRlIG9mXG4vLy8gYSBzZWxlY3RvclxuQG1peGluIF9vVGVhc2VyVGltZXN0YW1wVmFyaWFudHMge1xuXHQvLyBPdXRwdXQgby1sYWJlbHMgaW5kaWNhdG9ycy5cblx0Lm8tdGVhc2VyX190aW1lc3RhbXAge1xuXHRcdEBpbmNsdWRlIG9MYWJlbHNJbmRpY2F0b3JDb250ZW50KCRvcHRzOiAoJ2Jsb2NrJzogdHJ1ZSkpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX190aW1lc3RhbXAtLW5ldyB7XG5cdFx0QGluY2x1ZGUgb0xhYmVsc0luZGljYXRvckNvbnRlbnQoJG9wdHM6ICgnYmxvY2snOiB0cnVlLCAnbW9kaWZpZXInOiAnbmV3JykpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX190aW1lc3RhbXAtLXVwZGF0ZWQge1xuXHRcdEBpbmNsdWRlIG9MYWJlbHNJbmRpY2F0b3JDb250ZW50KCRvcHRzOiAoJ2Jsb2NrJzogdHJ1ZSwgJ21vZGlmaWVyJzogJ3VwZGF0ZWQnKSk7XG5cdH1cblxuXHQvLyBAZGVwcmVjYXRlZCAtIG8tdGVhc2VyX190aW1lc3RhbXAtLWlucHJvZ3Jlc3MgaGFzIGJlZW4gcmVwbGFjZWQgYnkgby10ZWFzZXJfX3RpbWVzdGFtcC0tbGl2ZVxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vRmluYW5jaWFsLVRpbWVzL28tdGVhc2VyL2lzc3Vlcy8xNzNcblx0Lm8tdGVhc2VyX190aW1lc3RhbXAtLWlucHJvZ3Jlc3MsXG5cdC5vLXRlYXNlcl9fdGltZXN0YW1wLS1saXZlIHtcblx0XHRAaW5jbHVkZSBvTGFiZWxzSW5kaWNhdG9yQ29udGVudCgkb3B0czogKCdibG9jayc6IHRydWUsICdtb2RpZmllcic6ICdsaXZlJykpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX190aW1lc3RhbXAtLWNsb3NlZCB7XG5cdFx0QGluY2x1ZGUgb0xhYmVsc0luZGljYXRvckNvbnRlbnQoJG9wdHM6ICgnYmxvY2snOiB0cnVlLCAnbW9kaWZpZXInOiAnY2xvc2VkJykpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX190aW1lc3RhbXAtcHJlZml4IHtcblx0XHRAaW5jbHVkZSBvTGFiZWxzSW5kaWNhdG9yQ29udGVudCgkb3B0czogKCdlbGVtZW50JzogJ3N0YXR1cycpKTtcblx0fVxuXG5cdC5vLXRlYXNlcl9fdGltZXN0YW1wLWRhdGUge1xuXHRcdEBpbmNsdWRlIG9MYWJlbHNJbmRpY2F0b3JDb250ZW50KCRvcHRzOiAoJ2VsZW1lbnQnOiAndGltZXN0YW1wJykpO1xuXHR9XG5cblx0Ly8gT3V0cHV0IG1vZGlmaWVycyBmb3IgY3VzdG9tLCB0ZWFzZXIgc3BlY2lmaWMgaW5kaWNhdG9yIHN0eWxlcy5cblx0Ly8gQGRlcHJlY2F0ZWQgLSByZW1vdmUgdGhlIGBjb21pbmdzb29uYCBtb2RpZmllciBpbiB0aGUgbmV4dCBtYWpvci5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL0ZpbmFuY2lhbC1UaW1lcy9vLXRlYXNlci9pc3N1ZXMvMTczXG5cdC5vLXRlYXNlcl9fdGltZXN0YW1wLS1jb21pbmdzb29uIHtcblx0XHRjb2xvcjogJF9vLXRlYXNlci1kZXByZWNhdGVkLWNvbWluZy1zb29uLWNvbG9yO1xuXHR9XG59XG4iLCJcbi8vLyBCYXNlIHN0eWxlcyBmb3IgbGFiZWxzLlxuLy8vXG4vLy8gQG91dHB1dCBUaGUgb3V0cHV0IGluY2x1ZGVzIGFsbCBzdHlsZXMgZm9yIGEgYmFzaWMgbGFiZWwuXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEJhc2UgbGFiZWwgc3R5bGVzXG4vLy8gICBAaW5jbHVkZSBfb0xhYmVsc0Jhc2VDb250ZW50KCk7XG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29MYWJlbHNCYXNlQ29udGVudCgpIHtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKFxuXHRcdCRzY2FsZTogX29MYWJlbHNHZXQoJ2ZvbnQtc2NhbGUnKSxcblx0XHQkd2VpZ2h0OiAnc2VtaWJvbGQnLFxuXHRcdCRsaW5lLWhlaWdodDogMWVtXG5cdCk7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRtYXJnaW46IDA7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0cGFkZGluZzogKF9vTGFiZWxzR2V0KCdwYWRkaW5nLXZlcnRpY2FsJykgLSBfb0xhYmVsc0dldCgnYm9yZGVyLXdpZHRoJykpIChfb0xhYmVsc0dldCgncGFkZGluZy1ob3Jpem9udGFsJykgLSBfb0xhYmVsc0dldCgnYm9yZGVyLXdpZHRoJykpO1xuXHRjb2xvcjogX29MYWJlbHNHZXQoJ3RleHQtY29sb3InKTtcblx0YmFja2dyb3VuZC1jb2xvcjogX29MYWJlbHNHZXQoJ2JhY2tncm91bmQtY29sb3InKTtcblx0Ym9yZGVyOiBzb2xpZCBfb0xhYmVsc0dldCgnYm9yZGVyLXdpZHRoJykgdHJhbnNwYXJlbnQ7XG59XG5cbi8vLyBTaXplIG1vZGlmaWVycyBmb3IgbGFiZWxzLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzaXplIC0gVGhlIGxhYmVsIHNpemUgdG8gb3V0cHV0IHN0eWxlcyBmb3IuIFRoZSB2YWxpZCBzaXplcyBhcmUgYGJpZ2AgYW5kIGBzbWFsbGAuXG4vLy8gQG91dHB1dCBUaGUgb3V0cHV0IGluY2x1ZGVzIHRoZSBgLm8tbGFiZWxzLS1TSVpFYCBtb2RpZmllciBjbGFzcyBkZWZpbml0aW9uLCB3aGljaCBpbmNsdWRlcyBhbGwgb3ZlcnJpZGVzLlxuLy8vIEBleGFtcGxlIHNjc3MgLSBCaWcgbGFiZWwgc3R5bGVzXG4vLy8gICBAaW5jbHVkZSBfb0xhYmVsc1NpemUoJ2JpZycpO1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTGFiZWxzU2l6ZSgkc2l6ZSkge1xuXHQuby1sYWJlbHMtLSN7JHNpemV9IHtcblx0XHRAaW5jbHVkZSBfb0xhYmVsc1NpemVDb250ZW50KCRzaXplKTtcblx0fVxufVxuXG4vLy8gQWRkIGEgc3RhdGUgbW9kaWZpZXIgZm9yIHN0YW5kYXJkIGxhYmVscy5cbi8vLyBOb3RlIHRoaXMgbWl4aW4gaXMgZG9yIHN0YW5kYXJkIGxhYmVscyBvbmx5LCBub3QgaW5kaWNhdG9yIGxhYmVscy5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfE1hcH0gJHN0YXRlLW5hbWUgLSBUaGUgc3RhbmRhcmQgbGFiZWwgc3RhdGUgdG8gb3V0cHV0IHN0eWxlcyBmb3IuIFNlZSBSRUFETUUgZm9yIGF2YWlsYWJsZSBzdGF0ZXMuXG4vLy8gQHBhcmFtIHtNYXB9ICRvcHRzIFtudWxsXSAtIEEgYnJhbmQgY29uZmlndXJhdGlvbiB3aGljaCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgY3VzdG9tIHN0YW5kYXJkIGxhYmVsIHN0YXRlcy4gU2VlIFJFQURNRSBmb3IgbW9yZSBleGFtcGxlcy5cbi8vLyBAb3V0cHV0IFRoZSBvdXRwdXQgaW5jbHVkZXMgdGhlIGAuby1sYWJlbHMtLVNUQVRFYCBtb2RpZmllciBjbGFzcyBkZWZpbml0aW9uLCB3aGljaCBpbmNsdWRlcyBhbGwgb3ZlcnJpZGVzLlxuLy8vIEBleGFtcGxlIHNjc3MgLSBFeGlzdGluZyBzdGFuZGFyZCBsYWJlbCBzdGF0ZVxuLy8vICAgQGluY2x1ZGUgb0xhYmVsc0FkZFN0YXRlKCd0aWVyLWdvbGQnKTtcbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3VzdG9tIHN0YW5kYXJkIGxhYmVsIHN0YXRlXG4vLy8gICBAaW5jbHVkZSBvTGFiZWxzQWRkU3RhdGUoJ2NpdHJ1cy1mcnVpdCcsIChcbi8vLyAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBvQ29sb3JzQnlOYW1lKCdsZW1vbicpXG4vLy8gICApKTtcbi8vLyBAYWNjZXNzIHB1YmxpY1xuQG1peGluIG9MYWJlbHNBZGRTdGF0ZSgkc3RhdGUtbmFtZSwgJG9wdHM6IG51bGwpIHtcblxuXHQvLyBJZiB3ZSBoYXZlIGEgY3VzdG9tIGNvbmZpZywgd2UgdXNlIHRoYXQgaW5zdGVhZCBvZiBvbmUgb2YgdGhlXG5cdC8vIHByZWNvbmZpZ3VyZWQgc3RhdGVzXG5cdCR2YXJpYW50OiBpZigkb3B0cywgJG9wdHMsICRzdGF0ZS1uYW1lKTtcblxuXHQuby1sYWJlbHMtLSN7JHN0YXRlLW5hbWV9IHtcblx0XHRAaW5jbHVkZSBfb0xhYmVsc1N0YW5kYXJkU3RhdGVDb250ZW50KCR2YXJpYW50KTtcblx0fVxufVxuXG4vLy8gU3R5bGVzIGZvciBhIHN0YW5kYXJkIGxhYmVsIHdpdGhvdXQgYW4gYG8tbGFiZWxzYCBDU1MgY2xhc3MuXG4vLy8gUmVjb21tZW5kZWQgb25seSB3aGVuIGEgY3VzdG9tIGNsYXNzIG5hbWUgaXMgcmVxdWlyZWQsIGZvciBleGFtcGxlIHdpdGhpbiBhbm90aGVyIGNvbXBvbmVudC5cbi8vLyBAb3V0cHV0IFN0eWxlcyBmb3IgYSBsYWJlbCB3aXRob3V0IGEgQ1NTIHNlbGVjdG9yLlxuLy8vIEBwYXJhbSB7TWFwfSAkb3B0cyAtIEEgbWFwIGNvbnRhaW5pbmcgYSBib29sZWFuIHRvIG91dHB1dCBiYXNlIGxhYmVsIHN0eWxlcywgcGx1cyB0aGUgbGFiZWwgc2l6ZSBhbmQgc3RhdGUgKGEgc3RhdGUgbmFtZSBvciBjdXN0b20gc3RhdGUgbWFwKS5cbi8vLyBAZXhhbXBsZSBBbiBleGlzdGluZyBsYWJlbC5cbi8vLyBcdC5vLWV4YW1wbGUtbXktbGFiZWwge1xuLy8vIFx0XHRAaW5jbHVkZSBvTGFiZWxzQ29udGVudCgkb3B0czogKCdiYXNlJzogdHJ1ZSwgJ3NpemUnOiAnYmlnJywgJ3N0YXRlJzogJ3RpZXItZ29sZCcpKTtcbi8vLyBcdH1cbi8vLyBAZXhhbXBsZSBBIGN1c3RvbSBsYWJlbC5cbi8vLyBcdC5vLWV4YW1wbGUtbXktY3VzdG9tLWxhYmVsIHtcbi8vLyBcdFx0QGluY2x1ZGUgb0xhYmVsc0NvbnRlbnQoJG9wdHM6IChcbi8vLyBcdFx0XHQnYmFzZSc6IHRydWUsXG4vLy8gXHRcdFx0J3NpemUnOiAnYmlnJyxcbi8vLyBcdFx0XHQnc3RhdGUnOiAoXG4vLy8gXHRcdFx0XHQnYmFja2dyb3VuZC1jb2xvcic6IG9Db2xvcnNCeU5hbWUoJ2xlbW9uJylcbi8vLyBcdFx0XHQpXG4vLy8gXHRcdCkpO1xuLy8vIFx0fVxuLy8vIEBhY2Nlc3MgcHVibGljXG5AbWl4aW4gb0xhYmVsc0NvbnRlbnQoJG9wdHM6ICgpKSB7XG5cdCRiYXNlOiBtYXAtZ2V0KCRvcHRzLCAnYmFzZScpO1xuXHQkc2l6ZTogbWFwLWdldCgkb3B0cywgJ3NpemUnKTtcblx0JHN0YXRlOiBtYXAtZ2V0KCRvcHRzLCAnc3RhdGUnKTtcblxuXHRAaWYgJGJhc2Uge1xuXHRcdEBpbmNsdWRlIF9vTGFiZWxzQmFzZUNvbnRlbnQoKTtcblx0fVxuXG5cdEBpZiAkc3RhdGUge1xuXHRcdEBpbmNsdWRlIF9vTGFiZWxzU3RhbmRhcmRTdGF0ZUNvbnRlbnQoJHN0YXRlKTtcblx0fVxuXG5cdEBpZiAkc2l6ZSB7XG5cdFx0QGluY2x1ZGUgX29MYWJlbHNTaXplQ29udGVudCgkc2l6ZSk7XG5cdH1cbn1cblxuXG4vLy8gU3R5bGVzIGZvciBhIHRpbWVzdGFtcCBsYWJlbCBpLmUuIC5vLWxhYmVscy10aW1lc3RhbXAuXG4vLy8gVGhpcyBtaXhpbiBpcyBub3QgcmVjb21tZW5kLiBJbnN0ZWFkIHRoZSB0aGUgYG9MYWJlbHNgIHByaW1hcnkgbWl4aW4gYW5kXG4vLy8gby1sYWJlbHMgbWFya3VwLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlcmUgdXNpbmcgby1sYWJlbHMgbWFya3VwIGlzXG4vLy8gbm90IHBvc3NpYmxlLlxuLy8vXG4vLy8gSWYgb3V0cHV0dGluZyBhIHRpbWVzdGFtcCBpbiBhIG5vbi1sYWJlbCBjb250ZXh0IHNlZVxuLy8vIFtvLWVkaXRvcmlhbC10eXBvZ3JhcGh5XShodHRwczovL3JlZ2lzdHJ5Lm9yaWdhbWkuZnQuY29tL2NvbXBvbmVudHMvby1lZGl0b3JpYWwtdHlwb2dyYXBoeSkuXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSB0aW1lc3RhbXAgbGFiZWwgd2l0aCBjdXN0b20gbWFya3VwLlxuLy8vICAgIC5teS10aW1lc3RhbXAtbGFiZWwge1xuLy8vICAgICAgICBAaW5jbHVkZSBvTGFiZWxzVGltZXN0YW1wQ29udGVudCgpO1xuLy8vICAgIH1cbi8vLyBAYWNjZXNzIHB1YmxpY1xuQG1peGluIG9MYWJlbHNUaW1lc3RhbXBDb250ZW50KCkge1xuXHRAZXh0ZW5kICVfby1sYWJlbHMtdGltZXN0YW1wO1xufVxuXG4vLy8gU3R5bGVzIGZvciBpbmRpY2F0b3IgbGFiZWwgZWxlbWVudHMgZS5nLiAuby1sYWJlbHMtaW5kaWNhdG9yLlxuLy8vIFRoaXMgbWl4aW4gaXMgbm90IHJlY29tbWVuZC4gSW5zdGVhZCB0aGUgdGhlIGBvTGFiZWxzYCBwcmltYXJ5IG1peGluIGFuZFxuLy8vIG8tbGFiZWxzIG1hcmt1cC4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHdoZXJlIHVzaW5nIG8tbGFiZWxzIG1hcmt1cCBpc1xuLy8vIG5vdCBwb3NzaWJsZS5cbi8vLyBAZXhhbXBsZSBPdXRwdXQgaW5kaWNhdG9yIGxhYmVscyB3aXRoIGN1c3RvbSBtYXJrdXAuXG4vLy8gICAgLm15LWluZGljYXRvci1sYWJlbCB7XG4vLy8gICAgICAgIEBpbmNsdWRlIG9MYWJlbHNJbmRpY2F0b3JDb250ZW50KCRvcHRzOiAoJ2Jsb2NrJzogdHJ1ZSkpO1xuLy8vICAgIH1cbi8vLyAgICAubXktaW5kaWNhdG9yLWxhYmVsLS1uZXcge1xuLy8vICAgICAgICBAaW5jbHVkZSBvTGFiZWxzSW5kaWNhdG9yQ29udGVudCgkb3B0czogKCdibG9jayc6IHRydWUsICdtb2RpZmllcic6ICduZXcnKSk7XG4vLy8gICAgfVxuLy8vICAgIC5teS1pbmRpY2F0b3ItbGFiZWwtLXVwZGF0ZWQge1xuLy8vICAgICAgICBAaW5jbHVkZSBvTGFiZWxzSW5kaWNhdG9yQ29udGVudCgkb3B0czogKCdibG9jayc6IHRydWUsICdtb2RpZmllcic6ICd1cGRhdGVkJykpO1xuLy8vICAgIH1cbi8vLyAgICAubXktaW5kaWNhdG9yLWxhYmVsLS1jbG9zZWQge1xuLy8vICAgICAgICBAaW5jbHVkZSBvTGFiZWxzSW5kaWNhdG9yQ29udGVudCgkb3B0czogKCdibG9jayc6IHRydWUsICdtb2RpZmllcic6ICdjbG9zZWQnKSk7XG4vLy8gICAgfVxuLy8vICAgIC5teS1pbmRpY2F0b3ItbGFiZWwtLWxpdmUge1xuLy8vICAgICAgICBAaW5jbHVkZSBvTGFiZWxzSW5kaWNhdG9yQ29udGVudCgkb3B0czogKCdibG9jayc6IHRydWUsICdtb2RpZmllcic6ICdsaXZlJykpO1xuLy8vICAgIH1cbi8vLyAgICAubXktaW5kaWNhdG9yLWxhYmVsX19zdGF0dXMge1xuLy8vICAgICAgICBAaW5jbHVkZSBvTGFiZWxzSW5kaWNhdG9yQ29udGVudCgkb3B0czogKCdlbGVtZW50JzogJ3N0YXR1cycpKTtcbi8vLyAgICB9XG4vLy8gICAgLm15LWluZGljYXRvci1sYWJlbF9fdGltZXN0YW1wIHtcbi8vLyAgICAgICAgQGluY2x1ZGUgb0xhYmVsc0luZGljYXRvckNvbnRlbnQoJG9wdHM6ICgnZWxlbWVudCc6ICd0aW1lc3RhbXAnKSk7XG4vLy8gICAgfVxuLy8vIEBwYXJhbSB7U3Rpbmd8TWFwfSAkb3BzIC0gdGhlIEJFTSBlbGVtZW50IHRvIG91dHB1dCBzdHlsZXMgZm9yLCBzZWUgZXhhbXBsZS5cbi8vLyBAYWNjZXNzIHB1YmxpY1xuQG1peGluIG9MYWJlbHNJbmRpY2F0b3JDb250ZW50KCRvcHRzOiAoKSkge1xuXHQkbW9kaWZpZXI6IG1hcC1nZXQoJG9wdHMsICdtb2RpZmllcicpO1xuXHQkZWxlbWVudDogbWFwLWdldCgkb3B0cywgJ2VsZW1lbnQnKTtcblx0JGJsb2NrOiBtYXAtZ2V0KCRvcHRzLCAnYmxvY2snKTtcblx0Ly8gVmFsaWRhdGUgZWxlbWVudC5cblx0Ly8gVGhlIHRpbWVzdGFtcCBlbGVtZW50IC5vLWxhYmVscy1pbmRpY2F0b3JfX3RpbWVzdGFtcCBlbGVtZW50XG5cdC8vIGN1cnJlbnRseSBoYXMgbm8gc3R5bGVzIGJ1dCBtYXkgZG8gaW4gdGhlIGZ1dHVyZS5cblx0JHZhbGlkLWVsZW1lbnRzOiAoJ3N0YXR1cycsICd0aW1lc3RhbXAnKTtcblx0QGlmICRlbGVtZW50IGFuZCBub3QgaW5kZXgoJHZhbGlkLWVsZW1lbnRzLCAkZWxlbWVudCkge1xuXHRcdEBlcnJvciAnRWxlbWVudCBtdXN0IGJlIG9uZSBvZiBcIiN7JHZhbGlkLWVsZW1lbnRzfVwiIGlmIHNldC4gXCIjeyRlbGVtZW50fVwiIGdpdmVuLic7XG5cdH1cblx0Ly8gT3V0cHV0IGJsb2NrIFwiYmFzZVwiIHN0eWxlcyBpLmUgLm8tbGFiZWxzLWluZGljYXRvclxuXHRAaWYgJGJsb2NrIGFuZCBub3QgJG1vZGlmaWVyIHtcblx0XHRAZXh0ZW5kICVfby1sYWJlbHMtaW5kaWNhdG9yO1xuXHR9XG5cdC8vIE91dHB1dCBtb2RpZmllciBzdHlsZXMgZS5nIC5vLWxhYmVscy1pbmRpY2F0b3ItLWxpdmVcblx0QGlmICRibG9jayBhbmQgJG1vZGlmaWVyIHtcblx0XHRAaW5jbHVkZSBfb0xhYmVsc0luZGljYXRvclN0YXR1c0NvbnRlbnQoJG1vZGlmaWVyKTtcblx0fVxuXHQvLyBPdXRwdXQgc3RhdHVzIGVsZW1lbnQgc3R5bGVzIGkuZSAuby1sYWJlbHMtaW5kaWNhdG9yX19zdGF0dXNcblx0QGlmICRlbGVtZW50ID09ICdzdGF0dXMnIHtcblx0XHRAZXh0ZW5kICVfby1sYWJlbHMtaW5kaWNhdG9yX19zdGF0dXM7XG5cdH1cbn1cblxuLy8vIFN0eWxlcyB0byBjaGFuZ2UgdGhlIHNpemUgb2YgYSBzdGFuZGFyZCBsYWJlbC5cbi8vLyBAcGFyYW0ge1N0aW5nfSAkc2l6ZSAtIFRoZSBsYWJlbCBzaXplIHRvIG91dHB1dCBzdHlsZXMgZm9yLiBUaGUgdmFsaWQgc2l6ZXMgYXJlIGBiaWdgIGFuZCBgc21hbGxgLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTGFiZWxzU2l6ZUNvbnRlbnQoJHNpemUpIHtcblx0JHNjYWxlOiBfb0xhYmVsc0dldCgnZm9udC1zY2FsZScsICRzaXplKTtcblx0QGlmICRzY2FsZSB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZSwgJGxpbmUtaGVpZ2h0OiAxLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuXHR9XG5cdHBhZGRpbmc6IChfb0xhYmVsc0dldCgncGFkZGluZy12ZXJ0aWNhbCcsICRzaXplKSAtIF9vTGFiZWxzR2V0KCdib3JkZXItd2lkdGgnKSkgKF9vTGFiZWxzR2V0KCdwYWRkaW5nLWhvcml6b250YWwnLCAkc2l6ZSkgLSBfb0xhYmVsc0dldCgnYm9yZGVyLXdpZHRoJykpO1xufVxuXG4vLy8gU3R5bGVzIGZvciBhIHN0YXRlLlxuLy8vIEBwYXJhbSB7U3Rpbmd8TWFwfSAkdmFyaWFudCAtIEFuIGV4aXN0aW5nIHN0YXRlIG5hbWUgb3IgYSBjdXN0b20gc3RhdGUgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTGFiZWxzU3RhbmRhcmRTdGF0ZUNvbnRlbnQoJHZhcmlhbnQpIHtcblx0YmFja2dyb3VuZC1jb2xvcjogX29MYWJlbHNHZXQoJ2JhY2tncm91bmQtY29sb3InLCAkdmFyaWFudCk7XG5cdGJvcmRlci1jb2xvcjogX29MYWJlbHNHZXQoJ2JvcmRlci1jb2xvcicsICR2YXJpYW50KTtcblx0dGV4dC10cmFuc2Zvcm06IF9vTGFiZWxzR2V0KCd0ZXh0LXRyYW5zZm9ybScsICR2YXJpYW50KTtcblxuXHQvLyBTZXQgdGV4dCBjb2xvdXIgb3IgY2FsY3VsYXRlIGJhc2VkIG9uIGJhY2tncm91bmRcblx0QGlmIF9vTGFiZWxzR2V0KCd0ZXh0LWNvbG9yJywgJHZhcmlhbnQpIHtcblx0XHRjb2xvcjogX29MYWJlbHNHZXQoJ3RleHQtY29sb3InLCAkdmFyaWFudCk7XG5cdH0gQGVsc2Uge1xuXHRcdGNvbG9yOiBvQ29sb3JzR2V0VGV4dENvbG9yKF9vTGFiZWxzR2V0KCdiYWNrZ3JvdW5kLWNvbG9yJywgJHZhcmlhbnQpLCAxMDApO1xuXHR9XG5cblx0Ly8gU2V0IHRoZSBzcGFjaW5nXG5cdEBpZiBfb0xhYmVsc0dldCgncGFkZGluZy12ZXJ0aWNhbCcsICR2YXJpYW50KSBhbmQgX29MYWJlbHNHZXQoJ3BhZGRpbmctaG9yaXpvbnRhbCcsICR2YXJpYW50KSB7XG5cdFx0cGFkZGluZzogKF9vTGFiZWxzR2V0KCdwYWRkaW5nLXZlcnRpY2FsJywgJHZhcmlhbnQpIC0gX29MYWJlbHNHZXQoJ2JvcmRlci13aWR0aCcpKSAoX29MYWJlbHNHZXQoJ3BhZGRpbmctaG9yaXpvbnRhbCcsICR2YXJpYW50KSAtIF9vTGFiZWxzR2V0KCdib3JkZXItd2lkdGgnKSk7XG5cdH1cbn1cblxuLy8vIFN0eWxlcyBmb3IgaW5kaWNhdG9yIGxhYmVsIHN0YXR1c2VzLlxuLy8vIEBwYXJhbSB7U3Rpbmd9ICRzdGF0dXMgLSBBbiBleGlzdGluZyBpbmRpY2F0b3Igc3RhdHVzIGUuZy4gbGl2ZSwgY2xvc2VkLCBuZXcsIHVwZGF0ZWRcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb0xhYmVsc0luZGljYXRvclN0YXR1c0NvbnRlbnQoJHN0YXR1cykge1xuXHRAaWYgbm90IGluZGV4KCRfby1sYWJlbHMtaW5kaWNhdG9yLXN0YXR1cywgJHN0YXR1cykge1xuXHRcdEBlcnJvciAnXCIjeyRzdGF0dXN9XCIgaXMgbm90IGFuIGluZGljYXRvciBsYWJlbCBzdGF0dXMuICcgK1xuXHRcdFx0J0V4cGVjdGVkIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgc3RhdHVzZXM6ICN7JF9vLWxhYmVscy1pbmRpY2F0b3Itc3RhdHVzfS4nO1xuXHR9XG5cdC8vIEFsbCBpbmRpY2F0b3IgbGFiZWxzIGN1cnJlbnRseSB1c2UgdGhlIHNhbWUgY29sb3VyIGV4Y2VwdCB0aGUgXCJjbG9zZWRcIi5cblx0Ly8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGN1c3RvbWlzZSBpbmRpY2F0b3IgbGFiZWxzIGN1cnJlbnRseSBidXQgdGhpc1xuXHQvLyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZSwgZS5nLiBmb3IgdGhlIGludGVybmFsIGJyYW5kOlxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vRmluYW5jaWFsLVRpbWVzL28tbGFiZWxzL2lzc3Vlcy81OFxuXHRAaWYgJHN0YXR1cyA9PSAnY2xvc2VkJyB7XG5cdFx0QGV4dGVuZCAlX28tbGFiZWxzLWluZGljYXRvci1jbG9zZWQtY29sb3I7XG5cdH0gQGVsc2Uge1xuXHRcdEBleHRlbmQgJV9vLWxhYmVscy1pbmRpY2F0b3ItbGl2ZS1jb2xvcjtcblx0fVxuXHRAZXh0ZW5kICVfby1sYWJlbHMtdGltZXN0YW1wLXR5cG9ncmFwaHk7XG5cblx0QGlmKCRzdGF0dXMgPT0gJ2xpdmUnKSB7XG5cdFx0JiA+ICVfby1sYWJlbHMtaW5kaWNhdG9yX19zdGF0dXM6YmVmb3JlIHtcblx0XHRcdGFuaW1hdGlvbjogX28tbGFiZWxzLWxpdmUtcHVsc2UgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcblx0XHRcdC8vIFByZXZlbnQgYW5pbWF0aW9uIG9mIHRoZSBsaXZlIGxhYmVsIGlmIHRoZSByZWFkZXIgaGFzIGluZGljYXRlZFxuXHRcdFx0Ly8gdGhhdCB0aGV5IHByZWZlciByZWR1Y2VkIG1vdGlvbi4gVGhpcyBtYXkgYmUgY29uc2VydmF0aXZlIGJ1dFxuXHRcdFx0Ly8gYXMgdGhlIGxpdmUgaW5kaWNhdG9yIGlzIHByZXNlbnRlZCBhbG9uZ3NpZGUgY29udGVudCAoaW5jbHVkaW5nXG5cdFx0XHQvLyB0aGUgZnJvbnQgcGFnZSBhdCB0aGUgdGltZSBvZiB3cml0aW5nKSB3ZSBkbyBub3Qgd2FudCB0byByaXNrXG5cdFx0XHQvLyBzZXZlcmVseSBkaXN0cmFjdGluZyBzb21lIHJlYWRlcnMuXG5cdFx0XHQvLyBodHRwczovL3d3dy53My5vcmcvV0FJL1dDQUcyMS9VbmRlcnN0YW5kaW5nL3BhdXNlLXN0b3AtaGlkZS5odG1sXG5cdFx0XHRAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pIHtcblx0XHRcdFx0YW5pbWF0aW9uOiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIG91dHB1dCBrZXlmcmFtZXMgb25jZSB3aGVuIGxpdmUgc3RhdHVzIGlzIG91dHB1dFxuXHRcdEBpZigkc3RhdHVzID09ICdsaXZlJyBhbmQgJF9vLWxhYmVscy1pbmRpY2F0b3ItbGl2ZS1wdWxzZS1vdXRwdXQ6IGZhbHNlKSB7XG5cdFx0XHQkX28tbGFiZWxzLWluZGljYXRvci1saXZlLXB1bHNlLW91dHB1dDogdHJ1ZSAhZ2xvYmFsO1xuXHRcdFx0QGtleWZyYW1lcyBfby1sYWJlbHMtbGl2ZS1wdWxzZSB7XG5cdFx0XHRcdDAlIHtcblx0XHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0XHR9XG5cdFx0XHRcdDMwJSB7XG5cdFx0XHRcdFx0b3BhY2l0eTogMC40O1xuXHRcdFx0XHR9XG5cdFx0XHRcdDcwJSB7XG5cdFx0XHRcdFx0b3BhY2l0eTogMC40O1xuXHRcdFx0XHR9XG5cdFx0XHRcdDEwMCUge1xuXHRcdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIkBtaXhpbiBfb1RlYXNlclBhcnRuZXJDb250ZW50IHtcblx0Y29sb3I6IG9Db2xvcnNCeU5hbWUoJ2JsYWNrJyk7XG5cblx0Lm8tdGVhc2VyX19tZXRhIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAtMSwgJHdlaWdodDogJ3NlbWlib2xkJyk7XG5cdFx0Y29sb3I6ICRfby10ZWFzZXItbXV0ZWQ7XG5cdFx0bWFyZ2luLWJvdHRvbTogb1NwYWNpbmdCeU5hbWUoJ3MyJyk7XG5cdH1cblxuXHQuby10ZWFzZXJfX3Byb21vdGVkLXByZWZpeCB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMCwgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCdtYXRpc3NlJyk7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQuby10ZWFzZXJfX3Byb21vdGVkLWJ5IHtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHR9XG59XG4iLCIvLy8gT3V0cHV0IHN0eWxlcyBmb3IgYW4gU1ZHIGljb24uXG4vLy8gU3R5bGVzIHRoZSBpY29uIGFzIGEgYmFja2dyb3VuZCBpbWFnZSwgc2V0dGluZyBhIHdpZHRoIGFuZCBoZWlnaHQgb24gdGhlIGVsZW1lbnQgYXMgcmVxdWVzdGVkLlxuLy8vIEEgZmFsbGJhY2sgYmFja2dyb3VuZCBmb3IgV2luZG93cyBIaWdoIENvbnRyYXN0IG1vZGUgaXMgYWxzbyBvdXRwdXQuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkaWNvbi1uYW1lIC0gVGhpcyBzaG91bGQgYmUgYSByZWZlcmVuY2UgdG8gYW4gaWNvbiBpbmNsdWRlZCBpbiBvLWljb25zIGVnIGFycm93LWRvd25cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGNvbG9yIC0gVGhpcyBzaG91bGQgYmUgYSBoZXggY29sb3VyIHZhbHVlLiBVc2VkIHRvIGNvbG9yIHRoZSBpY29uLiBXZSBzdWdnZXN0IHVzaW5nIGFuIG8tY29sb3JzIGZ1bmN0aW9uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE51bGx9ICRzaXplIFsxMjhdIC0gVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGljb24gKHVuaXRzIG9wdGlvbmFsLCBkZWZhdWx0cyB0byBweCkuIFNldCB0byBgbnVsbGAgdG8gc2V0IG5vIHdpZHRoIG9yIGhlaWdodC5cbi8vLyBAcGFyYW0ge0Jvb2x9ICRpbmNsdWRlLWJhc2Utc3R5bGVzIFt0cnVlXSAtIElmIHRydWUsIHdpbGwgb3V0cHV0IHN0eWxlIHJ1bGVzIGZvciB0aGUgY29udGFpbmVyLiBJZiBmYWxzZSB3aWxsIG9ubHkgb3V0cHV0IHRoZSBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnR5XG4vLy8gQHBhcmFtIHtCb29sfSAkaGlnaC1jb250cmFzdC1mYWxsYmFjayBbdHJ1ZV0gLSBUbyBvdXRwdXQgTWljcm9zb2Z0IEhpZ2ggQ29udHJhc3QgZmFsbGJhY2sgZm9yIGFjY2Vzc2liaWxpdHkgcmVhc29ucyBvciBub3QuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRpY29uc2V0LXZlcnNpb24gWzFdIC0gQXQgcHJlc2VudCBvbmx5IDEgdmVyc2lvbiBvZiB0aGUgaWNvbiBzZXQgaXMgYXZhaWxhYmxlLlxuQG1peGluIG9JY29uc0NvbnRlbnQoJGljb24tbmFtZSwgJGNvbG9yOiBudWxsLCAkc2l6ZTogMTI4LCAkaW5jbHVkZS1iYXNlLXN0eWxlczogdHJ1ZSwgJGhpZ2gtY29udHJhc3QtZmFsbGJhY2s6IHRydWUsICRpY29uc2V0LXZlcnNpb246IDEpIHtcblx0Ly8gRXJyb3IgaWYgdGhlIGdsb2JhbCAkc3lzdGVtLWNvZGUgdmFyaWFibGUgaXMgbm90IHNldC5cblx0Ly8gVGhpcyBpcyByZXF1aXJlZCBmb3IgaW1hZ2Ugc2VydmljZSByZXF1ZXN0cy5cblx0QGlmKGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ3N5c3RlbS1jb2RlJykgPT0gZmFsc2Ugb3IgdHlwZS1vZigkc3lzdGVtLWNvZGUpICE9ICdzdHJpbmcnKSB7XG5cdFx0QGVycm9yICdBIGdsb2JhbCBcIiRzeXN0ZW0tY29kZVwiIFNhc3MgdmFyaWFibGUgbXVzdCBiZSBzZXQgdG8gYSB2YWxpZCBCaXpvcHMgc3lzdGVtIGNvZGUgKFxcZV04OztodHRwczovL2Jpei1vcHMuaW4uZnQuY29tL2xpc3QvU3lzdGVtc1xcZVxcXFxodHRwczovL2Jpei1vcHMuaW4uZnQuY29tL2xpc3QvU3lzdGVtc1xcZV04OztcXGVcXFxcKS4nO1xuXHR9XG5cblx0Ly8gSWYgdGhlIHNpemUgb2YgdGhlIGljb25zIGhhcyBiZWVuIGdpdmVuIHdpdGhvdXQgYSB1bml0LCBkZWZhdWx0IHRvIHB4LlxuXHRAaWYgKHR5cGUtb2YoJHNpemUpID09ICdudW1iZXInIGFuZCB1bml0bGVzcygkc2l6ZSkpIHtcblx0XHQkc2l6ZTogJHNpemUgKyAwcHg7XG5cdH1cblxuXHQvLyBEZWZpbmUgYmFzZSBpbWFnZSBzZXJ2aWNlIHBhdGguXG5cdCRzY2hlbWU6IFwiZnRpY29uLXYjeyRpY29uc2V0LXZlcnNpb259XCI7XG5cdCRzZXJ2aWNlLXVybDogXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvaW1hZ2UvdjIvaW1hZ2VzL3Jhdy8jeyRzY2hlbWV9OiN7JGljb24tbmFtZX1cIjtcblxuXHQvLyBJbmNsdWRlIGJhc2Ugc3R5bGVzIHNoYXJlZCBieSBhbGwgaWNvbnMuXG5cdEBpZiAoJGluY2x1ZGUtYmFzZS1zdHlsZXMgPT0gdHJ1ZSkge1xuXHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnRCYXNlU3R5bGVzO1xuXHR9XG5cblx0Ly8gU2V0IHRoZSBpY29uIGRpbWVudGlvbnMuXG5cdHdpZHRoOiAkc2l6ZTtcblx0aGVpZ2h0OiAkc2l6ZTtcblxuXHQvLyBJbmNsdWRlIHRoZSBpY29uIHZpYSB0aGUgaW1hZ2Ugc2VydmljZS5cblx0Ly8gQnVpbGQgYW4gaW1hZ2Ugc2VydmljZSB1cmwgZm9yIHRoZSByZXF1ZXN0ZWQgaWNvbi5cblx0JHF1ZXJ5OiBcIj9zb3VyY2U9I3skc3lzdGVtLWNvZGV9XCI7XG5cdEBpZiAkY29sb3IgIT0gbnVsbCB7XG5cdFx0JGNvbG9yOiBzdHItc2xpY2UoaWUtaGV4LXN0cigkY29sb3IpLCA0KTtcblx0XHQkcXVlcnk6ICRxdWVyeSArIFwiJnRpbnQ9JTIzI3skY29sb3J9LCUyMyN7JGNvbG9yfVwiO1xuXHR9XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkc2VydmljZS11cmwgKyAkcXVlcnkgKyBcIiZmb3JtYXQ9c3ZnXCIpO1xuXG5cdC8vIEluY2x1ZGUgYSBmYWxsYmFjayBmb3IgV2luZG93J3MgaGlnaCBjb250cmFzdCBtb2RlLlxuXHQvLyBUaGlzIG1vZGUgcmVtb3ZlcyBiYWNrZ3JvdW5kIGltYWdlcyB1bmxlc3Mgc3BlY2lmY2FsbHkgaW5jbHVkZWRcblx0Ly8gZm9yIGhpZ2ggY29udHJhc3QgbW9kZS5cblx0Ly8gc2Fzcy1saW50OmRpc2FibGUgbm8tdmVuZG9yLXByZWZpeGVzXG5cdEBpZiAkaGlnaC1jb250cmFzdC1mYWxsYmFjayB7XG5cdFx0QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcblx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkc2VydmljZS11cmwgKyBcIj9zb3VyY2U9I3skc3lzdGVtLWNvZGV9JnRpbnQ9JTIzZmZmZmZmLCUyM2ZmZmZmZiZmb3JtYXQ9c3ZnXCIpO1xuXHRcdH1cblxuXHRcdEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYmxhY2stb24td2hpdGUpIHtcblx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkc2VydmljZS11cmwgKyBcIj9zb3VyY2U9I3skc3lzdGVtLWNvZGV9JnRpbnQ9JTIzMDAwMDAwLCUyMzAwMDAwMCZmb3JtYXQ9c3ZnXCIpO1xuXHRcdH1cblx0fVxuXHQvLyBzYXNzLWxpbnQ6ZW5hYmxlIG5vLXZlbmRvci1wcmVmaXhlc1xufVxuXG4vLy8gQmFzZSBzdHlsZXMgZm9yIGFsbCBpY29uc1xuLy8vIEBhY2Nlc3MgcHVibGljXG5AbWl4aW4gb0ljb25zQ29udGVudEJhc2VTdHlsZXMoKSB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0YmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCU7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG4iLCIvLy8gT3V0cHV0IHN0eWxlcyBmb3IgcGFnZSBoZWFkaW5ncy5cbi8vLyBAZXhhbXBsZSBPdXRwdXQgaGVhZGluZyBsZXZlbCAxIHN0eWxlcy5cbi8vLyAgICAgaDEge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5SGVhZGluZygkbGV2ZWw6IDEpO1xuLy8vICAgICB9XG4vLy8gQGV4YW1wbGUgT3V0cHV0IGhlYWRpbmcgbGV2ZWwgNSBzdHlsZXMuXG4vLy8gICAgIGg1IHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUhlYWRpbmcoJGxldmVsOiA1KTtcbi8vLyAgICAgfVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGV2ZWwgLSBUaGUgaGVhZGluZyBsZXZlbCAxLTUuXG5AbWl4aW4gb1R5cG9ncmFwaHlIZWFkaW5nKCRsZXZlbCkge1xuXHQkaGVhZGluZ3M6IChcblx0XHQnaGVhZGluZy1sZXZlbC1vbmUnLFxuXHRcdCdoZWFkaW5nLWxldmVsLXR3bycsXG5cdFx0J2hlYWRpbmctbGV2ZWwtdGhyZWUnLFxuXHRcdCdoZWFkaW5nLWxldmVsLWZvdXInLFxuXHRcdCdoZWFkaW5nLWxldmVsLWZpdmUnLFxuXHRcdCdoZWFkaW5nLWxldmVsLXNpeCcsXG5cdCk7XG5cblx0QGlmKHR5cGUtb2YoJGxldmVsKSAhPSAnbnVtYmVyJyBvciAkbGV2ZWwgPCAxIG9yICRsZXZlbCA+IDYpIHtcblx0XHRAZXJyb3IgJ0hlYWRpbmcgbGV2ZWwgbXVzdCBiZSBhIE51bWJlciAxLTYuIEZvdW5kICN7aW5zcGVjdCgkbGV2ZWwpfS4nO1xuXHR9XG5cblx0JGZyb206IG50aCgkaGVhZGluZ3MsICRsZXZlbCk7XG5cblx0Ly8gR2V0IGhlYWRpbmcgc3R5bGVzIGZyb20gYnJhbmQgY29uZmlnIChzZWUgX2JyYW5kLnNjc3MpXG5cdC8vIElmIHdlaWdodCBpcyBub3QgZ2l2ZW4gZGVmYXVsdCB0byByZWd1bGFyLCB0byBvdmVycmlkZSBicm93c2VyIGRlZmF1bHRzLlxuXHQkd2VpZ2h0OiBfb1R5cG9ncmFwaHlHZXQoJ3dlaWdodCcsICRmcm9tKTtcblx0JHdlaWdodDogaWYoJHdlaWdodCwgJHdlaWdodCwgJ3JlZ3VsYXInKTtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKFxuXHRcdCRzY2FsZTogKFxuXHRcdFx0ZGVmYXVsdDogX29UeXBvZ3JhcGh5R2V0KCdzY2FsZScsICRmcm9tKSxcblx0XHRcdFM6IF9vVHlwb2dyYXBoeUdldCgnc2NhbGUtcycsICRmcm9tKSxcblx0XHRcdE06IF9vVHlwb2dyYXBoeUdldCgnc2NhbGUtbScsICRmcm9tKSxcblx0XHRcdEw6IF9vVHlwb2dyYXBoeUdldCgnc2NhbGUtbCcsICRmcm9tKSxcblx0XHRcdFhMOiBfb1R5cG9ncmFwaHlHZXQoJ3NjYWxlLXhsJywgJGZyb20pXG5cdFx0KSxcblx0XHQkd2VpZ2h0OiAkd2VpZ2h0XG5cdCk7XG5cdGNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdib2R5JywgJ3RleHQnLCAkZmFsbGJhY2s6IG51bGwpO1xuXHRtYXJnaW46IDAgMCBvU3BhY2luZ0J5TmFtZSgnczQnKTtcbn1cblxuXG4vLy8gQm9keSB0ZXh0IHN0eWxlc1xuQG1peGluIG9UeXBvZ3JhcGh5Qm9keSB7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygxKTtcblx0bWFyZ2luOiAwIDAgb1NwYWNpbmdCeU5hbWUoJ3M2Jyk7XG5cdGNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdib2R5JywgJ3RleHQnLCAkZmFsbGJhY2s6IG51bGwpO1xufVxuXG4vLy8gU3Vic2NyaXB0IHRleHRcbkBtaXhpbiBvVHlwb2dyYXBoeVN1YiB7XG5cdC8vIG1ha2Ugc3Vic2NyaXB0IHNtYWxsZXIgYW5kIHNhbnMtc2VyaWZcblx0Ly8gMTJweCBnaXZlbiAxOHB4IGNvcHlcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCk7XG5cdGZvbnQtc2l6ZTogMC42NjZlbTtcblx0Ly8gb3ZlcnJpZGUgby1ub3JtYWxpc2UgZGVmYXVsdFxuXHRwb3NpdGlvbjogc3RhdGljO1xuXHR2ZXJ0aWNhbC1hbGlnbjogc3ViO1xuXHRsaW5lLWhlaWdodDogMDtcblx0Ly8gcHJldmVudCBzdWIgaW5jcmVhc2luZyBsaW5lLWhlaWdodFxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdG1hcmdpbi1ib3R0b206IC0xZW07XG59XG5cbi8vLyBTdXBlcnNjcmlwdCB0ZXh0XG5AbWl4aW4gb1R5cG9ncmFwaHlTdXBlciB7XG5cdC8vIG1ha2Ugc3VwZXJzY3JpcHQgc21hbGxlciBhbmQgc2Fucy1zZXJpZlxuXHQvLyAxMnB4IGdpdmVuIDE4cHggY29weVxuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoKTtcblx0Zm9udC1zaXplOiAwLjY2NmVtO1xuXHQvLyBvdmVycmlkZSBvLW5vcm1hbGlzZSBkZWZhdWx0XG5cdHBvc2l0aW9uOiBzdGF0aWM7XG5cdHZlcnRpY2FsLWFsaWduOiBzdXBlcjtcblx0bGluZS1oZWlnaHQ6IDA7XG5cdC8vIHByZXZlbnQgc3VwZXIgaW5jcmVhc2luZyBsaW5lLWhlaWdodFxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdG1hcmdpbi10b3A6IC0xZW07XG59XG5cbi8vLyBPdXRwdXQgbGluayBzdHlsZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgdGhlIHN0eWxlcyBmb3IgYSBzdGFuZGFyZCBsaW5rLlxuLy8vICAgICAubXktbGluayB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaW5rKCk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCB0aGUgc3R5bGVzIGZvciBhbiBleHRlcm5hbCBsaW5rLlxuLy8vICAgICAubXktZXh0ZXJuYWwtbGluayB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaW5rKCRleHRlcm5hbDogdHJ1ZSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCB0aGUgc3R5bGVzIGZvciBhbiBleHRlcm5hbCBsaW5rLCB3aXRob3V0IHJlcGVhdGluZyBzdHlsZXMgc2hhcmVkIGJ5IHN0YW5kYXJkIGxpbmtzLlxuLy8vICAgICAubXktbGluay0tZXh0ZXJuYWwge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaygkZXh0ZXJuYWw6IHRydWUsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGN1c3RvbSwgY2xhcmV0IGNvbG91cmVkIGxpbmsgdG8gZ28gb24gdGhlIGRlZmF1bHQgYmFja2dyb3VuZCBjb2xvdXIgKHBhcGVyIGZvciB0aGUgY29yZSBicmFuZCwgd2hpdGUgb3RoZXJ3aXNlKS5cbi8vLyAgICAgLm15LWNsYXJldC1saW5rIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpbmsoJHRoZW1lOiAoXG4vLy8gICAgIFx0XHQnYmFzZSc6ICdjbGFyZXQnLFxuLy8vICAgICBcdFx0J2hvdmVyJzogJ2NsYXJldC0zMCcsXG4vLy8gICAgIFx0KSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGN1c3RvbSwgbGVtb24gY29sb3VyZWQgbGluayB0byBnbyBvbiBhIHNsYXRlIGJhY2tncm91bmQuXG4vLy8gICAgIC5teS1pbnZlcnNlLWxpbmsge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaygkdGhlbWU6IChcbi8vLyAgICAgXHRcdCdiYXNlJzogJ2xlbW9uJyxcbi8vLyAgICAgXHRcdCdob3Zlcic6ICdsZW1vbi0zMCcsXG4vLy8gICAgIFx0XHQnY29udGV4dCc6ICdzbGF0ZScsXG4vLy8gICAgIFx0KSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGV4dGVybmFsIFtmYWxzZV0gLSBJZiB0aGUgc3R5bGUgaXMgZm9yIGV4dGVybmFsIGxpbmtzLCBzZXQgdG8gdHJ1ZSB0byBvdXRwdXQgYW4gZXh0ZXJuYWwgbGluayBpY29uLlxuLy8vIEBwYXJhbSB7TWFwfE51bGx9ICR0aGVtZSBbbnVsbF0gLSBBIGN1c3RvbSB0aGVtZSB0byBjaGFuZ2UgdGhlIGxvb2sgb2YgYSBsaW5rLCB3aXRoIGNvbG91cnMgZm9yIHByb3BlcnRpZXMgYGJhc2VgICh0aGUgbWFpbiBsaW5rIGNvbG91ciksIGBob3ZlcmAgKHRoZSBsaW5rcyBvdmVyIGNvbG91ciksIGFuZCBvcHRpb25hbCBgY29udGV4dGAga2V5LiBDb250ZXh0IGlzIHRoZSBjb2xvdXIgdGhlIGxpbmsgd2lsbCBiZSBwbGFjZWQgb24sIGl0IGRlZmF1bHRzIHRvIHRoZSBwYWdlIGJhY2tncm91bmQgKHBhcGVyIGZvciB0aGUgY29yZSBicmFuZCwgd2hpdGUgb3RoZXJ3aXNlKS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWJhc2Utc3R5bGVzIFt0cnVlXSAtIElmIHNldCB0byBmYWxzZSBzdGFuZGFyZCBsaW5rIHN0eWxlcyB3aWxsIG5vdCBiZSBvdXRwdXQsIG9ubHkgYWRkaXRpb25hbCBzdHlsZXMgcmVxdWlyZWQgYnkgYSBjdXN0b20gdGhlbWUgb3IgZXh0ZXJuYWwgbGluay5cbkBtaXhpbiBvVHlwb2dyYXBoeUxpbmsoJGV4dGVybmFsOiBmYWxzZSwgJHRoZW1lOiBudWxsLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogdHJ1ZSkge1xuXHQvLyBEZWZhdWx0IGxpbmsgY29sb3Vycy5cblx0Ly8gVGhlc2UgbWF5IGJlIGBudWxsYCBpZiB0aGUgdXNlY2FzZSBpcyBub3Qgc2V0LCBpLmUuIGZvciB0aGUgd2hpdGVsYWJlbCBicmFuZC5cblx0JGJhc2UtY29sb3I6IG9Db2xvcnNCeVVzZWNhc2UobGluaywgdGV4dCwgJGZhbGxiYWNrOiBudWxsKTtcblx0JGhvdmVyLWNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKGxpbmstaG92ZXIsIHRleHQsICRmYWxsYmFjazogbnVsbCk7XG5cdCRjb250ZXh0LWNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKHBhZ2UsIGJhY2tncm91bmQpO1xuXHQkdW5kZXJsaW5lLXNpemU6IDAuMjVleDsgLy8gMnB4IGZvciAxOHB4IE1ldHJpY1dlYlxuXG5cdC8vIElmIGEgY3VzdG9tIHRoZW1lIGlzIGdpdmVuIGNoZWNrIGl0IGlzIGEgbWFwIHdpdGggdGhlIHJlcXVpcmVkIGtleXMuXG5cdC8vIEFuZCB1cGRhdGUgdGhlIGxpbmsgY29sb3Vycy5cblx0JHJlcXVpcmVkLXRoZW1lLWtleXM6ICgnYmFzZScsICdob3ZlcicpO1xuXHRAaWYoJHRoZW1lIGFuZCB0eXBlLW9mKCR0aGVtZSkgIT0gJ21hcCcpIHtcblx0XHRAZXJyb3IgJ1RoZSBsaW5rICR0aGVtZSBhcmd1bWVudCBtdXN0IGBudWxsYCBvciBhIG1hcC4gJyArXG5cdFx0XHQnRm91bmQ6IFwiI3tpbnNwZWN0KCR0aGVtZSl9XCInO1xuXHR9XG5cdEBpZih0eXBlLW9mKCR0aGVtZSkgPT0gJ21hcCcpIHtcblx0XHQvLyBHZXQgY3VzdG9tIGJhc2UgY29sb3VyLlxuXHRcdCR0aGVtZS1iYXNlOiBtYXAtZ2V0KCR0aGVtZSwgJ2Jhc2UnKTtcblx0XHQkYmFzZS1jb2xvcjogaWYodHlwZS1vZigkdGhlbWUtYmFzZSkgPT0gJ3N0cmluZycsIG9Db2xvcnNCeU5hbWUoJHRoZW1lLWJhc2UpLCAkdGhlbWUtYmFzZSk7XG5cdFx0Ly8gR2V0IGN1c3RvbSBob3ZlciBjb2xvdXIuXG5cdFx0JHRoZW1lLWhvdmVyOiBtYXAtZ2V0KCR0aGVtZSwgJ2hvdmVyJyk7XG5cdFx0JGhvdmVyLWNvbG9yOiBpZih0eXBlLW9mKCR0aGVtZS1ob3ZlcikgPT0gJ3N0cmluZycsIG9Db2xvcnNCeU5hbWUoJHRoZW1lLWhvdmVyKSwgJHRoZW1lLWhvdmVyKTtcblx0XHQvLyBHZXQgb3B0aW9uYWwgY29udGV4dCBjb2xvdXIuXG5cdFx0JHRoZW1lLWNvbnRleHQ6IG1hcC1nZXQoJHRoZW1lLCAnY29udGV4dCcpO1xuXHRcdEBpZiAkdGhlbWUtY29udGV4dCB7XG5cdFx0XHQkY29udGV4dC1jb2xvcjogaWYodHlwZS1vZigkdGhlbWUtY29udGV4dCkgPT0gJ3N0cmluZycsIG9Db2xvcnNCeU5hbWUoJHRoZW1lLWNvbnRleHQpLCAkdGhlbWUtY29udGV4dCk7XG5cdFx0fVxuXHRcdC8vIFZhbGlkYXRlIGNvbG91cnMgZ2l2ZW4uXG5cdFx0QGlmKHR5cGUtb2YoJGJhc2UtY29sb3IpICE9ICdjb2xvcicpIHtcblx0XHRcdEBlcnJvciAnQSBjdXN0b20gbGluayB0aGVtZSBtdXN0IGhhdmUgYSBgYmFzZWAgcHJvcGVydHkgd2l0aCBhIGNvbG91ciBvciBwYWxldHRlIGNvbG91ciBuYW1lIGUuZy4gYGNsYXJldGAuIEJ1dCBmb3VuZCAjeyR0aGVtZS1iYXNlfS4nO1xuXHRcdH1cblx0XHRAaWYodHlwZS1vZigkaG92ZXItY29sb3IpICE9ICdjb2xvcicpIHtcblx0XHRcdEBlcnJvciAnQSBjdXN0b20gbGluayB0aGVtZSBtdXN0IGhhdmUgYSBgaG92ZXJgIHByb3BlcnR5IHdpdGggYSBjb2xvciBvciBwYWxldHRlIGNvbG91ciBuYW1lIGUuZy4gYGNsYXJldGAuIEJ1dCBmb3VuZCAjeyR0aGVtZS1ob3Zlcn0uJztcblx0XHR9XG5cdFx0QGlmKCR0aGVtZS1jb250ZXh0IGFuZCB0eXBlLW9mKCRjb250ZXh0LWNvbG9yKSAhPSAnY29sb3InKSB7XG5cdFx0XHRAZXJyb3IgJ0EgY3VzdG9tIGxpbmsgdGhlbWUgbWF5IG9wdGlvbmFsbHkgaGF2ZSBhIGBjb250ZXh0YCBwcm9wZXJ0eSB3aXRoIGEgY29sb3Igb3IgcGFsZXR0ZSBjb2xvdXIgbmFtZSwgdG8gaW5kaWNhdGUgdGhlIGNvbG91ciBvZiB0aGUgcGFnZSBiZWhpbmQgdGhlIGxpbmssIGUuZy4gYG51bGxgIG9yIGBwYXBlcmAuIEJ1dCBmb3VuZCAjeyR0aGVtZS1jb250ZXh0fS4nO1xuXHRcdH1cblx0fVxuXG5cdC8vIE91dHB1dCBleHRlcm5hbCBsaW5rIHN0eWxlcy5cblx0Ly8gRmFsbGJhY2sgdG8gYSBibGFjayBpY29uIGlmIG5vIGxpbmsgY29sb3VyIGlzIGdpdmVuLlxuXHRAaWYoJGV4dGVybmFsKSB7XG5cdFx0JGljb24tY29sb3I6IGlmKCRiYXNlLWNvbG9yLCAkYmFzZS1jb2xvciwgb0NvbG9yc0J5TmFtZSgnYmxhY2snKSk7XG5cdFx0JGljb24tc2l6ZTogMWVtO1xuXHRcdCRpY29uLWluYnVpbHQtcGFkZGluZy1zaXplOiAje2RpdigkaWNvbi1zaXplLCA0KX07XG5cdFx0JGljb24tcGFkZGluZy1jYWxjOiBcIiN7JGljb24tc2l6ZX0gKyAjezAuNWNofVwiO1xuXHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ291dHNpZGUtcGFnZScsICRpY29uLWNvbG9yLCAkc2l6ZTogbnVsbCwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRcdC8vIEFkZCBwYWRkaW5nIGZvciBpY29uIGJhY2tncm91bmQuXG5cdFx0Ly8gVG8gcG9zaXRpb24gdGhlIGljb24gY2xvc2VyIHRvIHRoZSBjb3B5LCBtaW51cyB0aGUgcmlnaHQvbGVmdCBwYWRkaW5nXG5cdFx0Ly8gYnVpbHQgaW50byB0aGUgaWNvbiBzdmcgKDEwcHggZm9yIGEgNDBweCBpY29uKVxuXHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9GaW5hbmNpYWwtVGltZXMvZnRpY29ucy9ibG9iL3YxLjIwLjUvY29udHJpYnV0aW5nLm1kI2Rlc2lnblxuXHRcdHBhZGRpbmctcmlnaHQ6IGNhbGMoI3skaWNvbi1wYWRkaW5nLWNhbGN9IC0gI3skaWNvbi1pbmJ1aWx0LXBhZGRpbmctc2l6ZX0gLSAjeyRpY29uLWluYnVpbHQtcGFkZGluZy1zaXplfSk7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbi14OiBjYWxjKDEwMCUgKyAwLjVjaCk7XG5cdFx0Ly8gTWltaWMgYmFzZWxpbmUgYWxpZ25tZW50LlxuXHRcdEBzdXBwb3J0cyAoYmFja2dyb3VuZC1zaXplOiBjb250YWluKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNhbGMoMTAwJSArICN7JHVuZGVybGluZS1zaXplfSAtIDFweCk7XG5cdFx0fVxuXHRcdEBzdXBwb3J0cyAodGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogJHVuZGVybGluZS1zaXplKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNhbGMoMTAwJSArICN7JGljb24taW5idWlsdC1wYWRkaW5nLXNpemV9IC0gI3skdW5kZXJsaW5lLXNpemV9IC0gMXB4KTtcblx0XHR9XG5cdFx0YmFja2dyb3VuZC1vcmlnaW46IGJvcmRlci1ib3g7XG5cdFx0Ly8gSUUxMSBkb2VzIG5vdCBzaXplIGFuZCBwb3NpdGlvbiB0aGUgc3ZnIGljb24gYmFja2dyb3VuZCBjb3JyZWN0bHlcblx0XHQvLyB1c2luZyBgYmFja2dyb3VuZC1zaXplOiBjb250YWluYC4gVXNlIEBzdXBwb3J0cyB0byBleGNsdWRlIElFMTEsXG5cdFx0Ly8gYXMgSUUxMSBkb2VzIG5vdCBzdXBwb3J0IEBzdXBwb3J0c1xuXHRcdGJhY2tncm91bmQtc2l6ZTogY2FsYygjeyRpY29uLXBhZGRpbmctY2FsY30pIGNhbGMoI3skaWNvbi1wYWRkaW5nLWNhbGN9KTsgLy8gSUUxMSBmYWxsYmFja1xuXHRcdEBzdXBwb3J0cyAoYmFja2dyb3VuZC1zaXplOiBjb250YWluKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG5cdFx0fVxuXHRcdCZbdGFyZ2V0PVwiX2JsYW5rXCJdOmFmdGVyIHtcblx0XHRcdEBpbmNsdWRlIG9Ob3JtYWxpc2VWaXN1YWxseUhpZGRlbigpO1xuXHRcdFx0Y29udGVudDogJyhvcGVucyBhIG5ldyB3aW5kb3cpJztcblx0XHR9XG5cdH1cblxuXHQvLyBPdXRwdXQgYmFzZSBzdHlsZXMgc2hhcmVkIGJ5IGFsbCBsaW5rcy5cblx0QGlmKCRpbmNsdWRlLWJhc2Utc3R5bGVzKSB7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRib3JkZXItYm90dG9tOiAkdW5kZXJsaW5lLXNpemUgc29saWQ7XG5cblx0XHRAc3VwcG9ydHMgKHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6ICR1bmRlcmxpbmUtc2l6ZSkge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6ICR1bmRlcmxpbmUtc2l6ZTsgLy9zYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLW1pc3NwZWxsZWQtcHJvcGVydGllc1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uLWxpbmU6IHVuZGVybGluZTtcblx0XHR9XG5cdH1cblxuXHQvLyBPdXRwdXQgYmFzZSBzdHlsZXMgc2hhcmVkIGJ5IGFsbCBsaW5rcywgb3Jcblx0Ly8gcmVxdWlyZWQgZm9yIGEgY3VzdG9tIGxpbmsgdGhlbWUuXG5cdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcyBvciAkdGhlbWUpIHtcblx0XHRjb2xvcjogJGJhc2UtY29sb3I7XG5cdFx0JGRlY29yYXRpb24tY29sb3I6IGlmKCRiYXNlLWNvbG9yLCBvQ29sb3JzTWl4KCRiYXNlLWNvbG9yLCAkY29udGV4dC1jb2xvciwgJHBlcmNlbnRhZ2U6IDIwKSwgbnVsbCk7XG5cdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogJGRlY29yYXRpb24tY29sb3I7XG5cdFx0dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAkZGVjb3JhdGlvbi1jb2xvcjtcblx0fVxuXG5cdCY6aG92ZXIge1xuXHRcdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcyBvciAkdGhlbWUpIHtcblx0XHRcdGNvbG9yOiAkaG92ZXItY29sb3I7XG5cdFx0XHQkZGVjb3JhdGlvbi1jb2xvcjogaWYoJGJhc2UtY29sb3IsIG9Db2xvcnNNaXgoJGJhc2UtY29sb3IsICRjb250ZXh0LWNvbG9yLCAkcGVyY2VudGFnZTogNDApLCBudWxsKTtcblx0XHRcdGJvcmRlci1ib3R0b20tY29sb3I6ICRkZWNvcmF0aW9uLWNvbG9yO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAkZGVjb3JhdGlvbi1jb2xvcjtcblx0XHR9XG5cdH1cblxuXHQvLyBvLW5vcm1hbGlzZSBwcm92aWRlcyBleHRyYSBmb2N1cyBzdHlsZXMgZm9yIGxpbmtzXG5cdCY6Zm9jdXMge1xuXHRcdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcykge1xuXHRcdFx0JGRlY29yYXRpb24tY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogJGRlY29yYXRpb24tY29sb3I7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb24tY29sb3I6ICRkZWNvcmF0aW9uLWNvbG9yO1xuXHRcdH1cblx0XHRAaWYoJGluY2x1ZGUtYmFzZS1zdHlsZXMgb3IgJHRoZW1lKSB7XG5cdFx0XHRjb2xvcjogJGhvdmVyLWNvbG9yO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gT3V0cHV0IHN0eWxlcyBmb3IgbGlzdHMuXG4vLy8gU3R5bGVzIGNoaWxkIGBsaWAgZWxlbWVudHMuIEFwcGx5IHRvIGFcbi8vLyBjb250YWluaW5nIGxpc3QgZWxlbWVudCBzdWNoIGFzIGB1bGAgb3IgYG9sYC5cbi8vLyBEb2VzIG5vdCBvdXRwdXQgZm9udCBzdHlsZXMsIHRoZXNlIGFyZVxuLy8vIGluaGVyaXRlZCAoQHNlZSBvVHlwb2dyYXBoeUJvZHkpLlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHRoZSBzdHlsZXMgZm9yIGFuIHVub3JkZXJlZCBsaXN0LlxuLy8vICAgICAubXktdW5vcmRlcmVkLWxpc3Qge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGlzdCgndW5vcmRlcmVkJyk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCB0aGUgc3R5bGVzIGZvciBhbiBvcmRlcmVkIGFuZCB1bm9yZGVyZWQgbGlzdCwgc2hhcmluZyBiYXNlIGxpc3Qgc3R5bGVzLlxuLy8vICAgICAubXktbGlzdCB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaXN0KCk7XG4vLy8gICAgIH1cbi8vL1xuLy8vICAgICAubXktbGlzdC0tb3JkZXJlZCB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaXN0KCdvcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcbi8vLyAgICAgfVxuLy8vXG4vLy8gICAgIC5teS1saXN0LS11bm9yZGVyZWQge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGlzdCgndW5vcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcbi8vLyAgICAgfVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd8TnVsbH0gJHR5cGUgW251bGxdIC0gXCJvcmRlcmVkXCIsIFwidW5vcmRlcmVkXCIsIG9yIG51bGwgZm9yIGp1c3QgdGhlIGJhc2Ugc3R5bGVzIHNoYXJlZCBieSBhbGwgbGlzdHNcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWJhc2Utc3R5bGVzIFt0cnVlXSAtIHNldCB0byBmYWxzZSB0byBleGNsdWRlIGJhc2Ugc3R5bGVzIHdoaWNoIGFyZSBzaGFyZWQgYnkgYWxsIGxpc3QgdHlwZXNcbkBtaXhpbiBvVHlwb2dyYXBoeUxpc3QoJHR5cGU6IG51bGwsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiB0cnVlKSB7XG5cdC8vIFVuZG8gYnJvd3NlciBkZWZhdWx0cy5cblx0QGlmKCRpbmNsdWRlLWJhc2Utc3R5bGVzKSB7XG5cdFx0bWFyZ2luOiAwIDAgb1NwYWNpbmdCeU5hbWUoJ3M2Jyk7XG5cdFx0cGFkZGluZzogMDtcblx0XHRsaXN0LXN0eWxlOiBub25lO1xuXHR9XG5cdC8vIFJlc2V0IG51bWJlciBjb3VudGVyIGZvciBuZXcgb3JkZXJlZCBsaXN0LlxuXHRAaWYoJHR5cGUgPT0gJ29yZGVyZWQnKSB7XG5cdFx0Y291bnRlci1yZXNldDogaXRlbTtcblx0fVxuXHQ+IGxpIHtcblx0XHRAaWYoJGluY2x1ZGUtYmFzZS1zdHlsZXMpIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdC8vIFVuZG8gYnJvd3NlciBkZWZhdWx0LlxuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Ly8gQWxsb3cgc3BhY2UgZm9yIDItMyBudW1iZXJzIGZvciBib3RoIG9yZGVyZWQgYW5kIHVub3JkZXJlZCBsaXN0cyxcblx0XHRcdC8vIHNvIGNvbnRlbnQgYWxpZ25zIGJldHdlZW4gYm90aCBsaXN0IHR5cGVzLlxuXHRcdFx0cGFkZGluZy1sZWZ0OiBjYWxjKDJjaCArICN7b1NwYWNpbmdCeU5hbWUoJ3MxJyl9KTtcblx0XHR9XG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0QGlmKCRpbmNsdWRlLWJhc2Utc3R5bGVzKSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygpO1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0bGVmdDogMDtcblx0XHRcdFx0dHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGxlZnQ7XG5cdFx0XHR9XG5cblx0XHRcdEBpZigkdHlwZSA9PSAndW5vcmRlcmVkJykge1xuXHRcdFx0XHRjb250ZW50OiAnXFwyMDIyJzsgLy8gZG90IGNoYXJhY3RlclxuXHRcdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdFx0Ly8gMjhweCBtYXJrZXIgZ2l2ZW4gYSBwYXJlbnQgZm9udC1zaXplIG9mIDE4cHhcblx0XHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgje2RpdigyOCwgMTgpfSk7XG5cdFx0XHRcdC8vIG1hZ2ljIG51bWJlciB0byBjZW50ZXIgbWFya2VyXG5cdFx0XHRcdG1hcmdpbi10b3A6ICN7ZGl2KDI4LCAxOCkgKiAtMC4xNmNofTtcblx0XHRcdH1cblxuXHRcdFx0QGlmKCR0eXBlID09ICdvcmRlcmVkJykge1xuXHRcdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHdlaWdodDogJ3NlbWlib2xkJywgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcblx0XHRcdFx0Y29udGVudDogY291bnRlcihpdGVtKTtcblx0XHRcdFx0Y291bnRlci1pbmNyZW1lbnQ6IGl0ZW07XG5cdFx0XHRcdGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJ0bnVtXCI7XG5cdFx0XHRcdC8vIDE2cHggbWFya2VyIGdpdmVuIGEgcGFyZW50IGZvbnQtc2l6ZSBvZiAxOHB4XG5cdFx0XHRcdHRyYW5zZm9ybTogc2NhbGUoI3tkaXYoMTYsIDE4KX0pO1xuXHRcdFx0XHQvLyBtYWdpYyBudW1iZXIgdG8gbWFrZSBtYXJrZXIgZmx1c2ggdG8gdGhlIGxlZnRcblx0XHRcdFx0bWFyZ2luLWxlZnQ6ICN7ZGl2KDE2LCAxOCkgKiAtMC4xNmNofTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy8vIFN0eWxlIGZvciA8Zm9vdGVyPiB0YWdzXG5AbWl4aW4gb1R5cG9ncmFwaHlGb290ZXIge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkbGluZS1oZWlnaHQ6IDI0cHgpO1xuXHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnYm9keScsICd0ZXh0JywgJGZhbGxiYWNrOiBudWxsKTtcbn1cblxuLy8vIFN0eWxlcyBmb3IgcGhvdG8gb3IgdmlkZW8gY3JlZGl0L2NhcHRpb25cbkBtaXhpbiBvVHlwb2dyYXBoeUNhcHRpb24ge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAtMSk7XG5cdG1hcmdpbi10b3A6IG9TcGFjaW5nQnlOYW1lKCdzMicpO1xuXHRtYXJnaW4tYm90dG9tOiAwO1xuXHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnYm9keScsICd0ZXh0JywgJGZhbGxiYWNrOiBudWxsKTtcbn1cblxuIiwiLy8vIFZpc3VhbGx5IGhpZGUgYW4gZWxlbWVudCB3aGlsZSBzdGlsbFxuLy8vIGFsbG93aW5nIGl0IHRvIGJlIHJlYWQgYnkgYSBzY3JlZW5yZWFkZXJcbkBtaXhpbiBvTm9ybWFsaXNlVmlzdWFsbHlIaWRkZW4ge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGNsaXA6IHJlY3QoMCAwIDAgMCk7XG5cdGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDAgMCk7XG5cdG1hcmdpbjogLTFweDtcblx0Ym9yZGVyOiAwO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRwYWRkaW5nOiAwO1xuXHR3aWR0aDogMnB4O1xuXHRoZWlnaHQ6IDJweDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLy8vIENsZWFyZml4IGhlbHBlciBzdHlsZXNcbi8vLyBPdXRwdXRzIGNsZWFyZml4IHN0eWxlcyBvbiB0aGUgY3VycmVudCBlbGVtZW50XG5AbWl4aW4gb05vcm1hbGlzZUNsZWFyZml4IHtcblx0em9vbTogMTtcblxuXHQmOmJlZm9yZSxcblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogJyc7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdFx0ZGlzcGxheTogZmxleDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1ibG9jay1uby1kdXBsaWNhdGUtcHJvcGVydGllc1xuXHR9XG5cdCY6YWZ0ZXIge1xuXHRcdGNsZWFyOiBib3RoO1xuXHR9XG59XG5cbi8vLyBBZGRzIGJveCBzaXppbmcgdG8gY3VycmVudCBhbmQgYWxsIGNoaWxkIGVsZW1lbnRzXG5AbWl4aW4gb05vcm1hbGlzZUJveFNpemluZyB7XG5cblx0LyphdXRvcHJlZml4ZXI6IG9mZiovXG5cdC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cblxuXHQmICosXG5cdCYgKjpiZWZvcmUsXG5cdCYgKjphZnRlciB7XG5cblx0XHQvKmF1dG9wcmVmaXhlcjogb2ZmKi9cblx0XHQtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRcdC1tb3otYm94LXNpemluZzogaW5oZXJpdDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdFx0Ym94LXNpemluZzogaW5oZXJpdDtcblxuXHR9XG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byBnZW5lcmFsIGh0bWwgZWxlbWVudHNcbi8vLyBlZmZlY3RzOiA8aHRtbD4sIDxib2R5PiwgPG1haW4+LCBhbmQgOmZvY3VzIHN0YXRlXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VCb2R5KCRmb250LXNtb290aGluZzogdHJ1ZSwgJGJveC1zaXppbmc6IHRydWUsICRmb2N1czogdHJ1ZSwgJHJlZHVjZS1tb3Rpb246IHRydWUpIHtcblx0aHRtbCxcblx0Ym9keSB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG5cblx0XHQtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdFx0LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblxuXG5cdFx0QGlmICRmb250LXNtb290aGluZyB7XG5cblx0XHRcdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRcdFx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblxuXHRcdH1cblxuXHRcdEBpZiAkYm94LXNpemluZyB7XG5cdFx0XHRAaW5jbHVkZSBvTm9ybWFsaXNlQm94U2l6aW5nO1xuXHRcdH1cblxuXHRcdEBpZiAkcmVkdWNlLW1vdGlvbiB7XG5cdFx0XHQvLyBJbW1lZGlhdGVseSBqdW1wIGFueSBhbmltYXRpb24gdG8gdGhlIGVuZCBwb2ludCBpZiB0aGUgdXNlciBoYXNcblx0XHRcdC8vIHNldCB0aGVpciBkZXZpY2UgdG8gXCJwcmVmZXJzIHJlZHVjZWQgbW90aW9uXCIuXG5cdFx0XHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemRldnMvY3NzcmVtZWR5L2lzc3Vlcy8xMVxuXHRcdFx0QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0XHRcdFx0Kixcblx0XHRcdFx0KjpiZWZvcmUsXG5cdFx0XHRcdCo6YWZ0ZXIge1xuXG5cdFx0XHRcdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiAwLjAwMXMgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblx0XHRcdFx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAwMXMgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblx0XHRcdFx0XHRhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIEdpdmUgPG1haW4+cyB0aGUgcHJvcGVyIGRpc3BsYXkgdmFsdWUgaW4gSUUuXG5cdG1haW4ge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0QGlmICRmb2N1cyB7XG5cdFx0QGluY2x1ZGUgX29Ob3JtYWxpc2VGb2N1cygpO1xuXHR9XG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyBmb3IgZm9jdXNlZCBlbGVtZW50cy5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUZvY3VzIHtcblx0Ly8gQXBwbHkgOmZvY3VzIHN0eWxlcyBhcyBhIGZhbGxiYWNrXG5cdC8vIFRoZXNlIHN0eWxlcyB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIGJyb3dzZXJzIHRoYXQgZG9uJ3QgdXNlIHRoZSBwb2x5ZmlsbCwgdGhpcyBpbmNsdWRlcyBicm93c2VycyB3aGljaCBzdXBwb3J0IHRoZSBmZWF0dXJlIG5hdGl2ZWx5LlxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSksXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB7XG5cdFx0Ly8gU3RhbmRhcmRpc2UgZm9jdXMgc3R5bGVzLlxuXHRcdDpmb2N1cyB7XG5cdFx0XHRvdXRsaW5lOiAycHggc29saWQgJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0XHR9XG5cblx0XHRpbnB1dDpmb2N1cyxcblx0XHR0ZXh0YXJlYTpmb2N1cyxcblx0XHRzZWxlY3Q6Zm9jdXMge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4ICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXHR9XG5cblx0Ly8gV2hlbiB0aGUgZm9jdXMtdmlzaWJsZSBwb2x5ZmlsbCBpcyBhcHBsaWVkIGAuanMtZm9jdXMtdmlzaWJsZWAgaXMgYWRkZWQgdG8gdGhlIGh0bWwgZG9tIG5vZGVcblx0Ly8gKHRoZSBib2R5IG5vZGUgaW4gdjQgb2YgdGhlIDNyZCBwYXJ0eSBwb2x5ZmlsbClcblxuXHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdGJvZHkuanMtZm9jdXMtdmlzaWJsZSwgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRodG1sLmpzLWZvY3VzLXZpc2libGUge1xuXHRcdC8vIFN0YW5kYXJkaXNlIGZvY3VzIHN0eWxlcy5cblx0XHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0LmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogMnB4IHNvbGlkICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRpbnB1dC5mb2N1cy12aXNpYmxlLCAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0dGV4dGFyZWEuZm9jdXMtdmlzaWJsZSxcblx0XHRzZWxlY3QuZm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0XHR9XG5cdFx0Ly8gRGlzYWJsZSBicm93c2VyIGRlZmF1bHQgZm9jdXMgc3R5bGUuXG5cdFx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdDpmb2N1czpub3QoLmZvY3VzLXZpc2libGUpIHtcblx0XHRcdG91dGxpbmU6IDA7XG5cdFx0fVxuXHR9XG5cblxuXHQvLyBUaGVzZSBzdHlsZXMgd2lsbCBiZSBpZ25vcmVkIGJ5IGJyb3dzZXJzIHdoaWNoIGRvIG5vdCByZWNvZ25pc2UgdGhlIDpmb2N1cy12aXNpYmxlIHNlbGVjdG9yIChhcyBwZXIgdGhlIHRoaXJkIGJ1bGxldCBwb2ludCBpbiBodHRwczovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLTMvI0NvbmZvcm1hbmNlKVxuXHQvLyBJZiBhIGJyb3dzZXIgc3VwcG9ydHMgOmZvY3VzLXZpc2libGUgd2UgdW5zZXQgdGhlIDpmb2N1cyBzdHlsZXMgdGhhdCB3ZXJlIGFwcGxpZWQgYWJvdmVcblx0Ly8gKHdpdGhpbiB0aGUgaHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIGJsb2NrKS5cblx0OmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMge1xuXHRcdG91dGxpbmU6IHVuc2V0O1xuXHR9XG5cblx0OmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cyxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIGlucHV0OmZvY3VzLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cyxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cyxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cyB7XG5cdFx0Ym94LXNoYWRvdzogdW5zZXQ7XG5cdH1cblxuXHQvLyBTdHlsZXMgZ2l2ZW4gOmZvY3VzLXZpc2libGUgc3VwcG9ydC4gRXh0cmEgc2VsZWN0b3JzIG5lZWRlZCB0byBtYXRjaFxuXHQvLyBwcmV2aW91cyBgOmZvY3VzYCBzZWxlY3RvciBzcGVjaWZpY2l0eS5cblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIDpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzLXZpc2libGUsXG5cdDpmb2N1cy12aXNpYmxlIHtcblx0XHRvdXRsaW5lOiAycHggc29saWQgJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0fVxuXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMtdmlzaWJsZSxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHRleHRhcmVhOmZvY3VzLXZpc2libGUsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cy12aXNpYmxlLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgc2VsZWN0OmZvY3VzLXZpc2libGUsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMtdmlzaWJsZSxcblx0aW5wdXQ6Zm9jdXMtdmlzaWJsZSxcblx0dGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSxcblx0c2VsZWN0OmZvY3VzLXZpc2libGUge1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHR9XG5cblx0Ly8gUHJldmVudCBJRSBmcm9tIHB1dHRpbmcgZm9jdXMgc3R5bGVzIG9uIHRoZSBib2R5IG9yIGh0bWwuIFRoZXNlIHNlbGVjdG9yc1xuXHQvLyBzZXJ2ZSBhcyBhIGJsYWNrbGlzdCBmb3IgXCJ0aGluZ3Mgd2UndmUgZm91bmQgY2FuIGhhdmUgZm9jdXMgYnV0IHdlIGRvbid0IHdhbnRcIlxuXHRodG1sOmZvY3VzLFxuXHRib2R5OmZvY3VzLFxuXHRbcmVhZG9ubHldOmZvY3VzIHtcblx0XHRvdXRsaW5lOiBub25lO1xuXHR9XG5cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIGxpbmsgZWxlbWVudHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUxpbmtzIHtcblxuXHQvLyBSZW1vdmUgdGhlIGdyZXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG5cdGEge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBvdXRsaW5lIG9uIGZvY3VzZWQgbGlua3Mgd2hlbiB0aGV5IGFyZVxuXHQvLyBhbHNvIGFjdGl2ZSBvciBob3ZlcmVkIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuXHRhOmFjdGl2ZSxcblx0YTpob3ZlciB7XG5cdFx0b3V0bGluZS13aWR0aDogMDtcblx0fVxuXG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byB0ZXh0IHJlbGF0ZWQgZWxlbWVudHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZVRleHQge1xuXG5cdC8vIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBGaXJlZm94IDM5LS5cblx0Ly8gMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cblx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRhYmJyW3RpdGxlXSB7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMDsgLy8gWzFdXG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8vIFsyXVxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWNsYXJhdGlvbi1ibG9jay1uby1kdXBsaWNhdGUtcHJvcGVydGllc1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLy8gWzJdXG5cdH1cblxuXHQvLyBQcmV2ZW50IHRoZSBkdXBsaWNhdGUgYXBwbGljYXRpb24gb2YgYGJvbGRlcmAgYnkgdGhlIG5leHQgcnVsZSBpbiBTYWZhcmkgNi5cblx0Yixcblx0c3Ryb25nIHtcblx0XHRmb250LXdlaWdodDogaW5oZXJpdDtcblx0fVxuXG5cdC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG5cdGIsXG5cdHN0cm9uZyB7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGRlcjtcblx0fVxuXG5cdC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cblx0ZGZuIHtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdH1cblxuXHQvLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cblx0Ly8gYWxsIGJyb3dzZXJzLlxuXHRzdWIsXG5cdHN1cCB7XG5cdFx0Zm9udC1zaXplOiA3NSU7XG5cdFx0bGluZS1oZWlnaHQ6IDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcblx0fVxuXG5cdHN1YiB7XG5cdFx0Ym90dG9tOiAtMC4yNWVtO1xuXHR9XG5cblx0c3VwIHtcblx0XHR0b3A6IC0wLjVlbTtcblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gdGhlIGltYWdlIGVsZW1lbnRcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUltYWdlcyB7XG5cdC8vIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAtLlxuXHRpbWcge1xuXHRcdGJvcmRlci1zdHlsZTogbm9uZTtcblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gZm9ybSBlbGVtZW50c1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTm9ybWFsaXNlRm9ybXMge1xuXHQvLyBSZXN0b3JlIHRoZSBmb250IHdlaWdodCB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cblx0b3B0Z3JvdXAge1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHR9XG5cblx0Ly8gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG5cdC8vIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG5cdC8vIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cblx0YnV0dG9uLFxuXHRpbnB1dCwgICAvLyBbMV1cblx0c2VsZWN0IHsgLy8gWzJdXG5cdFx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIG1hcmdpbiBpbiBTYWZhcmkuXG5cdC8vIDEuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cblx0YnV0dG9uLFxuXHRpbnB1dCxcblx0c2VsZWN0LFxuXHR0ZXh0YXJlYSB7IC8vIFsxXVxuXHRcdG1hcmdpbjogMDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuXHQvLyAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG5cdGJ1dHRvbixcblx0c2VsZWN0IHsgLy8gWzFdXG5cdFx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdH1cblxuXHQvLyBDaGFuZ2UgdGhlIGN1cnNvciBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cblx0YnV0dG9uLFxuXHRbdHlwZT1cImJ1dHRvblwiXSxcblx0W3R5cGU9XCJyZXNldFwiXSxcblx0W3R5cGU9XCJzdWJtaXRcIl0ge1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxuXG5cdC8vIFJlc3RvcmUgdGhlIGRlZmF1bHQgY3Vyc29yIHRvIGRpc2FibGVkIGVsZW1lbnRzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuXHRbZGlzYWJsZWRdIHtcblx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuXHRidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5cdGlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcblx0XHRib3JkZXI6IDA7XG5cdFx0cGFkZGluZzogMDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUuXG5cdHRleHRhcmVhIHtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0fVxufVxuIiwiLy8vIFJlbGF0ZWQgY29udGVudCBsaXN0IHN0eWxlc1xuQG1peGluIF9vVGVhc2VyUmVsYXRlZCB7XG5cdGxpc3Qtc3R5bGU6IGRpc2Mgb3V0c2lkZTtcblx0cGFkZGluZy1sZWZ0OiAzMHB4O1xuXHRtYXJnaW46IDAgMCAyMHB4O1xuXHRib3JkZXItbGVmdDogMXB4IHNvbGlkIG9Db2xvcnNCeU5hbWUoJ2JsYWNrLTIwJyk7XG5cblx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJHVudGlsOiBNKSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufVxuXG4vLy8gU2luZ2xlIHJlbGF0ZWQgY29udGVudCBpdGVtIHN0eWxlc1xuQG1peGluIF9vVGVhc2VyUmVsYXRlZEl0ZW0ge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoXG5cdFx0JHNjYWxlOiAoZGVmYXVsdDogKC0xLCAyMnB4KSwgTDogKDAsIDI0cHgpKSxcblx0XHQkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2Vcblx0KTtcblx0Y29sb3I6ICRfby10ZWFzZXItbXV0ZWQ7XG5cblx0Jjpob3Zlcixcblx0Jjpmb2N1cyB7XG5cdFx0Y29sb3I6ICRfby10ZWFzZXItZm9jdXMtaG92ZXI7XG5cdH1cblxuXHRhIHtcblx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRjb2xvcjogaW5oZXJpdDtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0fVxuXHR9XG5cblx0Ji5vLXRlYXNlcl9fcmVsYXRlZC1pdGVtLS12aWRlbyBhOmFmdGVyIHtcblx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCdwbGF5Jywgb0NvbG9yc0J5TmFtZSgnd2hpdGUnKSwgJHNpemU6IDEzKTtcblx0XHRjb250ZW50OiAnJztcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0dG9wOiAxcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogb0NvbG9yc0J5TmFtZSgnYmxhY2snKTtcblx0XHRtYXJnaW4tbGVmdDogNXB4O1xuXHR9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7IC8vIEZpeGVzIGFuIGlzc3VlIHdoZXJlIFJ1YnkgbG9jYWxlIGlzIG5vdCBzZXQgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL3B1bGwvMTBcblxuQGltcG9ydCBcIkBmaW5hbmNpYWwtdGltZXMvbWF0aFwiO1xuXG4vLy8gQmFzZSBmb250IHNpemUgb24gdGhlIGA8Ym9keT5gIGVsZW1lbnRcbi8vL1xuLy8vIERvIG5vdCBvdmVycmlkZSB0aGlzIHZhbHVlLCBvciB0aGluZ3Mgd2lsbCBicmVha1xuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyXG4vLy8gQGRlcHJlY2F0ZWQgVGhpcyBzZXR0aW5nIHdpbGwgYmUgcmVtb3ZlZCBpbiBzYXNzLW1xIHY2LjAuMFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE51bWJlciAodW5pdClcbiRtcS1iYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8vIFJlc3BvbnNpdmUgbW9kZVxuLy8vXG4vLy8gU2V0IHRvIGBmYWxzZWAgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgQG1lZGlhIHF1ZXJpZXMsXG4vLy8gKElFIDw9IDgsIEZpcmVmb3ggPD0gMywgT3BlcmEgPD0gOSlcbi8vL1xuLy8vIFlvdSBjb3VsZCBjcmVhdGUgYSBzdHlsZXNoZWV0IHNlcnZlZCBleGNsdXNpdmVseSB0byBvbGRlciBicm93c2Vycyxcbi8vLyB3aGVyZSBAbWVkaWEgcXVlcmllcyBhcmUgcmFzdGVyaXplZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBvbGQtaWUuc2Nzc1xuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vZmYgRGlzYWJsZWQgcmVzcG9uc2l2ZSBtb2RlIGRvY3VtZW50YXRpb25cbiRtcS1yZXNwb25zaXZlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBsaXN0XG4vLy9cbi8vLyBOYW1lIHlvdXIgYnJlYWtwb2ludHMgaW4gYSB3YXkgdGhhdCBjcmVhdGVzIGEgdWJpcXVpdG91cyBsYW5ndWFnZVxuLy8vIGFjcm9zcyB0ZWFtIG1lbWJlcnMuIEl0IHdpbGwgaW1wcm92ZSBjb21tdW5pY2F0aW9uIGJldHdlZW5cbi8vLyBzdGFrZWhvbGRlcnMsIGRlc2lnbmVycywgZGV2ZWxvcGVycywgYW5kIHRlc3RlcnMuXG4vLy9cbi8vLyBAdHlwZSBNYXBcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1icmVha3BvaW50czogKFxuICAgIG1vYmlsZTogIDMyMHB4LFxuICAgIHRhYmxldDogIDc0MHB4LFxuICAgIGRlc2t0b3A6IDk4MHB4LFxuICAgIHdpZGU6ICAgIDEzMDBweFxuKSAhZGVmYXVsdDtcblxuLy8vIFN0YXRpYyBicmVha3BvaW50IChmb3IgZml4ZWQtd2lkdGggbGF5b3V0cylcbi8vL1xuLy8vIERlZmluZSB0aGUgYnJlYWtwb2ludCBmcm9tICRtcS1icmVha3BvaW50cyB0aGF0IHNob3VsZFxuLy8vIGJlIHVzZWQgYXMgdGhlIHRhcmdldCB3aWR0aCBmb3IgdGhlIGZpeGVkLXdpZHRoIGxheW91dFxuLy8vIChpLmUuIHdoZW4gJG1xLXJlc3BvbnNpdmUgaXMgc2V0IHRvICdmYWxzZScpIGluIGEgb2xkLWllLnNjc3Ncbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gdGFibGV0LW9ubHkuc2Nzc1xuLy8vICAvL1xuLy8vICAvLyBJZ25vcmUgYWxsIHN0eWxlcyBhYm92ZSB0YWJsZXQgYnJlYWtwb2ludCxcbi8vLyAgLy8gYW5kIGZpeCB0aGUgc3R5bGVzIChzdWNoIGFzIHRoZSBsYXlvdXQpIGF0IHRhYmxldCB3aWR0aFxuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gICRtcS1zdGF0aWMtYnJlYWtwb2ludDogdGFibGV0O1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byB0YWJsZXRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2FkZGluZy1jdXN0b20tYnJlYWtwb2ludHMgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLXN0YXRpYy1icmVha3BvaW50OiBkZXNrdG9wICFkZWZhdWx0O1xuXG4vLy8gU2hvdyBicmVha3BvaW50cyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vXG4vLy8gSWYgeW91IHdhbnQgdG8gZGlzcGxheSB0aGUgY3VycmVudGx5IGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3Bcbi8vLyByaWdodCBjb3JuZXIgb2YgeW91ciBzaXRlIGR1cmluZyBkZXZlbG9wbWVudCwgYWRkIHRoZSBicmVha3BvaW50c1xuLy8vIHRvIHRoaXMgbGlzdCwgb3JkZXJlZCBieSB3aWR0aC4gRm9yIGV4YW1wbGU6IChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAkbXEtc2hvdy1icmVha3BvaW50czogKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKTtcbi8vLyAgIEBpbXBvcnQgJ3BhdGgvdG8vbXEnO1xuLy8vXG4vLy8gQHR5cGUgbWFwXG4kbXEtc2hvdy1icmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG5cbi8vLyBDdXN0b21pemUgdGhlIG1lZGlhIHR5cGUgKGZvciBleGFtcGxlOiBgQG1lZGlhIHNjcmVlbmAgb3IgYEBtZWRpYSBwcmludGApXG4vLy8gQnkgZGVmYXVsdCBzYXNzLW1xIHVzZXMgYW4gXCJhbGxcIiBtZWRpYSB0eXBlIChgQG1lZGlhIGFsbCBhbmQg4oCmYClcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjY2hhbmdpbmctbWVkaWEtdHlwZSBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtbWVkaWEtdHlwZTogYWxsICFkZWZhdWx0O1xuXG4vLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHB4IC0gdmFsdWUgdG8gY29udmVydFxuLy8vIEBpZ25vcmUgQHBhcmFtIHtOdW1iZXJ9ICRiYXNlLWZvbnQtc2l6ZSBbJG1xLWJhc2UtZm9udC1zaXplXSAtIGA8Ym9keT5gIGZvbnQgc2l6ZSAoZGVwcmVjYXRlZClcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJGZvbnQtc2l6ZS1pbi1lbXM6IG1xLXB4MmVtKDE2cHgpO1xuLy8vICBwIHsgZm9udC1zaXplOiBtcS1weDJlbSgxNnB4KTsgfVxuLy8vXG4vLy8gQHJlcXVpcmVzICRtcS1iYXNlLWZvbnQtc2l6ZVxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9XG5AZnVuY3Rpb24gbXEtcHgyZW0oJHB4LCAkYmFzZS1mb250LXNpemU6ICRtcS1iYXNlLWZvbnQtc2l6ZSkge1xuICAgIEBpZiAoJG1xLWJhc2UtZm9udC1zaXplICE9IDE2cHgpIHtcbiAgICAgICAgQHdhcm4gXCJPdmVycmlkaW5nICRtcS1iYXNlLWZvbnQtc2l6ZSB3aWxsIGJyZWFrIHRoaW5ncywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMi5cIjtcbiAgICB9XG4gICAgQGlmICgkYmFzZS1mb250LXNpemUgIT0gMTZweCkge1xuICAgICAgICBAd2FybiBcIlRoZSAkYmFzZS1mb250LXNpemUgYXJndW1lbnQgd2lsbCBiZSByZW1vdmVkIGluIHNhc3MtbXEgdjYuMC4wLCBhcyBvdmVycmlkaW5nIGl0IGJyZWFrcyB0aGluZ3MsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjIuXCI7XG4gICAgfVxuICAgIEBpZiB1bml0bGVzcygkcHgpIHtcbiAgICAgICAgQHdhcm4gXCJBc3N1bWluZyAjeyRweH0gdG8gYmUgaW4gcGl4ZWxzLCBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgaXQgaW50byBwaXhlbHMuXCI7XG4gICAgICAgIEByZXR1cm4gbXEtcHgyZW0oJHB4ICogMXB4LCAkYmFzZS1mb250LXNpemUpO1xuICAgIH0gQGVsc2UgaWYgdW5pdCgkcHgpID09IGVtIHtcbiAgICAgICAgQHJldHVybiAkcHg7XG4gICAgfVxuICAgIEByZXR1cm4gKGRpdigkcHgsICRiYXNlLWZvbnQtc2l6ZSkpICogMWVtO1xufVxuXG4vLy8gR2V0IGEgYnJlYWtwb2ludCdzIHdpZHRoXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50LiBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICR0YWJsZXQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKHRhYmxldCk7XG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aChkZXNrdG9wKSkge31cbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVmFsdWUgaW4gcGl4ZWxzXG5AZnVuY3Rpb24gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJG5hbWUsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIHtcbiAgICAgICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgICBAd2FybiBcIkJyZWFrcG9pbnQgI3skbmFtZX0gd2Fzbid0IGZvdW5kIGluICRicmVha3BvaW50cy5cIjtcbiAgICB9XG59XG5cbi8vLyBNZWRpYSBRdWVyeSBtaXhpblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkZnJvbSBbZmFsc2VdIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJHVudGlsIFtmYWxzZV0gLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkYW5kIFtmYWxzZV0gLSBBZGRpdGlvbmFsIG1lZGlhIHF1ZXJ5IHBhcmFtZXRlcnNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lZGlhLXR5cGUgWyRtcS1tZWRpYS10eXBlXSAtIE1lZGlhIHR5cGU6IHNjcmVlbiwgcHJpbnTigKZcbi8vL1xuLy8vIEBpZ25vcmUgVW5kb2N1bWVudGVkIEFQSSwgZm9yIGFkdmFuY2VkIHVzZSBvbmx5OlxuLy8vIEBpZ25vcmUgQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJG1xLWJyZWFrcG9pbnRzXVxuLy8vIEBpZ25vcmUgQHBhcmFtIHtTdHJpbmd9ICRzdGF0aWMtYnJlYWtwb2ludCBbJG1xLXN0YXRpYy1icmVha3BvaW50XVxuLy8vXG4vLy8gQGNvbnRlbnQgc3R5bGluZyBydWxlcywgd3JhcHBlZCBpbnRvIGEgQG1lZGlhIHF1ZXJ5IHdoZW4gJHJlc3BvbnNpdmUgaXMgdHJ1ZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLW1lZGlhLXR5cGVcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1weDJlbVxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLWdldC1icmVha3BvaW50LXdpZHRoXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vbi1kZWZhdWx0IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLmVsZW1lbnQge1xuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiBtb2JpbGUpIHtcbi8vLyAgICAgIGNvbG9yOiByZWQ7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCR1bnRpbDogdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogYmx1ZTtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEobW9iaWxlLCB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBncmVlbjtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IHRhYmxldCwgJGFuZDogJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScpIHtcbi8vLyAgICAgIGNvbG9yOiB0ZWFsO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSg5NTBweCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKHRhYmxldCwgJG1lZGlhLXR5cGU6IHNjcmVlbikge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIC8vIEFkdmFuY2VkIHVzZTpcbi8vLyAgICAkbXktYnJlYWtwb2ludHM6IChMOiA5MDBweCwgWEw6IDEyMDBweCk7XG4vLy8gICAgQGluY2x1ZGUgbXEoTCwgJGJyZWFrcG9pbnRzOiAkbXktYnJlYWtwb2ludHMsICRzdGF0aWMtYnJlYWtwb2ludDogTCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICB9XG5AbWl4aW4gbXEoXG4gICAgJGZyb206IGZhbHNlLFxuICAgICR1bnRpbDogZmFsc2UsXG4gICAgJGFuZDogZmFsc2UsXG4gICAgJG1lZGlhLXR5cGU6ICRtcS1tZWRpYS10eXBlLFxuICAgICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzLFxuICAgICRyZXNwb25zaXZlOiAkbXEtcmVzcG9uc2l2ZSxcbiAgICAkc3RhdGljLWJyZWFrcG9pbnQ6ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuKSB7XG4gICAgJG1pbi13aWR0aDogMDtcbiAgICAkbWF4LXdpZHRoOiAwO1xuICAgICRtZWRpYS1xdWVyeTogJyc7XG5cbiAgICAvLyBGcm9tOiB0aGlzIGJyZWFrcG9pbnQgKGluY2x1c2l2ZSlcbiAgICBAaWYgJGZyb20ge1xuICAgICAgICBAaWYgdHlwZS1vZigkZnJvbSkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKCRmcm9tKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkZnJvbSwgJGJyZWFrcG9pbnRzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbnRpbDogdGhhdCBicmVha3BvaW50IChleGNsdXNpdmUpXG4gICAgQGlmICR1bnRpbCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCR1bnRpbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKCR1bnRpbCk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHVudGlsLCAkYnJlYWtwb2ludHMpKSAtIC4wMWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGRpc2FibGVkLCByYXN0ZXJpemUgdGhlIG91dHB1dCBvdXRzaWRlIEBtZWRpYSBibG9ja3NcbiAgICAvLyBUaGUgYnJvd3NlciB3aWxsIHJlbHkgb24gdGhlIGNhc2NhZGUgaXRzZWxmLlxuICAgIEBpZiAkcmVzcG9uc2l2ZSA9PSBmYWxzZSB7XG4gICAgICAgICRzdGF0aWMtYnJlYWtwb2ludC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHN0YXRpYy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAkdGFyZ2V0LXdpZHRoOiBtcS1weDJlbSgkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGgpO1xuXG4gICAgICAgIC8vIE91dHB1dCBvbmx5IHJ1bGVzIHRoYXQgc3RhcnQgYXQgb3Igc3BhbiBvdXIgdGFyZ2V0IHdpZHRoXG4gICAgICAgIEBpZiAoXG4gICAgICAgICAgICAkYW5kID09IGZhbHNlXG4gICAgICAgICAgICBhbmQgJG1pbi13aWR0aCA8PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICBhbmQgKFxuICAgICAgICAgICAgICAgICR1bnRpbCA9PSBmYWxzZSBvciAkbWF4LXdpZHRoID49ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGFuZCAkbWVkaWEtdHlwZSAhPSAncHJpbnQnXG4gICAgICAgICkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZW5hYmxlZCwgb3V0cHV0IHJ1bGVzIGluc2lkZSBAbWVkaWEgcXVlcmllc1xuICAgIEBlbHNlIHtcbiAgICAgICAgQGlmICRtaW4td2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi13aWR0aDogI3skbWluLXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkbWF4LXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtYXgtd2lkdGg6ICN7JG1heC13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJGFuZCAgICAgICAgICAgIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAjeyRhbmR9JzsgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSBtZWRpYSBxdWVyeSBwcmVmaXggJ2FsbCBhbmQgJ1xuICAgICAgICBAaWYgKCRtZWRpYS10eXBlID09ICdhbGwnIGFuZCAkbWVkaWEtcXVlcnkgIT0gJycpIHtcbiAgICAgICAgICAgICRtZWRpYS10eXBlOiAnJztcbiAgICAgICAgICAgICRtZWRpYS1xdWVyeTogc3RyLXNsaWNlKHVucXVvdGUoJG1lZGlhLXF1ZXJ5KSwgNik7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgI3skbWVkaWEtdHlwZSArICRtZWRpYS1xdWVyeX0ge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vLyBRdWljayBzb3J0XG4vLy9cbi8vLyBAYXV0aG9yIFNhbSBSaWNoYXJkc1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBMaXN0IHRvIHNvcnRcbi8vLyBAcmV0dXJucyB7TGlzdH0gU29ydGVkIExpc3RcbkBmdW5jdGlvbiBfbXEtcXVpY2stc29ydCgkbGlzdCkge1xuICAgICRsZXNzOiAgKCk7XG4gICAgJGVxdWFsOiAoKTtcbiAgICAkbGFyZ2U6ICgpO1xuXG4gICAgQGlmIGxlbmd0aCgkbGlzdCkgPiAxIHtcbiAgICAgICAgJHNlZWQ6IG50aCgkbGlzdCwgY2VpbChkaXYobGVuZ3RoKCRsaXN0KSwgMikpKTtcblxuICAgICAgICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgICAgICAgICBAaWYgKCRpdGVtID09ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGVxdWFsOiBhcHBlbmQoJGVxdWFsLCAkaXRlbSk7XG4gICAgICAgICAgICB9IEBlbHNlIGlmICgkaXRlbSA8ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGxlc3M6IGFwcGVuZCgkbGVzcywgJGl0ZW0pO1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPiAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRsYXJnZTogYXBwZW5kKCRsYXJnZSwgJGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQHJldHVybiBqb2luKGpvaW4oX21xLXF1aWNrLXNvcnQoJGxlc3MpLCAkZXF1YWwpLCBfbXEtcXVpY2stc29ydCgkbGFyZ2UpKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRsaXN0O1xufVxuXG4vLy8gU29ydCBhIG1hcCBieSB2YWx1ZXMgKHdvcmtzIHdpdGggbnVtYmVycyBvbmx5KVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gc29ydFxuLy8vIEByZXR1cm5zIHtNYXB9IE1hcCBzb3J0ZWQgYnkgdmFsdWVcbkBmdW5jdGlvbiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1hcCkge1xuICAgICRtYXAtc29ydGVkOiAoKTtcbiAgICAkbWFwLWtleXM6IG1hcC1rZXlzKCRtYXApO1xuICAgICRtYXAtdmFsdWVzOiBtYXAtdmFsdWVzKCRtYXApO1xuICAgICRtYXAtdmFsdWVzLXNvcnRlZDogX21xLXF1aWNrLXNvcnQoJG1hcC12YWx1ZXMpO1xuXG4gICAgLy8gUmVvcmRlciBrZXkvdmFsdWUgcGFpcnMgYmFzZWQgb24ga2V5IHZhbHVlc1xuICAgIEBlYWNoICR2YWx1ZSBpbiAkbWFwLXZhbHVlcy1zb3J0ZWQge1xuICAgICAgICAkaW5kZXg6IGluZGV4KCRtYXAtdmFsdWVzLCAkdmFsdWUpO1xuICAgICAgICAka2V5OiBudGgoJG1hcC1rZXlzLCAkaW5kZXgpO1xuICAgICAgICAkbWFwLXNvcnRlZDogbWFwLW1lcmdlKCRtYXAtc29ydGVkLCAoJGtleTogJHZhbHVlKSk7XG5cbiAgICAgICAgLy8gVW5zZXQgdGhlIHZhbHVlIGluICRtYXAtdmFsdWVzIHRvIHByZXZlbnQgdGhlIGxvb3BcbiAgICAgICAgLy8gZnJvbSBmaW5kaW5nIHRoZSBzYW1lIGluZGV4IHR3aWNlXG4gICAgICAgICRtYXAtdmFsdWVzOiBzZXQtbnRoKCRtYXAtdmFsdWVzLCAkaW5kZXgsIDApO1xuICAgIH1cblxuICAgIEByZXR1cm4gJG1hcC1zb3J0ZWQ7XG59XG5cbi8vLyBBZGQgYSBicmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBicmVha3BvaW50XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgQGluY2x1ZGUgbXEtYWRkLWJyZWFrcG9pbnQodHZzY3JlZW4sIDE5MjBweCk7XG4vLy8gIEBpbmNsdWRlIG1xKHR2c2NyZWVuKSB7fVxuQG1peGluIG1xLWFkZC1icmVha3BvaW50KCRuYW1lLCAkd2lkdGgpIHtcbiAgICAkbmV3LWJyZWFrcG9pbnQ6ICgkbmFtZTogJHdpZHRoKTtcbiAgICAkbXEtYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkbXEtYnJlYWtwb2ludHMsICRuZXctYnJlYWtwb2ludCkgIWdsb2JhbDtcbiAgICAkbXEtYnJlYWtwb2ludHM6IF9tcS1tYXAtc29ydC1ieS12YWx1ZSgkbXEtYnJlYWtwb2ludHMpICFnbG9iYWw7XG59XG5cbi8vLyBTaG93IHRoZSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lciBvZiB0aGUgdmlld3BvcnRcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaG93LWJyZWFrcG9pbnRzIFskbXEtc2hvdy1icmVha3BvaW50c10gLSBMaXN0IG9mIGJyZWFrcG9pbnRzIHRvIHNob3cgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vLyBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzIFskbXEtYnJlYWtwb2ludHNdIC0gQnJlYWtwb2ludCBuYW1lcyBhbmQgc2l6ZXNcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zaG93LWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgZ2xvYmFsIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG4vLy9cbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBjdXN0b20gc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cygoTCwgWEwpLCAoUzogMzAwcHgsIEw6IDgwMHB4LCBYTDogMTIwMHB4KSk7XG5AbWl4aW4gbXEtc2hvdy1icmVha3BvaW50cygkc2hvdy1icmVha3BvaW50czogJG1xLXNob3ctYnJlYWtwb2ludHMsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgYm9keTpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGOEUzO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBjb2xvcjogI0MwOTg1MztcbiAgICAgICAgZm9udDogc21hbGwtY2FwdGlvbjtcbiAgICAgICAgcGFkZGluZzogM3B4IDZweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgei1pbmRleDogMTAwO1xuXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCB0aGUgYnJlYWtwb2ludHMgdGhhdCBzaG91bGQgYmUgc2hvd25cbiAgICAgICAgQGVhY2ggJHNob3ctYnJlYWtwb2ludCBpbiAkc2hvdy1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAkd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcSgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHM6ICRicmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiI3skc2hvdy1icmVha3BvaW50fSDiiaUgI3skd2lkdGh9ICgje21xLXB4MmVtKCR3aWR0aCl9KVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaWYgbGVuZ3RoKCRtcS1zaG93LWJyZWFrcG9pbnRzKSA+IDAge1xuICAgIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG59XG4iLCJcbkBtaXhpbiBfb1RlYXNlclN5bmRpY2F0aW9uSW5kaWNhdG9yIHtcblx0Lm8tdGVhc2VyX19zeW5kaWNhdGlvbi1pbmRpY2F0b3Ige1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR0b3A6IG9TcGFjaW5nQnlOYW1lKCdzMScpO1xuXHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblxuXHRcdHNwYW4ge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0Y2xpcDogcmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHRcdGJvcmRlcjogMDtcblx0XHRcdGhlaWdodDogMXB4O1xuXHRcdFx0d2lkdGg6IDFweDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0fVxuXHR9XG5cblx0LnN5bmRpLm8tdGVhc2VyX19zeW5kaWNhdGlvbi1pbmRpY2F0b3Ige1xuXHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ21pbnVzJywgb0NvbG9yc0J5TmFtZSgnd2hpdGUnKSwgJHNpemU6IDIwKTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBvQ29sb3JzQnlOYW1lKCdibGFjay00MCcpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19zeW5kaWNhdGlvbi1pbmRpY2F0b3ItLXllcyxcblx0LnN5bmRpLm8tdGVhc2VyX19zeW5kaWNhdGlvbi1pbmRpY2F0b3ItLXllcyB7XG5cdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgndGljaycsIG9Db2xvcnNCeU5hbWUoJ3doaXRlJyksICRzaXplOiAyMCk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogb0NvbG9yc0J5TmFtZSgnamFkZScpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19zeW5kaWNhdGlvbi1pbmRpY2F0b3ItLW5vLFxuXHQuc3luZGkuby10ZWFzZXJfX3N5bmRpY2F0aW9uLWluZGljYXRvci0tbm8ge1xuXHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ21pbnVzJywgb0NvbG9yc0J5TmFtZSgnd2hpdGUnKSwgJHNpemU6IDIwKTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBvQ29sb3JzQnlOYW1lKCdjcmltc29uJyk7XG5cdH1cblxuXHQuby10ZWFzZXJfX3N5bmRpY2F0aW9uLWluZGljYXRvci0tdmVyaWZ5LFxuXHQuc3luZGkuby10ZWFzZXJfX3N5bmRpY2F0aW9uLWluZGljYXRvci0tdmVyaWZ5IHtcblx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCd0aWNrJywgb0NvbG9yc0J5TmFtZSgnd2hpdGUnKSwgJHNpemU6IDIwKTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBvQ29sb3JzQnlOYW1lKCdtYW5kYXJpbicpO1xuXHR9XG59XG4iLCIvLy8gU21hbGwgdGVhc2VyIHN0eWxlc1xuQG1peGluIF9vVGVhc2VyU21hbGwge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRwYWRkaW5nLWJvdHRvbTogb1NwYWNpbmdCeU5hbWUoJ3MzJyk7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci9iYXNlJywgJ2JvcmRlcicpO1xuXG5cdC5vLXRlYXNlcl9fY29udGVudCB7XG5cdFx0Ly8gSUUgbmVlZHMgYSB1bml0IHRvIGFwcGx5IGZsZXgtYmFzaXMgY29ycmVjdGx5IPCfmJBcblx0XHRmbGV4OiAxIDAgMCU7XG5cdFx0b3JkZXI6IDI7XG5cdH1cblxuXHQuby10ZWFzZXJfX2ltYWdlLWNvbnRhaW5lciB7XG5cdFx0d2lkdGg6IDMwJTtcblx0XHQvLyBiZWNhdXNlIGZsZXggaXRlbXMgYXJlIGFsbG93ZWQgdG8gc2hyaW5rIGltcGxpY2l0bHlcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRwYWRkaW5nLXJpZ2h0OiBvR3JpZEd1dHRlcihNKTtcblxuXHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCR1bnRpbDogTSkgeyAvLyBNb2JpbGUgc2NyZWVucyBvbmx5XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gU21hbGwgdGVhc2VyIHN0eWxlcyBmb3IgYSBzdGFja2VkIGltYWdlXG4vLy8gaW1hZ2Ugd2lsbCBhcHBlYXIgMTAwJSB3aWR0aCBhdCB0aGUgdG9wIG9mIHRoZSB0ZWFzZXJcbkBtaXhpbiBfb1RlYXNlclNtYWxsU3RhY2tlZCB7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cblx0Lm8tdGVhc2VyX19jb250ZW50IHtcblx0XHRmbGV4LWJhc2lzOiBhdXRvOyAvLyBtdXN0IG92ZXJyaWRlIG9yaWdpbmFsIC5vLXRlYXNlcl9fY29udGVudCBmbGV4LWJhc2lzXG5cdH1cblxuXHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbyhNKSB7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0fVxuXG5cdC5vLXRlYXNlcl9faW1hZ2UtY29udGFpbmVyIHtcblx0XHRtYXJnaW4tYm90dG9tOiBvU3BhY2luZ0J5TmFtZSgnczMnKTtcblx0XHR3aWR0aDogMTAwJTtcblx0XHQvLyA8aHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2tkZXRhaWwvdmlldy84OTE4MTU+XG5cdFx0bWluLWhlaWdodDogMXB4O1xuXHRcdHBhZGRpbmctdG9wOiAwO1xuXHRcdHBhZGRpbmctcmlnaHQ6IDA7XG5cdH1cbn1cblxuQG1peGluIF9vVGVhc2VyU21hbGxJbWFnZVBvc2l0aW9uUmlnaHQge1xuXHQmLm8tdGVhc2VyLS1oYXMtaW1hZ2UgLm8tdGVhc2VyX19pbWFnZS1jb250YWluZXIge1xuXHRcdG9yZGVyOiAyO1xuXHRcdHBhZGRpbmctbGVmdDogb0dyaWRHdXR0ZXIoTSk7XG5cdFx0cGFkZGluZy1yaWdodDogaW5oZXJpdDtcblx0fVxufVxuIiwiLy8vIFN0eWxlcyBmb3IgbGFyZ2UgdGVhc2Vycy5cbi8vLyBBbHNvIGZvcm0gdGhlIGJhc2lzIG9mIHN0eWxlcyBmb3IgaGVybyB0ZWFzZXJzXG5AbWl4aW4gX29UZWFzZXJMYXJnZSB7XG5cdEBpbmNsdWRlIG9Ob3JtYWxpc2VDbGVhcmZpeDtcblxuXHQuby10ZWFzZXJfX2NvbnRlbnQge1xuXHRcdHBhZGRpbmc6IG9HcmlkR3V0dGVyKE0pO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL2Jhc2UnLCAnYm9yZGVyJyk7XG5cdH1cblxuXHQuby10ZWFzZXJfX2hlYWRpbmcge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDMpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19zdGFuZGZpcnN0IHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoXG5cdFx0XHQkc2NhbGU6IChkZWZhdWx0OiAoMSwgMjRweCksIEw6ICgyLCAyNHB4KSksXG5cdFx0XHQkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2Vcblx0XHQpO1xuXHRcdG1hcmdpbi10b3A6IG9TcGFjaW5nQnlOYW1lKCdzNicpO1xuXHR9XG59XG5cbi8vLyBBZGp1c3RzIGxhcmdlIHRlYXNlcnMgdG8gd29yayB3aXRoIGltYWdlcy5cbi8vLyBBcHBlYXJzIGluIHBvcnRyYWl0IGF0IGRlZmF1bHQtbWVkaXVtLCBsYW5kc2NhcGVcbi8vLyBpbiBtZWRpdW0tbGFyZ2UsIGFuZCBwb3J0cmFpdCBmcm9tIGxhcmdlIHVwXG5AbWl4aW4gX29UZWFzZXJMYXJnZVdpdGhJbWFnZSB7XG5cdC5vLXRlYXNlcl9fY29udGVudCB7XG5cdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJHVudGlsOiBTKSB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKFMsIEwpIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0Ym9yZGVyLXJpZ2h0OiAwO1xuXG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0dG9wOiAxcHg7XG5cdFx0XHRcdHJpZ2h0OiAtMjUlO1xuXHRcdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRcdHdpZHRoOiAyNSU7XG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci9iYXNlJywgJ2JvcmRlcicpO1xuXHRcdFx0XHRib3JkZXItbGVmdDogMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbyhTLCBNKSB7XG5cdFx0XHR3aWR0aDogNjAlO1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKE0sIEwpIHtcblx0XHRcdHdpZHRoOiA3MCU7XG5cdFx0fVxuXG5cdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oTCkge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHR9XG5cdH1cbn1cblxuLy8vIEltYWdlIGNvbnRhaW5lciBzdHlsZXMgZm9yIGxhcmdlIGltYWdlXG4vLy8gYXQgdmFyaW91cyBicmVha3BvaW50c1xuQG1peGluIF9vVGVhc2VySW1hZ2VDb250YWluZXIge1xuXHQuby10ZWFzZXJfX2ltYWdlIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ei1pbmRleDogMTtcblxuXHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKE0sIEwpIHtcblx0XHRcdG1heC13aWR0aDogMjIwcHg7XG5cdFx0fVxuXHR9XG5cblx0Lm8tdGVhc2VyX19pbWFnZS1jb250YWluZXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRmbG9hdDogbm9uZTtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXJnaW4tdG9wOiAtMXB4O1xuXHRcdHBhZGRpbmctbGVmdDogMjUlO1xuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0aGVpZ2h0OiA1MCU7XG5cdFx0XHRib3JkZXItbGVmdDogMXB4IHNvbGlkIG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL2Jhc2UnLCAnYm9yZGVyJyk7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgb0NvbG9yc0J5VXNlY2FzZSgnby10ZWFzZXIvYmFzZScsICdib3JkZXInKTtcblx0XHR9XG5cblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbyhTLCBMKSB7XG5cdFx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAwO1xuXG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbyhTLCBNKSB7XG5cdFx0XHR3aWR0aDogNDAlO1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKE0sIEwpIHtcblx0XHRcdHdpZHRoOiAzMCU7XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBGb3JjZXMgYSBsYXJnZSB0ZWFzZXIgdG8gYWx3YXlzIGFwcGVhciBpbiB0aGUgcG9ydHJhaXRcbi8vLyBzdHlsZSwgcmVnYXJkbGVzcyBvZiBicmVha3BvaW50XG5AbWl4aW4gX29UZWFzZXJMYXJnZUltYWdlUG9ydHJhaXQge1xuXHQuby10ZWFzZXJfX2NvbnRlbnQge1xuXHRcdGJvcmRlci1ib3R0b206IDA7XG5cdH1cblxuXHQuby10ZWFzZXJfX2ltYWdlIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ei1pbmRleDogMTtcblx0fVxuXG5cdC5vLXRlYXNlcl9faW1hZ2UtY29udGFpbmVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWFyZ2luLXRvcDogLTFweDtcblx0XHRwYWRkaW5nLWxlZnQ6IDI1JTtcblxuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogNTAlO1xuXHRcdFx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci9iYXNlJywgJ2JvcmRlcicpO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL2Jhc2UnLCAnYm9yZGVyJyk7XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBGb3JjZXMgYSBsYXJnZSB0ZWFzZXIgdG8gYWx3YXlzIGFwcGVhciBpbiB0aGUgbGFuZHNjYXBlXG4vLy8gc3R5bGUsIHJlZ2FyZGxlc3Mgb2YgYnJlYWtwb2ludFxuQG1peGluIF9vVGVhc2VyTGFyZ2VJbWFnZUxhbmRzY2FwZSB7XG5cdC5vLXRlYXNlcl9fY29udGVudCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdHdpZHRoOiA2MCU7XG5cdFx0Ym9yZGVyLXJpZ2h0OiAwO1xuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMXB4O1xuXHRcdFx0cmlnaHQ6IC0yNSU7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHR3aWR0aDogMjUlO1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci9iYXNlJywgJ2JvcmRlcicpO1xuXHRcdFx0Ym9yZGVyLWxlZnQ6IDA7XG5cdFx0fVxuXHR9XG5cblx0Lm8tdGVhc2VyX19pbWFnZSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdG1heC13aWR0aDogMjIwcHg7XG5cdFx0ei1pbmRleDogMTtcblx0fVxuXG5cdC5vLXRlYXNlcl9faW1hZ2UtY29udGFpbmVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdHdpZHRoOiA0MCU7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cblx0XHQmOmFmdGVyIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG59XG4iLCIvLy8gSW52ZXJzZSB0aGVtZSBzdHlsZXMgLSBiYXNlIGFsbCB0ZXh0IGNvbnRlbnQgb24gd2hpdGVcbkBtaXhpbiBfb1RlYXNlckludmVyc2Uge1xuXHQkaW52ZXJzZS1jb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnby10ZWFzZXIvaW52ZXJzZScsICd0ZXh0Jyk7XG5cdCRpbnZlcnNlLWJhY2tncm91bmQ6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL2ludmVyc2UnLCAnYmFja2dyb3VuZCcpO1xuXHQuby10ZWFzZXJfX2hlYWRpbmcgYTpob3Zlcixcblx0Lm8tdGVhc2VyX19oZWFkaW5nIGE6Zm9jdXMsXG5cdC5vLXRlYXNlcl9faGVhZGluZyBhOnZpc2l0ZWQsXG5cdC5vLXRlYXNlcl9fc3RhbmRmaXJzdCBhOmhvdmVyLFxuXHQuby10ZWFzZXJfX3N0YW5kZmlyc3QgYTpmb2N1cyxcblx0Lm8tdGVhc2VyX19zdGFuZGZpcnN0IGE6dmlzaXRlZCxcblx0Lm8tdGVhc2VyX190YWc6aG92ZXIsXG5cdC5vLXRlYXNlcl9fdGFnOmZvY3VzIHtcblx0XHRjb2xvcjogb0NvbG9yc01peCgkaW52ZXJzZS1jb2xvciwgJGludmVyc2UtYmFja2dyb3VuZCwgJHBlcmNlbnRhZ2U6IDYwKTtcblx0fVxuXG5cdC5vLXRlYXNlcl9fbWV0YSxcblx0Lm8tdGVhc2VyX190YWctc3VmZml4LFxuXHQuby10ZWFzZXJfX2hlYWRpbmcge1xuXHRcdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCd3aGl0ZScpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19zdGFuZGZpcnN0LFxuXHQuby10ZWFzZXJfX3RpbWVzdGFtcCB7XG5cdFx0Y29sb3I6IG9Db2xvcnNNaXgoJGludmVyc2UtY29sb3IsICRpbnZlcnNlLWJhY2tncm91bmQsICRwZXJjZW50YWdlOiA2MCk7XG5cdH1cblxuXHQmLm8tdGVhc2VyLS1oZXJvIC5vLXRlYXNlcl9fbWV0YTphZnRlciB7XG5cdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogb0NvbG9yc0J5TmFtZSgnd2hpdGUnKTtcblx0fVxufVxuXG4vLy8gTWFrZSBhIHRlYXNlciBmaWxsIHRoZSBmdWxsIGhlaWdodCBvZiBpdHMgY29udGFpbmVyXG4vLy8gKGlmIHRoZSBjb250YWluZXIgaXMgZmxleCkgYW5kIHN0cmV0Y2ggdGhlIGNvbnRlbnQgdG9cbi8vLyBtb3ZlIHRpbWVzdGFtcCB0byB0ZWFzZXIgZm9vdGVyXG5AbWl4aW4gX29UZWFzZXJTdHJldGNoZWQge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWdyb3c6IDE7XG5cblx0Lm8tdGVhc2VyX19jb250ZW50IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0ZmxleC1ncm93OiAxO1xuXHRcdGZsZXgtYmFzaXM6IGF1dG87XG5cdH1cbn1cblxuLy8vIEdlbmVyYWwgb3BpbmlvbiB0aGVtZSB0ZWFzZXIgLSB0dXJucyB0YWcgY29udGVudCBibHVlXG5AbWl4aW4gX29UZWFzZXJPcGluaW9uIHtcblx0Lm8tdGVhc2VyX19tZXRhIHtcblx0XHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnby10ZWFzZXIvb3Bpbmlvbi10YWcnLCAndGV4dCcpO1xuXHR9XG59XG5cbi8vLyBPcGluaW9uIGJhY2tncm91bmQgdGhlbWUgLSBjb2xvdXJzIGJhY2tncm91bmQgYmx1ZSBhbmQgYWRqdXN0IHRleHRcbkBtaXhpbiBfb1RlYXNlck9waW5pb25CYWNrZ3JvdW5kIHtcblx0JHRoZW1lLW9waW5pb24tY29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL3RoZW1lLW9waW5pb24nLCAndGV4dCcpO1xuXHQkdGhlbWUtb3Bpbmlvbi1iYWNrZ3JvdW5kOiBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci90aGVtZS1vcGluaW9uJywgJ2JhY2tncm91bmQnKTtcblx0Lm8tdGVhc2VyX19zdGFuZGZpcnN0LFxuXHQuby10ZWFzZXJfX3RpbWVzdGFtcCB7XG5cdFx0Y29sb3I6IG9Db2xvcnNNaXgoJHRoZW1lLW9waW5pb24tY29sb3IsICR0aGVtZS1vcGluaW9uLWJhY2tncm91bmQsICRwZXJjZW50YWdlOiA2MCk7XG5cdH1cblxuXHQmLm8tdGVhc2VyLS1sYXJnZSB7XG5cdFx0Lm8tdGVhc2VyX19jb250ZW50LFxuXHRcdC5vLXRlYXNlcl9faW1hZ2UtY29udGFpbmVyOmFmdGVyIHtcblx0XHRcdGNvbG9yOiAkdGhlbWUtb3Bpbmlvbi1jb2xvcjtcblx0XHRcdGJhY2tncm91bmQ6ICR0aGVtZS1vcGluaW9uLWJhY2tncm91bmQ7XG5cdFx0XHRib3JkZXI6IDA7XG5cdFx0fVxuXG5cdFx0Lm8tdGVhc2VyX19jb250ZW50OmFmdGVyIHtcblx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKFMsIEwpIHtcblx0XHRcdFx0Y29sb3I6ICR0aGVtZS1vcGluaW9uLWNvbG9yO1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAkdGhlbWUtb3Bpbmlvbi1iYWNrZ3JvdW5kO1xuXHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdGJvcmRlcjogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy8vIEhpZ2hsaWdodCB0aGVtZSAtIGNvbG91cnMgYmFja2dyb3VuZCBjbGFyZXQgYW5kIGFkanVzdCB0ZXh0IGNvbG91cnNcbkBtaXhpbiBfb1RlYXNlckhpZ2hsaWdodCB7XG5cdCR0aGVtZS1oaWdobGlnaHQtY29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL2hlcm8taGlnaGxpZ2h0JywgJ3RleHQnKTtcblx0JHRoZW1lLWhpZ2hsaWdodC1iYWNrZ3JvdW5kOiBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci9oZXJvLWhpZ2hsaWdodCcsICdiYWNrZ3JvdW5kJyk7XG5cdC5vLXRlYXNlcl9faGVhZGluZyBhOmhvdmVyLFxuXHQuby10ZWFzZXJfX2hlYWRpbmcgYTpmb2N1cyxcblx0Lm8tdGVhc2VyX19oZWFkaW5nIGE6dmlzaXRlZCxcblx0Lm8tdGVhc2VyX19zdGFuZGZpcnN0IGE6aG92ZXIsXG5cdC5vLXRlYXNlcl9fc3RhbmRmaXJzdCBhOmZvY3VzLFxuXHQuby10ZWFzZXJfX3N0YW5kZmlyc3QgYTp2aXNpdGVkLFxuXHQuby10ZWFzZXJfX3RhZzpob3Zlcixcblx0Lm8tdGVhc2VyX190YWc6Zm9jdXMge1xuXHRcdGNvbG9yOiBvQ29sb3JzTWl4KCR0aGVtZS1oaWdobGlnaHQtY29sb3IsICR0aGVtZS1oaWdobGlnaHQtYmFja2dyb3VuZCwgJHBlcmNlbnRhZ2U6IDczKTtcblx0fVxuXG5cdC5vLXRlYXNlcl9fc3RhbmRmaXJzdCxcblx0Lm8tdGVhc2VyX190aW1lc3RhbXAsXG5cdC5vLXRlYXNlcl9fdGltZXN0YW1wLXByZWZpeDpiZWZvcmUge1xuXHRcdGNvbG9yOiBvQ29sb3JzTWl4KCR0aGVtZS1oaWdobGlnaHQtY29sb3IsICR0aGVtZS1oaWdobGlnaHQtYmFja2dyb3VuZCwgJHBlcmNlbnRhZ2U6IDgwKTtcblx0fVxuXG5cdC5vLXRlYXNlcl9fdGltZXN0YW1wLXByZWZpeDpiZWZvcmUge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG9Db2xvcnNNaXgob0NvbG9yc0J5TmFtZSgnd2hpdGUnKSwgJHRoZW1lLWhpZ2hsaWdodC1iYWNrZ3JvdW5kLCA4MCk7XG5cdH1cblxuXHQmLm8tdGVhc2VyLS1oZXJvIHtcblx0XHQuby10ZWFzZXJfX2NvbnRlbnQsXG5cdFx0Lm8tdGVhc2VyX19pbWFnZS1jb250YWluZXI6YWZ0ZXIge1xuXHRcdFx0Y29sb3I6ICR0aGVtZS1oaWdobGlnaHQtY29sb3I7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkdGhlbWUtaGlnaGxpZ2h0LWJhY2tncm91bmQ7XG5cdFx0fVxuXG5cdFx0Lm8tdGVhc2VyX19jb250ZW50OmFmdGVyIHtcblx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKFMsIEwpIHtcblx0XHRcdFx0Y29sb3I6ICR0aGVtZS1oaWdobGlnaHQtY29sb3I7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICR0aGVtZS1oaWdobGlnaHQtYmFja2dyb3VuZDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIkBtaXhpbiBfb1RlYXNlclZpZGVvIHtcblx0Lm8tdGVhc2VyX19oZWFkaW5nOmJlZm9yZSB7XG5cdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgncGxheScsIG9Db2xvcnNCeU5hbWUoJ3doaXRlJyksICRzaXplOiBudWxsKTtcblx0XHRjb250ZW50OiAnJztcblx0XHR3aWR0aDogMC43ZW07XG5cdFx0aGVpZ2h0OiAwLjdlbTtcblx0XHRtaW4td2lkdGg6IDEycHg7XG5cdFx0bWluLWhlaWdodDogMTJweDtcblx0XHRtYXJnaW4tcmlnaHQ6IDAuMTVlbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBvQ29sb3JzQnlOYW1lKCdzbGF0ZScpO1xuXG5cdH1cblxuXHQvLyBoaWRlIHRoZSB0aXRsZSBwcmVmaXggaWNvbiBpZiB0aGVyZSBpcyBhbiBpbWFnZS4uLlxuXHQmLm8tdGVhc2VyLS1oYXMtaW1hZ2UgLm8tdGVhc2VyX19oZWFkaW5nOmJlZm9yZSB7XG5cdFx0Y29udGVudDogbm9uZTtcblx0fVxuXG5cdC8vIC4uLmV4Y2VwdCBmb3Igd2hlbiB0aGUgaW1hZ2UgaXMgaGlkZGVuIG9uIHNtYWxsIHRlYXNlcnMgb24gbmFycm93IHZpZXdwb3J0c1xuXHQmLm8tdGVhc2VyLS1oYXMtaW1hZ2Uuby10ZWFzZXItLXNtYWxsIC5vLXRlYXNlcl9faGVhZGluZzpiZWZvcmUge1xuXHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCR1bnRpbDogJ00nKSB7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHR9XG5cdH1cblxuXHQvLyBBZGQgcGxheSBpY29uIG92ZXJsYXkgZm9yIGltYWdlXG5cdC5vLXRlYXNlcl9faW1hZ2UtcGxhY2Vob2xkZXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgncGxheScsIG9Db2xvcnNCeU5hbWUoJ3doaXRlJyksICRzaXplOiBudWxsKTtcblx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRib3R0b206IDA7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0ei1pbmRleDogMTtcblx0XHRcdHdpZHRoOiAxNSU7XG5cdFx0XHRwYWRkaW5nLXRvcDogMTUlO1xuXHRcdFx0bWluLXdpZHRoOiAyMHB4O1xuXHRcdFx0bWluLWhlaWdodDogMjBweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG9Db2xvcnNCeU5hbWUoJ3NsYXRlJyk7XG5cdFx0fVxuXHR9XG5cblx0Lm8tdGVhc2VyX19pbWFnZS1jb250YWluZXIgYTpmb2N1cyB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Ym9yZGVyOiAwO1xuXHR9XG59XG5cbkBtaXhpbiBfb1RlYXNlckJpZ1ZpZGVvIHtcblx0Ly8gVGhpcyB2YXJpYXRpb24gYXNzdW1lcyBubyAtLWhhcy1pbWFnZSB2YXJpYXRpb24gYXMgaXRcblx0Ly8gaXMgdG9vIHNwZWNpZmljIGFuZCBxdWlya3kgdG8gdHJ5IGFuZCBvdmVycmlkZSFcblx0Ly8gSXQgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIC0tbGFyZ2UsIC0taGVybyBhbmQgLS10b3Atc3RvcnkgdmFyaWF0aW9ucy5cblxuXHQvLyBoaWRlIHRoZSB0aXRsZSBwcmVmaXggaWNvblxuXHQuby10ZWFzZXJfX2hlYWRpbmc6YmVmb3JlIHtcblx0XHRjb250ZW50OiBub25lO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19pbWFnZS1jb250YWluZXIge1xuXHRcdC8vIHVzZSBwYWRkaW5nIGluc3RlYWQgb2YgbWFyZ2lucyBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0XG5cdFx0Ly8gdGhlIC0tc3RyZXRjaCAoZmxleGJveCkgdmFyaWFudCBjb250YWluaW5nIG1hcmdpbnMgYW5kIGRvdWJsaW5nIHVwLlxuXHRcdHBhZGRpbmc6IDAgMCBvU3BhY2luZ0J5TmFtZSgnczMnKTtcblx0fVxuXG5cdCYuby10ZWFzZXItLWxhcmdlIC5vLXRlYXNlcl9faW1hZ2UtY29udGFpbmVyLFxuXHQmLm8tdGVhc2VyLS1oZXJvIC5vLXRlYXNlcl9faW1hZ2UtY29udGFpbmVyIHtcblx0XHRwYWRkaW5nLWxlZnQ6IDEwJTtcblx0XHRwYWRkaW5nLXJpZ2h0OiAxMCU7XG5cdH1cblxuXHQmLm8tdGVhc2VyLS1sYXJnZSAuby10ZWFzZXJfX2ltYWdlLWNvbnRhaW5lciB7XG5cdFx0cGFkZGluZy10b3A6IG9TcGFjaW5nQnlOYW1lKCdzMycpO1xuXHR9XG5cblx0Ji5vLXRlYXNlci0taGVybyAuby10ZWFzZXJfX2ltYWdlLWNvbnRhaW5lciB7XG5cdFx0cGFkZGluZy10b3A6IG9TcGFjaW5nQnlOYW1lKCdzMScpO1xuXHR9XG59XG4iLCJAbWl4aW4gX29UZWFzZXJBdWRpbyB7XG5cdC5vLXRlYXNlcl9faGVhZGluZzpiZWZvcmUge1xuXHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ2F1ZGlvJywgb0NvbG9yc0J5TmFtZSgnd2hpdGUnKSwgJHNpemU6IG51bGwpO1xuXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdHdpZHRoOiAwLjdlbTtcblx0XHRoZWlnaHQ6IDAuN2VtO1xuXHRcdG1pbi13aWR0aDogMTJweDtcblx0XHRtaW4taGVpZ2h0OiAxMnB4O1xuXHRcdG1hcmdpbi1yaWdodDogMC4xNWVtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG9Db2xvcnNCeU5hbWUoJ3NsYXRlJyk7XG5cblx0fVxuXG5cdC8vIGhpZGUgdGhlIHRpdGxlIHByZWZpeCBpY29uIGlmIHRoZXJlIGlzIGFuIGltYWdlLi4uXG5cdCYuby10ZWFzZXItLWhhcy1pbWFnZSAuby10ZWFzZXJfX2hlYWRpbmc6YmVmb3JlIHtcblx0XHRjb250ZW50OiBub25lO1xuXHR9XG5cblx0Ly8gLi4uZXhjZXB0IGZvciB3aGVuIHRoZSBpbWFnZSBpcyBoaWRkZW4gb24gc21hbGwgdGVhc2VycyBvbiBuYXJyb3cgdmlld3BvcnRzXG5cdCYuby10ZWFzZXItLWhhcy1pbWFnZS5vLXRlYXNlci0tc21hbGwgLm8tdGVhc2VyX19oZWFkaW5nOmJlZm9yZSB7XG5cdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJHVudGlsOiAnTScpIHtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdH1cblx0fVxuXG5cdC8vIEFkZCBhdWRpbyBpY29uIG92ZXJsYXkgZm9yIGltYWdlXG5cdC5vLXRlYXNlcl9faW1hZ2UtcGxhY2Vob2xkZXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgnYXVkaW8nLCBvQ29sb3JzQnlOYW1lKCd3aGl0ZScpLCAkc2l6ZTogbnVsbCk7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0Ym90dG9tOiAwO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHotaW5kZXg6IDE7XG5cdFx0XHR3aWR0aDogMTUlO1xuXHRcdFx0cGFkZGluZy10b3A6IDE1JTtcblx0XHRcdG1pbi13aWR0aDogMjBweDtcblx0XHRcdG1pbi1oZWlnaHQ6IDIwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBvQ29sb3JzQnlOYW1lKCdzbGF0ZScpO1xuXHRcdH1cblx0fVxufVxuIiwiLy8vIEJhc2Ugc3R5bGVzIGZvciBhIGhlcm8gbGF5b3V0IHRlYXNlclxuQG1peGluIF9vVGVhc2VySGVybyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcblxuXHQuby10ZWFzZXJfX2NvbnRlbnQge1xuXHRcdGJhY2tncm91bmQ6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL2hlcm8nLCAnYmFja2dyb3VuZCcpO1xuXHRcdGJvcmRlcjogMDtcblx0XHR3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19tZXRhOmFmdGVyIHtcblx0XHRjb250ZW50OiAnJztcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR3aWR0aDogNjBweDtcblx0XHRib3JkZXItYm90dG9tOiBvU3BhY2luZ0J5SW5jcmVtZW50KDEpIHNvbGlkIG9Db2xvcnNCeU5hbWUoJ2NsYXJldCcpO1xuXHRcdG1hcmdpbi10b3A6IG9TcGFjaW5nQnlOYW1lKCdzMScpO1xuXHRcdG1hcmdpbi1ib3R0b206IG9TcGFjaW5nQnlOYW1lKCdzMicpO1xuXHR9XG59XG5cbi8vLyBCYXNlIHN0eWxlcyBmb3IgdGhlbWVkIGhlcm8gdGVhc2Vyc1xuQG1peGluIF9vVGVhc2VySGVyb1RoZW1lQmFzZSB7XG5cdEBpbmNsdWRlIF9vVGVhc2VySW52ZXJzZTtcblxuXHQmLm8tdGVhc2VyLS1oZXJvIHtcblx0XHQuby10ZWFzZXJfX2NvbnRlbnQsXG5cdFx0Lm8tdGVhc2VyX19pbWFnZS1jb250YWluZXI6YWZ0ZXIge1xuXHRcdFx0Ym9yZGVyOiAwO1xuXHRcdH1cblxuXHRcdC5vLXRlYXNlcl9fY29udGVudDphZnRlciB7XG5cdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbyhTLCBMKSB7XG5cdFx0XHRcdHRvcDogMDtcblx0XHRcdFx0Ym9yZGVyOiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gSGVybyBvcGluaW9uIHRoZW1lIC0gYmx1ZSBiYWNrZ3JvdW5kIHdoaXRlIGJhc2VkIHRleHRcbkBtaXhpbiBfb1RlYXNlckhlcm9PcGluaW9uIHtcblx0JG9waW5pb24tY29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL2hlcm8tb3BpbmlvbicsICd0ZXh0Jyk7XG5cdCRvcGluaW9uLWJhY2tncm91bmQ6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL2hlcm8tb3BpbmlvbicsICdiYWNrZ3JvdW5kJyk7XG5cdC5vLXRlYXNlcl9faGVhZGluZyBhOmhvdmVyLFxuXHQuby10ZWFzZXJfX2hlYWRpbmcgYTpmb2N1cyxcblx0Lm8tdGVhc2VyX19oZWFkaW5nIGE6dmlzaXRlZCxcblx0Lm8tdGVhc2VyX19zdGFuZGZpcnN0IGE6aG92ZXIsXG5cdC5vLXRlYXNlcl9fc3RhbmRmaXJzdCBhOmZvY3VzLFxuXHQuby10ZWFzZXJfX3N0YW5kZmlyc3QgYTp2aXNpdGVkLFxuXHQuby10ZWFzZXJfX3RhZzpob3Zlcixcblx0Lm8tdGVhc2VyX190YWc6Zm9jdXMge1xuXHRcdGNvbG9yOiBvQ29sb3JzTWl4KCRvcGluaW9uLWNvbG9yLCAkb3Bpbmlvbi1iYWNrZ3JvdW5kLCAkcGVyY2VudGFnZTogNzMpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19zdGFuZGZpcnN0LFxuXHQuby10ZWFzZXJfX3RpbWVzdGFtcCxcblx0Lm8tdGVhc2VyX190aW1lc3RhbXAtcHJlZml4OmJlZm9yZSB7XG5cdFx0Y29sb3I6IG9Db2xvcnNNaXgoJG9waW5pb24tY29sb3IsICRvcGluaW9uLWJhY2tncm91bmQsICRwZXJjZW50YWdlOiA4MCk7XG5cdH1cblxuXHQuby10ZWFzZXJfX3RpbWVzdGFtcC1wcmVmaXg6YmVmb3JlIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBvQ29sb3JzTWl4KG9Db2xvcnNCeU5hbWUoJ3doaXRlJyksICRvcGluaW9uLWJhY2tncm91bmQsIDgwKTtcblx0fVxuXG5cdC5vLXRlYXNlcl9fY29udGVudCxcblx0Lm8tdGVhc2VyX19pbWFnZS1jb250YWluZXI6YWZ0ZXIge1xuXHRcdGJhY2tncm91bmQ6ICRvcGluaW9uLWJhY2tncm91bmQ7XG5cdH1cblxuXHQuby10ZWFzZXJfX2NvbnRlbnQ6YWZ0ZXIge1xuXHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKFMsIEwpIHtcblx0XHRcdGJhY2tncm91bmQ6ICRvcGluaW9uLWJhY2tncm91bmQ7XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBIZXJvIGltYWdlIHRoZW1lIHN0eWxlcyAtIGZ1bGwgc2l6ZSBpbWFnZSB3aXRoIHRleHQgb3ZlcmxheVxuQG1peGluIF9vVGVhc2VySGVyb0ltYWdlIHtcblx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJHVudGlsOiBNKSB7XG5cdFx0QGluY2x1ZGUgX29UZWFzZXJIZXJvQ2VudHJlO1xuXHRcdEBpbmNsdWRlIF9vVGVhc2VySGVyb0NlbnRyZUltYWdlO1xuXHR9XG5cblx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oTSkge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdC5vLXRlYXNlcl9faW1hZ2UtY29udGFpbmVyIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0XHR6LWluZGV4OiAwO1xuXG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuby10ZWFzZXJfX2NvbnRlbnQge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHotaW5kZXg6IDE7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdG1pbi1oZWlnaHQ6IDMwJTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYShvQ29sb3JzQnlOYW1lKCdibGFjaycpLCAwLjc1KSwgdHJhbnNwYXJlbnQpO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXG5cdFx0Lm8tdGVhc2VyX19oZWFkaW5nLFxuXHRcdC5vLXRlYXNlcl9faGVhZGluZyBhLFxuXHRcdC5vLXRlYXNlcl9faGVhZGluZyBhOnZpc2l0ZWQsXG5cdFx0Lm8tdGVhc2VyX19tZXRhLFxuXHRcdC5vLXRlYXNlcl9fc3RhbmRmaXJzdCxcblx0XHQuby10ZWFzZXJfX3N0YW5kZmlyc3QgYSxcblx0XHQuby10ZWFzZXJfX3N0YW5kZmlyc3QgYTp2aXNpdGVkLFxuXHRcdC5vLXRlYXNlcl9fdGltZXN0YW1wIHtcblx0XHRcdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCd3aGl0ZScpO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IGF1dG87XG5cdFx0fVxuXG5cdFx0Lm8tdGVhc2VyX19tZXRhOmFmdGVyIHtcblx0XHRcdGJvcmRlci1ib3R0b20tY29sb3I6IG9Db2xvcnNCeU5hbWUoJ3doaXRlJyk7XG5cdFx0fVxuXHR9XG59XG5cbkBtaXhpbiBfb1RlYXNlckhlcm9NaWRTbGljZSB7XG5cdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKE0sICR1bnRpbDogTCkge1xuXHRcdC5vLXRlYXNlcl9faW1hZ2UtY29udGFpbmVyIHtcblx0XHRcdHBhZGRpbmc6IDAgMzAlO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gSGVybyB0ZWFzZXIgaW1hZ2UgY29udGFpbmVyIC0gZm9yIHN0YW5kYXJkIGhlcm8gdGVhc2Vyc1xuQG1peGluIF9vVGVhc2VySGVyb0ltYWdlQ29udGFpbmVyIHtcblx0Lm8tdGVhc2VyX19pbWFnZS1jb250YWluZXIge1xuXHRcdG9yZGVyOiAtMTtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRwYWRkaW5nLWxlZnQ6IDMwJTtcblxuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0YmFja2dyb3VuZDogb0NvbG9yc0J5VXNlY2FzZSgnby10ZWFzZXIvaGVybycsICdiYWNrZ3JvdW5kJyk7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0Ym9yZGVyOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5vLXRlYXNlcl9faW1hZ2Uge1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0fVxufVxuXG4vLy8gQ2VudHJlZCBoZXJvIHRlYXNlciBzdHlsZXMgZm9yIGNlbnRlcmluZyBjb250ZW50XG5AbWl4aW4gX29UZWFzZXJIZXJvQ2VudHJlIHtcblx0Lm8tdGVhc2VyX19jb250ZW50IHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHQuby10ZWFzZXJfX2hlYWRpbmcge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDQpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19tZXRhOmFmdGVyIHtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdH1cbn1cblxuLy8vIENlbnRyZWQgaGVybyB0ZWFzZXIgc3R5bGVzIHRvIGNlbnRyZSBpbWFnZVxuQG1peGluIF9vVGVhc2VySGVyb0NlbnRyZUltYWdlIHtcblx0Lm8tdGVhc2VyX19pbWFnZS1jb250YWluZXIge1xuXHRcdHBhZGRpbmc6IDAgMTUlO1xuXHR9XG59XG5cbi8vLyBIZXJvIHN0YW5kYWxvbmUgdGhlbWUgc3R5bGVzXG5AbWl4aW4gX29UZWFzZXJIZXJvU3RhbmRhbG9uZSB7XG5cdC5vLXRlYXNlcl9faGVhZGluZyB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKDQsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG5cdH1cblxuXHQuby10ZWFzZXJfX2ltYWdlLWNvbnRhaW5lciB7XG5cdFx0cGFkZGluZy1sZWZ0OiAyMCU7XG5cblx0XHQmOmFmdGVyIHtcblx0XHRcdHRvcDogMjUlO1xuXHRcdFx0aGVpZ2h0OiA3NSU7XG5cdFx0fVxuXHR9XG59XG5cbi8vIEhlcm8gUGFja2FnZSB0aGVtZSDigJQgZXh0cmFcbkBtaXhpbiBfb1RlYXNlckhlcm9FeHRyYSB7XG5cdCRoZXJvLWV4dHJhLWNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci90aGVtZS1oZXJvLWV4dHJhJywgJ3RleHQnKTtcblx0JGhlcm8tZXh0cmEtYmFja2dyb3VuZDogb0NvbG9yc0J5VXNlY2FzZSgnby10ZWFzZXIvdGhlbWUtaGVyby1leHRyYScsICdiYWNrZ3JvdW5kJyk7XG5cdC8vIGhpZ2hsaWdodCBjb2xvdXJzXG5cdCRoZXJvLWV4dHJhLWhpZ2hsaWdodC1ib3JkZXI6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL3RoZW1lLWhlcm8tZXh0cmEtaGlnaGxpZ2h0JywgJ2JvcmRlcicpO1xuXHQkaGVyby1leHRyYS1oaWdobGlnaHQtY29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL3RoZW1lLWhlcm8tZXh0cmEtaGlnaGxpZ2h0JywgJ3RleHQnKTtcblx0Lm8tdGVhc2VyX19oZWFkaW5nIGE6aG92ZXIsXG5cdC5vLXRlYXNlcl9faGVhZGluZyBhOmZvY3VzLFxuXHQuby10ZWFzZXJfX3N0YW5kZmlyc3QgYTpob3Zlcixcblx0Lm8tdGVhc2VyX19zdGFuZGZpcnN0IGE6Zm9jdXMge1xuXHRcdGNvbG9yOiAkaGVyby1leHRyYS1oaWdobGlnaHQtY29sb3I7XG5cdH1cblxuXHQuby10ZWFzZXJfX3RhZzpob3Zlcixcblx0Lm8tdGVhc2VyX190YWc6Zm9jdXMge1xuXHRcdGNvbG9yOiBvQ29sb3JzTWl4KG9Db2xvcnNCeU5hbWUoJ3doaXRlJyksICRoZXJvLWV4dHJhLWhpZ2hsaWdodC1jb2xvciwgNzMpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19tZXRhIHtcblx0XHRjb2xvcjogJGhlcm8tZXh0cmEtaGlnaGxpZ2h0LWNvbG9yO1xuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRoZXJvLWV4dHJhLWhpZ2hsaWdodC1ib3JkZXI7XG5cdFx0fVxuXHR9XG5cblx0Lm8tdGVhc2VyX19oZWFkaW5nLFxuXHQuby10ZWFzZXJfX3N0YW5kZmlyc3Qge1xuXHRcdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCd3aGl0ZScpO1xuXHRcdGE6dmlzaXRlZCB7XG5cdFx0XHRjb2xvcjogb0NvbG9yc01peCgkaGVyby1leHRyYS1jb2xvciwgJGhlcm8tZXh0cmEtYmFja2dyb3VuZCwgJHBlcmNlbnRhZ2U6IDUwKTtcblx0XHR9XG5cdH1cblxuXHQuby10ZWFzZXJfX3N0YW5kZmlyc3QsXG5cdC5vLXRlYXNlcl9fdGltZXN0YW1wIHtcblx0XHRjb2xvcjogb0NvbG9yc01peCgkaGVyby1leHRyYS1jb2xvciwgJGhlcm8tZXh0cmEtYmFja2dyb3VuZCwgJHBlcmNlbnRhZ2U6IDgwKTtcblx0fVxuXG5cdC5vLXRlYXNlcl9faW1hZ2UtY29udGFpbmVyOmFmdGVyLFxuXHQuby10ZWFzZXJfX2NvbnRlbnQge1xuXHRcdGJhY2tncm91bmQ6ICRoZXJvLWV4dHJhLWJhY2tncm91bmQ7XG5cdH1cblxuXHQuby10ZWFzZXJfX2NvbnRlbnQ6YWZ0ZXIge1xuXHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKFMsIEwpIHtcblx0XHRcdGJhY2tncm91bmQ6ICRoZXJvLWV4dHJhLWJhY2tncm91bmQ7XG5cdFx0fVxuXHR9XG59XG4iLCIvLy8gQmFzZSBUb3Agc3Rvcnkgc3R5bGVzIGZvciBhbGwgdmFyaWFudHNcbkBtaXhpbiBfb1RlYXNlclRvcFN0b3J5QmFzZSB7XG5cdC5vLXRlYXNlcl9fY29udGVudCB7XG5cdFx0cGFkZGluZzogMCAwIDMycHg7XG5cdFx0Ym9yZGVyOiAwO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19oZWFkaW5nIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAoZGVmYXVsdDogKDUsIDEpLCBMOiAoNykpKTtcblx0fVxuXG5cdC5vLXRlYXNlcl9fc3RhbmRmaXJzdCB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKDIsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG5cdH1cbn1cblxuLy8vIFN0YW5kYWxvbmUgdG9wIHN0b3J5IHRoZW1lIHN0eWxlc1xuQG1peGluIF9vVGVhc2VyVG9wU3RvcnlTdGFuZGFsb25lIHtcblx0Lm8tdGVhc2VyX19pbWFnZS1jb250YWluZXIge1xuXHRcdG1hcmdpbi1ib3R0b206IG9TcGFjaW5nQnlOYW1lKCdzMycpO1xuXHR9XG59XG5cbi8vLyBMYW5kc2NhcGUgdG9wIHN0b3J5IHRoZW1lIHN0eWxlc1xuQG1peGluIF9vVGVhc2VyVG9wU3RvcnlMYW5kc2NhcGUge1xuXHRAaW5jbHVkZSBvTm9ybWFsaXNlQ2xlYXJmaXg7XG5cdGJhY2tncm91bmQ6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL2hlcm8nLCAnYmFja2dyb3VuZCcpO1xuXHRwYWRkaW5nOiAxMnB4O1xuXG5cdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKE0pIHtcblx0XHRwYWRkaW5nOiAyMHB4IDAgMCAyMHB4O1xuXG5cdFx0Lm8tdGVhc2VyX19jb250ZW50IHtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0d2lkdGg6IDUwJTtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDIwcHg7XG5cdFx0fVxuXG5cdFx0Lm8tdGVhc2VyX19pbWFnZS1jb250YWluZXIsXG5cdFx0Lm8tdGVhc2VyX19yZWxhdGVkIHtcblx0XHRcdGZsb2F0OiByaWdodDtcblx0XHRcdHdpZHRoOiA1MCU7XG5cdFx0fVxuXG5cdFx0Lm8tdGVhc2VyX19yZWxhdGVkIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDIwcHg7XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBCaWcgU3RvcnkgdG9wIHN0b3J5IHRoZW1lIHN0eWxlc1xuQG1peGluIF9vVGVhc2VyVG9wU3RvcnlCaWdTdG9yeSB7XG5cdG1hcmdpbi1ib3R0b206IDA7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlci1ib3R0b206IDA7XG5cblx0Lm8tdGVhc2VyX19pbWFnZS1wbGFjZWhvbGRlciB7XG5cdFx0cGFkZGluZy1ib3R0b206IDEwMCU7XG5cdH1cblxuXHQuby10ZWFzZXJfX2NvbnRlbnQge1xuXHRcdHBhZGRpbmc6IDYwcHggMCAxMnB4O1xuXHR9XG5cblx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oTSkge1xuXHRcdC5vLXRlYXNlcl9fY29udGVudCB7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdHdpZHRoOiA1MCU7XG5cdFx0XHRwYWRkaW5nOiA2MHB4IDIwcHggMTJweCAwO1xuXHRcdH1cblxuXHRcdC5vLXRlYXNlcl9faW1hZ2UtY29udGFpbmVyIHtcblx0XHRcdHdpZHRoOiA1MCU7XG5cdFx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0fVxuXHR9XG5cblx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oTCkge1xuXHRcdC5vLXRlYXNlcl9faW1hZ2UtY29udGFpbmVyIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXHR9XG59XG4iLCJAbWl4aW4gX29UZWFzZXJQYWNrYWdlIHtcblx0QGluY2x1ZGUgX29UZWFzZXJJbnZlcnNlO1xuXHRAaW5jbHVkZSBfb1RlYXNlclBhY2thZ2VMaXN0O1xuXHR3aWR0aDogMTAwJTtcblx0ZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuXG5cdC5vLXRlYXNlcl9faW1hZ2UtcGxhY2Vob2xkZXIge1xuXHRcdHotaW5kZXg6IC0xO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19jb250ZW50IHtcblx0XHRiYWNrZ3JvdW5kOiBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci9wYWNrYWdlLWJhc2ljJywgJ2JhY2tncm91bmQnKTtcblx0fVxuXG5cdC5vLXRlYXNlcl9fbWV0YSB7XG5cdFx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL3BhY2thZ2UtYmFzaWMnLCAndGV4dCcpO1xuXHRcdHBhZGRpbmc6IDE1cHggMCAwIDIwcHg7XG5cdFx0d2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR0b3A6IC01MHB4O1xuXHRcdGJhY2tncm91bmQ6IGluaGVyaXQ7XG5cblx0XHQmOmFmdGVyIHtcblx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdHdpZHRoOiA2MHB4O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogb1NwYWNpbmdCeUluY3JlbWVudCgxKSBzb2xpZCBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci9wYWNrYWdlLWJhc2ljJywgJ2JvcmRlcicpO1xuXHRcdFx0bWFyZ2luLXRvcDogb1NwYWNpbmdCeU5hbWUoJ3MxJyk7XG5cdFx0fVxuXHR9XG5cblx0Lm8tdGVhc2VyX19oZWFkaW5nIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiA0KTtcblx0XHRjb2xvcjogJF9vLXRlYXNlci1iYXNlLWNvbG9yO1xuXHRcdGJhY2tncm91bmQ6IGluaGVyaXQ7XG5cdFx0cGFkZGluZzogMjBweDtcblx0XHRtYXJnaW4tdG9wOiAtNTVweDtcblx0XHR3aWR0aDogMTAwJTtcblxuXHRcdGE6aG92ZXIsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRjb2xvcjogJF9vLXRlYXNlci1mb2N1cy1ob3Zlcjtcblx0XHR9XG5cdH1cbn1cblxuQG1peGluIF9vVGVhc2VyU3BlY2lhbFJlcG9ydFBhY2thZ2Uge1xuXHRAaW5jbHVkZSBfb1RlYXNlclNwZWNpYWxSZXBvcnRQYWNrYWdlTGlzdDtcblxuXHQuby10ZWFzZXJfX2NvbnRlbnQge1xuXHRcdGJhY2tncm91bmQ6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL3BhY2thZ2Utc3BlY2lhbC1yZXBvcnQnLCAnYmFja2dyb3VuZCcpO1xuXHR9XG5cblx0Lm8tdGVhc2VyX19tZXRhIHtcblx0XHRjb2xvcjogb0NvbG9yc0J5TmFtZSgnd2hpdGUnKTtcblxuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiBvQ29sb3JzQnlOYW1lKCd3aGl0ZScpO1xuXHRcdH1cblx0fVxuXG5cdC5vLXRlYXNlcl9faGVhZGluZyB7XG5cdFx0Y29sb3I6IG9Db2xvcnNCeU5hbWUoJ3doaXRlJyk7XG5cblx0XHRhOmhvdmVyLFxuXHRcdGE6dmlzaXRlZCxcblx0XHQmOmZvY3VzIHtcblx0XHRcdCRzcGVjaWFsLXJlcG9ydC1jb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnby10ZWFzZXIvcGFja2FnZS1zcGVjaWFsLXJlcG9ydCcsICd0ZXh0Jyk7XG5cdFx0XHQkc3BlY2lhbC1yZXBvcnQtYmFja2dyb3VuZDogb0NvbG9yc0J5VXNlY2FzZSgnby10ZWFzZXIvcGFja2FnZS1zcGVjaWFsLXJlcG9ydCcsICdiYWNrZ3JvdW5kJyk7XG5cdFx0XHRjb2xvcjogb0NvbG9yc01peCgkc3BlY2lhbC1yZXBvcnQtY29sb3IsICRzcGVjaWFsLXJlcG9ydC1iYWNrZ3JvdW5kLCAkcGVyY2VudGFnZTogNzgpO1xuXHRcdH1cblx0fVxufVxuXG5AbWl4aW4gX29UZWFzZXJFeHRyYVBhY2thZ2Uge1xuXHRAaW5jbHVkZSBfb1RlYXNlckV4dHJhUGFja2FnZUxpc3Q7XG5cblx0Lm8tdGVhc2VyX19jb250ZW50IHtcblx0XHRiYWNrZ3JvdW5kOiBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci90aGVtZS1oZXJvLWV4dHJhJywgJ2JhY2tncm91bmQnKTtcblx0fVxuXG5cdC5vLXRlYXNlcl9fbWV0YSB7XG5cdFx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL3RoZW1lLWhlcm8tZXh0cmEtaGlnaGxpZ2h0JywgJ3RleHQnKTtcblxuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci90aGVtZS1oZXJvLWV4dHJhLWhpZ2hsaWdodCcsICdib3JkZXInKTtcblx0XHR9XG5cdH1cblxuXHQuby10ZWFzZXJfX2hlYWRpbmcge1xuXHRcdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCd3aGl0ZScpO1xuXG5cdFx0YTpob3Zlcixcblx0XHQmOmZvY3VzIHtcblx0XHRcdGNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci90aGVtZS1oZXJvLWV4dHJhLWhpZ2hsaWdodCcsICd0ZXh0Jyk7XG5cdFx0fVxuXHR9XG5cblx0Lm8tdGVhc2VyX190aW1lc3RhbXAge1xuXHRcdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCd3aGl0ZScpO1xuXHR9XG59XG5cbkBtaXhpbiBfb1RlYXNlclBhY2thZ2VMaXN0IHtcblx0LnBhY2thZ2UtdGVhc2VyIHtcblx0XHQmX19saXN0IHtcblx0XHRcdG1hcmdpbjogLTEycHggMCAwO1xuXHRcdFx0cGFkZGluZzogMCAyMHB4IDEycHg7XG5cdFx0XHRiYWNrZ3JvdW5kOiBpbmhlcml0O1xuXHRcdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHR9XG5cblx0XHQmX19saXN0LWl0ZW0sXG5cdFx0Jl9fbGFuZGluZy1saW5rIHtcblx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygwLCAyMHB4KTtcblx0XHRcdHBhZGRpbmc6IDEycHggMDtcblxuXHRcdFx0PiBhIHtcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0XHRib3JkZXI6IDA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fbGlzdC1pdGVtIGEge1xuXHRcdFx0Y29sb3I6IG9Db2xvcnNNaXgoJF9vLXRlYXNlci1iYXNlLWNvbG9yLCAkcGVyY2VudGFnZTogODApO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Y29sb3I6ICRfby10ZWFzZXItZm9jdXMtaG92ZXI7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fbGFuZGluZy1saW5rIGEge1xuXHRcdFx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL3BhY2thZ2UtYmFzaWMnLCAndGV4dCcpO1xuXG5cdFx0XHQmOmhvdmVyLFxuXHRcdFx0Jjp2aXNpdGVkLFxuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdCRzcGVjaWFsLXJlcG9ydC1jb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnby10ZWFzZXIvcGFja2FnZS1zcGVjaWFsLXJlcG9ydCcsICd0ZXh0Jyk7XG5cdFx0XHRcdCRzcGVjaWFsLXJlcG9ydC1iYWNrZ3JvdW5kOiBvQ29sb3JzQnlVc2VjYXNlKCdvLXRlYXNlci9wYWNrYWdlLXNwZWNpYWwtcmVwb3J0JywgJ2JhY2tncm91bmQnKTtcblx0XHRcdFx0Y29sb3I6IG9Db2xvcnNNaXgoJHNwZWNpYWwtcmVwb3J0LWNvbG9yLCAkc3BlY2lhbC1yZXBvcnQtYmFja2dyb3VuZCwgJHBlcmNlbnRhZ2U6IDc4KTtcblx0XHRcdH1cblxuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ2Fycm93LXJpZ2h0Jywgb0NvbG9yc0J5VXNlY2FzZSgnby10ZWFzZXIvcGFja2FnZS1iYXNpYycsICd0ZXh0JyksICRzaXplOiAzMCk7XG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdGJvdHRvbTogMThweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuQG1peGluIF9vVGVhc2VyU3BlY2lhbFJlcG9ydFBhY2thZ2VMaXN0IHtcblx0LnBhY2thZ2UtdGVhc2VyIHtcblx0XHQkcGFja2FnZS1zcGVjaWFsLXJlcG9ydC1jb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnby10ZWFzZXIvcGFja2FnZS1zcGVjaWFsLXJlcG9ydCcsICd0ZXh0Jyk7XG5cdFx0JHBhY2thZ2Utc3BlY2lhbC1yZXBvcnQtYmFja2dyb3VuZDogb0NvbG9yc0J5VXNlY2FzZSgnby10ZWFzZXIvcGFja2FnZS1zcGVjaWFsLXJlcG9ydCcsICdiYWNrZ3JvdW5kJyk7XG5cdFx0Jl9fbGlzdC1pdGVtIGEge1xuXHRcdFx0Y29sb3I6IG9Db2xvcnNCeU5hbWUoJ3doaXRlJyk7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogb0NvbG9yc01peCgkcGFja2FnZS1zcGVjaWFsLXJlcG9ydC1jb2xvciwgJHBhY2thZ2Utc3BlY2lhbC1yZXBvcnQtYmFja2dyb3VuZCwgJHBlcmNlbnRhZ2U6IDc4KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmX19sYW5kaW5nLWxpbmsgYSB7XG5cdFx0XHRjb2xvcjogb0NvbG9yc01peCgkcGFja2FnZS1zcGVjaWFsLXJlcG9ydC1jb2xvciwgJHBhY2thZ2Utc3BlY2lhbC1yZXBvcnQtYmFja2dyb3VuZCwgJHBlcmNlbnRhZ2U6IDgwKTtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCd3aGl0ZScpO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgnYXJyb3ctcmlnaHQnLCBvQ29sb3JzQnlOYW1lKCd3aGl0ZScpLCAkc2l6ZTogMzApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5AbWl4aW4gX29UZWFzZXJFeHRyYVBhY2thZ2VMaXN0IHtcblx0LnBhY2thZ2UtdGVhc2VyIHtcblx0XHQkaGVyby1leHRyYS1oaWdobGlnaHQtY29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ28tdGVhc2VyL3RoZW1lLWhlcm8tZXh0cmEtaGlnaGxpZ2h0JywgJ3RleHQnKTtcblx0XHQmX19saXN0LWl0ZW0gYSB7XG5cdFx0XHRjb2xvcjogb0NvbG9yc0J5TmFtZSgnd2hpdGUnKTtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGNvbG9yOiAkaGVyby1leHRyYS1oaWdobGlnaHQtY29sb3I7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fbGFuZGluZy1saW5rIGEge1xuXHRcdFx0Y29sb3I6ICRoZXJvLWV4dHJhLWhpZ2hsaWdodC1jb2xvcjtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCd3aGl0ZScpO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgnYXJyb3ctcmlnaHQnLCAkaGVyby1leHRyYS1oaWdobGlnaHQtY29sb3IsICRzaXplOiAzMCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iLCJAbWl4aW4gX29UZWFzZXJUaGVtZUxpdmUge1xuXHQuby10ZWFzZXItLXNtYWxsLm8tdGVhc2VyLS1saXZlIC5vLXRlYXNlcl9fY29udGVudCB7XG5cdFx0cGFkZGluZzogMTJweDtcblx0fVxuXG5cdC5vLXRlYXNlci0tc21hbGwuby10ZWFzZXItLWxpdmUuby10ZWFzZXItLWhhcy1pbWFnZSB7XG5cdFx0cGFkZGluZzogMTJweDtcblx0XHQuby10ZWFzZXJfX2NvbnRlbnQge1xuXHRcdFx0cGFkZGluZzogMHB4O1xuXHRcdH1cblx0fVxuXG5cdC5vLXRlYXNlci0tc21hbGwuby10ZWFzZXItLWxpdmUge1xuXHRcdC8vIGNyZWF0ZSB3aGl0ZSB0ZXh0IHJlZCBiYWNrZ3JvdW5kXG5cdFx0QGluY2x1ZGUgX29UZWFzZXJJbnZlcnNlO1xuXHRcdGJhY2tncm91bmQ6IG9Db2xvcnNCeU5hbWUoJ2NyaW1zb24nKTtcblxuXHRcdC5vLXRlYXNlcl9fY29udGVudCAqIHtcblx0XHRcdGNvbG9yOiB3aGl0ZTtcblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogd2hpdGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lm8tdGVhc2VyX19tZXRhIGEsXG5cdFx0Lm8tdGVhc2VyX19oZWFkaW5nIGEsXG5cdFx0Lm8tdGVhc2VyX19zdGFuZGZpcnN0IGEge1xuXHRcdFx0Jjpmb2N1cyxcblx0XHRcdCY6aG92ZXIsXG5cdFx0XHQmOnZpc2l0ZWQge1xuXHRcdFx0XHRjb2xvcjogb0NvbG9yc01peCh3aGl0ZSwgY3JpbXNvbiwgOTApO1xuXHRcdFx0XHRvdXRsaW5lLWNvbG9yOiBjdXJyZW50Q29sb3I7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQGRlcHJlY2F0ZWQgLSBvLXRlYXNlcl9fdGltZXN0YW1wLS1pbnByb2dyZXNzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IG8tdGVhc2VyX190aW1lc3RhbXAtLWxpdmVcblx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vRmluYW5jaWFsLVRpbWVzL28tdGVhc2VyL2lzc3Vlcy8xNzNcblx0XHQuby10ZWFzZXJfX3RpbWVzdGFtcC1wcmVmaXg6YmVmb3JlLFxuXHRcdC5vLXRlYXNlcl9fdGltZXN0YW1wLS1pbnByb2dyZXNzOmJlZm9yZSxcblx0XHQuby10ZWFzZXJfX3RpbWVzdGFtcC0tbGl2ZTpiZWZvcmUge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG5cdFx0fVxuXHR9XG5cdC5vLXRlYXNlci0tbGl2ZSB7XG5cdFx0Ly8gbW92ZSBcIkxJVkVcIiB0byB0aGUgdG9wIHdpdGhvdXQgY2hhbmdpbmcgdGhlIEhUTUxcblx0XHQuby10ZWFzZXJfX2NvbnRlbnQge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0fVxuXHRcdC5vLXRlYXNlcl9fdGltZXN0YW1wIHtcblx0XHRcdG9yZGVyOiAtMTtcblx0XHRcdHBhZGRpbmctdG9wOiAwO1xuXG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdHRvcDogM3B4O1xuXHRcdFx0fVxuXHRcdH1cblx0XHQuby10ZWFzZXJfX3RpbWVzdGFtcCB0aW1lIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG59XG4iLCIkby10ZWFzZXItaXMtc2lsZW50OiBmYWxzZTtcblxuQGltcG9ydCAnLi4vc2hhcmVkL19nbG9iYWxzLnNjc3MnO1xuQGltcG9ydCAnby10ZWFzZXIvbWFpbic7XG5cbi5vbndhcmQtam91cm5leSAuby10ZWFzZXIgYSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG5cbi5vbndhcmQtam91cm5leV9fbGluayB7XG4gIGNvbG9yOiAjMzMzMDJlO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgaDMge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiA2MHB4O1xuICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgICAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICMwMDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB6LWluZGV4OiAxO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vIE91dHB1dCBBbGwgb0NvbW1lbnRzIEZlYXR1cmVzXG5AbWl4aW4gb0NvbW1lbnRzICgpIHtcblx0Lm8tY29tbWVudHNfX3N0YWdpbmctbWVzc2FnZS1jb250YWluZXIge1xuXHRcdG1hcmdpbi1ib3R0b206IG9TcGFjaW5nQnlOYW1lKCdzMicpO1xuXHRcdHBhZGRpbmc6IDA7XG5cdH1cblxuXHQuby1jb21tZW50c19fc3RhZ2luZy1tZXNzYWdlLWNvbnRlbnQge1xuXHRcdHBhZGRpbmctdG9wOiBvU3BhY2luZ0J5TmFtZSgnczEnKTtcblx0XHRwYWRkaW5nLWJvdHRvbTogb1NwYWNpbmdCeU5hbWUoJ3MxJyk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogb0NvbG9yc0J5TmFtZSgnY2xhcmV0LTgwJyk7XG5cdH1cblxuXHQuby1jb21tZW50c19fc3RhZ2luZy1tZXNzYWdlIHtcblx0XHRjb2xvcjogd2hpdGU7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0cGFkZGluZy1sZWZ0OiBvU3BhY2luZ0J5TmFtZSgnczQnKTtcblx0fVxuXG5cdC5vLWNvbW1lbnRzX19zaWduZWQtaW4tdGV4dCB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMCk7XG5cdH1cblxuXHQuby1jb21tZW50c19fc2lnbmVkLWluLWlubmVyLXRleHQge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDIpO1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHR9XG5cblx0Lm8tY29tbWVudHNfX3NpZ25lZC1pbi1jb250YWluZXIge1xuXHRcdG1hcmdpbi1ib3R0b206IG9TcGFjaW5nQnlOYW1lKCdzNicpO1xuXHR9XG5cblx0Lm8tY29tbWVudHNfX2VkaXQtZGlzcGxheS1uYW1lIHtcblx0XHRAaW5jbHVkZSBvQnV0dG9uc0NvbnRlbnQoJG9wdHM6IChcblx0XHRcdCd0eXBlJzogJ3ByaW1hcnknLFxuXHRcdFx0J2ljb24nOiAnZWRpdCdcblx0XHQpKTtcblxuXHRcdG1hcmdpbi1sZWZ0OiBvU3BhY2luZ0J5TmFtZSgnczInKTtcblx0fVxuXG5cdC5vLWNvbW1lbnRzX19lZGl0LWRpc3BsYXktbmFtZS1kZXNjcmlwdGl2ZSB7XG5cdFx0QGluY2x1ZGUgb05vcm1hbGlzZVZpc3VhbGx5SGlkZGVuKCk7XG5cdH1cblxuXHQuby1vdmVybGF5Lm8tY29tbWVudHNfX2Rpc3BsYXluYW1lLXByb21wdCB7XG5cdFx0YmFja2dyb3VuZDogb0NvbG9yc0J5TmFtZSgncGFwZXInKTtcblx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1heC13aWR0aDogNDAwcHg7XG5cblx0XHQuby1vdmVybGF5X190aXRsZSB7XG5cdFx0XHRtYXJnaW46IDVweCAxMHB4IDEwcHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMjVweDtcblx0XHRcdGZvbnQtZmFtaWx5OiBNZXRyaWNXZWI7XG5cdFx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHR9XG5cblx0XHQuby1jb21tZW50c19fZGlzcGxheW5hbWUtZm9ybSB7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAwcHg7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDBweDtcblx0XHR9XG5cblx0XHQuby1jb21tZW50c19fZGlzcGxheW5hbWUtY29udGFpbmVyIHtcblx0XHRcdG1hcmdpbi10b3A6IG9TcGFjaW5nQnlOYW1lKCdzMicpO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHR9XG5cblx0XHQuby1jb21tZW50c19fZGlzcGxheW5hbWUtZmllbGQge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHR9XG5cblx0XHQuby1jb21tZW50c19fZGlzcGxheW5hbWUtaW5wdXQge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDE1cHg7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblxuXHRcdC5vLWNvbW1lbnRzX19kaXNwbGF5bmFtZS1zdWJtaXQge1xuXHRcdFx0QGluY2x1ZGUgb0J1dHRvbnNDb250ZW50KCRvcHRzOiAoXG5cdFx0XHRcdCd0eXBlJzogJ3ByaW1hcnknXG5cdFx0XHQpKTtcblx0XHR9XG5cblx0XHQuby1jb21tZW50c19fZGlzcGxheW5hbWUtZXJyb3Ige1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0Ym90dG9tOiAwO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gUHJvdmlkZSBhIGNvbXBvbmVudCBzcGVjaWZpYyBlcnJvciBtZXNzYWdlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBpbnNlcnQgaW4gdGhlIGVycm9yLlxuLy8vIEBhY2Nlc3MgUHJpdmF0ZVxuQG1peGluIF9vQ29tbWVudHMoJG1lc3NhZ2UpIHtcblx0QGVycm9yICcqKiogb0NvbW1lbnRzIFNDU1MgZXJyb3I6ICN7JG1lc3NhZ2V9ICoqKic7XG59XG4iLCIvLy8gT3V0cHV0cyB0eXBvZ3JhcGh5IHN0eWxlcyBmb3IgdGhlIFNlcmlmIGZvbnQuXG4vLy8gSW5jbHVkaW5nOiBmYW1pbHksIHNpemUsIGxpbmUtaGVpZ2h0LCB3ZWlnaHQsIHN0eWxlLCBhbmQgZm9udCBzaXplc1xuLy8vIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcuXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBmb250LWZhbWlseSBwcm9wZXJ0eSBvbmx5IGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzZXJpZiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIHNlcmlmIGZvbnQuIFNldCBhIGN1c3RvbSBsaW5lLWhlaWdodCBvZiAxLjYuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJGxpbmUtaGVpZ2h0OiAxLjYpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC13ZWlnaHQgZm9yIHRoZSBzZXJpZiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICR3ZWlnaHQ6ICdib2xkJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXN0eWxlIGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBzZXJpZiBmb250IHByb3BlcnRpZXMgd2l0aG91dCBmb250LWZhbWlseS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNlcmlmIGZvbnQgcHJvcGVydGllcyB3aXRob3V0IHNpemVzIGZvciB0aGUgZmFsbGJhY2sgZm9udCAod2l0aG91dCBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcpLlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLXByb2dyZXNzaXZlOiBmYWxzZSk7XG4vLy9cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgc2VyaWYgZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG5AbWl4aW4gb1R5cG9ncmFwaHlTZXJpZihcblx0JHNjYWxlOiBudWxsLFxuXHQkbGluZS1oZWlnaHQ6IG51bGwsXG5cdCR3ZWlnaHQ6IG51bGwsXG5cdCRzdHlsZTogbnVsbCxcblx0JGluY2x1ZGUtZm9udC1mYW1pbHk6IHRydWUsXG5cdCRpbmNsdWRlLXByb2dyZXNzaXZlOiAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZ1xuKSB7XG5cdEBpbmNsdWRlIF9vVHlwb2dyYXBoeUZvcihcblx0XHQkX28tdHlwb2dyYXBoeS1zZXJpZixcblx0XHQkc2NhbGUsXG5cdFx0JGxpbmUtaGVpZ2h0LFxuXHRcdCR3ZWlnaHQsXG5cdFx0JHN0eWxlLFxuXHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5LFxuXHRcdCRpbmNsdWRlLXByb2dyZXNzaXZlXG5cdCk7XG59XG5cbi8vLyBPdXRwdXRzIHR5cG9ncmFwaHkgc3R5bGVzIGZvciB0aGUgRGlzcGxheSBmb250LlxuLy8vIEluY2x1ZGluZzogZmFtaWx5LCBzaXplLCBsaW5lLWhlaWdodCwgd2VpZ2h0LCBzdHlsZSwgYW5kIGZvbnQgc2l6ZXNcbi8vLyBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nLlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGEgZm9udC1mYW1pbHkgcHJvcGVydHkgb25seSBmb3IgdGhlIGRpc3BsYXkgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIGRpc3BsYXkgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIGRpc3BsYXkgZm9udC4gU2V0IGEgY3VzdG9tIGxpbmUtaGVpZ2h0IG9mIDEuNi5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRsaW5lLWhlaWdodDogMS42KTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtd2VpZ2h0IGZvciB0aGUgZGlzcGxheSBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHdlaWdodDogJ2JvbGQnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtc3R5bGUgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBkaXNwbGF5IGZvbnQgcHJvcGVydGllcyB3aXRob3V0IGZvbnQtZmFtaWx5LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBkaXNwbGF5IGZvbnQgcHJvcGVydGllcyB3aXRob3V0IHNpemVzIGZvciB0aGUgZmFsbGJhY2sgZm9udCAod2l0aG91dCBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcpLlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtcHJvZ3Jlc3NpdmU6IGZhbHNlKTtcbi8vL1xuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJHNjYWxlIFtudWxsXSAtIGEgc2NhbGUgbnVtYmVyIHRvIG91dHB1dCBhIGZvbnQtc2l6ZSBhbmQgbGluZS1oZWlnaHQgcHJvcGVydHlcbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBbbnVsbF0gLSBjdXN0b20gbGluZS1oZWlnaHQgdmFsdWUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIHNjYWxlJ3MgZGVmYXVsdFxuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXdlaWdodCBwcm9wZXJ0eSwgZS5nLiAnYm9sZCcsICdzZW1pYm9sZCdcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXN0eWxlIHByb3BlcnR5LCBlLmcuICdpdGFsaWMnXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1mb250LWZhbWlseSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSB0aGUgZm9udC1mYW1pbHkgcHJvcGVydHkgZnJvbSB0aGUgb3V0cHV0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHJlc2l6aW5nIHR5cG9ncmFwaHksIHdoZXJlIHRoZSBkaXNwbGF5IGZvbnQtZmFtaWx5IGlzIGluaGVyaXRlZCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1wcm9ncmVzc2l2ZSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBzdHlsZXMgdXNlZCBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nIChmb250LWZhbWlseSBhbmQgc2l6ZSBmYWxsYmFja3MgZm9yIGxvYWRpbmcgZm9udHMpLlxuQG1peGluIG9UeXBvZ3JhcGh5RGlzcGxheShcblx0JHNjYWxlOiBudWxsLFxuXHQkbGluZS1oZWlnaHQ6IG51bGwsXG5cdCR3ZWlnaHQ6IG51bGwsXG5cdCRzdHlsZTogbnVsbCxcblx0JGluY2x1ZGUtZm9udC1mYW1pbHk6IHRydWUsXG5cdCRpbmNsdWRlLXByb2dyZXNzaXZlOiAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZ1xuKSB7XG5cdEBpbmNsdWRlIF9vVHlwb2dyYXBoeUZvcihcblx0XHQkX28tdHlwb2dyYXBoeS1kaXNwbGF5LFxuXHRcdCRzY2FsZSxcblx0XHQkbGluZS1oZWlnaHQsXG5cdFx0JHdlaWdodCxcblx0XHQkc3R5bGUsXG5cdFx0JGluY2x1ZGUtZm9udC1mYW1pbHksXG5cdFx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmVcblx0KTtcbn1cblxuLy8vIE91dHB1dHMgdHlwb2dyYXBoeSBzdHlsZXMgZm9yIHRoZSBTYW5zIGZvbnQuXG4vLy8gSW5jbHVkaW5nOiBmYW1pbHksIHNpemUsIGxpbmUtaGVpZ2h0LCB3ZWlnaHQsIHN0eWxlLCBhbmQgZm9udCBzaXplc1xuLy8vIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcuXG4vLy9cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGZvbnQtZmFtaWx5IHByb3BlcnR5IG9ubHkgZm9yIHRoZSBzYW5zIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzYW5zIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzYW5zIGZvbnQuIFNldCBhIGN1c3RvbSBsaW5lLWhlaWdodCBvZiAxLjYuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkbGluZS1oZWlnaHQ6IDEuNik7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXdlaWdodCBmb3IgdGhlIHNhbnMgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICR3ZWlnaHQ6ICdib2xkJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXN0eWxlIGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgc2FucyBmb250IHByb3BlcnRpZXMgd2l0aG91dCBmb250LWZhbWlseS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgc2FucyBmb250IHByb3BlcnRpZXMgd2l0aG91dCBzaXplcyBmb3IgdGhlIGZhbGxiYWNrIGZvbnQgKHdpdGhvdXQgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nKS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLXByb2dyZXNzaXZlOiBmYWxzZSk7XG4vLy9cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgc2FucyBmb250LWZhbWlseSBpcyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudCBlbGVtZW50LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtcHJvZ3Jlc3NpdmUgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgc3R5bGVzIHVzZWQgZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZyAoZm9udC1mYW1pbHkgYW5kIHNpemUgZmFsbGJhY2tzIGZvciBsb2FkaW5nIGZvbnRzKS5cbkBtaXhpbiBvVHlwb2dyYXBoeVNhbnMoXG5cdCRzY2FsZTogbnVsbCxcblx0JGxpbmUtaGVpZ2h0OiBudWxsLFxuXHQkd2VpZ2h0OiBudWxsLFxuXHQkc3R5bGU6IG51bGwsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlLFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZTogJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmdcbikge1xuXHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb3IoXG5cdFx0JF9vLXR5cG9ncmFwaHktc2Fucyxcblx0XHQkc2NhbGUsXG5cdFx0JGxpbmUtaGVpZ2h0LFxuXHRcdCR3ZWlnaHQsXG5cdFx0JHN0eWxlLFxuXHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5LFxuXHRcdCRpbmNsdWRlLXByb2dyZXNzaXZlXG5cdCk7XG59XG5cbi8vLyBTZXQgYSBjdXN0b20gZm9udC5cbi8vL1xuLy8vIEBleGFtcGxlIFRoaXMgZXhhbXBsZSBzaG93cyBzZXR0aW5nIGEgY3VzdG9tIGZvbnQgXCJNeVNhbnNGb250XCIgYXMgdGhlIFwic2Fuc1wiIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNldEZvbnQoJHR5cGU6ICdzYW5zJywgJGZhbWlseTogJ015U2Fuc0ZvbnQsIHNhbnMnKTtcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHlwZSAtIE9uZSBvZiAnc2FucycsICdzZXJpZicsIG9yICdkaXNwbGF5Jy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZhbWlseSAtIFRoZSBmb250IGZhbWlseSB0byBzZXQuXG5AbWl4aW4gb1R5cG9ncmFwaHlTZXRGb250KCR0eXBlLCAkZmFtaWx5KSB7XG5cdCRmb250OiBvRm9udHNHZXRGb250RmFtaWx5V2l0aG91dEZhbGxiYWNrcygkZmFtaWx5KTtcblx0QGlmIG5vdCBvRm9udHNWYXJpYW50RXhpc3RzKCRmb250LCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwpIHtcblx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBzZXQgdGhlIGZvbnQgZmFtaWx5IFwiI3skZmFtaWx5fVwiIGFzIFwiI3skZm9udH1cIiBkb2VzIG5vdCBleGlzdCBpbiBcIm8tZm9udHNcIi4gSWYgeW91IGFyZSBzZXR0aW5nIGEgY3VzdG9tIGZvbnQsIGZpcnN0IHJlZ2lzdGVyIHlvdXIgY3VzdG9tIGZvbnQgd2l0aCBvLWZvbnRzIChodHRwczovL3JlZ2lzdHJ5Lm9yaWdhbWkuZnQuY29tL2NvbXBvbmVudHMvby1mb250cykuJztcblx0fVxuXHRAaWYgbm90IGluZGV4KCRfby10eXBvZ3JhcGh5LXR5cGVzLCAkdHlwZSkge1xuXHRcdEBlcnJvciAnQ291bGQgbm90IHNldCBmb250LWZhbWlseSBcIiN7JGZhbWlseX1cIiBmb3IgZmFtaWx5IHN0eWxlIFwiI3skdHlwZX1cIiwgZmFtaWx5IHN0eWxlIG11c3QgYmUgb25lIG9mIFwiI3skX28tdHlwb2dyYXBoeS10eXBlc31cIi4nO1xuXHR9XG5cdC8vIFNldCB0aGUgY3VzdG9tIGZvbnQuXG5cdEBpZiAkdHlwZSA9PSAnc2Fucycge1xuXHRcdCRfby10eXBvZ3JhcGh5LXNhbnM6ICRmYW1pbHkgIWdsb2JhbDtcblx0fVxuXHRAaWYgJHR5cGUgPT0gJ3NlcmlmJyB7XG5cdFx0JF9vLXR5cG9ncmFwaHktc2VyaWY6ICRmYW1pbHkgIWdsb2JhbDtcblx0fVxuXHRAaWYgJHR5cGUgPT0gJ2Rpc3BsYXknIHtcblx0XHQkX28tdHlwb2dyYXBoeS1kaXNwbGF5OiAkZmFtaWx5ICFnbG9iYWw7XG5cdH1cbn1cblxuLy8vIERlZmluZSB0aGUgdHlwb2dyYXBoaWMgc2NhbGUgZm9yIGEgZ2l2ZW4gZm9udC4gVGhlIGZvbnQgbWF5IGJlIGFuIGV4aXN0aW5nIG9yIGN1c3RvbSBmb250LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZmFtaWx5IC0gVGhlIGZvbnQgbmFtZSBvciBmYW1pbHkgdG8gYXBwbHkgYSBzY2FsZSB0by5cbi8vLyBAcGFyYW0ge01hcH0gJHNjYWxlIC0gQSBtYXAgb2Ygc2NhbGUgbnVtYmVycyBhcyBrZXlzICgtMiB0byAxMCksIHdpdGggbGlzdCB2YWx1ZXMgb2YgZm9udCBzaXplIGFuZCBsaW5lIGhlaWdodCBcIigtMjogKDEyLCAxNiksIC0xOiAoMTQsIDE2KSwgMDogKDE2LCAyMCkpXCIgZXRjLi4uXG4vLy8gQGV4YW1wbGUgVGhpcyBleGFtcGxlIHNob3dzIGRlZmluaW5nIGEgY3VzdG9tIGZvbnQgc2NhbGUgZm9yIGEgY3VzdG9tIGZvbnQgXCJNeVNhbnNGb250XCIuIEF0IHNjYWxlIFwiMFwiIHRoZSBmb250IHNpemUgd2lsbCBiZSAxNnB4LCBhbmQgdGhlIGxpbmUtaGVpZ2h0IDIwcHguXG4vLy9cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEZWZpbmVGb250U2NhbGUoJGZhbWlseTogJ015U2Fuc0ZvbnQsIHNhbnMnLCAoXG4vLy9cdFx0ICAgLTI6ICgxMiwgMTYpLFxuLy8vXHRcdCAgIC0xOiAoMTQsIDE4KSxcbi8vL1x0XHQgICAgMDogKDE2LCAyMCksXG4vLy9cdFx0ICAgIDE6ICgxOCwgMjQpLFxuLy8vXHRcdCAgICAyOiAoMjAsIDI2KSxcbi8vL1x0XHQgICAgMzogKDI0LCAzMiksXG4vLy9cdFx0ICAgIDQ6ICgyOCwgMzYpLFxuLy8vXHRcdCAgICA1OiAoMzIsIDQyKSxcbi8vL1x0XHQgICAgNjogKDQwLCA1MiksXG4vLy9cdFx0ICAgIDc6ICg0OCwgNjIpLFxuLy8vXHRcdCAgICA4OiAoNTYsIDcyKSxcbi8vL1x0XHQgICAgOTogKDcyLCA5NCksXG4vLy9cdFx0ICAgMTA6ICg4NCwgMTEwKVxuLy8vXHRcdCkpO1xuQG1peGluIG9UeXBvZ3JhcGh5RGVmaW5lRm9udFNjYWxlKCRmYW1pbHksICRzY2FsZSkge1xuXHRAaWYgdHlwZS1vZigkc2NhbGUpICE9ICdtYXAnIHtcblx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBzZXQgdGhlIHNjYWxlIGZvciBmb250IFwiI3skZmFtaWx5fVwiLCBleHBlY3RlZCB0aGUgc2NhbGUgdG8gYmUgYSBtYXAgYnV0IGZvdW5kIFwiI3skc2NhbGV9XCIsIG9mIHR5cGUgXCIje3R5cGUtb2YoJHNjYWxlKX1cIi4nO1xuXHR9XG5cdEBlYWNoICRzY2FsZS1udW1iZXIsICRzY2FsZS1pdGVtIGluICRzY2FsZSB7XG5cdFx0QGlmIHR5cGUtb2YoJHNjYWxlLWl0ZW0pICE9ICdsaXN0JyBvciBsZW5ndGgoJHNjYWxlLWl0ZW0pICE9IDIge1xuXHRcdFx0QGVycm9yICdFeHBlY3RlZCBlYWNoIGl0ZW0gaW4gdGhlIHNjYWxlIHRvIGJlIGEgbGlzdCB3aXRoIHR3byBpdGVtcywgdGhlIGZvbnQgc2l6ZSBmb2xsb3dlZCBieSB0aGUgbGluZSBoZWlnaHQuJztcblx0XHR9XG5cdH1cblx0QGlmIG1hcC1rZXlzKCRzY2FsZSkgIT0gKC0yLCAtMSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTApIHtcblx0XHRAZXJyb3IgJ0V4cGVjdGVkIHRoZSBzY2FsZSBmb3IgZm9udCBcIiN7JGZhbWlseX1cIiB0byBjb250YWluIHZhbHVlcyBmb3Igc2NhbGVzIC0yIHRvIDEwLCBidXQgZm91bmQgc2NhbGVzIFwiI3ttYXAta2V5cygkc2NhbGUpfVwiLic7XG5cdH1cblx0JGZhbWlseTogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZhbWlseSk7XG5cdCRfby10eXBvZ3JhcGh5LWZvbnQtc2NhbGUtYnktZm9udDogbWFwLW1lcmdlKCgkZmFtaWx5OiAkc2NhbGUpLCAkX28tdHlwb2dyYXBoeS1mb250LXNjYWxlLWJ5LWZvbnQpICFnbG9iYWw7XG59XG5cbi8vLyBPdXRwdXQgYSB0eXBvZ3JhcGh5IGZvciBmb250XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250IC0gVGhlIGZvbnQgdG8gb3V0cHV0IHR5cG9ncmFwaHkgZm9yLlxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJHNjYWxlIFtudWxsXSAtIGEgc2NhbGUgbnVtYmVyIHRvIG91dHB1dCBhIGZvbnQtc2l6ZSBhbmQgbGluZS1oZWlnaHQgcHJvcGVydHlcbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBbbnVsbF0gLSBjdXN0b20gbGluZS1oZWlnaHQgdmFsdWUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIHNjYWxlJ3MgZGVmYXVsdFxuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXdlaWdodCBwcm9wZXJ0eSwgZS5nLiAnYm9sZCcsICdzZW1pYm9sZCdcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXN0eWxlIHByb3BlcnR5LCBlLmcuICdpdGFsaWMnXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1mb250LWZhbWlseSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSB0aGUgZm9udC1mYW1pbHkgcHJvcGVydHkgZnJvbSB0aGUgb3V0cHV0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHJlc2l6aW5nIHR5cG9ncmFwaHksIHdoZXJlIHRoZSBnaXZlbiBmb250LWZhbWlseSBpcyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudCBlbGVtZW50LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtcHJvZ3Jlc3NpdmUgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgc3R5bGVzIHVzZWQgZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZyAoZm9udC1mYW1pbHkgYW5kIHNpemUgZmFsbGJhY2tzIGZvciBsb2FkaW5nIGZvbnRzKS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb1R5cG9ncmFwaHlGb3IoXG5cdCRmb250LFxuXHQkc2NhbGUsXG5cdCRsaW5lLWhlaWdodCxcblx0JHdlaWdodCxcblx0JHN0eWxlLFxuXHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmVcbikge1xuXHQvLyBDaGVjayBmb250IHZhcmlhbnQgaXMgc3VwcG9ydGVkLlxuXHQkZm9udC13aXRob3V0LWZhbGxiYWNrczogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZvbnQpO1xuXHQkdmFyaWFudC1leGlzdHM6IG9Gb250c1ZhcmlhbnRFeGlzdHMoJGZvbnQtd2l0aG91dC1mYWxsYmFja3MsICR3ZWlnaHQsICRzdHlsZSk7XG5cdEBpZiBub3QgJHZhcmlhbnQtZXhpc3RzIHtcblx0XHRAZXJyb3IgJ0ZvbnQgZmFtaWx5IFwiI3skZm9udC13aXRob3V0LWZhbGxiYWNrc31cIiBvZiB3ZWlnaHQgJyArXG5cdFx0XHQnXCIje2lmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyl9XCIgYW5kIHN0eWxlICcgK1xuXHRcdFx0J1wiI3tpZigkc3R5bGUsICRzdHlsZSwgJ25vcm1hbCcpfVwiIGlzIG5vdCBzdXBwb3J0ZWQuJztcblx0fVxuXG5cdC8vIENoZWNrIGZvbnQgdmFyaWFudCBoYXMgYmVlbiBpbmNsdWRlZCwgYW5kIGVycm9yIGlmIGFuIGVycm9yIG1lc3NhZ2Vcblx0Ly8gaGFzIGJlZW4gc2V0IGJ5IHRoZSB1c2VyLlxuXHQkdmFyaWFudC1pbmNsdWRlZDogb0ZvbnRzVmFyaWFudEluY2x1ZGVkKCRmb250LXdpdGhvdXQtZmFsbGJhY2tzLCAkd2VpZ2h0LCAkc3R5bGUpO1xuXHRAaWYgbm90ICR2YXJpYW50LWluY2x1ZGVkIGFuZCB0eXBlLW9mKCRvLXR5cG9ncmFwaHktZXJyb3ItZm9yLW1pc3NpbmctZm9udHMpID09ICdzdHJpbmcnIHtcblx0XHRAZXJyb3IgJ1RoZSBmb250IGZhY2UgZm9yIGZvbnQgZmFtaWx5IFwiI3skZm9udC13aXRob3V0LWZhbGxiYWNrc31cIiBvZiAnICtcblx0XHRcdCd3ZWlnaHQgXCIje2lmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyl9XCIgYW5kIHN0eWxlICcgK1xuXHRcdFx0J1wiI3tpZigkc3R5bGUsICRzdHlsZSwgJ25vcm1hbCcpfVwiIGhhcyBub3QgYmVlbiBpbmNsdWRlZCBpbiB5b3VyICcgK1xuXHRcdFx0J3Byb2plY3QuICN7aW5zcGVjdCgkby10eXBvZ3JhcGh5LWVycm9yLWZvci1taXNzaW5nLWZvbnRzKX0nO1xuXHR9XG5cblx0QGlmICRpbmNsdWRlLWZvbnQtZmFtaWx5IHtcblx0XHRmb250LWZhbWlseTogaWYodHlwZS1vZigkZm9udCkgPT0gJ3N0cmluZycsIHVucXVvdGUoJGZvbnQpLCAkZm9udCk7XG5cdH1cblxuXHRAaWYgJHNjYWxlIHtcblx0XHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlTaXplKCRzY2FsZTogJHNjYWxlLCAkbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodCwgJGZvbnQ6ICRmb250KTtcblx0fSBAZWxzZSBpZiAkbGluZS1oZWlnaHQge1xuXHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlBZGp1c3RVbml0KCRsaW5lLWhlaWdodCk7XG5cdH1cblxuXHRAaWYgJHdlaWdodCB7XG5cdFx0Zm9udC13ZWlnaHQ6IG9Gb250c1dlaWdodCgkd2VpZ2h0KTtcblx0fVxuXG5cdEBpZiAkc3R5bGUge1xuXHRcdGZvbnQtc3R5bGU6IHVucXVvdGUoJHN0eWxlKTtcblx0fVxuXG5cdEBpZiAkaW5jbHVkZS1wcm9ncmVzc2l2ZSB7XG5cdFx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5UHJvZ3Jlc3NpdmVGb250RmFsbGJhY2soJGZvbnQsICRzY2FsZSwgJHdlaWdodCwgJHN0eWxlLCAkaW5jbHVkZS1mb250LWZhbWlseSk7XG5cdH1cbn1cblxuLy8vIE91dHB1dHMgdGhlIGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgYmFzZWQgb24gdGhlIHNjYWxlLCBhbHNvXG4vLy8gYWNjZXB0cyBhbiBvdmVycmlkZSBsaW5lLWhlaWdodCB0byBvdXRwdXQgYW5kIGEgZm9udCBhZGp1c3RtZW50XG4vLy8gcGFyYW1ldGVyIGZvciB3aGVuIG91dHB1dHRpbmcgc3R5bGVzIGZvciBwcm9ncmVzc2l2ZWx5IGxvYWRlZCBmb250c1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSBudW1iZXIgb24gc2NhbGUgdGhlIHNpemVzIGFyZSBiYXNlZCBvblxuLy8vIEBwYXJhbSB7Qm9vbGVhbiB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IHNpemUgdG8gb3ZlcnJpZGUgdGhlIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250IFsnJ10gLSBUaGUgZm9udCB0byBnZXQgdGhlIGZvbnQgc2l6ZSBmb3IsIGFzIGZvbnRzIG1heSBoYXZlIGRpZmZlcmVudCBzY2FsZXMuIFVzZXMgdGhlIGRlZmF1bHQgc2NhbGUgaWYgbm90IHNwZWNpZmllZC5cbkBtaXhpbiBfb1R5cG9ncmFwaHlTaXplKCRzY2FsZSwgJGxpbmUtaGVpZ2h0OiBmYWxzZSwgJGZvbnQ6ICcnKSB7XG5cdEBpZiB0eXBlLW9mKCRzY2FsZSkgPT0gbWFwIHtcblx0XHRAZWFjaCAkYnJlYWtwb2ludCwgJHNjYWxlIGluICRzY2FsZSB7XG5cdFx0XHQkY3VycmVudC1saW5lLWhlaWdodDogaWYobGVuZ3RoKCRzY2FsZSkgPT0gMiwgbnRoKCRzY2FsZSwgMiksICRsaW5lLWhlaWdodCk7XG5cdFx0XHQkY3VycmVudC1zY2FsZTogaWYodHlwZS1vZigkc2NhbGUpID09IGxpc3QgYW5kIGxlbmd0aCgkc2NhbGUpICE9IDAsIG50aCgkc2NhbGUsIDEpLCAkc2NhbGUpO1xuXG5cdFx0XHRAaWYgJGJyZWFrcG9pbnQgPT0gJ2RlZmF1bHQnIGFuZCAkY3VycmVudC1zY2FsZSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJGN1cnJlbnQtc2NhbGUsIDEsICRmb250KTtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IF9vVHlwb2dyYXBoeUxpbmVIZWlnaHRGcm9tU2NhbGUoJGN1cnJlbnQtc2NhbGUsICRjdXJyZW50LWxpbmUtaGVpZ2h0LCAkZm9udCk7XG5cdFx0XHR9XG5cblx0XHRcdEBpZiAkYnJlYWtwb2ludCAhPSAnZGVmYXVsdCcgYW5kICRjdXJyZW50LXNjYWxlIHtcblx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGJyZWFrcG9pbnQpIHtcblx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAxLCAkZm9udCk7XG5cdFx0XHRcdFx0bGluZS1oZWlnaHQ6IF9vVHlwb2dyYXBoeUxpbmVIZWlnaHRGcm9tU2NhbGUoJGN1cnJlbnQtc2NhbGUsICRjdXJyZW50LWxpbmUtaGVpZ2h0LCAkZm9udCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJHNjYWxlLCAxLCAkZm9udCk7XG5cdFx0bGluZS1oZWlnaHQ6IF9vVHlwb2dyYXBoeUxpbmVIZWlnaHRGcm9tU2NhbGUoJHNjYWxlLCAkbGluZS1oZWlnaHQsICRmb250KTtcblx0fVxufVxuXG4vLy8gT3V0cHV0cyB0aGUgcHJvZ3Jlc3NpdmUgZm9udCBmYWxsYmFjayBzdHlsZXMgYmFzZWQgb25cbi8vLyBmb250IGFuZCBzY2FsZSBpZiB0aGUgZm9udCBoYXMgZmFsbGJhY2sgc2V0dGluZ3Ncbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCAtIEZvbnQgdG8gb3V0cHV0IGZhbGxiYWNrIHN0eWxlcyBmb3IgKG9yIC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNjYWxlIC0gTnVtYmVyIG9uIHNjYWxlIHRoZSBzaXplIGlzIGJhc2VkIG9uLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIFRoZSB3ZWlnaHQgb2YgdGhlIGZvbnQgd2hpY2ggbmVlZHMgYSBmYWxsYmFjayBlLmcuICdib2xkJy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0eWxlIFtudWxsXSAtIFRoZSBzdHlsZSBvZiB0aGUgZm9udCB3aGljaCBuZWVkcyBhIGZhbGxiYWNrIGUuZy4gJ2l0YWxpYycuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1mb250LWZhbWlseSBbdHJ1ZV0gLSBXaGV0aGVyIHRvIG91dHB1dCB0aGUgZm9udCBmYW1pbHkgb2YgdGhlIGZhbGxiYWNrIGZvbnQgKHZzLiBqdXN0IHRoZSBzaXplKVxuQG1peGluIF9vVHlwb2dyYXBoeVByb2dyZXNzaXZlRm9udEZhbGxiYWNrKCRmb250LCAkc2NhbGUsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGluY2x1ZGUtZm9udC1mYW1pbHk6IHRydWUpIHtcblx0QGlmIG5vdCAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZyB7XG5cdFx0QGVycm9yICdQcm9ncmVzc2l2ZSBmb250IGZhbGxiYWNrcyBhcmUgZGlzYWJsZWQuJyArXG5cdFx0XHQnSWYgeW91IGFyZSBzdXJlIHlvdSB3YW50IHRvIG91dHB1dCBwcm9ncmVzc2l2ZSBmb250IGZhbGxiYWNrcyBpbiAnICtcblx0XHRcdCd5b3VyIHByb2plY3Qgc2V0IGAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZzogdHJ1ZTtgICcgK1xuXHRcdFx0J2F0IHRoZSB0b3Agb2YgeW91ciBwcm9qZWN0LCBiZWZvcmUgaW1wb3J0aW5nIFNhc3MgZmlsZXMuICcgK1xuXHRcdFx0J1NlZSB0aGUgUkVBRE1FIGZvciBkZXRhaWxzIGFuZCBtb3JlIG9wdGlvbnMgb3IgY29udGFjdCB0aGUgT3JpZ2FtaSB0ZWFtLic7XG5cdH1cblx0QGlmICRzY2FsZSB7XG5cdFx0Ly8gSWYgZmFsc3kgd2VpZ2h0L3N0eWxlIGRlZmF1bHQgdG8gcmVndWxhci9ub3JtYWwuXG5cdFx0JHdlaWdodDogaWYoJHdlaWdodCwgJHdlaWdodCwgJ3JlZ3VsYXInKTtcblx0XHQkc3R5bGU6IGlmKCRzdHlsZSwgJHN0eWxlLCAnbm9ybWFsJyk7XG5cdFx0Ly8gRmluZCBmYWxsYmFjayBjb25maWcgZm9yIGZvbnQsIHdlaWdodCwgYW5kIHN0eWxlLlxuXHRcdEBlYWNoICRmYWxsYmFjayBpbiAkX28tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWZhbGxiYWNrcyB7XG5cdFx0XHQvLyBHZXQgZmFsbGJhY2sgcHJvcGVydGllcy5cblx0XHRcdCRmYWxsYmFjay1mYW1pbHk6IG1hcC1nZXQoJGZhbGxiYWNrLCAnZmFtaWx5Jyk7XG5cdFx0XHQkZmFsbGJhY2stbGFiZWw6IG1hcC1nZXQoJGZhbGxiYWNrLCAnbGFiZWwnKTtcblx0XHRcdC8vIE1hdGNoIHJlZ3VsYXIgYnkgZGVmYXVsdC5cblx0XHRcdCRmYWxsYmFjay13ZWlnaHQ6IG1hcC1nZXQoJGZhbGxiYWNrLCAnd2VpZ2h0Jyk7XG5cdFx0XHQkZmFsbGJhY2std2VpZ2h0OiBpZigkZmFsbGJhY2std2VpZ2h0LCAkZmFsbGJhY2std2VpZ2h0LCAoJ3JlZ3VsYXInKSk7XG5cdFx0XHQvLyBNYXRjaCBub3JtYWwgYnkgZGVmYXVsdC5cblx0XHRcdCRmYWxsYmFjay1zdHlsZTogbWFwLWdldCgkZmFsbGJhY2ssICdzdHlsZScpO1xuXHRcdFx0JGZhbGxiYWNrLXN0eWxlOiBpZigkZmFsbGJhY2stc3R5bGUsICRmYWxsYmFjay1zdHlsZSwgKCdub3JtYWwnKSk7XG5cdFx0XHQkZmFsbGJhY2stc2NhbGU6IG1hcC1nZXQoJGZhbGxiYWNrLCAnZmFsbGJhY2stc2NhbGUnKTtcblx0XHRcdC8vIENoZWNrIGlmIGZhbGxiYWNrIGlzIGZvciB0aGUgZ2l2ZW4gZm9udCwgd2VpZ2h0LCBhbmQgc3R5bGUuO1xuXHRcdFx0JGxhYmVsLW1hdGNoOiAkZmFsbGJhY2stbGFiZWwgPT0gb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZvbnQpOyAvLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuXHRcdFx0JGZhbWlseS1tYXRjaDogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZhbGxiYWNrLWZhbWlseSkgPT0gb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZvbnQpO1xuXHRcdFx0JHdlaWdodC1tYXRjaDogaW5kZXgoJGZhbGxiYWNrLXdlaWdodCwgJHdlaWdodCk7XG5cdFx0XHQkc3R5bGUtbWF0Y2g6IGlmKCRmYWxsYmFjay1zdHlsZSwgaW5kZXgoJGZhbGxiYWNrLXN0eWxlLCAkc3R5bGUpLCB0cnVlKTtcblx0XHRcdC8vIE91dHB1dCB0aGUgZmFsbGJhY2sgaWYgaXQgbWF0Y2hlcy5cblx0XHRcdEBpZiAoJGxhYmVsLW1hdGNoIG9yICgkZmFtaWx5LW1hdGNoIGFuZCAkd2VpZ2h0LW1hdGNoIGFuZCAkc3R5bGUtbWF0Y2gpKSB7XG5cdFx0XHRcdC4jeyRfby10eXBvZ3JhcGh5LWxvYWRpbmctcHJlZml4fS0jeyRmYWxsYmFjay1sYWJlbH0gJiB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5Rm9udFNpemUoJHNjYWxlOiAkc2NhbGUsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdDogJGZhbGxiYWNrLXNjYWxlLCAkZm9udDogJGZhbGxiYWNrLWZhbWlseSk7XG5cdFx0XHRcdFx0QGlmICRpbmNsdWRlLWZvbnQtZmFtaWx5IHtcblx0XHRcdFx0XHRcdGZvbnQtZmFtaWx5OiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2ZhbGxiYWNrJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBPdXRwdXRzIHRoZSBmb250IHNpemUgYmFzZWQgb24gdGhlIHNjYWxlLCBhbHNvIGFjY2VwdHMgYSBmb250IGFkanVzdG1lbnRcbi8vLyBwYXJhbWV0ZXIgZm9yIHdoZW4gb3V0cHV0dGluZyBzdHlsZXMgZm9yIHByb2dyZXNzaXZlbHkgbG9hZGVkIGZvbnRzXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNjYWxlIC0gTnVtYmVyIG9uIHNjYWxlIHRoZSBzaXplcyBhcmUgYmFzZWQgb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCAtIE11bHRpcGxpZXIgZm9yIGZvbnQtc2l6ZSBhZGp1c3RtZW50cywgd2hlbiBhZGRpbmcgc3R5bGVzIGZvciBwcm9ncmVzc2l2ZWx5IGxvYWRlZCBmb250LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCBbJyddIC0gVGhlIGZvbnQgdG8gZ2V0IHRoZSBmb250IHNpemUgZm9yLCBhcyBmb250cyBtYXkgaGF2ZSBkaWZmZXJlbnQgc2NhbGVzLiBVc2VzIHRoZSBkZWZhdWx0IHNjYWxlIGlmIG5vdCBzcGVjaWZpZWQuXG5AbWl4aW4gX29UeXBvZ3JhcGh5Rm9udFNpemUoJHNjYWxlLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3Q6IDEsICRmb250OiAnJykge1xuXHRAaWYgdHlwZS1vZigkc2NhbGUpID09IG1hcCB7XG5cdFx0QGVhY2ggJGJyZWFrcG9pbnQsICRudW1iZXIgaW4gJHNjYWxlIHtcblx0XHRcdEBpZiAkYnJlYWtwb2ludCA9PSAnZGVmYXVsdCcge1xuXHRcdFx0XHRAaWYgdHlwZS1vZigkbnVtYmVyKSA9PSBsaXN0IHtcblx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKG50aCgkbnVtYmVyLCAxKSwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJG51bWJlciwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gQGVsc2UgaWYoJG51bWJlcikge1xuXHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkYnJlYWtwb2ludCkge1xuXHRcdFx0XHRcdEBpZiB0eXBlLW9mKCRudW1iZXIpID09IGxpc3Qge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZShudGgoJG51bWJlciwgMSksICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkbnVtYmVyLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkc2NhbGUsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHR9XG59XG4iLCIvLy8gQG91dHB1dCBTdHlsZXMgZm9yIGEgY3VzdG9tIGJ1dHRvbiB0aGVtZSBgLm8tYnV0dG9ucy0tWyRuYW1lXWAuXG4vLy8gQGV4YW1wbGUgLSBBZGQgYSBuZXcgY2xhcmV0IHRoZW1lIGZvciBib3RoIHByaW1hcnkgYW5kIHNlY29uZGFyeSBidXR0b25zLlxuLy8vICAgICAvLyBPdXRwdXRzIGNsYXNzIC5vLWJ1dHRvbnMtLW15LXNwZWNpYWwtYnV0dG9uXG4vLy8gICAgIEBpbmNsdWRlIG9CdXR0b25zQWRkVGhlbWUoXG4vLy8gICAgICAgICAkbmFtZTogJ215LXNwZWNpYWwtYnV0dG9uJyxcbi8vLyAgICAgICAgICRvcHRzOiAoJ2NvbG9yJzogJ2NsYXJldC04MCcpLFxuLy8vICAgICAgICAgJHR5cGVzOiAoJ3ByaW1hcnknLCAnc2Vjb25kYXJ5Jylcbi8vLyAgICAgKTtcbi8vLyBAZXhhbXBsZSAtIEFkZCBhIG5ldyBjbGFyZXQgdGhlbWUgdG8gZ28gb24gYSBzbGF0ZSBiYWNrZ3JvdW5kLlxuLy8vICAgICAvLyBPdXRwdXRzIGNsYXNzIC5vLWJ1dHRvbnMtLW15LXNwZWNpYWwtYnV0dG9uXG4vLy8gICAgIEBpbmNsdWRlIG9CdXR0b25zQWRkVGhlbWUoXG4vLy8gICAgICAgICAkbmFtZTogJ215LXNwZWNpYWwtYnV0dG9uJyxcbi8vLyAgICAgICAgICRvcHRzOiAoJ2NvbG9yJzogJ2NsYXJldC04MCcsICdjb250ZXh0JzogJ3NsYXRlJyksXG4vLy8gICAgICAgICAkdHlwZXM6ICgncHJpbWFyeScsICdzZWNvbmRhcnknKVxuLy8vICAgICApO1xuLy8vIEBleGFtcGxlIC0gQWRkIGEgbmV3IGNsYXJldCB0aGVtZSBmb3IgYnV0dG9ucyB3aXRoIGljb25zLlxuLy8vICAgICAvLyBPdXRwdXRzIGNsYXNzIC5vLWJ1dHRvbnMtLW15LXNwZWNpYWwtYnV0dG9uXG4vLy8gICAgIEBpbmNsdWRlIG9CdXR0b25zQWRkVGhlbWUoXG4vLy8gICAgICAgICAkbmFtZTogJ215LXNwZWNpYWwtYnV0dG9uJyxcbi8vLyAgICAgICAgICRvcHRzOiAoJ2NvbG9yJzogJ2NsYXJldC04MCcpLFxuLy8vICAgICAgICAgJHR5cGVzOiAoJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JyksXG4vLy8gICAgICAgICAkaWNvbnM6ICgnYXJyb3ctdXAnLCAnYXJyb3ctZG93bicpXG4vLy8gICAgICk7XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gQSB0aGVtZSBuYW1lIGUuZy4gYG15LXNwZWNpYWwtYnV0dG9uYC5cbi8vLyBAcGFyYW0ge01hcH0gJG9wdHMgLSBBIGN1c3RvbSB0aGVtZSBtYXAgd2l0aCBhIGBjb2xvcmAgYW5kIG9wdGlvbmFsIGBjb250ZXh0YCBrZXkuIFRoZSBjb250ZXh0IGtleSBpbmRpY2F0ZXMgdGhlIGJhY2tncm91bmQgY29sb3VyIHlvdXIgYnV0dG9uIGlzIHBsYWNlZCBvbiwgaXQgZGVmYXVsdHMgdG8gdGhlIHBhZ2UgY29sb3VyIChwYXBlciBmb3IgdGhlIGNvcmUgYnJhbmQsIHdoaXRlIG90aGVyd2lzZSkuIFNlZSBbdGhlIFJFQURNRV0oaHR0cHM6Ly9yZWdpc3RyeS5vcmlnYW1pLmZ0LmNvbS9jb21wb25lbnRzL28tYnV0dG9ucy9yZWFkbWUpIGZvciBtb3JlIGRldGFpbHMuXG4vLy8gQHBhcmFtIHtMaXN0fSAkdHlwZXMgLSBUaGUgdHlwZXMgb2YgYnV0dG9uIHRvIG91dHB1dCB0aGUgdGhlbWUgZm9yIGUuZy4gKCdwcmltYXJ5JywgJ3NlY29uZGFyeScpLlxuLy8vIEBwYXJhbSB7TGlzdHxOdWxsfSAkaWNvbnMgW251bGxdIC0gVGhlIGJ1dHRvbiBpY29ucyB0byBvdXRwdXQgZm9yIHRoaXMgdGhlbWUuXG5AbWl4aW4gb0J1dHRvbnNBZGRUaGVtZSgkbmFtZSwgJG9wdHMsICR0eXBlcywgJGljb25zOiBudWxsKSB7XG5cdC8vIEFkZCB0aGUgbmFtZSB0byB0aGUgdGhlbWUgbWFwLlxuXHQkdGhlbWU6IG1hcC1tZXJnZSgoJ25hbWUnOiAkbmFtZSksICRvcHRzKTtcblx0Ly8gQ3JlYXRlIGVhY2ggYnV0dG9uIHR5cGUgZm9yIHRoZSBuZXcgdGhlbWUuXG5cdEBlYWNoICR0eXBlIGluICR0eXBlcyB7XG5cdFx0QGluY2x1ZGUgX29CdXR0b25zQWRkKCR0eXBlLCAkdGhlbWUsICRpY29ucyk7XG5cdH1cbn1cblxuLy8vIENyZWF0ZSBhIHNpbmdsZSBidXR0b24gd2l0aCBhIGN1c3RvbSBjbGFzcy4gVG8gYXZvaWQgZHVwbGljYXRlIENTUyB0aGlzIGlzXG4vLy8gbm90IHJlY29tbWVuZGVkIHVubGVzcyBgby1idXR0b25zYCBkZWZhdWx0IGNsYXNzZXMgY2Fubm90IGJlIHVzZWQuIFNlZSBbdGhlXG4vLy8gUkVBRE1FXShodHRwczovL3JlZ2lzdHJ5Lm9yaWdhbWkuZnQuY29tL2NvbXBvbmVudHMvby1idXR0b25zL3JlYWRtZSkgZm9yXG4vLy8gbW9yZSBkZXRhaWxzLlxuLy8vXG4vLy8gQGV4YW1wbGUgLSBPdXRwdXQgYSBwcmltYXJ5IGJ1dHRvbiB3aXRoIHJpZ2h0IGFycm93LlxuLy8vICAgICAubXktYnV0dG9uIHtcbi8vLyAgICAgICAgIEBpbmNsdWRlIG9CdXR0b25zQ29udGVudCgkb3B0czogKFxuLy8vICAgICAgICAgICAgICd0eXBlJzogJ3ByaW1hcnknLFxuLy8vICAgICAgICAgICAgICdpY29uJzogJ2Fycm93LXJpZ2h0J1xuLy8vICAgICAgICAgKSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIC0gT3V0cHV0IGEgcHJpbWFyeSBidXR0b24gd2l0aCBhIGN1c3RvbSBsZW1vbiB0aGVtZS5cbi8vLyAgICAgLm15LWxlbW9uLWJ1dHRvbiB7XG4vLy8gICAgICAgICBAaW5jbHVkZSBvQnV0dG9uc0NvbnRlbnQoJG9wdHM6IChcbi8vLyAgICAgICAgICAgICAndHlwZSc6ICdwcmltYXJ5Jyxcbi8vLyAgICAgICAgICAgICAndGhlbWUnOiAoJ2NvbG9yJzogJ2xlbW9uJylcbi8vLyAgICAgICAgICkpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSAtIFNoYXJlIGJhc2UgYnV0dG9uIHN0eWxlcy5cbi8vLyAgICAgLy8gb3V0cHV0IGJhc2UgYnV0dG9uIHN0eWxlcyBvbmx5XG4vLy8gICAgIC5teS1idXR0b24ge1xuLy8vICAgICAgICAgQGluY2x1ZGUgb0J1dHRvbnNDb250ZW50KCRvcHRzOiAoKSk7XG4vLy8gICAgIH1cbi8vLyAgICAgLy8gb3V0cHV0IG1vZGlmaWVyIGNsYXNzZXMgZm9yIGJ1dHRvbiB0eXBlcywgd2l0aG91dCBkdXBsaWNhdGluZyBiYXNlIHN0eWxlc1xuLy8vICAgICAubXktYnV0dG9uLS1zZWNvbmRhcnkge1xuLy8vICAgICAgICAgQGluY2x1ZGUgb0J1dHRvbnNDb250ZW50KCRvcHRzOiAoXG4vLy8gICAgICAgICAgICAgJ3R5cGUnOiAnc2Vjb25kYXJ5J1xuLy8vICAgICAgICAgKSwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcbi8vLyAgICAgfVxuLy8vICAgICAubXktYnV0dG9uLS1wcmltYXJ5IHtcbi8vLyAgICAgICAgIEBpbmNsdWRlIG9CdXR0b25zQ29udGVudCgkb3B0czogKFxuLy8vICAgICAgICAgICAgICd0eXBlJzogJ3ByaW1hcnknXG4vLy8gICAgICAgICApLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UpO1xuLy8vICAgICB9XG4vLy8gQG91dHB1dCBCdXR0b24gQ1NTIGRlY2xhcmF0aW9ucyB3aXRob3V0IGFueSBzZWxlY3RvcnMuXG4vLy8gQHBhcmFtIHtNYXB9ICRvcHRzIFsoJ3R5cGUnOiAnbnVsbCcsICd0aGVtZSc6IG51bGwsICdzaXplJzogbnVsbCwgJ2ljb24nOiBudWxsLCAnaWNvbi1vbmx5JzogZmFsc2UpXSAtIFRoZSBraW5kIG9mIGJ1dHRvbiBzdHlsZXMgdG8gb3V0cHV0LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtYmFzZS1zdHlsZXMgW3RydWVdIC0gV2hldGhlciB0byBpbmNsdWRlIGJhc2UgYnV0dG9uIHN0eWxlcywgc2hhcmVkIGJ5IGFsbCBidXR0b25zLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtYmFzZS1pY29uLXN0eWxlcyBbdHJ1ZV0gLSBXaGV0aGVyIHRvIGluY2x1ZGUgYmFzZSBpY29uIGJ1dHRvbiBzdHlsZXMsIHNoYXJlZCBieSBhbGwgaWNvbiBidXR0b25zIChkZWZhdWx0cyB0byB0cnVlIG9ubHkgd2hlbiBvdXRwdXR0aW5nIGFuIGljb24gYnV0dG9uKS5cbkBtaXhpbiBvQnV0dG9uc0NvbnRlbnQoJG9wdHM6IChcblx0J3R5cGUnOiBudWxsLFxuXHQndGhlbWUnOiBudWxsLFxuXHQnc2l6ZSc6IG51bGwsXG5cdCdpY29uJzogbnVsbCxcblx0J2ljb24tb25seSc6IGZhbHNlXG4pLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogdHJ1ZSwgJGluY2x1ZGUtYmFzZS1pY29uLXN0eWxlczogdHJ1ZSkge1xuXHQkdGhlbWU6IG1hcC1nZXQoJG9wdHMsICd0aGVtZScpO1xuXHQkdHlwZTogbWFwLWdldCgkb3B0cywgJ3R5cGUnKTtcblx0JGljb24tb25seTogbWFwLWdldCgkb3B0cywgJ2ljb24tb25seScpO1xuXHQkc2l6ZTogbWFwLWdldCgkb3B0cywgJ3NpemUnKTtcblx0JGljb246IG1hcC1nZXQoJG9wdHMsICdpY29uJyk7XG5cblx0Ly8gSWYgYSBzaXplIGlzIGdpdmVuLCBlbmZvcmNlIGl0cyBhbiBhY3R1YWwgYnV0dG9uIHNpemVcblx0QGlmICRzaXplIGFuZCBub3QgaW5kZXgoJF9vLWJ1dHRvbnMtc2l6ZXMsICRzaXplKSB7XG5cdFx0QGVycm9yICdcIiN7JHNpemV9XCIgaXMgbm90IGEgYnV0dG9uIHNpemUuIEFsbG93ZWQgc2l6ZXMgaW5jbHVkZSAnICtcblx0XHRcdCdcIiN7JF9vLWJ1dHRvbnMtc2l6ZXN9XCIuIE9yLCBkbyBub3Qgc2V0IHRoZSBidXR0b24gc2l6ZSB0byBvdXRwdXQgJyArXG5cdFx0XHQndGhlIGRlZmF1bHQgc2l6ZS4nO1xuXHR9XG5cblx0QGlmICR0aGVtZSBhbmQgbm90ICR0eXBlIHtcblx0XHQkdGhlbWUtZGVzY3JpcHRpb246IGlmKHR5cGUtb2YoJHRoZW1lKSA9PSAnc3RyaW5nJywgJHRoZW1lLCAnY3VzdG9tJyk7XG5cdFx0QHdhcm4gJ0EgYnV0dG9uIHRoZW1lIGNhbm5vdCBiZSBvdXRwdXQgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBidXR0b24gJyArXG5cdFx0XHQndHlwZS4gVG8gb3V0cHV0IHN0eWxlcyBmb3IgYSBcIiN7JHRoZW1lLWRlc2NyaXB0aW9ufVwiIGJ1dHRvbiB0aGVtZSBhbHNvICcgK1xuXHRcdFx0J3NwZWNpZnkgdGhlIGJ1dHRvbiB0eXBlIGFzIGVpdGhlciBhIFwicHJpbWFyeVwiIG9yIFwic2Vjb25kYXJ5XCIgYnV0dG9uJztcblx0fVxuXG5cdC8vIEdldCBidXR0b24gY29sb3VycyBmb3IgdGhlIGJ1dHRvbiB0eXBlIGFuZCB0aGVtZS5cblx0JGJ1dHRvbi1jb2xvcnMtbWFwOiBpZigkdHlwZSwgX29CdXR0b25zR2VuZXJhdGVDb2xvcnMoJHR5cGUsICR0aGVtZSksICgpKTtcblxuXHRAaWYgJGluY2x1ZGUtYmFzZS1zdHlsZXMge1xuXHRcdEBpbmNsdWRlIF9vQnV0dG9uc0Jhc2VDb250ZW50KCRzaXplKTtcblx0fVxuXG5cdC8vIEluY2x1ZGUgc2l6ZSBzdHlsZXMgaWYgdGhleSBoYXZlbid0IGJlZW4gaW5jbHVkZWRcblx0Ly8gYWxyZWFkeSBhcyBwYXJ0IG9mIHRoZSBiYXNlIHN0eWxlcy5cblx0QGlmICRzaXplIGFuZCBub3QgJGluY2x1ZGUtYmFzZS1zdHlsZXMge1xuXHRcdEBpbmNsdWRlIF9vQnV0dG9uc1NpemVDb250ZW50KCRzaXplKTtcblx0fVxuXG5cdEBpZiAkdHlwZSB7XG5cdFx0QGluY2x1ZGUgX29CdXR0b25zU3RhdGVDb250ZW50KCR0eXBlLCAkYnV0dG9uLWNvbG9ycy1tYXApO1xuXHR9XG5cblx0QGlmICRpY29uIGFuZCAkaW5jbHVkZS1iYXNlLWljb24tc3R5bGVzIHtcblx0XHRAaW5jbHVkZSBfb0J1dHRvbnNJY29uQmFzZUNvbnRlbnQoJHNpemUpO1xuXHR9XG5cblx0QGlmICRpY29uIGFuZCAkdHlwZSB7XG5cdFx0QGluY2x1ZGUgX29CdXR0b25zSWNvblN0YXRlc0NvbnRlbnQoJGljb24sICRidXR0b24tY29sb3JzLW1hcCk7XG5cdH1cblxuXHRAaWYgJGljb24tb25seSB7XG5cdFx0QGluY2x1ZGUgX29CdXR0b25zSWNvbk9ubHlDb250ZW50KCk7XG5cdH1cbn1cblxuXG4vLy8gQG91dHB1dCBTdHlsZXMgZm9yIGEgYnV0dG9uIGUuZy4gYC5vLWJ1dHRvbnMtLXByaW1hcnlgLCBgLm8tYnV0dG9ucy0tcHJpbWFyeS5vLWJ1dHRvbnMtLWludmVyc2VgLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlIC0gVGhlIHR5cGUgb2YgYnV0dG9uIHRvIG91dHB1dCBlLmcuICgncHJpbWFyeScsICdzZWNvbmRhcnknKS5cbi8vLyBAcGFyYW0ge1N0cmluZ3xNYXB9ICR0aGVtZSAtIFRoZSBidXR0b24gdGhlbWUgdG8gb3V0cHV0LiBFaXRoZXIgYSBkZWZhdWx0IHRoZW1lICdpbnZlcnNlJyBvciBjdXN0b20gdGhlbWUgbWFwIHdpdGggcHJvcGVydGllcyBgbmFtZWAsIGBjb2xvcmAsIGFuZCBvcHRpb25hbCBgY29udGV4dGAga2V5LlxuLy8vIEBwYXJhbSB7TGlzdHxOdWxsfSAkaWNvbnMgW251bGxdIC0gVGhlIGJ1dHRvbiBpY29ucyB0byBvdXRwdXQgZm9yIHRoZSBidXR0b24gdHlwZSBhbmQgdGhlbWUuXG5AbWl4aW4gX29CdXR0b25zQWRkKCR0eXBlLCAkdGhlbWU6IG51bGwsICRpY29uczogbnVsbCkge1xuXHQvLyBFcnJvciBpZiB0aGUgdGhlbWUgaXMgbm90IGV4cGVjdGVkLlxuXHRAaWYgKCR0aGVtZSAhPSBudWxsIGFuZCB0eXBlLW9mKCR0aGVtZSkgIT0gJ3N0cmluZycgYW5kIHR5cGUtb2YoJHRoZW1lKSAhPSAnbWFwJykge1xuXHRcdEBlcnJvciAnRXhwZWN0ZWQgdGhlIGJ1dHRvbiB0aGVtZSB0byBiZSBhIHN0cmluZywgbWFwLCBvciBgbnVsbGAuJztcblx0fVxuXHQvLyBHZW5lcmF0ZSBidXR0b24gY29sb3VycyBpZiB0aGV5IGRvbid0IGFscmVhZHkgZXhpc3QgZm9yIHRoaXMgYnV0dG9uLlxuXHQkYnV0dG9uLWNvbG9yczogX29CdXR0b25zR2V0Q29sb3JzKCR0eXBlLCAkdGhlbWUpO1xuXHQvLyBDcmVhdGUgQ1NTIHNlbGVjdG9ycy5cblx0JHRoZW1lLW5hbWU6IGlmKHR5cGUtb2YoJHRoZW1lKSA9PSAnbWFwJywgbWFwLWdldCgkdGhlbWUsICduYW1lJyksICR0aGVtZSk7XG5cdCR0eXBlLXNlbGVjdG9yOiAnLm8tYnV0dG9ucy0tI3skdHlwZX0nO1xuXHQkdGhlbWUtc2VsZWN0b3I6IGlmKCR0aGVtZS1uYW1lLCAnLm8tYnV0dG9ucy0tI3skdGhlbWUtbmFtZX0nLCAnJyk7XG5cdC8vIE91dHB1dCB2YXJpYW50IHN0eWxlcy5cblx0I3skdHlwZS1zZWxlY3Rvcn0jeyR0aGVtZS1zZWxlY3Rvcn0ge1xuXHRcdEBpbmNsdWRlIF9vQnV0dG9uc1N0YXRlQ29udGVudCgkdHlwZSwgJGJ1dHRvbi1jb2xvcnMpO1xuXHR9XG5cdC8vIE91dHB1dCB2YXJpYW50IGljb24gc3R5bGVzLlxuXHRAZWFjaCAkaWNvbiBpbiAkaWNvbnMge1xuXHRcdCN7JHR5cGUtc2VsZWN0b3J9I3skdGhlbWUtc2VsZWN0b3J9Lm8tYnV0dG9ucy1pY29uLS0jeyRpY29ufSB7XG5cdFx0XHRAaW5jbHVkZSBfb0J1dHRvbnNJY29uU3RhdGVzQ29udGVudCgkaWNvbiwgJGJ1dHRvbi1jb2xvcnMpO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gU3R5bGVzIHNoYXJlZCBieSBhbGwgYnV0dG9ucyBvZiBhIGdpdmVuIHNpemUuXG4vLy8gQHBhcmFtIHtOdWxsfE51bWJlcn0gJHNpemVcbkBtaXhpbiBfb0J1dHRvbnNCYXNlQ29udGVudCgkc2l6ZTogbnVsbCkge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHdlaWdodDogJ3NlbWlib2xkJyk7XG5cdEBpbmNsdWRlIF9vQnV0dG9uc1NpemVDb250ZW50KCRzaXplKTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRtYXJnaW46IDA7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdHRyYW5zaXRpb246IDAuM3MgYmFja2dyb3VuZC1jb2xvciwgMC4xNXMgY29sb3IgZWFzZS1vdXQsIDAuMTVzIGJvcmRlci1jb2xvciBlYXNlLW91dDtcblx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cdGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdC8vIFByZXZlbnQgZmF0IHdoaXRlIHR5cGUgb24gYSBkYXJrIGJhY2tncm91bmRcblx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG5cdC1tb3otYXBwZWFyYW5jZTogbm9uZTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdGJvcmRlci1yYWRpdXM6IDA7IC8vIEVkZ2UgODAgaW5zaXN0cyBvbiBhIGJvYXJkZXIgcmFkaXVzLlxuXG5cdC8vIFNhbWUgYXMgYXJpYS1kaXNhYmxlZDpcblx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvc3RhdGVzX2FuZF9wcm9wZXJ0aWVzI2FyaWEtZGlzYWJsZWRcblx0Ly8gVGhpcyBpcyBhIGNvbW1vbiBzdHlsZSBmb3IgYWxsIGJ1dHRvbiB0aGVtZXNcblx0JltkaXNhYmxlZF0ge1xuXHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdG9wYWNpdHk6IDAuNDtcblx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdH1cbn1cblxuLy8vIFN0eWxlcyBzaGFyZWQgYnkgYWxsIGJ1dHRvbnMgb2YgYSBnaXZlbiBzaXplIHdpdGggYW4gaWNvbi5cbi8vLyBAcGFyYW0ge051bGx8TnVtYmVyfSAkc2l6ZVxuQG1peGluIF9vQnV0dG9uc0ljb25CYXNlQ29udGVudCgkc2l6ZTogbnVsbCkge1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAzcHg7XG5cdHBhZGRpbmctbGVmdDogX29CdXR0b25zR2V0KCdpY29uLXBhZGRpbmcnLCAkc2l6ZSk7XG59XG5cbi8vLyBTdHlsZXMgZm9yIGEgYnV0dG9uIHdoaWNoIGlzIGFuIGljb24gb25seS5cbkBtaXhpbiBfb0J1dHRvbnNJY29uT25seUNvbnRlbnQoKSB7XG5cdHBhZGRpbmctbGVmdDogMDtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNTAlO1xuXHRtaW4td2lkdGg6IDQwcHg7XG59XG5cbi8vLyBTdHlsZXMgdG8gc2l6ZSBhIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge051bGx8TnVtYmVyfSAkc2l6ZVxuQG1peGluIF9vQnV0dG9uc1NpemVDb250ZW50KCRzaXplOiBudWxsKSB7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IF9vQnV0dG9uc0dldCgnc2NhbGUnLCAkc2l6ZSkpO1xuXHQkbGluZS1oZWlnaHQ6IG50aChvVHlwb2dyYXBoeUdldFNjYWxlKFxuXHRcdCRpbmRleDogX29CdXR0b25zR2V0KCdzY2FsZScsICRzaXplKSxcblx0XHQkZm9udDogb1R5cG9ncmFwaHlHZXRGb250RmFtaWx5KCdzYW5zJylcblx0KSwgMSk7XG5cdGxpbmUtaGVpZ2h0OiAjeyRsaW5lLWhlaWdodH1weDtcblx0Ly8gSUUxMSByZW5kZXJzIHRoZSBiYWNrZ3JvdW5kIGltYWdlIGF0IGEgdmVyeSBzbWFsbCBzaXplIGlmIHlvdSBkbyBub3Rcblx0Ly8gZG91YmxlLXVwIHRoZSBiYWNrZ3JvdW5kIHNpemUgaGVyZSwgZGVjbGFyaW5nIGEgd2lkdGggX2FuZF8gaGVpZ2h0LlxuXHQvLyBTZWUgaHR0cHM6Ly90aGF0ZW1pbC5jb20vYmxvZy8yMDE1LzAzLzE1L3NpemluZy1zdmctYmFja2dyb3VuZC1pbWFnZXMtaW4taW50ZXJuZXQtZXhwbG9yZXIvXG5cdGJhY2tncm91bmQtc2l6ZTogX29CdXR0b25zR2V0KCdiYWNrZ3JvdW5kLXNpemUnLCAkc2l6ZSkgX29CdXR0b25zR2V0KCdiYWNrZ3JvdW5kLXNpemUnLCAkc2l6ZSk7XG5cdG1pbi1oZWlnaHQ6IF9vQnV0dG9uc0dldCgnbWluLWhlaWdodCcsICRzaXplKTtcblx0bWluLXdpZHRoOiBfb0J1dHRvbnNHZXQoJ21pbi13aWR0aCcsICRzaXplKTtcblx0cGFkZGluZzogX29CdXR0b25zR2V0KCdwYWRkaW5nJywgJHNpemUpO1xufVxuXG4vLy8gU3R5bGVzIHRvIGFwcGx5IGNvbG91cnMgdG8gZWFjaCBidXR0b24gc3RhdGUsIGUuZy4gZm9jdXMsIGFjdGl2ZS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUgLSBUaGUgdHlwZSBvZiBidXR0b24sIGUuZy4gJ3ByaW1hcnknXG4vLy8gQHBhcmFtIHtNYXB9ICRidXR0b24tY29sb3JzLW1hcCAtIFRoZSBjb2xvdXJzIGZvciB0aGlzIGJ1dHRvbiAoQHNlZSBfb0J1dHRvbnNHZXRDb2xvcnMpLlxuQG1peGluIF9vQnV0dG9uc1N0YXRlQ29udGVudCgkdHlwZSwgJGJ1dHRvbi1jb2xvcnMtbWFwKSB7XG5cdGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnYmFja2dyb3VuZCcpO1xuXHRjb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdjb2xvcicpO1xuXHRib3JkZXItY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnYm9yZGVyJyk7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdob3Zlci1iYWNrZ3JvdW5kJyk7XG5cdFx0Y29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnaG92ZXItY29sb3InKTtcblx0XHRib3JkZXItY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnaG92ZXItYm9yZGVyJyk7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHR9XG5cblx0Jjpmb2N1cyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdmb2N1cy1iYWNrZ3JvdW5kJyk7XG5cdFx0Y29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnZm9jdXMtY29sb3InKTtcblx0XHRib3JkZXItY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnZm9jdXMtYm9yZGVyJyk7XG5cdH1cblxuXHQvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNlbGVjdGVkXG5cdC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZFxuXHQmW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0sIC8vIGUuZy4gQSBzZWxlY3RlZCB0YWIgb3IgcGFnZSBudW1iZXIgaW4gcGFnaW5hdGlvbi5cblx0JlthcmlhLWN1cnJlbnRdLCAvLyBlLmcuIEEgc2VsZWN0ZWQgdGFiIG9yIHBhZ2UgbnVtYmVyIGluIHBhZ2luYXRpb24gKGZvciBsaW5rcyBvbmx5KS5cblx0JlthcmlhLXByZXNzZWQ9dHJ1ZV0sIC8vIGUuZy4gQSBcImZvbGxvd1wiIGJ1dHRvbiB0aGF0IGlzIHByZXNzZWQuXG5cdCY6YWN0aXZlIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2FjdGl2ZS1iYWNrZ3JvdW5kJyk7XG5cdFx0Y29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnYWN0aXZlLWNvbG9yJyk7XG5cdFx0Ym9yZGVyLWNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2FjdGl2ZS1ib3JkZXInKTtcblx0fVxufVxuXG4vLy8gU3R5bGVzIHRvIGFwcGx5IGljb25zIG9mIGRpZmZlcmVudCBjb2xvdXJzIHRvIGVhY2ggYnV0dG9uIHN0YXRlLCBlLmcuIGZvY3VzLCBhY3RpdmUuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlIC0gVGhlIHR5cGUgb2YgYnV0dG9uLCBlLmcuICdwcmltYXJ5J1xuLy8vIEBwYXJhbSB7TWFwfSAkYnV0dG9uLWNvbG9ycy1tYXAgLSBUaGUgY29sb3VycyBmb3IgdGhpcyBidXR0b24gKEBzZWUgX29CdXR0b25zR2V0Q29sb3JzKS5cbkBtaXhpbiBfb0J1dHRvbnNJY29uU3RhdGVzQ29udGVudCgkaWNvbiwgJGJ1dHRvbi1jb2xvcnMtbWFwKSB7XG5cdCRub3JtYWwtaWNvbi1jb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdjb2xvcicpO1xuXHQkaG92ZXItaWNvbi1jb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdob3Zlci1jb2xvcicpO1xuXHQkYWN0aXZlLWljb24tY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnYWN0aXZlLWNvbG9yJyk7XG5cdCRmb2N1cy1pY29uLWNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2ZvY3VzLWNvbG9yJyk7XG5cblx0QGluY2x1ZGUgX29CdXR0b25zR2V0SWNvbigkaWNvbiwgJG5vcm1hbC1pY29uLWNvbG9yKTtcblxuXHQvLyBPbmx5IG91dHB1dCB0aGUgaG92ZXIgaWNvbiBpZiBpdCBpcyBkaWZmZXJlbnQgdG8gdGhlIGRlZmF1bHQgaWNvbi5cblx0QGlmKCRob3Zlci1pY29uLWNvbG9yICE9ICRub3JtYWwtaWNvbi1jb2xvcikge1xuXHRcdCY6aG92ZXIge1xuXHRcdFx0QGluY2x1ZGUgX29CdXR0b25zR2V0SWNvbigkaWNvbiwgJGhvdmVyLWljb24tY29sb3IpO1xuXHRcdH1cblx0XHQvLyBIYWNrIHRvIGdldCB0aGUgaG92ZXIgc3RhdGUgY29sb3VyIHN2ZyB0byBkb3dubG9hZCB0byBwcmV2ZW50IGZsYXNoXG5cdFx0Ly8gYXMgaWNvbiBpcyBkb3dubG9hZGVkIG9uIGhvdmVyXG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0QGluY2x1ZGUgX29CdXR0b25zR2V0SWNvbigkaWNvbiwgJGhvdmVyLWljb24tY29sb3IpO1xuXHRcdFx0Ly8gRm9yIGFuIHVua25vd24gcmVhc29uIHdoZW4gYnV0dG9uIGNvcHkgaGFzIGxlYWRpbmcgd2hpdGVzcGFjZVxuXHRcdFx0Ly8gU2FmYXJpIHJlbmRlcnMgdGhlIGJlZm9yZSBwc2V1ZG8gZWxlbWVudCBhYm92ZSB0aGUgY29udGVudCB3aXRoXG5cdFx0XHQvLyBhIGhlaWdodCBvZiAxNnB4IGFuZCB3aWR0aCAxcHgsIG1ha2luZyB0aGUgYnV0dG9uIHRvbyB0YWxsLlxuXHRcdFx0Ly8gSWYgd2hpdGVzcGFjZSBpcyBpbmNsdWRlZCBpbiB0aGUgcHNldWRvIGVsZW1lbnQgU2FmYXJpIGRvZXMgbm90XG5cdFx0XHQvLyBkbyB0aGlzOiBodHRwczovL2dpdGh1Yi5jb20vRmluYW5jaWFsLVRpbWVzL28tYnV0dG9ucy9pc3N1ZXMvMjUwXG5cdFx0XHRjb250ZW50OiAnICc7XG5cdFx0fVxuXHR9XG5cblx0Ly8gT25seSBvdXRwdXQgdGhlIGZvY3VzIGljb24gaWYgaXQgaXMgZGlmZmVyZW50IHRvIHRoZSBkZWZhdWx0IG9yIGhvdmVyIGljb24uXG5cdEBpZigkZm9jdXMtaWNvbi1jb2xvciAhPSAkbm9ybWFsLWljb24tY29sb3Igb3IgJGZvY3VzLWljb24tY29sb3IgIT0gJGhvdmVyLWljb24tY29sb3IpIHtcblx0XHQmOmZvY3VzIHtcblx0XHRcdEBpbmNsdWRlIF9vQnV0dG9uc0dldEljb24oJGljb24sICRmb2N1cy1pY29uLWNvbG9yKTtcblx0XHR9XG5cdH1cblxuXHQvLyBPbmx5IG91dHB1dCB0aGUgYWN0aXZlIGljb24gaWYgaXQgaXMgZGlmZmVyZW50IHRvIHN0YXRlcyB3aXRoIGxlc3Mgc3BlY2lmaWNpdHkuXG5cdEBpZigkYWN0aXZlLWljb24tY29sb3IgIT0gJG5vcm1hbC1pY29uLWNvbG9yIG9yICRhY3RpdmUtaWNvbi1jb2xvciAhPSAkaG92ZXItaWNvbi1jb2xvciBvciAkYWN0aXZlLWljb24tY29sb3IgIT0gJGZvY3VzLWljb24tY29sb3IpIHtcblx0XHQvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNlbGVjdGVkXG5cdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wcmVzc2VkXG5cdFx0JlthcmlhLXNlbGVjdGVkPXRydWVdLCAvLyBlLmcuIEEgc2VsZWN0ZWQgdGFiIG9yIHBhZ2UgbnVtYmVyIGluIHBhZ2luYXRpb24uXG5cdFx0JlthcmlhLWN1cnJlbnRdLCAvLyBlLmcuIEEgc2VsZWN0ZWQgdGFiIG9yIHBhZ2UgbnVtYmVyIGluIHBhZ2luYXRpb24gKGZvciBsaW5rcyBvbmx5KS5cblx0XHQmW2FyaWEtcHJlc3NlZD10cnVlXSwgLy8gZS5nLiBBIFwiZm9sbG93XCIgYnV0dG9uIHRoYXQgaXMgcHJlc3NlZC5cblx0XHQmOmFjdGl2ZSB7XG5cdFx0XHRAaW5jbHVkZSBfb0J1dHRvbnNHZXRJY29uKCRpY29uLCAkYWN0aXZlLWljb24tY29sb3IpO1xuXHRcdH1cblx0XHQvLyBIYWNrIHRvIGdldCB0aGUgYWN0aXZlIHN0YXRlIGNvbG91ciBzdmcgdG8gZG93bmxvYWQgdG8gcHJldmVudCBmbGFzaFxuXHRcdC8vIGFzIGljb24gaXMgZG93bmxvYWRlZCBvbiBhY3RpdmVcblx0XHQmOmFmdGVyIHtcblx0XHRcdEBpbmNsdWRlIF9vQnV0dG9uc0dldEljb24oJGljb24sICRhY3RpdmUtaWNvbi1jb2xvcik7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHR9XG5cdH1cblxuXHQvLyBBZGQgZmFsbGJhY2sgZm9yIE1TIEhpZ2ggQ29udHJhc3QgbW9kZS5cblx0Ly8gVGhpcyBvbmx5IG5lZWRzIHRvIGJlIG91dHB1dCBvbmNlLCBub3QgZm9yIGV2ZXJ5IGJ1dHRvbiBzdGF0ZS5cblx0Ly8gc2Fzcy1saW50OmRpc2FibGUgbm8tdmVuZG9yLXByZWZpeGVzXG5cdEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG5cdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgkaWNvbi1uYW1lOiAkaWNvbiwgJHNpemU6IG51bGwsICRjb2xvcjogI2ZmZmZmZiwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlLCAkaGlnaC1jb250cmFzdC1mYWxsYmFjazogZmFsc2UpO1xuXHR9XG5cdEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYmxhY2stb24td2hpdGUpIHtcblx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCRpY29uLW5hbWU6ICRpY29uLCAkc2l6ZTogbnVsbCwgJGNvbG9yOiAjMDAwMDAwLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UsICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrOiBmYWxzZSk7XG5cdH1cblx0Ly8gc2Fzcy1saW50OmVuYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcbn1cblxuLy8vIFJlcXVlc3QgYW4gaWNvbiBmcm9tIG8taWNvbnMgb2YgYSBzcGVjaWZpYyBjb2xvdXIgZm9yIGEgYnV0dG9uLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRpY29uLW5hbWUgLSBpY29uIHRvIHJlcXVlc3Rcbi8vLyBAcGFyYW0ge0NvbG9yfSAkaWNvbi1jb2xvciAtIGEgaGV4IGZvciB0aGUgYnV0dG9uIGljb24gY29sb3VyXG5AbWl4aW4gX29CdXR0b25zR2V0SWNvbigkaWNvbi1uYW1lLCAkaWNvbi1jb2xvcikge1xuXHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCRpY29uLW5hbWU6ICRpY29uLW5hbWUsICRzaXplOiBudWxsLCAkY29sb3I6ICRpY29uLWNvbG9yLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UsICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrOiBmYWxzZSk7XG59XG4iLCIvLy8gT3V0cHV0IHN0eWxlcyBmb3IgYW4gU1ZHIGljb24uXG4vLy8gU3R5bGVzIHRoZSBpY29uIGFzIGEgYmFja2dyb3VuZCBpbWFnZSwgc2V0dGluZyBhIHdpZHRoIGFuZCBoZWlnaHQgb24gdGhlIGVsZW1lbnQgYXMgcmVxdWVzdGVkLlxuLy8vIEEgZmFsbGJhY2sgYmFja2dyb3VuZCBmb3IgV2luZG93cyBIaWdoIENvbnRyYXN0IG1vZGUgaXMgYWxzbyBvdXRwdXQuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkaWNvbi1uYW1lIC0gVGhpcyBzaG91bGQgYmUgYSByZWZlcmVuY2UgdG8gYW4gaWNvbiBpbmNsdWRlZCBpbiBvLWljb25zIGVnIGFycm93LWRvd25cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGNvbG9yIC0gVGhpcyBzaG91bGQgYmUgYSBoZXggY29sb3VyIHZhbHVlLiBVc2VkIHRvIGNvbG9yIHRoZSBpY29uLiBXZSBzdWdnZXN0IHVzaW5nIGFuIG8tY29sb3JzIGZ1bmN0aW9uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE51bGx9ICRzaXplIFsxMjhdIC0gVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGljb24gKHVuaXRzIG9wdGlvbmFsLCBkZWZhdWx0cyB0byBweCkuIFNldCB0byBgbnVsbGAgdG8gc2V0IG5vIHdpZHRoIG9yIGhlaWdodC5cbi8vLyBAcGFyYW0ge0Jvb2x9ICRpbmNsdWRlLWJhc2Utc3R5bGVzIFt0cnVlXSAtIElmIHRydWUsIHdpbGwgb3V0cHV0IHN0eWxlIHJ1bGVzIGZvciB0aGUgY29udGFpbmVyLiBJZiBmYWxzZSB3aWxsIG9ubHkgb3V0cHV0IHRoZSBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnR5XG4vLy8gQHBhcmFtIHtCb29sfSAkaGlnaC1jb250cmFzdC1mYWxsYmFjayBbdHJ1ZV0gLSBUbyBvdXRwdXQgTWljcm9zb2Z0IEhpZ2ggQ29udHJhc3QgZmFsbGJhY2sgZm9yIGFjY2Vzc2liaWxpdHkgcmVhc29ucyBvciBub3QuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRpY29uc2V0LXZlcnNpb24gWzFdIC0gQXQgcHJlc2VudCBvbmx5IDEgdmVyc2lvbiBvZiB0aGUgaWNvbiBzZXQgaXMgYXZhaWxhYmxlLlxuQG1peGluIG9JY29uc0NvbnRlbnQoJGljb24tbmFtZSwgJGNvbG9yOiBudWxsLCAkc2l6ZTogMTI4LCAkaW5jbHVkZS1iYXNlLXN0eWxlczogdHJ1ZSwgJGhpZ2gtY29udHJhc3QtZmFsbGJhY2s6IHRydWUsICRpY29uc2V0LXZlcnNpb246IDEpIHtcblx0Ly8gRXJyb3IgaWYgdGhlIGdsb2JhbCAkc3lzdGVtLWNvZGUgdmFyaWFibGUgaXMgbm90IHNldC5cblx0Ly8gVGhpcyBpcyByZXF1aXJlZCBmb3IgaW1hZ2Ugc2VydmljZSByZXF1ZXN0cy5cblx0QGlmKGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ3N5c3RlbS1jb2RlJykgPT0gZmFsc2Ugb3IgdHlwZS1vZigkc3lzdGVtLWNvZGUpICE9ICdzdHJpbmcnKSB7XG5cdFx0QGVycm9yICdBIGdsb2JhbCBcIiRzeXN0ZW0tY29kZVwiIFNhc3MgdmFyaWFibGUgbXVzdCBiZSBzZXQgdG8gYSB2YWxpZCBCaXpvcHMgc3lzdGVtIGNvZGUgKFxcZV04OztodHRwczovL2Jpei1vcHMuaW4uZnQuY29tL2xpc3QvU3lzdGVtc1xcZVxcXFxodHRwczovL2Jpei1vcHMuaW4uZnQuY29tL2xpc3QvU3lzdGVtc1xcZV04OztcXGVcXFxcKS4nO1xuXHR9XG5cblx0Ly8gSWYgdGhlIHNpemUgb2YgdGhlIGljb25zIGhhcyBiZWVuIGdpdmVuIHdpdGhvdXQgYSB1bml0LCBkZWZhdWx0IHRvIHB4LlxuXHRAaWYgKHR5cGUtb2YoJHNpemUpID09ICdudW1iZXInIGFuZCB1bml0bGVzcygkc2l6ZSkpIHtcblx0XHQkc2l6ZTogJHNpemUgKyAwcHg7XG5cdH1cblxuXHQvLyBEZWZpbmUgYmFzZSBpbWFnZSBzZXJ2aWNlIHBhdGguXG5cdCRzY2hlbWU6IFwiZnRpY29uLXYjeyRpY29uc2V0LXZlcnNpb259XCI7XG5cdCRzZXJ2aWNlLXVybDogXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvaW1hZ2UvdjIvaW1hZ2VzL3Jhdy8jeyRzY2hlbWV9OiN7JGljb24tbmFtZX1cIjtcblxuXHQvLyBJbmNsdWRlIGJhc2Ugc3R5bGVzIHNoYXJlZCBieSBhbGwgaWNvbnMuXG5cdEBpZiAoJGluY2x1ZGUtYmFzZS1zdHlsZXMgPT0gdHJ1ZSkge1xuXHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnRCYXNlU3R5bGVzO1xuXHR9XG5cblx0Ly8gU2V0IHRoZSBpY29uIGRpbWVudGlvbnMuXG5cdHdpZHRoOiAkc2l6ZTtcblx0aGVpZ2h0OiAkc2l6ZTtcblxuXHQvLyBJbmNsdWRlIHRoZSBpY29uIHZpYSB0aGUgaW1hZ2Ugc2VydmljZS5cblx0Ly8gQnVpbGQgYW4gaW1hZ2Ugc2VydmljZSB1cmwgZm9yIHRoZSByZXF1ZXN0ZWQgaWNvbi5cblx0JHF1ZXJ5OiBcIj9zb3VyY2U9I3skc3lzdGVtLWNvZGV9XCI7XG5cdEBpZiAkY29sb3IgIT0gbnVsbCB7XG5cdFx0JGNvbG9yOiBzdHItc2xpY2UoaWUtaGV4LXN0cigkY29sb3IpLCA0KTtcblx0XHQkcXVlcnk6ICRxdWVyeSArIFwiJnRpbnQ9JTIzI3skY29sb3J9LCUyMyN7JGNvbG9yfVwiO1xuXHR9XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkc2VydmljZS11cmwgKyAkcXVlcnkgKyBcIiZmb3JtYXQ9c3ZnXCIpO1xuXG5cdC8vIEluY2x1ZGUgYSBmYWxsYmFjayBmb3IgV2luZG93J3MgaGlnaCBjb250cmFzdCBtb2RlLlxuXHQvLyBUaGlzIG1vZGUgcmVtb3ZlcyBiYWNrZ3JvdW5kIGltYWdlcyB1bmxlc3Mgc3BlY2lmY2FsbHkgaW5jbHVkZWRcblx0Ly8gZm9yIGhpZ2ggY29udHJhc3QgbW9kZS5cblx0Ly8gc2Fzcy1saW50OmRpc2FibGUgbm8tdmVuZG9yLXByZWZpeGVzXG5cdEBpZiAkaGlnaC1jb250cmFzdC1mYWxsYmFjayB7XG5cdFx0QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcblx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkc2VydmljZS11cmwgKyBcIj9zb3VyY2U9I3skc3lzdGVtLWNvZGV9JnRpbnQ9JTIzZmZmZmZmLCUyM2ZmZmZmZiZmb3JtYXQ9c3ZnXCIpO1xuXHRcdH1cblxuXHRcdEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYmxhY2stb24td2hpdGUpIHtcblx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkc2VydmljZS11cmwgKyBcIj9zb3VyY2U9I3skc3lzdGVtLWNvZGV9JnRpbnQ9JTIzMDAwMDAwLCUyMzAwMDAwMCZmb3JtYXQ9c3ZnXCIpO1xuXHRcdH1cblx0fVxuXHQvLyBzYXNzLWxpbnQ6ZW5hYmxlIG5vLXZlbmRvci1wcmVmaXhlc1xufVxuXG4vLy8gQmFzZSBzdHlsZXMgZm9yIGFsbCBpY29uc1xuLy8vIEBhY2Nlc3MgcHVibGljXG5AbWl4aW4gb0ljb25zQ29udGVudEJhc2VTdHlsZXMoKSB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0YmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCU7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG4iLCIvLy8gVmlzdWFsbHkgaGlkZSBhbiBlbGVtZW50IHdoaWxlIHN0aWxsXG4vLy8gYWxsb3dpbmcgaXQgdG8gYmUgcmVhZCBieSBhIHNjcmVlbnJlYWRlclxuQG1peGluIG9Ob3JtYWxpc2VWaXN1YWxseUhpZGRlbiB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Y2xpcDogcmVjdCgwIDAgMCAwKTtcblx0Y2xpcC1wYXRoOiBwb2x5Z29uKDAgMCwgMCAwKTtcblx0bWFyZ2luOiAtMXB4O1xuXHRib3JkZXI6IDA7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHBhZGRpbmc6IDA7XG5cdHdpZHRoOiAycHg7XG5cdGhlaWdodDogMnB4O1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vLy8gQ2xlYXJmaXggaGVscGVyIHN0eWxlc1xuLy8vIE91dHB1dHMgY2xlYXJmaXggc3R5bGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnRcbkBtaXhpbiBvTm9ybWFsaXNlQ2xlYXJmaXgge1xuXHR6b29tOiAxO1xuXG5cdCY6YmVmb3JlLFxuXHQmOmFmdGVyIHtcblx0XHRjb250ZW50OiAnJztcblx0XHRkaXNwbGF5OiB0YWJsZTtcblx0XHRkaXNwbGF5OiBmbGV4OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLWJsb2NrLW5vLWR1cGxpY2F0ZS1wcm9wZXJ0aWVzXG5cdH1cblx0JjphZnRlciB7XG5cdFx0Y2xlYXI6IGJvdGg7XG5cdH1cbn1cblxuLy8vIEFkZHMgYm94IHNpemluZyB0byBjdXJyZW50IGFuZCBhbGwgY2hpbGQgZWxlbWVudHNcbkBtaXhpbiBvTm9ybWFsaXNlQm94U2l6aW5nIHtcblxuXHQvKmF1dG9wcmVmaXhlcjogb2ZmKi9cblx0LXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblx0LW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblxuXG5cdCYgKixcblx0JiAqOmJlZm9yZSxcblx0JiAqOmFmdGVyIHtcblxuXHRcdC8qYXV0b3ByZWZpeGVyOiBvZmYqL1xuXHRcdC13ZWJraXQtYm94LXNpemluZzogaW5oZXJpdDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdFx0LW1vei1ib3gtc2l6aW5nOiBpbmhlcml0OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblx0XHRib3gtc2l6aW5nOiBpbmhlcml0O1xuXG5cdH1cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIGdlbmVyYWwgaHRtbCBlbGVtZW50c1xuLy8vIGVmZmVjdHM6IDxodG1sPiwgPGJvZHk+LCA8bWFpbj4sIGFuZCA6Zm9jdXMgc3RhdGVcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUJvZHkoJGZvbnQtc21vb3RoaW5nOiB0cnVlLCAkYm94LXNpemluZzogdHJ1ZSwgJGZvY3VzOiB0cnVlLCAkcmVkdWNlLW1vdGlvbjogdHJ1ZSkge1xuXHRodG1sLFxuXHRib2R5IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0dGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcblxuXHRcdC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblx0XHQtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXG5cblx0XHRAaWYgJGZvbnQtc21vb3RoaW5nIHtcblxuXHRcdFx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdFx0XHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXG5cdFx0fVxuXG5cdFx0QGlmICRib3gtc2l6aW5nIHtcblx0XHRcdEBpbmNsdWRlIG9Ob3JtYWxpc2VCb3hTaXppbmc7XG5cdFx0fVxuXG5cdFx0QGlmICRyZWR1Y2UtbW90aW9uIHtcblx0XHRcdC8vIEltbWVkaWF0ZWx5IGp1bXAgYW55IGFuaW1hdGlvbiB0byB0aGUgZW5kIHBvaW50IGlmIHRoZSB1c2VyIGhhc1xuXHRcdFx0Ly8gc2V0IHRoZWlyIGRldmljZSB0byBcInByZWZlcnMgcmVkdWNlZCBtb3Rpb25cIi5cblx0XHRcdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96ZGV2cy9jc3NyZW1lZHkvaXNzdWVzLzExXG5cdFx0XHRAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXHRcdFx0XHQqLFxuXHRcdFx0XHQqOmJlZm9yZSxcblx0XHRcdFx0KjphZnRlciB7XG5cblx0XHRcdFx0XHRhbmltYXRpb24tZHVyYXRpb246IDAuMDAxcyAhaW1wb3J0YW50OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXHRcdFx0XHRcdHRyYW5zaXRpb24tZHVyYXRpb246IDAuMDAxcyAhaW1wb3J0YW50OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXHRcdFx0XHRcdGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gR2l2ZSA8bWFpbj5zIHRoZSBwcm9wZXIgZGlzcGxheSB2YWx1ZSBpbiBJRS5cblx0bWFpbiB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHRAaWYgJGZvY3VzIHtcblx0XHRAaW5jbHVkZSBfb05vcm1hbGlzZUZvY3VzKCk7XG5cdH1cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIGZvciBmb2N1c2VkIGVsZW1lbnRzLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTm9ybWFsaXNlRm9jdXMge1xuXHQvLyBBcHBseSA6Zm9jdXMgc3R5bGVzIGFzIGEgZmFsbGJhY2tcblx0Ly8gVGhlc2Ugc3R5bGVzIHdpbGwgYmUgYXBwbGllZCB0byBhbGwgYnJvd3NlcnMgdGhhdCBkb24ndCB1c2UgdGhlIHBvbHlmaWxsLCB0aGlzIGluY2x1ZGVzIGJyb3dzZXJzIHdoaWNoIHN1cHBvcnQgdGhlIGZlYXR1cmUgbmF0aXZlbHkuXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHtcblx0XHQvLyBTdGFuZGFyZGlzZSBmb2N1cyBzdHlsZXMuXG5cdFx0OmZvY3VzIHtcblx0XHRcdG91dGxpbmU6IDJweCBzb2xpZCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHRcdH1cblxuXHRcdGlucHV0OmZvY3VzLFxuXHRcdHRleHRhcmVhOmZvY3VzLFxuXHRcdHNlbGVjdDpmb2N1cyB7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0XHR9XG5cdH1cblxuXHQvLyBXaGVuIHRoZSBmb2N1cy12aXNpYmxlIHBvbHlmaWxsIGlzIGFwcGxpZWQgYC5qcy1mb2N1cy12aXNpYmxlYCBpcyBhZGRlZCB0byB0aGUgaHRtbCBkb20gbm9kZVxuXHQvLyAodGhlIGJvZHkgbm9kZSBpbiB2NCBvZiB0aGUgM3JkIHBhcnR5IHBvbHlmaWxsKVxuXG5cdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0Ym9keS5qcy1mb2N1cy12aXNpYmxlLCAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdGh0bWwuanMtZm9jdXMtdmlzaWJsZSB7XG5cdFx0Ly8gU3RhbmRhcmRpc2UgZm9jdXMgc3R5bGVzLlxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHQuZm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiAycHggc29saWQgJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0XHR9XG5cdFx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdGlucHV0LmZvY3VzLXZpc2libGUsIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHR0ZXh0YXJlYS5mb2N1cy12aXNpYmxlLFxuXHRcdHNlbGVjdC5mb2N1cy12aXNpYmxlIHtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHRcdH1cblx0XHQvLyBEaXNhYmxlIGJyb3dzZXIgZGVmYXVsdCBmb2N1cyBzdHlsZS5cblx0XHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0OmZvY3VzOm5vdCguZm9jdXMtdmlzaWJsZSkge1xuXHRcdFx0b3V0bGluZTogMDtcblx0XHR9XG5cdH1cblxuXG5cdC8vIFRoZXNlIHN0eWxlcyB3aWxsIGJlIGlnbm9yZWQgYnkgYnJvd3NlcnMgd2hpY2ggZG8gbm90IHJlY29nbmlzZSB0aGUgOmZvY3VzLXZpc2libGUgc2VsZWN0b3IgKGFzIHBlciB0aGUgdGhpcmQgYnVsbGV0IHBvaW50IGluIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMtMy8jQ29uZm9ybWFuY2UpXG5cdC8vIElmIGEgYnJvd3NlciBzdXBwb3J0cyA6Zm9jdXMtdmlzaWJsZSB3ZSB1bnNldCB0aGUgOmZvY3VzIHN0eWxlcyB0aGF0IHdlcmUgYXBwbGllZCBhYm92ZVxuXHQvLyAod2l0aGluIHRoZSBodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgYmxvY2spLlxuXHQ6Zm9jdXMtdmlzaWJsZSxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIDpmb2N1cyxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIDpmb2N1cyB7XG5cdFx0b3V0bGluZTogdW5zZXQ7XG5cdH1cblxuXHQ6Zm9jdXMtdmlzaWJsZSxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIGlucHV0OmZvY3VzLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cyxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHRleHRhcmVhOmZvY3VzLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgc2VsZWN0OmZvY3VzLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgc2VsZWN0OmZvY3VzIHtcblx0XHRib3gtc2hhZG93OiB1bnNldDtcblx0fVxuXG5cdC8vIFN0eWxlcyBnaXZlbiA6Zm9jdXMtdmlzaWJsZSBzdXBwb3J0LiBFeHRyYSBzZWxlY3RvcnMgbmVlZGVkIHRvIG1hdGNoXG5cdC8vIHByZXZpb3VzIGA6Zm9jdXNgIHNlbGVjdG9yIHNwZWNpZmljaXR5LlxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzLXZpc2libGUsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMtdmlzaWJsZSxcblx0OmZvY3VzLXZpc2libGUge1xuXHRcdG91dGxpbmU6IDJweCBzb2xpZCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHR9XG5cblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIGlucHV0OmZvY3VzLXZpc2libGUsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cy12aXNpYmxlLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHRleHRhcmVhOmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMtdmlzaWJsZSxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cy12aXNpYmxlLFxuXHRpbnB1dDpmb2N1cy12aXNpYmxlLFxuXHR0ZXh0YXJlYTpmb2N1cy12aXNpYmxlLFxuXHRzZWxlY3Q6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4ICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdH1cblxuXHQvLyBQcmV2ZW50IElFIGZyb20gcHV0dGluZyBmb2N1cyBzdHlsZXMgb24gdGhlIGJvZHkgb3IgaHRtbC4gVGhlc2Ugc2VsZWN0b3JzXG5cdC8vIHNlcnZlIGFzIGEgYmxhY2tsaXN0IGZvciBcInRoaW5ncyB3ZSd2ZSBmb3VuZCBjYW4gaGF2ZSBmb2N1cyBidXQgd2UgZG9uJ3Qgd2FudFwiXG5cdGh0bWw6Zm9jdXMsXG5cdGJvZHk6Zm9jdXMsXG5cdFtyZWFkb25seV06Zm9jdXMge1xuXHRcdG91dGxpbmU6IG5vbmU7XG5cdH1cblxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gbGluayBlbGVtZW50c1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTm9ybWFsaXNlTGlua3Mge1xuXG5cdC8vIFJlbW92ZSB0aGUgZ3JleSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cblx0YSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIG91dGxpbmUgb24gZm9jdXNlZCBsaW5rcyB3aGVuIHRoZXkgYXJlXG5cdC8vIGFsc28gYWN0aXZlIG9yIGhvdmVyZWQgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG5cdGE6YWN0aXZlLFxuXHRhOmhvdmVyIHtcblx0XHRvdXRsaW5lLXdpZHRoOiAwO1xuXHR9XG5cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIHRleHQgcmVsYXRlZCBlbGVtZW50c1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTm9ybWFsaXNlVGV4dCB7XG5cblx0Ly8gMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuXHQvLyAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuXHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdGFiYnJbdGl0bGVdIHtcblx0XHRib3JkZXItYm90dG9tOiAwOyAvLyBbMV1cblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLy8gWzJdXG5cdFx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlY2xhcmF0aW9uLWJsb2NrLW5vLWR1cGxpY2F0ZS1wcm9wZXJ0aWVzXG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvLyBbMl1cblx0fVxuXG5cdC8vIFByZXZlbnQgdGhlIGR1cGxpY2F0ZSBhcHBsaWNhdGlvbiBvZiBgYm9sZGVyYCBieSB0aGUgbmV4dCBydWxlIGluIFNhZmFyaSA2LlxuXHRiLFxuXHRzdHJvbmcge1xuXHRcdGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuXHR9XG5cblx0Ly8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cblx0Yixcblx0c3Ryb25nIHtcblx0XHRmb250LXdlaWdodDogYm9sZGVyO1xuXHR9XG5cblx0Ly8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgc3R5bGUgaW4gQW5kcm9pZCA0LjMtLlxuXHRkZm4ge1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0fVxuXG5cdC8vIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuXHQvLyBhbGwgYnJvd3NlcnMuXG5cdHN1Yixcblx0c3VwIHtcblx0XHRmb250LXNpemU6IDc1JTtcblx0XHRsaW5lLWhlaWdodDogMDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0dmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuXHR9XG5cblx0c3ViIHtcblx0XHRib3R0b206IC0wLjI1ZW07XG5cdH1cblxuXHRzdXAge1xuXHRcdHRvcDogLTAuNWVtO1xuXHR9XG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byB0aGUgaW1hZ2UgZWxlbWVudFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTm9ybWFsaXNlSW1hZ2VzIHtcblx0Ly8gUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC0uXG5cdGltZyB7XG5cdFx0Ym9yZGVyLXN0eWxlOiBub25lO1xuXHR9XG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byBmb3JtIGVsZW1lbnRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VGb3JtcyB7XG5cdC8vIFJlc3RvcmUgdGhlIGZvbnQgd2VpZ2h0IHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuXHRvcHRncm91cCB7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdH1cblxuXHQvLyBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cblx0Ly8gMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cblx0Ly8gMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuXHRidXR0b24sXG5cdGlucHV0LCAgIC8vIFsxXVxuXHRzZWxlY3QgeyAvLyBbMl1cblx0XHRvdmVyZmxvdzogdmlzaWJsZTtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgbWFyZ2luIGluIFNhZmFyaS5cblx0Ly8gMS4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuXHRidXR0b24sXG5cdGlucHV0LFxuXHRzZWxlY3QsXG5cdHRleHRhcmVhIHsgLy8gWzFdXG5cdFx0bWFyZ2luOiAwO1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG5cdC8vIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cblx0YnV0dG9uLFxuXHRzZWxlY3QgeyAvLyBbMV1cblx0XHR0ZXh0LXRyYW5zZm9ybTogbm9uZTtcblx0fVxuXG5cdC8vIENoYW5nZSB0aGUgY3Vyc29yIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuXHRidXR0b24sXG5cdFt0eXBlPVwiYnV0dG9uXCJdLFxuXHRbdHlwZT1cInJlc2V0XCJdLFxuXHRbdHlwZT1cInN1Ym1pdFwiXSB7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHR9XG5cblx0Ly8gUmVzdG9yZSB0aGUgZGVmYXVsdCBjdXJzb3IgdG8gZGlzYWJsZWQgZWxlbWVudHMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG5cdFtkaXNhYmxlZF0ge1xuXHRcdGN1cnNvcjogZGVmYXVsdDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG5cdGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblx0aW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuXHRcdGJvcmRlcjogMDtcblx0XHRwYWRkaW5nOiAwO1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRS5cblx0dGV4dGFyZWEge1xuXHRcdG92ZXJmbG93OiBhdXRvO1xuXHR9XG59XG4iLCJodG1sOmFmdGVye2NvbnRlbnQ6J3sgXCJsYXlvdXRcIjogXCJkZWZhdWx0XCIsIFwiZ3V0dGVyXCI6IFwiMTBweFwiIH0nO2Rpc3BsYXk6bm9uZX1AbWVkaWEobWluLXdpZHRoOiAzMC42MjVlbSl7aHRtbDphZnRlcntjb250ZW50Oid7IFwibGF5b3V0XCI6IFwiU1wiLCBcImd1dHRlclwiOiBcIjEwcHhcIiB9J319QG1lZGlhKG1pbi13aWR0aDogNDYuMjVlbSl7aHRtbDphZnRlcntjb250ZW50Oid7IFwibGF5b3V0XCI6IFwiTVwiLCBcImd1dHRlclwiOiBcIjIwcHhcIiB9J319QG1lZGlhKG1pbi13aWR0aDogNjEuMjVlbSl7aHRtbDphZnRlcntjb250ZW50Oid7IFwibGF5b3V0XCI6IFwiTFwiLCBcImd1dHRlclwiOiBcIjIwcHhcIiB9J319QG1lZGlhKG1pbi13aWR0aDogNzYuMjVlbSl7aHRtbDphZnRlcntjb250ZW50Oid7IFwibGF5b3V0XCI6IFwiWExcIiwgXCJndXR0ZXJcIjogXCIyMHB4XCIgfSd9fS5vLWZvb3Rlcntmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjBweDttYXJnaW4tdG9wOjQwcHg7bGluZS1oZWlnaHQ6MjBweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tZm9vdGVye2ZvbnQtc2l6ZToxMy45MnB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tZm9vdGVyIGF7Ym9yZGVyLWJvdHRvbTowO3RleHQtZGVjb3JhdGlvbjpub25lfS5vLWZvb3Rlcl9fY29udGFpbmVye2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO21pbi13aWR0aDoyNDBweDttYXgtd2lkdGg6MTIyMHB4O3Bvc2l0aW9uOnJlbGF0aXZlO21heC13aWR0aDoxMjIwcHg7cGFkZGluZy1sZWZ0OjEwcHg7cGFkZGluZy1yaWdodDoxMHB4O3BhZGRpbmctdG9wOi4xcHh9QG1lZGlhKG1pbi13aWR0aDogNDYuMjVlbSl7Lm8tZm9vdGVyX19jb250YWluZXJ7cGFkZGluZy1sZWZ0OjIwcHg7cGFkZGluZy1yaWdodDoyMHB4fX1AbWVkaWEobWluLXdpZHRoOiA0Ni4yNWVtKXsuby1ncmlkLXNuYXBweSAuby1mb290ZXJfX2NvbnRhaW5lciwuby1mb290ZXJfX2NvbnRhaW5lci0tc25hcHB5e21heC13aWR0aDo3NDBweH19QG1lZGlhKG1pbi13aWR0aDogNjEuMjVlbSl7Lm8tZ3JpZC1zbmFwcHkgLm8tZm9vdGVyX19jb250YWluZXIsLm8tZm9vdGVyX19jb250YWluZXItLXNuYXBweXttYXgtd2lkdGg6OTgwcHh9fUBtZWRpYShtaW4td2lkdGg6IDc2LjI1ZW0pey5vLWdyaWQtc25hcHB5IC5vLWZvb3Rlcl9fY29udGFpbmVyLC5vLWZvb3Rlcl9fY29udGFpbmVyLS1zbmFwcHl7bWF4LXdpZHRoOjEyMjBweH19Lm8tZm9vdGVyX19yb3d7bWFyZ2luLXRvcDoyMHB4fS5vLWZvb3Rlcl9fbGVnYWwtbGlua3N7cGFkZGluZy1sZWZ0OjBweH0uby1mb290ZXJfX2xlZ2FsLWxpbmtzIGF7ZGlzcGxheTppbmxpbmUtYmxvY2t9Lm8tZm9vdGVyX19sZWdhbC1saW5rcyBsaXtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxNnB4O2xpc3Qtc3R5bGU6bm9uZTtkaXNwbGF5OmlubGluZS1ibG9ja30uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tZm9vdGVyX19sZWdhbC1saW5rcyBsaXtmb250LXNpemU6MTIuMThweH0uby1mb290ZXJfX2xlZ2FsLWxpbmtzIGxpOmJlZm9yZXtjb250ZW50Olwi4oCiXCI7cGFkZGluZy1sZWZ0OjRweDtwYWRkaW5nLXJpZ2h0OjRweH0uby1mb290ZXJfX2xlZ2FsLWxpbmtzIGxpOmZpcnN0LWNoaWxkOmJlZm9yZXtjb250ZW50OlwiXCI7cGFkZGluZzowfS5vLWZvb3Rlcl9fY29weXJpZ2h0e21hcmdpbi10b3A6MjBweDttYXJnaW4tYm90dG9tOjIwcHh9Lm8tZm9vdGVyX19jb3B5cmlnaHQgYXt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5vLWZvb3Rlcl9fYnJhbmR7cGFkZGluZy10b3A6MTZweDtwYWRkaW5nLWJvdHRvbToxNnB4fS5vLWZvb3Rlcl9fYnJhbmQtbG9nb3tiYWNrZ3JvdW5kLWltYWdlOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0bG9nbzpicmFuZC1uaWtrZWktdGFnbGluZT9zb3VyY2U9aWctcHJvamVjdHMmZm9ybWF0PXN2Z1wiKTtoZWlnaHQ6MjBweDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodH1AbWVkaWEgcHJpbnR7Lm8tZm9vdGVye2Rpc3BsYXk6bm9uZX19Lm8tZm9vdGVyX19tYXRyaXgsLm8tZm9vdGVyX19tYXRyaXgtY29udGVudHtjbGVhcjpib3RoO2ZsZXgtd3JhcDp3cmFwO2Rpc3BsYXk6ZmxleDttYXJnaW4tbGVmdDotMTBweDt6b29tOjF9QG1lZGlhIHByaW50ey5vLWZvb3Rlcl9fbWF0cml4LC5vLWZvb3Rlcl9fbWF0cml4LWNvbnRlbnR7ZGlzcGxheTppbmhlcml0fX1AbWVkaWEobWluLXdpZHRoOiA0Ni4yNWVtKXsuby1mb290ZXJfX21hdHJpeCwuby1mb290ZXJfX21hdHJpeC1jb250ZW50e21hcmdpbi1sZWZ0Oi0yMHB4fX0uby1mb290ZXJfX21hdHJpeDpiZWZvcmUsLm8tZm9vdGVyX19tYXRyaXg6YWZ0ZXIsLm8tZm9vdGVyX19tYXRyaXgtY29udGVudDpiZWZvcmUsLm8tZm9vdGVyX19tYXRyaXgtY29udGVudDphZnRlcntjb250ZW50OlwiXCI7ZGlzcGxheTp0YWJsZTtkaXNwbGF5OmZsZXh9Lm8tZm9vdGVyX19tYXRyaXg6YWZ0ZXIsLm8tZm9vdGVyX19tYXRyaXgtY29udGVudDphZnRlcntjbGVhcjpib3RofS5vLWZvb3Rlcl9fbWF0cml4LWdyb3VwLC5vLWZvb3Rlcl9fbWF0cml4LWNvbHVtbntib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxvYXQ6bGVmdDtmbGV4OjEgMSAwJTtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLWxlZnQ6MTBweH1AbWVkaWEobWluLXdpZHRoOiA0Ni4yNWVtKXsuby1mb290ZXJfX21hdHJpeC1ncm91cCwuby1mb290ZXJfX21hdHJpeC1jb2x1bW57cGFkZGluZy1sZWZ0OjIwcHh9fS5vLWZvb3Rlcl9fbWF0cml4LWdyb3VwLS0xe2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoxMDAlO21pbi13aWR0aDoxMDAlO21heC13aWR0aDoxMDAlfUBtZWRpYShtaW4td2lkdGg6IDQ2LjI1ZW0pey5vLWZvb3Rlcl9fbWF0cml4LWdyb3VwLS0xe2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczozMy4zMzMzMzMzMzMzJTttaW4td2lkdGg6MzMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjMzLjMzMzMzMzMzMzMlfX1AbWVkaWEobWluLXdpZHRoOiA2MS4yNWVtKXsuby1mb290ZXJfX21hdHJpeC1ncm91cC0tMXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MTYuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjE2LjY2NjY2NjY2NjclO21heC13aWR0aDoxNi42NjY2NjY2NjY3JX19Lm8tZm9vdGVyX19tYXRyaXgtZ3JvdXAtLTEgLm8tZm9vdGVyX19tYXRyaXgtY29sdW1ue2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoxMDAlO21pbi13aWR0aDoxMDAlO21heC13aWR0aDoxMDAlfS5vLWZvb3Rlcl9fbWF0cml4LWdyb3VwLS0ye2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoxMDAlO21pbi13aWR0aDoxMDAlO21heC13aWR0aDoxMDAlfUBtZWRpYShtaW4td2lkdGg6IDQ2LjI1ZW0pey5vLWZvb3Rlcl9fbWF0cml4LWdyb3VwLS0ye2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1MCU7bWluLXdpZHRoOjUwJTttYXgtd2lkdGg6NTAlfX1AbWVkaWEobWluLXdpZHRoOiA2MS4yNWVtKXsuby1mb290ZXJfX21hdHJpeC1ncm91cC0tMntkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MzMuMzMzMzMzMzMzMyU7bWluLXdpZHRoOjMzLjMzMzMzMzMzMzMlO21heC13aWR0aDozMy4zMzMzMzMzMzMzJX19Lm8tZm9vdGVyX19tYXRyaXgtZ3JvdXAtLTIgLm8tZm9vdGVyX19tYXRyaXgtY29sdW1ue2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1MCU7bWluLXdpZHRoOjUwJTttYXgtd2lkdGg6NTAlfS5vLWZvb3Rlcl9fbWF0cml4LWdyb3VwLS00e2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoxMDAlO21pbi13aWR0aDoxMDAlO21heC13aWR0aDoxMDAlfUBtZWRpYShtaW4td2lkdGg6IDYxLjI1ZW0pey5vLWZvb3Rlcl9fbWF0cml4LWdyb3VwLS00e2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo2Ni42NjY2NjY2NjY3JTttaW4td2lkdGg6NjYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NjY2NjclfX0uby1mb290ZXJfX21hdHJpeC1ncm91cC0tNCAuby1mb290ZXJfX21hdHJpeC1jb2x1bW57ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjUwJTttaW4td2lkdGg6NTAlO21heC13aWR0aDo1MCV9QG1lZGlhKG1pbi13aWR0aDogNDYuMjVlbSl7Lm8tZm9vdGVyX19tYXRyaXgtZ3JvdXAtLTQgLm8tZm9vdGVyX19tYXRyaXgtY29sdW1ue2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoyNSU7bWluLXdpZHRoOjI1JTttYXgtd2lkdGg6MjUlfX0uby1mb290ZXJfX21hdHJpeC1ncm91cC0tNntkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MTAwJTttaW4td2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJX0uby1mb290ZXJfX21hdHJpeC1ncm91cC0tNiAuby1mb290ZXJfX21hdHJpeC1jb2x1bW57ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjUwJTttaW4td2lkdGg6NTAlO21heC13aWR0aDo1MCV9QG1lZGlhKG1pbi13aWR0aDogNDYuMjVlbSl7Lm8tZm9vdGVyX19tYXRyaXgtZ3JvdXAtLTYgLm8tZm9vdGVyX19tYXRyaXgtY29sdW1ue2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoyNSU7bWluLXdpZHRoOjI1JTttYXgtd2lkdGg6MjUlfX1AbWVkaWEobWluLXdpZHRoOiA2MS4yNWVtKXsuby1mb290ZXJfX21hdHJpeC1ncm91cC0tNiAuby1mb290ZXJfX21hdHJpeC1jb2x1bW57ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjE2LjY2NjY2NjY2NjclO21pbi13aWR0aDoxNi42NjY2NjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY2NjY2NyV9fS5vLWZvb3Rlcl9fbWF0cml4LXRpdGxlLC5vLWZvb3Rlcl9fbWF0cml4LWxpbmtfX2NvcHl7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2t9Lm8tZm9vdGVyX19tYXRyaXgtdGl0bGV7bWFyZ2luOjA7bGluZS1oZWlnaHQ6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo2MDB9Lm8tZm9vdGVyX19tYXRyaXgtdGl0bGVbYXJpYS1leHBhbmRlZF17cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyLXRvcDoxcHggc29saWQ7bGluZS1oZWlnaHQ6NDBweDtjdXJzb3I6cG9pbnRlcn0uby1mb290ZXJfX21hdHJpeC10aXRsZVthcmlhLWV4cGFuZGVkXTphZnRlcntjb250ZW50OlwiIFwiO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjEwcHh9Lm8tZm9vdGVyLS10aGVtZS1saWdodCAuby1mb290ZXJfX21hdHJpeC10aXRsZVthcmlhLWV4cGFuZGVkXTphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2ltYWdlL3YyL2ltYWdlcy9yYXcvZnRpY29uLXYxOmFycm93LWRvd24/c291cmNlPWlnLXByb2plY3RzJnRpbnQ9JTIzMDAwMDAwLCUyMzAwMDAwMCZmb3JtYXQ9c3ZnXCIpfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuby1mb290ZXItLXRoZW1lLWxpZ2h0IC5vLWZvb3Rlcl9fbWF0cml4LXRpdGxlW2FyaWEtZXhwYW5kZWRdOmFmdGVye2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2ltYWdlL3YyL2ltYWdlcy9yYXcvZnRpY29uLXYxOmFycm93LWRvd24/c291cmNlPWlnLXByb2plY3RzJnRpbnQ9JTIzZmZmZmZmLCUyM2ZmZmZmZiZmb3JtYXQ9c3ZnXCIpfX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGJsYWNrLW9uLXdoaXRlKXsuby1mb290ZXItLXRoZW1lLWxpZ2h0IC5vLWZvb3Rlcl9fbWF0cml4LXRpdGxlW2FyaWEtZXhwYW5kZWRdOmFmdGVye2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2ltYWdlL3YyL2ltYWdlcy9yYXcvZnRpY29uLXYxOmFycm93LWRvd24/c291cmNlPWlnLXByb2plY3RzJnRpbnQ9JTIzMDAwMDAwLCUyMzAwMDAwMCZmb3JtYXQ9c3ZnXCIpfX0uby1mb290ZXItLXRoZW1lLWRhcmsgLm8tZm9vdGVyX19tYXRyaXgtdGl0bGVbYXJpYS1leHBhbmRlZF06YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO2JhY2tncm91bmQtcG9zaXRpb246NTAlO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtiYWNrZ3JvdW5kLWltYWdlOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0aWNvbi12MTphcnJvdy1kb3duP3NvdXJjZT1pZy1wcm9qZWN0cyZ0aW50PSUyM0ZGRkZGRiwlMjNGRkZGRkYmZm9ybWF0PXN2Z1wiKX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7Lm8tZm9vdGVyLS10aGVtZS1kYXJrIC5vLWZvb3Rlcl9fbWF0cml4LXRpdGxlW2FyaWEtZXhwYW5kZWRdOmFmdGVye2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2ltYWdlL3YyL2ltYWdlcy9yYXcvZnRpY29uLXYxOmFycm93LWRvd24/c291cmNlPWlnLXByb2plY3RzJnRpbnQ9JTIzZmZmZmZmLCUyM2ZmZmZmZiZmb3JtYXQ9c3ZnXCIpfX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGJsYWNrLW9uLXdoaXRlKXsuby1mb290ZXItLXRoZW1lLWRhcmsgLm8tZm9vdGVyX19tYXRyaXgtdGl0bGVbYXJpYS1leHBhbmRlZF06YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvaW1hZ2UvdjIvaW1hZ2VzL3Jhdy9mdGljb24tdjE6YXJyb3ctZG93bj9zb3VyY2U9aWctcHJvamVjdHMmdGludD0lMjMwMDAwMDAsJTIzMDAwMDAwJmZvcm1hdD1zdmdcIil9fS5vLWZvb3Rlcl9fbWF0cml4LXRpdGxlW2FyaWEtZXhwYW5kZWQ9dHJ1ZV06YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5vLWZvb3Rlcl9fbWF0cml4LXRpdGxlLS1saW5re292ZXJmbG93OnZpc2libGU7bGluZS1oZWlnaHQ6NDBweDtib3JkZXItdG9wOjFweCBzb2xpZH1AbWVkaWEobWluLXdpZHRoOiA0Ni4yNWVtKXsuby1mb290ZXJfX21hdHJpeC10aXRsZS0tbGlua3tib3JkZXItdG9wOjA7bGluZS1oZWlnaHQ6aW5pdGlhbH19Lm8tZm9vdGVyX19tYXRyaXgtY29udGVudFthcmlhLWhpZGRlbj10cnVlXXtkaXNwbGF5Om5vbmV9Lm8tZm9vdGVyX19tYXRyaXgtY29sdW1ue21hcmdpbi10b3A6MTZweDttYXJnaW4tYm90dG9tOjE2cHh9Lm8tZm9vdGVyX19tYXRyaXgtbGlua3twYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4O2Rpc3BsYXk6YmxvY2t9Lm8tZm9vdGVyX19tYXRyaXgtbGluazpmaXJzdC1jaGlsZHtwYWRkaW5nLXRvcDowfS5vLWZvb3Rlcl9fbWF0cml4LWxpbmstLW1vcmV7ZGlzcGxheTpmbGV4fS5vLWZvb3Rlcl9fbWF0cml4LWxpbmstLW1vcmU6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO2JhY2tncm91bmQtcG9zaXRpb246NTAlO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtiYWNrZ3JvdW5kLWltYWdlOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0aWNvbi12MTphcnJvdy1yaWdodD9zb3VyY2U9aWctcHJvamVjdHMmZm9ybWF0PXN2Z1wiKTtjb250ZW50OlwiXCI7YWxpZ24tc2VsZjpjZW50ZXJ9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5vLWZvb3Rlcl9fbWF0cml4LWxpbmstLW1vcmU6YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvaW1hZ2UvdjIvaW1hZ2VzL3Jhdy9mdGljb24tdjE6YXJyb3ctcmlnaHQ/c291cmNlPWlnLXByb2plY3RzJnRpbnQ9JTIzZmZmZmZmLCUyM2ZmZmZmZiZmb3JtYXQ9c3ZnXCIpfX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGJsYWNrLW9uLXdoaXRlKXsuby1mb290ZXJfX21hdHJpeC1saW5rLS1tb3JlOmFmdGVye2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2ltYWdlL3YyL2ltYWdlcy9yYXcvZnRpY29uLXYxOmFycm93LXJpZ2h0P3NvdXJjZT1pZy1wcm9qZWN0cyZ0aW50PSUyMzAwMDAwMCwlMjMwMDAwMDAmZm9ybWF0PXN2Z1wiKX19Lm8tZm9vdGVyLS10aGVtZS1saWdodHtjb2xvcjojMzMzMDJlO2JhY2tncm91bmQ6I2YyZTVkYX0uby1mb290ZXItLXRoZW1lLWxpZ2h0IC5vLWZvb3Rlcl9fdGl0bGV7Y29sb3I6IzAwMH0uby1mb290ZXItLXRoZW1lLWxpZ2h0IC5vLWZvb3Rlcl9fbWF0cml4LWxpbmstLW1vcmU6YWZ0ZXJ7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtiYWNrZ3JvdW5kLWltYWdlOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0aWNvbi12MTphcnJvdy1yaWdodD9zb3VyY2U9aWctcHJvamVjdHMmdGludD0lMjMzMzMwMkUsJTIzMzMzMDJFJmZvcm1hdD1zdmdcIil9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5vLWZvb3Rlci0tdGhlbWUtbGlnaHQgLm8tZm9vdGVyX19tYXRyaXgtbGluay0tbW9yZTphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0aWNvbi12MTphcnJvdy1yaWdodD9zb3VyY2U9aWctcHJvamVjdHMmdGludD0lMjNmZmZmZmYsJTIzZmZmZmZmJmZvcm1hdD1zdmdcIil9fUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYmxhY2stb24td2hpdGUpey5vLWZvb3Rlci0tdGhlbWUtbGlnaHQgLm8tZm9vdGVyX19tYXRyaXgtbGluay0tbW9yZTphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0aWNvbi12MTphcnJvdy1yaWdodD9zb3VyY2U9aWctcHJvamVjdHMmdGludD0lMjMwMDAwMDAsJTIzMDAwMDAwJmZvcm1hdD1zdmdcIil9fS5vLWZvb3Rlci0tdGhlbWUtbGlnaHQgLm8tZm9vdGVyX19tYXRyaXgtdGl0bGUtLWxpbmssLm8tZm9vdGVyLS10aGVtZS1saWdodCAuby1mb290ZXJfX21hdHJpeC10aXRsZVthcmlhLWV4cGFuZGVkXXtib3JkZXItY29sb3I6I2NjYzFiN30uby1mb290ZXItLXRoZW1lLWxpZ2h0IC5vLWZvb3Rlcl9fbWF0cml4LXRpdGxlIGF7Y29sb3I6IzMzMzAyZX0uby1mb290ZXItLXRoZW1lLWxpZ2h0IGF7Y29sb3I6IzY2NjA1Y30uby1mb290ZXItLXRoZW1lLWxpZ2h0IGE6aG92ZXIsLm8tZm9vdGVyLS10aGVtZS1saWdodCBhOmZvY3Vze2NvbG9yOiMwMDB9Lm8tZm9vdGVyLS10aGVtZS1saWdodCAuby1mb290ZXJfX2NvcHlyaWdodHtjb2xvcjojNjY2MDVjfS5vLWZvb3Rlci0tdGhlbWUtbGlnaHQgLm8tZm9vdGVyX19icmFuZHtjb2xvcjojMzMzMDJlO2JhY2tncm91bmQ6I2NjYzFiN30uby1mb290ZXItLXRoZW1lLWRhcmt7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiMyNjJhMzN9Lm8tZm9vdGVyLS10aGVtZS1kYXJrIC5vLWZvb3Rlcl9fdGl0bGV7Y29sb3I6I2ZmZn0uby1mb290ZXItLXRoZW1lLWRhcmsgLm8tZm9vdGVyX19tYXRyaXgtbGluay0tbW9yZTphZnRlcnt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2ltYWdlL3YyL2ltYWdlcy9yYXcvZnRpY29uLXYxOmFycm93LXJpZ2h0P3NvdXJjZT1pZy1wcm9qZWN0cyZ0aW50PSUyM0ZGRkZGRiwlMjNGRkZGRkYmZm9ybWF0PXN2Z1wiKX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7Lm8tZm9vdGVyLS10aGVtZS1kYXJrIC5vLWZvb3Rlcl9fbWF0cml4LWxpbmstLW1vcmU6YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvaW1hZ2UvdjIvaW1hZ2VzL3Jhdy9mdGljb24tdjE6YXJyb3ctcmlnaHQ/c291cmNlPWlnLXByb2plY3RzJnRpbnQ9JTIzZmZmZmZmLCUyM2ZmZmZmZiZmb3JtYXQ9c3ZnXCIpfX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGJsYWNrLW9uLXdoaXRlKXsuby1mb290ZXItLXRoZW1lLWRhcmsgLm8tZm9vdGVyX19tYXRyaXgtbGluay0tbW9yZTphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0aWNvbi12MTphcnJvdy1yaWdodD9zb3VyY2U9aWctcHJvamVjdHMmdGludD0lMjMwMDAwMDAsJTIzMDAwMDAwJmZvcm1hdD1zdmdcIil9fS5vLWZvb3Rlci0tdGhlbWUtZGFyayAuby1mb290ZXJfX21hdHJpeC10aXRsZS0tbGluaywuby1mb290ZXItLXRoZW1lLWRhcmsgLm8tZm9vdGVyX19tYXRyaXgtdGl0bGVbYXJpYS1leHBhbmRlZF17Ym9yZGVyLWNvbG9yOiM1MTU1NWN9Lm8tZm9vdGVyLS10aGVtZS1kYXJrIC5vLWZvb3Rlcl9fbWF0cml4LXRpdGxlIGF7Y29sb3I6I2ZmZn0uby1mb290ZXItLXRoZW1lLWRhcmsgYXtjb2xvcjojYThhYWFkfS5vLWZvb3Rlci0tdGhlbWUtZGFyayBhOmhvdmVyLC5vLWZvb3Rlci0tdGhlbWUtZGFyayBhOmZvY3Vze2NvbG9yOiNmZmZ9Lm8tZm9vdGVyLS10aGVtZS1kYXJrIC5vLWZvb3Rlcl9fY29weXJpZ2h0e2NvbG9yOiNhOGFhYWR9Lm8tZm9vdGVyLS10aGVtZS1kYXJrIC5vLWZvb3Rlcl9fYnJhbmR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiMwMDB9Lm8tZm9vdGVyLXZpc3VhbGx5LWhpZGRlbntwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMCAwIDAgMCk7Y2xpcC1wYXRoOnBvbHlnb24oMCAwLCAwIDApO21hcmdpbjotMXB4O2JvcmRlcjowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7d2lkdGg6MnB4O2hlaWdodDoycHg7d2hpdGUtc3BhY2U6bm93cmFwfSIsIi8vLyBPdXRwdXQgZGVidWcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRseSBsb2FkZWQgbGF5b3V0cy5cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbGF5b3V0cyAtIE1hcCBvZiBsYXlvdXRzXG5AbWl4aW4gb0dyaWREZWJ1Z0luZm8oJGxheW91dHM6ICRvLWdyaWQtbGF5b3V0cykge1xuXHQvKiEgREVCVUdcblx0ICogTGF5b3V0czpcblx0ICogI3tpbnNwZWN0KCRsYXlvdXRzKX1cblx0ICovXG5cdEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHMoJF9vLWdyaWQtbGF5b3V0LW5hbWVzLCAkby1ncmlkLWxheW91dHMpO1xufVxuXG4vLy8gQWRkIGEgbGF5b3V0IChicmVha3BvaW50KS4gVGhpcyBjYW4gYmUgdXNlZCB0byBhZGQgYSBuZXcgYnJlYWtwb2ludCB0byBhXG4vLy8gcHJvamVjdCwgaW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgbGF5b3V0cyAoUywgTSwgTCwgWEwpLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICBAaW5jbHVkZSBvR3JpZEFkZExheW91dCgkbGF5b3V0LW5hbWU6IFAsICRsYXlvdXQtd2lkdGg6IDYwMHB4KTtcbi8vLyAgQGluY2x1ZGUgb0dyaWRBZGRMYXlvdXQoJGxheW91dC1uYW1lOiBYWEwsICRsYXlvdXQtd2lkdGg6IDE2MDBweCwgJGd1dHRlci13aWR0aDogMzBweCk7XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxheW91dC1uYW1lIC0gTmFtZSBvZiB0aGUgbGF5b3V0IChlLmcuIFMpXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXlvdXQtd2lkdGggLSBMYXlvdXQgd2lkdGggaW4gcHhcbi8vLyBAcGFyYW0ge051bWJlcn0gJGd1dHRlci13aWR0aCBbbnVsbF0gLSBHdXR0ZXIgd2lkdGggaW4gcHhcbkBtaXhpbiBvR3JpZEFkZExheW91dCgkbGF5b3V0LW5hbWUsICRsYXlvdXQtd2lkdGgsICRndXR0ZXItd2lkdGg6IG51bGwpIHtcblx0JHRlbXAtbGF5b3V0czogKCk7XG5cdCR0ZW1wLWd1dHRlcnM6IChkZWZhdWx0OiBvR3JpZEd1dHRlcigpKTtcblxuXHQvLyBBZGQgdGhlIG5ldyBsYXlvdXQgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb246XG5cdC8vICh3ZSB3YW50ICRvLWdyaWQtbGF5b3V0cyBhbmQgJG8tZ3JpZC1ndXR0ZXJzIHRvIGJlIG9yZGVyZWQgZnJvbSB0aGUgc21hbGxlc3QgdG8gdGhlIGxhcmdlc3QgbGF5b3V0KVxuXHRAZm9yICRpbmRleCBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJG8tZ3JpZC1sYXlvdXRzKSB7XG5cdFx0JHByZXZpb3VzLWxheW91dC13aWR0aDogaWYoJGluZGV4ID09IDEsIDAsIG1hcC1nZXQoJG8tZ3JpZC1sYXlvdXRzLCBudGgoJF9vLWdyaWQtbGF5b3V0LW5hbWVzLCAkaW5kZXggLSAxKSkpO1xuXHRcdCRjdXJyZW50LWxheW91dC1uYW1lOiBudGgoJF9vLWdyaWQtbGF5b3V0LW5hbWVzLCAkaW5kZXgpO1xuXHRcdCRjdXJyZW50LWxheW91dC13aWR0aDogbWFwLWdldCgkby1ncmlkLWxheW91dHMsICRjdXJyZW50LWxheW91dC1uYW1lKTtcblxuXHRcdCRjdXJyZW50LWd1dHRlci13aWR0aDogbWFwLWdldCgkby1ncmlkLWd1dHRlcnMsICRjdXJyZW50LWxheW91dC1uYW1lKTtcblxuXHRcdC8vIEFzc3VtZXMgYWxsIGxheW91dHMgdXNlIHRoZSBzYW1lIHVuaXQgZS5nLiBweCBvciByZW0gKGFzIGRvZXMgdGhlIEphdmFTY3JpcHQpXG5cdFx0QGlmIG5vdCAoJHByZXZpb3VzLWxheW91dC13aWR0aCA+ICRsYXlvdXQtd2lkdGggb3IgJGN1cnJlbnQtbGF5b3V0LXdpZHRoIDwgJGxheW91dC13aWR0aCkge1xuXHRcdFx0JHRlbXAtbGF5b3V0czogbWFwLW1lcmdlKCR0ZW1wLWxheW91dHMsICgkbGF5b3V0LW5hbWU6ICRsYXlvdXQtd2lkdGgpKTtcblx0XHRcdCR0ZW1wLWd1dHRlcnM6IG1hcC1tZXJnZSgkdGVtcC1ndXR0ZXJzLCAoJGxheW91dC1uYW1lOiAkZ3V0dGVyLXdpZHRoKSk7XG5cdFx0fVxuXG5cdFx0JHRlbXAtbGF5b3V0czogbWFwLW1lcmdlKCR0ZW1wLWxheW91dHMsICgkY3VycmVudC1sYXlvdXQtbmFtZTogJGN1cnJlbnQtbGF5b3V0LXdpZHRoKSk7XG5cblx0XHRAaWYgJGN1cnJlbnQtZ3V0dGVyLXdpZHRoIHtcblx0XHRcdCR0ZW1wLWd1dHRlcnM6IG1hcC1tZXJnZSgkdGVtcC1ndXR0ZXJzLCAoJGN1cnJlbnQtbGF5b3V0LW5hbWU6ICRjdXJyZW50LWd1dHRlci13aWR0aCkpO1xuXHRcdH1cblx0fVxuXHQkby1ncmlkLWxheW91dHM6ICR0ZW1wLWxheW91dHMgIWdsb2JhbDtcblx0JF9vLWdyaWQtbGF5b3V0LW5hbWVzOiBtYXAta2V5cygkby1ncmlkLWxheW91dHMpICFnbG9iYWw7XG5cblx0QGlmICRndXR0ZXItd2lkdGgge1xuXHRcdCRvLWdyaWQtZ3V0dGVyczogJHRlbXAtZ3V0dGVycyAhZ2xvYmFsO1xuXHR9XG5cblx0JF9vLWdyaWQtbWF4LXdpZHRoOiBtYXAtZ2V0KCRvLWdyaWQtbGF5b3V0cywgbnRoKCRfby1ncmlkLWxheW91dC1uYW1lcywgLTEpKSAhZ2xvYmFsO1xufVxuXG4vLy8gQXBwbHkgc3R5bGVzIGF0IGEgZ2l2ZW4gbGF5b3V0IHNpemUgKGJyZWFrcG9pbnQpIGFzIHRoZSBncmlkLiBJdCBzaG91bGQgYmVcbi8vIHBhc3NlZCBvbmUgb2YgJG8tZ3JpZC1sYXlvdXRzIGUuZy4gYFNgLCBgTWAsIGV0Yy4uLiBkZXBlbmRpbmcgb24gd2hpY2ggbGF5b3V0XG4vLyBzaXplIHRoZSBzdHlsZSBzaG91bGQgYXBwbHkgYXQuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vICAvLyBUdXJuIHRoZSBjb2xvciBvZiBhbiBlbGVtZW50IHJlZCBhdCBtZWRpdW0gbGF5b3V0IHNpemUgYW5kIHVwXG4vLy8gIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKE0pIHtcbi8vLyAgXHRlbGVtZW50IHtcbi8vLyAgXHRcdGNvbG9yOiByZWQ7XG4vLy8gIFx0fVxuLy8vICB9XG4vLy8gIC8vIFR1cm4gdGhlIGNvbG9yIG9mIGFuIGVsZW1lbnQgYmx1ZSB1bnRpbCBtZWRpdW0gbGF5b3V0XG4vLy8gIGVsZW1lbnQge1xuLy8vICBcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCR1bnRpbDogTSkge1xuLy8vICBcdFx0Y29sb3I6IGJsdWU7XG4vLy8gIFx0fVxuLy8vICB9XG4vLy8gIC8vIFR1cm4gdGhlIGNvbG9yIG9mIGFuIGVsZW1lbnQgZ3JlZW4gZnJvbSBzbWFsbCBsYXlvdXQgdW50aWwgbWVkaXVtIGxheW91dFxuLy8vICBlbGVtZW50IHtcbi8vLyAgXHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogUywgJHVudGlsOiBNKSB7XG4vLy8gIFx0XHRjb2xvcjogZ3JlZW47XG4vLy8gIFx0fVxuLy8vICB9XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gZnJvbSAtIG9uZSBvZiAkby1ncmlkLWxheW91dHNcbi8vLyBAcGFyYW0ge1N0cmluZ30gdW50aWwgLSBvbmUgb2YgJG8tZ3JpZC1sYXlvdXRzXG5AbWl4aW4gb0dyaWRSZXNwb25kVG8oJGZyb206IGZhbHNlLCAkdW50aWw6IGZhbHNlKSB7XG5cblx0JGdyaWQtaXMtcmVzcG9uc2l2ZTogJG8tZ3JpZC1tb2RlICE9ICdmaXhlZCc7XG5cdEBpbmNsdWRlIG1xKFxuXHRcdCRmcm9tOiAkZnJvbSxcblx0XHQkdW50aWw6ICR1bnRpbCxcblx0XHQkcmVzcG9uc2l2ZTogJGdyaWQtaXMtcmVzcG9uc2l2ZSxcblx0XHQkYnJlYWtwb2ludHM6ICRvLWdyaWQtbGF5b3V0cyxcblx0XHQkc3RhdGljLWJyZWFrcG9pbnQ6ICRvLWdyaWQtZml4ZWQtbGF5b3V0XG5cdCkge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbi8vLyBCYXNlIGNvbHVtbiBzdHlsZXMgYW5kIHJlc3BvbnNpdmUgbGF5b3V0IHdpZHRoXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIEJsb2NrIGhhcyBjb2x1bW4gc3R5bGVzXG4vLy8gICBlbCB7IEBpbmNsdWRlIG9HcmlkQ29sc3BhbigpOyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIDQtY29sdW1uIHdpZGUgYmxvY2tcbi8vLyAgIGVsIHsgQGluY2x1ZGUgb0dyaWRDb2xzcGFuKDQpOyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIEhhbGYtd2lkdGggYmxvY2tcbi8vLyAgIGVsIHsgQGluY2x1ZGUgb0dyaWRDb2xzcGFuKDEvMik7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgQmxvY2sgaXMgZnVsbC13aWR0aCBieSBkZWZhdWx0LCA4LWNvbHVtbiB3aWRlIG9uIE1lZGl1bSBsYXlvdXRzIGFuZCBoaWRkZW4gb24gTGFyZ2UgbGF5b3V0c1xuLy8vICAgZWwgeyBAaW5jbHVkZSBvR3JpZENvbHNwYW4oKGRlZmF1bHQ6IDEyLCBNOiA4LCBMOiBoaWRlKSk7IH1cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIHwgTWFwfSAkc3BhbiBbbnVsbF1cbkBtaXhpbiBvR3JpZENvbHNwYW4oJHNwYW46IG51bGwsICR3aWR0aC1vbmx5OiBmYWxzZSkge1xuXHRAaWYgbm90ICR3aWR0aC1vbmx5IHtcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdGZsZXg6IDEgMSAwJTtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7IC8vIFJlcXVpcmVkIGZvciBwdXNoIGFuZCBwdWxsXG5cblx0XHRAaWYgJG8tZ3JpZC1tb2RlID09ICdmaXhlZCcge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiBvR3JpZEd1dHRlcigkby1ncmlkLWZpeGVkLWxheW91dCk7XG5cdFx0fSBAZWxzZSB7XG5cdFx0XHRAZWFjaCAkbGF5b3V0LW5hbWUgaW4gbWFwLWtleXMoJG8tZ3JpZC1ndXR0ZXJzKSB7XG5cdFx0XHRcdEBpZiAkbGF5b3V0LW5hbWUgPT0gJ2RlZmF1bHQnIHtcblx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IG9HcmlkR3V0dGVyKCk7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRsYXlvdXQtbmFtZSkge1xuXHRcdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiBvR3JpZEd1dHRlcigkbGF5b3V0LW5hbWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRAaWYgJHNwYW4ge1xuXHRcdEBpbmNsdWRlIF9vR3JpZENvbHVtbldpZHRoKCRzcGFuKTtcblx0fVxufVxuXG4vLy8gR3JpZCBjb250YWluZXJcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZ3JpZC1tb2RlIFskby1ncmlkLW1vZGVdXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkYmxlZWQgW2ZhbHNlXVxuQG1peGluIG9HcmlkQ29udGFpbmVyKCRncmlkLW1vZGU6ICRvLWdyaWQtbW9kZSwgJGJsZWVkOiBmYWxzZSkge1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRtYXJnaW4tbGVmdDogYXV0bztcblx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRtaW4td2lkdGg6ICRvLWdyaWQtbWluLXdpZHRoO1xuXHQvLyBPbGRlciBicm93c2VycyBnZXQgYSBmaXhlZC13aWR0aCBsYXlvdXRcblx0bWF4LXdpZHRoOiBvR3JpZEdldE1heFdpZHRoRm9yTGF5b3V0KCRvLWdyaWQtZml4ZWQtbGF5b3V0KTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdEBpZiAkYmxlZWQge1xuXHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHR9XG5cblx0QGlmICRncmlkLW1vZGUgPT0gJ2ZpeGVkJyB7XG5cdFx0Ly8gSWYgdGhlIGdyaWQgaXNuJ3QgZmx1aWQsIHdlIHNldCBpdCB0byBhIGNlcnRhaW4gd2lkdGhcblx0XHR3aWR0aDogb0dyaWRHZXRNYXhXaWR0aEZvckxheW91dCgkby1ncmlkLWZpeGVkLWxheW91dCwgJGdyaWQtbW9kZTogJ2ZpeGVkJyk7XG5cdFx0QGlmIG5vdCAkYmxlZWQge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiBvR3JpZEd1dHRlcigkby1ncmlkLWZpeGVkLWxheW91dCk7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiBvR3JpZEd1dHRlcigkby1ncmlkLWZpeGVkLWxheW91dCk7XG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHRtYXgtd2lkdGg6ICRfby1ncmlkLW1heC13aWR0aDtcblxuXHRcdEBlYWNoICRsYXlvdXQtbmFtZSBpbiBtYXAta2V5cygkby1ncmlkLWd1dHRlcnMpIHtcblx0XHRcdEBpZiAkbGF5b3V0LW5hbWUgPT0gJ2RlZmF1bHQnIHtcblx0XHRcdFx0QGlmIG5vdCAkYmxlZWQge1xuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDogb0dyaWRHdXR0ZXIoKTtcblx0XHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiBvR3JpZEd1dHRlcigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGxheW91dC1uYW1lKSB7XG5cdFx0XHRcdFx0QGlmIG5vdCAkYmxlZWQge1xuXHRcdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiBvR3JpZEd1dHRlcigkbGF5b3V0LW5hbWUpO1xuXHRcdFx0XHRcdFx0cGFkZGluZy1yaWdodDogb0dyaWRHdXR0ZXIoJGxheW91dC1uYW1lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRAZWFjaCAkbGF5b3V0LW5hbWUgaW4gJF9vLWdyaWQtbGF5b3V0LW5hbWVzIHtcblx0XHRcdEBpZiBpbmRleCgkX28tZ3JpZC1sYXlvdXQtbmFtZXMsICRsYXlvdXQtbmFtZSkgPj0gaW5kZXgoJF9vLWdyaWQtbGF5b3V0LW5hbWVzLCAkby1ncmlkLXN0YXJ0LXNuYXBweS1tb2RlLWF0KSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRsYXlvdXQtbmFtZSkge1xuXHRcdFx0XHRcdEBpZiAkZ3JpZC1tb2RlID09ICdzbmFwcHknIHtcblx0XHRcdFx0XHRcdG1heC13aWR0aDogbWFwLWdldCgkby1ncmlkLWxheW91dHMsICRsYXlvdXQtbmFtZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdEBpZiAkZ3JpZC1tb2RlID09ICdmbHVpZCcge1xuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIGdyaWQgbW9kZSBpcyBmbHVpZCwgdGhlbiB1c2UgYSBjbGFzcyB0byBtYWtlIGEgcm93IG9yIGEgc2V0IG9mIHJvd3Mgc25hcHB5XG5cdFx0XHRcdFx0XHQuby1ncmlkLXNuYXBweSAmLFxuXHRcdFx0XHRcdFx0Ji0tc25hcHB5IHtcblx0XHRcdFx0XHRcdFx0bWF4LXdpZHRoOiBtYXAtZ2V0KCRvLWdyaWQtbGF5b3V0cywgJGxheW91dC1uYW1lKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy8vIEJhc2Ugcm93IHN0eWxlc1xuQG1peGluIG9HcmlkUm93IHtcblx0Y2xlYXI6IGJvdGg7XG5cdGZsZXgtd3JhcDogd3JhcDsgLy8gTm90ZSB0aGF0IHRoaXMgYnJlYWtzIGluIG9sZCBGaXJlZm94XG5cdGRpc3BsYXk6IGZsZXg7XG5cblx0QG1lZGlhIHByaW50IHtcblx0XHRkaXNwbGF5OiBpbmhlcml0O1xuXHR9XG5cblx0QGlmICRvLWdyaWQtbW9kZSA9PSAnZml4ZWQnIHtcblx0XHRtYXJnaW4tbGVmdDogLTEgKiBvR3JpZEd1dHRlcigkby1ncmlkLWZpeGVkLWxheW91dCk7XG5cdH0gQGVsc2Uge1xuXHRcdEBlYWNoICRsYXlvdXQtbmFtZSBpbiBtYXAta2V5cygkby1ncmlkLWd1dHRlcnMpIHtcblx0XHRcdEBpZiAkbGF5b3V0LW5hbWUgPT0gJ2RlZmF1bHQnIHtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IC0xICogb0dyaWRHdXR0ZXIoKTtcblx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkbGF5b3V0LW5hbWUpIHtcblx0XHRcdFx0XHRtYXJnaW4tbGVmdDogLTEgKiBvR3JpZEd1dHRlcigkbGF5b3V0LW5hbWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2xlYXJmaXggZm9yIElFOSBhbmQgYmVsb3dcblx0em9vbTogMTtcblxuXHQmOmJlZm9yZSxcblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogJyc7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdFx0ZGlzcGxheTogZmxleDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1ibG9jay1uby1kdXBsaWNhdGUtcHJvcGVydGllc1xuXHR9XG5cdCY6YWZ0ZXIge1xuXHRcdGNsZWFyOiBib3RoO1xuXHR9XG59XG5cbi8vLyBSZW1vdmUgZ3V0dGVycyBmcm9tIGNvbHVtbnMgaW4gYSByb3dcbi8vL1xuLy8vIEBwYXJhbSB7c3RyaW5nfSAkY29sdW1uLXNlbGVjdG9yIFtcIltvLWdyaWQtY29sc3Bhbl1cIl0gLSBDU1Mgc2VsZWN0b3IgZm9yIHJvdyBlbGVtZW50XG5AbWl4aW4gb0dyaWRSb3dDb21wYWN0KCRjb2x1bW4tc2VsZWN0b3I6IFwiW28tZ3JpZC1jb2xzcGFuXVwiKSB7XG5cdG1hcmdpbi1sZWZ0OiAwO1xuXG5cdD4gI3t1bnF1b3RlKCRjb2x1bW4tc2VsZWN0b3IpfSB7XG5cdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHR9XG59XG5cbi8vLyBSZW1vdmUgcm93IHN0eWxlc1xuQG1peGluIG9HcmlkUmVzZXRSb3cge1xuXHRjbGVhcjogbm9uZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGZsZXgtd3JhcDogbm93cmFwO1xuXHRtYXJnaW4tbGVmdDogMDtcblxuXHQmOmJlZm9yZSxcblx0JjphZnRlciB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufVxuXG4vLy8gQ2VudGVyIGNvbHVtblxuQG1peGluIG9HcmlkQ2VudGVyIHtcblx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdG1hcmdpbi1yaWdodDogYXV0bztcblx0ZmxvYXQ6IG5vbmU7XG59XG5cbi8vLyBVbmNlbnRlciBjb2x1bW5cbkBtaXhpbiBvR3JpZFVuY2VudGVyIHtcblx0bWFyZ2luLWxlZnQ6IDA7XG5cdG1hcmdpbi1yaWdodDogMDtcblx0ZmxvYXQ6IGxlZnQ7XG59XG5cbi8vLyBSZW1vdmUgY29sdW1uIHN0eWxlc1xuQG1peGluIG9HcmlkUmVzZXRDb2x1bW4ge1xuXHRwYWRkaW5nLWxlZnQ6IDA7XG5cdHBhZGRpbmctcmlnaHQ6IDA7XG5cdGZsb2F0OiBub25lO1xuXHR3aWR0aDogYXV0bztcblx0bWluLXdpZHRoOiAwO1xuXHRtYXgtd2lkdGg6IG5vbmU7XG5cdGZsZXg6IG5vbmU7XG59XG5cbi8vLyBSZW9yZGVyIHZpc3VhbGx5OiBwdWxsXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnNcbkBtaXhpbiBvR3JpZFB1bGwoJGNvbHVtbnMpIHtcblx0cmlnaHQ6IG9HcmlkQ29sc3BhbigkY29sdW1ucyk7XG5cdGxlZnQ6IGF1dG87XG59XG5cbi8vLyBSZW9yZGVyIHZpc3VhbGx5OiBwdXNoXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnNcbkBtaXhpbiBvR3JpZFB1c2goJGNvbHVtbnMpIHtcblx0bGVmdDogb0dyaWRDb2xzcGFuKCRjb2x1bW5zKTtcblx0cmlnaHQ6IGF1dG87XG59XG5cbi8vLyBPZmZzZXQ6IGFkZCBzcGFjZSBiZWZvcmUgYSBjb2x1bW5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1uc1xuQG1peGluIG9HcmlkT2Zmc2V0KCRjb2x1bW5zKSB7XG5cdG1hcmdpbi1sZWZ0OiBvR3JpZENvbHNwYW4oJGNvbHVtbnMpO1xufVxuXG4vLy8gU3VyZmFjZSB0aGUgbGF5b3V0IGN1cnJlbnRseSBkaXNwbGF5ZWQgdG8gbWFrZSBpdCByZWFkYWJsZSBpbiBKUy5cbi8vL1xuLy8vIEBleGFtcGxlIGpzXG4vLy8gIC8vIHlvdXItYXBwL21haW4uanNcbi8vLyAgLy8gUmV0dXJuIHRoZSBjdXJyZW50IGxheW91dCAoZS5nLiBkZWZhdWx0LCBTLCBNLCBMLCBYTClcbi8vLyAgaW1wb3J0IG9HcmlkIGZyb20gJ28tZ3JpZCc7XG4vLy8gIGxldCBjdXJyZW50TGF5b3V0ID0gb0dyaWQuZ2V0Q3VycmVudExheW91dCgpO1xuLy8vICBjb25zb2xlLmxvZyhjdXJyZW50TGF5b3V0KTtcbi8vL1xuLy8vICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgZ3V0dGVyIChlLmcuIDEwcHgsIDIwcHgpXG4vLy8gIGltcG9ydCBvR3JpZCBmcm9tICdvLWdyaWQnO1xuLy8vICBsZXQgY3VycmVudEd1dHRlciA9IG9HcmlkLmdldEN1cnJlbnRHdXR0ZXIoKTtcbi8vLyAgY29uc29sZS5sb2coY3VycmVudEd1dHRlcik7XG5AbWl4aW4gb0dyaWRTdXJmYWNlQ3VycmVudExheW91dCB7XG5cdGh0bWw6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6ICd7IFwibGF5b3V0XCI6IFwiZGVmYXVsdFwiLCBcImd1dHRlclwiOiBcIicgKyBvR3JpZEd1dHRlcigpICsgJ1wiIH0nO1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cblx0XHRAZWFjaCAkYnJlYWtwb2ludCBpbiAkX28tZ3JpZC1sYXlvdXQtbmFtZXMge1xuXHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGJyZWFrcG9pbnQpIHtcblx0XHRcdFx0Y29udGVudDogJ3sgXCJsYXlvdXRcIjogXCInICsgJGJyZWFrcG9pbnQgKyAnXCIsIFwiZ3V0dGVyXCI6IFwiJyArIG9HcmlkR3V0dGVyKCRicmVha3BvaW50KSArICdcIiB9Jztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy8vIEZpeCBhIGJ1ZyBpbiBTYWZhcmkgd2hlcmUgaXRlbXMgd291bGRuJ3Qgd3JhcCBwcm9wZXJseVxuLy8vIFJlbW92ZSB3aGVuIFNhZmFyaSAxMCBzdXBwb3J0IGlzIG5vIGxvbmdlciByZXF1aXJlZC5cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vcGhpbGlwd2FsdG9uL2ZsZXhidWdzIzExLW1pbi1hbmQtbWF4LXNpemUtZGVjbGFyYXRpb25zLWFyZS1pZ25vcmVkLXdoZW4td3JhcHBpbmctZmxleC1pdGVtc1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vR3JpZEZpeFNhZmFyaVdyYXAoJGFyZ3MuLi4pIHtcblx0ZmxleC1iYXNpczogb0dyaWRDb2xzcGFuKCRhcmdzLi4uKTtcbn1cblxuLy8vIFN1cmZhY2UgdGhlIHByb2plY3RzIGxheW91dHMgKGJyZWFrcG9pbnRzKSB0byBtYWtlIGl0IHJlYWRhYmxlIGluIEpTLlxuLy8vXG4vLy8gQGV4YW1wbGUganNcbi8vLyAgLy8geW91ci1hcHAvbWFpbi5qc1xuLy8vICAvLyBSZXR1cm4gdGhlIGxheW91dHMgKGUuZy4ge1wibGF5b3V0c1wiOiB7XCJTXCI6IFwiNDkwcHhcIixcIk1cIjogXCI3NDBweFwiLFwiTFwiOiBcIjk4MHB4XCIsXCJYTFwiOiBcIjEyMjBweFwifX0pXG4vLy8gIGltcG9ydCBvR3JpZCBmcm9tICdvLWdyaWQnO1xuLy8vICBsZXQgYnJlYWtwb2ludHMgPSBvR3JpZC5nZXRHcmlkQnJlYWtwb2ludHMoKTtcbi8vLyAgY29uc29sZS5sb2coYnJlYWtwb2ludHMpO1xuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbkBtaXhpbiBvR3JpZFN1cmZhY2VMYXlvdXRTaXplcyB7XG5cdGh0bWw6YmVmb3JlIHtcblx0XHQkY29tYmluZWQ6ICd7XCJsYXlvdXRzXCI6IHsnO1xuXG5cdFx0JGtleXM6IG1hcC1rZXlzKCRvLWdyaWQtbGF5b3V0cyk7XG5cblx0XHRAZm9yICRpdHRyIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgka2V5cykge1xuXHRcdFx0JGtleTogbnRoKCRrZXlzLCAkaXR0cik7XG5cdFx0XHQkdmFsdWU6IG1hcC1nZXQoJG8tZ3JpZC1sYXlvdXRzLCAka2V5KTtcblxuXHRcdFx0JGNvbWJpbmVkOiAkY29tYmluZWQgKyBfb0dyaWRRdW90ZVN0cmluZygka2V5KSArICc6ICcgKyBfb0dyaWRRdW90ZVN0cmluZygkdmFsdWUpO1xuXG5cdFx0XHRAaWYgJGl0dHIgPCBsZW5ndGgoJGtleXMpIHtcblx0XHRcdFx0JGNvbWJpbmVkOiAkY29tYmluZWQgKyBcIiwgXCI7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0JGNvbWJpbmVkOiAkY29tYmluZWQgKyAnfX0nO1xuXG5cdFx0ZGlzcGxheTogbm9uZTtcblx0XHRjb250ZW50OiAkY29tYmluZWQ7XG5cdH1cbn1cblxuLy8vIEh1bWFuIGZyaWVuZGx5IG5hbWVzIGZvciBwb3J0aW9ucyBhbmQgY2VudGVyaW5nOlxuLy8vXG4vLy8gLSBoaWRlXG4vLy8gLSBmdWxsLXdpZHRoXG4vLy8gLSBvbmUtaGFsZlxuLy8vIC0gb25lLXRoaXJkXG4vLy8gLSB0d28tdGhpcmRzXG4vLy8gLSBvbmUtcXVhcnRlclxuLy8vIC0gdGhyZWUtcXVhcnRlcnNcbi8vLyAtIGNlbnRlclxuLy8vIC0gdW5jZW50ZXJcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRsYXlvdXQtbmFtZSBbbnVsbF1cbkBtaXhpbiBfb0dyaWRIdW1hbkZyaWVuZGx5Q29sdW1ucygkbGF5b3V0LW5hbWU6IG51bGwpIHtcblx0W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiI3skbGF5b3V0LW5hbWV9aGlkZVwiXSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC8vIENlbnRlciBhbmQgdW4tY2VudGVyXG5cdFtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIiN7JGxheW91dC1uYW1lfWNlbnRlclwiXSB7XG5cdFx0QGluY2x1ZGUgb0dyaWRDZW50ZXI7XG5cdH1cblx0Ly8gU2luY2Ugd3JpdGluZyBbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCJ1bmNlbnRlclwiXSB3b3VsZG4ndCBtYWtlIG11Y2ggc2Vuc2Vcblx0Ly8gd2Ugb25seSBhbGxvdyBcInVuY2VudGVyXCIgY29tYmluZWQgd2l0aCBhIGxheW91dCAoZS5nLiBYTHVuY2VudGVyKVxuXHRAaWYgJGxheW91dC1uYW1lICE9IG51bGwge1xuXHRcdFtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIiN7JGxheW91dC1uYW1lfXVuY2VudGVyXCJdIHtcblx0XHRcdEBpbmNsdWRlIG9HcmlkVW5jZW50ZXI7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUG9ydGlvbnNcblx0QGVhY2ggJGh1bWFuLWZyaWVuZGx5LW5hbWUgaW4gKGZ1bGwtd2lkdGgsIG9uZS1oYWxmLCBvbmUtdGhpcmQsIHR3by10aGlyZHMsIG9uZS1xdWFydGVyLCB0aHJlZS1xdWFydGVycykge1xuXHRcdFtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIiN7JGxheW91dC1uYW1lfSN7JGh1bWFuLWZyaWVuZGx5LW5hbWV9XCJdIHtcblx0XHRcdC8vIFJlc3RvcmUgdmlzaWJpbGl0eSBmcm9tIGBkaXNwbGF5OiBub25lYFxuXHRcdFx0Ly8gaWYgYGRhdGEtby1ncmlkLWNvbHNwYW5gIHdhcyBzZXQgdG8gYDBgIG9yIGBoaWRlYFxuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cblx0XHRcdC8vIERlZmluZSB3aWR0aCBpbiAlXG5cdFx0XHRAaW5jbHVkZSBfb0dyaWRGaXhTYWZhcmlXcmFwKCRodW1hbi1mcmllbmRseS1uYW1lKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBvcmRlci9vcmRlclxuXHRcdFx0bWluLXdpZHRoOiBvR3JpZENvbHNwYW4oJGh1bWFuLWZyaWVuZGx5LW5hbWUpO1xuXHRcdFx0bWF4LXdpZHRoOiBvR3JpZENvbHNwYW4oJGh1bWFuLWZyaWVuZGx5LW5hbWUpO1xuXHRcdFx0d2lkdGg6IG9HcmlkQ29sc3BhbigkaHVtYW4tZnJpZW5kbHktbmFtZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBTaHVmZmxlIGNvbHVtbnMgYXJvdW5kIHVzaW5nIHB1bGwsIHB1c2ggYW5kIG9mZnNldFxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxheW91dC1uYW1lIFtudWxsXVxuQG1peGluIF9vR3JpZFNodWZmbGVDb2x1bW5zKCRsYXlvdXQtbmFtZTogbnVsbCkge1xuXHRAZm9yICRjb2xzcGFuIGZyb20gMCB0aHJvdWdoICgkby1ncmlkLWNvbHVtbnMgLSAxKSB7XG5cdFx0W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiI3skbGF5b3V0LW5hbWV9cHVzaCN7JGNvbHNwYW59XCJdIHtcblx0XHRcdEBpbmNsdWRlIG9HcmlkUHVzaCgkY29sc3Bhbik7XG5cdFx0fVxuXHRcdFtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIiN7JGxheW91dC1uYW1lfXB1bGwjeyRjb2xzcGFufVwiXSB7XG5cdFx0XHRAaW5jbHVkZSBvR3JpZFB1bGwoJGNvbHNwYW4pO1xuXHRcdH1cblx0XHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX1vZmZzZXQjeyRjb2xzcGFufVwiXSB7XG5cdFx0XHRAaW5jbHVkZSBvR3JpZE9mZnNldCgkY29sc3Bhbik7XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBDcm9zcyBicm93c2VyIGNvbHVtbiB3aWR0aHMgYWNyb3NzIGxheW91dHNcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgZWwgeyBAaW5jbHVkZSBfb0dyaWRDb2x1bW5XaWR0aCg0KTsgfVxuLy8vICAgZWwgeyBAaW5jbHVkZSBfb0dyaWRDb2x1bW5XaWR0aCgxLzIpOyB9XG4vLy8gICBlbCB7IEBpbmNsdWRlIF9vR3JpZENvbHVtbldpZHRoKGhpZGUpOyB9XG4vLy8gICBlbCB7IEBpbmNsdWRlIF9vR3JpZENvbHVtbldpZHRoKChkZWZhdWx0OiAxMiwgTTogOCwgTDogaGlkZSkpOyB9XG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IE1hcH0gJHNwYW5cbkBtaXhpbiBfb0dyaWRDb2x1bW5XaWR0aCgkc3Bhbikge1xuXHQvLyBTcGVjaWFsIGNhc2U6IHRoZSBjb2x1bW4gaXMgaGlkZGVuIGJ5IGRlZmF1bHRcblx0QGlmICRzcGFuID09ICdoaWRlJyB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fSBAZWxzZSB7XG5cdFx0Ly8gJHNwYW4gaXMgYSBudW1iZXIgb3IgYSBrZXl3b3JkLCBzbyB3ZSdyZSBvdXRwdXR0aW5nIHRoZSBkZWZhdWx0IHdpZHRoIGZvciB0aGF0IGNvbHVtblxuXHRcdEBpZiB0eXBlLW9mKCRzcGFuKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkc3BhbikgPT0gc3RyaW5nIHtcblxuXHRcdFx0Ly8gUmVzdG9yZSB2aXNpYmlsaXR5IGZyb20gYGRpc3BsYXk6IG5vbmVgXG5cdFx0XHQvLyBpZiBgZGF0YS1vLWdyaWQtY29sc3BhbmAgd2FzIHNldCB0byBgMGAgb3IgYGhpZGVgXG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblxuXHRcdFx0Ly8gRGVmaW5lIHdpZHRoIGluICVcblx0XHRcdEBpbmNsdWRlIF9vR3JpZEZpeFNhZmFyaVdyYXAoJHNwYW4pOyAvL3N0eWxlbGludC1kaXNhYmxlLWxpbmUgb3JkZXIvb3JkZXJcblx0XHRcdG1pbi13aWR0aDogb0dyaWRDb2xzcGFuKCRzcGFuKTtcblx0XHRcdG1heC13aWR0aDogb0dyaWRDb2xzcGFuKCRzcGFuKTtcblx0XHR9XG5cdH1cblxuXHQvLyAkc3BhbiBpcyBhIG1hcCwgd2UncmUgbG9vcGluZyB0aHJvdWdoIGFsbCBvZiB0aGUgbGF5b3V0c1xuXHRAaWYgdHlwZS1vZigkc3BhbikgPT0gbWFwIHtcblx0XHRAZWFjaCAkbGF5b3V0LW5hbWUsICRsYXlvdXQtc3BhbiBpbiAkc3BhbiB7XG5cdFx0XHRAaWYgJGxheW91dC1uYW1lID09ICdkZWZhdWx0JyB7XG5cdFx0XHRcdEBpbmNsdWRlIF9vR3JpZENvbHVtbldpZHRoKCRsYXlvdXQtc3Bhbik7XG5cdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0QGlmICRsYXlvdXQtc3BhbiA9PSAnaGlkZScge1xuXHRcdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRsYXlvdXQtbmFtZSkge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRsYXlvdXQtbmFtZSkge1xuXHRcdFx0XHRcdFx0Ly8gUmVzdG9yZSB2aXNpYmlsaXR5IGZyb20gYGRpc3BsYXk6IG5vbmVgXG5cdFx0XHRcdFx0XHQvLyBpZiBgZGF0YS1vLWdyaWQtY29sc3BhbmAgd2FzIHNldCB0byBgMGAgb3IgYGhpZGVgXG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHRcdC8vIERlZmluZSB3aWR0aCBpbiAlXG5cdFx0XHRcdFx0XHRAaW5jbHVkZSBfb0dyaWRGaXhTYWZhcmlXcmFwKCRsYXlvdXQtc3Bhbik7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgb3JkZXIvb3JkZXJcblx0XHRcdFx0XHRcdG1pbi13aWR0aDogb0dyaWRDb2xzcGFuKCRsYXlvdXQtc3Bhbik7XG5cdFx0XHRcdFx0XHRtYXgtd2lkdGg6IG9HcmlkQ29sc3BhbigkbGF5b3V0LXNwYW4pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiOyAvLyBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBSdWJ5IGxvY2FsZSBpcyBub3Qgc2V0IHByb3Blcmx5XG4gICAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9wdWxsLzEwXG5cbkBpbXBvcnQgXCJAZmluYW5jaWFsLXRpbWVzL21hdGhcIjtcblxuLy8vIEJhc2UgZm9udCBzaXplIG9uIHRoZSBgPGJvZHk+YCBlbGVtZW50XG4vLy9cbi8vLyBEbyBub3Qgb3ZlcnJpZGUgdGhpcyB2YWx1ZSwgb3IgdGhpbmdzIHdpbGwgYnJlYWtcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMlxuLy8vIEBkZXByZWNhdGVkIFRoaXMgc2V0dGluZyB3aWxsIGJlIHJlbW92ZWQgaW4gc2Fzcy1tcSB2Ni4wLjBcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAdHlwZSBOdW1iZXIgKHVuaXQpXG4kbXEtYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vLyBSZXNwb25zaXZlIG1vZGVcbi8vL1xuLy8vIFNldCB0byBgZmFsc2VgIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IEBtZWRpYSBxdWVyaWVzLFxuLy8vIChJRSA8PSA4LCBGaXJlZm94IDw9IDMsIE9wZXJhIDw9IDkpXG4vLy9cbi8vLyBZb3UgY291bGQgY3JlYXRlIGEgc3R5bGVzaGVldCBzZXJ2ZWQgZXhjbHVzaXZlbHkgdG8gb2xkZXIgYnJvd3NlcnMsXG4vLy8gd2hlcmUgQG1lZGlhIHF1ZXJpZXMgYXJlIHJhc3Rlcml6ZWRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gb2xkLWllLnNjc3Ncbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBCb29sZWFuXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb2ZmIERpc2FibGVkIHJlc3BvbnNpdmUgbW9kZSBkb2N1bWVudGF0aW9uXG4kbXEtcmVzcG9uc2l2ZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJyZWFrcG9pbnQgbGlzdFxuLy8vXG4vLy8gTmFtZSB5b3VyIGJyZWFrcG9pbnRzIGluIGEgd2F5IHRoYXQgY3JlYXRlcyBhIHViaXF1aXRvdXMgbGFuZ3VhZ2Vcbi8vLyBhY3Jvc3MgdGVhbSBtZW1iZXJzLiBJdCB3aWxsIGltcHJvdmUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuXG4vLy8gc3Rha2Vob2xkZXJzLCBkZXNpZ25lcnMsIGRldmVsb3BlcnMsIGFuZCB0ZXN0ZXJzLlxuLy8vXG4vLy8gQHR5cGUgTWFwXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtYnJlYWtwb2ludHM6IChcbiAgICBtb2JpbGU6ICAzMjBweCxcbiAgICB0YWJsZXQ6ICA3NDBweCxcbiAgICBkZXNrdG9wOiA5ODBweCxcbiAgICB3aWRlOiAgICAxMzAwcHhcbikgIWRlZmF1bHQ7XG5cbi8vLyBTdGF0aWMgYnJlYWtwb2ludCAoZm9yIGZpeGVkLXdpZHRoIGxheW91dHMpXG4vLy9cbi8vLyBEZWZpbmUgdGhlIGJyZWFrcG9pbnQgZnJvbSAkbXEtYnJlYWtwb2ludHMgdGhhdCBzaG91bGRcbi8vLyBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgd2lkdGggZm9yIHRoZSBmaXhlZC13aWR0aCBsYXlvdXRcbi8vLyAoaS5lLiB3aGVuICRtcS1yZXNwb25zaXZlIGlzIHNldCB0byAnZmFsc2UnKSBpbiBhIG9sZC1pZS5zY3NzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIHRhYmxldC1vbmx5LnNjc3Ncbi8vLyAgLy9cbi8vLyAgLy8gSWdub3JlIGFsbCBzdHlsZXMgYWJvdmUgdGFibGV0IGJyZWFrcG9pbnQsXG4vLy8gIC8vIGFuZCBmaXggdGhlIHN0eWxlcyAoc3VjaCBhcyB0aGUgbGF5b3V0KSBhdCB0YWJsZXQgd2lkdGhcbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICAkbXEtc3RhdGljLWJyZWFrcG9pbnQ6IHRhYmxldDtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gdGFibGV0XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNhZGRpbmctY3VzdG9tLWJyZWFrcG9pbnRzIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1zdGF0aWMtYnJlYWtwb2ludDogZGVza3RvcCAhZGVmYXVsdDtcblxuLy8vIFNob3cgYnJlYWtwb2ludHMgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vL1xuLy8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXG4vLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGguIEZvciBleGFtcGxlOiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgJG1xLXNob3ctYnJlYWtwb2ludHM6IChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCk7XG4vLy8gICBAaW1wb3J0ICdwYXRoL3RvL21xJztcbi8vL1xuLy8vIEB0eXBlIG1hcFxuJG1xLXNob3ctYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuXG4vLy8gQ3VzdG9taXplIHRoZSBtZWRpYSB0eXBlIChmb3IgZXhhbXBsZTogYEBtZWRpYSBzY3JlZW5gIG9yIGBAbWVkaWEgcHJpbnRgKVxuLy8vIEJ5IGRlZmF1bHQgc2Fzcy1tcSB1c2VzIGFuIFwiYWxsXCIgbWVkaWEgdHlwZSAoYEBtZWRpYSBhbGwgYW5kIOKApmApXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2NoYW5naW5nLW1lZGlhLXR5cGUgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLW1lZGlhLXR5cGU6IGFsbCAhZGVmYXVsdDtcblxuLy8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRweCAtIHZhbHVlIHRvIGNvbnZlcnRcbi8vLyBAaWdub3JlIEBwYXJhbSB7TnVtYmVyfSAkYmFzZS1mb250LXNpemUgWyRtcS1iYXNlLWZvbnQtc2l6ZV0gLSBgPGJvZHk+YCBmb250IHNpemUgKGRlcHJlY2F0ZWQpXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICRmb250LXNpemUtaW4tZW1zOiBtcS1weDJlbSgxNnB4KTtcbi8vLyAgcCB7IGZvbnQtc2l6ZTogbXEtcHgyZW0oMTZweCk7IH1cbi8vL1xuLy8vIEByZXF1aXJlcyAkbXEtYmFzZS1mb250LXNpemVcbi8vLyBAcmV0dXJucyB7TnVtYmVyfVxuQGZ1bmN0aW9uIG1xLXB4MmVtKCRweCwgJGJhc2UtZm9udC1zaXplOiAkbXEtYmFzZS1mb250LXNpemUpIHtcbiAgICBAaWYgKCRtcS1iYXNlLWZvbnQtc2l6ZSAhPSAxNnB4KSB7XG4gICAgICAgIEB3YXJuIFwiT3ZlcnJpZGluZyAkbXEtYmFzZS1mb250LXNpemUgd2lsbCBicmVhayB0aGluZ3MsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjIuXCI7XG4gICAgfVxuICAgIEBpZiAoJGJhc2UtZm9udC1zaXplICE9IDE2cHgpIHtcbiAgICAgICAgQHdhcm4gXCJUaGUgJGJhc2UtZm9udC1zaXplIGFyZ3VtZW50IHdpbGwgYmUgcmVtb3ZlZCBpbiBzYXNzLW1xIHY2LjAuMCwgYXMgb3ZlcnJpZGluZyBpdCBicmVha3MgdGhpbmdzLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyLlwiO1xuICAgIH1cbiAgICBAaWYgdW5pdGxlc3MoJHB4KSB7XG4gICAgICAgIEB3YXJuIFwiQXNzdW1pbmcgI3skcHh9IHRvIGJlIGluIHBpeGVscywgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGl0IGludG8gcGl4ZWxzLlwiO1xuICAgICAgICBAcmV0dXJuIG1xLXB4MmVtKCRweCAqIDFweCwgJGJhc2UtZm9udC1zaXplKTtcbiAgICB9IEBlbHNlIGlmIHVuaXQoJHB4KSA9PSBlbSB7XG4gICAgICAgIEByZXR1cm4gJHB4O1xuICAgIH1cbiAgICBAcmV0dXJuIChkaXYoJHB4LCAkYmFzZS1mb250LXNpemUpKSAqIDFlbTtcbn1cblxuLy8vIEdldCBhIGJyZWFrcG9pbnQncyB3aWR0aFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludC4gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkdGFibGV0LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCh0YWJsZXQpO1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoZGVza3RvcCkpIHt9XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFZhbHVlIGluIHBpeGVsc1xuQGZ1bmN0aW9uIG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSB7XG4gICAgICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQHdhcm4gXCJCcmVha3BvaW50ICN7JG5hbWV9IHdhc24ndCBmb3VuZCBpbiAkYnJlYWtwb2ludHMuXCI7XG4gICAgfVxufVxuXG4vLy8gTWVkaWEgUXVlcnkgbWl4aW5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGZyb20gW2ZhbHNlXSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICR1bnRpbCBbZmFsc2VdIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGFuZCBbZmFsc2VdIC0gQWRkaXRpb25hbCBtZWRpYSBxdWVyeSBwYXJhbWV0ZXJzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZWRpYS10eXBlIFskbXEtbWVkaWEtdHlwZV0gLSBNZWRpYSB0eXBlOiBzY3JlZW4sIHByaW504oCmXG4vLy9cbi8vLyBAaWdub3JlIFVuZG9jdW1lbnRlZCBBUEksIGZvciBhZHZhbmNlZCB1c2Ugb25seTpcbi8vLyBAaWdub3JlIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgWyRtcS1icmVha3BvaW50c11cbi8vLyBAaWdub3JlIEBwYXJhbSB7U3RyaW5nfSAkc3RhdGljLWJyZWFrcG9pbnQgWyRtcS1zdGF0aWMtYnJlYWtwb2ludF1cbi8vL1xuLy8vIEBjb250ZW50IHN0eWxpbmcgcnVsZXMsIHdyYXBwZWQgaW50byBhIEBtZWRpYSBxdWVyeSB3aGVuICRyZXNwb25zaXZlIGlzIHRydWVcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1tZWRpYS10eXBlXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtcHgyZW1cbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1nZXQtYnJlYWtwb2ludC13aWR0aFxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb24tZGVmYXVsdCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogbW9iaWxlKSB7XG4vLy8gICAgICBjb2xvcjogcmVkO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkdW50aWw6IHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGJsdWU7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKG1vYmlsZSwgdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogZ3JlZW47XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiB0YWJsZXQsICRhbmQ6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknKSB7XG4vLy8gICAgICBjb2xvcjogdGVhbDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoOTUwcHgpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSh0YWJsZXQsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICAvLyBBZHZhbmNlZCB1c2U6XG4vLy8gICAgJG15LWJyZWFrcG9pbnRzOiAoTDogOTAwcHgsIFhMOiAxMjAwcHgpO1xuLy8vICAgIEBpbmNsdWRlIG1xKEwsICRicmVha3BvaW50czogJG15LWJyZWFrcG9pbnRzLCAkc3RhdGljLWJyZWFrcG9pbnQ6IEwpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgfVxuQG1peGluIG1xKFxuICAgICRmcm9tOiBmYWxzZSxcbiAgICAkdW50aWw6IGZhbHNlLFxuICAgICRhbmQ6IGZhbHNlLFxuICAgICRtZWRpYS10eXBlOiAkbXEtbWVkaWEtdHlwZSxcbiAgICAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cyxcbiAgICAkcmVzcG9uc2l2ZTogJG1xLXJlc3BvbnNpdmUsXG4gICAgJHN0YXRpYy1icmVha3BvaW50OiAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbikge1xuICAgICRtaW4td2lkdGg6IDA7XG4gICAgJG1heC13aWR0aDogMDtcbiAgICAkbWVkaWEtcXVlcnk6ICcnO1xuXG4gICAgLy8gRnJvbTogdGhpcyBicmVha3BvaW50IChpbmNsdXNpdmUpXG4gICAgQGlmICRmcm9tIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGZyb20pID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbSgkZnJvbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJGZyb20sICRicmVha3BvaW50cykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW50aWw6IHRoYXQgYnJlYWtwb2ludCAoZXhjbHVzaXZlKVxuICAgIEBpZiAkdW50aWwge1xuICAgICAgICBAaWYgdHlwZS1vZigkdW50aWwpID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbSgkdW50aWwpO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCR1bnRpbCwgJGJyZWFrcG9pbnRzKSkgLSAuMDFlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBkaXNhYmxlZCwgcmFzdGVyaXplIHRoZSBvdXRwdXQgb3V0c2lkZSBAbWVkaWEgYmxvY2tzXG4gICAgLy8gVGhlIGJyb3dzZXIgd2lsbCByZWx5IG9uIHRoZSBjYXNjYWRlIGl0c2VsZi5cbiAgICBAaWYgJHJlc3BvbnNpdmUgPT0gZmFsc2Uge1xuICAgICAgICAkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzdGF0aWMtYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgJHRhcmdldC13aWR0aDogbXEtcHgyZW0oJHN0YXRpYy1icmVha3BvaW50LXdpZHRoKTtcblxuICAgICAgICAvLyBPdXRwdXQgb25seSBydWxlcyB0aGF0IHN0YXJ0IGF0IG9yIHNwYW4gb3VyIHRhcmdldCB3aWR0aFxuICAgICAgICBAaWYgKFxuICAgICAgICAgICAgJGFuZCA9PSBmYWxzZVxuICAgICAgICAgICAgYW5kICRtaW4td2lkdGggPD0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgYW5kIChcbiAgICAgICAgICAgICAgICAkdW50aWwgPT0gZmFsc2Ugb3IgJG1heC13aWR0aCA+PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBhbmQgJG1lZGlhLXR5cGUgIT0gJ3ByaW50J1xuICAgICAgICApIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIG91dHB1dCBydWxlcyBpbnNpZGUgQG1lZGlhIHF1ZXJpZXNcbiAgICBAZWxzZSB7XG4gICAgICAgIEBpZiAkbWluLXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtaW4td2lkdGg6ICN7JG1pbi13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJG1heC13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWF4LXdpZHRoOiAjeyRtYXgtd2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRhbmQgICAgICAgICAgICB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgI3skYW5kfSc7IH1cblxuICAgICAgICAvLyBSZW1vdmUgdW5uZWNlc3NhcnkgbWVkaWEgcXVlcnkgcHJlZml4ICdhbGwgYW5kICdcbiAgICAgICAgQGlmICgkbWVkaWEtdHlwZSA9PSAnYWxsJyBhbmQgJG1lZGlhLXF1ZXJ5ICE9ICcnKSB7XG4gICAgICAgICAgICAkbWVkaWEtdHlwZTogJyc7XG4gICAgICAgICAgICAkbWVkaWEtcXVlcnk6IHN0ci1zbGljZSh1bnF1b3RlKCRtZWRpYS1xdWVyeSksIDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhICN7JG1lZGlhLXR5cGUgKyAkbWVkaWEtcXVlcnl9IHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLy8gUXVpY2sgc29ydFxuLy8vXG4vLy8gQGF1dGhvciBTYW0gUmljaGFyZHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gTGlzdCB0byBzb3J0XG4vLy8gQHJldHVybnMge0xpc3R9IFNvcnRlZCBMaXN0XG5AZnVuY3Rpb24gX21xLXF1aWNrLXNvcnQoJGxpc3QpIHtcbiAgICAkbGVzczogICgpO1xuICAgICRlcXVhbDogKCk7XG4gICAgJGxhcmdlOiAoKTtcblxuICAgIEBpZiBsZW5ndGgoJGxpc3QpID4gMSB7XG4gICAgICAgICRzZWVkOiBudGgoJGxpc3QsIGNlaWwoZGl2KGxlbmd0aCgkbGlzdCksIDIpKSk7XG5cbiAgICAgICAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgICAgICAgICAgQGlmICgkaXRlbSA9PSAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRlcXVhbDogYXBwZW5kKCRlcXVhbCwgJGl0ZW0pO1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPCAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRsZXNzOiBhcHBlbmQoJGxlc3MsICRpdGVtKTtcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtID4gJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkbGFyZ2U6IGFwcGVuZCgkbGFyZ2UsICRpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEByZXR1cm4gam9pbihqb2luKF9tcS1xdWljay1zb3J0KCRsZXNzKSwgJGVxdWFsKSwgX21xLXF1aWNrLXNvcnQoJGxhcmdlKSk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFNvcnQgYSBtYXAgYnkgdmFsdWVzICh3b3JrcyB3aXRoIG51bWJlcnMgb25seSlcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHNvcnRcbi8vLyBAcmV0dXJucyB7TWFwfSBNYXAgc29ydGVkIGJ5IHZhbHVlXG5AZnVuY3Rpb24gX21xLW1hcC1zb3J0LWJ5LXZhbHVlKCRtYXApIHtcbiAgICAkbWFwLXNvcnRlZDogKCk7XG4gICAgJG1hcC1rZXlzOiBtYXAta2V5cygkbWFwKTtcbiAgICAkbWFwLXZhbHVlczogbWFwLXZhbHVlcygkbWFwKTtcbiAgICAkbWFwLXZhbHVlcy1zb3J0ZWQ6IF9tcS1xdWljay1zb3J0KCRtYXAtdmFsdWVzKTtcblxuICAgIC8vIFJlb3JkZXIga2V5L3ZhbHVlIHBhaXJzIGJhc2VkIG9uIGtleSB2YWx1ZXNcbiAgICBAZWFjaCAkdmFsdWUgaW4gJG1hcC12YWx1ZXMtc29ydGVkIHtcbiAgICAgICAgJGluZGV4OiBpbmRleCgkbWFwLXZhbHVlcywgJHZhbHVlKTtcbiAgICAgICAgJGtleTogbnRoKCRtYXAta2V5cywgJGluZGV4KTtcbiAgICAgICAgJG1hcC1zb3J0ZWQ6IG1hcC1tZXJnZSgkbWFwLXNvcnRlZCwgKCRrZXk6ICR2YWx1ZSkpO1xuXG4gICAgICAgIC8vIFVuc2V0IHRoZSB2YWx1ZSBpbiAkbWFwLXZhbHVlcyB0byBwcmV2ZW50IHRoZSBsb29wXG4gICAgICAgIC8vIGZyb20gZmluZGluZyB0aGUgc2FtZSBpbmRleCB0d2ljZVxuICAgICAgICAkbWFwLXZhbHVlczogc2V0LW50aCgkbWFwLXZhbHVlcywgJGluZGV4LCAwKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRtYXAtc29ydGVkO1xufVxuXG4vLy8gQWRkIGEgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIEBpbmNsdWRlIG1xLWFkZC1icmVha3BvaW50KHR2c2NyZWVuLCAxOTIwcHgpO1xuLy8vICBAaW5jbHVkZSBtcSh0dnNjcmVlbikge31cbkBtaXhpbiBtcS1hZGQtYnJlYWtwb2ludCgkbmFtZSwgJHdpZHRoKSB7XG4gICAgJG5ldy1icmVha3BvaW50OiAoJG5hbWU6ICR3aWR0aCk7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJG1xLWJyZWFrcG9pbnRzLCAkbmV3LWJyZWFrcG9pbnQpICFnbG9iYWw7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1xLWJyZWFrcG9pbnRzKSAhZ2xvYmFsO1xufVxuXG4vLy8gU2hvdyB0aGUgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcCByaWdodCBjb3JuZXIgb2YgdGhlIHZpZXdwb3J0XG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hvdy1icmVha3BvaW50cyBbJG1xLXNob3ctYnJlYWtwb2ludHNdIC0gTGlzdCBvZiBicmVha3BvaW50cyB0byBzaG93IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy8gQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJG1xLWJyZWFrcG9pbnRzXSAtIEJyZWFrcG9pbnQgbmFtZXMgYW5kIHNpemVzXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc2hvdy1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGdsb2JhbCBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xuLy8vXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgY3VzdG9tIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHMoKEwsIFhMKSwgKFM6IDMwMHB4LCBMOiA4MDBweCwgWEw6IDEyMDBweCkpO1xuQG1peGluIG1xLXNob3ctYnJlYWtwb2ludHMoJHNob3ctYnJlYWtwb2ludHM6ICRtcS1zaG93LWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIGJvZHk6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZDRjhFMztcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgY29sb3I6ICNDMDk4NTM7XG4gICAgICAgIGZvbnQ6IHNtYWxsLWNhcHRpb247XG4gICAgICAgIHBhZGRpbmc6IDNweCA2cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHotaW5kZXg6IDEwMDtcblxuICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIGJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkIGJlIHNob3duXG4gICAgICAgIEBlYWNoICRzaG93LWJyZWFrcG9pbnQgaW4gJHNob3ctYnJlYWtwb2ludHMge1xuICAgICAgICAgICAgJHdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIiN7JHNob3ctYnJlYWtwb2ludH0g4omlICN7JHdpZHRofSAoI3ttcS1weDJlbSgkd2lkdGgpfSlcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGlmIGxlbmd0aCgkbXEtc2hvdy1icmVha3BvaW50cykgPiAwIHtcbiAgICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xufVxuIiwiQGltcG9ydCAnQGZpbmFuY2lhbC10aW1lcy9tYXRoJztcbkBpbXBvcnQgXCJAZmluYW5jaWFsLXRpbWVzL28tbm9ybWFsaXNlL21haW5cIjtcbkBpbXBvcnQgXCJAZmluYW5jaWFsLXRpbWVzL28tc3BhY2luZy9tYWluXCI7XG5AaW1wb3J0IFwiQGZpbmFuY2lhbC10aW1lcy9vLWNvbG9ycy9tYWluXCI7XG5AaW1wb3J0IFwiQGZpbmFuY2lhbC10aW1lcy9vLXR5cG9ncmFwaHkvbWFpblwiO1xuQGltcG9ydCBcIkBmaW5hbmNpYWwtdGltZXMvby1pY29ucy9tYWluXCI7XG5AaW1wb3J0IFwiQGZpbmFuY2lhbC10aW1lcy9vLWdyaWQvbWFpblwiO1xuXG5AaW1wb3J0IFwic3JjL3Njc3MvYnJhbmRcIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy92YXJpYWJsZXNcIjtcbkBpbXBvcnQgJ3NyYy9zY3NzL21peGlucyc7XG5cbi8vLyBPdXRwdXQgYWxsIG8tZm9vdGVyIHN0eWxlcyBpbmNsdWRpbmcgYSBuYXZpZ2F0aW9uIG1hdHJpeCwgYW5kIHR3byB0aGVtZXMuXG4vLy9cbi8vLyBAcGFyYW0ge3N0cmluZ30gJG9wdHMgWygndGhlbWVzJzogKCdsaWdodCcsICdkYXJrJyksICdtYXJnaW4nOiA0MHB4LCAnbWF0cml4JzogdHJ1ZSldIC0gYSBtYXAgb2YgZm9vdGVyIG9wdGlvbnMuIEtleXMgaW5jbHVkZSAndGhlbWVzJywgYSBsaXN0IG9mIHRoZW1lcyB0byBzdXBwb3J0IGluY2x1ZGluZyBcImRhcmtcIiBhbmQgXCJsaWdodFwiOyAnbWFyZ2luJywgYSBsZW5ndGggdG8gY3VzdG9taXNlIHRoZSBmb290ZXIncyB0b3AgbWFyZ2luOyBhbmQgJ21hdHJpeCcsIGEgYm9vbGVhbiB2YWx1ZSB3aGV0aGVyIHRvIHN1cHBvcnQgYSBjb21wbGV4IGZvb3RlciB3aXRoIGxhcmdlIG5hdmlnYXRpb24gc3RydWN0dXJlLlxuQG1peGluIG9Gb290ZXIoJG9wdHM6IChcblx0J3RoZW1lcyc6ICgnbGlnaHQnLCAnZGFyaycpLFxuXHQnbWFyZ2luJzogbnVsbCxcblx0J21hdHJpeCc6IHRydWVcbikpIHtcblx0JG1hcmdpbjogbWFwLWdldCgkb3B0cywgJ21hcmdpbicpO1xuXHQkbWFyZ2luOiBpZigkbWFyZ2luLCAkbWFyZ2luLCAoMiAqICRfby1mb290ZXItc3BhY2luZy11bml0KSk7XG5cdCRtYXRyaXg6IG1hcC1nZXQoJG9wdHMsICdtYXRyaXgnKTtcblx0JHRoZW1lczogbWFwLWdldCgkb3B0cywgJ3RoZW1lcycpO1xuXHQkdGhlbWVzOiBpZigkdGhlbWVzLCAkdGhlbWVzLCAoKSk7XG5cblx0Ly9TdXJmYWNlIGxheW91dHMgZm9yIG8tZ3JpZCBKYXZhU2NyaXB0IGhlbHBlciBodHRwczovL2dpdGh1Yi5jb20vRmluYW5jaWFsLVRpbWVzL28tZ3JpZCNnZXRjdXJyZW50bGF5b3V0XG5cdEBpbmNsdWRlIG9HcmlkU3VyZmFjZUN1cnJlbnRMYXlvdXQoKTtcblxuXHQuby1mb290ZXIge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygwKTtcblx0XHRtYXJnaW4tdG9wOiAkbWFyZ2luO1xuXHRcdGxpbmUtaGVpZ2h0OiAkX28tZm9vdGVyLXNwYWNpbmctdW5pdDtcblxuXHRcdGEge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQuby1mb290ZXJfX2NvbnRhaW5lciB7XG5cdFx0QGluY2x1ZGUgb0dyaWRDb250YWluZXIoKTtcblx0XHQvKiBoYWNrIHRvIHN0b3AgdGhlIG1hcmdpbnMgY29sbGFwc2luZyAqL1xuXHRcdHBhZGRpbmctdG9wOiAwLjFweDtcblx0fVxuXG5cdC5vLWZvb3Rlcl9fcm93IHtcblx0XHRtYXJnaW4tdG9wOiAkX28tZm9vdGVyLXNwYWNpbmctdW5pdDtcblx0fVxuXG5cdC5vLWZvb3Rlcl9fbGVnYWwtbGlua3Mge1xuXHRcdHBhZGRpbmctbGVmdDogMHB4O1xuXG5cdFx0YSB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0fVxuXG5cdFx0bGkge1xuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKC0xLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuXHRcdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRjb250ZW50OiAnXFwyMDIyJztcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiBvU3BhY2luZ0J5TmFtZSgnczEnKTtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogb1NwYWNpbmdCeU5hbWUoJ3MxJyk7XG5cdFx0XHR9XG5cdFx0XHQmOmZpcnN0LWNoaWxkOmJlZm9yZSB7XG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5vLWZvb3Rlcl9fY29weXJpZ2h0IHtcblx0XHRtYXJnaW4tdG9wOiAkX28tZm9vdGVyLXNwYWNpbmctdW5pdDtcblx0XHRtYXJnaW4tYm90dG9tOiAkX28tZm9vdGVyLXNwYWNpbmctdW5pdDtcblxuXHRcdGEge1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0fVxuXHR9XG5cblx0Lm8tZm9vdGVyX19icmFuZCB7XG5cdFx0cGFkZGluZy10b3A6IG9TcGFjaW5nQnlOYW1lKCdzNCcpO1xuXHRcdHBhZGRpbmctYm90dG9tOiBvU3BhY2luZ0J5TmFtZSgnczQnKTtcblx0fVxuXG5cdC5vLWZvb3Rlcl9fYnJhbmQtbG9nbyB7XG5cdFx0QGluY2x1ZGUgX29Gb290ZXJCcmFuZEltYWdlKCdicmFuZC1uaWtrZWktdGFnbGluZScsIDIwMCk7XG5cdFx0aGVpZ2h0OiAyMHB4O1xuXHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQ7XG5cdH1cblxuXHRAbWVkaWEgcHJpbnQge1xuXHRcdC5vLWZvb3RlciB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdEBpZiAkbWF0cml4IHtcblx0XHRAaW5jbHVkZSBfb0Zvb3Rlck1hdHJpeCgkdGhlbWVzKTtcblx0fVxuXG5cdC8vIEluY2x1ZGUgdGhlIHRoZW1lc1xuXHRAZWFjaCAkdGhlbWUgaW4gJHRoZW1lcyB7XG5cdFx0QGluY2x1ZGUgX29Gb290ZXJUaGVtZSgkdGhlbWUpO1xuXHR9XG5cblx0Lm8tZm9vdGVyLXZpc3VhbGx5LWhpZGRlbiB7XG5cdFx0QGluY2x1ZGUgb05vcm1hbGlzZVZpc3VhbGx5SGlkZGVuKCk7XG5cdH1cbn1cblxuXG5AaWYgJG8tZm9vdGVyLWlzLXNpbGVudCA9PSBmYWxzZSB7XG5cdEBpbmNsdWRlIG9Gb290ZXIoKTtcblx0JG8tZm9vdGVyLWlzLXNpbGVudDogdHJ1ZSAhZ2xvYmFsO1xufVxuIiwiLy8vIE91dHB1dHMgdHlwb2dyYXBoeSBzdHlsZXMgZm9yIHRoZSBTZXJpZiBmb250LlxuLy8vIEluY2x1ZGluZzogZmFtaWx5LCBzaXplLCBsaW5lLWhlaWdodCwgd2VpZ2h0LCBzdHlsZSwgYW5kIGZvbnQgc2l6ZXNcbi8vLyBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nLlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGEgZm9udC1mYW1pbHkgcHJvcGVydHkgb25seSBmb3IgdGhlIHNlcmlmIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzZXJpZiBmb250LiBTZXQgYSBjdXN0b20gbGluZS1oZWlnaHQgb2YgMS42LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICRsaW5lLWhlaWdodDogMS42KTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtd2VpZ2h0IGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkd2VpZ2h0OiAnYm9sZCcpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC1zdHlsZSBmb3IgdGhlIHNlcmlmIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgc2VyaWYgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgZm9udC1mYW1pbHkuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBzZXJpZiBmb250IHByb3BlcnRpZXMgd2l0aG91dCBzaXplcyBmb3IgdGhlIGZhbGxiYWNrIGZvbnQgKHdpdGhvdXQgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nKS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1wcm9ncmVzc2l2ZTogZmFsc2UpO1xuLy8vXG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkc2NhbGUgW251bGxdIC0gYSBzY2FsZSBudW1iZXIgdG8gb3V0cHV0IGEgZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFtudWxsXSAtIGN1c3RvbSBsaW5lLWhlaWdodCB2YWx1ZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc2NhbGUncyBkZWZhdWx0XG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIG91dHB1dCBhIGZvbnQtd2VpZ2h0IHByb3BlcnR5LCBlLmcuICdib2xkJywgJ3NlbWlib2xkJ1xuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHN0eWxlIFtudWxsXSAtIG91dHB1dCBhIGZvbnQtc3R5bGUgcHJvcGVydHksIGUuZy4gJ2l0YWxpYydcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWZvbnQtZmFtaWx5IFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHRoZSBmb250LWZhbWlseSBwcm9wZXJ0eSBmcm9tIHRoZSBvdXRwdXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVzaXppbmcgdHlwb2dyYXBoeSwgd2hlcmUgdGhlIHNlcmlmIGZvbnQtZmFtaWx5IGlzIGluaGVyaXRlZCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1wcm9ncmVzc2l2ZSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBzdHlsZXMgdXNlZCBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nIChmb250LWZhbWlseSBhbmQgc2l6ZSBmYWxsYmFja3MgZm9yIGxvYWRpbmcgZm9udHMpLlxuQG1peGluIG9UeXBvZ3JhcGh5U2VyaWYoXG5cdCRzY2FsZTogbnVsbCxcblx0JGxpbmUtaGVpZ2h0OiBudWxsLFxuXHQkd2VpZ2h0OiBudWxsLFxuXHQkc3R5bGU6IG51bGwsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlLFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZTogJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmdcbikge1xuXHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb3IoXG5cdFx0JF9vLXR5cG9ncmFwaHktc2VyaWYsXG5cdFx0JHNjYWxlLFxuXHRcdCRsaW5lLWhlaWdodCxcblx0XHQkd2VpZ2h0LFxuXHRcdCRzdHlsZSxcblx0XHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0XHQkaW5jbHVkZS1wcm9ncmVzc2l2ZVxuXHQpO1xufVxuXG4vLy8gT3V0cHV0cyB0eXBvZ3JhcGh5IHN0eWxlcyBmb3IgdGhlIERpc3BsYXkgZm9udC5cbi8vLyBJbmNsdWRpbmc6IGZhbWlseSwgc2l6ZSwgbGluZS1oZWlnaHQsIHdlaWdodCwgc3R5bGUsIGFuZCBmb250IHNpemVzXG4vLy8gZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZy5cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGZvbnQtZmFtaWx5IHByb3BlcnR5IG9ubHkgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBkaXNwbGF5IGZvbnQuIFNldCBhIGN1c3RvbSBsaW5lLWhlaWdodCBvZiAxLjYuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxLCAkbGluZS1oZWlnaHQ6IDEuNik7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXdlaWdodCBmb3IgdGhlIGRpc3BsYXkgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICR3ZWlnaHQ6ICdib2xkJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXN0eWxlIGZvciB0aGUgZGlzcGxheSBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZGlzcGxheSBmb250IHByb3BlcnRpZXMgd2l0aG91dCBmb250LWZhbWlseS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZGlzcGxheSBmb250IHByb3BlcnRpZXMgd2l0aG91dCBzaXplcyBmb3IgdGhlIGZhbGxiYWNrIGZvbnQgKHdpdGhvdXQgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nKS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLXByb2dyZXNzaXZlOiBmYWxzZSk7XG4vLy9cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgZGlzcGxheSBmb250LWZhbWlseSBpcyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudCBlbGVtZW50LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtcHJvZ3Jlc3NpdmUgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgc3R5bGVzIHVzZWQgZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZyAoZm9udC1mYW1pbHkgYW5kIHNpemUgZmFsbGJhY2tzIGZvciBsb2FkaW5nIGZvbnRzKS5cbkBtaXhpbiBvVHlwb2dyYXBoeURpc3BsYXkoXG5cdCRzY2FsZTogbnVsbCxcblx0JGxpbmUtaGVpZ2h0OiBudWxsLFxuXHQkd2VpZ2h0OiBudWxsLFxuXHQkc3R5bGU6IG51bGwsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlLFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZTogJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmdcbikge1xuXHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb3IoXG5cdFx0JF9vLXR5cG9ncmFwaHktZGlzcGxheSxcblx0XHQkc2NhbGUsXG5cdFx0JGxpbmUtaGVpZ2h0LFxuXHRcdCR3ZWlnaHQsXG5cdFx0JHN0eWxlLFxuXHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5LFxuXHRcdCRpbmNsdWRlLXByb2dyZXNzaXZlXG5cdCk7XG59XG5cbi8vLyBPdXRwdXRzIHR5cG9ncmFwaHkgc3R5bGVzIGZvciB0aGUgU2FucyBmb250LlxuLy8vIEluY2x1ZGluZzogZmFtaWx5LCBzaXplLCBsaW5lLWhlaWdodCwgd2VpZ2h0LCBzdHlsZSwgYW5kIGZvbnQgc2l6ZXNcbi8vLyBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nLlxuLy8vXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBmb250LWZhbWlseSBwcm9wZXJ0eSBvbmx5IGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2FucyBmb250LiBTZXQgYSBjdXN0b20gbGluZS1oZWlnaHQgb2YgMS42LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJGxpbmUtaGVpZ2h0OiAxLjYpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC13ZWlnaHQgZm9yIHRoZSBzYW5zIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkd2VpZ2h0OiAnYm9sZCcpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC1zdHlsZSBmb3IgdGhlIHNhbnMgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNhbnMgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgZm9udC1mYW1pbHkuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNhbnMgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgc2l6ZXMgZm9yIHRoZSBmYWxsYmFjayBmb250ICh3aXRob3V0IHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZykuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1wcm9ncmVzc2l2ZTogZmFsc2UpO1xuLy8vXG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkc2NhbGUgW251bGxdIC0gYSBzY2FsZSBudW1iZXIgdG8gb3V0cHV0IGEgZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFtudWxsXSAtIGN1c3RvbSBsaW5lLWhlaWdodCB2YWx1ZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc2NhbGUncyBkZWZhdWx0XG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIG91dHB1dCBhIGZvbnQtd2VpZ2h0IHByb3BlcnR5LCBlLmcuICdib2xkJywgJ3NlbWlib2xkJ1xuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHN0eWxlIFtudWxsXSAtIG91dHB1dCBhIGZvbnQtc3R5bGUgcHJvcGVydHksIGUuZy4gJ2l0YWxpYydcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWZvbnQtZmFtaWx5IFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHRoZSBmb250LWZhbWlseSBwcm9wZXJ0eSBmcm9tIHRoZSBvdXRwdXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVzaXppbmcgdHlwb2dyYXBoeSwgd2hlcmUgdGhlIHNhbnMgZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG5AbWl4aW4gb1R5cG9ncmFwaHlTYW5zKFxuXHQkc2NhbGU6IG51bGwsXG5cdCRsaW5lLWhlaWdodDogbnVsbCxcblx0JHdlaWdodDogbnVsbCxcblx0JHN0eWxlOiBudWxsLFxuXHQkaW5jbHVkZS1mb250LWZhbWlseTogdHJ1ZSxcblx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmU6ICRvLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1sb2FkaW5nXG4pIHtcblx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5Rm9yKFxuXHRcdCRfby10eXBvZ3JhcGh5LXNhbnMsXG5cdFx0JHNjYWxlLFxuXHRcdCRsaW5lLWhlaWdodCxcblx0XHQkd2VpZ2h0LFxuXHRcdCRzdHlsZSxcblx0XHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0XHQkaW5jbHVkZS1wcm9ncmVzc2l2ZVxuXHQpO1xufVxuXG4vLy8gU2V0IGEgY3VzdG9tIGZvbnQuXG4vLy9cbi8vLyBAZXhhbXBsZSBUaGlzIGV4YW1wbGUgc2hvd3Mgc2V0dGluZyBhIGN1c3RvbSBmb250IFwiTXlTYW5zRm9udFwiIGFzIHRoZSBcInNhbnNcIiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXRGb250KCR0eXBlOiAnc2FucycsICRmYW1pbHk6ICdNeVNhbnNGb250LCBzYW5zJyk7XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUgLSBPbmUgb2YgJ3NhbnMnLCAnc2VyaWYnLCBvciAnZGlzcGxheScuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmYW1pbHkgLSBUaGUgZm9udCBmYW1pbHkgdG8gc2V0LlxuQG1peGluIG9UeXBvZ3JhcGh5U2V0Rm9udCgkdHlwZSwgJGZhbWlseSkge1xuXHQkZm9udDogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZhbWlseSk7XG5cdEBpZiBub3Qgb0ZvbnRzVmFyaWFudEV4aXN0cygkZm9udCwgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsKSB7XG5cdFx0QGVycm9yICdDb3VsZCBub3Qgc2V0IHRoZSBmb250IGZhbWlseSBcIiN7JGZhbWlseX1cIiBhcyBcIiN7JGZvbnR9XCIgZG9lcyBub3QgZXhpc3QgaW4gXCJvLWZvbnRzXCIuIElmIHlvdSBhcmUgc2V0dGluZyBhIGN1c3RvbSBmb250LCBmaXJzdCByZWdpc3RlciB5b3VyIGN1c3RvbSBmb250IHdpdGggby1mb250cyAoaHR0cHM6Ly9yZWdpc3RyeS5vcmlnYW1pLmZ0LmNvbS9jb21wb25lbnRzL28tZm9udHMpLic7XG5cdH1cblx0QGlmIG5vdCBpbmRleCgkX28tdHlwb2dyYXBoeS10eXBlcywgJHR5cGUpIHtcblx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBzZXQgZm9udC1mYW1pbHkgXCIjeyRmYW1pbHl9XCIgZm9yIGZhbWlseSBzdHlsZSBcIiN7JHR5cGV9XCIsIGZhbWlseSBzdHlsZSBtdXN0IGJlIG9uZSBvZiBcIiN7JF9vLXR5cG9ncmFwaHktdHlwZXN9XCIuJztcblx0fVxuXHQvLyBTZXQgdGhlIGN1c3RvbSBmb250LlxuXHRAaWYgJHR5cGUgPT0gJ3NhbnMnIHtcblx0XHQkX28tdHlwb2dyYXBoeS1zYW5zOiAkZmFtaWx5ICFnbG9iYWw7XG5cdH1cblx0QGlmICR0eXBlID09ICdzZXJpZicge1xuXHRcdCRfby10eXBvZ3JhcGh5LXNlcmlmOiAkZmFtaWx5ICFnbG9iYWw7XG5cdH1cblx0QGlmICR0eXBlID09ICdkaXNwbGF5JyB7XG5cdFx0JF9vLXR5cG9ncmFwaHktZGlzcGxheTogJGZhbWlseSAhZ2xvYmFsO1xuXHR9XG59XG5cbi8vLyBEZWZpbmUgdGhlIHR5cG9ncmFwaGljIHNjYWxlIGZvciBhIGdpdmVuIGZvbnQuIFRoZSBmb250IG1heSBiZSBhbiBleGlzdGluZyBvciBjdXN0b20gZm9udC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZhbWlseSAtIFRoZSBmb250IG5hbWUgb3IgZmFtaWx5IHRvIGFwcGx5IGEgc2NhbGUgdG8uXG4vLy8gQHBhcmFtIHtNYXB9ICRzY2FsZSAtIEEgbWFwIG9mIHNjYWxlIG51bWJlcnMgYXMga2V5cyAoLTIgdG8gMTApLCB3aXRoIGxpc3QgdmFsdWVzIG9mIGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgXCIoLTI6ICgxMiwgMTYpLCAtMTogKDE0LCAxNiksIDA6ICgxNiwgMjApKVwiIGV0Yy4uLlxuLy8vIEBleGFtcGxlIFRoaXMgZXhhbXBsZSBzaG93cyBkZWZpbmluZyBhIGN1c3RvbSBmb250IHNjYWxlIGZvciBhIGN1c3RvbSBmb250IFwiTXlTYW5zRm9udFwiLiBBdCBzY2FsZSBcIjBcIiB0aGUgZm9udCBzaXplIHdpbGwgYmUgMTZweCwgYW5kIHRoZSBsaW5lLWhlaWdodCAyMHB4LlxuLy8vXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGVmaW5lRm9udFNjYWxlKCRmYW1pbHk6ICdNeVNhbnNGb250LCBzYW5zJywgKFxuLy8vXHRcdCAgIC0yOiAoMTIsIDE2KSxcbi8vL1x0XHQgICAtMTogKDE0LCAxOCksXG4vLy9cdFx0ICAgIDA6ICgxNiwgMjApLFxuLy8vXHRcdCAgICAxOiAoMTgsIDI0KSxcbi8vL1x0XHQgICAgMjogKDIwLCAyNiksXG4vLy9cdFx0ICAgIDM6ICgyNCwgMzIpLFxuLy8vXHRcdCAgICA0OiAoMjgsIDM2KSxcbi8vL1x0XHQgICAgNTogKDMyLCA0MiksXG4vLy9cdFx0ICAgIDY6ICg0MCwgNTIpLFxuLy8vXHRcdCAgICA3OiAoNDgsIDYyKSxcbi8vL1x0XHQgICAgODogKDU2LCA3MiksXG4vLy9cdFx0ICAgIDk6ICg3MiwgOTQpLFxuLy8vXHRcdCAgIDEwOiAoODQsIDExMClcbi8vL1x0XHQpKTtcbkBtaXhpbiBvVHlwb2dyYXBoeURlZmluZUZvbnRTY2FsZSgkZmFtaWx5LCAkc2NhbGUpIHtcblx0QGlmIHR5cGUtb2YoJHNjYWxlKSAhPSAnbWFwJyB7XG5cdFx0QGVycm9yICdDb3VsZCBub3Qgc2V0IHRoZSBzY2FsZSBmb3IgZm9udCBcIiN7JGZhbWlseX1cIiwgZXhwZWN0ZWQgdGhlIHNjYWxlIHRvIGJlIGEgbWFwIGJ1dCBmb3VuZCBcIiN7JHNjYWxlfVwiLCBvZiB0eXBlIFwiI3t0eXBlLW9mKCRzY2FsZSl9XCIuJztcblx0fVxuXHRAZWFjaCAkc2NhbGUtbnVtYmVyLCAkc2NhbGUtaXRlbSBpbiAkc2NhbGUge1xuXHRcdEBpZiB0eXBlLW9mKCRzY2FsZS1pdGVtKSAhPSAnbGlzdCcgb3IgbGVuZ3RoKCRzY2FsZS1pdGVtKSAhPSAyIHtcblx0XHRcdEBlcnJvciAnRXhwZWN0ZWQgZWFjaCBpdGVtIGluIHRoZSBzY2FsZSB0byBiZSBhIGxpc3Qgd2l0aCB0d28gaXRlbXMsIHRoZSBmb250IHNpemUgZm9sbG93ZWQgYnkgdGhlIGxpbmUgaGVpZ2h0Lic7XG5cdFx0fVxuXHR9XG5cdEBpZiBtYXAta2V5cygkc2NhbGUpICE9ICgtMiwgLTEsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwKSB7XG5cdFx0QGVycm9yICdFeHBlY3RlZCB0aGUgc2NhbGUgZm9yIGZvbnQgXCIjeyRmYW1pbHl9XCIgdG8gY29udGFpbiB2YWx1ZXMgZm9yIHNjYWxlcyAtMiB0byAxMCwgYnV0IGZvdW5kIHNjYWxlcyBcIiN7bWFwLWtleXMoJHNjYWxlKX1cIi4nO1xuXHR9XG5cdCRmYW1pbHk6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmYW1pbHkpO1xuXHQkX28tdHlwb2dyYXBoeS1mb250LXNjYWxlLWJ5LWZvbnQ6IG1hcC1tZXJnZSgoJGZhbWlseTogJHNjYWxlKSwgJF9vLXR5cG9ncmFwaHktZm9udC1zY2FsZS1ieS1mb250KSAhZ2xvYmFsO1xufVxuXG4vLy8gT3V0cHV0IGEgdHlwb2dyYXBoeSBmb3IgZm9udFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCAtIFRoZSBmb250IHRvIG91dHB1dCB0eXBvZ3JhcGh5IGZvci5cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgZ2l2ZW4gZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29UeXBvZ3JhcGh5Rm9yKFxuXHQkZm9udCxcblx0JHNjYWxlLFxuXHQkbGluZS1oZWlnaHQsXG5cdCR3ZWlnaHQsXG5cdCRzdHlsZSxcblx0JGluY2x1ZGUtZm9udC1mYW1pbHksXG5cdCRpbmNsdWRlLXByb2dyZXNzaXZlXG4pIHtcblx0Ly8gQ2hlY2sgZm9udCB2YXJpYW50IGlzIHN1cHBvcnRlZC5cblx0JGZvbnQtd2l0aG91dC1mYWxsYmFja3M6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTtcblx0JHZhcmlhbnQtZXhpc3RzOiBvRm9udHNWYXJpYW50RXhpc3RzKCRmb250LXdpdGhvdXQtZmFsbGJhY2tzLCAkd2VpZ2h0LCAkc3R5bGUpO1xuXHRAaWYgbm90ICR2YXJpYW50LWV4aXN0cyB7XG5cdFx0QGVycm9yICdGb250IGZhbWlseSBcIiN7JGZvbnQtd2l0aG91dC1mYWxsYmFja3N9XCIgb2Ygd2VpZ2h0ICcgK1xuXHRcdFx0J1wiI3tpZigkd2VpZ2h0LCAkd2VpZ2h0LCAncmVndWxhcicpfVwiIGFuZCBzdHlsZSAnICtcblx0XHRcdCdcIiN7aWYoJHN0eWxlLCAkc3R5bGUsICdub3JtYWwnKX1cIiBpcyBub3Qgc3VwcG9ydGVkLic7XG5cdH1cblxuXHQvLyBDaGVjayBmb250IHZhcmlhbnQgaGFzIGJlZW4gaW5jbHVkZWQsIGFuZCBlcnJvciBpZiBhbiBlcnJvciBtZXNzYWdlXG5cdC8vIGhhcyBiZWVuIHNldCBieSB0aGUgdXNlci5cblx0JHZhcmlhbnQtaW5jbHVkZWQ6IG9Gb250c1ZhcmlhbnRJbmNsdWRlZCgkZm9udC13aXRob3V0LWZhbGxiYWNrcywgJHdlaWdodCwgJHN0eWxlKTtcblx0QGlmIG5vdCAkdmFyaWFudC1pbmNsdWRlZCBhbmQgdHlwZS1vZigkby10eXBvZ3JhcGh5LWVycm9yLWZvci1taXNzaW5nLWZvbnRzKSA9PSAnc3RyaW5nJyB7XG5cdFx0QGVycm9yICdUaGUgZm9udCBmYWNlIGZvciBmb250IGZhbWlseSBcIiN7JGZvbnQtd2l0aG91dC1mYWxsYmFja3N9XCIgb2YgJyArXG5cdFx0XHQnd2VpZ2h0IFwiI3tpZigkd2VpZ2h0LCAkd2VpZ2h0LCAncmVndWxhcicpfVwiIGFuZCBzdHlsZSAnICtcblx0XHRcdCdcIiN7aWYoJHN0eWxlLCAkc3R5bGUsICdub3JtYWwnKX1cIiBoYXMgbm90IGJlZW4gaW5jbHVkZWQgaW4geW91ciAnICtcblx0XHRcdCdwcm9qZWN0LiAje2luc3BlY3QoJG8tdHlwb2dyYXBoeS1lcnJvci1mb3ItbWlzc2luZy1mb250cyl9Jztcblx0fVxuXG5cdEBpZiAkaW5jbHVkZS1mb250LWZhbWlseSB7XG5cdFx0Zm9udC1mYW1pbHk6IGlmKHR5cGUtb2YoJGZvbnQpID09ICdzdHJpbmcnLCB1bnF1b3RlKCRmb250KSwgJGZvbnQpO1xuXHR9XG5cblx0QGlmICRzY2FsZSB7XG5cdFx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5U2l6ZSgkc2NhbGU6ICRzY2FsZSwgJGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQsICRmb250OiAkZm9udCk7XG5cdH0gQGVsc2UgaWYgJGxpbmUtaGVpZ2h0IHtcblx0XHRsaW5lLWhlaWdodDogX29UeXBvZ3JhcGh5QWRqdXN0VW5pdCgkbGluZS1oZWlnaHQpO1xuXHR9XG5cblx0QGlmICR3ZWlnaHQge1xuXHRcdGZvbnQtd2VpZ2h0OiBvRm9udHNXZWlnaHQoJHdlaWdodCk7XG5cdH1cblxuXHRAaWYgJHN0eWxlIHtcblx0XHRmb250LXN0eWxlOiB1bnF1b3RlKCRzdHlsZSk7XG5cdH1cblxuXHRAaWYgJGluY2x1ZGUtcHJvZ3Jlc3NpdmUge1xuXHRcdEBpbmNsdWRlIF9vVHlwb2dyYXBoeVByb2dyZXNzaXZlRm9udEZhbGxiYWNrKCRmb250LCAkc2NhbGUsICR3ZWlnaHQsICRzdHlsZSwgJGluY2x1ZGUtZm9udC1mYW1pbHkpO1xuXHR9XG59XG5cbi8vLyBPdXRwdXRzIHRoZSBmb250IHNpemUgYW5kIGxpbmUgaGVpZ2h0IGJhc2VkIG9uIHRoZSBzY2FsZSwgYWxzb1xuLy8vIGFjY2VwdHMgYW4gb3ZlcnJpZGUgbGluZS1oZWlnaHQgdG8gb3V0cHV0IGFuZCBhIGZvbnQgYWRqdXN0bWVudFxuLy8vIHBhcmFtZXRlciBmb3Igd2hlbiBvdXRwdXR0aW5nIHN0eWxlcyBmb3IgcHJvZ3Jlc3NpdmVseSBsb2FkZWQgZm9udHNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2NhbGUgbnVtYmVyIG9uIHNjYWxlIHRoZSBzaXplcyBhcmUgYmFzZWQgb25cbi8vLyBAcGFyYW0ge0Jvb2xlYW4gfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBzaXplIHRvIG92ZXJyaWRlIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCBbJyddIC0gVGhlIGZvbnQgdG8gZ2V0IHRoZSBmb250IHNpemUgZm9yLCBhcyBmb250cyBtYXkgaGF2ZSBkaWZmZXJlbnQgc2NhbGVzLiBVc2VzIHRoZSBkZWZhdWx0IHNjYWxlIGlmIG5vdCBzcGVjaWZpZWQuXG5AbWl4aW4gX29UeXBvZ3JhcGh5U2l6ZSgkc2NhbGUsICRsaW5lLWhlaWdodDogZmFsc2UsICRmb250OiAnJykge1xuXHRAaWYgdHlwZS1vZigkc2NhbGUpID09IG1hcCB7XG5cdFx0QGVhY2ggJGJyZWFrcG9pbnQsICRzY2FsZSBpbiAkc2NhbGUge1xuXHRcdFx0JGN1cnJlbnQtbGluZS1oZWlnaHQ6IGlmKGxlbmd0aCgkc2NhbGUpID09IDIsIG50aCgkc2NhbGUsIDIpLCAkbGluZS1oZWlnaHQpO1xuXHRcdFx0JGN1cnJlbnQtc2NhbGU6IGlmKHR5cGUtb2YoJHNjYWxlKSA9PSBsaXN0IGFuZCBsZW5ndGgoJHNjYWxlKSAhPSAwLCBudGgoJHNjYWxlLCAxKSwgJHNjYWxlKTtcblxuXHRcdFx0QGlmICRicmVha3BvaW50ID09ICdkZWZhdWx0JyBhbmQgJGN1cnJlbnQtc2NhbGUge1xuXHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAxLCAkZm9udCk7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAkY3VycmVudC1saW5lLWhlaWdodCwgJGZvbnQpO1xuXHRcdFx0fVxuXG5cdFx0XHRAaWYgJGJyZWFrcG9pbnQgIT0gJ2RlZmF1bHQnIGFuZCAkY3VycmVudC1zY2FsZSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRicmVha3BvaW50KSB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkY3VycmVudC1zY2FsZSwgMSwgJGZvbnQpO1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAkY3VycmVudC1saW5lLWhlaWdodCwgJGZvbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRzY2FsZSwgMSwgJGZvbnQpO1xuXHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRzY2FsZSwgJGxpbmUtaGVpZ2h0LCAkZm9udCk7XG5cdH1cbn1cblxuLy8vIE91dHB1dHMgdGhlIHByb2dyZXNzaXZlIGZvbnQgZmFsbGJhY2sgc3R5bGVzIGJhc2VkIG9uXG4vLy8gZm9udCBhbmQgc2NhbGUgaWYgdGhlIGZvbnQgaGFzIGZhbGxiYWNrIHNldHRpbmdzXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQgLSBGb250IHRvIG91dHB1dCBmYWxsYmFjayBzdHlsZXMgZm9yIChvciAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSAtIE51bWJlciBvbiBzY2FsZSB0aGUgc2l6ZSBpcyBiYXNlZCBvbi5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBUaGUgd2VpZ2h0IG9mIHRoZSBmb250IHdoaWNoIG5lZWRzIGEgZmFsbGJhY2sgZS5nLiAnYm9sZCcuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBUaGUgc3R5bGUgb2YgdGhlIGZvbnQgd2hpY2ggbmVlZHMgYSBmYWxsYmFjayBlLmcuICdpdGFsaWMnLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gV2hldGhlciB0byBvdXRwdXQgdGhlIGZvbnQgZmFtaWx5IG9mIHRoZSBmYWxsYmFjayBmb250ICh2cy4ganVzdCB0aGUgc2l6ZSlcbkBtaXhpbiBfb1R5cG9ncmFwaHlQcm9ncmVzc2l2ZUZvbnRGYWxsYmFjaygkZm9udCwgJHNjYWxlLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlKSB7XG5cdEBpZiBub3QgJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmcge1xuXHRcdEBlcnJvciAnUHJvZ3Jlc3NpdmUgZm9udCBmYWxsYmFja3MgYXJlIGRpc2FibGVkLicgK1xuXHRcdFx0J0lmIHlvdSBhcmUgc3VyZSB5b3Ugd2FudCB0byBvdXRwdXQgcHJvZ3Jlc3NpdmUgZm9udCBmYWxsYmFja3MgaW4gJyArXG5cdFx0XHQneW91ciBwcm9qZWN0IHNldCBgJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmc6IHRydWU7YCAnICtcblx0XHRcdCdhdCB0aGUgdG9wIG9mIHlvdXIgcHJvamVjdCwgYmVmb3JlIGltcG9ydGluZyBTYXNzIGZpbGVzLiAnICtcblx0XHRcdCdTZWUgdGhlIFJFQURNRSBmb3IgZGV0YWlscyBhbmQgbW9yZSBvcHRpb25zIG9yIGNvbnRhY3QgdGhlIE9yaWdhbWkgdGVhbS4nO1xuXHR9XG5cdEBpZiAkc2NhbGUge1xuXHRcdC8vIElmIGZhbHN5IHdlaWdodC9zdHlsZSBkZWZhdWx0IHRvIHJlZ3VsYXIvbm9ybWFsLlxuXHRcdCR3ZWlnaHQ6IGlmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyk7XG5cdFx0JHN0eWxlOiBpZigkc3R5bGUsICRzdHlsZSwgJ25vcm1hbCcpO1xuXHRcdC8vIEZpbmQgZmFsbGJhY2sgY29uZmlnIGZvciBmb250LCB3ZWlnaHQsIGFuZCBzdHlsZS5cblx0XHRAZWFjaCAkZmFsbGJhY2sgaW4gJF9vLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1mYWxsYmFja3Mge1xuXHRcdFx0Ly8gR2V0IGZhbGxiYWNrIHByb3BlcnRpZXMuXG5cdFx0XHQkZmFsbGJhY2stZmFtaWx5OiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2ZhbWlseScpO1xuXHRcdFx0JGZhbGxiYWNrLWxhYmVsOiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2xhYmVsJyk7XG5cdFx0XHQvLyBNYXRjaCByZWd1bGFyIGJ5IGRlZmF1bHQuXG5cdFx0XHQkZmFsbGJhY2std2VpZ2h0OiBtYXAtZ2V0KCRmYWxsYmFjaywgJ3dlaWdodCcpO1xuXHRcdFx0JGZhbGxiYWNrLXdlaWdodDogaWYoJGZhbGxiYWNrLXdlaWdodCwgJGZhbGxiYWNrLXdlaWdodCwgKCdyZWd1bGFyJykpO1xuXHRcdFx0Ly8gTWF0Y2ggbm9ybWFsIGJ5IGRlZmF1bHQuXG5cdFx0XHQkZmFsbGJhY2stc3R5bGU6IG1hcC1nZXQoJGZhbGxiYWNrLCAnc3R5bGUnKTtcblx0XHRcdCRmYWxsYmFjay1zdHlsZTogaWYoJGZhbGxiYWNrLXN0eWxlLCAkZmFsbGJhY2stc3R5bGUsICgnbm9ybWFsJykpO1xuXHRcdFx0JGZhbGxiYWNrLXNjYWxlOiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2ZhbGxiYWNrLXNjYWxlJyk7XG5cdFx0XHQvLyBDaGVjayBpZiBmYWxsYmFjayBpcyBmb3IgdGhlIGdpdmVuIGZvbnQsIHdlaWdodCwgYW5kIHN0eWxlLjtcblx0XHRcdCRsYWJlbC1tYXRjaDogJGZhbGxiYWNrLWxhYmVsID09IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTsgLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcblx0XHRcdCRmYW1pbHktbWF0Y2g6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmYWxsYmFjay1mYW1pbHkpID09IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTtcblx0XHRcdCR3ZWlnaHQtbWF0Y2g6IGluZGV4KCRmYWxsYmFjay13ZWlnaHQsICR3ZWlnaHQpO1xuXHRcdFx0JHN0eWxlLW1hdGNoOiBpZigkZmFsbGJhY2stc3R5bGUsIGluZGV4KCRmYWxsYmFjay1zdHlsZSwgJHN0eWxlKSwgdHJ1ZSk7XG5cdFx0XHQvLyBPdXRwdXQgdGhlIGZhbGxiYWNrIGlmIGl0IG1hdGNoZXMuXG5cdFx0XHRAaWYgKCRsYWJlbC1tYXRjaCBvciAoJGZhbWlseS1tYXRjaCBhbmQgJHdlaWdodC1tYXRjaCBhbmQgJHN0eWxlLW1hdGNoKSkge1xuXHRcdFx0XHQuI3skX28tdHlwb2dyYXBoeS1sb2FkaW5nLXByZWZpeH0tI3skZmFsbGJhY2stbGFiZWx9ICYge1xuXHRcdFx0XHRcdEBpbmNsdWRlIF9vVHlwb2dyYXBoeUZvbnRTaXplKCRzY2FsZTogJHNjYWxlLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3Q6ICRmYWxsYmFjay1zY2FsZSwgJGZvbnQ6ICRmYWxsYmFjay1mYW1pbHkpO1xuXHRcdFx0XHRcdEBpZiAkaW5jbHVkZS1mb250LWZhbWlseSB7XG5cdFx0XHRcdFx0XHRmb250LWZhbWlseTogbWFwLWdldCgkZmFsbGJhY2ssICdmYWxsYmFjaycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gT3V0cHV0cyB0aGUgZm9udCBzaXplIGJhc2VkIG9uIHRoZSBzY2FsZSwgYWxzbyBhY2NlcHRzIGEgZm9udCBhZGp1c3RtZW50XG4vLy8gcGFyYW1ldGVyIGZvciB3aGVuIG91dHB1dHRpbmcgc3R5bGVzIGZvciBwcm9ncmVzc2l2ZWx5IGxvYWRlZCBmb250c1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSAtIE51bWJlciBvbiBzY2FsZSB0aGUgc2l6ZXMgYXJlIGJhc2VkIG9uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QgLSBNdWx0aXBsaWVyIGZvciBmb250LXNpemUgYWRqdXN0bWVudHMsIHdoZW4gYWRkaW5nIHN0eWxlcyBmb3IgcHJvZ3Jlc3NpdmVseSBsb2FkZWQgZm9udC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQgWycnXSAtIFRoZSBmb250IHRvIGdldCB0aGUgZm9udCBzaXplIGZvciwgYXMgZm9udHMgbWF5IGhhdmUgZGlmZmVyZW50IHNjYWxlcy4gVXNlcyB0aGUgZGVmYXVsdCBzY2FsZSBpZiBub3Qgc3BlY2lmaWVkLlxuQG1peGluIF9vVHlwb2dyYXBoeUZvbnRTaXplKCRzY2FsZSwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0OiAxLCAkZm9udDogJycpIHtcblx0QGlmIHR5cGUtb2YoJHNjYWxlKSA9PSBtYXAge1xuXHRcdEBlYWNoICRicmVha3BvaW50LCAkbnVtYmVyIGluICRzY2FsZSB7XG5cdFx0XHRAaWYgJGJyZWFrcG9pbnQgPT0gJ2RlZmF1bHQnIHtcblx0XHRcdFx0QGlmIHR5cGUtb2YoJG51bWJlcikgPT0gbGlzdCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZShudGgoJG51bWJlciwgMSksICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRudW1iZXIsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IEBlbHNlIGlmKCRudW1iZXIpIHtcblx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGJyZWFrcG9pbnQpIHtcblx0XHRcdFx0XHRAaWYgdHlwZS1vZigkbnVtYmVyKSA9PSBsaXN0IHtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUobnRoKCRudW1iZXIsIDEpLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0XHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJG51bWJlciwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJHNjYWxlLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0fVxufVxuIiwiJG8tZm9vdGVyLWlzLXNpbGVudDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEZvb3RlciBzcGFjaW5nIHVuaXRcbi8vLyBAdHlwZSBOdW1iZXJcbiRfby1mb290ZXItc3BhY2luZy11bml0OiBvU3BhY2luZ0J5SW5jcmVtZW50KDUpO1xuXG4vLy8gRm9vdGVyIG1hdHJpeFxuLy8vIFRoZSBvLWdyaWQgY29sdW1uIHNpemVzIGZvciBncm91cHMgYW5kIGlubmVyIGNvbHVtbnNcbi8vLyBAdHlwZSBNYXBcbiRfby1mb290ZXItbWF0cml4OiAoXG5cdDE6IChcblx0XHRncm91cDogKGRlZmF1bHQ6IDEyLCBNOiA0LCBMOiAyKSxcblx0XHRjb2x1bW5zOiAoZGVmYXVsdDogMTIpXG5cdCksXG5cdDI6IChcblx0XHRncm91cDogKGRlZmF1bHQ6IDEyLCBNOiA2LCBMOiA0KSxcblx0XHRjb2x1bW5zOiAoZGVmYXVsdDogNilcblx0KSxcblx0NDogKFxuXHRcdGdyb3VwOiAoZGVmYXVsdDogMTIsIEw6IDgpLFxuXHRcdGNvbHVtbnM6IChkZWZhdWx0OiA2LCBNOiAzKVxuXHQpLFxuXHQ2OiAoXG5cdFx0Z3JvdXA6IChkZWZhdWx0OiAxMiksXG5cdFx0Y29sdW1uczogKGRlZmF1bHQ6IDYsIE06IDMsIEw6IDIpXG5cdClcbik7XG5cbiRfby1mb290ZXItaWNvbi1zaXplOiAyMDtcbiIsIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJlc3BvbnNpdmUgYmVoYXZpb3VyIGNvbmZpZ3VyYXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8vIFNpbGVudCBtb2RlXG4vLy9cbi8vLyBAdHlwZSBCb29sXG4kby1ncmlkLWlzLXNpbGVudDogdHJ1ZSAhZGVmYXVsdDtcblxuXG4vLy8gR3JpZCBtb2RlXG4vLy8gLSBmbHVpZDogZnVsbCB3aWR0aCB1cCB0byB0aGUgbGFyZ2VzdCBsYXlvdXQncyB3aWR0aFxuLy8vIC0gc25hcHB5OiBmbHVpZCB3aWR0aCB1bnRpbCB0aGUgbGF5b3V0IGRlZmluZWQgaW4gJG8tZ3JpZC1zdGFydC1zbmFwcHktbW9kZS1hdCAoZGVmYXVsdDogTSksXG4vLy8gICAgICAgICAgIGFuZCB0aGVuIHNuYXBzIGludG8gYSBsYXJnZXIgZml4ZWQgbGF5b3V0IGF0IGVhY2ggYnJlYWtwb2ludFxuLy8vIC0gZml4ZWQ6IGFsd2F5cyBmaXhlZC13aWR0aCB3aXRoIHRoZSBsYXlvdXQgZGVmaW5lZCBieSAkby1ncmlkLWZpeGVkLWxheW91dCAoZGVmYXVsdDogTClcbi8vL1xuLy8vIEB0eXBlIFN0cmluZyAtIG9uZSBvZiBmbHVpZCAoZGVmYXVsdCksIHNuYXBweSwgZml4ZWRcbiRvLWdyaWQtbW9kZTogJ2ZsdWlkJyAhZGVmYXVsdDtcblxuLy8vIExheW91dCB0byBkZWZhdWx0IHRvIHdoZW4gdGhlIGdyaWQgaGFzIGEgZml4ZWQgd2lkdGggKG5vdCBmbHVpZClcbi8vL1xuLy8vIEB0eXBlIFN0cmluZyAtIE9uZSBvZiAkby1ncmlkLWxheW91dHNcbiRvLWdyaWQtZml4ZWQtbGF5b3V0OiAnTCcgIWRlZmF1bHQ7XG5cbi8vLyBXaGVuIHRoZSBncmlkIHN0YXJ0IHNuYXBwaW5nIGJldHdlZW4gZml4ZWQtd2lkdGggbGF5b3V0c1xuLy8vIGluIHRoZSBjYXNlIHdoZXJlIGEgcm93IGhhcyB0aGUgYG8tZ3JpZC1yb3ctLXNuYXBweWAgY2xhc3Ncbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuJG8tZ3JpZC1zdGFydC1zbmFwcHktbW9kZS1hdDogJ00nICFkZWZhdWx0O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBHcmlkIHNldHRpbmdzIGFuZCBkaW1lbnNpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vLyBOdW1iZXIgb2YgY29sdW1uc1xuLy8vXG4vLy8gQHR5cGUgTnVtYmVyICh1bml0bGVzcylcbiRvLWdyaWQtY29sdW1uczogMTIgIWRlZmF1bHQ7XG5cbi8vLyBNaW5pbXVtIHdpZHRoLCBpbiBwaXhlbHNcbi8vL1xuLy8vIEB0eXBlIE51bWJlclxuJG8tZ3JpZC1taW4td2lkdGg6IDI0MHB4ICFkZWZhdWx0O1xuXG4vLy8gTGF5b3V0c1xuLy8vXG4vLy8gRWFjaCBsYXlvdXQgaXMgY2FsY3VsYXRlZCBmb2xsb3dpbmcgYSBzcGVjaWZpYyBjb2x1bW4gd2lkdGgsXG4vLy8gaW4gb3JkZXIgdG8gYmFzZSBicmVha3BvaW50cyBvbiB0aGUgc3RydWN0dXJlIG9mIHRoZSBncmlkIGl0c2VsZlxuLy8vXG4vLy8gQHR5cGUgTWFwXG4kby1ncmlkLWxheW91dHM6IChcblx0UzogIDQ5MHB4LCAgLy8gY29sdW1uLXdpZHRoOiAzMHB4LCBpbm5lciB3aWR0aDogNDcwcHhcblx0TTogIDc0MHB4LCAgLy8gY29sdW1uLXdpZHRoOiA0MHB4LCBpbm5lciB3aWR0aDogNzAwcHhcblx0TDogIDk4MHB4LCAgLy8gY29sdW1uLXdpZHRoOiA2MHB4LCBpbm5lciB3aWR0aDogOTQwcHhcblx0WEw6IDEyMjBweCwgLy8gY29sdW1uLXdpZHRoOiA4MHB4LCBpbm5lciB3aWR0aDogMTE4MHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gTGF5b3V0IG5hbWVzXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAdHlwZSBMaXN0XG4kX28tZ3JpZC1sYXlvdXQtbmFtZXM6IG1hcC1rZXlzKCRvLWdyaWQtbGF5b3V0cyk7XG5cbi8vLyBHdXR0ZXIgc2l6ZXNcbi8vL1xuLy8vIEB0eXBlIE1hcFxuJG8tZ3JpZC1ndXR0ZXJzOiAoXG5cdGRlZmF1bHQ6IDEwcHgsXG5cdE06ICAgICAgIDIwcHgsXG4pICFkZWZhdWx0O1xuXG4vLyBJZiBsYXlvdXRzIGhhdmUgY2hhbmdlZCBidXQgZ3V0dGVycyBoYXZlbid0LFxuLy8gcHJ1bmUgbm9uLWV4aXN0YW50IGxheW91dHMuXG5AZWFjaCAkbGF5b3V0LW5hbWUsICRndXR0ZXItc2l6ZSBpbiAkby1ncmlkLWd1dHRlcnMge1xuXHRAaWYgKCRsYXlvdXQtbmFtZSAhPSAnZGVmYXVsdCcpIGFuZCAobm90IG1hcC1oYXMta2V5KCRvLWdyaWQtbGF5b3V0cywgJGxheW91dC1uYW1lKSkge1xuXHRcdCRvLWdyaWQtZ3V0dGVyczogbWFwLXJlbW92ZSgkby1ncmlkLWd1dHRlcnMsICRsYXlvdXQtbmFtZSk7XG5cdH1cbn1cblxuLy8vIE1heGltdW0gZ3JpZCB3aWR0aFxuLy8vIERlZmF1bHRzIHRvIHRoZSBsYXJnZXN0IGxheW91dCB3aWR0aFxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTnVtYmVyXG4kX28tZ3JpZC1tYXgtd2lkdGg6IG1hcC1nZXQoJG8tZ3JpZC1sYXlvdXRzLCBudGgoJF9vLWdyaWQtbGF5b3V0LW5hbWVzLCAtMSkpO1xuIiwiLy8vIENvbnN0cnVjdCBhIGxvZ28gaW1hZ2UgVVJMXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxvZ28tbmFtZVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmFsbGJhY2std2lkdGhcbkBtaXhpbiBfb0Zvb3RlckJyYW5kSW1hZ2UoJGxvZ28tbmFtZSwgJGZhbGxiYWNrLXdpZHRoKSB7XG5cdC8vIEVycm9yIGlmIHRoZSBnbG9iYWwgJHN5c3RlbS1jb2RlIHZhcmlhYmxlIGlzIG5vdCBzZXQuXG5cdC8vIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGltYWdlIHNlcnZpY2UgcmVxdWVzdHMuXG5cdEBpZihnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdzeXN0ZW0tY29kZScpID09IGZhbHNlIG9yIHR5cGUtb2YoJHN5c3RlbS1jb2RlKSAhPSAnc3RyaW5nJykge1xuXHRcdEBlcnJvciAnQSBnbG9iYWwgXCIkc3lzdGVtLWNvZGVcIiBTYXNzIHZhcmlhYmxlIG11c3QgYmUgc2V0IHRvIGEgdmFsaWQgW0Jpem9wcyBzeXN0ZW0gY29kZV0oaHR0cHM6Ly9iaXotb3BzLmluLmZ0LmNvbS9saXN0L1N5c3RlbXMpLic7XG5cdH1cblxuXHQkYmFzZS11cmw6IFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2ltYWdlL3YyL2ltYWdlcy9yYXcvZnRsb2dvOlwiO1xuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJGJhc2UtdXJsICsgJGxvZ28tbmFtZSArIFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX0mZm9ybWF0PXN2Z1wiKTtcbn1cblxuLy8vIFN0eWxlcyBmb3IgdGhlIGRhcmsgdGhlbWVcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHRoZW1lIC0gVGhlIHRoZW1lLCBzZWUgX2JyYW5kLnNjc3MgZm9yIHRoZW1lIGNvbmZpZ3VyYXRpb24uXG5AbWl4aW4gX29Gb290ZXJUaGVtZSgkdGhlbWUpIHtcblx0QGlmICR0aGVtZSAhPSAnbGlnaHQnIGFuZCAkdGhlbWUgIT0gJ2RhcmsnIHtcblx0XHRAZXJyb3IgJ05vIHRoZW1lIFwiI3tpbnNwZWN0KCR0aGVtZSl9XCIgZXhpc3RzLiBTdXBwb3J0ZWQgdGhlbWVzIGluY2x1ZGUgXCJsaWdodFwiIGFuZCBcImRhcmtcIi4nO1xuXHR9XG5cblx0Lm8tZm9vdGVyLS10aGVtZS0jeyR0aGVtZX0ge1xuXHRcdGNvbG9yOiBfb0Zvb3RlckdldCgndGV4dCcsICRmcm9tOiAkdGhlbWUpO1xuXHRcdGJhY2tncm91bmQ6IF9vRm9vdGVyR2V0KCdiYWNrZ3JvdW5kJywgJGZyb206ICR0aGVtZSk7XG5cblx0XHQuby1mb290ZXJfX3RpdGxlIHtcblx0XHRcdGNvbG9yOiBfb0Zvb3RlckdldCgndGl0bGUnLCAkZnJvbTogJHRoZW1lKTtcblx0XHR9XG5cblx0XHQuby1mb290ZXJfX21hdHJpeC1saW5rLS1tb3JlOmFmdGVyIHtcblx0XHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoXG5cdFx0XHRcdCRpY29uLW5hbWU6ICdhcnJvdy1yaWdodCcsXG5cdFx0XHRcdCRzaXplOiAkX28tZm9vdGVyLWljb24tc2l6ZSxcblx0XHRcdFx0JGNvbG9yOiBfb0Zvb3RlckdldCgndGV4dCcsICRmcm9tOiAkdGhlbWUpLFxuXHRcdFx0XHQkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2Vcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Lm8tZm9vdGVyX19tYXRyaXgtdGl0bGUtLWxpbmssXG5cdFx0Lm8tZm9vdGVyX19tYXRyaXgtdGl0bGVbYXJpYS1leHBhbmRlZF0ge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiBfb0Zvb3RlckdldCgnYm9yZGVyJywgJGZyb206ICR0aGVtZSk7XG5cdFx0fVxuXG5cdFx0Lm8tZm9vdGVyX19tYXRyaXgtdGl0bGUgYSB7XG5cdFx0XHRjb2xvcjogX29Gb290ZXJHZXQoJ3RleHQnLCAkZnJvbTogJHRoZW1lKTtcblx0XHR9XG5cblx0XHRhIHtcblx0XHRcdGNvbG9yOiBfb0Zvb3RlckdldCgnbGluaycsICRmcm9tOiAkdGhlbWUpO1xuXG5cdFx0XHQmOmhvdmVyLFxuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdGNvbG9yOiBfb0Zvb3RlckdldCgnbGluay1ob3ZlcicsICRmcm9tOiAkdGhlbWUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5vLWZvb3Rlcl9fY29weXJpZ2h0IHtcblx0XHRcdGNvbG9yOiBfb0Zvb3RlckdldCgnY29weXJpZ2h0JywgJGZyb206ICR0aGVtZSk7XG5cdFx0fVxuXG5cdFx0Lm8tZm9vdGVyX19icmFuZCB7XG5cdFx0XHRjb2xvcjogX29Gb290ZXJHZXQoJ3RleHQnLCAkZnJvbTogJHRoZW1lKTtcblx0XHRcdGJhY2tncm91bmQ6IF9vRm9vdGVyR2V0KCdicmFuZC1iYWNrZ3JvdW5kJywgJGZyb206ICR0aGVtZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBTdHlsZXMgZm9yIHRoZSBuYXZpZ2F0aW9uIG1hdHJpeFxuLy8vIEBwYXJhbSB7TGlzdH0gJHRoZW1lcyAtIGEgbGlzdCBvZiB0aGVtZXMgaW5jbHVkZVxuQG1peGluIF9vRm9vdGVyTWF0cml4KCR0aGVtZXMpIHtcblx0Lm8tZm9vdGVyX19tYXRyaXgsXG5cdC5vLWZvb3Rlcl9fbWF0cml4LWNvbnRlbnQge1xuXHRcdEBpbmNsdWRlIG9HcmlkUm93KCk7XG5cdH1cblxuXHQuby1mb290ZXJfX21hdHJpeC1ncm91cCxcblx0Lm8tZm9vdGVyX19tYXRyaXgtY29sdW1uIHtcblx0XHRAaW5jbHVkZSBvR3JpZENvbHNwYW4oKTtcblx0fVxuXG5cdEBlYWNoICRrZXksICR2YWx1ZSBpbiAkX28tZm9vdGVyLW1hdHJpeCB7XG5cdFx0Lm8tZm9vdGVyX19tYXRyaXgtZ3JvdXAtLSN7JGtleX0ge1xuXHRcdFx0QGluY2x1ZGUgb0dyaWRDb2xzcGFuKG1hcC1nZXQoJHZhbHVlLCAnZ3JvdXAnKSwgJHdpZHRoLW9ubHk6IHRydWUpO1xuXG5cdFx0XHQuby1mb290ZXJfX21hdHJpeC1jb2x1bW4ge1xuXHRcdFx0XHRAaW5jbHVkZSBvR3JpZENvbHNwYW4obWFwLWdldCgkdmFsdWUsICdjb2x1bW5zJyksICR3aWR0aC1vbmx5OiB0cnVlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuby1mb290ZXJfX21hdHJpeC10aXRsZSxcblx0Lm8tZm9vdGVyX19tYXRyaXgtbGlua19fY29weSB7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0Lm8tZm9vdGVyX19tYXRyaXgtdGl0bGUge1xuXHRcdG1hcmdpbjogMDtcblx0XHRsaW5lLWhlaWdodDogaW5oZXJpdDtcblx0XHRmb250LXNpemU6IGluaGVyaXQ7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblxuXHRcdCZbYXJpYS1leHBhbmRlZF0ge1xuXHRcdFx0JGxpbmUtc2l6ZTogJF9vLWZvb3Rlci1zcGFjaW5nLXVuaXQgKiAyO1xuXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQ7XG5cdFx0XHRsaW5lLWhlaWdodDogJGxpbmUtc2l6ZTtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdGNvbnRlbnQ6ICcgJztcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRyaWdodDogMDtcblx0XHRcdFx0dG9wOiBkaXYoKCRsaW5lLXNpemUgLSAkX28tZm9vdGVyLWljb24tc2l6ZSksIDIpO1xuXG5cdFx0XHRcdEBlYWNoICR0aGVtZSBpbiAkdGhlbWVzIHtcblx0XHRcdFx0XHQuby1mb290ZXItLXRoZW1lLSN7JHRoZW1lfSAmIHtcblx0XHRcdFx0XHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ2Fycm93LWRvd24nLCBfb0Zvb3RlckdldCgndGl0bGUnLCAkdGhlbWUpLCAkc2l6ZTogJF9vLWZvb3Rlci1pY29uLXNpemUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdC8vIGRvbid0IGRvd25sb2FkIGFub3RoZXIgaWNvbi4uLlxuXHRcdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIEkuZS4gYC5vLWZvb3Rlcl9fbWF0cml4LXRpdGxlOmhhcyguby1mb290ZXJfX21hdHJpeC1saW5rKWBcblx0Lm8tZm9vdGVyX19tYXRyaXgtdGl0bGUtLWxpbmsge1xuXHRcdC8vIERvIG5vdCBoaWRlIG92ZXJmbG93aW5nIGZvY3VzIHN0YXRlIGZvciB0aXRsZXMgd2hpY2ggY29udGFpbiBsaW5rcy5cblx0XHRvdmVyZmxvdzogdmlzaWJsZTtcblx0XHRsaW5lLWhlaWdodDogJF9vLWZvb3Rlci1zcGFjaW5nLXVuaXQgKiAyO1xuXG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkO1xuXHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKE0pIHtcblx0XHRcdGJvcmRlci10b3A6IDA7XG5cdFx0XHRsaW5lLWhlaWdodDogaW5pdGlhbDtcblx0XHR9XG5cdH1cblxuXHQuby1mb290ZXJfX21hdHJpeC1jb250ZW50IHtcblx0XHQmW2FyaWEtaGlkZGVuPVwidHJ1ZVwiXSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5vLWZvb3Rlcl9fbWF0cml4LWNvbHVtbiB7XG5cdFx0bWFyZ2luLXRvcDogb1NwYWNpbmdCeU5hbWUoJ3M0Jyk7XG5cdFx0bWFyZ2luLWJvdHRvbTogb1NwYWNpbmdCeU5hbWUoJ3M0Jyk7XG5cdH1cblxuXHQuby1mb290ZXJfX21hdHJpeC1saW5rIHtcblx0XHRwYWRkaW5nLXRvcDogb1NwYWNpbmdCeU5hbWUoJ3MyJyk7XG5cdFx0cGFkZGluZy1ib3R0b206IG9TcGFjaW5nQnlOYW1lKCdzMicpO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXG5cdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRwYWRkaW5nLXRvcDogMDtcblx0XHR9XG5cdH1cblxuXHQuby1mb290ZXJfX21hdHJpeC1saW5rLS1tb3JlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KFxuXHRcdFx0XHQkaWNvbi1uYW1lOiAnYXJyb3ctcmlnaHQnLFxuXHRcdFx0XHQkc2l6ZTogJF9vLWZvb3Rlci1pY29uLXNpemUsXG5cdFx0XHRcdCRjb2xvcjogX29Gb290ZXJHZXQoJ3RleHQnKSxcblx0XHRcdFx0JGluY2x1ZGUtYmFzZS1zdHlsZXM6IHRydWVcblx0XHRcdCk7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHRcdGFsaWduLXNlbGY6IGNlbnRlcjtcblx0XHR9XG5cdH1cbn1cbiIsIi8vLyBPdXRwdXQgc3R5bGVzIGZvciBhbiBTVkcgaWNvbi5cbi8vLyBTdHlsZXMgdGhlIGljb24gYXMgYSBiYWNrZ3JvdW5kIGltYWdlLCBzZXR0aW5nIGEgd2lkdGggYW5kIGhlaWdodCBvbiB0aGUgZWxlbWVudCBhcyByZXF1ZXN0ZWQuXG4vLy8gQSBmYWxsYmFjayBiYWNrZ3JvdW5kIGZvciBXaW5kb3dzIEhpZ2ggQ29udHJhc3QgbW9kZSBpcyBhbHNvIG91dHB1dC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRpY29uLW5hbWUgLSBUaGlzIHNob3VsZCBiZSBhIHJlZmVyZW5jZSB0byBhbiBpY29uIGluY2x1ZGVkIGluIG8taWNvbnMgZWcgYXJyb3ctZG93blxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkY29sb3IgLSBUaGlzIHNob3VsZCBiZSBhIGhleCBjb2xvdXIgdmFsdWUuIFVzZWQgdG8gY29sb3IgdGhlIGljb24uIFdlIHN1Z2dlc3QgdXNpbmcgYW4gby1jb2xvcnMgZnVuY3Rpb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TnVsbH0gJHNpemUgWzEyOF0gLSBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgaWNvbiAodW5pdHMgb3B0aW9uYWwsIGRlZmF1bHRzIHRvIHB4KS4gU2V0IHRvIGBudWxsYCB0byBzZXQgbm8gd2lkdGggb3IgaGVpZ2h0LlxuLy8vIEBwYXJhbSB7Qm9vbH0gJGluY2x1ZGUtYmFzZS1zdHlsZXMgW3RydWVdIC0gSWYgdHJ1ZSwgd2lsbCBvdXRwdXQgc3R5bGUgcnVsZXMgZm9yIHRoZSBjb250YWluZXIuIElmIGZhbHNlIHdpbGwgb25seSBvdXRwdXQgdGhlIGJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHlcbi8vLyBAcGFyYW0ge0Jvb2x9ICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrIFt0cnVlXSAtIFRvIG91dHB1dCBNaWNyb3NvZnQgSGlnaCBDb250cmFzdCBmYWxsYmFjayBmb3IgYWNjZXNzaWJpbGl0eSByZWFzb25zIG9yIG5vdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGljb25zZXQtdmVyc2lvbiBbMV0gLSBBdCBwcmVzZW50IG9ubHkgMSB2ZXJzaW9uIG9mIHRoZSBpY29uIHNldCBpcyBhdmFpbGFibGUuXG5AbWl4aW4gb0ljb25zQ29udGVudCgkaWNvbi1uYW1lLCAkY29sb3I6IG51bGwsICRzaXplOiAxMjgsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiB0cnVlLCAkaGlnaC1jb250cmFzdC1mYWxsYmFjazogdHJ1ZSwgJGljb25zZXQtdmVyc2lvbjogMSkge1xuXHQvLyBFcnJvciBpZiB0aGUgZ2xvYmFsICRzeXN0ZW0tY29kZSB2YXJpYWJsZSBpcyBub3Qgc2V0LlxuXHQvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciBpbWFnZSBzZXJ2aWNlIHJlcXVlc3RzLlxuXHRAaWYoZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnc3lzdGVtLWNvZGUnKSA9PSBmYWxzZSBvciB0eXBlLW9mKCRzeXN0ZW0tY29kZSkgIT0gJ3N0cmluZycpIHtcblx0XHRAZXJyb3IgJ0EgZ2xvYmFsIFwiJHN5c3RlbS1jb2RlXCIgU2FzcyB2YXJpYWJsZSBtdXN0IGJlIHNldCB0byBhIHZhbGlkIEJpem9wcyBzeXN0ZW0gY29kZSAoXFxlXTg7O2h0dHBzOi8vYml6LW9wcy5pbi5mdC5jb20vbGlzdC9TeXN0ZW1zXFxlXFxcXGh0dHBzOi8vYml6LW9wcy5pbi5mdC5jb20vbGlzdC9TeXN0ZW1zXFxlXTg7O1xcZVxcXFwpLic7XG5cdH1cblxuXHQvLyBJZiB0aGUgc2l6ZSBvZiB0aGUgaWNvbnMgaGFzIGJlZW4gZ2l2ZW4gd2l0aG91dCBhIHVuaXQsIGRlZmF1bHQgdG8gcHguXG5cdEBpZiAodHlwZS1vZigkc2l6ZSkgPT0gJ251bWJlcicgYW5kIHVuaXRsZXNzKCRzaXplKSkge1xuXHRcdCRzaXplOiAkc2l6ZSArIDBweDtcblx0fVxuXG5cdC8vIERlZmluZSBiYXNlIGltYWdlIHNlcnZpY2UgcGF0aC5cblx0JHNjaGVtZTogXCJmdGljb24tdiN7JGljb25zZXQtdmVyc2lvbn1cIjtcblx0JHNlcnZpY2UtdXJsOiBcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3LyN7JHNjaGVtZX06I3skaWNvbi1uYW1lfVwiO1xuXG5cdC8vIEluY2x1ZGUgYmFzZSBzdHlsZXMgc2hhcmVkIGJ5IGFsbCBpY29ucy5cblx0QGlmICgkaW5jbHVkZS1iYXNlLXN0eWxlcyA9PSB0cnVlKSB7XG5cdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudEJhc2VTdHlsZXM7XG5cdH1cblxuXHQvLyBTZXQgdGhlIGljb24gZGltZW50aW9ucy5cblx0d2lkdGg6ICRzaXplO1xuXHRoZWlnaHQ6ICRzaXplO1xuXG5cdC8vIEluY2x1ZGUgdGhlIGljb24gdmlhIHRoZSBpbWFnZSBzZXJ2aWNlLlxuXHQvLyBCdWlsZCBhbiBpbWFnZSBzZXJ2aWNlIHVybCBmb3IgdGhlIHJlcXVlc3RlZCBpY29uLlxuXHQkcXVlcnk6IFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX1cIjtcblx0QGlmICRjb2xvciAhPSBudWxsIHtcblx0XHQkY29sb3I6IHN0ci1zbGljZShpZS1oZXgtc3RyKCRjb2xvciksIDQpO1xuXHRcdCRxdWVyeTogJHF1ZXJ5ICsgXCImdGludD0lMjMjeyRjb2xvcn0sJTIzI3skY29sb3J9XCI7XG5cdH1cblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArICRxdWVyeSArIFwiJmZvcm1hdD1zdmdcIik7XG5cblx0Ly8gSW5jbHVkZSBhIGZhbGxiYWNrIGZvciBXaW5kb3cncyBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdC8vIFRoaXMgbW9kZSByZW1vdmVzIGJhY2tncm91bmQgaW1hZ2VzIHVubGVzcyBzcGVjaWZjYWxseSBpbmNsdWRlZFxuXHQvLyBmb3IgaGlnaCBjb250cmFzdCBtb2RlLlxuXHQvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcblx0QGlmICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrIHtcblx0XHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArIFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX0mdGludD0lMjNmZmZmZmYsJTIzZmZmZmZmJmZvcm1hdD1zdmdcIik7XG5cdFx0fVxuXG5cdFx0QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBibGFjay1vbi13aGl0ZSkge1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArIFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX0mdGludD0lMjMwMDAwMDAsJTIzMDAwMDAwJmZvcm1hdD1zdmdcIik7XG5cdFx0fVxuXHR9XG5cdC8vIHNhc3MtbGludDplbmFibGUgbm8tdmVuZG9yLXByZWZpeGVzXG59XG5cbi8vLyBCYXNlIHN0eWxlcyBmb3IgYWxsIGljb25zXG4vLy8gQGFjY2VzcyBwdWJsaWNcbkBtaXhpbiBvSWNvbnNDb250ZW50QmFzZVN0eWxlcygpIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDUwJTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cbiIsIi8vLyBWaXN1YWxseSBoaWRlIGFuIGVsZW1lbnQgd2hpbGUgc3RpbGxcbi8vLyBhbGxvd2luZyBpdCB0byBiZSByZWFkIGJ5IGEgc2NyZWVucmVhZGVyXG5AbWl4aW4gb05vcm1hbGlzZVZpc3VhbGx5SGlkZGVuIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRjbGlwOiByZWN0KDAgMCAwIDApO1xuXHRjbGlwLXBhdGg6IHBvbHlnb24oMCAwLCAwIDApO1xuXHRtYXJnaW46IC0xcHg7XG5cdGJvcmRlcjogMDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0cGFkZGluZzogMDtcblx0d2lkdGg6IDJweDtcblx0aGVpZ2h0OiAycHg7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8vLyBDbGVhcmZpeCBoZWxwZXIgc3R5bGVzXG4vLy8gT3V0cHV0cyBjbGVhcmZpeCBzdHlsZXMgb24gdGhlIGN1cnJlbnQgZWxlbWVudFxuQG1peGluIG9Ob3JtYWxpc2VDbGVhcmZpeCB7XG5cdHpvb206IDE7XG5cblx0JjpiZWZvcmUsXG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHRcdGRpc3BsYXk6IGZsZXg7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tYmxvY2stbm8tZHVwbGljYXRlLXByb3BlcnRpZXNcblx0fVxuXHQmOmFmdGVyIHtcblx0XHRjbGVhcjogYm90aDtcblx0fVxufVxuXG4vLy8gQWRkcyBib3ggc2l6aW5nIHRvIGN1cnJlbnQgYW5kIGFsbCBjaGlsZCBlbGVtZW50c1xuQG1peGluIG9Ob3JtYWxpc2VCb3hTaXppbmcge1xuXG5cdC8qYXV0b3ByZWZpeGVyOiBvZmYqL1xuXHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHQtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG5cblx0JiAqLFxuXHQmICo6YmVmb3JlLFxuXHQmICo6YWZ0ZXIge1xuXG5cdFx0LyphdXRvcHJlZml4ZXI6IG9mZiovXG5cdFx0LXdlYmtpdC1ib3gtc2l6aW5nOiBpbmhlcml0OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblx0XHQtbW96LWJveC1zaXppbmc6IGluaGVyaXQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRcdGJveC1zaXppbmc6IGluaGVyaXQ7XG5cblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gZ2VuZXJhbCBodG1sIGVsZW1lbnRzXG4vLy8gZWZmZWN0czogPGh0bWw+LCA8Ym9keT4sIDxtYWluPiwgYW5kIDpmb2N1cyBzdGF0ZVxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTm9ybWFsaXNlQm9keSgkZm9udC1zbW9vdGhpbmc6IHRydWUsICRib3gtc2l6aW5nOiB0cnVlLCAkZm9jdXM6IHRydWUsICRyZWR1Y2UtbW90aW9uOiB0cnVlKSB7XG5cdGh0bWwsXG5cdGJvZHkge1xuXHRcdG1hcmdpbjogMDtcblx0XHR0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuXG5cdFx0LW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRcdC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cblxuXHRcdEBpZiAkZm9udC1zbW9vdGhpbmcge1xuXG5cdFx0XHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0XHRcdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG5cblx0XHR9XG5cblx0XHRAaWYgJGJveC1zaXppbmcge1xuXHRcdFx0QGluY2x1ZGUgb05vcm1hbGlzZUJveFNpemluZztcblx0XHR9XG5cblx0XHRAaWYgJHJlZHVjZS1tb3Rpb24ge1xuXHRcdFx0Ly8gSW1tZWRpYXRlbHkganVtcCBhbnkgYW5pbWF0aW9uIHRvIHRoZSBlbmQgcG9pbnQgaWYgdGhlIHVzZXIgaGFzXG5cdFx0XHQvLyBzZXQgdGhlaXIgZGV2aWNlIHRvIFwicHJlZmVycyByZWR1Y2VkIG1vdGlvblwiLlxuXHRcdFx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTFcblx0XHRcdEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cdFx0XHRcdCosXG5cdFx0XHRcdCo6YmVmb3JlLFxuXHRcdFx0XHQqOmFmdGVyIHtcblxuXHRcdFx0XHRcdGFuaW1hdGlvbi1kdXJhdGlvbjogMC4wMDFzICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cdFx0XHRcdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMDFzICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cdFx0XHRcdFx0YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMSAhaW1wb3J0YW50OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBHaXZlIDxtYWluPnMgdGhlIHByb3BlciBkaXNwbGF5IHZhbHVlIGluIElFLlxuXHRtYWluIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG5cdEBpZiAkZm9jdXMge1xuXHRcdEBpbmNsdWRlIF9vTm9ybWFsaXNlRm9jdXMoKTtcblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgZm9yIGZvY3VzZWQgZWxlbWVudHMuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VGb2N1cyB7XG5cdC8vIEFwcGx5IDpmb2N1cyBzdHlsZXMgYXMgYSBmYWxsYmFja1xuXHQvLyBUaGVzZSBzdHlsZXMgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbCBicm93c2VycyB0aGF0IGRvbid0IHVzZSB0aGUgcG9seWZpbGwsIHRoaXMgaW5jbHVkZXMgYnJvd3NlcnMgd2hpY2ggc3VwcG9ydCB0aGUgZmVhdHVyZSBuYXRpdmVseS5cblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkge1xuXHRcdC8vIFN0YW5kYXJkaXNlIGZvY3VzIHN0eWxlcy5cblx0XHQ6Zm9jdXMge1xuXHRcdFx0b3V0bGluZTogMnB4IHNvbGlkICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXG5cdFx0aW5wdXQ6Zm9jdXMsXG5cdFx0dGV4dGFyZWE6Zm9jdXMsXG5cdFx0c2VsZWN0OmZvY3VzIHtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHRcdH1cblx0fVxuXG5cdC8vIFdoZW4gdGhlIGZvY3VzLXZpc2libGUgcG9seWZpbGwgaXMgYXBwbGllZCBgLmpzLWZvY3VzLXZpc2libGVgIGlzIGFkZGVkIHRvIHRoZSBodG1sIGRvbSBub2RlXG5cdC8vICh0aGUgYm9keSBub2RlIGluIHY0IG9mIHRoZSAzcmQgcGFydHkgcG9seWZpbGwpXG5cblx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRib2R5LmpzLWZvY3VzLXZpc2libGUsIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0aHRtbC5qcy1mb2N1cy12aXNpYmxlIHtcblx0XHQvLyBTdGFuZGFyZGlzZSBmb2N1cyBzdHlsZXMuXG5cdFx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdC5mb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IDJweCBzb2xpZCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHRcdH1cblx0XHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0aW5wdXQuZm9jdXMtdmlzaWJsZSwgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdHRleHRhcmVhLmZvY3VzLXZpc2libGUsXG5cdFx0c2VsZWN0LmZvY3VzLXZpc2libGUge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4ICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXHRcdC8vIERpc2FibGUgYnJvd3NlciBkZWZhdWx0IGZvY3VzIHN0eWxlLlxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHQ6Zm9jdXM6bm90KC5mb2N1cy12aXNpYmxlKSB7XG5cdFx0XHRvdXRsaW5lOiAwO1xuXHRcdH1cblx0fVxuXG5cblx0Ly8gVGhlc2Ugc3R5bGVzIHdpbGwgYmUgaWdub3JlZCBieSBicm93c2VycyB3aGljaCBkbyBub3QgcmVjb2duaXNlIHRoZSA6Zm9jdXMtdmlzaWJsZSBzZWxlY3RvciAoYXMgcGVyIHRoZSB0aGlyZCBidWxsZXQgcG9pbnQgaW4gaHR0cHM6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy0zLyNDb25mb3JtYW5jZSlcblx0Ly8gSWYgYSBicm93c2VyIHN1cHBvcnRzIDpmb2N1cy12aXNpYmxlIHdlIHVuc2V0IHRoZSA6Zm9jdXMgc3R5bGVzIHRoYXQgd2VyZSBhcHBsaWVkIGFib3ZlXG5cdC8vICh3aXRoaW4gdGhlIGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBibG9jaykuXG5cdDpmb2N1cy12aXNpYmxlLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzIHtcblx0XHRvdXRsaW5lOiB1bnNldDtcblx0fVxuXG5cdDpmb2N1cy12aXNpYmxlLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cyxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHRleHRhcmVhOmZvY3VzLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMge1xuXHRcdGJveC1zaGFkb3c6IHVuc2V0O1xuXHR9XG5cblx0Ly8gU3R5bGVzIGdpdmVuIDpmb2N1cy12aXNpYmxlIHN1cHBvcnQuIEV4dHJhIHNlbGVjdG9ycyBuZWVkZWQgdG8gbWF0Y2hcblx0Ly8gcHJldmlvdXMgYDpmb2N1c2Agc2VsZWN0b3Igc3BlY2lmaWNpdHkuXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMtdmlzaWJsZSxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIDpmb2N1cy12aXNpYmxlLFxuXHQ6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0b3V0bGluZTogMnB4IHNvbGlkICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdH1cblxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMtdmlzaWJsZSxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIGlucHV0OmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgc2VsZWN0OmZvY3VzLXZpc2libGUsXG5cdGlucHV0OmZvY3VzLXZpc2libGUsXG5cdHRleHRhcmVhOmZvY3VzLXZpc2libGUsXG5cdHNlbGVjdDpmb2N1cy12aXNpYmxlIHtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0fVxuXG5cdC8vIFByZXZlbnQgSUUgZnJvbSBwdXR0aW5nIGZvY3VzIHN0eWxlcyBvbiB0aGUgYm9keSBvciBodG1sLiBUaGVzZSBzZWxlY3RvcnNcblx0Ly8gc2VydmUgYXMgYSBibGFja2xpc3QgZm9yIFwidGhpbmdzIHdlJ3ZlIGZvdW5kIGNhbiBoYXZlIGZvY3VzIGJ1dCB3ZSBkb24ndCB3YW50XCJcblx0aHRtbDpmb2N1cyxcblx0Ym9keTpmb2N1cyxcblx0W3JlYWRvbmx5XTpmb2N1cyB7XG5cdFx0b3V0bGluZTogbm9uZTtcblx0fVxuXG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byBsaW5rIGVsZW1lbnRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VMaW5rcyB7XG5cblx0Ly8gUmVtb3ZlIHRoZSBncmV5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuXHRhIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgb3V0bGluZSBvbiBmb2N1c2VkIGxpbmtzIHdoZW4gdGhleSBhcmVcblx0Ly8gYWxzbyBhY3RpdmUgb3IgaG92ZXJlZCBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cblx0YTphY3RpdmUsXG5cdGE6aG92ZXIge1xuXHRcdG91dGxpbmUtd2lkdGg6IDA7XG5cdH1cblxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gdGV4dCByZWxhdGVkIGVsZW1lbnRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VUZXh0IHtcblxuXHQvLyAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gRmlyZWZveCAzOS0uXG5cdC8vIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG5cdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0YWJiclt0aXRsZV0ge1xuXHRcdGJvcmRlci1ib3R0b206IDA7IC8vIFsxXVxuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvLyBbMl1cblx0XHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVjbGFyYXRpb24tYmxvY2stbm8tZHVwbGljYXRlLXByb3BlcnRpZXNcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8vIFsyXVxuXHR9XG5cblx0Ly8gUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXG5cdGIsXG5cdHN0cm9uZyB7XG5cdFx0Zm9udC13ZWlnaHQ6IGluaGVyaXQ7XG5cdH1cblxuXHQvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuXHRiLFxuXHRzdHJvbmcge1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkZXI7XG5cdH1cblxuXHQvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCBzdHlsZSBpbiBBbmRyb2lkIDQuMy0uXG5cdGRmbiB7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHR9XG5cblx0Ly8gUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG5cdC8vIGFsbCBicm93c2Vycy5cblx0c3ViLFxuXHRzdXAge1xuXHRcdGZvbnQtc2l6ZTogNzUlO1xuXHRcdGxpbmUtaGVpZ2h0OiAwO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG5cdH1cblxuXHRzdWIge1xuXHRcdGJvdHRvbTogLTAuMjVlbTtcblx0fVxuXG5cdHN1cCB7XG5cdFx0dG9wOiAtMC41ZW07XG5cdH1cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIHRoZSBpbWFnZSBlbGVtZW50XG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VJbWFnZXMge1xuXHQvLyBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLS5cblx0aW1nIHtcblx0XHRib3JkZXItc3R5bGU6IG5vbmU7XG5cdH1cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIGZvcm0gZWxlbWVudHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUZvcm1zIHtcblx0Ly8gUmVzdG9yZSB0aGUgZm9udCB3ZWlnaHQgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG5cdG9wdGdyb3VwIHtcblx0XHRmb250LXdlaWdodDogYm9sZDtcblx0fVxuXG5cdC8vIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuXHQvLyAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuXHQvLyAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG5cdGJ1dHRvbixcblx0aW5wdXQsICAgLy8gWzFdXG5cdHNlbGVjdCB7IC8vIFsyXVxuXHRcdG92ZXJmbG93OiB2aXNpYmxlO1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gU2FmYXJpLlxuXHQvLyAxLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG5cdGJ1dHRvbixcblx0aW5wdXQsXG5cdHNlbGVjdCxcblx0dGV4dGFyZWEgeyAvLyBbMV1cblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cblx0Ly8gMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuXHRidXR0b24sXG5cdHNlbGVjdCB7IC8vIFsxXVxuXHRcdHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHR9XG5cblx0Ly8gQ2hhbmdlIHRoZSBjdXJzb3IgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG5cdGJ1dHRvbixcblx0W3R5cGU9XCJidXR0b25cIl0sXG5cdFt0eXBlPVwicmVzZXRcIl0sXG5cdFt0eXBlPVwic3VibWl0XCJdIHtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdH1cblxuXHQvLyBSZXN0b3JlIHRoZSBkZWZhdWx0IGN1cnNvciB0byBkaXNhYmxlZCBlbGVtZW50cyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cblx0W2Rpc2FibGVkXSB7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cblx0YnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuXHRpbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdHBhZGRpbmc6IDA7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuXHR0ZXh0YXJlYSB7XG5cdFx0b3ZlcmZsb3c6IGF1dG87XG5cdH1cbn1cbiIsImh0bWw6YWZ0ZXJ7Y29udGVudDoneyBcImxheW91dFwiOiBcImRlZmF1bHRcIiwgXCJndXR0ZXJcIjogXCIxMHB4XCIgfSc7ZGlzcGxheTpub25lfUBtZWRpYShtaW4td2lkdGg6IDMwLjYyNWVtKXtodG1sOmFmdGVye2NvbnRlbnQ6J3sgXCJsYXlvdXRcIjogXCJTXCIsIFwiZ3V0dGVyXCI6IFwiMTBweFwiIH0nfX1AbWVkaWEobWluLXdpZHRoOiA0Ni4yNWVtKXtodG1sOmFmdGVye2NvbnRlbnQ6J3sgXCJsYXlvdXRcIjogXCJNXCIsIFwiZ3V0dGVyXCI6IFwiMjBweFwiIH0nfX1AbWVkaWEobWluLXdpZHRoOiA2MS4yNWVtKXtodG1sOmFmdGVye2NvbnRlbnQ6J3sgXCJsYXlvdXRcIjogXCJMXCIsIFwiZ3V0dGVyXCI6IFwiMjBweFwiIH0nfX1AbWVkaWEobWluLXdpZHRoOiA3Ni4yNWVtKXtodG1sOmFmdGVye2NvbnRlbnQ6J3sgXCJsYXlvdXRcIjogXCJYTFwiLCBcImd1dHRlclwiOiBcIjIwcHhcIiB9J319aHRtbDpiZWZvcmV7ZGlzcGxheTpub25lO2NvbnRlbnQ6J3tcImxheW91dHNcIjoge1wiU1wiOiBcIjQ5MHB4XCIsIFwiTVwiOiBcIjc0MHB4XCIsIFwiTFwiOiBcIjk4MHB4XCIsIFwiWExcIjogXCIxMjIwcHhcIn19J30uby1ncmlkLWNvbnRhaW5lcntib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzttaW4td2lkdGg6MjQwcHg7bWF4LXdpZHRoOjEyMjBweDtwb3NpdGlvbjpyZWxhdGl2ZTttYXgtd2lkdGg6MTIyMHB4O3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctcmlnaHQ6MTBweH1AbWVkaWEobWluLXdpZHRoOiA0Ni4yNWVtKXsuby1ncmlkLWNvbnRhaW5lcntwYWRkaW5nLWxlZnQ6MjBweDtwYWRkaW5nLXJpZ2h0OjIwcHh9fUBtZWRpYShtaW4td2lkdGg6IDQ2LjI1ZW0pey5vLWdyaWQtc25hcHB5IC5vLWdyaWQtY29udGFpbmVyLC5vLWdyaWQtY29udGFpbmVyLS1zbmFwcHl7bWF4LXdpZHRoOjc0MHB4fX1AbWVkaWEobWluLXdpZHRoOiA2MS4yNWVtKXsuby1ncmlkLXNuYXBweSAuby1ncmlkLWNvbnRhaW5lciwuby1ncmlkLWNvbnRhaW5lci0tc25hcHB5e21heC13aWR0aDo5ODBweH19QG1lZGlhKG1pbi13aWR0aDogNzYuMjVlbSl7Lm8tZ3JpZC1zbmFwcHkgLm8tZ3JpZC1jb250YWluZXIsLm8tZ3JpZC1jb250YWluZXItLXNuYXBweXttYXgtd2lkdGg6MTIyMHB4fX0uby1ncmlkLWNvbnRhaW5lci0tYmxlZWR7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS5vLWdyaWQtcm93e2NsZWFyOmJvdGg7ZmxleC13cmFwOndyYXA7ZGlzcGxheTpmbGV4O21hcmdpbi1sZWZ0Oi0xMHB4O3pvb206MX1AbWVkaWEgcHJpbnR7Lm8tZ3JpZC1yb3d7ZGlzcGxheTppbmhlcml0fX1AbWVkaWEobWluLXdpZHRoOiA0Ni4yNWVtKXsuby1ncmlkLXJvd3ttYXJnaW4tbGVmdDotMjBweH19Lm8tZ3JpZC1yb3c6YmVmb3JlLC5vLWdyaWQtcm93OmFmdGVye2NvbnRlbnQ6XCJcIjtkaXNwbGF5OnRhYmxlO2Rpc3BsYXk6ZmxleH0uby1ncmlkLXJvdzphZnRlcntjbGVhcjpib3RofS5vLWdyaWQtcm93LS1jb21wYWN0e21hcmdpbi1sZWZ0OjB9Lm8tZ3JpZC1yb3ctLWNvbXBhY3Q+W2RhdGEtby1ncmlkLWNvbHNwYW5de3BhZGRpbmctbGVmdDowfVtkYXRhLW8tZ3JpZC1jb2xzcGFuXXtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxvYXQ6bGVmdDtmbGV4OjEgMSAwJTtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLWxlZnQ6MTBweH1AbWVkaWEobWluLXdpZHRoOiA0Ni4yNWVtKXtbZGF0YS1vLWdyaWQtY29sc3Bhbl17cGFkZGluZy1sZWZ0OjIwcHh9fVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIjBcIl17ZGlzcGxheTpub25lfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIjFcIl17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjguMzMzMzMzMzMzMyU7bWluLXdpZHRoOjguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjguMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiMlwiXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MTYuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjE2LjY2NjY2NjY2NjclO21heC13aWR0aDoxNi42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIzXCJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoyNSU7bWluLXdpZHRoOjI1JTttYXgtd2lkdGg6MjUlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIjRcIl17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjMzLjMzMzMzMzMzMzMlO21pbi13aWR0aDozMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiNVwiXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NDEuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49XCI2XCJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1MCU7bWluLXdpZHRoOjUwJTttYXgtd2lkdGg6NTAlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIjdcIl17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjU4LjMzMzMzMzMzMzMlO21pbi13aWR0aDo1OC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiOFwiXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NjYuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49XCI5XCJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo3NSU7bWluLXdpZHRoOjc1JTttYXgtd2lkdGg6NzUlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIjEwXCJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo4My4zMzMzMzMzMzMzJTttaW4td2lkdGg6ODMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzMzMzMzMlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIjExXCJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo5MS42NjY2NjY2NjY3JTttaW4td2lkdGg6OTEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjkxLjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIjEyXCJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoxMDAlO21pbi13aWR0aDoxMDAlO21heC13aWR0aDoxMDAlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1oaWRlXXtkaXNwbGF5Om5vbmV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PWNlbnRlcl17bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bztmbG9hdDpub25lfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1mdWxsLXdpZHRoXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MTAwJTttaW4td2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1vbmUtaGFsZl17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjUwJTttaW4td2lkdGg6NTAlO21heC13aWR0aDo1MCU7d2lkdGg6NTAlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1vbmUtdGhpcmRde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczozMy4zMzMzMzMzMzMzJTttaW4td2lkdGg6MzMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjMzLjMzMzMzMzMzMzMlO3dpZHRoOjMzLjMzMzMzMzMzMzMlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj10d28tdGhpcmRzXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NjYuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JTt3aWR0aDo2Ni42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49b25lLXF1YXJ0ZXJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoyNSU7bWluLXdpZHRoOjI1JTttYXgtd2lkdGg6MjUlO3dpZHRoOjI1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49dGhyZWUtcXVhcnRlcnNde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo3NSU7bWluLXdpZHRoOjc1JTttYXgtd2lkdGg6NzUlO3dpZHRoOjc1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49cHVzaDBde2xlZnQ6MCU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49cHVsbDBde3JpZ2h0OjAlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49b2Zmc2V0MF17bWFyZ2luLWxlZnQ6MCV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PXB1c2gxXXtsZWZ0OjguMzMzMzMzMzMzMyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49cHVsbDFde3JpZ2h0OjguMzMzMzMzMzMzMyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1vZmZzZXQxXXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzMzMlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1wdXNoMl17bGVmdDoxNi42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1wdWxsMl17cmlnaHQ6MTYuNjY2NjY2NjY2NyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1vZmZzZXQyXXttYXJnaW4tbGVmdDoxNi42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49cHVzaDNde2xlZnQ6MjUlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PXB1bGwzXXtyaWdodDoyNSU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1vZmZzZXQzXXttYXJnaW4tbGVmdDoyNSV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PXB1c2g0XXtsZWZ0OjMzLjMzMzMzMzMzMzMlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PXB1bGw0XXtyaWdodDozMy4zMzMzMzMzMzMzJTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PW9mZnNldDRde21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzMzMlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1wdXNoNV17bGVmdDo0MS42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1wdWxsNV17cmlnaHQ6NDEuNjY2NjY2NjY2NyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1vZmZzZXQ1XXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49cHVzaDZde2xlZnQ6NTAlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PXB1bGw2XXtyaWdodDo1MCU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1vZmZzZXQ2XXttYXJnaW4tbGVmdDo1MCV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PXB1c2g3XXtsZWZ0OjU4LjMzMzMzMzMzMzMlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PXB1bGw3XXtyaWdodDo1OC4zMzMzMzMzMzMzJTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PW9mZnNldDdde21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1wdXNoOF17bGVmdDo2Ni42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1wdWxsOF17cmlnaHQ6NjYuNjY2NjY2NjY2NyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1vZmZzZXQ4XXttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49cHVzaDlde2xlZnQ6NzUlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PXB1bGw5XXtyaWdodDo3NSU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1vZmZzZXQ5XXttYXJnaW4tbGVmdDo3NSV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PXB1c2gxMF17bGVmdDo4My4zMzMzMzMzMzMzJTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1wdWxsMTBde3JpZ2h0OjgzLjMzMzMzMzMzMzMlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49b2Zmc2V0MTBde21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1wdXNoMTFde2xlZnQ6OTEuNjY2NjY2NjY2NyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49cHVsbDExXXtyaWdodDo5MS42NjY2NjY2NjY3JTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PW9mZnNldDExXXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NjY3JX1AbWVkaWEobWluLXdpZHRoOiAzMC42MjVlbSl7W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNoaWRlXXtkaXNwbGF5Om5vbmV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNjZW50ZXJde21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87ZmxvYXQ6bm9uZX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49U3VuY2VudGVyXXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowO2Zsb2F0OmxlZnR9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNmdWxsLXdpZHRoXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MTAwJTttaW4td2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Tb25lLWhhbGZde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1MCU7bWluLXdpZHRoOjUwJTttYXgtd2lkdGg6NTAlO3dpZHRoOjUwJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49U29uZS10aGlyZF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjMzLjMzMzMzMzMzMzMlO21pbi13aWR0aDozMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyU7d2lkdGg6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVN0d28tdGhpcmRzXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NjYuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JTt3aWR0aDo2Ni42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49U29uZS1xdWFydGVyXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MjUlO21pbi13aWR0aDoyNSU7bWF4LXdpZHRoOjI1JTt3aWR0aDoyNSV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVN0aHJlZS1xdWFydGVyc117ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjc1JTttaW4td2lkdGg6NzUlO21heC13aWR0aDo3NSU7d2lkdGg6NzUlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TcHVzaDBde2xlZnQ6MCU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49U3B1bGwwXXtyaWdodDowJTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNvZmZzZXQwXXttYXJnaW4tbGVmdDowJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49U3B1c2gxXXtsZWZ0OjguMzMzMzMzMzMzMyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49U3B1bGwxXXtyaWdodDo4LjMzMzMzMzMzMzMlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49U29mZnNldDFde21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNwdXNoMl17bGVmdDoxNi42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TcHVsbDJde3JpZ2h0OjE2LjY2NjY2NjY2NjclO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49U29mZnNldDJde21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TcHVzaDNde2xlZnQ6MjUlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNwdWxsM117cmlnaHQ6MjUlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49U29mZnNldDNde21hcmdpbi1sZWZ0OjI1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49U3B1c2g0XXtsZWZ0OjMzLjMzMzMzMzMzMzMlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNwdWxsNF17cmlnaHQ6MzMuMzMzMzMzMzMzMyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Tb2Zmc2V0NF17bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNwdXNoNV17bGVmdDo0MS42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TcHVsbDVde3JpZ2h0OjQxLjY2NjY2NjY2NjclO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49U29mZnNldDVde21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TcHVzaDZde2xlZnQ6NTAlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNwdWxsNl17cmlnaHQ6NTAlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49U29mZnNldDZde21hcmdpbi1sZWZ0OjUwJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49U3B1c2g3XXtsZWZ0OjU4LjMzMzMzMzMzMzMlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNwdWxsN117cmlnaHQ6NTguMzMzMzMzMzMzMyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Tb2Zmc2V0N117bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNwdXNoOF17bGVmdDo2Ni42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TcHVsbDhde3JpZ2h0OjY2LjY2NjY2NjY2NjclO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49U29mZnNldDhde21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TcHVzaDlde2xlZnQ6NzUlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNwdWxsOV17cmlnaHQ6NzUlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49U29mZnNldDlde21hcmdpbi1sZWZ0Ojc1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49U3B1c2gxMF17bGVmdDo4My4zMzMzMzMzMzMzJTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TcHVsbDEwXXtyaWdodDo4My4zMzMzMzMzMzMzJTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNvZmZzZXQxMF17bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVNwdXNoMTFde2xlZnQ6OTEuNjY2NjY2NjY2NyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49U3B1bGwxMV17cmlnaHQ6OTEuNjY2NjY2NjY2NyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Tb2Zmc2V0MTFde21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TMF17ZGlzcGxheTpub25lfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TMV17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjguMzMzMzMzMzMzMyU7bWluLXdpZHRoOjguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjguMzMzMzMzMzMzMyU7d2lkdGg6OC4zMzMzMzMzMzMzJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49UzJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoxNi42NjY2NjY2NjY3JTttaW4td2lkdGg6MTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclO3dpZHRoOjE2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TM117ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjI1JTttaW4td2lkdGg6MjUlO21heC13aWR0aDoyNSU7d2lkdGg6MjUlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TNF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjMzLjMzMzMzMzMzMzMlO21pbi13aWR0aDozMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyU7d2lkdGg6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVM1XXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NDEuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JTt3aWR0aDo0MS42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49UzZde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1MCU7bWluLXdpZHRoOjUwJTttYXgtd2lkdGg6NTAlO3dpZHRoOjUwJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49Uzdde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1OC4zMzMzMzMzMzMzJTttaW4td2lkdGg6NTguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjU4LjMzMzMzMzMzMzMlO3dpZHRoOjU4LjMzMzMzMzMzMzMlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1TOF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjY2LjY2NjY2NjY2NjclO21pbi13aWR0aDo2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyU7d2lkdGg6NjYuNjY2NjY2NjY2NyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVM5XXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NzUlO21pbi13aWR0aDo3NSU7bWF4LXdpZHRoOjc1JTt3aWR0aDo3NSV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVMxMF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjgzLjMzMzMzMzMzMzMlO21pbi13aWR0aDo4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyU7d2lkdGg6ODMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVMxMV17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjkxLjY2NjY2NjY2NjclO21pbi13aWR0aDo5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyU7d2lkdGg6OTEuNjY2NjY2NjY2NyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVMxMl17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjEwMCU7bWluLXdpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJX19QG1lZGlhKG1pbi13aWR0aDogNDYuMjVlbSl7W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1oaWRlXXtkaXNwbGF5Om5vbmV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1jZW50ZXJde21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87ZmxvYXQ6bm9uZX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TXVuY2VudGVyXXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowO2Zsb2F0OmxlZnR9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1mdWxsLXdpZHRoXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MTAwJTttaW4td2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Nb25lLWhhbGZde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1MCU7bWluLXdpZHRoOjUwJTttYXgtd2lkdGg6NTAlO3dpZHRoOjUwJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TW9uZS10aGlyZF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjMzLjMzMzMzMzMzMzMlO21pbi13aWR0aDozMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyU7d2lkdGg6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU10d28tdGhpcmRzXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NjYuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JTt3aWR0aDo2Ni42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TW9uZS1xdWFydGVyXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MjUlO21pbi13aWR0aDoyNSU7bWF4LXdpZHRoOjI1JTt3aWR0aDoyNSV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU10aHJlZS1xdWFydGVyc117ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjc1JTttaW4td2lkdGg6NzUlO21heC13aWR0aDo3NSU7d2lkdGg6NzUlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NcHVzaDBde2xlZnQ6MCU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TXB1bGwwXXtyaWdodDowJTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1vZmZzZXQwXXttYXJnaW4tbGVmdDowJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TXB1c2gxXXtsZWZ0OjguMzMzMzMzMzMzMyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TXB1bGwxXXtyaWdodDo4LjMzMzMzMzMzMzMlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TW9mZnNldDFde21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1wdXNoMl17bGVmdDoxNi42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NcHVsbDJde3JpZ2h0OjE2LjY2NjY2NjY2NjclO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TW9mZnNldDJde21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NcHVzaDNde2xlZnQ6MjUlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1wdWxsM117cmlnaHQ6MjUlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TW9mZnNldDNde21hcmdpbi1sZWZ0OjI1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TXB1c2g0XXtsZWZ0OjMzLjMzMzMzMzMzMzMlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1wdWxsNF17cmlnaHQ6MzMuMzMzMzMzMzMzMyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Nb2Zmc2V0NF17bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1wdXNoNV17bGVmdDo0MS42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NcHVsbDVde3JpZ2h0OjQxLjY2NjY2NjY2NjclO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TW9mZnNldDVde21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NcHVzaDZde2xlZnQ6NTAlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1wdWxsNl17cmlnaHQ6NTAlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TW9mZnNldDZde21hcmdpbi1sZWZ0OjUwJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TXB1c2g3XXtsZWZ0OjU4LjMzMzMzMzMzMzMlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1wdWxsN117cmlnaHQ6NTguMzMzMzMzMzMzMyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Nb2Zmc2V0N117bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1wdXNoOF17bGVmdDo2Ni42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NcHVsbDhde3JpZ2h0OjY2LjY2NjY2NjY2NjclO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TW9mZnNldDhde21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NcHVzaDlde2xlZnQ6NzUlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1wdWxsOV17cmlnaHQ6NzUlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TW9mZnNldDlde21hcmdpbi1sZWZ0Ojc1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TXB1c2gxMF17bGVmdDo4My4zMzMzMzMzMzMzJTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NcHVsbDEwXXtyaWdodDo4My4zMzMzMzMzMzMzJTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1vZmZzZXQxMF17bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU1wdXNoMTFde2xlZnQ6OTEuNjY2NjY2NjY2NyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TXB1bGwxMV17cmlnaHQ6OTEuNjY2NjY2NjY2NyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Nb2Zmc2V0MTFde21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NMF17ZGlzcGxheTpub25lfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NMV17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjguMzMzMzMzMzMzMyU7bWluLXdpZHRoOjguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjguMzMzMzMzMzMzMyU7d2lkdGg6OC4zMzMzMzMzMzMzJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TTJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoxNi42NjY2NjY2NjY3JTttaW4td2lkdGg6MTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclO3dpZHRoOjE2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NM117ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjI1JTttaW4td2lkdGg6MjUlO21heC13aWR0aDoyNSU7d2lkdGg6MjUlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NNF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjMzLjMzMzMzMzMzMzMlO21pbi13aWR0aDozMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyU7d2lkdGg6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU01XXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NDEuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JTt3aWR0aDo0MS42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TTZde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1MCU7bWluLXdpZHRoOjUwJTttYXgtd2lkdGg6NTAlO3dpZHRoOjUwJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TTdde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1OC4zMzMzMzMzMzMzJTttaW4td2lkdGg6NTguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjU4LjMzMzMzMzMzMzMlO3dpZHRoOjU4LjMzMzMzMzMzMzMlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1NOF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjY2LjY2NjY2NjY2NjclO21pbi13aWR0aDo2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyU7d2lkdGg6NjYuNjY2NjY2NjY2NyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU05XXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NzUlO21pbi13aWR0aDo3NSU7bWF4LXdpZHRoOjc1JTt3aWR0aDo3NSV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU0xMF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjgzLjMzMzMzMzMzMzMlO21pbi13aWR0aDo4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyU7d2lkdGg6ODMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU0xMV17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjkxLjY2NjY2NjY2NjclO21pbi13aWR0aDo5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyU7d2lkdGg6OTEuNjY2NjY2NjY2NyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PU0xMl17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjEwMCU7bWluLXdpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJX19QG1lZGlhKG1pbi13aWR0aDogNjEuMjVlbSl7W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxoaWRlXXtkaXNwbGF5Om5vbmV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxjZW50ZXJde21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87ZmxvYXQ6bm9uZX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49THVuY2VudGVyXXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowO2Zsb2F0OmxlZnR9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxmdWxsLXdpZHRoXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MTAwJTttaW4td2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Mb25lLWhhbGZde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1MCU7bWluLXdpZHRoOjUwJTttYXgtd2lkdGg6NTAlO3dpZHRoOjUwJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TG9uZS10aGlyZF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjMzLjMzMzMzMzMzMzMlO21pbi13aWR0aDozMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyU7d2lkdGg6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUx0d28tdGhpcmRzXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NjYuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JTt3aWR0aDo2Ni42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TG9uZS1xdWFydGVyXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MjUlO21pbi13aWR0aDoyNSU7bWF4LXdpZHRoOjI1JTt3aWR0aDoyNSV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUx0aHJlZS1xdWFydGVyc117ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjc1JTttaW4td2lkdGg6NzUlO21heC13aWR0aDo3NSU7d2lkdGg6NzUlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1McHVzaDBde2xlZnQ6MCU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49THB1bGwwXXtyaWdodDowJTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxvZmZzZXQwXXttYXJnaW4tbGVmdDowJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49THB1c2gxXXtsZWZ0OjguMzMzMzMzMzMzMyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49THB1bGwxXXtyaWdodDo4LjMzMzMzMzMzMzMlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TG9mZnNldDFde21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxwdXNoMl17bGVmdDoxNi42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1McHVsbDJde3JpZ2h0OjE2LjY2NjY2NjY2NjclO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TG9mZnNldDJde21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1McHVzaDNde2xlZnQ6MjUlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxwdWxsM117cmlnaHQ6MjUlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TG9mZnNldDNde21hcmdpbi1sZWZ0OjI1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49THB1c2g0XXtsZWZ0OjMzLjMzMzMzMzMzMzMlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxwdWxsNF17cmlnaHQ6MzMuMzMzMzMzMzMzMyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Mb2Zmc2V0NF17bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxwdXNoNV17bGVmdDo0MS42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1McHVsbDVde3JpZ2h0OjQxLjY2NjY2NjY2NjclO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TG9mZnNldDVde21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1McHVzaDZde2xlZnQ6NTAlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxwdWxsNl17cmlnaHQ6NTAlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TG9mZnNldDZde21hcmdpbi1sZWZ0OjUwJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49THB1c2g3XXtsZWZ0OjU4LjMzMzMzMzMzMzMlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxwdWxsN117cmlnaHQ6NTguMzMzMzMzMzMzMyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Mb2Zmc2V0N117bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxwdXNoOF17bGVmdDo2Ni42NjY2NjY2NjY3JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1McHVsbDhde3JpZ2h0OjY2LjY2NjY2NjY2NjclO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TG9mZnNldDhde21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1McHVzaDlde2xlZnQ6NzUlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxwdWxsOV17cmlnaHQ6NzUlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49TG9mZnNldDlde21hcmdpbi1sZWZ0Ojc1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49THB1c2gxMF17bGVmdDo4My4zMzMzMzMzMzMzJTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1McHVsbDEwXXtyaWdodDo4My4zMzMzMzMzMzMzJTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxvZmZzZXQxMF17bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUxwdXNoMTFde2xlZnQ6OTEuNjY2NjY2NjY2NyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49THB1bGwxMV17cmlnaHQ6OTEuNjY2NjY2NjY2NyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1Mb2Zmc2V0MTFde21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1MMF17ZGlzcGxheTpub25lfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1MMV17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjguMzMzMzMzMzMzMyU7bWluLXdpZHRoOjguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjguMzMzMzMzMzMzMyU7d2lkdGg6OC4zMzMzMzMzMzMzJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TDJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoxNi42NjY2NjY2NjY3JTttaW4td2lkdGg6MTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclO3dpZHRoOjE2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1MM117ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjI1JTttaW4td2lkdGg6MjUlO21heC13aWR0aDoyNSU7d2lkdGg6MjUlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1MNF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjMzLjMzMzMzMzMzMzMlO21pbi13aWR0aDozMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyU7d2lkdGg6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUw1XXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NDEuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JTt3aWR0aDo0MS42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TDZde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1MCU7bWluLXdpZHRoOjUwJTttYXgtd2lkdGg6NTAlO3dpZHRoOjUwJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49TDdde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczo1OC4zMzMzMzMzMzMzJTttaW4td2lkdGg6NTguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjU4LjMzMzMzMzMzMzMlO3dpZHRoOjU4LjMzMzMzMzMzMzMlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1MOF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjY2LjY2NjY2NjY2NjclO21pbi13aWR0aDo2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyU7d2lkdGg6NjYuNjY2NjY2NjY2NyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUw5XXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NzUlO21pbi13aWR0aDo3NSU7bWF4LXdpZHRoOjc1JTt3aWR0aDo3NSV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUwxMF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjgzLjMzMzMzMzMzMzMlO21pbi13aWR0aDo4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyU7d2lkdGg6ODMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUwxMV17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjkxLjY2NjY2NjY2NjclO21pbi13aWR0aDo5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyU7d2lkdGg6OTEuNjY2NjY2NjY2NyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PUwxMl17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjEwMCU7bWluLXdpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJX19QG1lZGlhKG1pbi13aWR0aDogNzYuMjVlbSl7W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMaGlkZV17ZGlzcGxheTpub25lfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTGNlbnRlcl17bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bztmbG9hdDpub25lfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTHVuY2VudGVyXXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowO2Zsb2F0OmxlZnR9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMZnVsbC13aWR0aF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjEwMCU7bWluLXdpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49WExvbmUtaGFsZl17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjUwJTttaW4td2lkdGg6NTAlO21heC13aWR0aDo1MCU7d2lkdGg6NTAlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTG9uZS10aGlyZF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjMzLjMzMzMzMzMzMzMlO21pbi13aWR0aDozMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyU7d2lkdGg6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMdHdvLXRoaXJkc117ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjY2LjY2NjY2NjY2NjclO21pbi13aWR0aDo2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyU7d2lkdGg6NjYuNjY2NjY2NjY2NyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMb25lLXF1YXJ0ZXJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoyNSU7bWluLXdpZHRoOjI1JTttYXgtd2lkdGg6MjUlO3dpZHRoOjI1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49WEx0aHJlZS1xdWFydGVyc117ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjc1JTttaW4td2lkdGg6NzUlO21heC13aWR0aDo3NSU7d2lkdGg6NzUlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTHB1c2gwXXtsZWZ0OjAlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMcHVsbDBde3JpZ2h0OjAlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49WExvZmZzZXQwXXttYXJnaW4tbGVmdDowJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49WExwdXNoMV17bGVmdDo4LjMzMzMzMzMzMzMlO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMcHVsbDFde3JpZ2h0OjguMzMzMzMzMzMzMyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTG9mZnNldDFde21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMcHVzaDJde2xlZnQ6MTYuNjY2NjY2NjY2NyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49WExwdWxsMl17cmlnaHQ6MTYuNjY2NjY2NjY2NyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTG9mZnNldDJde21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTHB1c2gzXXtsZWZ0OjI1JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTHB1bGwzXXtyaWdodDoyNSU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTG9mZnNldDNde21hcmdpbi1sZWZ0OjI1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49WExwdXNoNF17bGVmdDozMy4zMzMzMzMzMzMzJTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTHB1bGw0XXtyaWdodDozMy4zMzMzMzMzMzMzJTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMb2Zmc2V0NF17bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMcHVzaDVde2xlZnQ6NDEuNjY2NjY2NjY2NyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49WExwdWxsNV17cmlnaHQ6NDEuNjY2NjY2NjY2NyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTG9mZnNldDVde21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTHB1c2g2XXtsZWZ0OjUwJTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTHB1bGw2XXtyaWdodDo1MCU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTG9mZnNldDZde21hcmdpbi1sZWZ0OjUwJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49WExwdXNoN117bGVmdDo1OC4zMzMzMzMzMzMzJTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTHB1bGw3XXtyaWdodDo1OC4zMzMzMzMzMzMzJTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMb2Zmc2V0N117bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMcHVzaDhde2xlZnQ6NjYuNjY2NjY2NjY2NyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49WExwdWxsOF17cmlnaHQ6NjYuNjY2NjY2NjY2NyU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTG9mZnNldDhde21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTHB1c2g5XXtsZWZ0Ojc1JTtyaWdodDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTHB1bGw5XXtyaWdodDo3NSU7bGVmdDphdXRvfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTG9mZnNldDlde21hcmdpbi1sZWZ0Ojc1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49WExwdXNoMTBde2xlZnQ6ODMuMzMzMzMzMzMzMyU7cmlnaHQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49WExwdWxsMTBde3JpZ2h0OjgzLjMzMzMzMzMzMzMlO2xlZnQ6YXV0b31bZGF0YS1vLWdyaWQtY29sc3Bhbn49WExvZmZzZXQxMF17bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMcHVzaDExXXtsZWZ0OjkxLjY2NjY2NjY2NjclO3JpZ2h0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMcHVsbDExXXtyaWdodDo5MS42NjY2NjY2NjY3JTtsZWZ0OmF1dG99W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMb2Zmc2V0MTFde21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTDBde2Rpc3BsYXk6bm9uZX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49WEwxXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6OC4zMzMzMzMzMzMzJTttaW4td2lkdGg6OC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMzMzMzJTt3aWR0aDo4LjMzMzMzMzMzMzMlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTDJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoxNi42NjY2NjY2NjY3JTttaW4td2lkdGg6MTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclO3dpZHRoOjE2LjY2NjY2NjY2NjclfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTDNde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoyNSU7bWluLXdpZHRoOjI1JTttYXgtd2lkdGg6MjUlO3dpZHRoOjI1JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49WEw0XXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6MzMuMzMzMzMzMzMzMyU7bWluLXdpZHRoOjMzLjMzMzMzMzMzMzMlO21heC13aWR0aDozMy4zMzMzMzMzMzMzJTt3aWR0aDozMy4zMzMzMzMzMzMzJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49WEw1XXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NDEuNjY2NjY2NjY2NyU7bWluLXdpZHRoOjQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JTt3aWR0aDo0MS42NjY2NjY2NjY3JX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49WEw2XXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6NTAlO21pbi13aWR0aDo1MCU7bWF4LXdpZHRoOjUwJTt3aWR0aDo1MCV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMN117ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjU4LjMzMzMzMzMzMzMlO21pbi13aWR0aDo1OC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzMzMzMyU7d2lkdGg6NTguMzMzMzMzMzMzMyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMOF17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjY2LjY2NjY2NjY2NjclO21pbi13aWR0aDo2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyU7d2lkdGg6NjYuNjY2NjY2NjY2NyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMOV17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjc1JTttaW4td2lkdGg6NzUlO21heC13aWR0aDo3NSU7d2lkdGg6NzUlfVtkYXRhLW8tZ3JpZC1jb2xzcGFufj1YTDEwXXtkaXNwbGF5OmJsb2NrO2ZsZXgtYmFzaXM6ODMuMzMzMzMzMzMzMyU7bWluLXdpZHRoOjgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMzMzMzMzMzJTt3aWR0aDo4My4zMzMzMzMzMzMzJX1bZGF0YS1vLWdyaWQtY29sc3Bhbn49WEwxMV17ZGlzcGxheTpibG9jaztmbGV4LWJhc2lzOjkxLjY2NjY2NjY2NjclO21pbi13aWR0aDo5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyU7d2lkdGg6OTEuNjY2NjY2NjY2NyV9W2RhdGEtby1ncmlkLWNvbHNwYW5+PVhMMTJde2Rpc3BsYXk6YmxvY2s7ZmxleC1iYXNpczoxMDAlO21pbi13aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO3dpZHRoOjEwMCV9fUBmb250LWZhY2V7c3JjOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9NZXRyaWNXZWItVGhpbi53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLVRoaW4ud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO2ZvbnQtZmFtaWx5OlwiTWV0cmljV2ViXCI7Zm9udC13ZWlnaHQ6MTAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwfUBmb250LWZhY2V7c3JjOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9NZXRyaWNXZWItTGlnaHQud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1MaWdodC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJNZXRyaWNXZWJcIjtmb250LXdlaWdodDozMDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1MaWdodEl0YWxpYy53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLUxpZ2h0SXRhbGljLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIk1ldHJpY1dlYlwiO2ZvbnQtd2VpZ2h0OjMwMDtmb250LXN0eWxlOml0YWxpYztmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLVJlZ3VsYXIud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1SZWd1bGFyLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIk1ldHJpY1dlYlwiO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLVJlZ3VsYXJJdGFsaWMud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1SZWd1bGFySXRhbGljLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIk1ldHJpY1dlYlwiO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOml0YWxpYztmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLU1lZGl1bS53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLU1lZGl1bS53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJNZXRyaWNXZWJcIjtmb250LXdlaWdodDo1MDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1TZW1pYm9sZC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLVNlbWlib2xkLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIk1ldHJpY1dlYlwiO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLUJvbGQud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1Cb2xkLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIk1ldHJpY1dlYlwiO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLUJvbGRJdGFsaWMud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1Cb2xkSXRhbGljLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIk1ldHJpY1dlYlwiO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXN0eWxlOml0YWxpYztmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLUJsYWNrLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9NZXRyaWNXZWItQmxhY2sud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO2ZvbnQtZmFtaWx5OlwiTWV0cmljV2ViXCI7Zm9udC13ZWlnaHQ6OTAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwfUBmb250LWZhY2V7c3JjOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLUxpZ2h0LndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLUxpZ2h0LndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIkZpbmFuY2llckRpc3BsYXlXZWJcIjtmb250LXdlaWdodDozMDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItTGlnaHRJdGFsaWMud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItTGlnaHRJdGFsaWMud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO2ZvbnQtZmFtaWx5OlwiRmluYW5jaWVyRGlzcGxheVdlYlwiO2ZvbnQtd2VpZ2h0OjMwMDtmb250LXN0eWxlOml0YWxpYztmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1SZWd1bGFyLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLVJlZ3VsYXIud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO2ZvbnQtZmFtaWx5OlwiRmluYW5jaWVyRGlzcGxheVdlYlwiO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1SZWd1bGFySXRhbGljLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLVJlZ3VsYXJJdGFsaWMud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO2ZvbnQtZmFtaWx5OlwiRmluYW5jaWVyRGlzcGxheVdlYlwiO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOml0YWxpYztmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1NZWRpdW1JdGFsaWMud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItTWVkaXVtSXRhbGljLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIkZpbmFuY2llckRpc3BsYXlXZWJcIjtmb250LXdlaWdodDo1MDA7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItTWVkaXVtLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLU1lZGl1bS53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJGaW5hbmNpZXJEaXNwbGF5V2ViXCI7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwfUBmb250LWZhY2V7c3JjOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLVNlbWlib2xkLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLVNlbWlib2xkLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIkZpbmFuY2llckRpc3BsYXlXZWJcIjtmb250LXdlaWdodDo2MDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItU2VtaWJvbGRJdGFsaWMud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItU2VtaWJvbGRJdGFsaWMud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO2ZvbnQtZmFtaWx5OlwiRmluYW5jaWVyRGlzcGxheVdlYlwiO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXN0eWxlOml0YWxpYztmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1Cb2xkLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLUJvbGQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO2ZvbnQtZmFtaWx5OlwiRmluYW5jaWVyRGlzcGxheVdlYlwiO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1CbGFjay53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1CbGFjay53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJGaW5hbmNpZXJEaXNwbGF5V2ViXCI7Zm9udC13ZWlnaHQ6OTAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwfS5vLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC0xe2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MzJweDtsaW5lLWhlaWdodDozMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMzMzMDJlO21hcmdpbjowIDAgMTZweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtMXtmb250LXNpemU6MjYuNTZweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC0ye2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MjhweDtsaW5lLWhlaWdodDozMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMzMzMDJlO21hcmdpbjowIDAgMTZweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtMntmb250LXNpemU6MjMuMjRweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC0ze2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MjRweDtsaW5lLWhlaWdodDoyOHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMzMzMDJlO21hcmdpbjowIDAgMTZweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtM3tmb250LXNpemU6MTkuOTJweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC00e2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MjBweDtsaW5lLWhlaWdodDoyNHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMzMzMDJlO21hcmdpbjowIDAgMTZweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtNHtmb250LXNpemU6MTYuNnB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS1oZWFkaW5nLWxldmVsLTV7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjIwcHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiMzMzMwMmU7bWFyZ2luOjAgMCAxNnB4fS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIC5vLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC01e2ZvbnQtc2l6ZToxNC45NHB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS1oZWFkaW5nLWxldmVsLTZ7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjIwcHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiMzMzMwMmU7bWFyZ2luOjAgMCAxNnB4fS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIC5vLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC02e2ZvbnQtc2l6ZToxMy4yOHB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS1ib2xke2ZvbnQtd2VpZ2h0OjYwMH0uby10eXBvZ3JhcGh5LWl0YWxpY3tmb250LXN0eWxlOml0YWxpY30uby10eXBvZ3JhcGh5LXN1cHtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOi42NjZlbTtwb3NpdGlvbjpzdGF0aWM7dmVydGljYWwtYWxpZ246c3VwZXI7bGluZS1oZWlnaHQ6MDtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOi0xZW19Lm8tdHlwb2dyYXBoeS1zdWJ7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTouNjY2ZW07cG9zaXRpb246c3RhdGljO3ZlcnRpY2FsLWFsaWduOnN1YjtsaW5lLWhlaWdodDowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1ib3R0b206LTFlbX0uby10eXBvZ3JhcGh5LWJvZHl7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjIwcHg7bWFyZ2luOjAgMCAyNHB4O2NvbG9yOiMzMzMwMmV9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLXR5cG9ncmFwaHktYm9keXtmb250LXNpemU6MTUuNjZweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktbGlua3t0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcjtib3JkZXItYm90dG9tOi4yNWV4IHNvbGlkO2NvbG9yOiMwZDc2ODA7Ym9yZGVyLWJvdHRvbS1jb2xvcjojY2ZkOGQxO3RleHQtZGVjb3JhdGlvbi1jb2xvcjojY2ZkOGQxfUBzdXBwb3J0cyh0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAwLjI1ZXgpey5vLXR5cG9ncmFwaHktbGlua3tib3JkZXItYm90dG9tOjA7dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczouMjVleDt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9fS5vLXR5cG9ncmFwaHktbGluazpob3Zlcntjb2xvcjojMDg0NzRkO2JvcmRlci1ib3R0b20tY29sb3I6IzllYzBiZDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzllYzBiZH0uby10eXBvZ3JhcGh5LWxpbms6Zm9jdXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjp0cmFuc3BhcmVudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzA4NDc0ZH0uby10eXBvZ3JhcGh5LWxpbmstLWV4dGVybmFse2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2ltYWdlL3YyL2ltYWdlcy9yYXcvZnRpY29uLXYxOm91dHNpZGUtcGFnZT9zb3VyY2U9aWctcHJvamVjdHMmdGludD0lMjMwRDc2ODAsJTIzMEQ3NjgwJmZvcm1hdD1zdmdcIik7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3BhZGRpbmctcmlnaHQ6Y2FsYygxZW0gKyAwLjVjaCAtIDAuMjVlbSAtIDAuMjVlbSk7YmFja2dyb3VuZC1wb3NpdGlvbi14OmNhbGMoMTAwJSArIC41Y2gpO2JhY2tncm91bmQtb3JpZ2luOmJvcmRlci1ib3g7YmFja2dyb3VuZC1zaXplOmNhbGMoMWVtICsgMC41Y2gpIGNhbGMoMWVtICsgMC41Y2gpfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuby10eXBvZ3JhcGh5LWxpbmstLWV4dGVybmFse2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2ltYWdlL3YyL2ltYWdlcy9yYXcvZnRpY29uLXYxOm91dHNpZGUtcGFnZT9zb3VyY2U9aWctcHJvamVjdHMmdGludD0lMjNmZmZmZmYsJTIzZmZmZmZmJmZvcm1hdD1zdmdcIil9fUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYmxhY2stb24td2hpdGUpey5vLXR5cG9ncmFwaHktbGluay0tZXh0ZXJuYWx7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvaW1hZ2UvdjIvaW1hZ2VzL3Jhdy9mdGljb24tdjE6b3V0c2lkZS1wYWdlP3NvdXJjZT1pZy1wcm9qZWN0cyZ0aW50PSUyMzAwMDAwMCwlMjMwMDAwMDAmZm9ybWF0PXN2Z1wiKX19QHN1cHBvcnRzKGJhY2tncm91bmQtc2l6ZTogY29udGFpbil7Lm8tdHlwb2dyYXBoeS1saW5rLS1leHRlcm5hbHtiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6Y2FsYygxMDAlICsgMC4yNWV4IC0gMXB4KX19QHN1cHBvcnRzKHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDAuMjVleCl7Lm8tdHlwb2dyYXBoeS1saW5rLS1leHRlcm5hbHtiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6Y2FsYygxMDAlICsgMC4yNWVtIC0gMC4yNWV4IC0gMXB4KX19QHN1cHBvcnRzKGJhY2tncm91bmQtc2l6ZTogY29udGFpbil7Lm8tdHlwb2dyYXBoeS1saW5rLS1leHRlcm5hbHtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbn19Lm8tdHlwb2dyYXBoeS1saW5rLS1leHRlcm5hbFt0YXJnZXQ9X2JsYW5rXTphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMCAwIDAgMCk7Y2xpcC1wYXRoOnBvbHlnb24oMCAwLCAwIDApO21hcmdpbjotMXB4O2JvcmRlcjowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7d2lkdGg6MnB4O2hlaWdodDoycHg7d2hpdGUtc3BhY2U6bm93cmFwO2NvbnRlbnQ6XCIob3BlbnMgYSBuZXcgd2luZG93KVwifS5vLXR5cG9ncmFwaHktbGlzdHttYXJnaW46MCAwIDI0cHg7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0uby10eXBvZ3JhcGh5LWxpc3Q+bGl7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7cGFkZGluZy1sZWZ0OmNhbGMoMmNoICsgNHB4KX0uby10eXBvZ3JhcGh5LWxpc3Q+bGk6YmVmb3Jle2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIgbGVmdH0uby10eXBvZ3JhcGh5LWxpc3QtLW9yZGVyZWR7Y291bnRlci1yZXNldDppdGVtfS5vLXR5cG9ncmFwaHktbGlzdC0tb3JkZXJlZD5saTpiZWZvcmV7Zm9udC13ZWlnaHQ6NjAwO2NvbnRlbnQ6Y291bnRlcihpdGVtKTtjb3VudGVyLWluY3JlbWVudDppdGVtO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpcInRudW1cIjt0cmFuc2Zvcm06c2NhbGUoMC44ODg4ODg4ODg5KTttYXJnaW4tbGVmdDotMC4xNDIyMjIyMjIyY2h9Lm8tdHlwb2dyYXBoeS1saXN0LS11bm9yZGVyZWQ+bGk6YmVmb3Jle2NvbnRlbnQ6XCLigKJcIjtjb2xvcjppbmhlcml0O3RyYW5zZm9ybTpzY2FsZSgxLjU1NTU1NTU1NTYpO21hcmdpbi10b3A6LTAuMjQ4ODg4ODg4OWNofS5vLXR5cG9ncmFwaHktY2FwdGlvbntmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MTZweDttYXJnaW4tdG9wOjhweDttYXJnaW4tYm90dG9tOjA7Y29sb3I6IzMzMzAyZX0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tdHlwb2dyYXBoeS1jYXB0aW9ue2ZvbnQtc2l6ZToxMi4xOHB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS1mb290ZXJ7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjI0cHg7Y29sb3I6IzMzMzAyZX0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tdHlwb2dyYXBoeS1mb290ZXJ7Zm9udC1zaXplOjE1LjY2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cCwuby10eXBvZ3JhcGh5LXdyYXBwZXJ7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjIwcHg7bWFyZ2luOjAgMCAyNHB4O2NvbG9yOiMzMzMwMmV9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5wLC5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby10eXBvZ3JhcGh5LXdyYXBwZXJ7Zm9udC1zaXplOjE1LjY2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5oMSwuby10eXBvZ3JhcGh5LXdyYXBwZXI+aDF7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTozMnB4O2xpbmUtaGVpZ2h0OjMycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiMzMzMwMmU7bWFyZ2luOjAgMCAxNnB4fS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmgxLC5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5oMXtmb250LXNpemU6MjYuNTZweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmgyLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5oMntmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjI4cHg7bGluZS1oZWlnaHQ6MzJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzMzMzAyZTttYXJnaW46MCAwIDE2cHh9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+aDIsLm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tdHlwb2dyYXBoeS13cmFwcGVyPmgye2ZvbnQtc2l6ZToyMy4yNHB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+aDMsLm8tdHlwb2dyYXBoeS13cmFwcGVyPmgze2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MjRweDtsaW5lLWhlaWdodDoyOHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMzMzMDJlO21hcmdpbjowIDAgMTZweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5oMywuby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LXdyYXBwZXI+aDN7Zm9udC1zaXplOjE5LjkycHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5oNCwuby10eXBvZ3JhcGh5LXdyYXBwZXI+aDR7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToyMHB4O2xpbmUtaGVpZ2h0OjI0cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiMzMzMwMmU7bWFyZ2luOjAgMCAxNnB4fS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmg0LC5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5oNHtmb250LXNpemU6MTYuNnB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+aDUsLm8tdHlwb2dyYXBoeS13cmFwcGVyPmg1e2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMzMzMDJlO21hcmdpbjowIDAgMTZweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5oNSwuby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LXdyYXBwZXI+aDV7Zm9udC1zaXplOjE0Ljk0cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5oNiwuby10eXBvZ3JhcGh5LXdyYXBwZXI+aDZ7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjIwcHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiMzMzMwMmU7bWFyZ2luOjAgMCAxNnB4fS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmg2LC5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5oNntmb250LXNpemU6MTMuMjhweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmEsLm8tdHlwb2dyYXBoeS13cmFwcGVyPmF7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLWJvdHRvbTouMjVleCBzb2xpZDtjb2xvcjojMGQ3NjgwO2JvcmRlci1ib3R0b20tY29sb3I6I2NmZDhkMTt0ZXh0LWRlY29yYXRpb24tY29sb3I6I2NmZDhkMX1Ac3VwcG9ydHModGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMC4yNWV4KXsuby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5hLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5he2JvcmRlci1ib3R0b206MDt0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOi4yNWV4O3RleHQtZGVjb3JhdGlvbi1saW5lOnVuZGVybGluZX19Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+YTpob3Zlciwuby10eXBvZ3JhcGh5LXdyYXBwZXI+YTpob3Zlcntjb2xvcjojMDg0NzRkO2JvcmRlci1ib3R0b20tY29sb3I6IzllYzBiZDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzllYzBiZH0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5hOmZvY3VzLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5hOmZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiMwODQ3NGR9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+cCwuby10eXBvZ3JhcGh5LXdyYXBwZXI+cHtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjBweDttYXJnaW46MCAwIDI0cHg7Y29sb3I6IzMzMzAyZX0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+cCwuby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tdHlwb2dyYXBoeS13cmFwcGVyPnB7Zm9udC1zaXplOjE1LjY2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5vbCwuby10eXBvZ3JhcGh5LXdyYXBwZXI+cD51bCwuby10eXBvZ3JhcGh5LXdyYXBwZXI+b2wsLm8tdHlwb2dyYXBoeS13cmFwcGVyPnVse21hcmdpbjowIDAgMjRweDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPm9sPmxpLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPnVsPmxpLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5vbD5saSwuby10eXBvZ3JhcGh5LXdyYXBwZXI+dWw+bGl7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7cGFkZGluZy1sZWZ0OmNhbGMoMmNoICsgNHB4KX0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5vbD5saTpiZWZvcmUsLm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+dWw+bGk6YmVmb3JlLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5vbD5saTpiZWZvcmUsLm8tdHlwb2dyYXBoeS13cmFwcGVyPnVsPmxpOmJlZm9yZXtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIGxlZnR9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+b2wsLm8tdHlwb2dyYXBoeS13cmFwcGVyPm9se2NvdW50ZXItcmVzZXQ6aXRlbX0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5vbD5saTpiZWZvcmUsLm8tdHlwb2dyYXBoeS13cmFwcGVyPm9sPmxpOmJlZm9yZXtmb250LXdlaWdodDo2MDA7Y29udGVudDpjb3VudGVyKGl0ZW0pO2NvdW50ZXItaW5jcmVtZW50Oml0ZW07Zm9udC1mZWF0dXJlLXNldHRpbmdzOlwidG51bVwiO3RyYW5zZm9ybTpzY2FsZSgwLjg4ODg4ODg4ODkpO21hcmdpbi1sZWZ0Oi0wLjE0MjIyMjIyMjJjaH0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD51bD5saTpiZWZvcmUsLm8tdHlwb2dyYXBoeS13cmFwcGVyPnVsPmxpOmJlZm9yZXtjb250ZW50Olwi4oCiXCI7Y29sb3I6aW5oZXJpdDt0cmFuc2Zvcm06c2NhbGUoMS41NTU1NTU1NTU2KTttYXJnaW4tdG9wOi0wLjI0ODg4ODg4ODljaH0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5mb290ZXIsLm8tdHlwb2dyYXBoeS13cmFwcGVyPmZvb3Rlcntmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjRweDtjb2xvcjojMzMzMDJlfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5mb290ZXIsLm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5mb290ZXJ7Zm9udC1zaXplOjE1LjY2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5zdHJvbmcsLm8tdHlwb2dyYXBoeS13cmFwcGVyPnN0cm9uZ3tmb250LXdlaWdodDo2MDB9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+ZW0sLm8tdHlwb2dyYXBoeS13cmFwcGVyPmVte2ZvbnQtc3R5bGU6aXRhbGljfS5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPnN1cCwuby10eXBvZ3JhcGh5LXdyYXBwZXI+c3Vwe2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6LjY2NmVtO3Bvc2l0aW9uOnN0YXRpYzt2ZXJ0aWNhbC1hbGlnbjpzdXBlcjtsaW5lLWhlaWdodDowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6LTFlbX0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5zdWIsLm8tdHlwb2dyYXBoeS13cmFwcGVyPnN1Yntmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOi42NjZlbTtwb3NpdGlvbjpzdGF0aWM7dmVydGljYWwtYWxpZ246c3ViO2xpbmUtaGVpZ2h0OjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWJvdHRvbTotMWVtfS5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmZpZ2NhcHRpb24sLm8tdHlwb2dyYXBoeS13cmFwcGVyPmZpZ2NhcHRpb257Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE2cHg7bWFyZ2luLXRvcDo4cHg7bWFyZ2luLWJvdHRvbTowO2NvbG9yOiMzMzMwMmV9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmZpZ2NhcHRpb24sLm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5maWdjYXB0aW9ue2ZvbnQtc2l6ZToxMi4xOHB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9aHRtbDpiZWZvcmV7ZGlzcGxheTpub25lO2NvbnRlbnQ6J3tcImxheW91dHNcIjoge1wiU1wiOiBcIjQ5MHB4XCIsIFwiTVwiOiBcIjc0MHB4XCIsIFwiTFwiOiBcIjk4MHB4XCIsIFwiWExcIjogXCIxMjIwcHhcIn19J30iLCIvLy8gT3V0cHV0IGRlYnVnIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgbG9hZGVkIGxheW91dHMuXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJGxheW91dHMgLSBNYXAgb2YgbGF5b3V0c1xuQG1peGluIG9HcmlkRGVidWdJbmZvKCRsYXlvdXRzOiAkby1ncmlkLWxheW91dHMpIHtcblx0LyohIERFQlVHXG5cdCAqIExheW91dHM6XG5cdCAqICN7aW5zcGVjdCgkbGF5b3V0cyl9XG5cdCAqL1xuXHRAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzKCRfby1ncmlkLWxheW91dC1uYW1lcywgJG8tZ3JpZC1sYXlvdXRzKTtcbn1cblxuLy8vIEFkZCBhIGxheW91dCAoYnJlYWtwb2ludCkuIFRoaXMgY2FuIGJlIHVzZWQgdG8gYWRkIGEgbmV3IGJyZWFrcG9pbnQgdG8gYVxuLy8vIHByb2plY3QsIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGxheW91dHMgKFMsIE0sIEwsIFhMKS5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgQGluY2x1ZGUgb0dyaWRBZGRMYXlvdXQoJGxheW91dC1uYW1lOiBQLCAkbGF5b3V0LXdpZHRoOiA2MDBweCk7XG4vLy8gIEBpbmNsdWRlIG9HcmlkQWRkTGF5b3V0KCRsYXlvdXQtbmFtZTogWFhMLCAkbGF5b3V0LXdpZHRoOiAxNjAwcHgsICRndXR0ZXItd2lkdGg6IDMwcHgpO1xuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRsYXlvdXQtbmFtZSAtIE5hbWUgb2YgdGhlIGxheW91dCAoZS5nLiBTKVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGF5b3V0LXdpZHRoIC0gTGF5b3V0IHdpZHRoIGluIHB4XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRndXR0ZXItd2lkdGggW251bGxdIC0gR3V0dGVyIHdpZHRoIGluIHB4XG5AbWl4aW4gb0dyaWRBZGRMYXlvdXQoJGxheW91dC1uYW1lLCAkbGF5b3V0LXdpZHRoLCAkZ3V0dGVyLXdpZHRoOiBudWxsKSB7XG5cdCR0ZW1wLWxheW91dHM6ICgpO1xuXHQkdGVtcC1ndXR0ZXJzOiAoZGVmYXVsdDogb0dyaWRHdXR0ZXIoKSk7XG5cblx0Ly8gQWRkIHRoZSBuZXcgbGF5b3V0IGluIHRoZSBjb3JyZWN0IHBvc2l0aW9uOlxuXHQvLyAod2Ugd2FudCAkby1ncmlkLWxheW91dHMgYW5kICRvLWdyaWQtZ3V0dGVycyB0byBiZSBvcmRlcmVkIGZyb20gdGhlIHNtYWxsZXN0IHRvIHRoZSBsYXJnZXN0IGxheW91dClcblx0QGZvciAkaW5kZXggZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRvLWdyaWQtbGF5b3V0cykge1xuXHRcdCRwcmV2aW91cy1sYXlvdXQtd2lkdGg6IGlmKCRpbmRleCA9PSAxLCAwLCBtYXAtZ2V0KCRvLWdyaWQtbGF5b3V0cywgbnRoKCRfby1ncmlkLWxheW91dC1uYW1lcywgJGluZGV4IC0gMSkpKTtcblx0XHQkY3VycmVudC1sYXlvdXQtbmFtZTogbnRoKCRfby1ncmlkLWxheW91dC1uYW1lcywgJGluZGV4KTtcblx0XHQkY3VycmVudC1sYXlvdXQtd2lkdGg6IG1hcC1nZXQoJG8tZ3JpZC1sYXlvdXRzLCAkY3VycmVudC1sYXlvdXQtbmFtZSk7XG5cblx0XHQkY3VycmVudC1ndXR0ZXItd2lkdGg6IG1hcC1nZXQoJG8tZ3JpZC1ndXR0ZXJzLCAkY3VycmVudC1sYXlvdXQtbmFtZSk7XG5cblx0XHQvLyBBc3N1bWVzIGFsbCBsYXlvdXRzIHVzZSB0aGUgc2FtZSB1bml0IGUuZy4gcHggb3IgcmVtIChhcyBkb2VzIHRoZSBKYXZhU2NyaXB0KVxuXHRcdEBpZiBub3QgKCRwcmV2aW91cy1sYXlvdXQtd2lkdGggPiAkbGF5b3V0LXdpZHRoIG9yICRjdXJyZW50LWxheW91dC13aWR0aCA8ICRsYXlvdXQtd2lkdGgpIHtcblx0XHRcdCR0ZW1wLWxheW91dHM6IG1hcC1tZXJnZSgkdGVtcC1sYXlvdXRzLCAoJGxheW91dC1uYW1lOiAkbGF5b3V0LXdpZHRoKSk7XG5cdFx0XHQkdGVtcC1ndXR0ZXJzOiBtYXAtbWVyZ2UoJHRlbXAtZ3V0dGVycywgKCRsYXlvdXQtbmFtZTogJGd1dHRlci13aWR0aCkpO1xuXHRcdH1cblxuXHRcdCR0ZW1wLWxheW91dHM6IG1hcC1tZXJnZSgkdGVtcC1sYXlvdXRzLCAoJGN1cnJlbnQtbGF5b3V0LW5hbWU6ICRjdXJyZW50LWxheW91dC13aWR0aCkpO1xuXG5cdFx0QGlmICRjdXJyZW50LWd1dHRlci13aWR0aCB7XG5cdFx0XHQkdGVtcC1ndXR0ZXJzOiBtYXAtbWVyZ2UoJHRlbXAtZ3V0dGVycywgKCRjdXJyZW50LWxheW91dC1uYW1lOiAkY3VycmVudC1ndXR0ZXItd2lkdGgpKTtcblx0XHR9XG5cdH1cblx0JG8tZ3JpZC1sYXlvdXRzOiAkdGVtcC1sYXlvdXRzICFnbG9iYWw7XG5cdCRfby1ncmlkLWxheW91dC1uYW1lczogbWFwLWtleXMoJG8tZ3JpZC1sYXlvdXRzKSAhZ2xvYmFsO1xuXG5cdEBpZiAkZ3V0dGVyLXdpZHRoIHtcblx0XHQkby1ncmlkLWd1dHRlcnM6ICR0ZW1wLWd1dHRlcnMgIWdsb2JhbDtcblx0fVxuXG5cdCRfby1ncmlkLW1heC13aWR0aDogbWFwLWdldCgkby1ncmlkLWxheW91dHMsIG50aCgkX28tZ3JpZC1sYXlvdXQtbmFtZXMsIC0xKSkgIWdsb2JhbDtcbn1cblxuLy8vIEFwcGx5IHN0eWxlcyBhdCBhIGdpdmVuIGxheW91dCBzaXplIChicmVha3BvaW50KSBhcyB0aGUgZ3JpZC4gSXQgc2hvdWxkIGJlXG4vLyBwYXNzZWQgb25lIG9mICRvLWdyaWQtbGF5b3V0cyBlLmcuIGBTYCwgYE1gLCBldGMuLi4gZGVwZW5kaW5nIG9uIHdoaWNoIGxheW91dFxuLy8gc2l6ZSB0aGUgc3R5bGUgc2hvdWxkIGFwcGx5IGF0LlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAgLy8gVHVybiB0aGUgY29sb3Igb2YgYW4gZWxlbWVudCByZWQgYXQgbWVkaXVtIGxheW91dCBzaXplIGFuZCB1cFxuLy8vICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbyhNKSB7XG4vLy8gIFx0ZWxlbWVudCB7XG4vLy8gIFx0XHRjb2xvcjogcmVkO1xuLy8vICBcdH1cbi8vLyAgfVxuLy8vICAvLyBUdXJuIHRoZSBjb2xvciBvZiBhbiBlbGVtZW50IGJsdWUgdW50aWwgbWVkaXVtIGxheW91dFxuLy8vICBlbGVtZW50IHtcbi8vLyAgXHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkdW50aWw6IE0pIHtcbi8vLyAgXHRcdGNvbG9yOiBibHVlO1xuLy8vICBcdH1cbi8vLyAgfVxuLy8vICAvLyBUdXJuIHRoZSBjb2xvciBvZiBhbiBlbGVtZW50IGdyZWVuIGZyb20gc21hbGwgbGF5b3V0IHVudGlsIG1lZGl1bSBsYXlvdXRcbi8vLyAgZWxlbWVudCB7XG4vLy8gIFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IFMsICR1bnRpbDogTSkge1xuLy8vICBcdFx0Y29sb3I6IGdyZWVuO1xuLy8vICBcdH1cbi8vLyAgfVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9IGZyb20gLSBvbmUgb2YgJG8tZ3JpZC1sYXlvdXRzXG4vLy8gQHBhcmFtIHtTdHJpbmd9IHVudGlsIC0gb25lIG9mICRvLWdyaWQtbGF5b3V0c1xuQG1peGluIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBmYWxzZSwgJHVudGlsOiBmYWxzZSkge1xuXG5cdCRncmlkLWlzLXJlc3BvbnNpdmU6ICRvLWdyaWQtbW9kZSAhPSAnZml4ZWQnO1xuXHRAaW5jbHVkZSBtcShcblx0XHQkZnJvbTogJGZyb20sXG5cdFx0JHVudGlsOiAkdW50aWwsXG5cdFx0JHJlc3BvbnNpdmU6ICRncmlkLWlzLXJlc3BvbnNpdmUsXG5cdFx0JGJyZWFrcG9pbnRzOiAkby1ncmlkLWxheW91dHMsXG5cdFx0JHN0YXRpYy1icmVha3BvaW50OiAkby1ncmlkLWZpeGVkLWxheW91dFxuXHQpIHtcblx0XHRAY29udGVudDtcblx0fVxufVxuXG4vLy8gQmFzZSBjb2x1bW4gc3R5bGVzIGFuZCByZXNwb25zaXZlIGxheW91dCB3aWR0aFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyBCbG9jayBoYXMgY29sdW1uIHN0eWxlc1xuLy8vICAgZWwgeyBAaW5jbHVkZSBvR3JpZENvbHNwYW4oKTsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyA0LWNvbHVtbiB3aWRlIGJsb2NrXG4vLy8gICBlbCB7IEBpbmNsdWRlIG9HcmlkQ29sc3Bhbig0KTsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyBIYWxmLXdpZHRoIGJsb2NrXG4vLy8gICBlbCB7IEBpbmNsdWRlIG9HcmlkQ29sc3BhbigxLzIpOyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIEJsb2NrIGlzIGZ1bGwtd2lkdGggYnkgZGVmYXVsdCwgOC1jb2x1bW4gd2lkZSBvbiBNZWRpdW0gbGF5b3V0cyBhbmQgaGlkZGVuIG9uIExhcmdlIGxheW91dHNcbi8vLyAgIGVsIHsgQGluY2x1ZGUgb0dyaWRDb2xzcGFuKChkZWZhdWx0OiAxMiwgTTogOCwgTDogaGlkZSkpOyB9XG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IE1hcH0gJHNwYW4gW251bGxdXG5AbWl4aW4gb0dyaWRDb2xzcGFuKCRzcGFuOiBudWxsLCAkd2lkdGgtb25seTogZmFsc2UpIHtcblx0QGlmIG5vdCAkd2lkdGgtb25seSB7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRmbG9hdDogbGVmdDtcblx0XHRmbGV4OiAxIDEgMCU7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlOyAvLyBSZXF1aXJlZCBmb3IgcHVzaCBhbmQgcHVsbFxuXG5cdFx0QGlmICRvLWdyaWQtbW9kZSA9PSAnZml4ZWQnIHtcblx0XHRcdHBhZGRpbmctbGVmdDogb0dyaWRHdXR0ZXIoJG8tZ3JpZC1maXhlZC1sYXlvdXQpO1xuXHRcdH0gQGVsc2Uge1xuXHRcdFx0QGVhY2ggJGxheW91dC1uYW1lIGluIG1hcC1rZXlzKCRvLWdyaWQtZ3V0dGVycykge1xuXHRcdFx0XHRAaWYgJGxheW91dC1uYW1lID09ICdkZWZhdWx0JyB7XG5cdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiBvR3JpZEd1dHRlcigpO1xuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkbGF5b3V0LW5hbWUpIHtcblx0XHRcdFx0XHRcdHBhZGRpbmctbGVmdDogb0dyaWRHdXR0ZXIoJGxheW91dC1uYW1lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0QGlmICRzcGFuIHtcblx0XHRAaW5jbHVkZSBfb0dyaWRDb2x1bW5XaWR0aCgkc3Bhbik7XG5cdH1cbn1cblxuLy8vIEdyaWQgY29udGFpbmVyXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGdyaWQtbW9kZSBbJG8tZ3JpZC1tb2RlXVxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGJsZWVkIFtmYWxzZV1cbkBtaXhpbiBvR3JpZENvbnRhaW5lcigkZ3JpZC1tb2RlOiAkby1ncmlkLW1vZGUsICRibGVlZDogZmFsc2UpIHtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdG1hcmdpbi1yaWdodDogYXV0bztcblx0bWluLXdpZHRoOiAkby1ncmlkLW1pbi13aWR0aDtcblx0Ly8gT2xkZXIgYnJvd3NlcnMgZ2V0IGEgZml4ZWQtd2lkdGggbGF5b3V0XG5cdG1heC13aWR0aDogb0dyaWRHZXRNYXhXaWR0aEZvckxheW91dCgkby1ncmlkLWZpeGVkLWxheW91dCk7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRAaWYgJGJsZWVkIHtcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0cGFkZGluZy1yaWdodDogMDtcblx0fVxuXG5cdEBpZiAkZ3JpZC1tb2RlID09ICdmaXhlZCcge1xuXHRcdC8vIElmIHRoZSBncmlkIGlzbid0IGZsdWlkLCB3ZSBzZXQgaXQgdG8gYSBjZXJ0YWluIHdpZHRoXG5cdFx0d2lkdGg6IG9HcmlkR2V0TWF4V2lkdGhGb3JMYXlvdXQoJG8tZ3JpZC1maXhlZC1sYXlvdXQsICRncmlkLW1vZGU6ICdmaXhlZCcpO1xuXHRcdEBpZiBub3QgJGJsZWVkIHtcblx0XHRcdHBhZGRpbmctbGVmdDogb0dyaWRHdXR0ZXIoJG8tZ3JpZC1maXhlZC1sYXlvdXQpO1xuXHRcdFx0cGFkZGluZy1yaWdodDogb0dyaWRHdXR0ZXIoJG8tZ3JpZC1maXhlZC1sYXlvdXQpO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0bWF4LXdpZHRoOiAkX28tZ3JpZC1tYXgtd2lkdGg7XG5cblx0XHRAZWFjaCAkbGF5b3V0LW5hbWUgaW4gbWFwLWtleXMoJG8tZ3JpZC1ndXR0ZXJzKSB7XG5cdFx0XHRAaWYgJGxheW91dC1uYW1lID09ICdkZWZhdWx0JyB7XG5cdFx0XHRcdEBpZiBub3QgJGJsZWVkIHtcblx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IG9HcmlkR3V0dGVyKCk7XG5cdFx0XHRcdFx0cGFkZGluZy1yaWdodDogb0dyaWRHdXR0ZXIoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRsYXlvdXQtbmFtZSkge1xuXHRcdFx0XHRcdEBpZiBub3QgJGJsZWVkIHtcblx0XHRcdFx0XHRcdHBhZGRpbmctbGVmdDogb0dyaWRHdXR0ZXIoJGxheW91dC1uYW1lKTtcblx0XHRcdFx0XHRcdHBhZGRpbmctcmlnaHQ6IG9HcmlkR3V0dGVyKCRsYXlvdXQtbmFtZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0QGVhY2ggJGxheW91dC1uYW1lIGluICRfby1ncmlkLWxheW91dC1uYW1lcyB7XG5cdFx0XHRAaWYgaW5kZXgoJF9vLWdyaWQtbGF5b3V0LW5hbWVzLCAkbGF5b3V0LW5hbWUpID49IGluZGV4KCRfby1ncmlkLWxheW91dC1uYW1lcywgJG8tZ3JpZC1zdGFydC1zbmFwcHktbW9kZS1hdCkge1xuXHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkbGF5b3V0LW5hbWUpIHtcblx0XHRcdFx0XHRAaWYgJGdyaWQtbW9kZSA9PSAnc25hcHB5JyB7XG5cdFx0XHRcdFx0XHRtYXgtd2lkdGg6IG1hcC1nZXQoJG8tZ3JpZC1sYXlvdXRzLCAkbGF5b3V0LW5hbWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRAaWYgJGdyaWQtbW9kZSA9PSAnZmx1aWQnIHtcblx0XHRcdFx0XHRcdC8vIElmIHRoZSBncmlkIG1vZGUgaXMgZmx1aWQsIHRoZW4gdXNlIGEgY2xhc3MgdG8gbWFrZSBhIHJvdyBvciBhIHNldCBvZiByb3dzIHNuYXBweVxuXHRcdFx0XHRcdFx0Lm8tZ3JpZC1zbmFwcHkgJixcblx0XHRcdFx0XHRcdCYtLXNuYXBweSB7XG5cdFx0XHRcdFx0XHRcdG1heC13aWR0aDogbWFwLWdldCgkby1ncmlkLWxheW91dHMsICRsYXlvdXQtbmFtZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBCYXNlIHJvdyBzdHlsZXNcbkBtaXhpbiBvR3JpZFJvdyB7XG5cdGNsZWFyOiBib3RoO1xuXHRmbGV4LXdyYXA6IHdyYXA7IC8vIE5vdGUgdGhhdCB0aGlzIGJyZWFrcyBpbiBvbGQgRmlyZWZveFxuXHRkaXNwbGF5OiBmbGV4O1xuXG5cdEBtZWRpYSBwcmludCB7XG5cdFx0ZGlzcGxheTogaW5oZXJpdDtcblx0fVxuXG5cdEBpZiAkby1ncmlkLW1vZGUgPT0gJ2ZpeGVkJyB7XG5cdFx0bWFyZ2luLWxlZnQ6IC0xICogb0dyaWRHdXR0ZXIoJG8tZ3JpZC1maXhlZC1sYXlvdXQpO1xuXHR9IEBlbHNlIHtcblx0XHRAZWFjaCAkbGF5b3V0LW5hbWUgaW4gbWFwLWtleXMoJG8tZ3JpZC1ndXR0ZXJzKSB7XG5cdFx0XHRAaWYgJGxheW91dC1uYW1lID09ICdkZWZhdWx0JyB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAtMSAqIG9HcmlkR3V0dGVyKCk7XG5cdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGxheW91dC1uYW1lKSB7XG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IC0xICogb0dyaWRHdXR0ZXIoJGxheW91dC1uYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIENsZWFyZml4IGZvciBJRTkgYW5kIGJlbG93XG5cdHpvb206IDE7XG5cblx0JjpiZWZvcmUsXG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHRcdGRpc3BsYXk6IGZsZXg7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tYmxvY2stbm8tZHVwbGljYXRlLXByb3BlcnRpZXNcblx0fVxuXHQmOmFmdGVyIHtcblx0XHRjbGVhcjogYm90aDtcblx0fVxufVxuXG4vLy8gUmVtb3ZlIGd1dHRlcnMgZnJvbSBjb2x1bW5zIGluIGEgcm93XG4vLy9cbi8vLyBAcGFyYW0ge3N0cmluZ30gJGNvbHVtbi1zZWxlY3RvciBbXCJbby1ncmlkLWNvbHNwYW5dXCJdIC0gQ1NTIHNlbGVjdG9yIGZvciByb3cgZWxlbWVudFxuQG1peGluIG9HcmlkUm93Q29tcGFjdCgkY29sdW1uLXNlbGVjdG9yOiBcIltvLWdyaWQtY29sc3Bhbl1cIikge1xuXHRtYXJnaW4tbGVmdDogMDtcblxuXHQ+ICN7dW5xdW90ZSgkY29sdW1uLXNlbGVjdG9yKX0ge1xuXHRcdHBhZGRpbmctbGVmdDogMDtcblx0fVxufVxuXG4vLy8gUmVtb3ZlIHJvdyBzdHlsZXNcbkBtaXhpbiBvR3JpZFJlc2V0Um93IHtcblx0Y2xlYXI6IG5vbmU7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0bWFyZ2luLWxlZnQ6IDA7XG5cblx0JjpiZWZvcmUsXG5cdCY6YWZ0ZXIge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cbn1cblxuLy8vIENlbnRlciBjb2x1bW5cbkBtaXhpbiBvR3JpZENlbnRlciB7XG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdGZsb2F0OiBub25lO1xufVxuXG4vLy8gVW5jZW50ZXIgY29sdW1uXG5AbWl4aW4gb0dyaWRVbmNlbnRlciB7XG5cdG1hcmdpbi1sZWZ0OiAwO1xuXHRtYXJnaW4tcmlnaHQ6IDA7XG5cdGZsb2F0OiBsZWZ0O1xufVxuXG4vLy8gUmVtb3ZlIGNvbHVtbiBzdHlsZXNcbkBtaXhpbiBvR3JpZFJlc2V0Q29sdW1uIHtcblx0cGFkZGluZy1sZWZ0OiAwO1xuXHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHRmbG9hdDogbm9uZTtcblx0d2lkdGg6IGF1dG87XG5cdG1pbi13aWR0aDogMDtcblx0bWF4LXdpZHRoOiBub25lO1xuXHRmbGV4OiBub25lO1xufVxuXG4vLy8gUmVvcmRlciB2aXN1YWxseTogcHVsbFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zXG5AbWl4aW4gb0dyaWRQdWxsKCRjb2x1bW5zKSB7XG5cdHJpZ2h0OiBvR3JpZENvbHNwYW4oJGNvbHVtbnMpO1xuXHRsZWZ0OiBhdXRvO1xufVxuXG4vLy8gUmVvcmRlciB2aXN1YWxseTogcHVzaFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zXG5AbWl4aW4gb0dyaWRQdXNoKCRjb2x1bW5zKSB7XG5cdGxlZnQ6IG9HcmlkQ29sc3BhbigkY29sdW1ucyk7XG5cdHJpZ2h0OiBhdXRvO1xufVxuXG4vLy8gT2Zmc2V0OiBhZGQgc3BhY2UgYmVmb3JlIGEgY29sdW1uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnNcbkBtaXhpbiBvR3JpZE9mZnNldCgkY29sdW1ucykge1xuXHRtYXJnaW4tbGVmdDogb0dyaWRDb2xzcGFuKCRjb2x1bW5zKTtcbn1cblxuLy8vIFN1cmZhY2UgdGhlIGxheW91dCBjdXJyZW50bHkgZGlzcGxheWVkIHRvIG1ha2UgaXQgcmVhZGFibGUgaW4gSlMuXG4vLy9cbi8vLyBAZXhhbXBsZSBqc1xuLy8vICAvLyB5b3VyLWFwcC9tYWluLmpzXG4vLy8gIC8vIFJldHVybiB0aGUgY3VycmVudCBsYXlvdXQgKGUuZy4gZGVmYXVsdCwgUywgTSwgTCwgWEwpXG4vLy8gIGltcG9ydCBvR3JpZCBmcm9tICdvLWdyaWQnO1xuLy8vICBsZXQgY3VycmVudExheW91dCA9IG9HcmlkLmdldEN1cnJlbnRMYXlvdXQoKTtcbi8vLyAgY29uc29sZS5sb2coY3VycmVudExheW91dCk7XG4vLy9cbi8vLyAgLy8gUmV0dXJuIHRoZSBjdXJyZW50IGd1dHRlciAoZS5nLiAxMHB4LCAyMHB4KVxuLy8vICBpbXBvcnQgb0dyaWQgZnJvbSAnby1ncmlkJztcbi8vLyAgbGV0IGN1cnJlbnRHdXR0ZXIgPSBvR3JpZC5nZXRDdXJyZW50R3V0dGVyKCk7XG4vLy8gIGNvbnNvbGUubG9nKGN1cnJlbnRHdXR0ZXIpO1xuQG1peGluIG9HcmlkU3VyZmFjZUN1cnJlbnRMYXlvdXQge1xuXHRodG1sOmFmdGVyIHtcblx0XHRjb250ZW50OiAneyBcImxheW91dFwiOiBcImRlZmF1bHRcIiwgXCJndXR0ZXJcIjogXCInICsgb0dyaWRHdXR0ZXIoKSArICdcIiB9Jztcblx0XHRkaXNwbGF5OiBub25lO1xuXG5cdFx0QGVhY2ggJGJyZWFrcG9pbnQgaW4gJF9vLWdyaWQtbGF5b3V0LW5hbWVzIHtcblx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRicmVha3BvaW50KSB7XG5cdFx0XHRcdGNvbnRlbnQ6ICd7IFwibGF5b3V0XCI6IFwiJyArICRicmVha3BvaW50ICsgJ1wiLCBcImd1dHRlclwiOiBcIicgKyBvR3JpZEd1dHRlcigkYnJlYWtwb2ludCkgKyAnXCIgfSc7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBGaXggYSBidWcgaW4gU2FmYXJpIHdoZXJlIGl0ZW1zIHdvdWxkbid0IHdyYXAgcHJvcGVybHlcbi8vLyBSZW1vdmUgd2hlbiBTYWZhcmkgMTAgc3VwcG9ydCBpcyBubyBsb25nZXIgcmVxdWlyZWQuXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3BoaWxpcHdhbHRvbi9mbGV4YnVncyMxMS1taW4tYW5kLW1heC1zaXplLWRlY2xhcmF0aW9ucy1hcmUtaWdub3JlZC13aGVuLXdyYXBwaW5nLWZsZXgtaXRlbXNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb0dyaWRGaXhTYWZhcmlXcmFwKCRhcmdzLi4uKSB7XG5cdGZsZXgtYmFzaXM6IG9HcmlkQ29sc3BhbigkYXJncy4uLik7XG59XG5cbi8vLyBTdXJmYWNlIHRoZSBwcm9qZWN0cyBsYXlvdXRzIChicmVha3BvaW50cykgdG8gbWFrZSBpdCByZWFkYWJsZSBpbiBKUy5cbi8vL1xuLy8vIEBleGFtcGxlIGpzXG4vLy8gIC8vIHlvdXItYXBwL21haW4uanNcbi8vLyAgLy8gUmV0dXJuIHRoZSBsYXlvdXRzIChlLmcuIHtcImxheW91dHNcIjoge1wiU1wiOiBcIjQ5MHB4XCIsXCJNXCI6IFwiNzQwcHhcIixcIkxcIjogXCI5ODBweFwiLFwiWExcIjogXCIxMjIwcHhcIn19KVxuLy8vICBpbXBvcnQgb0dyaWQgZnJvbSAnby1ncmlkJztcbi8vLyAgbGV0IGJyZWFrcG9pbnRzID0gb0dyaWQuZ2V0R3JpZEJyZWFrcG9pbnRzKCk7XG4vLy8gIGNvbnNvbGUubG9nKGJyZWFrcG9pbnRzKTtcbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG5AbWl4aW4gb0dyaWRTdXJmYWNlTGF5b3V0U2l6ZXMge1xuXHRodG1sOmJlZm9yZSB7XG5cdFx0JGNvbWJpbmVkOiAne1wibGF5b3V0c1wiOiB7JztcblxuXHRcdCRrZXlzOiBtYXAta2V5cygkby1ncmlkLWxheW91dHMpO1xuXG5cdFx0QGZvciAkaXR0ciBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGtleXMpIHtcblx0XHRcdCRrZXk6IG50aCgka2V5cywgJGl0dHIpO1xuXHRcdFx0JHZhbHVlOiBtYXAtZ2V0KCRvLWdyaWQtbGF5b3V0cywgJGtleSk7XG5cblx0XHRcdCRjb21iaW5lZDogJGNvbWJpbmVkICsgX29HcmlkUXVvdGVTdHJpbmcoJGtleSkgKyAnOiAnICsgX29HcmlkUXVvdGVTdHJpbmcoJHZhbHVlKTtcblxuXHRcdFx0QGlmICRpdHRyIDwgbGVuZ3RoKCRrZXlzKSB7XG5cdFx0XHRcdCRjb21iaW5lZDogJGNvbWJpbmVkICsgXCIsIFwiO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCRjb21iaW5lZDogJGNvbWJpbmVkICsgJ319JztcblxuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0Y29udGVudDogJGNvbWJpbmVkO1xuXHR9XG59XG5cbi8vLyBIdW1hbiBmcmllbmRseSBuYW1lcyBmb3IgcG9ydGlvbnMgYW5kIGNlbnRlcmluZzpcbi8vL1xuLy8vIC0gaGlkZVxuLy8vIC0gZnVsbC13aWR0aFxuLy8vIC0gb25lLWhhbGZcbi8vLyAtIG9uZS10aGlyZFxuLy8vIC0gdHdvLXRoaXJkc1xuLy8vIC0gb25lLXF1YXJ0ZXJcbi8vLyAtIHRocmVlLXF1YXJ0ZXJzXG4vLy8gLSBjZW50ZXJcbi8vLyAtIHVuY2VudGVyXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGF5b3V0LW5hbWUgW251bGxdXG5AbWl4aW4gX29HcmlkSHVtYW5GcmllbmRseUNvbHVtbnMoJGxheW91dC1uYW1lOiBudWxsKSB7XG5cdFtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIiN7JGxheW91dC1uYW1lfWhpZGVcIl0ge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQvLyBDZW50ZXIgYW5kIHVuLWNlbnRlclxuXHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX1jZW50ZXJcIl0ge1xuXHRcdEBpbmNsdWRlIG9HcmlkQ2VudGVyO1xuXHR9XG5cdC8vIFNpbmNlIHdyaXRpbmcgW2RhdGEtby1ncmlkLWNvbHNwYW5+PVwidW5jZW50ZXJcIl0gd291bGRuJ3QgbWFrZSBtdWNoIHNlbnNlXG5cdC8vIHdlIG9ubHkgYWxsb3cgXCJ1bmNlbnRlclwiIGNvbWJpbmVkIHdpdGggYSBsYXlvdXQgKGUuZy4gWEx1bmNlbnRlcilcblx0QGlmICRsYXlvdXQtbmFtZSAhPSBudWxsIHtcblx0XHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX11bmNlbnRlclwiXSB7XG5cdFx0XHRAaW5jbHVkZSBvR3JpZFVuY2VudGVyO1xuXHRcdH1cblx0fVxuXG5cdC8vIFBvcnRpb25zXG5cdEBlYWNoICRodW1hbi1mcmllbmRseS1uYW1lIGluIChmdWxsLXdpZHRoLCBvbmUtaGFsZiwgb25lLXRoaXJkLCB0d28tdGhpcmRzLCBvbmUtcXVhcnRlciwgdGhyZWUtcXVhcnRlcnMpIHtcblx0XHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX0jeyRodW1hbi1mcmllbmRseS1uYW1lfVwiXSB7XG5cdFx0XHQvLyBSZXN0b3JlIHZpc2liaWxpdHkgZnJvbSBgZGlzcGxheTogbm9uZWBcblx0XHRcdC8vIGlmIGBkYXRhLW8tZ3JpZC1jb2xzcGFuYCB3YXMgc2V0IHRvIGAwYCBvciBgaGlkZWBcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXG5cdFx0XHQvLyBEZWZpbmUgd2lkdGggaW4gJVxuXHRcdFx0QGluY2x1ZGUgX29HcmlkRml4U2FmYXJpV3JhcCgkaHVtYW4tZnJpZW5kbHktbmFtZSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgb3JkZXIvb3JkZXJcblx0XHRcdG1pbi13aWR0aDogb0dyaWRDb2xzcGFuKCRodW1hbi1mcmllbmRseS1uYW1lKTtcblx0XHRcdG1heC13aWR0aDogb0dyaWRDb2xzcGFuKCRodW1hbi1mcmllbmRseS1uYW1lKTtcblx0XHRcdHdpZHRoOiBvR3JpZENvbHNwYW4oJGh1bWFuLWZyaWVuZGx5LW5hbWUpO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gU2h1ZmZsZSBjb2x1bW5zIGFyb3VuZCB1c2luZyBwdWxsLCBwdXNoIGFuZCBvZmZzZXRcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRsYXlvdXQtbmFtZSBbbnVsbF1cbkBtaXhpbiBfb0dyaWRTaHVmZmxlQ29sdW1ucygkbGF5b3V0LW5hbWU6IG51bGwpIHtcblx0QGZvciAkY29sc3BhbiBmcm9tIDAgdGhyb3VnaCAoJG8tZ3JpZC1jb2x1bW5zIC0gMSkge1xuXHRcdFtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIiN7JGxheW91dC1uYW1lfXB1c2gjeyRjb2xzcGFufVwiXSB7XG5cdFx0XHRAaW5jbHVkZSBvR3JpZFB1c2goJGNvbHNwYW4pO1xuXHRcdH1cblx0XHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX1wdWxsI3skY29sc3Bhbn1cIl0ge1xuXHRcdFx0QGluY2x1ZGUgb0dyaWRQdWxsKCRjb2xzcGFuKTtcblx0XHR9XG5cdFx0W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiI3skbGF5b3V0LW5hbWV9b2Zmc2V0I3skY29sc3Bhbn1cIl0ge1xuXHRcdFx0QGluY2x1ZGUgb0dyaWRPZmZzZXQoJGNvbHNwYW4pO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gQ3Jvc3MgYnJvd3NlciBjb2x1bW4gd2lkdGhzIGFjcm9zcyBsYXlvdXRzXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIGVsIHsgQGluY2x1ZGUgX29HcmlkQ29sdW1uV2lkdGgoNCk7IH1cbi8vLyAgIGVsIHsgQGluY2x1ZGUgX29HcmlkQ29sdW1uV2lkdGgoMS8yKTsgfVxuLy8vICAgZWwgeyBAaW5jbHVkZSBfb0dyaWRDb2x1bW5XaWR0aChoaWRlKTsgfVxuLy8vICAgZWwgeyBAaW5jbHVkZSBfb0dyaWRDb2x1bW5XaWR0aCgoZGVmYXVsdDogMTIsIE06IDgsIEw6IGhpZGUpKTsgfVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgfCBNYXB9ICRzcGFuXG5AbWl4aW4gX29HcmlkQ29sdW1uV2lkdGgoJHNwYW4pIHtcblx0Ly8gU3BlY2lhbCBjYXNlOiB0aGUgY29sdW1uIGlzIGhpZGRlbiBieSBkZWZhdWx0XG5cdEBpZiAkc3BhbiA9PSAnaGlkZScge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH0gQGVsc2Uge1xuXHRcdC8vICRzcGFuIGlzIGEgbnVtYmVyIG9yIGEga2V5d29yZCwgc28gd2UncmUgb3V0cHV0dGluZyB0aGUgZGVmYXVsdCB3aWR0aCBmb3IgdGhhdCBjb2x1bW5cblx0XHRAaWYgdHlwZS1vZigkc3BhbikgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJHNwYW4pID09IHN0cmluZyB7XG5cblx0XHRcdC8vIFJlc3RvcmUgdmlzaWJpbGl0eSBmcm9tIGBkaXNwbGF5OiBub25lYFxuXHRcdFx0Ly8gaWYgYGRhdGEtby1ncmlkLWNvbHNwYW5gIHdhcyBzZXQgdG8gYDBgIG9yIGBoaWRlYFxuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cblx0XHRcdC8vIERlZmluZSB3aWR0aCBpbiAlXG5cdFx0XHRAaW5jbHVkZSBfb0dyaWRGaXhTYWZhcmlXcmFwKCRzcGFuKTsgLy9zdHlsZWxpbnQtZGlzYWJsZS1saW5lIG9yZGVyL29yZGVyXG5cdFx0XHRtaW4td2lkdGg6IG9HcmlkQ29sc3Bhbigkc3Bhbik7XG5cdFx0XHRtYXgtd2lkdGg6IG9HcmlkQ29sc3Bhbigkc3Bhbik7XG5cdFx0fVxuXHR9XG5cblx0Ly8gJHNwYW4gaXMgYSBtYXAsIHdlJ3JlIGxvb3BpbmcgdGhyb3VnaCBhbGwgb2YgdGhlIGxheW91dHNcblx0QGlmIHR5cGUtb2YoJHNwYW4pID09IG1hcCB7XG5cdFx0QGVhY2ggJGxheW91dC1uYW1lLCAkbGF5b3V0LXNwYW4gaW4gJHNwYW4ge1xuXHRcdFx0QGlmICRsYXlvdXQtbmFtZSA9PSAnZGVmYXVsdCcge1xuXHRcdFx0XHRAaW5jbHVkZSBfb0dyaWRDb2x1bW5XaWR0aCgkbGF5b3V0LXNwYW4pO1xuXHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdEBpZiAkbGF5b3V0LXNwYW4gPT0gJ2hpZGUnIHtcblx0XHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkbGF5b3V0LW5hbWUpIHtcblx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkbGF5b3V0LW5hbWUpIHtcblx0XHRcdFx0XHRcdC8vIFJlc3RvcmUgdmlzaWJpbGl0eSBmcm9tIGBkaXNwbGF5OiBub25lYFxuXHRcdFx0XHRcdFx0Ly8gaWYgYGRhdGEtby1ncmlkLWNvbHNwYW5gIHdhcyBzZXQgdG8gYDBgIG9yIGBoaWRlYFxuXHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0XHQvLyBEZWZpbmUgd2lkdGggaW4gJVxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgX29HcmlkRml4U2FmYXJpV3JhcCgkbGF5b3V0LXNwYW4pOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIG9yZGVyL29yZGVyXG5cdFx0XHRcdFx0XHRtaW4td2lkdGg6IG9HcmlkQ29sc3BhbigkbGF5b3V0LXNwYW4pO1xuXHRcdFx0XHRcdFx0bWF4LXdpZHRoOiBvR3JpZENvbHNwYW4oJGxheW91dC1zcGFuKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjsgLy8gRml4ZXMgYW4gaXNzdWUgd2hlcmUgUnVieSBsb2NhbGUgaXMgbm90IHNldCBwcm9wZXJseVxuICAgICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvcHVsbC8xMFxuXG5AaW1wb3J0IFwiQGZpbmFuY2lhbC10aW1lcy9tYXRoXCI7XG5cbi8vLyBCYXNlIGZvbnQgc2l6ZSBvbiB0aGUgYDxib2R5PmAgZWxlbWVudFxuLy8vXG4vLy8gRG8gbm90IG92ZXJyaWRlIHRoaXMgdmFsdWUsIG9yIHRoaW5ncyB3aWxsIGJyZWFrXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjJcbi8vLyBAZGVwcmVjYXRlZCBUaGlzIHNldHRpbmcgd2lsbCBiZSByZW1vdmVkIGluIHNhc3MtbXEgdjYuMC4wXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTnVtYmVyICh1bml0KVxuJG1xLWJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLy8gUmVzcG9uc2l2ZSBtb2RlXG4vLy9cbi8vLyBTZXQgdG8gYGZhbHNlYCB0byBlbmFibGUgc3VwcG9ydCBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBAbWVkaWEgcXVlcmllcyxcbi8vLyAoSUUgPD0gOCwgRmlyZWZveCA8PSAzLCBPcGVyYSA8PSA5KVxuLy8vXG4vLy8gWW91IGNvdWxkIGNyZWF0ZSBhIHN0eWxlc2hlZXQgc2VydmVkIGV4Y2x1c2l2ZWx5IHRvIG9sZGVyIGJyb3dzZXJzLFxuLy8vIHdoZXJlIEBtZWRpYSBxdWVyaWVzIGFyZSByYXN0ZXJpemVkXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIG9sZC1pZS5zY3NzXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9mZiBEaXNhYmxlZCByZXNwb25zaXZlIG1vZGUgZG9jdW1lbnRhdGlvblxuJG1xLXJlc3BvbnNpdmU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGxpc3Rcbi8vL1xuLy8vIE5hbWUgeW91ciBicmVha3BvaW50cyBpbiBhIHdheSB0aGF0IGNyZWF0ZXMgYSB1YmlxdWl0b3VzIGxhbmd1YWdlXG4vLy8gYWNyb3NzIHRlYW0gbWVtYmVycy4gSXQgd2lsbCBpbXByb3ZlIGNvbW11bmljYXRpb24gYmV0d2VlblxuLy8vIHN0YWtlaG9sZGVycywgZGVzaWduZXJzLCBkZXZlbG9wZXJzLCBhbmQgdGVzdGVycy5cbi8vL1xuLy8vIEB0eXBlIE1hcFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLWJyZWFrcG9pbnRzOiAoXG4gICAgbW9iaWxlOiAgMzIwcHgsXG4gICAgdGFibGV0OiAgNzQwcHgsXG4gICAgZGVza3RvcDogOTgwcHgsXG4gICAgd2lkZTogICAgMTMwMHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gU3RhdGljIGJyZWFrcG9pbnQgKGZvciBmaXhlZC13aWR0aCBsYXlvdXRzKVxuLy8vXG4vLy8gRGVmaW5lIHRoZSBicmVha3BvaW50IGZyb20gJG1xLWJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkXG4vLy8gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0IHdpZHRoIGZvciB0aGUgZml4ZWQtd2lkdGggbGF5b3V0XG4vLy8gKGkuZS4gd2hlbiAkbXEtcmVzcG9uc2l2ZSBpcyBzZXQgdG8gJ2ZhbHNlJykgaW4gYSBvbGQtaWUuc2Nzc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyB0YWJsZXQtb25seS5zY3NzXG4vLy8gIC8vXG4vLy8gIC8vIElnbm9yZSBhbGwgc3R5bGVzIGFib3ZlIHRhYmxldCBicmVha3BvaW50LFxuLy8vICAvLyBhbmQgZml4IHRoZSBzdHlsZXMgKHN1Y2ggYXMgdGhlIGxheW91dCkgYXQgdGFibGV0IHdpZHRoXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgJG1xLXN0YXRpYy1icmVha3BvaW50OiB0YWJsZXQ7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvIHRhYmxldFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjYWRkaW5nLWN1c3RvbS1icmVha3BvaW50cyBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtc3RhdGljLWJyZWFrcG9pbnQ6IGRlc2t0b3AgIWRlZmF1bHQ7XG5cbi8vLyBTaG93IGJyZWFrcG9pbnRzIGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy9cbi8vLyBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZSBjdXJyZW50bHkgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcFxuLy8vIHJpZ2h0IGNvcm5lciBvZiB5b3VyIHNpdGUgZHVyaW5nIGRldmVsb3BtZW50LCBhZGQgdGhlIGJyZWFrcG9pbnRzXG4vLy8gdG8gdGhpcyBsaXN0LCBvcmRlcmVkIGJ5IHdpZHRoLiBGb3IgZXhhbXBsZTogKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKS5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgICRtcS1zaG93LWJyZWFrcG9pbnRzOiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApO1xuLy8vICAgQGltcG9ydCAncGF0aC90by9tcSc7XG4vLy9cbi8vLyBAdHlwZSBtYXBcbiRtcS1zaG93LWJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcblxuLy8vIEN1c3RvbWl6ZSB0aGUgbWVkaWEgdHlwZSAoZm9yIGV4YW1wbGU6IGBAbWVkaWEgc2NyZWVuYCBvciBgQG1lZGlhIHByaW50YClcbi8vLyBCeSBkZWZhdWx0IHNhc3MtbXEgdXNlcyBhbiBcImFsbFwiIG1lZGlhIHR5cGUgKGBAbWVkaWEgYWxsIGFuZCDigKZgKVxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNjaGFuZ2luZy1tZWRpYS10eXBlIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1tZWRpYS10eXBlOiBhbGwgIWRlZmF1bHQ7XG5cbi8vLyBDb252ZXJ0IHBpeGVscyB0byBlbXNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHggLSB2YWx1ZSB0byBjb252ZXJ0XG4vLy8gQGlnbm9yZSBAcGFyYW0ge051bWJlcn0gJGJhc2UtZm9udC1zaXplIFskbXEtYmFzZS1mb250LXNpemVdIC0gYDxib2R5PmAgZm9udCBzaXplIChkZXByZWNhdGVkKVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkZm9udC1zaXplLWluLWVtczogbXEtcHgyZW0oMTZweCk7XG4vLy8gIHAgeyBmb250LXNpemU6IG1xLXB4MmVtKDE2cHgpOyB9XG4vLy9cbi8vLyBAcmVxdWlyZXMgJG1xLWJhc2UtZm9udC1zaXplXG4vLy8gQHJldHVybnMge051bWJlcn1cbkBmdW5jdGlvbiBtcS1weDJlbSgkcHgsICRiYXNlLWZvbnQtc2l6ZTogJG1xLWJhc2UtZm9udC1zaXplKSB7XG4gICAgQGlmICgkbXEtYmFzZS1mb250LXNpemUgIT0gMTZweCkge1xuICAgICAgICBAd2FybiBcIk92ZXJyaWRpbmcgJG1xLWJhc2UtZm9udC1zaXplIHdpbGwgYnJlYWsgdGhpbmdzLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyLlwiO1xuICAgIH1cbiAgICBAaWYgKCRiYXNlLWZvbnQtc2l6ZSAhPSAxNnB4KSB7XG4gICAgICAgIEB3YXJuIFwiVGhlICRiYXNlLWZvbnQtc2l6ZSBhcmd1bWVudCB3aWxsIGJlIHJlbW92ZWQgaW4gc2Fzcy1tcSB2Ni4wLjAsIGFzIG92ZXJyaWRpbmcgaXQgYnJlYWtzIHRoaW5ncywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMi5cIjtcbiAgICB9XG4gICAgQGlmIHVuaXRsZXNzKCRweCkge1xuICAgICAgICBAd2FybiBcIkFzc3VtaW5nICN7JHB4fSB0byBiZSBpbiBwaXhlbHMsIGF0dGVtcHRpbmcgdG8gY29udmVydCBpdCBpbnRvIHBpeGVscy5cIjtcbiAgICAgICAgQHJldHVybiBtcS1weDJlbSgkcHggKiAxcHgsICRiYXNlLWZvbnQtc2l6ZSk7XG4gICAgfSBAZWxzZSBpZiB1bml0KCRweCkgPT0gZW0ge1xuICAgICAgICBAcmV0dXJuICRweDtcbiAgICB9XG4gICAgQHJldHVybiAoZGl2KCRweCwgJGJhc2UtZm9udC1zaXplKSkgKiAxZW07XG59XG5cbi8vLyBHZXQgYSBicmVha3BvaW50J3Mgd2lkdGhcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnQuIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJHRhYmxldC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgodGFibGV0KTtcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKGRlc2t0b3ApKSB7fVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBWYWx1ZSBpbiBwaXhlbHNcbkBmdW5jdGlvbiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkge1xuICAgICAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEB3YXJuIFwiQnJlYWtwb2ludCAjeyRuYW1lfSB3YXNuJ3QgZm91bmQgaW4gJGJyZWFrcG9pbnRzLlwiO1xuICAgIH1cbn1cblxuLy8vIE1lZGlhIFF1ZXJ5IG1peGluXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRmcm9tIFtmYWxzZV0gLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkdW50aWwgW2ZhbHNlXSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRhbmQgW2ZhbHNlXSAtIEFkZGl0aW9uYWwgbWVkaWEgcXVlcnkgcGFyYW1ldGVyc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVkaWEtdHlwZSBbJG1xLW1lZGlhLXR5cGVdIC0gTWVkaWEgdHlwZTogc2NyZWVuLCBwcmludOKAplxuLy8vXG4vLy8gQGlnbm9yZSBVbmRvY3VtZW50ZWQgQVBJLCBmb3IgYWR2YW5jZWQgdXNlIG9ubHk6XG4vLy8gQGlnbm9yZSBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzIFskbXEtYnJlYWtwb2ludHNdXG4vLy8gQGlnbm9yZSBAcGFyYW0ge1N0cmluZ30gJHN0YXRpYy1icmVha3BvaW50IFskbXEtc3RhdGljLWJyZWFrcG9pbnRdXG4vLy9cbi8vLyBAY29udGVudCBzdHlsaW5nIHJ1bGVzLCB3cmFwcGVkIGludG8gYSBAbWVkaWEgcXVlcnkgd2hlbiAkcmVzcG9uc2l2ZSBpcyB0cnVlXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtbWVkaWEtdHlwZVxuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLXB4MmVtXG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGhcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9uLWRlZmF1bHQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAuZWxlbWVudCB7XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IG1vYmlsZSkge1xuLy8vICAgICAgY29sb3I6IHJlZDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJHVudGlsOiB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBibHVlO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcShtb2JpbGUsIHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGdyZWVuO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogdGFibGV0LCAkYW5kOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJykge1xuLy8vICAgICAgY29sb3I6IHRlYWw7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKDk1MHB4KSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEodGFibGV0LCAkbWVkaWEtdHlwZTogc2NyZWVuKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgLy8gQWR2YW5jZWQgdXNlOlxuLy8vICAgICRteS1icmVha3BvaW50czogKEw6IDkwMHB4LCBYTDogMTIwMHB4KTtcbi8vLyAgICBAaW5jbHVkZSBtcShMLCAkYnJlYWtwb2ludHM6ICRteS1icmVha3BvaW50cywgJHN0YXRpYy1icmVha3BvaW50OiBMKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gIH1cbkBtaXhpbiBtcShcbiAgICAkZnJvbTogZmFsc2UsXG4gICAgJHVudGlsOiBmYWxzZSxcbiAgICAkYW5kOiBmYWxzZSxcbiAgICAkbWVkaWEtdHlwZTogJG1xLW1lZGlhLXR5cGUsXG4gICAgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMsXG4gICAgJHJlc3BvbnNpdmU6ICRtcS1yZXNwb25zaXZlLFxuICAgICRzdGF0aWMtYnJlYWtwb2ludDogJG1xLXN0YXRpYy1icmVha3BvaW50XG4pIHtcbiAgICAkbWluLXdpZHRoOiAwO1xuICAgICRtYXgtd2lkdGg6IDA7XG4gICAgJG1lZGlhLXF1ZXJ5OiAnJztcblxuICAgIC8vIEZyb206IHRoaXMgYnJlYWtwb2ludCAoaW5jbHVzaXZlKVxuICAgIEBpZiAkZnJvbSB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRmcm9tKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0oJGZyb20pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRmcm9tLCAkYnJlYWtwb2ludHMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVudGlsOiB0aGF0IGJyZWFrcG9pbnQgKGV4Y2x1c2l2ZSlcbiAgICBAaWYgJHVudGlsIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJHVudGlsKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0oJHVudGlsKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkdW50aWwsICRicmVha3BvaW50cykpIC0gLjAxZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZGlzYWJsZWQsIHJhc3Rlcml6ZSB0aGUgb3V0cHV0IG91dHNpZGUgQG1lZGlhIGJsb2Nrc1xuICAgIC8vIFRoZSBicm93c2VyIHdpbGwgcmVseSBvbiB0aGUgY2FzY2FkZSBpdHNlbGYuXG4gICAgQGlmICRyZXNwb25zaXZlID09IGZhbHNlIHtcbiAgICAgICAgJHN0YXRpYy1icmVha3BvaW50LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc3RhdGljLWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICR0YXJnZXQtd2lkdGg6IG1xLXB4MmVtKCRzdGF0aWMtYnJlYWtwb2ludC13aWR0aCk7XG5cbiAgICAgICAgLy8gT3V0cHV0IG9ubHkgcnVsZXMgdGhhdCBzdGFydCBhdCBvciBzcGFuIG91ciB0YXJnZXQgd2lkdGhcbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgICRhbmQgPT0gZmFsc2VcbiAgICAgICAgICAgIGFuZCAkbWluLXdpZHRoIDw9ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIGFuZCAoXG4gICAgICAgICAgICAgICAgJHVudGlsID09IGZhbHNlIG9yICRtYXgtd2lkdGggPj0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYW5kICRtZWRpYS10eXBlICE9ICdwcmludCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBlbmFibGVkLCBvdXRwdXQgcnVsZXMgaW5zaWRlIEBtZWRpYSBxdWVyaWVzXG4gICAgQGVsc2Uge1xuICAgICAgICBAaWYgJG1pbi13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWluLXdpZHRoOiAjeyRtaW4td2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRtYXgtd2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1heC13aWR0aDogI3skbWF4LXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkYW5kICAgICAgICAgICAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kICN7JGFuZH0nOyB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIHVubmVjZXNzYXJ5IG1lZGlhIHF1ZXJ5IHByZWZpeCAnYWxsIGFuZCAnXG4gICAgICAgIEBpZiAoJG1lZGlhLXR5cGUgPT0gJ2FsbCcgYW5kICRtZWRpYS1xdWVyeSAhPSAnJykge1xuICAgICAgICAgICAgJG1lZGlhLXR5cGU6ICcnO1xuICAgICAgICAgICAgJG1lZGlhLXF1ZXJ5OiBzdHItc2xpY2UodW5xdW90ZSgkbWVkaWEtcXVlcnkpLCA2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAjeyRtZWRpYS10eXBlICsgJG1lZGlhLXF1ZXJ5fSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8vIFF1aWNrIHNvcnRcbi8vL1xuLy8vIEBhdXRob3IgU2FtIFJpY2hhcmRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc29ydFxuLy8vIEByZXR1cm5zIHtMaXN0fSBTb3J0ZWQgTGlzdFxuQGZ1bmN0aW9uIF9tcS1xdWljay1zb3J0KCRsaXN0KSB7XG4gICAgJGxlc3M6ICAoKTtcbiAgICAkZXF1YWw6ICgpO1xuICAgICRsYXJnZTogKCk7XG5cbiAgICBAaWYgbGVuZ3RoKCRsaXN0KSA+IDEge1xuICAgICAgICAkc2VlZDogbnRoKCRsaXN0LCBjZWlsKGRpdihsZW5ndGgoJGxpc3QpLCAyKSkpO1xuXG4gICAgICAgIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICAgICAgICAgIEBpZiAoJGl0ZW0gPT0gJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkZXF1YWw6IGFwcGVuZCgkZXF1YWwsICRpdGVtKTtcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtIDwgJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkbGVzczogYXBwZW5kKCRsZXNzLCAkaXRlbSk7XG4gICAgICAgICAgICB9IEBlbHNlIGlmICgkaXRlbSA+ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGxhcmdlOiBhcHBlbmQoJGxhcmdlLCAkaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAcmV0dXJuIGpvaW4oam9pbihfbXEtcXVpY2stc29ydCgkbGVzcyksICRlcXVhbCksIF9tcS1xdWljay1zb3J0KCRsYXJnZSkpO1xuICAgIH1cblxuICAgIEByZXR1cm4gJGxpc3Q7XG59XG5cbi8vLyBTb3J0IGEgbWFwIGJ5IHZhbHVlcyAod29ya3Mgd2l0aCBudW1iZXJzIG9ubHkpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBzb3J0XG4vLy8gQHJldHVybnMge01hcH0gTWFwIHNvcnRlZCBieSB2YWx1ZVxuQGZ1bmN0aW9uIF9tcS1tYXAtc29ydC1ieS12YWx1ZSgkbWFwKSB7XG4gICAgJG1hcC1zb3J0ZWQ6ICgpO1xuICAgICRtYXAta2V5czogbWFwLWtleXMoJG1hcCk7XG4gICAgJG1hcC12YWx1ZXM6IG1hcC12YWx1ZXMoJG1hcCk7XG4gICAgJG1hcC12YWx1ZXMtc29ydGVkOiBfbXEtcXVpY2stc29ydCgkbWFwLXZhbHVlcyk7XG5cbiAgICAvLyBSZW9yZGVyIGtleS92YWx1ZSBwYWlycyBiYXNlZCBvbiBrZXkgdmFsdWVzXG4gICAgQGVhY2ggJHZhbHVlIGluICRtYXAtdmFsdWVzLXNvcnRlZCB7XG4gICAgICAgICRpbmRleDogaW5kZXgoJG1hcC12YWx1ZXMsICR2YWx1ZSk7XG4gICAgICAgICRrZXk6IG50aCgkbWFwLWtleXMsICRpbmRleCk7XG4gICAgICAgICRtYXAtc29ydGVkOiBtYXAtbWVyZ2UoJG1hcC1zb3J0ZWQsICgka2V5OiAkdmFsdWUpKTtcblxuICAgICAgICAvLyBVbnNldCB0aGUgdmFsdWUgaW4gJG1hcC12YWx1ZXMgdG8gcHJldmVudCB0aGUgbG9vcFxuICAgICAgICAvLyBmcm9tIGZpbmRpbmcgdGhlIHNhbWUgaW5kZXggdHdpY2VcbiAgICAgICAgJG1hcC12YWx1ZXM6IHNldC1udGgoJG1hcC12YWx1ZXMsICRpbmRleCwgMCk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkbWFwLXNvcnRlZDtcbn1cblxuLy8vIEFkZCBhIGJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIC0gV2lkdGggb2YgdGhlIGJyZWFrcG9pbnRcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICBAaW5jbHVkZSBtcS1hZGQtYnJlYWtwb2ludCh0dnNjcmVlbiwgMTkyMHB4KTtcbi8vLyAgQGluY2x1ZGUgbXEodHZzY3JlZW4pIHt9XG5AbWl4aW4gbXEtYWRkLWJyZWFrcG9pbnQoJG5hbWUsICR3aWR0aCkge1xuICAgICRuZXctYnJlYWtwb2ludDogKCRuYW1lOiAkd2lkdGgpO1xuICAgICRtcS1icmVha3BvaW50czogbWFwLW1lcmdlKCRtcS1icmVha3BvaW50cywgJG5ldy1icmVha3BvaW50KSAhZ2xvYmFsO1xuICAgICRtcS1icmVha3BvaW50czogX21xLW1hcC1zb3J0LWJ5LXZhbHVlKCRtcS1icmVha3BvaW50cykgIWdsb2JhbDtcbn1cblxuLy8vIFNob3cgdGhlIGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyIG9mIHRoZSB2aWV3cG9ydFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3ctYnJlYWtwb2ludHMgWyRtcS1zaG93LWJyZWFrcG9pbnRzXSAtIExpc3Qgb2YgYnJlYWtwb2ludHMgdG8gc2hvdyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgWyRtcS1icmVha3BvaW50c10gLSBCcmVha3BvaW50IG5hbWVzIGFuZCBzaXplc1xuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXNob3ctYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBnbG9iYWwgc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbi8vL1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGN1c3RvbSBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzKChMLCBYTCksIChTOiAzMDBweCwgTDogODAwcHgsIFhMOiAxMjAwcHgpKTtcbkBtaXhpbiBtcS1zaG93LWJyZWFrcG9pbnRzKCRzaG93LWJyZWFrcG9pbnRzOiAkbXEtc2hvdy1icmVha3BvaW50cywgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBib2R5OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0Y4RTM7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGNvbG9yOiAjQzA5ODUzO1xuICAgICAgICBmb250OiBzbWFsbC1jYXB0aW9uO1xuICAgICAgICBwYWRkaW5nOiAzcHggNnB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBicmVha3BvaW50cyB0aGF0IHNob3VsZCBiZSBzaG93blxuICAgICAgICBAZWFjaCAkc2hvdy1icmVha3BvaW50IGluICRzaG93LWJyZWFrcG9pbnRzIHtcbiAgICAgICAgICAgICR3aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50czogJGJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCIjeyRzaG93LWJyZWFrcG9pbnR9IOKJpSAjeyR3aWR0aH0gKCN7bXEtcHgyZW0oJHdpZHRoKX0pXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpZiBsZW5ndGgoJG1xLXNob3ctYnJlYWtwb2ludHMpID4gMCB7XG4gICAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbn1cbiIsIkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvbWF0aCc7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL3Nhc3MtbXEvbXEnO1xuQGltcG9ydCAnc3JjL3Njc3MvdmFyaWFibGVzJztcbkBpbXBvcnQgJ3NyYy9zY3NzL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICdzcmMvc2Nzcy9taXhpbnMnO1xuXG4vLy8gT3V0cHV0IG8tZ3JpZCBzdHlsZXMuIFRoaXMgbWl4aW4gb3V0cHV0cyBhbGwgc3R5bGVzIGJ5IGRlZmF1bHQuXG4vLy8gUGFzcyBhbiBvcHRpb25zIGFyZ3VtZW50IHRvIGluY2x1ZGUgc3R5bGVzIGdyYW51bGFybHksIHNlZSB0aGVcbi8vLyBbUkVBRE1FXShodHRwczovL3JlZ2lzdHJ5Lm9yaWdhbWkuZnQuY29tL2NvbXBvbmVudHMvby1ncmlkL3JlYWRtZSkgZm9yIG1vcmUgZGV0YWlscy5cbi8vL1xuLy8vIEBleGFtcGxlIDxjYXB0aW9uPk91dHB1dCBhbGwgby1ncmlkIHN0eWxlcy48L2NhcHRpb24+XG4vLy8gXHRAaW5jbHVkZSBvR3JpZCgpO1xuLy8vIEBleGFtcGxlIDxjYXB0aW9uPk91dHB1dCBvbmx5IGJhc2ljIGdyaWQgc3R5bGVzLjwvY2FwdGlvbj5cbi8vLyBcdEBpbmNsdWRlIG9HcmlkKCRvcHRzOiAoKSk7XG4vLy8gQGV4YW1wbGUgPGNhcHRpb24+T3V0cHV0IGFsbCBvLWdyaWQgc3R5bGVzIGV4Y2VwdCBodW1hbiBmcmllbmRseSBzZWxlY3RvcnMuPC9jYXB0aW9uPlxuLy8vIFx0QGluY2x1ZGUgb0dyaWQoJG9wdHM6IChcbi8vLyBcdFx0J2JsZWVkJzogdHJ1ZSxcbi8vLyBcdFx0J3NodWZmbGUtc2VsZWN0b3JzJzogdHJ1ZSxcbi8vLyBcdFx0J3N1cmZhY2UnOiAoJ2N1cnJlbnQtbGF5b3V0JywgJ2xheW91dC1zaXplcycpLFxuLy8vIFx0XHQncm93cyc6ICgnY29tcGFjdCcpXG4vLy8gXHQpKTtcbi8vLyBAZXhhbXBsZSA8Y2FwdGlvbj5PdXRwdXQgYWxsIG8tZ3JpZCBzdHlsZXMgZXhjZXB0IHRoZSBzdHlsZXMgcmVxdWlyZWQgdG8gc3VyZmFjZSBsYXlvdXRzIHRvIG8tZ3JpZCBKUy48L2NhcHRpb24+XG4vLy8gXHRAaW5jbHVkZSBvR3JpZCgkb3B0czogKFxuLy8vIFx0XHQnYmxlZWQnOiB0cnVlLFxuLy8vIFx0XHQnc2h1ZmZsZS1zZWxlY3RvcnMnOiB0cnVlLFxuLy8vIFx0XHQnZnJpZW5kbHktc2VsZWN0b3JzJzogdHJ1ZSxcbi8vLyBcdFx0J3N1cmZhY2UnOiAoKSxcbi8vLyBcdFx0J3Jvd3MnOiAoJ2NvbXBhY3QnKVxuLy8vIFx0KSk7XG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG9wdHMgWygnYmxlZWQnOiB0cnVlLCAnc2h1ZmZsZS1zZWxlY3RvcnMnOiB0cnVlLCAnZnJpZW5kbHktc2VsZWN0b3JzJzogdHJ1ZSwgJ3N1cmZhY2UnOiAoJ2N1cnJlbnQtbGF5b3V0JywgJ2xheW91dC1zaXplcycpLCAncm93cyc6ICgnY29tcGFjdCcpKV1cbkBtaXhpbiBvR3JpZCgkb3B0czogKFxuXHQnYmxlZWQnOiB0cnVlLFxuXHQnc2h1ZmZsZS1zZWxlY3RvcnMnOiB0cnVlLFxuXHQnZnJpZW5kbHktc2VsZWN0b3JzJzogdHJ1ZSxcblx0J3N1cmZhY2UnOiAoJ2N1cnJlbnQtbGF5b3V0JywgJ2xheW91dC1zaXplcycpLFxuXHQncm93cyc6ICgnY29tcGFjdCcpXG4pKSB7XG5cdC8vIEJsZWVkIHN0eWxlcyBlLmcuIGBvLWdyaWQtY29udGFpbmVyLS1ibGVlZGAuXG5cdCRibGVlZDogbWFwLWdldCgkb3B0cywgJ2JsZWVkJyk7XG5cdC8vIEh1bWFuIGZyaWVuZGx5IHNlbGVjdG9ycywgZS5nLiBgZGF0YS1vLWdyaWQtY29sc3Bhbj1cIm9uZS1oYWxmXCJgLlxuXHQkZnJpZW5kbHktc2VsZWN0b3JzOiBtYXAtZ2V0KCRvcHRzLCAnZnJpZW5kbHktc2VsZWN0b3JzJyk7XG5cdC8vIE9mZnNldCwgcHVzaCwgYW5kIHB1bGwgc2VsZWN0b3JzLCBlLmcuIGBwdXNoNGAuXG5cdCRzaHVmZmxlLXNlbGVjdG9yczogbWFwLWdldCgkb3B0cywgJ3NodWZmbGUtc2VsZWN0b3JzJyk7XG5cdC8vIENvbXBhY3Qgcm93cywgZS5nLiBgby1ncmlkLXJvdy0tY29tcGFjdGAuXG5cdCRyb3dzOiBtYXAtZ2V0KCRvcHRzLCAncm93cycpO1xuXHQkY29tcGFjdC1yb3dzOiBpbmRleCgkcm93cywgJ2NvbXBhY3QnKTtcblx0Ly8gU3VyY2UgbGF5b3V0IGRldGFpbHMgZm9yIEpTLlxuXHQkc3VyZmFjZTogbWFwLWdldCgkb3B0cywgJ3N1cmZhY2UnKTtcblx0JGN1cnJlbnQtbGF5b3V0OiBpbmRleCgkc3VyZmFjZSwgJ2N1cnJlbnQtbGF5b3V0Jyk7XG5cdCRsYXlvdXQtc2l6ZXM6IGluZGV4KCRzdXJmYWNlLCAnbGF5b3V0LXNpemVzJyk7XG5cblx0Ly8gU3VyZmFjZSBsYXlvdXRzIGZvciBKUyBvbiBodG1sOmFmdGVyLCBodG1sOmJlZm9yZS5cblx0QGlmKCRjdXJyZW50LWxheW91dCkge1xuXHRcdEBpbmNsdWRlIG9HcmlkU3VyZmFjZUN1cnJlbnRMYXlvdXQ7XG5cdH1cblxuXHRAaWYoJGxheW91dC1zaXplcykge1xuXHRcdEBpbmNsdWRlIG9HcmlkU3VyZmFjZUxheW91dFNpemVzO1xuXHR9XG5cblx0Ly8gR3JpZCBjb250YWluZXJcblx0Lm8tZ3JpZC1jb250YWluZXIge1xuXHRcdEBpbmNsdWRlIG9HcmlkQ29udGFpbmVyKCk7XG5cdH1cblxuXHRAaWYoJGJsZWVkKSB7XG5cdFx0Lm8tZ3JpZC1jb250YWluZXItLWJsZWVkIHtcblx0XHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDA7XG5cdFx0fVxuXHR9XG5cblx0Ly8gR3JpZCByb3dcblx0Lm8tZ3JpZC1yb3cge1xuXHRcdEBpbmNsdWRlIG9HcmlkUm93O1xuXHR9XG5cblx0Ly8gQ29tcGFjdCwgZ3V0dGVybGVzcyByb3cgb2YgY29sdW1uc1xuXHRAaWYoJGNvbXBhY3Qtcm93cykge1xuXHRcdC5vLWdyaWQtcm93LS1jb21wYWN0IHtcblx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXG5cdFx0XHQ+IFtkYXRhLW8tZ3JpZC1jb2xzcGFuXSB7XG5cdFx0XHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBHcmlkIGNvbHVtbnNcblx0W2RhdGEtby1ncmlkLWNvbHNwYW5dIHtcblx0XHRAaW5jbHVkZSBvR3JpZENvbHNwYW4oKTtcblx0fVxuXG5cdFtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIjBcIl0ge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHRAZm9yICRjb2xzcGFuIGZyb20gMSB0aHJvdWdoICRvLWdyaWQtY29sdW1ucyB7XG5cdFx0W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiI3skY29sc3Bhbn1cIl0ge1xuXHRcdFx0QGluY2x1ZGUgb0dyaWRDb2xzcGFuKCRjb2xzcGFuLCAkd2lkdGgtb25seTogdHJ1ZSk7XG5cdFx0fVxuXHR9XG5cblx0QGlmICRmcmllbmRseS1zZWxlY3RvcnMge1xuXHRcdEBpbmNsdWRlIF9vR3JpZEh1bWFuRnJpZW5kbHlDb2x1bW5zOyAvLyBvbmUtaGFsZiwgb25lLXRoaXJkLCBjZW50ZXLigKZcblx0fVxuXG5cdEBpZiAkc2h1ZmZsZS1zZWxlY3RvcnMge1xuXHRcdEBpbmNsdWRlIF9vR3JpZFNodWZmbGVDb2x1bW5zOyAvLyBwdWxsLCBwdXNoLCBvZmZzZXRcblx0fVxuXG5cdC8vIFJlc3BvbnNpdmUgY29sdW1uc1xuXHRAZWFjaCAkbGF5b3V0LW5hbWUgaW4gJF9vLWdyaWQtbGF5b3V0LW5hbWVzIHtcblx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkbGF5b3V0LW5hbWUpIHtcblxuXHRcdFx0QGlmICRmcmllbmRseS1zZWxlY3RvcnMge1xuXHRcdFx0XHRAaW5jbHVkZSBfb0dyaWRIdW1hbkZyaWVuZGx5Q29sdW1ucygkbGF5b3V0LW5hbWUpO1xuXHRcdFx0fVxuXG5cdFx0XHRAaWYgJHNodWZmbGUtc2VsZWN0b3JzID09IHRydWUge1xuXHRcdFx0XHRAaW5jbHVkZSBfb0dyaWRTaHVmZmxlQ29sdW1ucygkbGF5b3V0LW5hbWUpO1xuXHRcdFx0fVxuXG5cdFx0XHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX0wXCJdIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblxuXHRcdFx0QGZvciAkY29sc3BhbiBmcm9tIDEgdGhyb3VnaCAkby1ncmlkLWNvbHVtbnMge1xuXHRcdFx0XHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX0jeyRjb2xzcGFufVwiXSB7XG5cdFx0XHRcdFx0Ly8gUmVzdG9yZSB2aXNpYmlsaXR5IGZyb20gYGRpc3BsYXk6IG5vbmVgXG5cdFx0XHRcdFx0Ly8gaWYgYGRhdGEtby1ncmlkLWNvbHNwYW5gIHdhcyBzZXQgdG8gYDBgIG9yIGBoaWRlYFxuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXG5cdFx0XHRcdFx0Ly8gQXBwbHkgd2lkdGggaW4gJVxuXHRcdFx0XHRcdEBpbmNsdWRlIF9vR3JpZEZpeFNhZmFyaVdyYXAoJGNvbHNwYW4pOyAvL3N0eWxlbGludC1kaXNhYmxlLWxpbmUgb3JkZXIvb3JkZXJcblx0XHRcdFx0XHRtaW4td2lkdGg6IG9HcmlkQ29sc3BhbigkY29sc3Bhbik7XG5cdFx0XHRcdFx0bWF4LXdpZHRoOiBvR3JpZENvbHNwYW4oJGNvbHNwYW4pO1xuXHRcdFx0XHRcdHdpZHRoOiBvR3JpZENvbHNwYW4oJGNvbHNwYW4pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbkBpZiAkby1ncmlkLWlzLXNpbGVudCA9PSBmYWxzZSB7XG5cdEBpbmNsdWRlIG9HcmlkKCk7XG5cblx0Ly8gVHVybiBzaWxlbnQgbW9kZSBiYWNrIG9uIHRvIGF2b2lkIG91dHB1dHRpbmcgdGhlIGdyaWQgdHdpY2Vcblx0JG8tZ3JpZC1pcy1zaWxlbnQ6IHRydWU7XG59XG4iLCIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXNwb25zaXZlIGJlaGF2aW91ciBjb25maWd1cmF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vLyBTaWxlbnQgbW9kZVxuLy8vXG4vLy8gQHR5cGUgQm9vbFxuJG8tZ3JpZC1pcy1zaWxlbnQ6IHRydWUgIWRlZmF1bHQ7XG5cblxuLy8vIEdyaWQgbW9kZVxuLy8vIC0gZmx1aWQ6IGZ1bGwgd2lkdGggdXAgdG8gdGhlIGxhcmdlc3QgbGF5b3V0J3Mgd2lkdGhcbi8vLyAtIHNuYXBweTogZmx1aWQgd2lkdGggdW50aWwgdGhlIGxheW91dCBkZWZpbmVkIGluICRvLWdyaWQtc3RhcnQtc25hcHB5LW1vZGUtYXQgKGRlZmF1bHQ6IE0pLFxuLy8vICAgICAgICAgICBhbmQgdGhlbiBzbmFwcyBpbnRvIGEgbGFyZ2VyIGZpeGVkIGxheW91dCBhdCBlYWNoIGJyZWFrcG9pbnRcbi8vLyAtIGZpeGVkOiBhbHdheXMgZml4ZWQtd2lkdGggd2l0aCB0aGUgbGF5b3V0IGRlZmluZWQgYnkgJG8tZ3JpZC1maXhlZC1sYXlvdXQgKGRlZmF1bHQ6IEwpXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmcgLSBvbmUgb2YgZmx1aWQgKGRlZmF1bHQpLCBzbmFwcHksIGZpeGVkXG4kby1ncmlkLW1vZGU6ICdmbHVpZCcgIWRlZmF1bHQ7XG5cbi8vLyBMYXlvdXQgdG8gZGVmYXVsdCB0byB3aGVuIHRoZSBncmlkIGhhcyBhIGZpeGVkIHdpZHRoIChub3QgZmx1aWQpXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmcgLSBPbmUgb2YgJG8tZ3JpZC1sYXlvdXRzXG4kby1ncmlkLWZpeGVkLWxheW91dDogJ0wnICFkZWZhdWx0O1xuXG4vLy8gV2hlbiB0aGUgZ3JpZCBzdGFydCBzbmFwcGluZyBiZXR3ZWVuIGZpeGVkLXdpZHRoIGxheW91dHNcbi8vLyBpbiB0aGUgY2FzZSB3aGVyZSBhIHJvdyBoYXMgdGhlIGBvLWdyaWQtcm93LS1zbmFwcHlgIGNsYXNzXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbiRvLWdyaWQtc3RhcnQtc25hcHB5LW1vZGUtYXQ6ICdNJyAhZGVmYXVsdDtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gR3JpZCBzZXR0aW5ncyBhbmQgZGltZW5zaW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy8gTnVtYmVyIG9mIGNvbHVtbnNcbi8vL1xuLy8vIEB0eXBlIE51bWJlciAodW5pdGxlc3MpXG4kby1ncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xuXG4vLy8gTWluaW11bSB3aWR0aCwgaW4gcGl4ZWxzXG4vLy9cbi8vLyBAdHlwZSBOdW1iZXJcbiRvLWdyaWQtbWluLXdpZHRoOiAyNDBweCAhZGVmYXVsdDtcblxuLy8vIExheW91dHNcbi8vL1xuLy8vIEVhY2ggbGF5b3V0IGlzIGNhbGN1bGF0ZWQgZm9sbG93aW5nIGEgc3BlY2lmaWMgY29sdW1uIHdpZHRoLFxuLy8vIGluIG9yZGVyIHRvIGJhc2UgYnJlYWtwb2ludHMgb24gdGhlIHN0cnVjdHVyZSBvZiB0aGUgZ3JpZCBpdHNlbGZcbi8vL1xuLy8vIEB0eXBlIE1hcFxuJG8tZ3JpZC1sYXlvdXRzOiAoXG5cdFM6ICA0OTBweCwgIC8vIGNvbHVtbi13aWR0aDogMzBweCwgaW5uZXIgd2lkdGg6IDQ3MHB4XG5cdE06ICA3NDBweCwgIC8vIGNvbHVtbi13aWR0aDogNDBweCwgaW5uZXIgd2lkdGg6IDcwMHB4XG5cdEw6ICA5ODBweCwgIC8vIGNvbHVtbi13aWR0aDogNjBweCwgaW5uZXIgd2lkdGg6IDk0MHB4XG5cdFhMOiAxMjIwcHgsIC8vIGNvbHVtbi13aWR0aDogODBweCwgaW5uZXIgd2lkdGg6IDExODBweFxuKSAhZGVmYXVsdDtcblxuLy8vIExheW91dCBuYW1lc1xuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTGlzdFxuJF9vLWdyaWQtbGF5b3V0LW5hbWVzOiBtYXAta2V5cygkby1ncmlkLWxheW91dHMpO1xuXG4vLy8gR3V0dGVyIHNpemVzXG4vLy9cbi8vLyBAdHlwZSBNYXBcbiRvLWdyaWQtZ3V0dGVyczogKFxuXHRkZWZhdWx0OiAxMHB4LFxuXHRNOiAgICAgICAyMHB4LFxuKSAhZGVmYXVsdDtcblxuLy8gSWYgbGF5b3V0cyBoYXZlIGNoYW5nZWQgYnV0IGd1dHRlcnMgaGF2ZW4ndCxcbi8vIHBydW5lIG5vbi1leGlzdGFudCBsYXlvdXRzLlxuQGVhY2ggJGxheW91dC1uYW1lLCAkZ3V0dGVyLXNpemUgaW4gJG8tZ3JpZC1ndXR0ZXJzIHtcblx0QGlmICgkbGF5b3V0LW5hbWUgIT0gJ2RlZmF1bHQnKSBhbmQgKG5vdCBtYXAtaGFzLWtleSgkby1ncmlkLWxheW91dHMsICRsYXlvdXQtbmFtZSkpIHtcblx0XHQkby1ncmlkLWd1dHRlcnM6IG1hcC1yZW1vdmUoJG8tZ3JpZC1ndXR0ZXJzLCAkbGF5b3V0LW5hbWUpO1xuXHR9XG59XG5cbi8vLyBNYXhpbXVtIGdyaWQgd2lkdGhcbi8vLyBEZWZhdWx0cyB0byB0aGUgbGFyZ2VzdCBsYXlvdXQgd2lkdGhcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE51bWJlclxuJF9vLWdyaWQtbWF4LXdpZHRoOiBtYXAtZ2V0KCRvLWdyaWQtbGF5b3V0cywgbnRoKCRfby1ncmlkLWxheW91dC1uYW1lcywgLTEpKTtcbiIsIi8vLyBPdXRwdXQgY3VzdG9tIEZvbnQtZmFjZSBkZWNsYXJhdGlvbnMgYW5kIHJlZ2lzdGVyIHRoZSBmYW1pbHkgYW5kIHZhcmlhbnRzIHdpdGggby1mb250cy5cbi8vL1xuLy8vIEBleGFtcGxlIFRoaXMgZXhhbXBsZSBzaG93cyByZWdpc3RlcmluZyBhIGN1c3RvbSBmb250IFwiTXlGb250XCIgd2l0aCBcInNhbnNcIiBmYWxsYmFjay4gVGhlIGZvbnQgYWxsb3dzIHJlZ3VsYXIgb3IgYm9sZCB2YXJpYW50cy5cbi8vLyBcdEBpbmNsdWRlIG9Gb250c0RlZmluZUN1c3RvbUZvbnQoJ015Rm9udCwgc2FucycsIChcbi8vLyBcdFx0KHdlaWdodDogcmVndWxhciwgc3R5bGU6IG5vcm1hbCksXG4vLy8gXHRcdCh3ZWlnaHQ6IGJvbGQsIHN0eWxlOiBub3JtYWwpXG4vLy8gXHQpKSB7XG4vLy8gXHRcdEBmb250LWZhY2Uge1xuLy8vIFx0XHRcdHNyYzogdXJsKCdNeUZvbnQtVGhpbi53b2ZmMicpIGZvcm1hdCgnd29mZjInKSwgdXJsKCdNeUZvbnQtVGhpbi53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4vLy8gXHRcdFx0Zm9udC1mYW1pbHk6IE15Rm9udDtcbi8vLyBcdFx0XHRmb250LXdlaWdodDogMTAwO1xuLy8vIFx0XHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcbi8vLyBcdFx0fVxuLy8vXG4vLy8gXHRcdEBmb250LWZhY2V7XG4vLy8gXHRcdFx0c3JjOiB1cmwoJ015Rm9udC1Cb2xkLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJ015Rm9udC1Cb2xkLndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbi8vLyBcdFx0XHRmb250LWZhbWlseTogTXlGb250O1xuLy8vIFx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG4vLy8gXHRcdFx0Zm9udC1zdHlsZTogbm9ybWFsO1xuLy8vIFx0XHR9XG4vLy8gXHR9O1xuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250LWZhbWlseSBUaGUgY3VzdG9tIGZvbnQgZmFtaWx5IHdpdGggZmFsbGJhY2sgZS5nLiAnQ29taWNTYW5zLCBzYW5zJ1xuLy8vIEBwYXJhbSB7TWFwfSAkdmFyaWFudHMgVGhlIHZhcmlhbnRzICh3ZWlnaHQgYW5kIHN0eWxlIGNvbWJpbmF0aW9ucykgd2hpY2ggYXJlIGFsbG93ZWQgaW4gYSBuZXN0ZWQgbWFwIGUuZy4gKCh3ZWlnaHQ6IGJvbGQsIHN0eWxlOiBub3JtYWwpLCAod2VpZ2h0OiByZWd1bGFyLCBzdHlsZTogbm9ybWFsKSlcbi8vLyBAY29udGVudCBJZiB0aGUgZm9udCBmYW1pbHkgaXMgbm90IGEgc3lzdGVtIGZvbnQsIG91dHB1dCB0aGUgZm9udC1mYWNlIGZvciB0aGUgY3VzdG9tIGZvbnQgaW4gdGhlIG1peGluIGNvbnRlbnQuXG5AbWl4aW4gb0ZvbnRzRGVmaW5lQ3VzdG9tRm9udCgkZm9udC1mYW1pbHksICR2YXJpYW50cykge1xuXHQvLyBWYWxpZGF0ZSB2YXJpYW50cy5cblx0QGVhY2ggJHZhcmlhbnQgaW4gJHZhcmlhbnRzIHtcblx0XHQkd2VpZ2h0OiBtYXAtZ2V0KCR2YXJpYW50LCAnd2VpZ2h0Jyk7XG5cdFx0JHN0eWxlOiBtYXAtZ2V0KCR2YXJpYW50LCAnc3R5bGUnKTtcblx0XHRAaWYgdHlwZS1vZigkd2VpZ2h0KSAhPSAnc3RyaW5nJyBhbmQgbWFwLWhhcy1rZXkoJF9vLWZvbnRzLXdlaWdodHMsICR3ZWlnaHQpIHtcblx0XHRcdEBlcnJvciAnQ291bGQgbm90IGluY2x1ZGUgY3VzdG9tIGZvbnQgXCIjeyRmb250LWZhbWlseX1cIi4gQWxsIHZhcmlhbnRzIG11c3Qgc3BlY2lmeSBhIHdlaWdodCwgb25lIG9mIFwiI3skX28tZm9udHMtd2VpZ2h0c31cIi4nO1xuXHRcdH1cblx0XHRAaWYgdHlwZS1vZigkc3R5bGUpICE9ICdzdHJpbmcnIHtcblx0XHRcdEBlcnJvciAnQ291bGQgbm90IGluY2x1ZGUgY3VzdG9tIGZvbnQgXCIjeyRmb250LWZhbWlseX1cIi4gQWxsIHZhcmlhbnRzIG11c3Qgc3BlY2lmeSBhIHN0eWxlLCBlLmcuIFwibm9ybWFsXCIsIFwiaXRhbGljXCIuJztcblx0XHR9XG5cdH1cblx0JGZvbnQta2V5OiBvRm9udHNHZXRGb250RmFtaWx5V2l0aG91dEZhbGxiYWNrcygkZm9udC1mYW1pbHkpO1xuXHQkX28tZm9udHMtZmFtaWxpZXM6IG1hcC1tZXJnZSgoJGZvbnQta2V5OiAoXG5cdFx0J2ZvbnQtZmFtaWx5JzogJGZvbnQtZmFtaWx5LFxuXHRcdCd2YXJpYW50cyc6ICR2YXJpYW50cyxcblx0XHQnY3VzdG9tJzogdHJ1ZVxuXHQpKSwgJF9vLWZvbnRzLWZhbWlsaWVzKSAhZ2xvYmFsO1xuXHRAY29udGVudDsgLy8gT3V0cHV0IGEgY3VzdG9tIEZvbnQtZmFjZSBkZWNsYXJhdGlvbi5cbn1cblxuLy8vIFJlZ2lzdGVyIHdoaWNoIGZvbnRzIGhhdmUgYmVlbiBvdXRwdXQgYnkgYWxyZWFkeSBmb3IgeW91ciBwcm9qZWN0LlxuLy8vIFRoaXMgbWl4aW4gaXMgdXNlZnVsIGlmIGEgcHJvamVjdCBjYWxscyB0aGUgYG9Gb250c2AgbWl4aW4gaXMgaW4gYSBkaWZmZXJlbnRcbi8vLyBlbnRyeSBwb2ludC5cbi8vL1xuLy8vIEBleGFtcGxlIEluY2x1ZGUgYWxsIGZvbnRzIGZvciB0aGUgY3VycmVudCBicmFuZCAoY29yZSwgaW50ZXJuYWwsIHdoaXRlbGFiZWwpLlxuLy8vICAgICBAaW5jbHVkZSBvRm9udHNWYXJpYW50c0luY2x1ZGVkKCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBJbmNsdWRlIGEgbGltaXRlZCBzZXQgb2YgcmVjb21tZW5kZWQgZm9udHMgZm9yIHRoZSBjdXJyZW50IGJyYW5kIChjb3JlLCBpbnRlcm5hbCwgd2hpdGVsYWJlbCkuXG4vLy8gICAgIEBpbmNsdWRlIG9Gb250c1ZhcmlhbnRzSW5jbHVkZWQoJG9wdHM6ICgncmVjb21tZW5kZWQnOiB0cnVlKSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBJbmNsdWRlIGEgbGltaXRlZCBzZXQgb2YgcmVjb21tZW5kZWQgZm9udHMgZm9yIHRoZSBjdXJyZW50IGJyYW5kLCBwbHVzIGFuIGV4dHJhIEZpbmFuY2llckRpc3BsYXlXZWIgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9Gb250c1ZhcmlhbnRzSW5jbHVkZWQoJG9wdHM6IChcbi8vLyBcdFx0J3JlY29tbWVuZGVkJzogdHJ1ZSxcbi8vLyBcdFx0J2ZpbmFuY2llci1kaXNwbGF5JzogKFxuLy8vIFx0XHRcdCh3ZWlnaHQ6IHJlZ3VsYXIsIHN0eWxlOiBub3JtYWwpXG4vLy8gXHRcdClcbi8vLyBcdCkpO1xuLy8vXG4vLy8gQGV4YW1wbGUgSW5jbHVkZSBvbmx5IHJlZ3VsYXIgYW5kIHNlbWlib2xkIE1ldHJpY1dlYiBmb250IGZhY2VzLlxuLy8vICAgICBAaW5jbHVkZSBvRm9udHNWYXJpYW50c0luY2x1ZGVkKCRvcHRzOiAoJ21ldHJpYyc6IChcbi8vLyAgICAgXHQod2VpZ2h0OiByZWd1bGFyLCBzdHlsZTogbm9ybWFsKSxcbi8vLyAgICAgXHQod2VpZ2h0OiBzZW1pYm9sZCwgc3R5bGU6IG5vcm1hbCksXG4vLy8gICAgICkpKTtcbi8vL1xuLy8vIEBleGFtcGxlIEluY2x1ZGUgb25seSByZWd1bGFyIGFuZCBib2xkIEZpbmFuY2llckRpc3BsYXlXZWIgZm9udCBmYWNlcy5cbi8vLyAgICAgQGluY2x1ZGUgb0ZvbnRzVmFyaWFudHNJbmNsdWRlZCgkb3B0czogKCdmaW5hbmNpZXItZGlzcGxheSc6IChcbi8vLyAgICAgXHQod2VpZ2h0OiByZWd1bGFyLCBzdHlsZTogbm9ybWFsKSxcbi8vLyAgICAgXHQod2VpZ2h0OiBzZW1pYm9sZCwgc3R5bGU6IG5vcm1hbCksXG4vLy8gICAgICkpKTtcbi8vL1xuLy8vIEBleGFtcGxlIEluY2x1ZGUgb25seSByZWd1bGFyIGZvbnQgZmFjZXMgZm9yIE1ldHJpY1dlYiBhbmQgRmluYW5jaWVyRGlzcGxheVdlYi5cbi8vLyAgICAgQGluY2x1ZGUgb0ZvbnRzVmFyaWFudHNJbmNsdWRlZCgkb3B0czogKFxuLy8vICAgICBcdCdtZXRyaWMnOiAoKHdlaWdodDogcmVndWxhciwgc3R5bGU6IG5vcm1hbCkpLFxuLy8vICAgICBcdCdmaW5hbmNpZXItZGlzcGxheSc6ICgod2VpZ2h0OiByZWd1bGFyLCBzdHlsZTogbm9ybWFsKSlcbi8vLyAgICAgKSk7XG4vLy8gQHBhcmFtIHtNYXB9ICRvcHRzIC0gdGhlIGZvbnQgZmFjZXMgdG8gaW5jbHVkZWQsIHNlZSB0aGUgUkVBRE1FIG9yIGV4YW1wbGVzIGZvciBtb3JlIGRldGFpbHMuXG4vLy8gQHNlZSBvRm9udHMgLSBVc2UgYG9Gb250c2AgdG8gaW5jbHVkZSBmb250IGZhY2VzLlxuQG1peGluIG9Gb250c1ZhcmlhbnRzSW5jbHVkZWQoJG9wdHM6ICRfby1mb250cy1kZWZhdWx0KSB7XG5cdCR2YXJpYW50czogX29Gb250c09wdGlvbnNUb1ZhcmlhbnRzKCRvcHRzKTtcblxuXHRAZWFjaCAkdmFyaWFudCBpbiAkdmFyaWFudHMge1xuXHRcdCRmYW1pbHk6IG1hcC1nZXQoJHZhcmlhbnQsICdmYW1pbHknKTtcblx0XHQkd2VpZ2h0OiBtYXAtZ2V0KCR2YXJpYW50LCAnd2VpZ2h0Jyk7XG5cdFx0JHN0eWxlOiBtYXAtZ2V0KCR2YXJpYW50LCAnc3R5bGUnKTtcblx0XHRAaW5jbHVkZSBfb0ZvbnRzVmFyaWFudEluY2x1ZGVkKCRmYW1pbHksICR3ZWlnaHQsICRzdHlsZSk7XG5cdH1cbn1cblxuLy8vIE91dHB1dCBhIEZvbnQtZmFjZSBkZWNsYXJhdGlvbiBmb3IgYSBnaXZlbiBmb250IGZhbWlseSB3aGljaCBpcyBwcm92aWRlZCBieSBPcmlnYW1pLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmYW1pbHkgLSBvbmUgb2YgJF9vLWZvbnRzLWZhbWlsaWVzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR3ZWlnaHQgW3JlZ3VsYXJdIC0gZS5nLiAncmVndWxhcicsICdzZW1pYm9sZCcsICdib2xkJ1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3R5bGUgW25vcm1hbF0gLSBlLmcuICdpdGFsaWMnXG4vLy8gQHBhcmFtIHtTdHJpbmd8TnVsbH0gJGRpc3BsYXkgLSB0aGUgZm9udC1kaXNwbGF5IHByb3BlcnR5IGZvciB0aGlzIGZvbnQgZmFjZSwgZGVmYXVsdHMgdG8gJG8tZm9udHMtZGlzcGxheVxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vRm9udHNJbmNsdWRlKCRmYW1pbHksICR3ZWlnaHQ6IHJlZ3VsYXIsICRzdHlsZTogbm9ybWFsLCAkZGlzcGxheTogJG8tZm9udHMtZGlzcGxheSkge1xuXHQvLyBIZWxwIHVzZXIgaWYgdGhleSByZXF1ZXN0ZWQgYSBub3JtYWwgcmF0aGVyIHRoYW4gcmVndWxhciB3ZWlnaHQuXG5cdEBpZiAkd2VpZ2h0ID09IG5vcm1hbCB7XG5cdFx0QHdhcm4gJ1wibm9ybWFsXCIgaXMgbm90IGEgZm9udCB3ZWlnaHQgZm9yIFwiI3skZmFtaWx5fVwiLiBSZXF1ZXN0IGEgXCJyZWd1bGFyXCIgd2VpZ2h0IGluc3RlYWQuJztcblx0XHQkd2VpZ2h0OiByZWd1bGFyO1xuXHR9XG5cblx0Ly8gQ2hlY2sgdGhlIGZvbnQgaXMgYW4gT3JpZ2FtaSBmb250LCBub3QgYSBjdXN0b20gZm9udC5cblx0QGlmIG1hcC1oYXMta2V5KCRfby1mb250cy1mYW1pbGllcywgJGZhbWlseSkge1xuXHRcdCRmb250LWZhbWlseS1jb25maWc6IG1hcC1nZXQoJF9vLWZvbnRzLWZhbWlsaWVzLCAkZmFtaWx5KTtcblx0XHRAaWYgbWFwLWdldCgkZm9udC1mYW1pbHktY29uZmlnLCAnY3VzdG9tJykge1xuXHRcdFx0QGVycm9yICdDYW4gbm90IGluY2x1ZGUgYSBjdXN0b20gZm9udCBcIiN7JGZhbWlseX1cIi4gSW5jbHVkZSB5b3VyIGN1c3RvbSBmb250IG1hbnVhbGx5Lic7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgaWYgdGhlIGZvbnQgaGFzIGFscmVhZHkgYmVlbiBpbmNsdWRlZFxuXHQvLyBJZiBzbywgbm8gbmVlZCB0byBvdXRwdXQgYW5vdGhlciBAZm9udC1mYWNlIGRlY2xhcmF0aW9uXG5cdCRmb250LWlzLWFscmVhZHktaW5jbHVkZWQ6IG9Gb250c1ZhcmlhbnRJbmNsdWRlZCgkZmFtaWx5LCAkd2VpZ2h0LCAkc3R5bGUpO1xuXG5cdEBpZiAkZm9udC1pcy1hbHJlYWR5LWluY2x1ZGVkID09IGZhbHNlIHtcblx0XHQvLyBFcnJvciBpZiBhIGZvbnQgZG9lcyBub3QgZXhpc3QgZm9yIHRoZSBnaXZlbiB2YXJpYW50LlxuXHRcdEBpZiBub3QgbWFwLWhhcy1rZXkoJF9vLWZvbnRzLWZhbWlsaWVzLCAkZmFtaWx5KSB7XG5cdFx0XHRAZXJyb3IgJ0ZvbnQgXCIje2luc3BlY3QoJGZhbWlseSl9XCIgbm90IGZvdW5kLiBNdXN0IGJlIG9uZSBvZiAje21hcC1rZXlzKCRfby1mb250cy1mYW1pbGllcyl9Lic7XG5cdFx0fVxuXG5cdFx0QGlmIG5vdCBvRm9udHNWYXJpYW50RXhpc3RzKCRmYW1pbHksICR3ZWlnaHQsICRzdHlsZSkge1xuXHRcdFx0QGVycm9yICdGb250IGZvciBcIiN7JGZhbWlseX1cIiBhdCB3ZWlnaHQ6IFwiI3skd2VpZ2h0fVwiIGFuZCBzdHlsZSBcIiN7JHN0eWxlfVwiIGRvZXMgbm90IGV4aXN0Lic7XG5cdFx0fVxuXG5cdFx0Ly8gRmlsZXMgYXJlIG5hbWVkIGFzIGZvbGxvd3Ncblx0XHQvLyBOYW1lLVdlaWdodFR5cGVcblx0XHQvLyBNZXRyaWNXZWItUmVndWxhciAgICAgICAgICAgICAgKHJlZ3VsYXIgbm9ybWFsKVxuXHRcdC8vIE1ldHJpY1dlYi1SZWd1bGFySXRhbGljICAgICAgICAocmVndWxhciBpdGFsaWMpXG5cdFx0Ly8gTWV0cmljV2ViLUJvbGQgICAgICAgICAgICAgICAgIChib2xkIG5vcm1hbClcblx0XHQvLyBNZXRyaWNXZWItQm9sZEl0YWxpYyAgICAgICAgICAgKGJvbGQgaXRhbGljKVxuXG5cdFx0Ly8gQnkgZGVmYXVsdCwgc3VmZml4IGlzIHRoZSB3ZWlnaHRcblx0XHQkZm9udC1zdWZmaXg6IF9vRm9udHNTdHJpbmdDYXBpdGFsaXNlKCR3ZWlnaHQpO1xuXG5cdFx0QGlmICgkc3R5bGUgIT0gJ25vcm1hbCcpIHtcblx0XHRcdCRjYXBpdGFsaXNlZC13ZWlnaHQ6IF9vRm9udHNTdHJpbmdDYXBpdGFsaXNlKCR3ZWlnaHQpO1xuXHRcdFx0JGNhcGl0YWxpc2VkLXN0eWxlOiBfb0ZvbnRzU3RyaW5nQ2FwaXRhbGlzZSgkc3R5bGUpO1xuXHRcdFx0JGZvbnQtc3VmZml4OiAjeyRjYXBpdGFsaXNlZC13ZWlnaHR9I3skY2FwaXRhbGlzZWQtc3R5bGV9O1xuXHRcdH1cblxuXHRcdEBmb250LWZhY2Uge1xuXHRcdFx0c3JjOiB1cmwoJG8tZm9udHMtcGF0aCArICcjeyRmYW1pbHl9LSN7JGZvbnQtc3VmZml4fScgKyAnLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJG8tZm9udHMtcGF0aCArICcjeyRmYW1pbHl9LSN7JGZvbnQtc3VmZml4fScgKyAnLndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcblx0XHRcdGZvbnQtZmFtaWx5OiAkZmFtaWx5O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG9Gb250c1dlaWdodCgkd2VpZ2h0KTtcblx0XHRcdGZvbnQtc3R5bGU6IHVucXVvdGUoJHN0eWxlKTtcblx0XHRcdGZvbnQtZGlzcGxheTogdW5xdW90ZSgkZGlzcGxheSk7XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHRvIHRoZSBsaXN0IG9mIGFscmVhZHkgaW5jbHVkZWQgZmFtaWxpZXMgLyB2YXJpYW50c1xuXHRcdEBpbmNsdWRlIF9vRm9udHNWYXJpYW50SW5jbHVkZWQoJGZhbWlseSwgJHdlaWdodCwgJHN0eWxlKTtcblx0fVxufVxuXG4vLy8gTG9nIGEgZ2l2ZW4gZm9udCB2YXJpYW50IGFzIGhhdmluZyBiZWVuIG91dHB1dC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZmFtaWx5IC0gb25lIG9mICRfby1mb250cy1mYW1pbGllc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkd2VpZ2h0IFtyZWd1bGFyXSAtIFRoZSBmb250IHdlaWdodC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0eWxlIFtub3JtYWxdIC0gVGhlIGZvbnQgc3R5bGUuXG5AbWl4aW4gX29Gb250c1ZhcmlhbnRJbmNsdWRlZCgkZmFtaWx5LCAkd2VpZ2h0LCAkc3R5bGUpIHtcblx0Ly8gQWRkIHRvIHRoZSBsaXN0IG9mIGFscmVhZHkgaW5jbHVkZWQgZmFtaWxpZXMgLyB2YXJpYW50c1xuXHQkdmFyaWFudC1rZXk6IF9vRm9udHNWYXJpYW50S2V5KCRmYW1pbHksICR3ZWlnaHQsICRzdHlsZSk7XG5cdCRfby1mb250cy1mYW1pbGllcy1pbmNsdWRlZDogbWFwLW1lcmdlKCRfby1mb250cy1mYW1pbGllcy1pbmNsdWRlZCwgKCR2YXJpYW50LWtleTogdHJ1ZSkpICFnbG9iYWw7XG59XG4iLCJAaW1wb3J0IFwiQGZpbmFuY2lhbC10aW1lcy9vLWJyYW5kL21haW5cIjtcblxuQGltcG9ydCBcInNyYy9zY3NzL3ZhcmlhYmxlc1wiO1xuQGltcG9ydCBcInNyYy9zY3NzL2Z1bmN0aW9uc1wiO1xuQGltcG9ydCBcInNyYy9zY3NzL21peGluc1wiO1xuXG4vLy8gT3V0cHV0IGFsbCBkZWZhdWx0IGZvbnQtZmFjZSBkZWNsYXJhdGlvbnMgZm9yIHRoZSBjdXJyZW50IGJyYW5kLlxuLy8vXG4vLy8gQGV4YW1wbGUgSW5jbHVkZSBhbGwgZm9udHMgZm9yIHRoZSBjdXJyZW50IGJyYW5kIChjb3JlLCBpbnRlcm5hbCwgd2hpdGVsYWJlbCkuXG4vLy8gICAgIEBpbmNsdWRlIG9Gb250cygpO1xuLy8vXG4vLy8gQGV4YW1wbGUgSW5jbHVkZSBhIGxpbWl0ZWQgc2V0IG9mIHJlY29tbWVuZGVkIGZvbnRzIGZvciB0aGUgY3VycmVudCBicmFuZCAoY29yZSwgaW50ZXJuYWwsIHdoaXRlbGFiZWwpLlxuLy8vICAgICBAaW5jbHVkZSBvRm9udHMoJG9wdHM6ICgncmVjb21tZW5kZWQnOiB0cnVlKSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBJbmNsdWRlIGEgbGltaXRlZCBzZXQgb2YgcmVjb21tZW5kZWQgZm9udHMgZm9yIHRoZSBjdXJyZW50IGJyYW5kLCBwbHVzIGFuIGV4dHJhIEZpbmFuY2llckRpc3BsYXlXZWIgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9Gb250cygkb3B0czogKFxuLy8vIFx0XHQncmVjb21tZW5kZWQnOiB0cnVlLFxuLy8vIFx0XHQnZmluYW5jaWVyLWRpc3BsYXknOiAoXG4vLy8gXHRcdFx0KHdlaWdodDogcmVndWxhciwgc3R5bGU6IG5vcm1hbClcbi8vLyBcdFx0KVxuLy8vIFx0KSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBJbmNsdWRlIG9ubHkgcmVndWxhciBhbmQgc2VtaWJvbGQgTWV0cmljV2ViIGZvbnQgZmFjZXMuXG4vLy8gICAgIEBpbmNsdWRlIG9Gb250cygkb3B0czogKCdtZXRyaWMnOiAoXG4vLy8gICAgIFx0KHdlaWdodDogcmVndWxhciwgc3R5bGU6IG5vcm1hbCksXG4vLy8gICAgIFx0KHdlaWdodDogc2VtaWJvbGQsIHN0eWxlOiBub3JtYWwpLFxuLy8vICAgICApKSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBJbmNsdWRlIG9ubHkgcmVndWxhciBhbmQgYm9sZCBGaW5hbmNpZXJEaXNwbGF5V2ViIGZvbnQgZmFjZXMuXG4vLy8gICAgIEBpbmNsdWRlIG9Gb250cygkb3B0czogKCdmaW5hbmNpZXItZGlzcGxheSc6IChcbi8vLyAgICAgXHQod2VpZ2h0OiByZWd1bGFyLCBzdHlsZTogbm9ybWFsKSxcbi8vLyAgICAgXHQod2VpZ2h0OiBzZW1pYm9sZCwgc3R5bGU6IG5vcm1hbCksXG4vLy8gICAgICkpKTtcbi8vL1xuLy8vIEBleGFtcGxlIEluY2x1ZGUgb25seSByZWd1bGFyIGZvbnQgZmFjZXMgZm9yIE1ldHJpY1dlYiBhbmQgRmluYW5jaWVyRGlzcGxheVdlYi5cbi8vLyAgICAgQGluY2x1ZGUgb0ZvbnRzKCRvcHRzOiAoXG4vLy8gICAgIFx0J21ldHJpYyc6ICgod2VpZ2h0OiByZWd1bGFyLCBzdHlsZTogbm9ybWFsKSksXG4vLy8gICAgIFx0J2ZpbmFuY2llci1kaXNwbGF5JzogKCh3ZWlnaHQ6IHJlZ3VsYXIsIHN0eWxlOiBub3JtYWwpKVxuLy8vICAgICApKTtcbi8vL1xuLy8vIEBleGFtcGxlIEluY2x1ZGUgb25seSBibGFjayB3ZWlnaHRlZCBmb250IGZhY2VzIGZvciBNZXRyaWNXZWIsIEZpbmFuY2llckRpc3BsYXlXZWIsIGFuZCBGaW5hbmNpZXJUZXh0V2ViLlxuLy8vICAgICBAaW5jbHVkZSBvRm9udHMoJG9wdHM6IChcbi8vLyAgICAgXHQnbWV0cmljJzogKCh3ZWlnaHQ6ICdibGFjaycsIHN0eWxlOiBub3JtYWwpKSxcbi8vLyAgICAgXHQnZmluYW5jaWVyLWRpc3BsYXknOiAoKHdlaWdodDogJ2JsYWNrJywgc3R5bGU6IG5vcm1hbCkpLFxuLy8vICAgICBcdCdmaW5hbmNpZXItdGV4dCc6ICgod2VpZ2h0OiAnYmxhY2snLCBzdHlsZTogbm9ybWFsKSlcbi8vLyAgICAgKSk7XG4vLy8gQHBhcmFtIHtNYXB9ICRvcHRzIC0gdGhlIGZvbnQgZmFjZXMgdG8gaW5jbHVkZSwgc2VlIHRoZSBSRUFETUUgb3IgZXhhbXBsZXMgZm9yIG1vcmUgZGV0YWlscy5cbkBtaXhpbiBvRm9udHMoJG9wdHM6ICRfby1mb250cy1kZWZhdWx0KSB7XG5cdCR2YXJpYW50czogX29Gb250c09wdGlvbnNUb1ZhcmlhbnRzKCRvcHRzKTtcblxuXHRAZWFjaCAkdmFyaWFudCBpbiAkdmFyaWFudHMge1xuXHRcdCRmYW1pbHk6IG1hcC1nZXQoJHZhcmlhbnQsICdmYW1pbHknKTtcblx0XHQkd2VpZ2h0OiBtYXAtZ2V0KCR2YXJpYW50LCAnd2VpZ2h0Jyk7XG5cdFx0JHN0eWxlOiBtYXAtZ2V0KCR2YXJpYW50LCAnc3R5bGUnKTtcblx0XHRAaW5jbHVkZSBfb0ZvbnRzSW5jbHVkZSgkZmFtaWx5LCAkd2VpZ2h0LCAkc3R5bGUpO1xuXHR9XG59XG5cbkBpZiAoJG8tZm9udHMtaXMtc2lsZW50ID09IGZhbHNlKSB7XG5cdEBpbmNsdWRlIG9Gb250cygpO1xufVxuIiwiQGltcG9ydCAnQGZpbmFuY2lhbC10aW1lcy9tYXRoJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1zcGFjaW5nL21haW4nO1xuQGltcG9ydCAnQGZpbmFuY2lhbC10aW1lcy9vLWdyaWQvbWFpbic7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28tZm9udHMvbWFpbic7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28tY29sb3JzL21haW4nO1xuQGltcG9ydCAnQGZpbmFuY2lhbC10aW1lcy9vLWljb25zL21haW4nO1xuQGltcG9ydCAnQGZpbmFuY2lhbC10aW1lcy9vLW5vcm1hbGlzZS9tYWluJztcblxuQGltcG9ydCAnc3JjL3Njc3MvYnJhbmQnO1xuQGltcG9ydCAnc3JjL3Njc3MvdmFyaWFibGVzJztcbkBpbXBvcnQgJ3NyYy9zY3NzL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICdzcmMvc2Nzcy9taXhpbnMnO1xuQGltcG9ydCAnc3JjL3Njc3MvdXNlLWNhc2VzL2dlbmVyYWwnO1xuQGltcG9ydCAnc3JjL3Njc3MvdXNlLWNhc2VzL3dyYXBwZXInO1xuXG4vLy8gT3V0cHV0IG8tdHlwb2dyYXBoeSBmZWF0dXJlcy5cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhbGwgby10eXBvZ3JhcGh5IGNzcyBjbGFzc2VzLlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHkoKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGdyYW51bGFyIHNlbGVjdGlvbiBvZiBvLXR5cG9ncmFwaHkgY3NzIGNsYXNzZXMuIFNlZSB0aGUgW1JFQURNRV0oaHR0cHM6Ly9yZWdpc3RyeS5vcmlnYW1pLmZ0LmNvbS9jb21wb25lbnRzL28tdHlwb2dyYXBoeS9yZWFkbWUpIGZvciBhIGZ1bGwgbGlzdCBvZiBvcHRpb25zLlxuLy8vICAgICBAaW5jbHVkZSBvVHlwb2dyYXBoeSgoXG4vLy8gICAgIFx0J2JvZHknOiB0cnVlLFxuLy8vICAgICBcdCdoZWFkaW5ncyc6ICgxLCAyLCAzKSxcbi8vLyAgICAgXHQnbGlzdHMnOiAoJ3Vub3JkZXJlZCcpLFxuLy8vICAgICApKTtcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkb3B0cyBbKCdoZWFkaW5ncyc6ICgxLCAyLCAzLCA0LCA1LCA2KSwgJ3dyYXBwZXInOiB0cnVlLCAnYm9keSc6IHRydWUsICdsaW5rcyc6IHRydWUsICdsaXN0cyc6ICgnb3JkZXJlZCcsICd1bm9yZGVyZWQnKSwgJ2NhcHRpb24nOiB0cnVlLCAnZm9vdGVyJzogdHJ1ZSwgJ3V0aWxpdGllcyc6IHRydWUpXSAtIFRoZSBmZWF0dXJlcyBvZiBvLXR5cG9ncmFwaHkgdG8gb3V0cHV0IGNsYXNzZXMgZm9yLiBTZWUgdGhlIFtSRUFETUVdKGh0dHBzOi8vcmVnaXN0cnkub3JpZ2FtaS5mdC5jb20vY29tcG9uZW50cy9vLXR5cG9ncmFwaHkvcmVhZG1lKSBmb3IgbW9yZSBkZXRhaWxzLlxuQG1peGluIG9UeXBvZ3JhcGh5KCRvcHRzOiAoXG5cdCdoZWFkaW5ncyc6ICgxLCAyLCAzLCA0LCA1LCA2KSxcblx0J3dyYXBwZXInOiB0cnVlLFxuXHQnYm9keSc6IHRydWUsXG5cdCdsaW5rcyc6IHRydWUsXG5cdCdsaXN0cyc6ICgnb3JkZXJlZCcsICd1bm9yZGVyZWQnKSxcblx0J2NhcHRpb24nOiB0cnVlLFxuXHQnZm9vdGVyJzogdHJ1ZSxcblx0J3V0aWxpdGllcyc6IHRydWUsXG4pKSB7XG5cdCR3cmFwcGVyLWVuYWJsZWQ6IG1hcC1nZXQoJG9wdHMsICd3cmFwcGVyJyk7XG5cdCRib2R5LWVuYWJsZWQ6IG1hcC1nZXQoJG9wdHMsICdib2R5Jyk7XG5cdCRsaW5rcy1lbmFibGVkOiBtYXAtZ2V0KCRvcHRzLCAnbGlua3MnKTtcblx0JGNhcHRpb24tZW5hYmxlZDogbWFwLWdldCgkb3B0cywgJ2NhcHRpb24nKTtcblx0JGZvb3Rlci1lbmFibGVkOiBtYXAtZ2V0KCRvcHRzLCAnZm9vdGVyJyk7XG5cdCR1dGlsaXRpZXMtZW5hYmxlZDogbWFwLWdldCgkb3B0cywgJ3V0aWxpdGllcycpO1xuXHQkaGVhZGluZ3M6IG1hcC1nZXQoJG9wdHMsICdoZWFkaW5ncycpO1xuXHQkaGVhZGluZ3M6IGlmKCRoZWFkaW5ncywgJGhlYWRpbmdzLCAoKSk7XG5cdEBpZigkaGVhZGluZ3MgYW5kIHR5cGUtb2YoJGhlYWRpbmdzKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YoJGhlYWRpbmdzKSAhPSAnbnVtYmVyJykge1xuXHRcdEBlcnJvciAoJ1RoZSBcImhlYWRpbmdzXCIgb3B0aW9uIG11c3QgYmUgYSBsaXN0IG9mIGhlYWRpbmcgbGV2ZWxzIHRvIGluY2x1ZGUgZS5nLiBgKDEsIDIsIDMsIDQsIDUsIDYpYC4nKTtcblx0fVxuXHQkbGlzdHM6IG1hcC1nZXQoJG9wdHMsICdsaXN0cycpO1xuXHQkbGlzdHM6IGlmKCRsaXN0cywgJGxpc3RzLCAoKSk7XG5cdEBpZigkbGlzdHMgYW5kIHR5cGUtb2YoJGxpc3RzKSAhPSAnbGlzdCcpIHtcblx0XHRAZXJyb3IgKCdUaGUgXCJsaXN0c1wiIG9wdGlvbiBtdXN0IGJlIGEgbGlzdCBvZiBsaXN0IHR5cGVzIHRvIGluY2x1ZGUgZS5nLiBgKFxcJ29yZGVyZWRcXCcsIFxcJ3Vub3JkZXJlZFxcJylgLicpO1xuXHR9XG5cblx0Ly8gTG9hZCBmb250cyB3aXRoaW4gdGhlIHByaW1hcnkgbWl4aW4gaW4tY2FzZSBzaWxlbnQgbW9kZSBpcyBvbi5cblx0QGlmICRvLXR5cG9ncmFwaHktbG9hZC1mb250cyA9PSB0cnVlIHtcblx0XHRAaW5jbHVkZSBvRm9udHMoKTtcblx0XHQvLyBTZXQgdG8gZmFsc2Ugc28gZm9udHMgYXJlIG5vdCBvdXRwdXQgdHdpY2UgYnkgby10eXBvZ3JhcGh5LlxuXHRcdCRvLXR5cG9ncmFwaHktbG9hZC1mb250czogZmFsc2UgIWdsb2JhbDtcblx0fVxuXG5cdC8vIEhlYWRpbmdzXG5cdEBlYWNoICRsZXZlbCBpbiAkaGVhZGluZ3Mge1xuXHRcdC5vLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC0jeyRsZXZlbH0ge1xuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlIZWFkaW5nKCRsZXZlbCk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQm9keSwgSXRhbGljLCBTdXBlcnNjcmlwdCwgU3Vic2NyaXB0LlxuXHRAaWYgJHV0aWxpdGllcy1lbmFibGVkIHtcblx0XHQuby10eXBvZ3JhcGh5LWJvbGQge1xuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zIChcblx0XHRcdFx0JHdlaWdodDogJ3NlbWlib2xkJyxcblx0XHRcdFx0JGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdC5vLXR5cG9ncmFwaHktaXRhbGljIHtcblx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHR9XG5cblx0XHQuby10eXBvZ3JhcGh5LXN1cCB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVN1cGVyO1xuXHRcdH1cblxuXHRcdC5vLXR5cG9ncmFwaHktc3ViIHtcblx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U3ViO1xuXHRcdH1cblx0fVxuXG5cdC8vIEJvZHlcblx0QGlmICRib2R5LWVuYWJsZWQge1xuXHRcdC5vLXR5cG9ncmFwaHktYm9keSB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUJvZHk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gTGlua3Ncblx0QGlmICRsaW5rcy1lbmFibGVkIHtcblx0XHQuby10eXBvZ3JhcGh5LWxpbmsge1xuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaW5rO1xuXHRcdH1cblxuXHRcdC5vLXR5cG9ncmFwaHktbGluay0tZXh0ZXJuYWwge1xuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaW5rKFxuXHRcdFx0XHQkZXh0ZXJuYWw6IHRydWUsXG5cdFx0XHRcdCRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvLyBMaXN0c1xuXHRAaWYgbGVuZ3RoKCRsaXN0cykgPj0gMSB7XG5cdFx0Lm8tdHlwb2dyYXBoeS1saXN0IHtcblx0XHRcdC8vIE91dHB1dCBiYXNlIHN0eWxlcyBzaGFyZWQgYnkgYWxsIGxpc3QgdHlwZXMuXG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpc3QoKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgaW5kZXgoJGxpc3RzLCAnb3JkZXJlZCcpIHtcblx0XHQuby10eXBvZ3JhcGh5LWxpc3QtLW9yZGVyZWQge1xuXHRcdFx0Ly8gT3V0cHV0IGxpc3Qgc3R5bGVzIHVuaXF1ZSB0byBhbiBvcmRlcmVkIGxpc3QuXG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpc3QoJHR5cGU6ICdvcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgaW5kZXgoJGxpc3RzLCAndW5vcmRlcmVkJykge1xuXHRcdC5vLXR5cG9ncmFwaHktbGlzdC0tdW5vcmRlcmVkIHtcblx0XHRcdC8vIE91dHB1dCBsaXN0IHN0eWxlcyB1bmlxdWUgdG8gYW4gdW5vcmRlcmVkIGxpc3QuXG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpc3QoJHR5cGU6ICd1bm9yZGVyZWQnLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UpO1xuXHRcdH1cblx0fVxuXG5cdC8vIENhcHRpb25cblx0QGlmICRjYXB0aW9uLWVuYWJsZWQge1xuXHRcdC5vLXR5cG9ncmFwaHktY2FwdGlvbiB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUNhcHRpb247XG5cdFx0fVxuXHR9XG5cblx0Ly8gRm9vdGVyXG5cdEBpZiAkZm9vdGVyLWVuYWJsZWQge1xuXHRcdC5vLXR5cG9ncmFwaHktZm9vdGVyIHtcblx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5Rm9vdGVyO1xuXHRcdH1cblx0fVxuXG5cdC8vIFdyYXBwZXJcblx0QGlmICR3cmFwcGVyLWVuYWJsZWQge1xuXHRcdC5vLXR5cG9ncmFwaHktd3JhcHBlciA+IHAsXG5cdFx0Lm8tdHlwb2dyYXBoeS13cmFwcGVyIHtcblx0XHRcdEBpbmNsdWRlIF9vVHlwb2dyYXBoeVdyYXBwZXI7XG5cdFx0fVxuXHR9XG59XG5cbi8vIFNvIHRoZSBidWlsZCBzZXJ2aWNlIGNhbiBvdXRwdXQgYWxsIHR5cG9ncmFwaHkgc3R5bGVzLlxuQGlmICRvLXR5cG9ncmFwaHktaXMtc2lsZW50ID09IGZhbHNlIHtcblx0Ly8gTG9hZCBmb250cyBvdXRzaWRlIHRoZSBwcmltYXJ5IG1peGluIGFzIHRoZXkgbWF5IGJlXG5cdC8vIHJlcXVpcmVkIGJ5IG90aGVyIG1peGlucy4gQnV0IHNldCB0byBmYWxzZSBzbyBmb250c1xuXHQvLyBhcmUgbm90IG91dHB1dCB0d2ljZSBieSBvLXR5cG9ncmFwaHkuXG5cdEBpZiAkby10eXBvZ3JhcGh5LWxvYWQtZm9udHMgPT0gdHJ1ZSB7XG5cdFx0QGluY2x1ZGUgb0ZvbnRzKCk7XG5cdFx0JG8tdHlwb2dyYXBoeS1sb2FkLWZvbnRzOiBmYWxzZSAhZ2xvYmFsO1xuXHR9XG5cblx0QGluY2x1ZGUgb1R5cG9ncmFwaHkoKTtcblx0Ly8gRG9uJ3Qgb3V0cHV0IHR3aWNlXG5cdCRvLXR5cG9ncmFwaHktaXMtc2lsZW50OiB0cnVlICFnbG9iYWw7XG59XG4iLCIvLy8gT3V0cHV0cyB0eXBvZ3JhcGh5IHN0eWxlcyBmb3IgdGhlIFNlcmlmIGZvbnQuXG4vLy8gSW5jbHVkaW5nOiBmYW1pbHksIHNpemUsIGxpbmUtaGVpZ2h0LCB3ZWlnaHQsIHN0eWxlLCBhbmQgZm9udCBzaXplc1xuLy8vIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcuXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBmb250LWZhbWlseSBwcm9wZXJ0eSBvbmx5IGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzZXJpZiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIHNlcmlmIGZvbnQuIFNldCBhIGN1c3RvbSBsaW5lLWhlaWdodCBvZiAxLjYuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJGxpbmUtaGVpZ2h0OiAxLjYpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC13ZWlnaHQgZm9yIHRoZSBzZXJpZiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICR3ZWlnaHQ6ICdib2xkJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXN0eWxlIGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBzZXJpZiBmb250IHByb3BlcnRpZXMgd2l0aG91dCBmb250LWZhbWlseS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNlcmlmIGZvbnQgcHJvcGVydGllcyB3aXRob3V0IHNpemVzIGZvciB0aGUgZmFsbGJhY2sgZm9udCAod2l0aG91dCBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcpLlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLXByb2dyZXNzaXZlOiBmYWxzZSk7XG4vLy9cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgc2VyaWYgZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG5AbWl4aW4gb1R5cG9ncmFwaHlTZXJpZihcblx0JHNjYWxlOiBudWxsLFxuXHQkbGluZS1oZWlnaHQ6IG51bGwsXG5cdCR3ZWlnaHQ6IG51bGwsXG5cdCRzdHlsZTogbnVsbCxcblx0JGluY2x1ZGUtZm9udC1mYW1pbHk6IHRydWUsXG5cdCRpbmNsdWRlLXByb2dyZXNzaXZlOiAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZ1xuKSB7XG5cdEBpbmNsdWRlIF9vVHlwb2dyYXBoeUZvcihcblx0XHQkX28tdHlwb2dyYXBoeS1zZXJpZixcblx0XHQkc2NhbGUsXG5cdFx0JGxpbmUtaGVpZ2h0LFxuXHRcdCR3ZWlnaHQsXG5cdFx0JHN0eWxlLFxuXHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5LFxuXHRcdCRpbmNsdWRlLXByb2dyZXNzaXZlXG5cdCk7XG59XG5cbi8vLyBPdXRwdXRzIHR5cG9ncmFwaHkgc3R5bGVzIGZvciB0aGUgRGlzcGxheSBmb250LlxuLy8vIEluY2x1ZGluZzogZmFtaWx5LCBzaXplLCBsaW5lLWhlaWdodCwgd2VpZ2h0LCBzdHlsZSwgYW5kIGZvbnQgc2l6ZXNcbi8vLyBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nLlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGEgZm9udC1mYW1pbHkgcHJvcGVydHkgb25seSBmb3IgdGhlIGRpc3BsYXkgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIGRpc3BsYXkgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIGRpc3BsYXkgZm9udC4gU2V0IGEgY3VzdG9tIGxpbmUtaGVpZ2h0IG9mIDEuNi5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRsaW5lLWhlaWdodDogMS42KTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtd2VpZ2h0IGZvciB0aGUgZGlzcGxheSBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHdlaWdodDogJ2JvbGQnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtc3R5bGUgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBkaXNwbGF5IGZvbnQgcHJvcGVydGllcyB3aXRob3V0IGZvbnQtZmFtaWx5LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBkaXNwbGF5IGZvbnQgcHJvcGVydGllcyB3aXRob3V0IHNpemVzIGZvciB0aGUgZmFsbGJhY2sgZm9udCAod2l0aG91dCBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcpLlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtcHJvZ3Jlc3NpdmU6IGZhbHNlKTtcbi8vL1xuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJHNjYWxlIFtudWxsXSAtIGEgc2NhbGUgbnVtYmVyIHRvIG91dHB1dCBhIGZvbnQtc2l6ZSBhbmQgbGluZS1oZWlnaHQgcHJvcGVydHlcbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBbbnVsbF0gLSBjdXN0b20gbGluZS1oZWlnaHQgdmFsdWUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIHNjYWxlJ3MgZGVmYXVsdFxuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXdlaWdodCBwcm9wZXJ0eSwgZS5nLiAnYm9sZCcsICdzZW1pYm9sZCdcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXN0eWxlIHByb3BlcnR5LCBlLmcuICdpdGFsaWMnXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1mb250LWZhbWlseSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSB0aGUgZm9udC1mYW1pbHkgcHJvcGVydHkgZnJvbSB0aGUgb3V0cHV0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHJlc2l6aW5nIHR5cG9ncmFwaHksIHdoZXJlIHRoZSBkaXNwbGF5IGZvbnQtZmFtaWx5IGlzIGluaGVyaXRlZCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1wcm9ncmVzc2l2ZSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBzdHlsZXMgdXNlZCBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nIChmb250LWZhbWlseSBhbmQgc2l6ZSBmYWxsYmFja3MgZm9yIGxvYWRpbmcgZm9udHMpLlxuQG1peGluIG9UeXBvZ3JhcGh5RGlzcGxheShcblx0JHNjYWxlOiBudWxsLFxuXHQkbGluZS1oZWlnaHQ6IG51bGwsXG5cdCR3ZWlnaHQ6IG51bGwsXG5cdCRzdHlsZTogbnVsbCxcblx0JGluY2x1ZGUtZm9udC1mYW1pbHk6IHRydWUsXG5cdCRpbmNsdWRlLXByb2dyZXNzaXZlOiAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZ1xuKSB7XG5cdEBpbmNsdWRlIF9vVHlwb2dyYXBoeUZvcihcblx0XHQkX28tdHlwb2dyYXBoeS1kaXNwbGF5LFxuXHRcdCRzY2FsZSxcblx0XHQkbGluZS1oZWlnaHQsXG5cdFx0JHdlaWdodCxcblx0XHQkc3R5bGUsXG5cdFx0JGluY2x1ZGUtZm9udC1mYW1pbHksXG5cdFx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmVcblx0KTtcbn1cblxuLy8vIE91dHB1dHMgdHlwb2dyYXBoeSBzdHlsZXMgZm9yIHRoZSBTYW5zIGZvbnQuXG4vLy8gSW5jbHVkaW5nOiBmYW1pbHksIHNpemUsIGxpbmUtaGVpZ2h0LCB3ZWlnaHQsIHN0eWxlLCBhbmQgZm9udCBzaXplc1xuLy8vIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcuXG4vLy9cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGZvbnQtZmFtaWx5IHByb3BlcnR5IG9ubHkgZm9yIHRoZSBzYW5zIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzYW5zIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzYW5zIGZvbnQuIFNldCBhIGN1c3RvbSBsaW5lLWhlaWdodCBvZiAxLjYuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkbGluZS1oZWlnaHQ6IDEuNik7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXdlaWdodCBmb3IgdGhlIHNhbnMgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICR3ZWlnaHQ6ICdib2xkJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXN0eWxlIGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgc2FucyBmb250IHByb3BlcnRpZXMgd2l0aG91dCBmb250LWZhbWlseS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgc2FucyBmb250IHByb3BlcnRpZXMgd2l0aG91dCBzaXplcyBmb3IgdGhlIGZhbGxiYWNrIGZvbnQgKHdpdGhvdXQgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nKS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLXByb2dyZXNzaXZlOiBmYWxzZSk7XG4vLy9cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgc2FucyBmb250LWZhbWlseSBpcyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudCBlbGVtZW50LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtcHJvZ3Jlc3NpdmUgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgc3R5bGVzIHVzZWQgZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZyAoZm9udC1mYW1pbHkgYW5kIHNpemUgZmFsbGJhY2tzIGZvciBsb2FkaW5nIGZvbnRzKS5cbkBtaXhpbiBvVHlwb2dyYXBoeVNhbnMoXG5cdCRzY2FsZTogbnVsbCxcblx0JGxpbmUtaGVpZ2h0OiBudWxsLFxuXHQkd2VpZ2h0OiBudWxsLFxuXHQkc3R5bGU6IG51bGwsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlLFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZTogJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmdcbikge1xuXHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb3IoXG5cdFx0JF9vLXR5cG9ncmFwaHktc2Fucyxcblx0XHQkc2NhbGUsXG5cdFx0JGxpbmUtaGVpZ2h0LFxuXHRcdCR3ZWlnaHQsXG5cdFx0JHN0eWxlLFxuXHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5LFxuXHRcdCRpbmNsdWRlLXByb2dyZXNzaXZlXG5cdCk7XG59XG5cbi8vLyBTZXQgYSBjdXN0b20gZm9udC5cbi8vL1xuLy8vIEBleGFtcGxlIFRoaXMgZXhhbXBsZSBzaG93cyBzZXR0aW5nIGEgY3VzdG9tIGZvbnQgXCJNeVNhbnNGb250XCIgYXMgdGhlIFwic2Fuc1wiIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNldEZvbnQoJHR5cGU6ICdzYW5zJywgJGZhbWlseTogJ015U2Fuc0ZvbnQsIHNhbnMnKTtcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHlwZSAtIE9uZSBvZiAnc2FucycsICdzZXJpZicsIG9yICdkaXNwbGF5Jy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZhbWlseSAtIFRoZSBmb250IGZhbWlseSB0byBzZXQuXG5AbWl4aW4gb1R5cG9ncmFwaHlTZXRGb250KCR0eXBlLCAkZmFtaWx5KSB7XG5cdCRmb250OiBvRm9udHNHZXRGb250RmFtaWx5V2l0aG91dEZhbGxiYWNrcygkZmFtaWx5KTtcblx0QGlmIG5vdCBvRm9udHNWYXJpYW50RXhpc3RzKCRmb250LCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwpIHtcblx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBzZXQgdGhlIGZvbnQgZmFtaWx5IFwiI3skZmFtaWx5fVwiIGFzIFwiI3skZm9udH1cIiBkb2VzIG5vdCBleGlzdCBpbiBcIm8tZm9udHNcIi4gSWYgeW91IGFyZSBzZXR0aW5nIGEgY3VzdG9tIGZvbnQsIGZpcnN0IHJlZ2lzdGVyIHlvdXIgY3VzdG9tIGZvbnQgd2l0aCBvLWZvbnRzIChodHRwczovL3JlZ2lzdHJ5Lm9yaWdhbWkuZnQuY29tL2NvbXBvbmVudHMvby1mb250cykuJztcblx0fVxuXHRAaWYgbm90IGluZGV4KCRfby10eXBvZ3JhcGh5LXR5cGVzLCAkdHlwZSkge1xuXHRcdEBlcnJvciAnQ291bGQgbm90IHNldCBmb250LWZhbWlseSBcIiN7JGZhbWlseX1cIiBmb3IgZmFtaWx5IHN0eWxlIFwiI3skdHlwZX1cIiwgZmFtaWx5IHN0eWxlIG11c3QgYmUgb25lIG9mIFwiI3skX28tdHlwb2dyYXBoeS10eXBlc31cIi4nO1xuXHR9XG5cdC8vIFNldCB0aGUgY3VzdG9tIGZvbnQuXG5cdEBpZiAkdHlwZSA9PSAnc2Fucycge1xuXHRcdCRfby10eXBvZ3JhcGh5LXNhbnM6ICRmYW1pbHkgIWdsb2JhbDtcblx0fVxuXHRAaWYgJHR5cGUgPT0gJ3NlcmlmJyB7XG5cdFx0JF9vLXR5cG9ncmFwaHktc2VyaWY6ICRmYW1pbHkgIWdsb2JhbDtcblx0fVxuXHRAaWYgJHR5cGUgPT0gJ2Rpc3BsYXknIHtcblx0XHQkX28tdHlwb2dyYXBoeS1kaXNwbGF5OiAkZmFtaWx5ICFnbG9iYWw7XG5cdH1cbn1cblxuLy8vIERlZmluZSB0aGUgdHlwb2dyYXBoaWMgc2NhbGUgZm9yIGEgZ2l2ZW4gZm9udC4gVGhlIGZvbnQgbWF5IGJlIGFuIGV4aXN0aW5nIG9yIGN1c3RvbSBmb250LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZmFtaWx5IC0gVGhlIGZvbnQgbmFtZSBvciBmYW1pbHkgdG8gYXBwbHkgYSBzY2FsZSB0by5cbi8vLyBAcGFyYW0ge01hcH0gJHNjYWxlIC0gQSBtYXAgb2Ygc2NhbGUgbnVtYmVycyBhcyBrZXlzICgtMiB0byAxMCksIHdpdGggbGlzdCB2YWx1ZXMgb2YgZm9udCBzaXplIGFuZCBsaW5lIGhlaWdodCBcIigtMjogKDEyLCAxNiksIC0xOiAoMTQsIDE2KSwgMDogKDE2LCAyMCkpXCIgZXRjLi4uXG4vLy8gQGV4YW1wbGUgVGhpcyBleGFtcGxlIHNob3dzIGRlZmluaW5nIGEgY3VzdG9tIGZvbnQgc2NhbGUgZm9yIGEgY3VzdG9tIGZvbnQgXCJNeVNhbnNGb250XCIuIEF0IHNjYWxlIFwiMFwiIHRoZSBmb250IHNpemUgd2lsbCBiZSAxNnB4LCBhbmQgdGhlIGxpbmUtaGVpZ2h0IDIwcHguXG4vLy9cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEZWZpbmVGb250U2NhbGUoJGZhbWlseTogJ015U2Fuc0ZvbnQsIHNhbnMnLCAoXG4vLy9cdFx0ICAgLTI6ICgxMiwgMTYpLFxuLy8vXHRcdCAgIC0xOiAoMTQsIDE4KSxcbi8vL1x0XHQgICAgMDogKDE2LCAyMCksXG4vLy9cdFx0ICAgIDE6ICgxOCwgMjQpLFxuLy8vXHRcdCAgICAyOiAoMjAsIDI2KSxcbi8vL1x0XHQgICAgMzogKDI0LCAzMiksXG4vLy9cdFx0ICAgIDQ6ICgyOCwgMzYpLFxuLy8vXHRcdCAgICA1OiAoMzIsIDQyKSxcbi8vL1x0XHQgICAgNjogKDQwLCA1MiksXG4vLy9cdFx0ICAgIDc6ICg0OCwgNjIpLFxuLy8vXHRcdCAgICA4OiAoNTYsIDcyKSxcbi8vL1x0XHQgICAgOTogKDcyLCA5NCksXG4vLy9cdFx0ICAgMTA6ICg4NCwgMTEwKVxuLy8vXHRcdCkpO1xuQG1peGluIG9UeXBvZ3JhcGh5RGVmaW5lRm9udFNjYWxlKCRmYW1pbHksICRzY2FsZSkge1xuXHRAaWYgdHlwZS1vZigkc2NhbGUpICE9ICdtYXAnIHtcblx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBzZXQgdGhlIHNjYWxlIGZvciBmb250IFwiI3skZmFtaWx5fVwiLCBleHBlY3RlZCB0aGUgc2NhbGUgdG8gYmUgYSBtYXAgYnV0IGZvdW5kIFwiI3skc2NhbGV9XCIsIG9mIHR5cGUgXCIje3R5cGUtb2YoJHNjYWxlKX1cIi4nO1xuXHR9XG5cdEBlYWNoICRzY2FsZS1udW1iZXIsICRzY2FsZS1pdGVtIGluICRzY2FsZSB7XG5cdFx0QGlmIHR5cGUtb2YoJHNjYWxlLWl0ZW0pICE9ICdsaXN0JyBvciBsZW5ndGgoJHNjYWxlLWl0ZW0pICE9IDIge1xuXHRcdFx0QGVycm9yICdFeHBlY3RlZCBlYWNoIGl0ZW0gaW4gdGhlIHNjYWxlIHRvIGJlIGEgbGlzdCB3aXRoIHR3byBpdGVtcywgdGhlIGZvbnQgc2l6ZSBmb2xsb3dlZCBieSB0aGUgbGluZSBoZWlnaHQuJztcblx0XHR9XG5cdH1cblx0QGlmIG1hcC1rZXlzKCRzY2FsZSkgIT0gKC0yLCAtMSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTApIHtcblx0XHRAZXJyb3IgJ0V4cGVjdGVkIHRoZSBzY2FsZSBmb3IgZm9udCBcIiN7JGZhbWlseX1cIiB0byBjb250YWluIHZhbHVlcyBmb3Igc2NhbGVzIC0yIHRvIDEwLCBidXQgZm91bmQgc2NhbGVzIFwiI3ttYXAta2V5cygkc2NhbGUpfVwiLic7XG5cdH1cblx0JGZhbWlseTogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZhbWlseSk7XG5cdCRfby10eXBvZ3JhcGh5LWZvbnQtc2NhbGUtYnktZm9udDogbWFwLW1lcmdlKCgkZmFtaWx5OiAkc2NhbGUpLCAkX28tdHlwb2dyYXBoeS1mb250LXNjYWxlLWJ5LWZvbnQpICFnbG9iYWw7XG59XG5cbi8vLyBPdXRwdXQgYSB0eXBvZ3JhcGh5IGZvciBmb250XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250IC0gVGhlIGZvbnQgdG8gb3V0cHV0IHR5cG9ncmFwaHkgZm9yLlxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJHNjYWxlIFtudWxsXSAtIGEgc2NhbGUgbnVtYmVyIHRvIG91dHB1dCBhIGZvbnQtc2l6ZSBhbmQgbGluZS1oZWlnaHQgcHJvcGVydHlcbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBbbnVsbF0gLSBjdXN0b20gbGluZS1oZWlnaHQgdmFsdWUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIHNjYWxlJ3MgZGVmYXVsdFxuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXdlaWdodCBwcm9wZXJ0eSwgZS5nLiAnYm9sZCcsICdzZW1pYm9sZCdcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXN0eWxlIHByb3BlcnR5LCBlLmcuICdpdGFsaWMnXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1mb250LWZhbWlseSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSB0aGUgZm9udC1mYW1pbHkgcHJvcGVydHkgZnJvbSB0aGUgb3V0cHV0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHJlc2l6aW5nIHR5cG9ncmFwaHksIHdoZXJlIHRoZSBnaXZlbiBmb250LWZhbWlseSBpcyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudCBlbGVtZW50LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtcHJvZ3Jlc3NpdmUgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgc3R5bGVzIHVzZWQgZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZyAoZm9udC1mYW1pbHkgYW5kIHNpemUgZmFsbGJhY2tzIGZvciBsb2FkaW5nIGZvbnRzKS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb1R5cG9ncmFwaHlGb3IoXG5cdCRmb250LFxuXHQkc2NhbGUsXG5cdCRsaW5lLWhlaWdodCxcblx0JHdlaWdodCxcblx0JHN0eWxlLFxuXHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmVcbikge1xuXHQvLyBDaGVjayBmb250IHZhcmlhbnQgaXMgc3VwcG9ydGVkLlxuXHQkZm9udC13aXRob3V0LWZhbGxiYWNrczogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZvbnQpO1xuXHQkdmFyaWFudC1leGlzdHM6IG9Gb250c1ZhcmlhbnRFeGlzdHMoJGZvbnQtd2l0aG91dC1mYWxsYmFja3MsICR3ZWlnaHQsICRzdHlsZSk7XG5cdEBpZiBub3QgJHZhcmlhbnQtZXhpc3RzIHtcblx0XHRAZXJyb3IgJ0ZvbnQgZmFtaWx5IFwiI3skZm9udC13aXRob3V0LWZhbGxiYWNrc31cIiBvZiB3ZWlnaHQgJyArXG5cdFx0XHQnXCIje2lmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyl9XCIgYW5kIHN0eWxlICcgK1xuXHRcdFx0J1wiI3tpZigkc3R5bGUsICRzdHlsZSwgJ25vcm1hbCcpfVwiIGlzIG5vdCBzdXBwb3J0ZWQuJztcblx0fVxuXG5cdC8vIENoZWNrIGZvbnQgdmFyaWFudCBoYXMgYmVlbiBpbmNsdWRlZCwgYW5kIGVycm9yIGlmIGFuIGVycm9yIG1lc3NhZ2Vcblx0Ly8gaGFzIGJlZW4gc2V0IGJ5IHRoZSB1c2VyLlxuXHQkdmFyaWFudC1pbmNsdWRlZDogb0ZvbnRzVmFyaWFudEluY2x1ZGVkKCRmb250LXdpdGhvdXQtZmFsbGJhY2tzLCAkd2VpZ2h0LCAkc3R5bGUpO1xuXHRAaWYgbm90ICR2YXJpYW50LWluY2x1ZGVkIGFuZCB0eXBlLW9mKCRvLXR5cG9ncmFwaHktZXJyb3ItZm9yLW1pc3NpbmctZm9udHMpID09ICdzdHJpbmcnIHtcblx0XHRAZXJyb3IgJ1RoZSBmb250IGZhY2UgZm9yIGZvbnQgZmFtaWx5IFwiI3skZm9udC13aXRob3V0LWZhbGxiYWNrc31cIiBvZiAnICtcblx0XHRcdCd3ZWlnaHQgXCIje2lmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyl9XCIgYW5kIHN0eWxlICcgK1xuXHRcdFx0J1wiI3tpZigkc3R5bGUsICRzdHlsZSwgJ25vcm1hbCcpfVwiIGhhcyBub3QgYmVlbiBpbmNsdWRlZCBpbiB5b3VyICcgK1xuXHRcdFx0J3Byb2plY3QuICN7aW5zcGVjdCgkby10eXBvZ3JhcGh5LWVycm9yLWZvci1taXNzaW5nLWZvbnRzKX0nO1xuXHR9XG5cblx0QGlmICRpbmNsdWRlLWZvbnQtZmFtaWx5IHtcblx0XHRmb250LWZhbWlseTogaWYodHlwZS1vZigkZm9udCkgPT0gJ3N0cmluZycsIHVucXVvdGUoJGZvbnQpLCAkZm9udCk7XG5cdH1cblxuXHRAaWYgJHNjYWxlIHtcblx0XHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlTaXplKCRzY2FsZTogJHNjYWxlLCAkbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodCwgJGZvbnQ6ICRmb250KTtcblx0fSBAZWxzZSBpZiAkbGluZS1oZWlnaHQge1xuXHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlBZGp1c3RVbml0KCRsaW5lLWhlaWdodCk7XG5cdH1cblxuXHRAaWYgJHdlaWdodCB7XG5cdFx0Zm9udC13ZWlnaHQ6IG9Gb250c1dlaWdodCgkd2VpZ2h0KTtcblx0fVxuXG5cdEBpZiAkc3R5bGUge1xuXHRcdGZvbnQtc3R5bGU6IHVucXVvdGUoJHN0eWxlKTtcblx0fVxuXG5cdEBpZiAkaW5jbHVkZS1wcm9ncmVzc2l2ZSB7XG5cdFx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5UHJvZ3Jlc3NpdmVGb250RmFsbGJhY2soJGZvbnQsICRzY2FsZSwgJHdlaWdodCwgJHN0eWxlLCAkaW5jbHVkZS1mb250LWZhbWlseSk7XG5cdH1cbn1cblxuLy8vIE91dHB1dHMgdGhlIGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgYmFzZWQgb24gdGhlIHNjYWxlLCBhbHNvXG4vLy8gYWNjZXB0cyBhbiBvdmVycmlkZSBsaW5lLWhlaWdodCB0byBvdXRwdXQgYW5kIGEgZm9udCBhZGp1c3RtZW50XG4vLy8gcGFyYW1ldGVyIGZvciB3aGVuIG91dHB1dHRpbmcgc3R5bGVzIGZvciBwcm9ncmVzc2l2ZWx5IGxvYWRlZCBmb250c1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSBudW1iZXIgb24gc2NhbGUgdGhlIHNpemVzIGFyZSBiYXNlZCBvblxuLy8vIEBwYXJhbSB7Qm9vbGVhbiB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IHNpemUgdG8gb3ZlcnJpZGUgdGhlIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250IFsnJ10gLSBUaGUgZm9udCB0byBnZXQgdGhlIGZvbnQgc2l6ZSBmb3IsIGFzIGZvbnRzIG1heSBoYXZlIGRpZmZlcmVudCBzY2FsZXMuIFVzZXMgdGhlIGRlZmF1bHQgc2NhbGUgaWYgbm90IHNwZWNpZmllZC5cbkBtaXhpbiBfb1R5cG9ncmFwaHlTaXplKCRzY2FsZSwgJGxpbmUtaGVpZ2h0OiBmYWxzZSwgJGZvbnQ6ICcnKSB7XG5cdEBpZiB0eXBlLW9mKCRzY2FsZSkgPT0gbWFwIHtcblx0XHRAZWFjaCAkYnJlYWtwb2ludCwgJHNjYWxlIGluICRzY2FsZSB7XG5cdFx0XHQkY3VycmVudC1saW5lLWhlaWdodDogaWYobGVuZ3RoKCRzY2FsZSkgPT0gMiwgbnRoKCRzY2FsZSwgMiksICRsaW5lLWhlaWdodCk7XG5cdFx0XHQkY3VycmVudC1zY2FsZTogaWYodHlwZS1vZigkc2NhbGUpID09IGxpc3QgYW5kIGxlbmd0aCgkc2NhbGUpICE9IDAsIG50aCgkc2NhbGUsIDEpLCAkc2NhbGUpO1xuXG5cdFx0XHRAaWYgJGJyZWFrcG9pbnQgPT0gJ2RlZmF1bHQnIGFuZCAkY3VycmVudC1zY2FsZSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJGN1cnJlbnQtc2NhbGUsIDEsICRmb250KTtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IF9vVHlwb2dyYXBoeUxpbmVIZWlnaHRGcm9tU2NhbGUoJGN1cnJlbnQtc2NhbGUsICRjdXJyZW50LWxpbmUtaGVpZ2h0LCAkZm9udCk7XG5cdFx0XHR9XG5cblx0XHRcdEBpZiAkYnJlYWtwb2ludCAhPSAnZGVmYXVsdCcgYW5kICRjdXJyZW50LXNjYWxlIHtcblx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGJyZWFrcG9pbnQpIHtcblx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAxLCAkZm9udCk7XG5cdFx0XHRcdFx0bGluZS1oZWlnaHQ6IF9vVHlwb2dyYXBoeUxpbmVIZWlnaHRGcm9tU2NhbGUoJGN1cnJlbnQtc2NhbGUsICRjdXJyZW50LWxpbmUtaGVpZ2h0LCAkZm9udCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJHNjYWxlLCAxLCAkZm9udCk7XG5cdFx0bGluZS1oZWlnaHQ6IF9vVHlwb2dyYXBoeUxpbmVIZWlnaHRGcm9tU2NhbGUoJHNjYWxlLCAkbGluZS1oZWlnaHQsICRmb250KTtcblx0fVxufVxuXG4vLy8gT3V0cHV0cyB0aGUgcHJvZ3Jlc3NpdmUgZm9udCBmYWxsYmFjayBzdHlsZXMgYmFzZWQgb25cbi8vLyBmb250IGFuZCBzY2FsZSBpZiB0aGUgZm9udCBoYXMgZmFsbGJhY2sgc2V0dGluZ3Ncbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCAtIEZvbnQgdG8gb3V0cHV0IGZhbGxiYWNrIHN0eWxlcyBmb3IgKG9yIC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNjYWxlIC0gTnVtYmVyIG9uIHNjYWxlIHRoZSBzaXplIGlzIGJhc2VkIG9uLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIFRoZSB3ZWlnaHQgb2YgdGhlIGZvbnQgd2hpY2ggbmVlZHMgYSBmYWxsYmFjayBlLmcuICdib2xkJy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0eWxlIFtudWxsXSAtIFRoZSBzdHlsZSBvZiB0aGUgZm9udCB3aGljaCBuZWVkcyBhIGZhbGxiYWNrIGUuZy4gJ2l0YWxpYycuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1mb250LWZhbWlseSBbdHJ1ZV0gLSBXaGV0aGVyIHRvIG91dHB1dCB0aGUgZm9udCBmYW1pbHkgb2YgdGhlIGZhbGxiYWNrIGZvbnQgKHZzLiBqdXN0IHRoZSBzaXplKVxuQG1peGluIF9vVHlwb2dyYXBoeVByb2dyZXNzaXZlRm9udEZhbGxiYWNrKCRmb250LCAkc2NhbGUsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGluY2x1ZGUtZm9udC1mYW1pbHk6IHRydWUpIHtcblx0QGlmIG5vdCAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZyB7XG5cdFx0QGVycm9yICdQcm9ncmVzc2l2ZSBmb250IGZhbGxiYWNrcyBhcmUgZGlzYWJsZWQuJyArXG5cdFx0XHQnSWYgeW91IGFyZSBzdXJlIHlvdSB3YW50IHRvIG91dHB1dCBwcm9ncmVzc2l2ZSBmb250IGZhbGxiYWNrcyBpbiAnICtcblx0XHRcdCd5b3VyIHByb2plY3Qgc2V0IGAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZzogdHJ1ZTtgICcgK1xuXHRcdFx0J2F0IHRoZSB0b3Agb2YgeW91ciBwcm9qZWN0LCBiZWZvcmUgaW1wb3J0aW5nIFNhc3MgZmlsZXMuICcgK1xuXHRcdFx0J1NlZSB0aGUgUkVBRE1FIGZvciBkZXRhaWxzIGFuZCBtb3JlIG9wdGlvbnMgb3IgY29udGFjdCB0aGUgT3JpZ2FtaSB0ZWFtLic7XG5cdH1cblx0QGlmICRzY2FsZSB7XG5cdFx0Ly8gSWYgZmFsc3kgd2VpZ2h0L3N0eWxlIGRlZmF1bHQgdG8gcmVndWxhci9ub3JtYWwuXG5cdFx0JHdlaWdodDogaWYoJHdlaWdodCwgJHdlaWdodCwgJ3JlZ3VsYXInKTtcblx0XHQkc3R5bGU6IGlmKCRzdHlsZSwgJHN0eWxlLCAnbm9ybWFsJyk7XG5cdFx0Ly8gRmluZCBmYWxsYmFjayBjb25maWcgZm9yIGZvbnQsIHdlaWdodCwgYW5kIHN0eWxlLlxuXHRcdEBlYWNoICRmYWxsYmFjayBpbiAkX28tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWZhbGxiYWNrcyB7XG5cdFx0XHQvLyBHZXQgZmFsbGJhY2sgcHJvcGVydGllcy5cblx0XHRcdCRmYWxsYmFjay1mYW1pbHk6IG1hcC1nZXQoJGZhbGxiYWNrLCAnZmFtaWx5Jyk7XG5cdFx0XHQkZmFsbGJhY2stbGFiZWw6IG1hcC1nZXQoJGZhbGxiYWNrLCAnbGFiZWwnKTtcblx0XHRcdC8vIE1hdGNoIHJlZ3VsYXIgYnkgZGVmYXVsdC5cblx0XHRcdCRmYWxsYmFjay13ZWlnaHQ6IG1hcC1nZXQoJGZhbGxiYWNrLCAnd2VpZ2h0Jyk7XG5cdFx0XHQkZmFsbGJhY2std2VpZ2h0OiBpZigkZmFsbGJhY2std2VpZ2h0LCAkZmFsbGJhY2std2VpZ2h0LCAoJ3JlZ3VsYXInKSk7XG5cdFx0XHQvLyBNYXRjaCBub3JtYWwgYnkgZGVmYXVsdC5cblx0XHRcdCRmYWxsYmFjay1zdHlsZTogbWFwLWdldCgkZmFsbGJhY2ssICdzdHlsZScpO1xuXHRcdFx0JGZhbGxiYWNrLXN0eWxlOiBpZigkZmFsbGJhY2stc3R5bGUsICRmYWxsYmFjay1zdHlsZSwgKCdub3JtYWwnKSk7XG5cdFx0XHQkZmFsbGJhY2stc2NhbGU6IG1hcC1nZXQoJGZhbGxiYWNrLCAnZmFsbGJhY2stc2NhbGUnKTtcblx0XHRcdC8vIENoZWNrIGlmIGZhbGxiYWNrIGlzIGZvciB0aGUgZ2l2ZW4gZm9udCwgd2VpZ2h0LCBhbmQgc3R5bGUuO1xuXHRcdFx0JGxhYmVsLW1hdGNoOiAkZmFsbGJhY2stbGFiZWwgPT0gb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZvbnQpOyAvLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuXHRcdFx0JGZhbWlseS1tYXRjaDogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZhbGxiYWNrLWZhbWlseSkgPT0gb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZvbnQpO1xuXHRcdFx0JHdlaWdodC1tYXRjaDogaW5kZXgoJGZhbGxiYWNrLXdlaWdodCwgJHdlaWdodCk7XG5cdFx0XHQkc3R5bGUtbWF0Y2g6IGlmKCRmYWxsYmFjay1zdHlsZSwgaW5kZXgoJGZhbGxiYWNrLXN0eWxlLCAkc3R5bGUpLCB0cnVlKTtcblx0XHRcdC8vIE91dHB1dCB0aGUgZmFsbGJhY2sgaWYgaXQgbWF0Y2hlcy5cblx0XHRcdEBpZiAoJGxhYmVsLW1hdGNoIG9yICgkZmFtaWx5LW1hdGNoIGFuZCAkd2VpZ2h0LW1hdGNoIGFuZCAkc3R5bGUtbWF0Y2gpKSB7XG5cdFx0XHRcdC4jeyRfby10eXBvZ3JhcGh5LWxvYWRpbmctcHJlZml4fS0jeyRmYWxsYmFjay1sYWJlbH0gJiB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5Rm9udFNpemUoJHNjYWxlOiAkc2NhbGUsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdDogJGZhbGxiYWNrLXNjYWxlLCAkZm9udDogJGZhbGxiYWNrLWZhbWlseSk7XG5cdFx0XHRcdFx0QGlmICRpbmNsdWRlLWZvbnQtZmFtaWx5IHtcblx0XHRcdFx0XHRcdGZvbnQtZmFtaWx5OiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2ZhbGxiYWNrJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBPdXRwdXRzIHRoZSBmb250IHNpemUgYmFzZWQgb24gdGhlIHNjYWxlLCBhbHNvIGFjY2VwdHMgYSBmb250IGFkanVzdG1lbnRcbi8vLyBwYXJhbWV0ZXIgZm9yIHdoZW4gb3V0cHV0dGluZyBzdHlsZXMgZm9yIHByb2dyZXNzaXZlbHkgbG9hZGVkIGZvbnRzXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNjYWxlIC0gTnVtYmVyIG9uIHNjYWxlIHRoZSBzaXplcyBhcmUgYmFzZWQgb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCAtIE11bHRpcGxpZXIgZm9yIGZvbnQtc2l6ZSBhZGp1c3RtZW50cywgd2hlbiBhZGRpbmcgc3R5bGVzIGZvciBwcm9ncmVzc2l2ZWx5IGxvYWRlZCBmb250LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCBbJyddIC0gVGhlIGZvbnQgdG8gZ2V0IHRoZSBmb250IHNpemUgZm9yLCBhcyBmb250cyBtYXkgaGF2ZSBkaWZmZXJlbnQgc2NhbGVzLiBVc2VzIHRoZSBkZWZhdWx0IHNjYWxlIGlmIG5vdCBzcGVjaWZpZWQuXG5AbWl4aW4gX29UeXBvZ3JhcGh5Rm9udFNpemUoJHNjYWxlLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3Q6IDEsICRmb250OiAnJykge1xuXHRAaWYgdHlwZS1vZigkc2NhbGUpID09IG1hcCB7XG5cdFx0QGVhY2ggJGJyZWFrcG9pbnQsICRudW1iZXIgaW4gJHNjYWxlIHtcblx0XHRcdEBpZiAkYnJlYWtwb2ludCA9PSAnZGVmYXVsdCcge1xuXHRcdFx0XHRAaWYgdHlwZS1vZigkbnVtYmVyKSA9PSBsaXN0IHtcblx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKG50aCgkbnVtYmVyLCAxKSwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJG51bWJlciwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gQGVsc2UgaWYoJG51bWJlcikge1xuXHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkYnJlYWtwb2ludCkge1xuXHRcdFx0XHRcdEBpZiB0eXBlLW9mKCRudW1iZXIpID09IGxpc3Qge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZShudGgoJG51bWJlciwgMSksICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkbnVtYmVyLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkc2NhbGUsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHR9XG59XG4iLCIvLy8gT3V0cHV0IHN0eWxlcyBmb3IgcGFnZSBoZWFkaW5ncy5cbi8vLyBAZXhhbXBsZSBPdXRwdXQgaGVhZGluZyBsZXZlbCAxIHN0eWxlcy5cbi8vLyAgICAgaDEge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5SGVhZGluZygkbGV2ZWw6IDEpO1xuLy8vICAgICB9XG4vLy8gQGV4YW1wbGUgT3V0cHV0IGhlYWRpbmcgbGV2ZWwgNSBzdHlsZXMuXG4vLy8gICAgIGg1IHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUhlYWRpbmcoJGxldmVsOiA1KTtcbi8vLyAgICAgfVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGV2ZWwgLSBUaGUgaGVhZGluZyBsZXZlbCAxLTUuXG5AbWl4aW4gb1R5cG9ncmFwaHlIZWFkaW5nKCRsZXZlbCkge1xuXHQkaGVhZGluZ3M6IChcblx0XHQnaGVhZGluZy1sZXZlbC1vbmUnLFxuXHRcdCdoZWFkaW5nLWxldmVsLXR3bycsXG5cdFx0J2hlYWRpbmctbGV2ZWwtdGhyZWUnLFxuXHRcdCdoZWFkaW5nLWxldmVsLWZvdXInLFxuXHRcdCdoZWFkaW5nLWxldmVsLWZpdmUnLFxuXHRcdCdoZWFkaW5nLWxldmVsLXNpeCcsXG5cdCk7XG5cblx0QGlmKHR5cGUtb2YoJGxldmVsKSAhPSAnbnVtYmVyJyBvciAkbGV2ZWwgPCAxIG9yICRsZXZlbCA+IDYpIHtcblx0XHRAZXJyb3IgJ0hlYWRpbmcgbGV2ZWwgbXVzdCBiZSBhIE51bWJlciAxLTYuIEZvdW5kICN7aW5zcGVjdCgkbGV2ZWwpfS4nO1xuXHR9XG5cblx0JGZyb206IG50aCgkaGVhZGluZ3MsICRsZXZlbCk7XG5cblx0Ly8gR2V0IGhlYWRpbmcgc3R5bGVzIGZyb20gYnJhbmQgY29uZmlnIChzZWUgX2JyYW5kLnNjc3MpXG5cdC8vIElmIHdlaWdodCBpcyBub3QgZ2l2ZW4gZGVmYXVsdCB0byByZWd1bGFyLCB0byBvdmVycmlkZSBicm93c2VyIGRlZmF1bHRzLlxuXHQkd2VpZ2h0OiBfb1R5cG9ncmFwaHlHZXQoJ3dlaWdodCcsICRmcm9tKTtcblx0JHdlaWdodDogaWYoJHdlaWdodCwgJHdlaWdodCwgJ3JlZ3VsYXInKTtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKFxuXHRcdCRzY2FsZTogKFxuXHRcdFx0ZGVmYXVsdDogX29UeXBvZ3JhcGh5R2V0KCdzY2FsZScsICRmcm9tKSxcblx0XHRcdFM6IF9vVHlwb2dyYXBoeUdldCgnc2NhbGUtcycsICRmcm9tKSxcblx0XHRcdE06IF9vVHlwb2dyYXBoeUdldCgnc2NhbGUtbScsICRmcm9tKSxcblx0XHRcdEw6IF9vVHlwb2dyYXBoeUdldCgnc2NhbGUtbCcsICRmcm9tKSxcblx0XHRcdFhMOiBfb1R5cG9ncmFwaHlHZXQoJ3NjYWxlLXhsJywgJGZyb20pXG5cdFx0KSxcblx0XHQkd2VpZ2h0OiAkd2VpZ2h0XG5cdCk7XG5cdGNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdib2R5JywgJ3RleHQnLCAkZmFsbGJhY2s6IG51bGwpO1xuXHRtYXJnaW46IDAgMCBvU3BhY2luZ0J5TmFtZSgnczQnKTtcbn1cblxuXG4vLy8gQm9keSB0ZXh0IHN0eWxlc1xuQG1peGluIG9UeXBvZ3JhcGh5Qm9keSB7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygxKTtcblx0bWFyZ2luOiAwIDAgb1NwYWNpbmdCeU5hbWUoJ3M2Jyk7XG5cdGNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdib2R5JywgJ3RleHQnLCAkZmFsbGJhY2s6IG51bGwpO1xufVxuXG4vLy8gU3Vic2NyaXB0IHRleHRcbkBtaXhpbiBvVHlwb2dyYXBoeVN1YiB7XG5cdC8vIG1ha2Ugc3Vic2NyaXB0IHNtYWxsZXIgYW5kIHNhbnMtc2VyaWZcblx0Ly8gMTJweCBnaXZlbiAxOHB4IGNvcHlcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCk7XG5cdGZvbnQtc2l6ZTogMC42NjZlbTtcblx0Ly8gb3ZlcnJpZGUgby1ub3JtYWxpc2UgZGVmYXVsdFxuXHRwb3NpdGlvbjogc3RhdGljO1xuXHR2ZXJ0aWNhbC1hbGlnbjogc3ViO1xuXHRsaW5lLWhlaWdodDogMDtcblx0Ly8gcHJldmVudCBzdWIgaW5jcmVhc2luZyBsaW5lLWhlaWdodFxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdG1hcmdpbi1ib3R0b206IC0xZW07XG59XG5cbi8vLyBTdXBlcnNjcmlwdCB0ZXh0XG5AbWl4aW4gb1R5cG9ncmFwaHlTdXBlciB7XG5cdC8vIG1ha2Ugc3VwZXJzY3JpcHQgc21hbGxlciBhbmQgc2Fucy1zZXJpZlxuXHQvLyAxMnB4IGdpdmVuIDE4cHggY29weVxuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoKTtcblx0Zm9udC1zaXplOiAwLjY2NmVtO1xuXHQvLyBvdmVycmlkZSBvLW5vcm1hbGlzZSBkZWZhdWx0XG5cdHBvc2l0aW9uOiBzdGF0aWM7XG5cdHZlcnRpY2FsLWFsaWduOiBzdXBlcjtcblx0bGluZS1oZWlnaHQ6IDA7XG5cdC8vIHByZXZlbnQgc3VwZXIgaW5jcmVhc2luZyBsaW5lLWhlaWdodFxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdG1hcmdpbi10b3A6IC0xZW07XG59XG5cbi8vLyBPdXRwdXQgbGluayBzdHlsZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgdGhlIHN0eWxlcyBmb3IgYSBzdGFuZGFyZCBsaW5rLlxuLy8vICAgICAubXktbGluayB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaW5rKCk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCB0aGUgc3R5bGVzIGZvciBhbiBleHRlcm5hbCBsaW5rLlxuLy8vICAgICAubXktZXh0ZXJuYWwtbGluayB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaW5rKCRleHRlcm5hbDogdHJ1ZSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCB0aGUgc3R5bGVzIGZvciBhbiBleHRlcm5hbCBsaW5rLCB3aXRob3V0IHJlcGVhdGluZyBzdHlsZXMgc2hhcmVkIGJ5IHN0YW5kYXJkIGxpbmtzLlxuLy8vICAgICAubXktbGluay0tZXh0ZXJuYWwge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaygkZXh0ZXJuYWw6IHRydWUsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGN1c3RvbSwgY2xhcmV0IGNvbG91cmVkIGxpbmsgdG8gZ28gb24gdGhlIGRlZmF1bHQgYmFja2dyb3VuZCBjb2xvdXIgKHBhcGVyIGZvciB0aGUgY29yZSBicmFuZCwgd2hpdGUgb3RoZXJ3aXNlKS5cbi8vLyAgICAgLm15LWNsYXJldC1saW5rIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpbmsoJHRoZW1lOiAoXG4vLy8gICAgIFx0XHQnYmFzZSc6ICdjbGFyZXQnLFxuLy8vICAgICBcdFx0J2hvdmVyJzogJ2NsYXJldC0zMCcsXG4vLy8gICAgIFx0KSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGN1c3RvbSwgbGVtb24gY29sb3VyZWQgbGluayB0byBnbyBvbiBhIHNsYXRlIGJhY2tncm91bmQuXG4vLy8gICAgIC5teS1pbnZlcnNlLWxpbmsge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaygkdGhlbWU6IChcbi8vLyAgICAgXHRcdCdiYXNlJzogJ2xlbW9uJyxcbi8vLyAgICAgXHRcdCdob3Zlcic6ICdsZW1vbi0zMCcsXG4vLy8gICAgIFx0XHQnY29udGV4dCc6ICdzbGF0ZScsXG4vLy8gICAgIFx0KSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGV4dGVybmFsIFtmYWxzZV0gLSBJZiB0aGUgc3R5bGUgaXMgZm9yIGV4dGVybmFsIGxpbmtzLCBzZXQgdG8gdHJ1ZSB0byBvdXRwdXQgYW4gZXh0ZXJuYWwgbGluayBpY29uLlxuLy8vIEBwYXJhbSB7TWFwfE51bGx9ICR0aGVtZSBbbnVsbF0gLSBBIGN1c3RvbSB0aGVtZSB0byBjaGFuZ2UgdGhlIGxvb2sgb2YgYSBsaW5rLCB3aXRoIGNvbG91cnMgZm9yIHByb3BlcnRpZXMgYGJhc2VgICh0aGUgbWFpbiBsaW5rIGNvbG91ciksIGBob3ZlcmAgKHRoZSBsaW5rcyBvdmVyIGNvbG91ciksIGFuZCBvcHRpb25hbCBgY29udGV4dGAga2V5LiBDb250ZXh0IGlzIHRoZSBjb2xvdXIgdGhlIGxpbmsgd2lsbCBiZSBwbGFjZWQgb24sIGl0IGRlZmF1bHRzIHRvIHRoZSBwYWdlIGJhY2tncm91bmQgKHBhcGVyIGZvciB0aGUgY29yZSBicmFuZCwgd2hpdGUgb3RoZXJ3aXNlKS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWJhc2Utc3R5bGVzIFt0cnVlXSAtIElmIHNldCB0byBmYWxzZSBzdGFuZGFyZCBsaW5rIHN0eWxlcyB3aWxsIG5vdCBiZSBvdXRwdXQsIG9ubHkgYWRkaXRpb25hbCBzdHlsZXMgcmVxdWlyZWQgYnkgYSBjdXN0b20gdGhlbWUgb3IgZXh0ZXJuYWwgbGluay5cbkBtaXhpbiBvVHlwb2dyYXBoeUxpbmsoJGV4dGVybmFsOiBmYWxzZSwgJHRoZW1lOiBudWxsLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogdHJ1ZSkge1xuXHQvLyBEZWZhdWx0IGxpbmsgY29sb3Vycy5cblx0Ly8gVGhlc2UgbWF5IGJlIGBudWxsYCBpZiB0aGUgdXNlY2FzZSBpcyBub3Qgc2V0LCBpLmUuIGZvciB0aGUgd2hpdGVsYWJlbCBicmFuZC5cblx0JGJhc2UtY29sb3I6IG9Db2xvcnNCeVVzZWNhc2UobGluaywgdGV4dCwgJGZhbGxiYWNrOiBudWxsKTtcblx0JGhvdmVyLWNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKGxpbmstaG92ZXIsIHRleHQsICRmYWxsYmFjazogbnVsbCk7XG5cdCRjb250ZXh0LWNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKHBhZ2UsIGJhY2tncm91bmQpO1xuXHQkdW5kZXJsaW5lLXNpemU6IDAuMjVleDsgLy8gMnB4IGZvciAxOHB4IE1ldHJpY1dlYlxuXG5cdC8vIElmIGEgY3VzdG9tIHRoZW1lIGlzIGdpdmVuIGNoZWNrIGl0IGlzIGEgbWFwIHdpdGggdGhlIHJlcXVpcmVkIGtleXMuXG5cdC8vIEFuZCB1cGRhdGUgdGhlIGxpbmsgY29sb3Vycy5cblx0JHJlcXVpcmVkLXRoZW1lLWtleXM6ICgnYmFzZScsICdob3ZlcicpO1xuXHRAaWYoJHRoZW1lIGFuZCB0eXBlLW9mKCR0aGVtZSkgIT0gJ21hcCcpIHtcblx0XHRAZXJyb3IgJ1RoZSBsaW5rICR0aGVtZSBhcmd1bWVudCBtdXN0IGBudWxsYCBvciBhIG1hcC4gJyArXG5cdFx0XHQnRm91bmQ6IFwiI3tpbnNwZWN0KCR0aGVtZSl9XCInO1xuXHR9XG5cdEBpZih0eXBlLW9mKCR0aGVtZSkgPT0gJ21hcCcpIHtcblx0XHQvLyBHZXQgY3VzdG9tIGJhc2UgY29sb3VyLlxuXHRcdCR0aGVtZS1iYXNlOiBtYXAtZ2V0KCR0aGVtZSwgJ2Jhc2UnKTtcblx0XHQkYmFzZS1jb2xvcjogaWYodHlwZS1vZigkdGhlbWUtYmFzZSkgPT0gJ3N0cmluZycsIG9Db2xvcnNCeU5hbWUoJHRoZW1lLWJhc2UpLCAkdGhlbWUtYmFzZSk7XG5cdFx0Ly8gR2V0IGN1c3RvbSBob3ZlciBjb2xvdXIuXG5cdFx0JHRoZW1lLWhvdmVyOiBtYXAtZ2V0KCR0aGVtZSwgJ2hvdmVyJyk7XG5cdFx0JGhvdmVyLWNvbG9yOiBpZih0eXBlLW9mKCR0aGVtZS1ob3ZlcikgPT0gJ3N0cmluZycsIG9Db2xvcnNCeU5hbWUoJHRoZW1lLWhvdmVyKSwgJHRoZW1lLWhvdmVyKTtcblx0XHQvLyBHZXQgb3B0aW9uYWwgY29udGV4dCBjb2xvdXIuXG5cdFx0JHRoZW1lLWNvbnRleHQ6IG1hcC1nZXQoJHRoZW1lLCAnY29udGV4dCcpO1xuXHRcdEBpZiAkdGhlbWUtY29udGV4dCB7XG5cdFx0XHQkY29udGV4dC1jb2xvcjogaWYodHlwZS1vZigkdGhlbWUtY29udGV4dCkgPT0gJ3N0cmluZycsIG9Db2xvcnNCeU5hbWUoJHRoZW1lLWNvbnRleHQpLCAkdGhlbWUtY29udGV4dCk7XG5cdFx0fVxuXHRcdC8vIFZhbGlkYXRlIGNvbG91cnMgZ2l2ZW4uXG5cdFx0QGlmKHR5cGUtb2YoJGJhc2UtY29sb3IpICE9ICdjb2xvcicpIHtcblx0XHRcdEBlcnJvciAnQSBjdXN0b20gbGluayB0aGVtZSBtdXN0IGhhdmUgYSBgYmFzZWAgcHJvcGVydHkgd2l0aCBhIGNvbG91ciBvciBwYWxldHRlIGNvbG91ciBuYW1lIGUuZy4gYGNsYXJldGAuIEJ1dCBmb3VuZCAjeyR0aGVtZS1iYXNlfS4nO1xuXHRcdH1cblx0XHRAaWYodHlwZS1vZigkaG92ZXItY29sb3IpICE9ICdjb2xvcicpIHtcblx0XHRcdEBlcnJvciAnQSBjdXN0b20gbGluayB0aGVtZSBtdXN0IGhhdmUgYSBgaG92ZXJgIHByb3BlcnR5IHdpdGggYSBjb2xvciBvciBwYWxldHRlIGNvbG91ciBuYW1lIGUuZy4gYGNsYXJldGAuIEJ1dCBmb3VuZCAjeyR0aGVtZS1ob3Zlcn0uJztcblx0XHR9XG5cdFx0QGlmKCR0aGVtZS1jb250ZXh0IGFuZCB0eXBlLW9mKCRjb250ZXh0LWNvbG9yKSAhPSAnY29sb3InKSB7XG5cdFx0XHRAZXJyb3IgJ0EgY3VzdG9tIGxpbmsgdGhlbWUgbWF5IG9wdGlvbmFsbHkgaGF2ZSBhIGBjb250ZXh0YCBwcm9wZXJ0eSB3aXRoIGEgY29sb3Igb3IgcGFsZXR0ZSBjb2xvdXIgbmFtZSwgdG8gaW5kaWNhdGUgdGhlIGNvbG91ciBvZiB0aGUgcGFnZSBiZWhpbmQgdGhlIGxpbmssIGUuZy4gYG51bGxgIG9yIGBwYXBlcmAuIEJ1dCBmb3VuZCAjeyR0aGVtZS1jb250ZXh0fS4nO1xuXHRcdH1cblx0fVxuXG5cdC8vIE91dHB1dCBleHRlcm5hbCBsaW5rIHN0eWxlcy5cblx0Ly8gRmFsbGJhY2sgdG8gYSBibGFjayBpY29uIGlmIG5vIGxpbmsgY29sb3VyIGlzIGdpdmVuLlxuXHRAaWYoJGV4dGVybmFsKSB7XG5cdFx0JGljb24tY29sb3I6IGlmKCRiYXNlLWNvbG9yLCAkYmFzZS1jb2xvciwgb0NvbG9yc0J5TmFtZSgnYmxhY2snKSk7XG5cdFx0JGljb24tc2l6ZTogMWVtO1xuXHRcdCRpY29uLWluYnVpbHQtcGFkZGluZy1zaXplOiAje2RpdigkaWNvbi1zaXplLCA0KX07XG5cdFx0JGljb24tcGFkZGluZy1jYWxjOiBcIiN7JGljb24tc2l6ZX0gKyAjezAuNWNofVwiO1xuXHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJ291dHNpZGUtcGFnZScsICRpY29uLWNvbG9yLCAkc2l6ZTogbnVsbCwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRcdC8vIEFkZCBwYWRkaW5nIGZvciBpY29uIGJhY2tncm91bmQuXG5cdFx0Ly8gVG8gcG9zaXRpb24gdGhlIGljb24gY2xvc2VyIHRvIHRoZSBjb3B5LCBtaW51cyB0aGUgcmlnaHQvbGVmdCBwYWRkaW5nXG5cdFx0Ly8gYnVpbHQgaW50byB0aGUgaWNvbiBzdmcgKDEwcHggZm9yIGEgNDBweCBpY29uKVxuXHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9GaW5hbmNpYWwtVGltZXMvZnRpY29ucy9ibG9iL3YxLjIwLjUvY29udHJpYnV0aW5nLm1kI2Rlc2lnblxuXHRcdHBhZGRpbmctcmlnaHQ6IGNhbGMoI3skaWNvbi1wYWRkaW5nLWNhbGN9IC0gI3skaWNvbi1pbmJ1aWx0LXBhZGRpbmctc2l6ZX0gLSAjeyRpY29uLWluYnVpbHQtcGFkZGluZy1zaXplfSk7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbi14OiBjYWxjKDEwMCUgKyAwLjVjaCk7XG5cdFx0Ly8gTWltaWMgYmFzZWxpbmUgYWxpZ25tZW50LlxuXHRcdEBzdXBwb3J0cyAoYmFja2dyb3VuZC1zaXplOiBjb250YWluKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNhbGMoMTAwJSArICN7JHVuZGVybGluZS1zaXplfSAtIDFweCk7XG5cdFx0fVxuXHRcdEBzdXBwb3J0cyAodGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogJHVuZGVybGluZS1zaXplKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNhbGMoMTAwJSArICN7JGljb24taW5idWlsdC1wYWRkaW5nLXNpemV9IC0gI3skdW5kZXJsaW5lLXNpemV9IC0gMXB4KTtcblx0XHR9XG5cdFx0YmFja2dyb3VuZC1vcmlnaW46IGJvcmRlci1ib3g7XG5cdFx0Ly8gSUUxMSBkb2VzIG5vdCBzaXplIGFuZCBwb3NpdGlvbiB0aGUgc3ZnIGljb24gYmFja2dyb3VuZCBjb3JyZWN0bHlcblx0XHQvLyB1c2luZyBgYmFja2dyb3VuZC1zaXplOiBjb250YWluYC4gVXNlIEBzdXBwb3J0cyB0byBleGNsdWRlIElFMTEsXG5cdFx0Ly8gYXMgSUUxMSBkb2VzIG5vdCBzdXBwb3J0IEBzdXBwb3J0c1xuXHRcdGJhY2tncm91bmQtc2l6ZTogY2FsYygjeyRpY29uLXBhZGRpbmctY2FsY30pIGNhbGMoI3skaWNvbi1wYWRkaW5nLWNhbGN9KTsgLy8gSUUxMSBmYWxsYmFja1xuXHRcdEBzdXBwb3J0cyAoYmFja2dyb3VuZC1zaXplOiBjb250YWluKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG5cdFx0fVxuXHRcdCZbdGFyZ2V0PVwiX2JsYW5rXCJdOmFmdGVyIHtcblx0XHRcdEBpbmNsdWRlIG9Ob3JtYWxpc2VWaXN1YWxseUhpZGRlbigpO1xuXHRcdFx0Y29udGVudDogJyhvcGVucyBhIG5ldyB3aW5kb3cpJztcblx0XHR9XG5cdH1cblxuXHQvLyBPdXRwdXQgYmFzZSBzdHlsZXMgc2hhcmVkIGJ5IGFsbCBsaW5rcy5cblx0QGlmKCRpbmNsdWRlLWJhc2Utc3R5bGVzKSB7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRib3JkZXItYm90dG9tOiAkdW5kZXJsaW5lLXNpemUgc29saWQ7XG5cblx0XHRAc3VwcG9ydHMgKHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6ICR1bmRlcmxpbmUtc2l6ZSkge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6ICR1bmRlcmxpbmUtc2l6ZTsgLy9zYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLW1pc3NwZWxsZWQtcHJvcGVydGllc1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uLWxpbmU6IHVuZGVybGluZTtcblx0XHR9XG5cdH1cblxuXHQvLyBPdXRwdXQgYmFzZSBzdHlsZXMgc2hhcmVkIGJ5IGFsbCBsaW5rcywgb3Jcblx0Ly8gcmVxdWlyZWQgZm9yIGEgY3VzdG9tIGxpbmsgdGhlbWUuXG5cdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcyBvciAkdGhlbWUpIHtcblx0XHRjb2xvcjogJGJhc2UtY29sb3I7XG5cdFx0JGRlY29yYXRpb24tY29sb3I6IGlmKCRiYXNlLWNvbG9yLCBvQ29sb3JzTWl4KCRiYXNlLWNvbG9yLCAkY29udGV4dC1jb2xvciwgJHBlcmNlbnRhZ2U6IDIwKSwgbnVsbCk7XG5cdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogJGRlY29yYXRpb24tY29sb3I7XG5cdFx0dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAkZGVjb3JhdGlvbi1jb2xvcjtcblx0fVxuXG5cdCY6aG92ZXIge1xuXHRcdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcyBvciAkdGhlbWUpIHtcblx0XHRcdGNvbG9yOiAkaG92ZXItY29sb3I7XG5cdFx0XHQkZGVjb3JhdGlvbi1jb2xvcjogaWYoJGJhc2UtY29sb3IsIG9Db2xvcnNNaXgoJGJhc2UtY29sb3IsICRjb250ZXh0LWNvbG9yLCAkcGVyY2VudGFnZTogNDApLCBudWxsKTtcblx0XHRcdGJvcmRlci1ib3R0b20tY29sb3I6ICRkZWNvcmF0aW9uLWNvbG9yO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAkZGVjb3JhdGlvbi1jb2xvcjtcblx0XHR9XG5cdH1cblxuXHQvLyBvLW5vcm1hbGlzZSBwcm92aWRlcyBleHRyYSBmb2N1cyBzdHlsZXMgZm9yIGxpbmtzXG5cdCY6Zm9jdXMge1xuXHRcdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcykge1xuXHRcdFx0JGRlY29yYXRpb24tY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogJGRlY29yYXRpb24tY29sb3I7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb24tY29sb3I6ICRkZWNvcmF0aW9uLWNvbG9yO1xuXHRcdH1cblx0XHRAaWYoJGluY2x1ZGUtYmFzZS1zdHlsZXMgb3IgJHRoZW1lKSB7XG5cdFx0XHRjb2xvcjogJGhvdmVyLWNvbG9yO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gT3V0cHV0IHN0eWxlcyBmb3IgbGlzdHMuXG4vLy8gU3R5bGVzIGNoaWxkIGBsaWAgZWxlbWVudHMuIEFwcGx5IHRvIGFcbi8vLyBjb250YWluaW5nIGxpc3QgZWxlbWVudCBzdWNoIGFzIGB1bGAgb3IgYG9sYC5cbi8vLyBEb2VzIG5vdCBvdXRwdXQgZm9udCBzdHlsZXMsIHRoZXNlIGFyZVxuLy8vIGluaGVyaXRlZCAoQHNlZSBvVHlwb2dyYXBoeUJvZHkpLlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHRoZSBzdHlsZXMgZm9yIGFuIHVub3JkZXJlZCBsaXN0LlxuLy8vICAgICAubXktdW5vcmRlcmVkLWxpc3Qge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGlzdCgndW5vcmRlcmVkJyk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCB0aGUgc3R5bGVzIGZvciBhbiBvcmRlcmVkIGFuZCB1bm9yZGVyZWQgbGlzdCwgc2hhcmluZyBiYXNlIGxpc3Qgc3R5bGVzLlxuLy8vICAgICAubXktbGlzdCB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaXN0KCk7XG4vLy8gICAgIH1cbi8vL1xuLy8vICAgICAubXktbGlzdC0tb3JkZXJlZCB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaXN0KCdvcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcbi8vLyAgICAgfVxuLy8vXG4vLy8gICAgIC5teS1saXN0LS11bm9yZGVyZWQge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGlzdCgndW5vcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcbi8vLyAgICAgfVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd8TnVsbH0gJHR5cGUgW251bGxdIC0gXCJvcmRlcmVkXCIsIFwidW5vcmRlcmVkXCIsIG9yIG51bGwgZm9yIGp1c3QgdGhlIGJhc2Ugc3R5bGVzIHNoYXJlZCBieSBhbGwgbGlzdHNcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWJhc2Utc3R5bGVzIFt0cnVlXSAtIHNldCB0byBmYWxzZSB0byBleGNsdWRlIGJhc2Ugc3R5bGVzIHdoaWNoIGFyZSBzaGFyZWQgYnkgYWxsIGxpc3QgdHlwZXNcbkBtaXhpbiBvVHlwb2dyYXBoeUxpc3QoJHR5cGU6IG51bGwsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiB0cnVlKSB7XG5cdC8vIFVuZG8gYnJvd3NlciBkZWZhdWx0cy5cblx0QGlmKCRpbmNsdWRlLWJhc2Utc3R5bGVzKSB7XG5cdFx0bWFyZ2luOiAwIDAgb1NwYWNpbmdCeU5hbWUoJ3M2Jyk7XG5cdFx0cGFkZGluZzogMDtcblx0XHRsaXN0LXN0eWxlOiBub25lO1xuXHR9XG5cdC8vIFJlc2V0IG51bWJlciBjb3VudGVyIGZvciBuZXcgb3JkZXJlZCBsaXN0LlxuXHRAaWYoJHR5cGUgPT0gJ29yZGVyZWQnKSB7XG5cdFx0Y291bnRlci1yZXNldDogaXRlbTtcblx0fVxuXHQ+IGxpIHtcblx0XHRAaWYoJGluY2x1ZGUtYmFzZS1zdHlsZXMpIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdC8vIFVuZG8gYnJvd3NlciBkZWZhdWx0LlxuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Ly8gQWxsb3cgc3BhY2UgZm9yIDItMyBudW1iZXJzIGZvciBib3RoIG9yZGVyZWQgYW5kIHVub3JkZXJlZCBsaXN0cyxcblx0XHRcdC8vIHNvIGNvbnRlbnQgYWxpZ25zIGJldHdlZW4gYm90aCBsaXN0IHR5cGVzLlxuXHRcdFx0cGFkZGluZy1sZWZ0OiBjYWxjKDJjaCArICN7b1NwYWNpbmdCeU5hbWUoJ3MxJyl9KTtcblx0XHR9XG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0QGlmKCRpbmNsdWRlLWJhc2Utc3R5bGVzKSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygpO1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0bGVmdDogMDtcblx0XHRcdFx0dHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGxlZnQ7XG5cdFx0XHR9XG5cblx0XHRcdEBpZigkdHlwZSA9PSAndW5vcmRlcmVkJykge1xuXHRcdFx0XHRjb250ZW50OiAnXFwyMDIyJzsgLy8gZG90IGNoYXJhY3RlclxuXHRcdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdFx0Ly8gMjhweCBtYXJrZXIgZ2l2ZW4gYSBwYXJlbnQgZm9udC1zaXplIG9mIDE4cHhcblx0XHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgje2RpdigyOCwgMTgpfSk7XG5cdFx0XHRcdC8vIG1hZ2ljIG51bWJlciB0byBjZW50ZXIgbWFya2VyXG5cdFx0XHRcdG1hcmdpbi10b3A6ICN7ZGl2KDI4LCAxOCkgKiAtMC4xNmNofTtcblx0XHRcdH1cblxuXHRcdFx0QGlmKCR0eXBlID09ICdvcmRlcmVkJykge1xuXHRcdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHdlaWdodDogJ3NlbWlib2xkJywgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcblx0XHRcdFx0Y29udGVudDogY291bnRlcihpdGVtKTtcblx0XHRcdFx0Y291bnRlci1pbmNyZW1lbnQ6IGl0ZW07XG5cdFx0XHRcdGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJ0bnVtXCI7XG5cdFx0XHRcdC8vIDE2cHggbWFya2VyIGdpdmVuIGEgcGFyZW50IGZvbnQtc2l6ZSBvZiAxOHB4XG5cdFx0XHRcdHRyYW5zZm9ybTogc2NhbGUoI3tkaXYoMTYsIDE4KX0pO1xuXHRcdFx0XHQvLyBtYWdpYyBudW1iZXIgdG8gbWFrZSBtYXJrZXIgZmx1c2ggdG8gdGhlIGxlZnRcblx0XHRcdFx0bWFyZ2luLWxlZnQ6ICN7ZGl2KDE2LCAxOCkgKiAtMC4xNmNofTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy8vIFN0eWxlIGZvciA8Zm9vdGVyPiB0YWdzXG5AbWl4aW4gb1R5cG9ncmFwaHlGb290ZXIge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkbGluZS1oZWlnaHQ6IDI0cHgpO1xuXHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnYm9keScsICd0ZXh0JywgJGZhbGxiYWNrOiBudWxsKTtcbn1cblxuLy8vIFN0eWxlcyBmb3IgcGhvdG8gb3IgdmlkZW8gY3JlZGl0L2NhcHRpb25cbkBtaXhpbiBvVHlwb2dyYXBoeUNhcHRpb24ge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAtMSk7XG5cdG1hcmdpbi10b3A6IG9TcGFjaW5nQnlOYW1lKCdzMicpO1xuXHRtYXJnaW4tYm90dG9tOiAwO1xuXHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnYm9keScsICd0ZXh0JywgJGZhbGxiYWNrOiBudWxsKTtcbn1cblxuIiwiLy8vIE91dHB1dCBzdHlsZXMgZm9yIGFuIFNWRyBpY29uLlxuLy8vIFN0eWxlcyB0aGUgaWNvbiBhcyBhIGJhY2tncm91bmQgaW1hZ2UsIHNldHRpbmcgYSB3aWR0aCBhbmQgaGVpZ2h0IG9uIHRoZSBlbGVtZW50IGFzIHJlcXVlc3RlZC5cbi8vLyBBIGZhbGxiYWNrIGJhY2tncm91bmQgZm9yIFdpbmRvd3MgSGlnaCBDb250cmFzdCBtb2RlIGlzIGFsc28gb3V0cHV0LlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGljb24tbmFtZSAtIFRoaXMgc2hvdWxkIGJlIGEgcmVmZXJlbmNlIHRvIGFuIGljb24gaW5jbHVkZWQgaW4gby1pY29ucyBlZyBhcnJvdy1kb3duXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRjb2xvciAtIFRoaXMgc2hvdWxkIGJlIGEgaGV4IGNvbG91ciB2YWx1ZS4gVXNlZCB0byBjb2xvciB0aGUgaWNvbi4gV2Ugc3VnZ2VzdCB1c2luZyBhbiBvLWNvbG9ycyBmdW5jdGlvbi5cbi8vLyBAcGFyYW0ge051bWJlcnxOdWxsfSAkc2l6ZSBbMTI4XSAtIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBpY29uICh1bml0cyBvcHRpb25hbCwgZGVmYXVsdHMgdG8gcHgpLiBTZXQgdG8gYG51bGxgIHRvIHNldCBubyB3aWR0aCBvciBoZWlnaHQuXG4vLy8gQHBhcmFtIHtCb29sfSAkaW5jbHVkZS1iYXNlLXN0eWxlcyBbdHJ1ZV0gLSBJZiB0cnVlLCB3aWxsIG91dHB1dCBzdHlsZSBydWxlcyBmb3IgdGhlIGNvbnRhaW5lci4gSWYgZmFsc2Ugd2lsbCBvbmx5IG91dHB1dCB0aGUgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7Qm9vbH0gJGhpZ2gtY29udHJhc3QtZmFsbGJhY2sgW3RydWVdIC0gVG8gb3V0cHV0IE1pY3Jvc29mdCBIaWdoIENvbnRyYXN0IGZhbGxiYWNrIGZvciBhY2Nlc3NpYmlsaXR5IHJlYXNvbnMgb3Igbm90LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaWNvbnNldC12ZXJzaW9uIFsxXSAtIEF0IHByZXNlbnQgb25seSAxIHZlcnNpb24gb2YgdGhlIGljb24gc2V0IGlzIGF2YWlsYWJsZS5cbkBtaXhpbiBvSWNvbnNDb250ZW50KCRpY29uLW5hbWUsICRjb2xvcjogbnVsbCwgJHNpemU6IDEyOCwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IHRydWUsICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrOiB0cnVlLCAkaWNvbnNldC12ZXJzaW9uOiAxKSB7XG5cdC8vIEVycm9yIGlmIHRoZSBnbG9iYWwgJHN5c3RlbS1jb2RlIHZhcmlhYmxlIGlzIG5vdCBzZXQuXG5cdC8vIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGltYWdlIHNlcnZpY2UgcmVxdWVzdHMuXG5cdEBpZihnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdzeXN0ZW0tY29kZScpID09IGZhbHNlIG9yIHR5cGUtb2YoJHN5c3RlbS1jb2RlKSAhPSAnc3RyaW5nJykge1xuXHRcdEBlcnJvciAnQSBnbG9iYWwgXCIkc3lzdGVtLWNvZGVcIiBTYXNzIHZhcmlhYmxlIG11c3QgYmUgc2V0IHRvIGEgdmFsaWQgQml6b3BzIHN5c3RlbSBjb2RlIChcXGVdODs7aHR0cHM6Ly9iaXotb3BzLmluLmZ0LmNvbS9saXN0L1N5c3RlbXNcXGVcXFxcaHR0cHM6Ly9iaXotb3BzLmluLmZ0LmNvbS9saXN0L1N5c3RlbXNcXGVdODs7XFxlXFxcXCkuJztcblx0fVxuXG5cdC8vIElmIHRoZSBzaXplIG9mIHRoZSBpY29ucyBoYXMgYmVlbiBnaXZlbiB3aXRob3V0IGEgdW5pdCwgZGVmYXVsdCB0byBweC5cblx0QGlmICh0eXBlLW9mKCRzaXplKSA9PSAnbnVtYmVyJyBhbmQgdW5pdGxlc3MoJHNpemUpKSB7XG5cdFx0JHNpemU6ICRzaXplICsgMHB4O1xuXHR9XG5cblx0Ly8gRGVmaW5lIGJhc2UgaW1hZ2Ugc2VydmljZSBwYXRoLlxuXHQkc2NoZW1lOiBcImZ0aWNvbi12I3skaWNvbnNldC12ZXJzaW9ufVwiO1xuXHQkc2VydmljZS11cmw6IFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2ltYWdlL3YyL2ltYWdlcy9yYXcvI3skc2NoZW1lfTojeyRpY29uLW5hbWV9XCI7XG5cblx0Ly8gSW5jbHVkZSBiYXNlIHN0eWxlcyBzaGFyZWQgYnkgYWxsIGljb25zLlxuXHRAaWYgKCRpbmNsdWRlLWJhc2Utc3R5bGVzID09IHRydWUpIHtcblx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50QmFzZVN0eWxlcztcblx0fVxuXG5cdC8vIFNldCB0aGUgaWNvbiBkaW1lbnRpb25zLlxuXHR3aWR0aDogJHNpemU7XG5cdGhlaWdodDogJHNpemU7XG5cblx0Ly8gSW5jbHVkZSB0aGUgaWNvbiB2aWEgdGhlIGltYWdlIHNlcnZpY2UuXG5cdC8vIEJ1aWxkIGFuIGltYWdlIHNlcnZpY2UgdXJsIGZvciB0aGUgcmVxdWVzdGVkIGljb24uXG5cdCRxdWVyeTogXCI/c291cmNlPSN7JHN5c3RlbS1jb2RlfVwiO1xuXHRAaWYgJGNvbG9yICE9IG51bGwge1xuXHRcdCRjb2xvcjogc3RyLXNsaWNlKGllLWhleC1zdHIoJGNvbG9yKSwgNCk7XG5cdFx0JHF1ZXJ5OiAkcXVlcnkgKyBcIiZ0aW50PSUyMyN7JGNvbG9yfSwlMjMjeyRjb2xvcn1cIjtcblx0fVxuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHNlcnZpY2UtdXJsICsgJHF1ZXJ5ICsgXCImZm9ybWF0PXN2Z1wiKTtcblxuXHQvLyBJbmNsdWRlIGEgZmFsbGJhY2sgZm9yIFdpbmRvdydzIGhpZ2ggY29udHJhc3QgbW9kZS5cblx0Ly8gVGhpcyBtb2RlIHJlbW92ZXMgYmFja2dyb3VuZCBpbWFnZXMgdW5sZXNzIHNwZWNpZmNhbGx5IGluY2x1ZGVkXG5cdC8vIGZvciBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdC8vIHNhc3MtbGludDpkaXNhYmxlIG5vLXZlbmRvci1wcmVmaXhlc1xuXHRAaWYgJGhpZ2gtY29udHJhc3QtZmFsbGJhY2sge1xuXHRcdEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHNlcnZpY2UtdXJsICsgXCI/c291cmNlPSN7JHN5c3RlbS1jb2RlfSZ0aW50PSUyM2ZmZmZmZiwlMjNmZmZmZmYmZm9ybWF0PXN2Z1wiKTtcblx0XHR9XG5cblx0XHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGJsYWNrLW9uLXdoaXRlKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHNlcnZpY2UtdXJsICsgXCI/c291cmNlPSN7JHN5c3RlbS1jb2RlfSZ0aW50PSUyMzAwMDAwMCwlMjMwMDAwMDAmZm9ybWF0PXN2Z1wiKTtcblx0XHR9XG5cdH1cblx0Ly8gc2Fzcy1saW50OmVuYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcbn1cblxuLy8vIEJhc2Ugc3R5bGVzIGZvciBhbGwgaWNvbnNcbi8vLyBAYWNjZXNzIHB1YmxpY1xuQG1peGluIG9JY29uc0NvbnRlbnRCYXNlU3R5bGVzKCkge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNTAlO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0dmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuIiwiLy8vIFZpc3VhbGx5IGhpZGUgYW4gZWxlbWVudCB3aGlsZSBzdGlsbFxuLy8vIGFsbG93aW5nIGl0IHRvIGJlIHJlYWQgYnkgYSBzY3JlZW5yZWFkZXJcbkBtaXhpbiBvTm9ybWFsaXNlVmlzdWFsbHlIaWRkZW4ge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGNsaXA6IHJlY3QoMCAwIDAgMCk7XG5cdGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDAgMCk7XG5cdG1hcmdpbjogLTFweDtcblx0Ym9yZGVyOiAwO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRwYWRkaW5nOiAwO1xuXHR3aWR0aDogMnB4O1xuXHRoZWlnaHQ6IDJweDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLy8vIENsZWFyZml4IGhlbHBlciBzdHlsZXNcbi8vLyBPdXRwdXRzIGNsZWFyZml4IHN0eWxlcyBvbiB0aGUgY3VycmVudCBlbGVtZW50XG5AbWl4aW4gb05vcm1hbGlzZUNsZWFyZml4IHtcblx0em9vbTogMTtcblxuXHQmOmJlZm9yZSxcblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogJyc7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdFx0ZGlzcGxheTogZmxleDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1ibG9jay1uby1kdXBsaWNhdGUtcHJvcGVydGllc1xuXHR9XG5cdCY6YWZ0ZXIge1xuXHRcdGNsZWFyOiBib3RoO1xuXHR9XG59XG5cbi8vLyBBZGRzIGJveCBzaXppbmcgdG8gY3VycmVudCBhbmQgYWxsIGNoaWxkIGVsZW1lbnRzXG5AbWl4aW4gb05vcm1hbGlzZUJveFNpemluZyB7XG5cblx0LyphdXRvcHJlZml4ZXI6IG9mZiovXG5cdC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cblxuXHQmICosXG5cdCYgKjpiZWZvcmUsXG5cdCYgKjphZnRlciB7XG5cblx0XHQvKmF1dG9wcmVmaXhlcjogb2ZmKi9cblx0XHQtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRcdC1tb3otYm94LXNpemluZzogaW5oZXJpdDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdFx0Ym94LXNpemluZzogaW5oZXJpdDtcblxuXHR9XG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byBnZW5lcmFsIGh0bWwgZWxlbWVudHNcbi8vLyBlZmZlY3RzOiA8aHRtbD4sIDxib2R5PiwgPG1haW4+LCBhbmQgOmZvY3VzIHN0YXRlXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VCb2R5KCRmb250LXNtb290aGluZzogdHJ1ZSwgJGJveC1zaXppbmc6IHRydWUsICRmb2N1czogdHJ1ZSwgJHJlZHVjZS1tb3Rpb246IHRydWUpIHtcblx0aHRtbCxcblx0Ym9keSB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG5cblx0XHQtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdFx0LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblxuXG5cdFx0QGlmICRmb250LXNtb290aGluZyB7XG5cblx0XHRcdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRcdFx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblxuXHRcdH1cblxuXHRcdEBpZiAkYm94LXNpemluZyB7XG5cdFx0XHRAaW5jbHVkZSBvTm9ybWFsaXNlQm94U2l6aW5nO1xuXHRcdH1cblxuXHRcdEBpZiAkcmVkdWNlLW1vdGlvbiB7XG5cdFx0XHQvLyBJbW1lZGlhdGVseSBqdW1wIGFueSBhbmltYXRpb24gdG8gdGhlIGVuZCBwb2ludCBpZiB0aGUgdXNlciBoYXNcblx0XHRcdC8vIHNldCB0aGVpciBkZXZpY2UgdG8gXCJwcmVmZXJzIHJlZHVjZWQgbW90aW9uXCIuXG5cdFx0XHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemRldnMvY3NzcmVtZWR5L2lzc3Vlcy8xMVxuXHRcdFx0QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0XHRcdFx0Kixcblx0XHRcdFx0KjpiZWZvcmUsXG5cdFx0XHRcdCo6YWZ0ZXIge1xuXG5cdFx0XHRcdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiAwLjAwMXMgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblx0XHRcdFx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAwMXMgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblx0XHRcdFx0XHRhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIEdpdmUgPG1haW4+cyB0aGUgcHJvcGVyIGRpc3BsYXkgdmFsdWUgaW4gSUUuXG5cdG1haW4ge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0QGlmICRmb2N1cyB7XG5cdFx0QGluY2x1ZGUgX29Ob3JtYWxpc2VGb2N1cygpO1xuXHR9XG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyBmb3IgZm9jdXNlZCBlbGVtZW50cy5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUZvY3VzIHtcblx0Ly8gQXBwbHkgOmZvY3VzIHN0eWxlcyBhcyBhIGZhbGxiYWNrXG5cdC8vIFRoZXNlIHN0eWxlcyB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIGJyb3dzZXJzIHRoYXQgZG9uJ3QgdXNlIHRoZSBwb2x5ZmlsbCwgdGhpcyBpbmNsdWRlcyBicm93c2VycyB3aGljaCBzdXBwb3J0IHRoZSBmZWF0dXJlIG5hdGl2ZWx5LlxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSksXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB7XG5cdFx0Ly8gU3RhbmRhcmRpc2UgZm9jdXMgc3R5bGVzLlxuXHRcdDpmb2N1cyB7XG5cdFx0XHRvdXRsaW5lOiAycHggc29saWQgJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0XHR9XG5cblx0XHRpbnB1dDpmb2N1cyxcblx0XHR0ZXh0YXJlYTpmb2N1cyxcblx0XHRzZWxlY3Q6Zm9jdXMge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4ICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXHR9XG5cblx0Ly8gV2hlbiB0aGUgZm9jdXMtdmlzaWJsZSBwb2x5ZmlsbCBpcyBhcHBsaWVkIGAuanMtZm9jdXMtdmlzaWJsZWAgaXMgYWRkZWQgdG8gdGhlIGh0bWwgZG9tIG5vZGVcblx0Ly8gKHRoZSBib2R5IG5vZGUgaW4gdjQgb2YgdGhlIDNyZCBwYXJ0eSBwb2x5ZmlsbClcblxuXHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdGJvZHkuanMtZm9jdXMtdmlzaWJsZSwgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRodG1sLmpzLWZvY3VzLXZpc2libGUge1xuXHRcdC8vIFN0YW5kYXJkaXNlIGZvY3VzIHN0eWxlcy5cblx0XHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0LmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogMnB4IHNvbGlkICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRpbnB1dC5mb2N1cy12aXNpYmxlLCAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0dGV4dGFyZWEuZm9jdXMtdmlzaWJsZSxcblx0XHRzZWxlY3QuZm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0XHR9XG5cdFx0Ly8gRGlzYWJsZSBicm93c2VyIGRlZmF1bHQgZm9jdXMgc3R5bGUuXG5cdFx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdDpmb2N1czpub3QoLmZvY3VzLXZpc2libGUpIHtcblx0XHRcdG91dGxpbmU6IDA7XG5cdFx0fVxuXHR9XG5cblxuXHQvLyBUaGVzZSBzdHlsZXMgd2lsbCBiZSBpZ25vcmVkIGJ5IGJyb3dzZXJzIHdoaWNoIGRvIG5vdCByZWNvZ25pc2UgdGhlIDpmb2N1cy12aXNpYmxlIHNlbGVjdG9yIChhcyBwZXIgdGhlIHRoaXJkIGJ1bGxldCBwb2ludCBpbiBodHRwczovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLTMvI0NvbmZvcm1hbmNlKVxuXHQvLyBJZiBhIGJyb3dzZXIgc3VwcG9ydHMgOmZvY3VzLXZpc2libGUgd2UgdW5zZXQgdGhlIDpmb2N1cyBzdHlsZXMgdGhhdCB3ZXJlIGFwcGxpZWQgYWJvdmVcblx0Ly8gKHdpdGhpbiB0aGUgaHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIGJsb2NrKS5cblx0OmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMge1xuXHRcdG91dGxpbmU6IHVuc2V0O1xuXHR9XG5cblx0OmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cyxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIGlucHV0OmZvY3VzLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cyxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cyxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cyB7XG5cdFx0Ym94LXNoYWRvdzogdW5zZXQ7XG5cdH1cblxuXHQvLyBTdHlsZXMgZ2l2ZW4gOmZvY3VzLXZpc2libGUgc3VwcG9ydC4gRXh0cmEgc2VsZWN0b3JzIG5lZWRlZCB0byBtYXRjaFxuXHQvLyBwcmV2aW91cyBgOmZvY3VzYCBzZWxlY3RvciBzcGVjaWZpY2l0eS5cblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIDpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzLXZpc2libGUsXG5cdDpmb2N1cy12aXNpYmxlIHtcblx0XHRvdXRsaW5lOiAycHggc29saWQgJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0fVxuXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMtdmlzaWJsZSxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHRleHRhcmVhOmZvY3VzLXZpc2libGUsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cy12aXNpYmxlLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgc2VsZWN0OmZvY3VzLXZpc2libGUsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMtdmlzaWJsZSxcblx0aW5wdXQ6Zm9jdXMtdmlzaWJsZSxcblx0dGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSxcblx0c2VsZWN0OmZvY3VzLXZpc2libGUge1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHR9XG5cblx0Ly8gUHJldmVudCBJRSBmcm9tIHB1dHRpbmcgZm9jdXMgc3R5bGVzIG9uIHRoZSBib2R5IG9yIGh0bWwuIFRoZXNlIHNlbGVjdG9yc1xuXHQvLyBzZXJ2ZSBhcyBhIGJsYWNrbGlzdCBmb3IgXCJ0aGluZ3Mgd2UndmUgZm91bmQgY2FuIGhhdmUgZm9jdXMgYnV0IHdlIGRvbid0IHdhbnRcIlxuXHRodG1sOmZvY3VzLFxuXHRib2R5OmZvY3VzLFxuXHRbcmVhZG9ubHldOmZvY3VzIHtcblx0XHRvdXRsaW5lOiBub25lO1xuXHR9XG5cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIGxpbmsgZWxlbWVudHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUxpbmtzIHtcblxuXHQvLyBSZW1vdmUgdGhlIGdyZXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG5cdGEge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBvdXRsaW5lIG9uIGZvY3VzZWQgbGlua3Mgd2hlbiB0aGV5IGFyZVxuXHQvLyBhbHNvIGFjdGl2ZSBvciBob3ZlcmVkIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuXHRhOmFjdGl2ZSxcblx0YTpob3ZlciB7XG5cdFx0b3V0bGluZS13aWR0aDogMDtcblx0fVxuXG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byB0ZXh0IHJlbGF0ZWQgZWxlbWVudHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZVRleHQge1xuXG5cdC8vIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBGaXJlZm94IDM5LS5cblx0Ly8gMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cblx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRhYmJyW3RpdGxlXSB7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMDsgLy8gWzFdXG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8vIFsyXVxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWNsYXJhdGlvbi1ibG9jay1uby1kdXBsaWNhdGUtcHJvcGVydGllc1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLy8gWzJdXG5cdH1cblxuXHQvLyBQcmV2ZW50IHRoZSBkdXBsaWNhdGUgYXBwbGljYXRpb24gb2YgYGJvbGRlcmAgYnkgdGhlIG5leHQgcnVsZSBpbiBTYWZhcmkgNi5cblx0Yixcblx0c3Ryb25nIHtcblx0XHRmb250LXdlaWdodDogaW5oZXJpdDtcblx0fVxuXG5cdC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG5cdGIsXG5cdHN0cm9uZyB7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGRlcjtcblx0fVxuXG5cdC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cblx0ZGZuIHtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdH1cblxuXHQvLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cblx0Ly8gYWxsIGJyb3dzZXJzLlxuXHRzdWIsXG5cdHN1cCB7XG5cdFx0Zm9udC1zaXplOiA3NSU7XG5cdFx0bGluZS1oZWlnaHQ6IDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcblx0fVxuXG5cdHN1YiB7XG5cdFx0Ym90dG9tOiAtMC4yNWVtO1xuXHR9XG5cblx0c3VwIHtcblx0XHR0b3A6IC0wLjVlbTtcblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gdGhlIGltYWdlIGVsZW1lbnRcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUltYWdlcyB7XG5cdC8vIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAtLlxuXHRpbWcge1xuXHRcdGJvcmRlci1zdHlsZTogbm9uZTtcblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gZm9ybSBlbGVtZW50c1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTm9ybWFsaXNlRm9ybXMge1xuXHQvLyBSZXN0b3JlIHRoZSBmb250IHdlaWdodCB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cblx0b3B0Z3JvdXAge1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHR9XG5cblx0Ly8gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG5cdC8vIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG5cdC8vIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cblx0YnV0dG9uLFxuXHRpbnB1dCwgICAvLyBbMV1cblx0c2VsZWN0IHsgLy8gWzJdXG5cdFx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIG1hcmdpbiBpbiBTYWZhcmkuXG5cdC8vIDEuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cblx0YnV0dG9uLFxuXHRpbnB1dCxcblx0c2VsZWN0LFxuXHR0ZXh0YXJlYSB7IC8vIFsxXVxuXHRcdG1hcmdpbjogMDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuXHQvLyAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG5cdGJ1dHRvbixcblx0c2VsZWN0IHsgLy8gWzFdXG5cdFx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdH1cblxuXHQvLyBDaGFuZ2UgdGhlIGN1cnNvciBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cblx0YnV0dG9uLFxuXHRbdHlwZT1cImJ1dHRvblwiXSxcblx0W3R5cGU9XCJyZXNldFwiXSxcblx0W3R5cGU9XCJzdWJtaXRcIl0ge1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxuXG5cdC8vIFJlc3RvcmUgdGhlIGRlZmF1bHQgY3Vyc29yIHRvIGRpc2FibGVkIGVsZW1lbnRzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuXHRbZGlzYWJsZWRdIHtcblx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuXHRidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5cdGlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcblx0XHRib3JkZXI6IDA7XG5cdFx0cGFkZGluZzogMDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUuXG5cdHRleHRhcmVhIHtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0fVxufVxuIiwiLy8vIFR5cG9ncmFwaHkgd3JhcHBlclxuQG1peGluIF9vVHlwb2dyYXBoeVdyYXBwZXIoKSB7XG5cblx0Ly8gTGlzdHMgaW5oZXJpdCBmb250IGZhbWlseSBhbmQgc2l6ZSBmcm9tIHRoZSB3cmFwcGVyLlxuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUJvZHkoKTtcblxuXHQ+IGgxIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUhlYWRpbmcoJGxldmVsOiAxKTtcblx0fVxuXG5cdD4gaDIge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5SGVhZGluZygkbGV2ZWw6IDIpO1xuXHR9XG5cblx0PiBoMyB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlIZWFkaW5nKCRsZXZlbDogMyk7XG5cdH1cblxuXHQ+IGg0IHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUhlYWRpbmcoJGxldmVsOiA0KTtcblx0fVxuXG5cdD4gaDUge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5SGVhZGluZygkbGV2ZWw6IDUpO1xuXHR9XG5cblx0PiBoNiB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlIZWFkaW5nKCRsZXZlbDogNik7XG5cdH1cblxuXHQ+IGEge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaygpO1xuXHR9XG5cblx0PiBwIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUJvZHkoKTtcblx0fVxuXG5cdD4gb2wsXG5cdD4gdWwge1xuXHRcdC8vIE91dHB1dCBiYXNlIHN0eWxlcyBzaGFyZWQgYnkgYWxsIGxpc3QgdHlwZXMuXG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaXN0KCk7XG5cdH1cblxuXHQ+IG9sIHtcblx0XHQvLyBPdXRwdXQgbGlzdCBzdHlsZXMgdW5pcXVlIHRvIGFuIG9yZGVyZWQgbGlzdC5cblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpc3QoJHR5cGU6ICdvcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0fVxuXG5cdD4gdWwge1xuXHRcdC8vIE91dHB1dCBsaXN0IHN0eWxlcyB1bmlxdWUgdG8gYW4gdW5vcmRlcmVkIGxpc3QuXG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaXN0KCR0eXBlOiAndW5vcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0fVxuXG5cdD4gZm9vdGVyIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUZvb3RlcigpO1xuXHR9XG5cblx0PiBzdHJvbmcge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucyhcblx0XHRcdCR3ZWlnaHQ6ICdzZW1pYm9sZCcsXG5cdFx0XHQkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2Vcblx0XHQpO1xuXHR9XG5cblx0PiBlbSB7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHR9XG5cblx0PiBzdXAge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U3VwZXIoKTtcblx0fVxuXG5cdD4gc3ViIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVN1YigpO1xuXHR9XG5cblx0PiBmaWdjYXB0aW9uIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUNhcHRpb24oKTtcblx0fVxufVxuIiwiLmctZXBpbG9ndWUtY29weXJpZ2h0IHtcbiAgbWFyZ2luLXRvcDogNDhweDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTZweDtcbn1cblxuLmctZXBpbG9ndWUtY29weXJpZ2h0IGEge1xuICBib3JkZXItYm90dG9tOiAuMjVleCBzb2xpZCAjY2ZkOGQxO1xuICBjb2xvcjogIzBkNzY4MDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LWRlY29yYXRpb24tY29sb3I6ICNjZmQ4ZDE7XG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAjY2ZkOGQxO1xufVxuIiwiQGltcG9ydCAnQGZpbmFuY2lhbC10aW1lcy9tYXRoJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1icmFuZC9tYWluJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1jb2xvcnMvbWFpbic7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28tZ3JpZC9tYWluJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1ub3JtYWxpc2UvbWFpbic7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28tc3BhY2luZy9tYWluJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby10eXBvZ3JhcGh5L21haW4nO1xuXG5AaW1wb3J0ICdzcmMvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnc3JjL3Njc3MvY29sb3ItdXNlLWNhc2VzJztcbkBpbXBvcnQgJ3NyYy9zY3NzL2JyYW5kJztcbkBpbXBvcnQgJ3NyYy9zY3NzL21peGlucyc7XG5cbi8vLyBPdXRwdXQgYWxsIG8tc2hhcmUgc3R5bGVzLlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge01hcH0gJG9wdHMgWygnaWNvbnMnOiAoJ3R3aXR0ZXInLCAnZmFjZWJvb2snLCAnbGlua2VkaW4nLCAnbGluaycsICdzaGFyZScsICdtYWlsJywgJ3BpbnRlcmVzdCcsICd3aGF0c2FwcCcsICdjb3Jwb3JhdGUnKSwgJ3NpemVzJzogKCdzbWFsbCcpLCAndmVydGljYWwnOiB0cnVlLCAnaW52ZXJzZSc6IHRydWUpXSBUaGUgby1zaGFyZSB2YXJpYW50cyB0byBpbmNsdWRlIHN0eWxlcyBmb3IgKHNlZSB0aGUgUkVBRE1FIGZvciBtb3JlIGRldGFpbHMpLlxuLy8vIEBleGFtcGxlIE91dHB1dCBhbGwgc3R5bGVzLlxuLy8vXHRcdEBpbmNsdWRlIG9TaGFyZSgpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHN0eWxlcyBmb3Igc2VsZWN0IHZhcmlhbnRzLlxuLy8vXHRcdEBpbmNsdWRlIG9TaGFyZSgkb3B0czogKFxuLy8vICAgICAgICdpY29ucyc6ICgndHdpdHRlcicsICdmYWNlYm9vaycsICdsaW5rZWRpbicsICdsaW5rJywgJ3NoYXJlJywgJ21haWwnLCAncGludGVyZXN0JywgJ3doYXRzYXBwJywgJ2NvcnBvcmF0ZScpLFxuLy8vICAgICAgICdzaXplcyc6ICgnc21hbGwnKSxcbi8vLyAgICAgICAndmVydGljYWwnOiB0cnVlLFxuLy8vICAgICAgICdpbnZlcnNlJzogdHJ1ZVxuLy8vICAgKSk7XG5AbWl4aW4gb1NoYXJlKCRvcHRzOiAoXG5cdCdpY29ucyc6ICRfby1zaGFyZS1pY29ucyxcblx0J3NpemVzJzogKCdzbWFsbCcpLFxuXHQndmVydGljYWwnOiB0cnVlLFxuXHQnaW52ZXJzZSc6IHRydWVcbikpIHtcblx0JHZlcnRpY2FsLWVuYWJsZWQ6IG1hcC1nZXQoJG9wdHMsICd2ZXJ0aWNhbCcpO1xuXHQkaW52ZXJzZS1lbmFibGVkOiBtYXAtZ2V0KCRvcHRzLCAnaW52ZXJzZScpO1xuXHQvLyBEZWZhdWx0IHRvIGFuIGVtcHR5IGxpc3QgaWYgbm8gaWNvbnMgYXJlIGdpdmVuLlxuXHQkaWNvbnM6IG1hcC1nZXQoJG9wdHMsICdpY29ucycpO1xuXHQkaWNvbnM6IGlmKCRpY29ucywgJGljb25zLCAoKSk7XG5cdC8vIERlZmF1bHQgdG8gYW4gZW1wdHkgbGlzdCBpZiBubyBzaXplcyBhcmUgZ2l2ZW4uXG5cdCRzaXplczogbWFwLWdldCgkb3B0cywgJ3NpemVzJyk7XG5cdCRzaXplczogaWYoJHNpemVzLCAkc2l6ZXMsICgpKTtcblxuXHQvLyBFcnJvciBpZiB0aGUgZ2xvYmFsICRzeXN0ZW0tY29kZSB2YXJpYWJsZSBpcyBub3Qgc2V0LlxuXHRAaWYgKGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ3N5c3RlbS1jb2RlJykgPT0gZmFsc2Ugb3IgdHlwZS1vZigkc3lzdGVtLWNvZGUpICE9ICdzdHJpbmcnKSB7XG5cdFx0QGVycm9yICdBIGdsb2JhbCBcIiRzeXN0ZW0tY29kZVwiIFNhc3MgdmFyaWFibGUgbXVzdCBiZSBzZXQgdG8gYSB2YWxpZCBCaXpvcHMgc3lzdGVtIGNvZGUgKFxcZV04OztodHRwczovL2Jpei1vcHMuaW4uZnQuY29tL2xpc3QvU3lzdGVtc1xcZVxcXFxodHRwczovL2Jpei1vcHMuaW4uZnQuY29tL2xpc3QvU3lzdGVtc1xcZV04OztcXGVcXFxcKS4nO1xuXHR9XG5cblx0Lm8tc2hhcmUge1xuXHRcdC8vIEluY2x1ZGUgc3R5bGVzIGZvciB0aGUgZGVmYXVsdCB0aGVtZS5cblx0XHRAaW5jbHVkZSBfb1NoYXJlVGhlbWUoJGljb25zOiAkaWNvbnMpO1xuXHRcdC8vIEluY2x1ZGUgc3R5bGVzIGZvciB0aGUgZGVmYXVsdCBzaXplLlxuXHRcdEBpbmNsdWRlIF9vU2hhcmVTaXplKCR2ZXJ0aWNhbDogJHZlcnRpY2FsLWVuYWJsZWQpO1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuXHRcdHVsIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0fVxuXHR9XG5cblx0Lm8tc2hhcmVfX2FjdGlvbiB7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRmbG9hdDogbGVmdDtcblx0XHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHR9XG5cblx0Lm8tc2hhcmVfX2ljb24ge1xuXHRcdGRpc3BsYXk6IGZsZXg7IC8vIGZsZXggaWdub3JlcyB3aGl0ZXNwYWNlXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRib3JkZXI6ICRvLXNoYXJlLWJvcmRlci1zaXplICRvLXNoYXJlLWJvcmRlci1zdHlsZSBvQ29sb3JzQnlVc2VjYXNlKCdvLXNoYXJlL2RlZmF1bHQtaWNvbicsICdib3JkZXInKTtcblx0XHQvLyB1bmRvIGJyb3dzZXIgZGVmYXVsdCBhbmNob3IgdGFnIHN0eWxlc1xuXHRcdGNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdvLXNoYXJlL2RlZmF1bHQtaWNvbicsICd0ZXh0Jyk7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdC8vIGFkZCB6LWluZGV4IG9uIGhvdmVyIG9yIGZvY3VzIHNvIHRoZSBib3JkZXIgb2YgdGhlIGljb24gaXNcblx0XHQvLyBhbHdheXMgZGlzcGxheWVkIG92ZXIgdGhlIGJvcmRlciBvZiB0aGUgbmV4dCBpY29uXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzIHtcblx0XHRcdHotaW5kZXg6IDE7XG5cdFx0fVxuXG5cdFx0Ly8gVXNlZCBmb3IgdGhlIGljb24gYmFja2dyb3VuZFxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRcdGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcblx0XHR9XG5cblx0XHQvLyBVc2VkIGFzIGFuIG92ZXJsYXkgdG8gaW5jcmVhc2UgdGhlIGhpdCB0YXJnZXQgZm9yIGFjY2Vzc2liaWxpdHlcblx0XHQmOmFmdGVyIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Y29udGVudDogJyc7XG5cdFx0fVxuXHR9XG5cblx0Lm8tc2hhcmVfX3RleHQge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IC0xKTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHQvLyBJY29uIHRleHQgaXMgdmlzdWFsbHkgaGlkZGVuIGJ5IGRlZmF1bHQgd2l0aG91dCB0aGUgY2xhc3Ncblx0Ly8gYC5vLXNoYXJlX19hY3Rpb24tLWxhYmVsbGVkYC5cblx0Lm8tc2hhcmVfX2FjdGlvbjpub3QoLm8tc2hhcmVfX2FjdGlvbi0tbGFiZWxsZWQpIC5vLXNoYXJlX190ZXh0IHtcblx0XHRAaW5jbHVkZSBvTm9ybWFsaXNlVmlzdWFsbHlIaWRkZW4oKTtcblx0fVxuXG5cblx0QGlmIGluZGV4KCRzaXplcywgJ3NtYWxsJykgIT0gbnVsbCB7XG5cdFx0Lm8tc2hhcmUtLXNtYWxsIHtcblx0XHRcdEBpbmNsdWRlIF9vU2hhcmVTaXplKCdzbWFsbCcsICR2ZXJ0aWNhbC1lbmFibGVkKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgJGludmVyc2UtZW5hYmxlZCB7XG5cdFx0Lm8tc2hhcmUtLWludmVyc2Uge1xuXHRcdFx0QGluY2x1ZGUgX29TaGFyZVRoZW1lKCdpbnZlcnNlJywgJGljb25zKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgJHZlcnRpY2FsLWVuYWJsZWQge1xuXHRcdC5vLXNoYXJlLS12ZXJ0aWNhbCB7XG5cdFx0XHQuby1zaGFyZV9fYWN0aW9uIHtcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdC5vLXNoYXJlX19pY29uIHtcblx0XHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdH1cblx0XHRcdC5vLXNoYXJlX190ZXh0IHtcblx0XHRcdFx0Ly8gSG9yaXpvbnRhbCBzcGFjZSBpcyB0aWdodCBmb3IgdmVydGljYWwgc2hhcmUgbGFiZWxzLlxuXHRcdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAtMiwgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcblx0XHRcdFx0d29yZC13cmFwOiBhbnl3aGVyZTtcblx0XHRcdFx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbkBpZiAobm90ICRvLXNoYXJlLWlzLXNpbGVudCkge1xuXHRAaW5jbHVkZSBvU2hhcmUoKTtcblx0Ly8gU2V0IHRvIHNpbGVudCBhZ2FpbiB0byBhdm9pZCBiZWluZyBvdXRwdXQgdHdpY2Vcblx0JG8tc2hhcmUtaXMtc2lsZW50OiB0cnVlICFnbG9iYWw7XG59XG4iLCIvLy8gT3V0cHV0IHN0eWxlcyBmb3IgYSB0aGVtZSBzdWNoIGFzIHRoZSBpbnZlcnNlIHZhcmlhbnRcbi8vLyBAcGFyYW0ge1N0cmluZ3xOdWxsfSAkbmFtZSAobnVsbCkgLSBUaGUgdGhlbWUgdG8gb3V0cHV0IHN0eWxlcyBmb3IuXG4vLy8gQHBhcmFtIHtMaXN0fSAkaWNvbnMgWygpXSAtIEEgbGlzdCBvZiBpY29ucyB0byBzdXBwb3J0LlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vU2hhcmVUaGVtZSgkbmFtZTogbnVsbCwgJGljb25zOiAoKSkge1xuXHQkYm9yZGVyLWNvbG9yOiBfb1NoYXJlR2V0KCdib3JkZXItY29sb3InLCAkbmFtZSk7XG5cdCRjb2xvcjogX29TaGFyZUdldCgnY29sb3InLCAkbmFtZSk7XG5cdCRjb2xvci1lbmNvZGVkOiBzdHItc2xpY2UoaWUtaGV4LXN0cigkY29sb3IpLCA0KTtcblxuXHQuby1zaGFyZV9faWNvbiB7XG5cdFx0Y29sb3I6ICRjb2xvcjtcblx0XHRib3JkZXItY29sb3I6ICRib3JkZXItY29sb3I7XG5cdH1cblxuXHQvLyBPdXRwdXQgdGhlbWVkIGljb25zLlxuXHRAZWFjaCAkaWNvbi1uYW1lIGluICRpY29ucyB7XG5cdFx0JGlzLWZ0LWljb246IGluZGV4KCRvLXNoYXJlLWZ0LWljb25zLW5hbWVzLCAkaWNvbi1uYW1lKTtcblx0XHQvLyBHZXQgdGhlIEltYWdlIFNlcnZpY2UgdXJsIGZvciB0aGUgaWNvbi5cblx0XHQvLyBUaGUgSW1hZ2UgU2VydmljZSB1cmwgc2NoZW1lIHZhcmllcyBkZXBlbmRpbmcgb24gd2hldGhlclxuXHRcdC8vIHRoZSBpY29uIGlzIGEgZnRzb2NpYWwgaW1hZ2Ugb3IgYW4gZnRpY29uIGltYWdlLlxuXHRcdCRzY2hlbWU6IGlmKCRpcy1mdC1pY29uLCBcImZ0aWNvbi12I3skby1zaGFyZS1mdC1pY29ucy12ZXJzaW9ufVwiLCBcImZ0c29jaWFsLXYjeyRvLXNoYXJlLXNvY2lhbC1pY29ucy12ZXJzaW9ufVwiKTtcblx0XHQkcXVlcnk6IFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX1cIjtcblx0XHQkc2VydmljZS11cmw6IFwiI3skby1zaGFyZS1pbWFnZS1zZXJ2aWNlLWJhc2UtdXJsfS8jeyRvLXNoYXJlLWltYWdlLXNlcnZpY2UtdmVyc2lvbn0vaW1hZ2VzL3Jhdy8jeyRzY2hlbWV9OiN7JGljb24tbmFtZX1cIjtcblxuXHRcdC5vLXNoYXJlX19pY29uLS0jeyRpY29uLW5hbWV9OmJlZm9yZSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHNlcnZpY2UtdXJsICsgJHF1ZXJ5ICsgXCImZm9ybWF0PXN2ZyZ0aW50PSN7JGNvbG9yLWVuY29kZWR9XCIpO1xuXHRcdH1cblxuXHRcdC5vLXNoYXJlX19pY29uLS0jeyRpY29uLW5hbWV9OmhvdmVyLFxuXHRcdC5vLXNoYXJlX19pY29uLS0jeyRpY29uLW5hbWV9OmZvY3VzIHtcblx0XHRcdC8vIFRoZSBib3JkZXIgYW5kIGJhY2tncm91bmQgY29sb3VyIG9mIGljb25zIHZhcmllcyBkZXBlbmRpbmcgb25cblx0XHRcdC8vIHdoZXRoZXIgdGhlIGljb24gaXMgYSBzb2NpYWwgaWNvbiB3aXRoIGJyYW5kIGNvbG91ciwgaS5lLlxuXHRcdFx0Ly8gVHdpdHRlciBibHVlLCBvciBhbiBmdGljb24uXG5cdFx0XHQkdXNlY2FzZTogaWYoJGlzLWZ0LWljb24sICdvLXNoYXJlL2Z0LWljb24nLCAnby1zaGFyZS8jeyRpY29uLW5hbWV9LWljb24nKTtcblx0XHRcdGJvcmRlci1jb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgkdXNlY2FzZSwgJ2JvcmRlcicpO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgkdXNlY2FzZSwgJ2JhY2tncm91bmQnKTtcblx0XHRcdGNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCR1c2VjYXNlLCAndGV4dCcpO1xuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHQkY29sb3ItdXNlY2FzZS1lbmNvZGVkOiBzdHItc2xpY2UoaWUtaGV4LXN0cihvQ29sb3JzQnlVc2VjYXNlKCR1c2VjYXNlLCAndGV4dCcpKSwgNCk7XG5cdFx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkc2VydmljZS11cmwgKyAkcXVlcnkgKyBcIiZmb3JtYXQ9c3ZnJnRpbnQ9I3skY29sb3ItdXNlY2FzZS1lbmNvZGVkfVwiKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBXaW5kb3dzIGhpZ2ggY29udHJhc3QgbW9kZSByZW1vdmVzIGJhY2tncm91bmQgaW1hZ2VzLFxuXHRcdC8vIHVubGVzcyB0aGV5IGFyZSBzcGVjaWZpY2FsbHkgYWRkZWQgZm9yIGhpZ2ggY29udHJhc3QgbW9kZS5cblx0XHQvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcblx0XHQuby1zaGFyZV9faWNvbi0tI3skaWNvbi1uYW1lfSB7XG5cdFx0XHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBvQ29sb3JzQnlOYW1lKCdibGFjaycpO1xuXHRcdFx0XHRjb2xvcjogb0NvbG9yc0J5TmFtZSgnd2hpdGUnKTtcblx0XHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkc2VydmljZS11cmwgKyAkcXVlcnkgKyBcIiZmb3JtYXQ9c3ZnJnRpbnQ9JTIzZmZmZmZmXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGJsYWNrLW9uLXdoaXRlKSB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IG9Db2xvcnNCeU5hbWUoJ3doaXRlJyk7XG5cdFx0XHRcdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCdibGFjaycpO1xuXHRcdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArICRxdWVyeSArIFwiJmZvcm1hdD1zdmcmdGludD0lMjMwMDAwMDBcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gc2Fzcy1saW50OmVuYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcblx0fVxufVxuXG4vLy8gT3V0cHV0IHN0eWxlcyB0byBzZXQgdGhlIHNpemUgYW5kIG1hcmdpbnMgb2Ygby1zaGFyZSBhY3Rpb25zLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2l6ZS1uYW1lIFtudWxsXSAtIE9uZSBvZiAnZGVmYXVsdCcgb3IgJ3NtYWxsJy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gV2hldGhlciB0byBvdXRwdXQgc3R5bGVzIHRvIHN1cHBvcnQgdGhlIHZlcnRpY2FsIHZhcmlhbnRcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb1NoYXJlU2l6ZSgkc2l6ZS1uYW1lOiBudWxsLCAkdmVydGljYWw6IGZhbHNlKSB7XG5cdC8vIGZvciB0aGUgY3VycmVudCB2YXJpYW50IGdldCB0aGUgd2lkdGggYW5kIG1hcmdpblxuXHQkc2l6ZTogX29TaGFyZUdldCgnc2l6ZScsICRmcm9tOiAkc2l6ZS1uYW1lKTtcblx0JG1hcmdpbjogX29TaGFyZUdldCgnbWFyZ2luJywgJGZyb206ICRzaXplLW5hbWUpO1xuXHQvLyBmdGljb25zIFNWRyBpY29ucyBhbGlnbiB0byBhIDQweDQwIHBpeGVsIGdyaWQsIHdpdGggMTBweCBwYWRkaW5nXG5cdC8vIGJ1aWx0IGluIG9uIGVhY2ggc2lkZS4gVXNlZCB0byBtYXRjaCB0aGUgaWNvbidzIGluaGVyZW50IG1hcmdpbiBvbiB0aGUgdGV4dC5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL0ZpbmFuY2lhbC1UaW1lcy9mdGljb25zL2Jsb2IvbWFzdGVyL2NvbnRyaWJ1dGluZy5tZCNkZXNpZ25cblx0JGRlZmF1bHQtaWNvbi13aGl0ZXNwYWNlOiBkaXYoMTAsIDQwKTtcblx0JGljb24td2hpdGVzcGFjZTogJGRlZmF1bHQtaWNvbi13aGl0ZXNwYWNlICogJHNpemU7XG5cblx0Lm8tc2hhcmVfX3RleHQge1xuXHRcdG1hcmdpbi1yaWdodDogJGljb24td2hpdGVzcGFjZTtcblx0fVxuXG5cdC5vLXNoYXJlX19pY29uOmJlZm9yZSB7XG5cdFx0d2lkdGg6ICRzaXplIC0gKCRvLXNoYXJlLWJvcmRlci1zaXplICogMik7XG5cdFx0aGVpZ2h0OiAkc2l6ZSAtICgkby1zaGFyZS1ib3JkZXItc2l6ZSAqIDIpO1xuXHRcdGJhY2tncm91bmQtc2l6ZTogJHNpemUgJHNpemU7XG5cdH1cblxuXHQvLyBJZiB0aGVyZSBpcyBub3QgYSBtYXJnaW4gdXNlIGEgbmVnYXRpdmUgbWFyZ2luXG5cdC8vIHRvIG1ha2UgaWNvbnMgYm9yZGVycyBvdmVybGFwLlxuXHRAaWYgbm90ICRtYXJnaW4ge1xuXHRcdC5vLXNoYXJlX19pY29uIHtcblx0XHRcdG1hcmdpbjogMCAjey0kby1zaGFyZS1ib3JkZXItc2l6ZX0gMCAwO1xuXHRcdH1cblxuXHRcdC5vLXNoYXJlX19hY3Rpb246bGFzdC1jaGlsZCAuby1zaGFyZV9faWNvbiB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cdC8vIElmIHRoZXJlIGEgbWFyZ2luIGZvciB0aGUgY3VycmVudCB2YXJpYW50IHNldCBhIG1hcmdpbiBvbiB0aGUgYWN0aW9uXG5cdC8vIGFuZCByZW1vdmUgYW5kIG5lZ2F0aXZlIG1hcmdpbiBmcm9tIHRoZSBpY29uIGljb24sIHdoaWNoIHdhcyBhZGRlZFxuXHQvLyBzbyBib3JkZXJzIG92ZXJsYXAuXG5cdEBpZiAkbWFyZ2luIHtcblx0XHQvLyBBZGQgbWFyZ2luIHRvIGFjdGlvbnMuXG5cdFx0Lm8tc2hhcmVfX2FjdGlvbiB7XG5cdFx0XHRtYXJnaW46IDAgI3skbWFyZ2lufSAwIDA7XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIG5lZ2F0aXZlIG1hcmdpbiB1c2VkIHNvIGJvcmRlcnMgb3ZlcmxhcC5cblx0XHQuby1zaGFyZV9faWNvbiB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0Ly8gSW5jcmVhc2UgY2xpY2sgYXJlYSBvZiBhY3Rpb25zLlxuXHRcdC5vLXNoYXJlX19pY29uOmFmdGVyIHtcblx0XHRcdHdpZHRoOiBjYWxjKDEwMCUgKyAjeyRtYXJnaW59KTtcblx0XHRcdGhlaWdodDogY2FsYygxMDAlICsgI3skbWFyZ2lufSk7XG5cdFx0XHR0b3A6IC0je2RpdigkbWFyZ2luLCAyKX07XG5cdFx0XHRsZWZ0OiAtI3tkaXYoJG1hcmdpbiwgMil9O1xuXHRcdH1cblx0fVxuXG5cdC8vIEZvciB2ZXJ0aWNhbCBzaGFyZSBpY29ucyBzd2l0Y2ggdGhlIG1hcmdpbnMgYXJvdW5kLlxuXHRAaWYgJHZlcnRpY2FsIHtcblx0XHQvLyBNYXJnaW4gYmV0d2VlbiBhY3Rpb25zIGdvZXMgYmVsb3cuXG5cdFx0QGlmICRtYXJnaW4ge1xuXHRcdFx0Ji5vLXNoYXJlLS12ZXJ0aWNhbCAuby1zaGFyZV9fYWN0aW9uIHtcblx0XHRcdFx0bWFyZ2luOiAwIDAgI3skbWFyZ2lufTtcblx0XHRcdH1cblx0XHR9XG5cdFx0QGlmIG5vdCAkbWFyZ2luIHtcblx0XHRcdC8vIE5lZ2F0aXZlIG1hcmdpbnMgdG8gbWFrZSBpY29uIGJvcmRlcnMgb3ZlcmxhcCBnb2VzIGJlbG93LlxuXHRcdFx0Ji5vLXNoYXJlLS12ZXJ0aWNhbCAuby1zaGFyZV9faWNvbiB7XG5cdFx0XHRcdG1hcmdpbjogMCAwIC0jeyRvLXNoYXJlLWJvcmRlci1zaXplfTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gTWFyZ2lucyBiZXR3ZWVuIHRoZSBpY29uIGFuZCB0aGUgdGV4dCBuZWVkIHNldHRpbmcuXG5cdFx0Ji5vLXNoYXJlLS12ZXJ0aWNhbCAuby1zaGFyZV9fYWN0aW9uLS1sYWJlbGxlZCAuby1zaGFyZV9fdGV4dCB7XG5cdFx0XHRtYXJnaW46IG9TcGFjaW5nQnlOYW1lKCdzMScpO1xuXHRcdFx0bWFyZ2luLXRvcDogY2FsYygtI3skaWNvbi13aGl0ZXNwYWNlfSArICN7b1NwYWNpbmdCeU5hbWUoJ3MxJyl9KTtcblx0XHR9XG5cdFx0Ly8gV2hlbiB2ZXJ0aWNhbCwgdGhlIHdpZHRoIG9mIHRoZSBhY3Rpb25zIG11c3Qgbm90IGluY3JlYXNlLlxuXHRcdCYuby1zaGFyZS0tdmVydGljYWwgLm8tc2hhcmVfX2FjdGlvbiB7XG5cdFx0XHRtYXgtd2lkdGg6ICRzaXplO1xuXHRcdH1cblx0fVxufVxuIiwiLy8vIE91dHB1dHMgdHlwb2dyYXBoeSBzdHlsZXMgZm9yIHRoZSBTZXJpZiBmb250LlxuLy8vIEluY2x1ZGluZzogZmFtaWx5LCBzaXplLCBsaW5lLWhlaWdodCwgd2VpZ2h0LCBzdHlsZSwgYW5kIGZvbnQgc2l6ZXNcbi8vLyBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nLlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGEgZm9udC1mYW1pbHkgcHJvcGVydHkgb25seSBmb3IgdGhlIHNlcmlmIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzZXJpZiBmb250LiBTZXQgYSBjdXN0b20gbGluZS1oZWlnaHQgb2YgMS42LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICRsaW5lLWhlaWdodDogMS42KTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtd2VpZ2h0IGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkd2VpZ2h0OiAnYm9sZCcpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC1zdHlsZSBmb3IgdGhlIHNlcmlmIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgc2VyaWYgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgZm9udC1mYW1pbHkuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBzZXJpZiBmb250IHByb3BlcnRpZXMgd2l0aG91dCBzaXplcyBmb3IgdGhlIGZhbGxiYWNrIGZvbnQgKHdpdGhvdXQgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nKS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1wcm9ncmVzc2l2ZTogZmFsc2UpO1xuLy8vXG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkc2NhbGUgW251bGxdIC0gYSBzY2FsZSBudW1iZXIgdG8gb3V0cHV0IGEgZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFtudWxsXSAtIGN1c3RvbSBsaW5lLWhlaWdodCB2YWx1ZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc2NhbGUncyBkZWZhdWx0XG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIG91dHB1dCBhIGZvbnQtd2VpZ2h0IHByb3BlcnR5LCBlLmcuICdib2xkJywgJ3NlbWlib2xkJ1xuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHN0eWxlIFtudWxsXSAtIG91dHB1dCBhIGZvbnQtc3R5bGUgcHJvcGVydHksIGUuZy4gJ2l0YWxpYydcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWZvbnQtZmFtaWx5IFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHRoZSBmb250LWZhbWlseSBwcm9wZXJ0eSBmcm9tIHRoZSBvdXRwdXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVzaXppbmcgdHlwb2dyYXBoeSwgd2hlcmUgdGhlIHNlcmlmIGZvbnQtZmFtaWx5IGlzIGluaGVyaXRlZCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1wcm9ncmVzc2l2ZSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBzdHlsZXMgdXNlZCBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nIChmb250LWZhbWlseSBhbmQgc2l6ZSBmYWxsYmFja3MgZm9yIGxvYWRpbmcgZm9udHMpLlxuQG1peGluIG9UeXBvZ3JhcGh5U2VyaWYoXG5cdCRzY2FsZTogbnVsbCxcblx0JGxpbmUtaGVpZ2h0OiBudWxsLFxuXHQkd2VpZ2h0OiBudWxsLFxuXHQkc3R5bGU6IG51bGwsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlLFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZTogJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmdcbikge1xuXHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb3IoXG5cdFx0JF9vLXR5cG9ncmFwaHktc2VyaWYsXG5cdFx0JHNjYWxlLFxuXHRcdCRsaW5lLWhlaWdodCxcblx0XHQkd2VpZ2h0LFxuXHRcdCRzdHlsZSxcblx0XHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0XHQkaW5jbHVkZS1wcm9ncmVzc2l2ZVxuXHQpO1xufVxuXG4vLy8gT3V0cHV0cyB0eXBvZ3JhcGh5IHN0eWxlcyBmb3IgdGhlIERpc3BsYXkgZm9udC5cbi8vLyBJbmNsdWRpbmc6IGZhbWlseSwgc2l6ZSwgbGluZS1oZWlnaHQsIHdlaWdodCwgc3R5bGUsIGFuZCBmb250IHNpemVzXG4vLy8gZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZy5cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGZvbnQtZmFtaWx5IHByb3BlcnR5IG9ubHkgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBkaXNwbGF5IGZvbnQuIFNldCBhIGN1c3RvbSBsaW5lLWhlaWdodCBvZiAxLjYuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxLCAkbGluZS1oZWlnaHQ6IDEuNik7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXdlaWdodCBmb3IgdGhlIGRpc3BsYXkgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICR3ZWlnaHQ6ICdib2xkJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXN0eWxlIGZvciB0aGUgZGlzcGxheSBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZGlzcGxheSBmb250IHByb3BlcnRpZXMgd2l0aG91dCBmb250LWZhbWlseS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZGlzcGxheSBmb250IHByb3BlcnRpZXMgd2l0aG91dCBzaXplcyBmb3IgdGhlIGZhbGxiYWNrIGZvbnQgKHdpdGhvdXQgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nKS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLXByb2dyZXNzaXZlOiBmYWxzZSk7XG4vLy9cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgZGlzcGxheSBmb250LWZhbWlseSBpcyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudCBlbGVtZW50LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtcHJvZ3Jlc3NpdmUgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgc3R5bGVzIHVzZWQgZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZyAoZm9udC1mYW1pbHkgYW5kIHNpemUgZmFsbGJhY2tzIGZvciBsb2FkaW5nIGZvbnRzKS5cbkBtaXhpbiBvVHlwb2dyYXBoeURpc3BsYXkoXG5cdCRzY2FsZTogbnVsbCxcblx0JGxpbmUtaGVpZ2h0OiBudWxsLFxuXHQkd2VpZ2h0OiBudWxsLFxuXHQkc3R5bGU6IG51bGwsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlLFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZTogJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmdcbikge1xuXHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb3IoXG5cdFx0JF9vLXR5cG9ncmFwaHktZGlzcGxheSxcblx0XHQkc2NhbGUsXG5cdFx0JGxpbmUtaGVpZ2h0LFxuXHRcdCR3ZWlnaHQsXG5cdFx0JHN0eWxlLFxuXHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5LFxuXHRcdCRpbmNsdWRlLXByb2dyZXNzaXZlXG5cdCk7XG59XG5cbi8vLyBPdXRwdXRzIHR5cG9ncmFwaHkgc3R5bGVzIGZvciB0aGUgU2FucyBmb250LlxuLy8vIEluY2x1ZGluZzogZmFtaWx5LCBzaXplLCBsaW5lLWhlaWdodCwgd2VpZ2h0LCBzdHlsZSwgYW5kIGZvbnQgc2l6ZXNcbi8vLyBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nLlxuLy8vXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBmb250LWZhbWlseSBwcm9wZXJ0eSBvbmx5IGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2FucyBmb250LiBTZXQgYSBjdXN0b20gbGluZS1oZWlnaHQgb2YgMS42LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJGxpbmUtaGVpZ2h0OiAxLjYpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC13ZWlnaHQgZm9yIHRoZSBzYW5zIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkd2VpZ2h0OiAnYm9sZCcpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC1zdHlsZSBmb3IgdGhlIHNhbnMgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNhbnMgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgZm9udC1mYW1pbHkuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNhbnMgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgc2l6ZXMgZm9yIHRoZSBmYWxsYmFjayBmb250ICh3aXRob3V0IHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZykuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1wcm9ncmVzc2l2ZTogZmFsc2UpO1xuLy8vXG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkc2NhbGUgW251bGxdIC0gYSBzY2FsZSBudW1iZXIgdG8gb3V0cHV0IGEgZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFtudWxsXSAtIGN1c3RvbSBsaW5lLWhlaWdodCB2YWx1ZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc2NhbGUncyBkZWZhdWx0XG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIG91dHB1dCBhIGZvbnQtd2VpZ2h0IHByb3BlcnR5LCBlLmcuICdib2xkJywgJ3NlbWlib2xkJ1xuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHN0eWxlIFtudWxsXSAtIG91dHB1dCBhIGZvbnQtc3R5bGUgcHJvcGVydHksIGUuZy4gJ2l0YWxpYydcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWZvbnQtZmFtaWx5IFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHRoZSBmb250LWZhbWlseSBwcm9wZXJ0eSBmcm9tIHRoZSBvdXRwdXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVzaXppbmcgdHlwb2dyYXBoeSwgd2hlcmUgdGhlIHNhbnMgZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG5AbWl4aW4gb1R5cG9ncmFwaHlTYW5zKFxuXHQkc2NhbGU6IG51bGwsXG5cdCRsaW5lLWhlaWdodDogbnVsbCxcblx0JHdlaWdodDogbnVsbCxcblx0JHN0eWxlOiBudWxsLFxuXHQkaW5jbHVkZS1mb250LWZhbWlseTogdHJ1ZSxcblx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmU6ICRvLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1sb2FkaW5nXG4pIHtcblx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5Rm9yKFxuXHRcdCRfby10eXBvZ3JhcGh5LXNhbnMsXG5cdFx0JHNjYWxlLFxuXHRcdCRsaW5lLWhlaWdodCxcblx0XHQkd2VpZ2h0LFxuXHRcdCRzdHlsZSxcblx0XHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0XHQkaW5jbHVkZS1wcm9ncmVzc2l2ZVxuXHQpO1xufVxuXG4vLy8gU2V0IGEgY3VzdG9tIGZvbnQuXG4vLy9cbi8vLyBAZXhhbXBsZSBUaGlzIGV4YW1wbGUgc2hvd3Mgc2V0dGluZyBhIGN1c3RvbSBmb250IFwiTXlTYW5zRm9udFwiIGFzIHRoZSBcInNhbnNcIiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXRGb250KCR0eXBlOiAnc2FucycsICRmYW1pbHk6ICdNeVNhbnNGb250LCBzYW5zJyk7XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUgLSBPbmUgb2YgJ3NhbnMnLCAnc2VyaWYnLCBvciAnZGlzcGxheScuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmYW1pbHkgLSBUaGUgZm9udCBmYW1pbHkgdG8gc2V0LlxuQG1peGluIG9UeXBvZ3JhcGh5U2V0Rm9udCgkdHlwZSwgJGZhbWlseSkge1xuXHQkZm9udDogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZhbWlseSk7XG5cdEBpZiBub3Qgb0ZvbnRzVmFyaWFudEV4aXN0cygkZm9udCwgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsKSB7XG5cdFx0QGVycm9yICdDb3VsZCBub3Qgc2V0IHRoZSBmb250IGZhbWlseSBcIiN7JGZhbWlseX1cIiBhcyBcIiN7JGZvbnR9XCIgZG9lcyBub3QgZXhpc3QgaW4gXCJvLWZvbnRzXCIuIElmIHlvdSBhcmUgc2V0dGluZyBhIGN1c3RvbSBmb250LCBmaXJzdCByZWdpc3RlciB5b3VyIGN1c3RvbSBmb250IHdpdGggby1mb250cyAoaHR0cHM6Ly9yZWdpc3RyeS5vcmlnYW1pLmZ0LmNvbS9jb21wb25lbnRzL28tZm9udHMpLic7XG5cdH1cblx0QGlmIG5vdCBpbmRleCgkX28tdHlwb2dyYXBoeS10eXBlcywgJHR5cGUpIHtcblx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBzZXQgZm9udC1mYW1pbHkgXCIjeyRmYW1pbHl9XCIgZm9yIGZhbWlseSBzdHlsZSBcIiN7JHR5cGV9XCIsIGZhbWlseSBzdHlsZSBtdXN0IGJlIG9uZSBvZiBcIiN7JF9vLXR5cG9ncmFwaHktdHlwZXN9XCIuJztcblx0fVxuXHQvLyBTZXQgdGhlIGN1c3RvbSBmb250LlxuXHRAaWYgJHR5cGUgPT0gJ3NhbnMnIHtcblx0XHQkX28tdHlwb2dyYXBoeS1zYW5zOiAkZmFtaWx5ICFnbG9iYWw7XG5cdH1cblx0QGlmICR0eXBlID09ICdzZXJpZicge1xuXHRcdCRfby10eXBvZ3JhcGh5LXNlcmlmOiAkZmFtaWx5ICFnbG9iYWw7XG5cdH1cblx0QGlmICR0eXBlID09ICdkaXNwbGF5JyB7XG5cdFx0JF9vLXR5cG9ncmFwaHktZGlzcGxheTogJGZhbWlseSAhZ2xvYmFsO1xuXHR9XG59XG5cbi8vLyBEZWZpbmUgdGhlIHR5cG9ncmFwaGljIHNjYWxlIGZvciBhIGdpdmVuIGZvbnQuIFRoZSBmb250IG1heSBiZSBhbiBleGlzdGluZyBvciBjdXN0b20gZm9udC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZhbWlseSAtIFRoZSBmb250IG5hbWUgb3IgZmFtaWx5IHRvIGFwcGx5IGEgc2NhbGUgdG8uXG4vLy8gQHBhcmFtIHtNYXB9ICRzY2FsZSAtIEEgbWFwIG9mIHNjYWxlIG51bWJlcnMgYXMga2V5cyAoLTIgdG8gMTApLCB3aXRoIGxpc3QgdmFsdWVzIG9mIGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgXCIoLTI6ICgxMiwgMTYpLCAtMTogKDE0LCAxNiksIDA6ICgxNiwgMjApKVwiIGV0Yy4uLlxuLy8vIEBleGFtcGxlIFRoaXMgZXhhbXBsZSBzaG93cyBkZWZpbmluZyBhIGN1c3RvbSBmb250IHNjYWxlIGZvciBhIGN1c3RvbSBmb250IFwiTXlTYW5zRm9udFwiLiBBdCBzY2FsZSBcIjBcIiB0aGUgZm9udCBzaXplIHdpbGwgYmUgMTZweCwgYW5kIHRoZSBsaW5lLWhlaWdodCAyMHB4LlxuLy8vXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGVmaW5lRm9udFNjYWxlKCRmYW1pbHk6ICdNeVNhbnNGb250LCBzYW5zJywgKFxuLy8vXHRcdCAgIC0yOiAoMTIsIDE2KSxcbi8vL1x0XHQgICAtMTogKDE0LCAxOCksXG4vLy9cdFx0ICAgIDA6ICgxNiwgMjApLFxuLy8vXHRcdCAgICAxOiAoMTgsIDI0KSxcbi8vL1x0XHQgICAgMjogKDIwLCAyNiksXG4vLy9cdFx0ICAgIDM6ICgyNCwgMzIpLFxuLy8vXHRcdCAgICA0OiAoMjgsIDM2KSxcbi8vL1x0XHQgICAgNTogKDMyLCA0MiksXG4vLy9cdFx0ICAgIDY6ICg0MCwgNTIpLFxuLy8vXHRcdCAgICA3OiAoNDgsIDYyKSxcbi8vL1x0XHQgICAgODogKDU2LCA3MiksXG4vLy9cdFx0ICAgIDk6ICg3MiwgOTQpLFxuLy8vXHRcdCAgIDEwOiAoODQsIDExMClcbi8vL1x0XHQpKTtcbkBtaXhpbiBvVHlwb2dyYXBoeURlZmluZUZvbnRTY2FsZSgkZmFtaWx5LCAkc2NhbGUpIHtcblx0QGlmIHR5cGUtb2YoJHNjYWxlKSAhPSAnbWFwJyB7XG5cdFx0QGVycm9yICdDb3VsZCBub3Qgc2V0IHRoZSBzY2FsZSBmb3IgZm9udCBcIiN7JGZhbWlseX1cIiwgZXhwZWN0ZWQgdGhlIHNjYWxlIHRvIGJlIGEgbWFwIGJ1dCBmb3VuZCBcIiN7JHNjYWxlfVwiLCBvZiB0eXBlIFwiI3t0eXBlLW9mKCRzY2FsZSl9XCIuJztcblx0fVxuXHRAZWFjaCAkc2NhbGUtbnVtYmVyLCAkc2NhbGUtaXRlbSBpbiAkc2NhbGUge1xuXHRcdEBpZiB0eXBlLW9mKCRzY2FsZS1pdGVtKSAhPSAnbGlzdCcgb3IgbGVuZ3RoKCRzY2FsZS1pdGVtKSAhPSAyIHtcblx0XHRcdEBlcnJvciAnRXhwZWN0ZWQgZWFjaCBpdGVtIGluIHRoZSBzY2FsZSB0byBiZSBhIGxpc3Qgd2l0aCB0d28gaXRlbXMsIHRoZSBmb250IHNpemUgZm9sbG93ZWQgYnkgdGhlIGxpbmUgaGVpZ2h0Lic7XG5cdFx0fVxuXHR9XG5cdEBpZiBtYXAta2V5cygkc2NhbGUpICE9ICgtMiwgLTEsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwKSB7XG5cdFx0QGVycm9yICdFeHBlY3RlZCB0aGUgc2NhbGUgZm9yIGZvbnQgXCIjeyRmYW1pbHl9XCIgdG8gY29udGFpbiB2YWx1ZXMgZm9yIHNjYWxlcyAtMiB0byAxMCwgYnV0IGZvdW5kIHNjYWxlcyBcIiN7bWFwLWtleXMoJHNjYWxlKX1cIi4nO1xuXHR9XG5cdCRmYW1pbHk6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmYW1pbHkpO1xuXHQkX28tdHlwb2dyYXBoeS1mb250LXNjYWxlLWJ5LWZvbnQ6IG1hcC1tZXJnZSgoJGZhbWlseTogJHNjYWxlKSwgJF9vLXR5cG9ncmFwaHktZm9udC1zY2FsZS1ieS1mb250KSAhZ2xvYmFsO1xufVxuXG4vLy8gT3V0cHV0IGEgdHlwb2dyYXBoeSBmb3IgZm9udFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCAtIFRoZSBmb250IHRvIG91dHB1dCB0eXBvZ3JhcGh5IGZvci5cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgZ2l2ZW4gZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29UeXBvZ3JhcGh5Rm9yKFxuXHQkZm9udCxcblx0JHNjYWxlLFxuXHQkbGluZS1oZWlnaHQsXG5cdCR3ZWlnaHQsXG5cdCRzdHlsZSxcblx0JGluY2x1ZGUtZm9udC1mYW1pbHksXG5cdCRpbmNsdWRlLXByb2dyZXNzaXZlXG4pIHtcblx0Ly8gQ2hlY2sgZm9udCB2YXJpYW50IGlzIHN1cHBvcnRlZC5cblx0JGZvbnQtd2l0aG91dC1mYWxsYmFja3M6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTtcblx0JHZhcmlhbnQtZXhpc3RzOiBvRm9udHNWYXJpYW50RXhpc3RzKCRmb250LXdpdGhvdXQtZmFsbGJhY2tzLCAkd2VpZ2h0LCAkc3R5bGUpO1xuXHRAaWYgbm90ICR2YXJpYW50LWV4aXN0cyB7XG5cdFx0QGVycm9yICdGb250IGZhbWlseSBcIiN7JGZvbnQtd2l0aG91dC1mYWxsYmFja3N9XCIgb2Ygd2VpZ2h0ICcgK1xuXHRcdFx0J1wiI3tpZigkd2VpZ2h0LCAkd2VpZ2h0LCAncmVndWxhcicpfVwiIGFuZCBzdHlsZSAnICtcblx0XHRcdCdcIiN7aWYoJHN0eWxlLCAkc3R5bGUsICdub3JtYWwnKX1cIiBpcyBub3Qgc3VwcG9ydGVkLic7XG5cdH1cblxuXHQvLyBDaGVjayBmb250IHZhcmlhbnQgaGFzIGJlZW4gaW5jbHVkZWQsIGFuZCBlcnJvciBpZiBhbiBlcnJvciBtZXNzYWdlXG5cdC8vIGhhcyBiZWVuIHNldCBieSB0aGUgdXNlci5cblx0JHZhcmlhbnQtaW5jbHVkZWQ6IG9Gb250c1ZhcmlhbnRJbmNsdWRlZCgkZm9udC13aXRob3V0LWZhbGxiYWNrcywgJHdlaWdodCwgJHN0eWxlKTtcblx0QGlmIG5vdCAkdmFyaWFudC1pbmNsdWRlZCBhbmQgdHlwZS1vZigkby10eXBvZ3JhcGh5LWVycm9yLWZvci1taXNzaW5nLWZvbnRzKSA9PSAnc3RyaW5nJyB7XG5cdFx0QGVycm9yICdUaGUgZm9udCBmYWNlIGZvciBmb250IGZhbWlseSBcIiN7JGZvbnQtd2l0aG91dC1mYWxsYmFja3N9XCIgb2YgJyArXG5cdFx0XHQnd2VpZ2h0IFwiI3tpZigkd2VpZ2h0LCAkd2VpZ2h0LCAncmVndWxhcicpfVwiIGFuZCBzdHlsZSAnICtcblx0XHRcdCdcIiN7aWYoJHN0eWxlLCAkc3R5bGUsICdub3JtYWwnKX1cIiBoYXMgbm90IGJlZW4gaW5jbHVkZWQgaW4geW91ciAnICtcblx0XHRcdCdwcm9qZWN0LiAje2luc3BlY3QoJG8tdHlwb2dyYXBoeS1lcnJvci1mb3ItbWlzc2luZy1mb250cyl9Jztcblx0fVxuXG5cdEBpZiAkaW5jbHVkZS1mb250LWZhbWlseSB7XG5cdFx0Zm9udC1mYW1pbHk6IGlmKHR5cGUtb2YoJGZvbnQpID09ICdzdHJpbmcnLCB1bnF1b3RlKCRmb250KSwgJGZvbnQpO1xuXHR9XG5cblx0QGlmICRzY2FsZSB7XG5cdFx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5U2l6ZSgkc2NhbGU6ICRzY2FsZSwgJGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQsICRmb250OiAkZm9udCk7XG5cdH0gQGVsc2UgaWYgJGxpbmUtaGVpZ2h0IHtcblx0XHRsaW5lLWhlaWdodDogX29UeXBvZ3JhcGh5QWRqdXN0VW5pdCgkbGluZS1oZWlnaHQpO1xuXHR9XG5cblx0QGlmICR3ZWlnaHQge1xuXHRcdGZvbnQtd2VpZ2h0OiBvRm9udHNXZWlnaHQoJHdlaWdodCk7XG5cdH1cblxuXHRAaWYgJHN0eWxlIHtcblx0XHRmb250LXN0eWxlOiB1bnF1b3RlKCRzdHlsZSk7XG5cdH1cblxuXHRAaWYgJGluY2x1ZGUtcHJvZ3Jlc3NpdmUge1xuXHRcdEBpbmNsdWRlIF9vVHlwb2dyYXBoeVByb2dyZXNzaXZlRm9udEZhbGxiYWNrKCRmb250LCAkc2NhbGUsICR3ZWlnaHQsICRzdHlsZSwgJGluY2x1ZGUtZm9udC1mYW1pbHkpO1xuXHR9XG59XG5cbi8vLyBPdXRwdXRzIHRoZSBmb250IHNpemUgYW5kIGxpbmUgaGVpZ2h0IGJhc2VkIG9uIHRoZSBzY2FsZSwgYWxzb1xuLy8vIGFjY2VwdHMgYW4gb3ZlcnJpZGUgbGluZS1oZWlnaHQgdG8gb3V0cHV0IGFuZCBhIGZvbnQgYWRqdXN0bWVudFxuLy8vIHBhcmFtZXRlciBmb3Igd2hlbiBvdXRwdXR0aW5nIHN0eWxlcyBmb3IgcHJvZ3Jlc3NpdmVseSBsb2FkZWQgZm9udHNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2NhbGUgbnVtYmVyIG9uIHNjYWxlIHRoZSBzaXplcyBhcmUgYmFzZWQgb25cbi8vLyBAcGFyYW0ge0Jvb2xlYW4gfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBzaXplIHRvIG92ZXJyaWRlIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCBbJyddIC0gVGhlIGZvbnQgdG8gZ2V0IHRoZSBmb250IHNpemUgZm9yLCBhcyBmb250cyBtYXkgaGF2ZSBkaWZmZXJlbnQgc2NhbGVzLiBVc2VzIHRoZSBkZWZhdWx0IHNjYWxlIGlmIG5vdCBzcGVjaWZpZWQuXG5AbWl4aW4gX29UeXBvZ3JhcGh5U2l6ZSgkc2NhbGUsICRsaW5lLWhlaWdodDogZmFsc2UsICRmb250OiAnJykge1xuXHRAaWYgdHlwZS1vZigkc2NhbGUpID09IG1hcCB7XG5cdFx0QGVhY2ggJGJyZWFrcG9pbnQsICRzY2FsZSBpbiAkc2NhbGUge1xuXHRcdFx0JGN1cnJlbnQtbGluZS1oZWlnaHQ6IGlmKGxlbmd0aCgkc2NhbGUpID09IDIsIG50aCgkc2NhbGUsIDIpLCAkbGluZS1oZWlnaHQpO1xuXHRcdFx0JGN1cnJlbnQtc2NhbGU6IGlmKHR5cGUtb2YoJHNjYWxlKSA9PSBsaXN0IGFuZCBsZW5ndGgoJHNjYWxlKSAhPSAwLCBudGgoJHNjYWxlLCAxKSwgJHNjYWxlKTtcblxuXHRcdFx0QGlmICRicmVha3BvaW50ID09ICdkZWZhdWx0JyBhbmQgJGN1cnJlbnQtc2NhbGUge1xuXHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAxLCAkZm9udCk7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAkY3VycmVudC1saW5lLWhlaWdodCwgJGZvbnQpO1xuXHRcdFx0fVxuXG5cdFx0XHRAaWYgJGJyZWFrcG9pbnQgIT0gJ2RlZmF1bHQnIGFuZCAkY3VycmVudC1zY2FsZSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRicmVha3BvaW50KSB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkY3VycmVudC1zY2FsZSwgMSwgJGZvbnQpO1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAkY3VycmVudC1saW5lLWhlaWdodCwgJGZvbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRzY2FsZSwgMSwgJGZvbnQpO1xuXHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRzY2FsZSwgJGxpbmUtaGVpZ2h0LCAkZm9udCk7XG5cdH1cbn1cblxuLy8vIE91dHB1dHMgdGhlIHByb2dyZXNzaXZlIGZvbnQgZmFsbGJhY2sgc3R5bGVzIGJhc2VkIG9uXG4vLy8gZm9udCBhbmQgc2NhbGUgaWYgdGhlIGZvbnQgaGFzIGZhbGxiYWNrIHNldHRpbmdzXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQgLSBGb250IHRvIG91dHB1dCBmYWxsYmFjayBzdHlsZXMgZm9yIChvciAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSAtIE51bWJlciBvbiBzY2FsZSB0aGUgc2l6ZSBpcyBiYXNlZCBvbi5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBUaGUgd2VpZ2h0IG9mIHRoZSBmb250IHdoaWNoIG5lZWRzIGEgZmFsbGJhY2sgZS5nLiAnYm9sZCcuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBUaGUgc3R5bGUgb2YgdGhlIGZvbnQgd2hpY2ggbmVlZHMgYSBmYWxsYmFjayBlLmcuICdpdGFsaWMnLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gV2hldGhlciB0byBvdXRwdXQgdGhlIGZvbnQgZmFtaWx5IG9mIHRoZSBmYWxsYmFjayBmb250ICh2cy4ganVzdCB0aGUgc2l6ZSlcbkBtaXhpbiBfb1R5cG9ncmFwaHlQcm9ncmVzc2l2ZUZvbnRGYWxsYmFjaygkZm9udCwgJHNjYWxlLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlKSB7XG5cdEBpZiBub3QgJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmcge1xuXHRcdEBlcnJvciAnUHJvZ3Jlc3NpdmUgZm9udCBmYWxsYmFja3MgYXJlIGRpc2FibGVkLicgK1xuXHRcdFx0J0lmIHlvdSBhcmUgc3VyZSB5b3Ugd2FudCB0byBvdXRwdXQgcHJvZ3Jlc3NpdmUgZm9udCBmYWxsYmFja3MgaW4gJyArXG5cdFx0XHQneW91ciBwcm9qZWN0IHNldCBgJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmc6IHRydWU7YCAnICtcblx0XHRcdCdhdCB0aGUgdG9wIG9mIHlvdXIgcHJvamVjdCwgYmVmb3JlIGltcG9ydGluZyBTYXNzIGZpbGVzLiAnICtcblx0XHRcdCdTZWUgdGhlIFJFQURNRSBmb3IgZGV0YWlscyBhbmQgbW9yZSBvcHRpb25zIG9yIGNvbnRhY3QgdGhlIE9yaWdhbWkgdGVhbS4nO1xuXHR9XG5cdEBpZiAkc2NhbGUge1xuXHRcdC8vIElmIGZhbHN5IHdlaWdodC9zdHlsZSBkZWZhdWx0IHRvIHJlZ3VsYXIvbm9ybWFsLlxuXHRcdCR3ZWlnaHQ6IGlmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyk7XG5cdFx0JHN0eWxlOiBpZigkc3R5bGUsICRzdHlsZSwgJ25vcm1hbCcpO1xuXHRcdC8vIEZpbmQgZmFsbGJhY2sgY29uZmlnIGZvciBmb250LCB3ZWlnaHQsIGFuZCBzdHlsZS5cblx0XHRAZWFjaCAkZmFsbGJhY2sgaW4gJF9vLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1mYWxsYmFja3Mge1xuXHRcdFx0Ly8gR2V0IGZhbGxiYWNrIHByb3BlcnRpZXMuXG5cdFx0XHQkZmFsbGJhY2stZmFtaWx5OiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2ZhbWlseScpO1xuXHRcdFx0JGZhbGxiYWNrLWxhYmVsOiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2xhYmVsJyk7XG5cdFx0XHQvLyBNYXRjaCByZWd1bGFyIGJ5IGRlZmF1bHQuXG5cdFx0XHQkZmFsbGJhY2std2VpZ2h0OiBtYXAtZ2V0KCRmYWxsYmFjaywgJ3dlaWdodCcpO1xuXHRcdFx0JGZhbGxiYWNrLXdlaWdodDogaWYoJGZhbGxiYWNrLXdlaWdodCwgJGZhbGxiYWNrLXdlaWdodCwgKCdyZWd1bGFyJykpO1xuXHRcdFx0Ly8gTWF0Y2ggbm9ybWFsIGJ5IGRlZmF1bHQuXG5cdFx0XHQkZmFsbGJhY2stc3R5bGU6IG1hcC1nZXQoJGZhbGxiYWNrLCAnc3R5bGUnKTtcblx0XHRcdCRmYWxsYmFjay1zdHlsZTogaWYoJGZhbGxiYWNrLXN0eWxlLCAkZmFsbGJhY2stc3R5bGUsICgnbm9ybWFsJykpO1xuXHRcdFx0JGZhbGxiYWNrLXNjYWxlOiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2ZhbGxiYWNrLXNjYWxlJyk7XG5cdFx0XHQvLyBDaGVjayBpZiBmYWxsYmFjayBpcyBmb3IgdGhlIGdpdmVuIGZvbnQsIHdlaWdodCwgYW5kIHN0eWxlLjtcblx0XHRcdCRsYWJlbC1tYXRjaDogJGZhbGxiYWNrLWxhYmVsID09IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTsgLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcblx0XHRcdCRmYW1pbHktbWF0Y2g6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmYWxsYmFjay1mYW1pbHkpID09IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTtcblx0XHRcdCR3ZWlnaHQtbWF0Y2g6IGluZGV4KCRmYWxsYmFjay13ZWlnaHQsICR3ZWlnaHQpO1xuXHRcdFx0JHN0eWxlLW1hdGNoOiBpZigkZmFsbGJhY2stc3R5bGUsIGluZGV4KCRmYWxsYmFjay1zdHlsZSwgJHN0eWxlKSwgdHJ1ZSk7XG5cdFx0XHQvLyBPdXRwdXQgdGhlIGZhbGxiYWNrIGlmIGl0IG1hdGNoZXMuXG5cdFx0XHRAaWYgKCRsYWJlbC1tYXRjaCBvciAoJGZhbWlseS1tYXRjaCBhbmQgJHdlaWdodC1tYXRjaCBhbmQgJHN0eWxlLW1hdGNoKSkge1xuXHRcdFx0XHQuI3skX28tdHlwb2dyYXBoeS1sb2FkaW5nLXByZWZpeH0tI3skZmFsbGJhY2stbGFiZWx9ICYge1xuXHRcdFx0XHRcdEBpbmNsdWRlIF9vVHlwb2dyYXBoeUZvbnRTaXplKCRzY2FsZTogJHNjYWxlLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3Q6ICRmYWxsYmFjay1zY2FsZSwgJGZvbnQ6ICRmYWxsYmFjay1mYW1pbHkpO1xuXHRcdFx0XHRcdEBpZiAkaW5jbHVkZS1mb250LWZhbWlseSB7XG5cdFx0XHRcdFx0XHRmb250LWZhbWlseTogbWFwLWdldCgkZmFsbGJhY2ssICdmYWxsYmFjaycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gT3V0cHV0cyB0aGUgZm9udCBzaXplIGJhc2VkIG9uIHRoZSBzY2FsZSwgYWxzbyBhY2NlcHRzIGEgZm9udCBhZGp1c3RtZW50XG4vLy8gcGFyYW1ldGVyIGZvciB3aGVuIG91dHB1dHRpbmcgc3R5bGVzIGZvciBwcm9ncmVzc2l2ZWx5IGxvYWRlZCBmb250c1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSAtIE51bWJlciBvbiBzY2FsZSB0aGUgc2l6ZXMgYXJlIGJhc2VkIG9uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QgLSBNdWx0aXBsaWVyIGZvciBmb250LXNpemUgYWRqdXN0bWVudHMsIHdoZW4gYWRkaW5nIHN0eWxlcyBmb3IgcHJvZ3Jlc3NpdmVseSBsb2FkZWQgZm9udC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQgWycnXSAtIFRoZSBmb250IHRvIGdldCB0aGUgZm9udCBzaXplIGZvciwgYXMgZm9udHMgbWF5IGhhdmUgZGlmZmVyZW50IHNjYWxlcy4gVXNlcyB0aGUgZGVmYXVsdCBzY2FsZSBpZiBub3Qgc3BlY2lmaWVkLlxuQG1peGluIF9vVHlwb2dyYXBoeUZvbnRTaXplKCRzY2FsZSwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0OiAxLCAkZm9udDogJycpIHtcblx0QGlmIHR5cGUtb2YoJHNjYWxlKSA9PSBtYXAge1xuXHRcdEBlYWNoICRicmVha3BvaW50LCAkbnVtYmVyIGluICRzY2FsZSB7XG5cdFx0XHRAaWYgJGJyZWFrcG9pbnQgPT0gJ2RlZmF1bHQnIHtcblx0XHRcdFx0QGlmIHR5cGUtb2YoJG51bWJlcikgPT0gbGlzdCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZShudGgoJG51bWJlciwgMSksICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRudW1iZXIsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IEBlbHNlIGlmKCRudW1iZXIpIHtcblx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGJyZWFrcG9pbnQpIHtcblx0XHRcdFx0XHRAaWYgdHlwZS1vZigkbnVtYmVyKSA9PSBsaXN0IHtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUobnRoKCRudW1iZXIsIDEpLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0XHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJG51bWJlciwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJHNjYWxlLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0fVxufVxuIiwiLy8vIFZpc3VhbGx5IGhpZGUgYW4gZWxlbWVudCB3aGlsZSBzdGlsbFxuLy8vIGFsbG93aW5nIGl0IHRvIGJlIHJlYWQgYnkgYSBzY3JlZW5yZWFkZXJcbkBtaXhpbiBvTm9ybWFsaXNlVmlzdWFsbHlIaWRkZW4ge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGNsaXA6IHJlY3QoMCAwIDAgMCk7XG5cdGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDAgMCk7XG5cdG1hcmdpbjogLTFweDtcblx0Ym9yZGVyOiAwO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRwYWRkaW5nOiAwO1xuXHR3aWR0aDogMnB4O1xuXHRoZWlnaHQ6IDJweDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLy8vIENsZWFyZml4IGhlbHBlciBzdHlsZXNcbi8vLyBPdXRwdXRzIGNsZWFyZml4IHN0eWxlcyBvbiB0aGUgY3VycmVudCBlbGVtZW50XG5AbWl4aW4gb05vcm1hbGlzZUNsZWFyZml4IHtcblx0em9vbTogMTtcblxuXHQmOmJlZm9yZSxcblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogJyc7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdFx0ZGlzcGxheTogZmxleDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1ibG9jay1uby1kdXBsaWNhdGUtcHJvcGVydGllc1xuXHR9XG5cdCY6YWZ0ZXIge1xuXHRcdGNsZWFyOiBib3RoO1xuXHR9XG59XG5cbi8vLyBBZGRzIGJveCBzaXppbmcgdG8gY3VycmVudCBhbmQgYWxsIGNoaWxkIGVsZW1lbnRzXG5AbWl4aW4gb05vcm1hbGlzZUJveFNpemluZyB7XG5cblx0LyphdXRvcHJlZml4ZXI6IG9mZiovXG5cdC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cblxuXHQmICosXG5cdCYgKjpiZWZvcmUsXG5cdCYgKjphZnRlciB7XG5cblx0XHQvKmF1dG9wcmVmaXhlcjogb2ZmKi9cblx0XHQtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRcdC1tb3otYm94LXNpemluZzogaW5oZXJpdDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdFx0Ym94LXNpemluZzogaW5oZXJpdDtcblxuXHR9XG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byBnZW5lcmFsIGh0bWwgZWxlbWVudHNcbi8vLyBlZmZlY3RzOiA8aHRtbD4sIDxib2R5PiwgPG1haW4+LCBhbmQgOmZvY3VzIHN0YXRlXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VCb2R5KCRmb250LXNtb290aGluZzogdHJ1ZSwgJGJveC1zaXppbmc6IHRydWUsICRmb2N1czogdHJ1ZSwgJHJlZHVjZS1tb3Rpb246IHRydWUpIHtcblx0aHRtbCxcblx0Ym9keSB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG5cblx0XHQtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdFx0LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblxuXG5cdFx0QGlmICRmb250LXNtb290aGluZyB7XG5cblx0XHRcdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRcdFx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblxuXHRcdH1cblxuXHRcdEBpZiAkYm94LXNpemluZyB7XG5cdFx0XHRAaW5jbHVkZSBvTm9ybWFsaXNlQm94U2l6aW5nO1xuXHRcdH1cblxuXHRcdEBpZiAkcmVkdWNlLW1vdGlvbiB7XG5cdFx0XHQvLyBJbW1lZGlhdGVseSBqdW1wIGFueSBhbmltYXRpb24gdG8gdGhlIGVuZCBwb2ludCBpZiB0aGUgdXNlciBoYXNcblx0XHRcdC8vIHNldCB0aGVpciBkZXZpY2UgdG8gXCJwcmVmZXJzIHJlZHVjZWQgbW90aW9uXCIuXG5cdFx0XHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemRldnMvY3NzcmVtZWR5L2lzc3Vlcy8xMVxuXHRcdFx0QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0XHRcdFx0Kixcblx0XHRcdFx0KjpiZWZvcmUsXG5cdFx0XHRcdCo6YWZ0ZXIge1xuXG5cdFx0XHRcdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiAwLjAwMXMgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblx0XHRcdFx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAwMXMgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblx0XHRcdFx0XHRhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIEdpdmUgPG1haW4+cyB0aGUgcHJvcGVyIGRpc3BsYXkgdmFsdWUgaW4gSUUuXG5cdG1haW4ge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0QGlmICRmb2N1cyB7XG5cdFx0QGluY2x1ZGUgX29Ob3JtYWxpc2VGb2N1cygpO1xuXHR9XG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyBmb3IgZm9jdXNlZCBlbGVtZW50cy5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUZvY3VzIHtcblx0Ly8gQXBwbHkgOmZvY3VzIHN0eWxlcyBhcyBhIGZhbGxiYWNrXG5cdC8vIFRoZXNlIHN0eWxlcyB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIGJyb3dzZXJzIHRoYXQgZG9uJ3QgdXNlIHRoZSBwb2x5ZmlsbCwgdGhpcyBpbmNsdWRlcyBicm93c2VycyB3aGljaCBzdXBwb3J0IHRoZSBmZWF0dXJlIG5hdGl2ZWx5LlxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSksXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB7XG5cdFx0Ly8gU3RhbmRhcmRpc2UgZm9jdXMgc3R5bGVzLlxuXHRcdDpmb2N1cyB7XG5cdFx0XHRvdXRsaW5lOiAycHggc29saWQgJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0XHR9XG5cblx0XHRpbnB1dDpmb2N1cyxcblx0XHR0ZXh0YXJlYTpmb2N1cyxcblx0XHRzZWxlY3Q6Zm9jdXMge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4ICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXHR9XG5cblx0Ly8gV2hlbiB0aGUgZm9jdXMtdmlzaWJsZSBwb2x5ZmlsbCBpcyBhcHBsaWVkIGAuanMtZm9jdXMtdmlzaWJsZWAgaXMgYWRkZWQgdG8gdGhlIGh0bWwgZG9tIG5vZGVcblx0Ly8gKHRoZSBib2R5IG5vZGUgaW4gdjQgb2YgdGhlIDNyZCBwYXJ0eSBwb2x5ZmlsbClcblxuXHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdGJvZHkuanMtZm9jdXMtdmlzaWJsZSwgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRodG1sLmpzLWZvY3VzLXZpc2libGUge1xuXHRcdC8vIFN0YW5kYXJkaXNlIGZvY3VzIHN0eWxlcy5cblx0XHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0LmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogMnB4IHNvbGlkICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRpbnB1dC5mb2N1cy12aXNpYmxlLCAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0dGV4dGFyZWEuZm9jdXMtdmlzaWJsZSxcblx0XHRzZWxlY3QuZm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0XHR9XG5cdFx0Ly8gRGlzYWJsZSBicm93c2VyIGRlZmF1bHQgZm9jdXMgc3R5bGUuXG5cdFx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdDpmb2N1czpub3QoLmZvY3VzLXZpc2libGUpIHtcblx0XHRcdG91dGxpbmU6IDA7XG5cdFx0fVxuXHR9XG5cblxuXHQvLyBUaGVzZSBzdHlsZXMgd2lsbCBiZSBpZ25vcmVkIGJ5IGJyb3dzZXJzIHdoaWNoIGRvIG5vdCByZWNvZ25pc2UgdGhlIDpmb2N1cy12aXNpYmxlIHNlbGVjdG9yIChhcyBwZXIgdGhlIHRoaXJkIGJ1bGxldCBwb2ludCBpbiBodHRwczovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLTMvI0NvbmZvcm1hbmNlKVxuXHQvLyBJZiBhIGJyb3dzZXIgc3VwcG9ydHMgOmZvY3VzLXZpc2libGUgd2UgdW5zZXQgdGhlIDpmb2N1cyBzdHlsZXMgdGhhdCB3ZXJlIGFwcGxpZWQgYWJvdmVcblx0Ly8gKHdpdGhpbiB0aGUgaHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIGJsb2NrKS5cblx0OmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMge1xuXHRcdG91dGxpbmU6IHVuc2V0O1xuXHR9XG5cblx0OmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cyxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIGlucHV0OmZvY3VzLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cyxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cyxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cyB7XG5cdFx0Ym94LXNoYWRvdzogdW5zZXQ7XG5cdH1cblxuXHQvLyBTdHlsZXMgZ2l2ZW4gOmZvY3VzLXZpc2libGUgc3VwcG9ydC4gRXh0cmEgc2VsZWN0b3JzIG5lZWRlZCB0byBtYXRjaFxuXHQvLyBwcmV2aW91cyBgOmZvY3VzYCBzZWxlY3RvciBzcGVjaWZpY2l0eS5cblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIDpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzLXZpc2libGUsXG5cdDpmb2N1cy12aXNpYmxlIHtcblx0XHRvdXRsaW5lOiAycHggc29saWQgJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0fVxuXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMtdmlzaWJsZSxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHRleHRhcmVhOmZvY3VzLXZpc2libGUsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cy12aXNpYmxlLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgc2VsZWN0OmZvY3VzLXZpc2libGUsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMtdmlzaWJsZSxcblx0aW5wdXQ6Zm9jdXMtdmlzaWJsZSxcblx0dGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSxcblx0c2VsZWN0OmZvY3VzLXZpc2libGUge1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHR9XG5cblx0Ly8gUHJldmVudCBJRSBmcm9tIHB1dHRpbmcgZm9jdXMgc3R5bGVzIG9uIHRoZSBib2R5IG9yIGh0bWwuIFRoZXNlIHNlbGVjdG9yc1xuXHQvLyBzZXJ2ZSBhcyBhIGJsYWNrbGlzdCBmb3IgXCJ0aGluZ3Mgd2UndmUgZm91bmQgY2FuIGhhdmUgZm9jdXMgYnV0IHdlIGRvbid0IHdhbnRcIlxuXHRodG1sOmZvY3VzLFxuXHRib2R5OmZvY3VzLFxuXHRbcmVhZG9ubHldOmZvY3VzIHtcblx0XHRvdXRsaW5lOiBub25lO1xuXHR9XG5cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIGxpbmsgZWxlbWVudHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUxpbmtzIHtcblxuXHQvLyBSZW1vdmUgdGhlIGdyZXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG5cdGEge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBvdXRsaW5lIG9uIGZvY3VzZWQgbGlua3Mgd2hlbiB0aGV5IGFyZVxuXHQvLyBhbHNvIGFjdGl2ZSBvciBob3ZlcmVkIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuXHRhOmFjdGl2ZSxcblx0YTpob3ZlciB7XG5cdFx0b3V0bGluZS13aWR0aDogMDtcblx0fVxuXG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byB0ZXh0IHJlbGF0ZWQgZWxlbWVudHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZVRleHQge1xuXG5cdC8vIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBGaXJlZm94IDM5LS5cblx0Ly8gMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cblx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRhYmJyW3RpdGxlXSB7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMDsgLy8gWzFdXG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8vIFsyXVxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWNsYXJhdGlvbi1ibG9jay1uby1kdXBsaWNhdGUtcHJvcGVydGllc1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLy8gWzJdXG5cdH1cblxuXHQvLyBQcmV2ZW50IHRoZSBkdXBsaWNhdGUgYXBwbGljYXRpb24gb2YgYGJvbGRlcmAgYnkgdGhlIG5leHQgcnVsZSBpbiBTYWZhcmkgNi5cblx0Yixcblx0c3Ryb25nIHtcblx0XHRmb250LXdlaWdodDogaW5oZXJpdDtcblx0fVxuXG5cdC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG5cdGIsXG5cdHN0cm9uZyB7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGRlcjtcblx0fVxuXG5cdC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cblx0ZGZuIHtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdH1cblxuXHQvLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cblx0Ly8gYWxsIGJyb3dzZXJzLlxuXHRzdWIsXG5cdHN1cCB7XG5cdFx0Zm9udC1zaXplOiA3NSU7XG5cdFx0bGluZS1oZWlnaHQ6IDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcblx0fVxuXG5cdHN1YiB7XG5cdFx0Ym90dG9tOiAtMC4yNWVtO1xuXHR9XG5cblx0c3VwIHtcblx0XHR0b3A6IC0wLjVlbTtcblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gdGhlIGltYWdlIGVsZW1lbnRcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUltYWdlcyB7XG5cdC8vIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAtLlxuXHRpbWcge1xuXHRcdGJvcmRlci1zdHlsZTogbm9uZTtcblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gZm9ybSBlbGVtZW50c1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTm9ybWFsaXNlRm9ybXMge1xuXHQvLyBSZXN0b3JlIHRoZSBmb250IHdlaWdodCB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cblx0b3B0Z3JvdXAge1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHR9XG5cblx0Ly8gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG5cdC8vIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG5cdC8vIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cblx0YnV0dG9uLFxuXHRpbnB1dCwgICAvLyBbMV1cblx0c2VsZWN0IHsgLy8gWzJdXG5cdFx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIG1hcmdpbiBpbiBTYWZhcmkuXG5cdC8vIDEuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cblx0YnV0dG9uLFxuXHRpbnB1dCxcblx0c2VsZWN0LFxuXHR0ZXh0YXJlYSB7IC8vIFsxXVxuXHRcdG1hcmdpbjogMDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuXHQvLyAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG5cdGJ1dHRvbixcblx0c2VsZWN0IHsgLy8gWzFdXG5cdFx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdH1cblxuXHQvLyBDaGFuZ2UgdGhlIGN1cnNvciBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cblx0YnV0dG9uLFxuXHRbdHlwZT1cImJ1dHRvblwiXSxcblx0W3R5cGU9XCJyZXNldFwiXSxcblx0W3R5cGU9XCJzdWJtaXRcIl0ge1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxuXG5cdC8vIFJlc3RvcmUgdGhlIGRlZmF1bHQgY3Vyc29yIHRvIGRpc2FibGVkIGVsZW1lbnRzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuXHRbZGlzYWJsZWRdIHtcblx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuXHRidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5cdGlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcblx0XHRib3JkZXI6IDA7XG5cdFx0cGFkZGluZzogMDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUuXG5cdHRleHRhcmVhIHtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0fVxufVxuIiwiJG8tc2hhcmUtaXMtc2lsZW50OiBmYWxzZTtcbkBpbXBvcnQgJy4uL3NoYXJlZC9fZ2xvYmFscy5zY3NzJztcbkBpbXBvcnQgJ28tc2hhcmUvbWFpbi5zY3NzJztcbkBpbXBvcnQgJ28tZ3JpZC9tYWluJztcblxuLmctc2hhcmUuZy1zaGFyZS0tc2VwYXJhdGVkIGxpIHtcbiAgbWFyZ2luLWxlZnQ6IDE2cHg7XG59XG5cbi5nLXNoYXJlLmctc2hhcmUtLXNlcGFyYXRlZCBsaTpmaXJzdC1vZi10eXBlIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbkBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKFMpIHtcbiAgLmctc2hhcmUgLm8tc2hhcmVfX2ljb24tLXdoYXRzYXBwIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5nLXNoYXJlLS1zbWFsbCB7XG4gIC5vLXNoYXJlIC5vLXNoYXJlX19pY29uOjpiZWZvcmUge1xuICAgIHdpZHRoOiAyOHB4O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDtcbiAgfVxufVxuXG4uZy1zaGFyZS0tc21hbGwuZy1zaGFyZS0tc2VwYXJhdGVkIGxpIHtcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG59XG5cbi5nLXNoYXJlLS1zbWFsbC5nLXNoYXJlLS1zZXBhcmF0ZWQgbGk6Zmlyc3Qtb2YtdHlwZSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiOyAvLyBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBSdWJ5IGxvY2FsZSBpcyBub3Qgc2V0IHByb3Blcmx5XG4gICAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9wdWxsLzEwXG5cbkBpbXBvcnQgXCJAZmluYW5jaWFsLXRpbWVzL21hdGhcIjtcblxuLy8vIEJhc2UgZm9udCBzaXplIG9uIHRoZSBgPGJvZHk+YCBlbGVtZW50XG4vLy9cbi8vLyBEbyBub3Qgb3ZlcnJpZGUgdGhpcyB2YWx1ZSwgb3IgdGhpbmdzIHdpbGwgYnJlYWtcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMlxuLy8vIEBkZXByZWNhdGVkIFRoaXMgc2V0dGluZyB3aWxsIGJlIHJlbW92ZWQgaW4gc2Fzcy1tcSB2Ni4wLjBcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAdHlwZSBOdW1iZXIgKHVuaXQpXG4kbXEtYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vLyBSZXNwb25zaXZlIG1vZGVcbi8vL1xuLy8vIFNldCB0byBgZmFsc2VgIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IEBtZWRpYSBxdWVyaWVzLFxuLy8vIChJRSA8PSA4LCBGaXJlZm94IDw9IDMsIE9wZXJhIDw9IDkpXG4vLy9cbi8vLyBZb3UgY291bGQgY3JlYXRlIGEgc3R5bGVzaGVldCBzZXJ2ZWQgZXhjbHVzaXZlbHkgdG8gb2xkZXIgYnJvd3NlcnMsXG4vLy8gd2hlcmUgQG1lZGlhIHF1ZXJpZXMgYXJlIHJhc3Rlcml6ZWRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gb2xkLWllLnNjc3Ncbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBCb29sZWFuXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb2ZmIERpc2FibGVkIHJlc3BvbnNpdmUgbW9kZSBkb2N1bWVudGF0aW9uXG4kbXEtcmVzcG9uc2l2ZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJyZWFrcG9pbnQgbGlzdFxuLy8vXG4vLy8gTmFtZSB5b3VyIGJyZWFrcG9pbnRzIGluIGEgd2F5IHRoYXQgY3JlYXRlcyBhIHViaXF1aXRvdXMgbGFuZ3VhZ2Vcbi8vLyBhY3Jvc3MgdGVhbSBtZW1iZXJzLiBJdCB3aWxsIGltcHJvdmUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuXG4vLy8gc3Rha2Vob2xkZXJzLCBkZXNpZ25lcnMsIGRldmVsb3BlcnMsIGFuZCB0ZXN0ZXJzLlxuLy8vXG4vLy8gQHR5cGUgTWFwXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtYnJlYWtwb2ludHM6IChcbiAgICBtb2JpbGU6ICAzMjBweCxcbiAgICB0YWJsZXQ6ICA3NDBweCxcbiAgICBkZXNrdG9wOiA5ODBweCxcbiAgICB3aWRlOiAgICAxMzAwcHhcbikgIWRlZmF1bHQ7XG5cbi8vLyBTdGF0aWMgYnJlYWtwb2ludCAoZm9yIGZpeGVkLXdpZHRoIGxheW91dHMpXG4vLy9cbi8vLyBEZWZpbmUgdGhlIGJyZWFrcG9pbnQgZnJvbSAkbXEtYnJlYWtwb2ludHMgdGhhdCBzaG91bGRcbi8vLyBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgd2lkdGggZm9yIHRoZSBmaXhlZC13aWR0aCBsYXlvdXRcbi8vLyAoaS5lLiB3aGVuICRtcS1yZXNwb25zaXZlIGlzIHNldCB0byAnZmFsc2UnKSBpbiBhIG9sZC1pZS5zY3NzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIHRhYmxldC1vbmx5LnNjc3Ncbi8vLyAgLy9cbi8vLyAgLy8gSWdub3JlIGFsbCBzdHlsZXMgYWJvdmUgdGFibGV0IGJyZWFrcG9pbnQsXG4vLy8gIC8vIGFuZCBmaXggdGhlIHN0eWxlcyAoc3VjaCBhcyB0aGUgbGF5b3V0KSBhdCB0YWJsZXQgd2lkdGhcbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICAkbXEtc3RhdGljLWJyZWFrcG9pbnQ6IHRhYmxldDtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gdGFibGV0XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNhZGRpbmctY3VzdG9tLWJyZWFrcG9pbnRzIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1zdGF0aWMtYnJlYWtwb2ludDogZGVza3RvcCAhZGVmYXVsdDtcblxuLy8vIFNob3cgYnJlYWtwb2ludHMgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vL1xuLy8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXG4vLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGguIEZvciBleGFtcGxlOiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgJG1xLXNob3ctYnJlYWtwb2ludHM6IChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCk7XG4vLy8gICBAaW1wb3J0ICdwYXRoL3RvL21xJztcbi8vL1xuLy8vIEB0eXBlIG1hcFxuJG1xLXNob3ctYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuXG4vLy8gQ3VzdG9taXplIHRoZSBtZWRpYSB0eXBlIChmb3IgZXhhbXBsZTogYEBtZWRpYSBzY3JlZW5gIG9yIGBAbWVkaWEgcHJpbnRgKVxuLy8vIEJ5IGRlZmF1bHQgc2Fzcy1tcSB1c2VzIGFuIFwiYWxsXCIgbWVkaWEgdHlwZSAoYEBtZWRpYSBhbGwgYW5kIOKApmApXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2NoYW5naW5nLW1lZGlhLXR5cGUgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLW1lZGlhLXR5cGU6IGFsbCAhZGVmYXVsdDtcblxuLy8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRweCAtIHZhbHVlIHRvIGNvbnZlcnRcbi8vLyBAaWdub3JlIEBwYXJhbSB7TnVtYmVyfSAkYmFzZS1mb250LXNpemUgWyRtcS1iYXNlLWZvbnQtc2l6ZV0gLSBgPGJvZHk+YCBmb250IHNpemUgKGRlcHJlY2F0ZWQpXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICRmb250LXNpemUtaW4tZW1zOiBtcS1weDJlbSgxNnB4KTtcbi8vLyAgcCB7IGZvbnQtc2l6ZTogbXEtcHgyZW0oMTZweCk7IH1cbi8vL1xuLy8vIEByZXF1aXJlcyAkbXEtYmFzZS1mb250LXNpemVcbi8vLyBAcmV0dXJucyB7TnVtYmVyfVxuQGZ1bmN0aW9uIG1xLXB4MmVtKCRweCwgJGJhc2UtZm9udC1zaXplOiAkbXEtYmFzZS1mb250LXNpemUpIHtcbiAgICBAaWYgKCRtcS1iYXNlLWZvbnQtc2l6ZSAhPSAxNnB4KSB7XG4gICAgICAgIEB3YXJuIFwiT3ZlcnJpZGluZyAkbXEtYmFzZS1mb250LXNpemUgd2lsbCBicmVhayB0aGluZ3MsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjIuXCI7XG4gICAgfVxuICAgIEBpZiAoJGJhc2UtZm9udC1zaXplICE9IDE2cHgpIHtcbiAgICAgICAgQHdhcm4gXCJUaGUgJGJhc2UtZm9udC1zaXplIGFyZ3VtZW50IHdpbGwgYmUgcmVtb3ZlZCBpbiBzYXNzLW1xIHY2LjAuMCwgYXMgb3ZlcnJpZGluZyBpdCBicmVha3MgdGhpbmdzLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyLlwiO1xuICAgIH1cbiAgICBAaWYgdW5pdGxlc3MoJHB4KSB7XG4gICAgICAgIEB3YXJuIFwiQXNzdW1pbmcgI3skcHh9IHRvIGJlIGluIHBpeGVscywgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGl0IGludG8gcGl4ZWxzLlwiO1xuICAgICAgICBAcmV0dXJuIG1xLXB4MmVtKCRweCAqIDFweCwgJGJhc2UtZm9udC1zaXplKTtcbiAgICB9IEBlbHNlIGlmIHVuaXQoJHB4KSA9PSBlbSB7XG4gICAgICAgIEByZXR1cm4gJHB4O1xuICAgIH1cbiAgICBAcmV0dXJuIChkaXYoJHB4LCAkYmFzZS1mb250LXNpemUpKSAqIDFlbTtcbn1cblxuLy8vIEdldCBhIGJyZWFrcG9pbnQncyB3aWR0aFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludC4gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkdGFibGV0LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCh0YWJsZXQpO1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoZGVza3RvcCkpIHt9XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFZhbHVlIGluIHBpeGVsc1xuQGZ1bmN0aW9uIG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSB7XG4gICAgICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQHdhcm4gXCJCcmVha3BvaW50ICN7JG5hbWV9IHdhc24ndCBmb3VuZCBpbiAkYnJlYWtwb2ludHMuXCI7XG4gICAgfVxufVxuXG4vLy8gTWVkaWEgUXVlcnkgbWl4aW5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGZyb20gW2ZhbHNlXSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICR1bnRpbCBbZmFsc2VdIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGFuZCBbZmFsc2VdIC0gQWRkaXRpb25hbCBtZWRpYSBxdWVyeSBwYXJhbWV0ZXJzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZWRpYS10eXBlIFskbXEtbWVkaWEtdHlwZV0gLSBNZWRpYSB0eXBlOiBzY3JlZW4sIHByaW504oCmXG4vLy9cbi8vLyBAaWdub3JlIFVuZG9jdW1lbnRlZCBBUEksIGZvciBhZHZhbmNlZCB1c2Ugb25seTpcbi8vLyBAaWdub3JlIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgWyRtcS1icmVha3BvaW50c11cbi8vLyBAaWdub3JlIEBwYXJhbSB7U3RyaW5nfSAkc3RhdGljLWJyZWFrcG9pbnQgWyRtcS1zdGF0aWMtYnJlYWtwb2ludF1cbi8vL1xuLy8vIEBjb250ZW50IHN0eWxpbmcgcnVsZXMsIHdyYXBwZWQgaW50byBhIEBtZWRpYSBxdWVyeSB3aGVuICRyZXNwb25zaXZlIGlzIHRydWVcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1tZWRpYS10eXBlXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtcHgyZW1cbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1nZXQtYnJlYWtwb2ludC13aWR0aFxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb24tZGVmYXVsdCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogbW9iaWxlKSB7XG4vLy8gICAgICBjb2xvcjogcmVkO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkdW50aWw6IHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGJsdWU7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKG1vYmlsZSwgdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogZ3JlZW47XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiB0YWJsZXQsICRhbmQ6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknKSB7XG4vLy8gICAgICBjb2xvcjogdGVhbDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoOTUwcHgpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSh0YWJsZXQsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICAvLyBBZHZhbmNlZCB1c2U6XG4vLy8gICAgJG15LWJyZWFrcG9pbnRzOiAoTDogOTAwcHgsIFhMOiAxMjAwcHgpO1xuLy8vICAgIEBpbmNsdWRlIG1xKEwsICRicmVha3BvaW50czogJG15LWJyZWFrcG9pbnRzLCAkc3RhdGljLWJyZWFrcG9pbnQ6IEwpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgfVxuQG1peGluIG1xKFxuICAgICRmcm9tOiBmYWxzZSxcbiAgICAkdW50aWw6IGZhbHNlLFxuICAgICRhbmQ6IGZhbHNlLFxuICAgICRtZWRpYS10eXBlOiAkbXEtbWVkaWEtdHlwZSxcbiAgICAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cyxcbiAgICAkcmVzcG9uc2l2ZTogJG1xLXJlc3BvbnNpdmUsXG4gICAgJHN0YXRpYy1icmVha3BvaW50OiAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbikge1xuICAgICRtaW4td2lkdGg6IDA7XG4gICAgJG1heC13aWR0aDogMDtcbiAgICAkbWVkaWEtcXVlcnk6ICcnO1xuXG4gICAgLy8gRnJvbTogdGhpcyBicmVha3BvaW50IChpbmNsdXNpdmUpXG4gICAgQGlmICRmcm9tIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGZyb20pID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbSgkZnJvbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJGZyb20sICRicmVha3BvaW50cykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW50aWw6IHRoYXQgYnJlYWtwb2ludCAoZXhjbHVzaXZlKVxuICAgIEBpZiAkdW50aWwge1xuICAgICAgICBAaWYgdHlwZS1vZigkdW50aWwpID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbSgkdW50aWwpO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCR1bnRpbCwgJGJyZWFrcG9pbnRzKSkgLSAuMDFlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBkaXNhYmxlZCwgcmFzdGVyaXplIHRoZSBvdXRwdXQgb3V0c2lkZSBAbWVkaWEgYmxvY2tzXG4gICAgLy8gVGhlIGJyb3dzZXIgd2lsbCByZWx5IG9uIHRoZSBjYXNjYWRlIGl0c2VsZi5cbiAgICBAaWYgJHJlc3BvbnNpdmUgPT0gZmFsc2Uge1xuICAgICAgICAkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzdGF0aWMtYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgJHRhcmdldC13aWR0aDogbXEtcHgyZW0oJHN0YXRpYy1icmVha3BvaW50LXdpZHRoKTtcblxuICAgICAgICAvLyBPdXRwdXQgb25seSBydWxlcyB0aGF0IHN0YXJ0IGF0IG9yIHNwYW4gb3VyIHRhcmdldCB3aWR0aFxuICAgICAgICBAaWYgKFxuICAgICAgICAgICAgJGFuZCA9PSBmYWxzZVxuICAgICAgICAgICAgYW5kICRtaW4td2lkdGggPD0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgYW5kIChcbiAgICAgICAgICAgICAgICAkdW50aWwgPT0gZmFsc2Ugb3IgJG1heC13aWR0aCA+PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBhbmQgJG1lZGlhLXR5cGUgIT0gJ3ByaW50J1xuICAgICAgICApIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIG91dHB1dCBydWxlcyBpbnNpZGUgQG1lZGlhIHF1ZXJpZXNcbiAgICBAZWxzZSB7XG4gICAgICAgIEBpZiAkbWluLXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtaW4td2lkdGg6ICN7JG1pbi13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJG1heC13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWF4LXdpZHRoOiAjeyRtYXgtd2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRhbmQgICAgICAgICAgICB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgI3skYW5kfSc7IH1cblxuICAgICAgICAvLyBSZW1vdmUgdW5uZWNlc3NhcnkgbWVkaWEgcXVlcnkgcHJlZml4ICdhbGwgYW5kICdcbiAgICAgICAgQGlmICgkbWVkaWEtdHlwZSA9PSAnYWxsJyBhbmQgJG1lZGlhLXF1ZXJ5ICE9ICcnKSB7XG4gICAgICAgICAgICAkbWVkaWEtdHlwZTogJyc7XG4gICAgICAgICAgICAkbWVkaWEtcXVlcnk6IHN0ci1zbGljZSh1bnF1b3RlKCRtZWRpYS1xdWVyeSksIDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhICN7JG1lZGlhLXR5cGUgKyAkbWVkaWEtcXVlcnl9IHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLy8gUXVpY2sgc29ydFxuLy8vXG4vLy8gQGF1dGhvciBTYW0gUmljaGFyZHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gTGlzdCB0byBzb3J0XG4vLy8gQHJldHVybnMge0xpc3R9IFNvcnRlZCBMaXN0XG5AZnVuY3Rpb24gX21xLXF1aWNrLXNvcnQoJGxpc3QpIHtcbiAgICAkbGVzczogICgpO1xuICAgICRlcXVhbDogKCk7XG4gICAgJGxhcmdlOiAoKTtcblxuICAgIEBpZiBsZW5ndGgoJGxpc3QpID4gMSB7XG4gICAgICAgICRzZWVkOiBudGgoJGxpc3QsIGNlaWwoZGl2KGxlbmd0aCgkbGlzdCksIDIpKSk7XG5cbiAgICAgICAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgICAgICAgICAgQGlmICgkaXRlbSA9PSAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRlcXVhbDogYXBwZW5kKCRlcXVhbCwgJGl0ZW0pO1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPCAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRsZXNzOiBhcHBlbmQoJGxlc3MsICRpdGVtKTtcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtID4gJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkbGFyZ2U6IGFwcGVuZCgkbGFyZ2UsICRpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEByZXR1cm4gam9pbihqb2luKF9tcS1xdWljay1zb3J0KCRsZXNzKSwgJGVxdWFsKSwgX21xLXF1aWNrLXNvcnQoJGxhcmdlKSk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFNvcnQgYSBtYXAgYnkgdmFsdWVzICh3b3JrcyB3aXRoIG51bWJlcnMgb25seSlcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHNvcnRcbi8vLyBAcmV0dXJucyB7TWFwfSBNYXAgc29ydGVkIGJ5IHZhbHVlXG5AZnVuY3Rpb24gX21xLW1hcC1zb3J0LWJ5LXZhbHVlKCRtYXApIHtcbiAgICAkbWFwLXNvcnRlZDogKCk7XG4gICAgJG1hcC1rZXlzOiBtYXAta2V5cygkbWFwKTtcbiAgICAkbWFwLXZhbHVlczogbWFwLXZhbHVlcygkbWFwKTtcbiAgICAkbWFwLXZhbHVlcy1zb3J0ZWQ6IF9tcS1xdWljay1zb3J0KCRtYXAtdmFsdWVzKTtcblxuICAgIC8vIFJlb3JkZXIga2V5L3ZhbHVlIHBhaXJzIGJhc2VkIG9uIGtleSB2YWx1ZXNcbiAgICBAZWFjaCAkdmFsdWUgaW4gJG1hcC12YWx1ZXMtc29ydGVkIHtcbiAgICAgICAgJGluZGV4OiBpbmRleCgkbWFwLXZhbHVlcywgJHZhbHVlKTtcbiAgICAgICAgJGtleTogbnRoKCRtYXAta2V5cywgJGluZGV4KTtcbiAgICAgICAgJG1hcC1zb3J0ZWQ6IG1hcC1tZXJnZSgkbWFwLXNvcnRlZCwgKCRrZXk6ICR2YWx1ZSkpO1xuXG4gICAgICAgIC8vIFVuc2V0IHRoZSB2YWx1ZSBpbiAkbWFwLXZhbHVlcyB0byBwcmV2ZW50IHRoZSBsb29wXG4gICAgICAgIC8vIGZyb20gZmluZGluZyB0aGUgc2FtZSBpbmRleCB0d2ljZVxuICAgICAgICAkbWFwLXZhbHVlczogc2V0LW50aCgkbWFwLXZhbHVlcywgJGluZGV4LCAwKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRtYXAtc29ydGVkO1xufVxuXG4vLy8gQWRkIGEgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIEBpbmNsdWRlIG1xLWFkZC1icmVha3BvaW50KHR2c2NyZWVuLCAxOTIwcHgpO1xuLy8vICBAaW5jbHVkZSBtcSh0dnNjcmVlbikge31cbkBtaXhpbiBtcS1hZGQtYnJlYWtwb2ludCgkbmFtZSwgJHdpZHRoKSB7XG4gICAgJG5ldy1icmVha3BvaW50OiAoJG5hbWU6ICR3aWR0aCk7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJG1xLWJyZWFrcG9pbnRzLCAkbmV3LWJyZWFrcG9pbnQpICFnbG9iYWw7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1xLWJyZWFrcG9pbnRzKSAhZ2xvYmFsO1xufVxuXG4vLy8gU2hvdyB0aGUgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcCByaWdodCBjb3JuZXIgb2YgdGhlIHZpZXdwb3J0XG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hvdy1icmVha3BvaW50cyBbJG1xLXNob3ctYnJlYWtwb2ludHNdIC0gTGlzdCBvZiBicmVha3BvaW50cyB0byBzaG93IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy8gQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJG1xLWJyZWFrcG9pbnRzXSAtIEJyZWFrcG9pbnQgbmFtZXMgYW5kIHNpemVzXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc2hvdy1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGdsb2JhbCBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xuLy8vXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgY3VzdG9tIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHMoKEwsIFhMKSwgKFM6IDMwMHB4LCBMOiA4MDBweCwgWEw6IDEyMDBweCkpO1xuQG1peGluIG1xLXNob3ctYnJlYWtwb2ludHMoJHNob3ctYnJlYWtwb2ludHM6ICRtcS1zaG93LWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIGJvZHk6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZDRjhFMztcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgY29sb3I6ICNDMDk4NTM7XG4gICAgICAgIGZvbnQ6IHNtYWxsLWNhcHRpb247XG4gICAgICAgIHBhZGRpbmc6IDNweCA2cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHotaW5kZXg6IDEwMDtcblxuICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIGJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkIGJlIHNob3duXG4gICAgICAgIEBlYWNoICRzaG93LWJyZWFrcG9pbnQgaW4gJHNob3ctYnJlYWtwb2ludHMge1xuICAgICAgICAgICAgJHdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIiN7JHNob3ctYnJlYWtwb2ludH0g4omlICN7JHdpZHRofSAoI3ttcS1weDJlbSgkd2lkdGgpfSlcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGlmIGxlbmd0aCgkbXEtc2hvdy1icmVha3BvaW50cykgPiAwIHtcbiAgICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xufVxuIiwiLmJ5bGluZXMgdGltZSB7XG4gIGNvbG9yOiAjNjY2MDVjO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuIiwiQGltcG9ydCAnby1ncmlkL21haW4uc2Nzcyc7XG5cbiRoZWFkZXItaGVpZ2h0OiA1NnB4O1xuJGFydGljbGUtaGVhZC1tYXJnaW4tdG9wOiAxOHB4O1xuXG4vLyBPdmVycmlkZXNcblxuaGVhZGVyLm8taGVhZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuXG4ubGFyZ2UtdG9wcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBtYXJnaW4tdG9wOiAyMnB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKEwpIHtcbiAgICBtYXJnaW4tdG9wOiA1NHB4O1xuICB9XG5cbiAgJl9fdmlkZW8tYmFja2dyb3VuZCB7XG4gICAgaGVpZ2h0OiA3OHB4O1xuICAgIHdpZHRoOiAxNjVweDtcbiAgICBtYXJnaW46IDAgYXV0bztcblxuICAgIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKE0pIHtcbiAgICAgIGhlaWdodDogMTMwcHg7XG4gICAgICB3aWR0aDogMjgwcHg7XG4gICAgfVxuICAgIHZpZGVvIHtcbiAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgdG9wO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAtd2Via2l0LW1hc2staW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KHdoaXRlLCBibGFjayk7XG4gICAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIC1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICZfX3RpdGxlIHtcbiAgICBmb250LWZhbWlseTogRmluYW5jaWVyRGlzcGxheVdlYiwgR2VvcmdpYSwgc2VyaWY7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiAjMzMzMzMzO1xuICAgIG1hcmdpbjogMCAwIDhweDtcblxuICAgIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKEwpIHtcbiAgICAgIGZvbnQtc2l6ZTogNTZweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiA1NnB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICB9XG4gIH1cblxuICAmX19zdW1tYXJ5IHtcbiAgICBmb250LWZhbWlseTogJ01ldHJpY1dlYicsIHNhbnMtc2VyaWY7XG4gICAgY29sb3I6ICM2NjYwNWM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIG1hcmdpbjogMCAwIDMwcHggMDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oTCkge1xuICAgICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgIH1cbiAgfVxufVxuXG4uYnlsaW5lcyB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogMzZweDtcblxuICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbyhMKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogNDZweDtcbiAgfVxufVxuXG4udG9waWMge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBtYXJnaW46IDE2cHggMCA1cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbyhMKSB7XG4gICAgbWFyZ2luOiAyNHB4IDAgMTJweDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiOyAvLyBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBSdWJ5IGxvY2FsZSBpcyBub3Qgc2V0IHByb3Blcmx5XG4gICAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9wdWxsLzEwXG5cbkBpbXBvcnQgXCJAZmluYW5jaWFsLXRpbWVzL21hdGhcIjtcblxuLy8vIEJhc2UgZm9udCBzaXplIG9uIHRoZSBgPGJvZHk+YCBlbGVtZW50XG4vLy9cbi8vLyBEbyBub3Qgb3ZlcnJpZGUgdGhpcyB2YWx1ZSwgb3IgdGhpbmdzIHdpbGwgYnJlYWtcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMlxuLy8vIEBkZXByZWNhdGVkIFRoaXMgc2V0dGluZyB3aWxsIGJlIHJlbW92ZWQgaW4gc2Fzcy1tcSB2Ni4wLjBcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAdHlwZSBOdW1iZXIgKHVuaXQpXG4kbXEtYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vLyBSZXNwb25zaXZlIG1vZGVcbi8vL1xuLy8vIFNldCB0byBgZmFsc2VgIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IEBtZWRpYSBxdWVyaWVzLFxuLy8vIChJRSA8PSA4LCBGaXJlZm94IDw9IDMsIE9wZXJhIDw9IDkpXG4vLy9cbi8vLyBZb3UgY291bGQgY3JlYXRlIGEgc3R5bGVzaGVldCBzZXJ2ZWQgZXhjbHVzaXZlbHkgdG8gb2xkZXIgYnJvd3NlcnMsXG4vLy8gd2hlcmUgQG1lZGlhIHF1ZXJpZXMgYXJlIHJhc3Rlcml6ZWRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gb2xkLWllLnNjc3Ncbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBCb29sZWFuXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb2ZmIERpc2FibGVkIHJlc3BvbnNpdmUgbW9kZSBkb2N1bWVudGF0aW9uXG4kbXEtcmVzcG9uc2l2ZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJyZWFrcG9pbnQgbGlzdFxuLy8vXG4vLy8gTmFtZSB5b3VyIGJyZWFrcG9pbnRzIGluIGEgd2F5IHRoYXQgY3JlYXRlcyBhIHViaXF1aXRvdXMgbGFuZ3VhZ2Vcbi8vLyBhY3Jvc3MgdGVhbSBtZW1iZXJzLiBJdCB3aWxsIGltcHJvdmUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuXG4vLy8gc3Rha2Vob2xkZXJzLCBkZXNpZ25lcnMsIGRldmVsb3BlcnMsIGFuZCB0ZXN0ZXJzLlxuLy8vXG4vLy8gQHR5cGUgTWFwXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtYnJlYWtwb2ludHM6IChcbiAgICBtb2JpbGU6ICAzMjBweCxcbiAgICB0YWJsZXQ6ICA3NDBweCxcbiAgICBkZXNrdG9wOiA5ODBweCxcbiAgICB3aWRlOiAgICAxMzAwcHhcbikgIWRlZmF1bHQ7XG5cbi8vLyBTdGF0aWMgYnJlYWtwb2ludCAoZm9yIGZpeGVkLXdpZHRoIGxheW91dHMpXG4vLy9cbi8vLyBEZWZpbmUgdGhlIGJyZWFrcG9pbnQgZnJvbSAkbXEtYnJlYWtwb2ludHMgdGhhdCBzaG91bGRcbi8vLyBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgd2lkdGggZm9yIHRoZSBmaXhlZC13aWR0aCBsYXlvdXRcbi8vLyAoaS5lLiB3aGVuICRtcS1yZXNwb25zaXZlIGlzIHNldCB0byAnZmFsc2UnKSBpbiBhIG9sZC1pZS5zY3NzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIHRhYmxldC1vbmx5LnNjc3Ncbi8vLyAgLy9cbi8vLyAgLy8gSWdub3JlIGFsbCBzdHlsZXMgYWJvdmUgdGFibGV0IGJyZWFrcG9pbnQsXG4vLy8gIC8vIGFuZCBmaXggdGhlIHN0eWxlcyAoc3VjaCBhcyB0aGUgbGF5b3V0KSBhdCB0YWJsZXQgd2lkdGhcbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICAkbXEtc3RhdGljLWJyZWFrcG9pbnQ6IHRhYmxldDtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gdGFibGV0XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNhZGRpbmctY3VzdG9tLWJyZWFrcG9pbnRzIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1zdGF0aWMtYnJlYWtwb2ludDogZGVza3RvcCAhZGVmYXVsdDtcblxuLy8vIFNob3cgYnJlYWtwb2ludHMgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vL1xuLy8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXG4vLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGguIEZvciBleGFtcGxlOiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgJG1xLXNob3ctYnJlYWtwb2ludHM6IChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCk7XG4vLy8gICBAaW1wb3J0ICdwYXRoL3RvL21xJztcbi8vL1xuLy8vIEB0eXBlIG1hcFxuJG1xLXNob3ctYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuXG4vLy8gQ3VzdG9taXplIHRoZSBtZWRpYSB0eXBlIChmb3IgZXhhbXBsZTogYEBtZWRpYSBzY3JlZW5gIG9yIGBAbWVkaWEgcHJpbnRgKVxuLy8vIEJ5IGRlZmF1bHQgc2Fzcy1tcSB1c2VzIGFuIFwiYWxsXCIgbWVkaWEgdHlwZSAoYEBtZWRpYSBhbGwgYW5kIOKApmApXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2NoYW5naW5nLW1lZGlhLXR5cGUgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLW1lZGlhLXR5cGU6IGFsbCAhZGVmYXVsdDtcblxuLy8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRweCAtIHZhbHVlIHRvIGNvbnZlcnRcbi8vLyBAaWdub3JlIEBwYXJhbSB7TnVtYmVyfSAkYmFzZS1mb250LXNpemUgWyRtcS1iYXNlLWZvbnQtc2l6ZV0gLSBgPGJvZHk+YCBmb250IHNpemUgKGRlcHJlY2F0ZWQpXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICRmb250LXNpemUtaW4tZW1zOiBtcS1weDJlbSgxNnB4KTtcbi8vLyAgcCB7IGZvbnQtc2l6ZTogbXEtcHgyZW0oMTZweCk7IH1cbi8vL1xuLy8vIEByZXF1aXJlcyAkbXEtYmFzZS1mb250LXNpemVcbi8vLyBAcmV0dXJucyB7TnVtYmVyfVxuQGZ1bmN0aW9uIG1xLXB4MmVtKCRweCwgJGJhc2UtZm9udC1zaXplOiAkbXEtYmFzZS1mb250LXNpemUpIHtcbiAgICBAaWYgKCRtcS1iYXNlLWZvbnQtc2l6ZSAhPSAxNnB4KSB7XG4gICAgICAgIEB3YXJuIFwiT3ZlcnJpZGluZyAkbXEtYmFzZS1mb250LXNpemUgd2lsbCBicmVhayB0aGluZ3MsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjIuXCI7XG4gICAgfVxuICAgIEBpZiAoJGJhc2UtZm9udC1zaXplICE9IDE2cHgpIHtcbiAgICAgICAgQHdhcm4gXCJUaGUgJGJhc2UtZm9udC1zaXplIGFyZ3VtZW50IHdpbGwgYmUgcmVtb3ZlZCBpbiBzYXNzLW1xIHY2LjAuMCwgYXMgb3ZlcnJpZGluZyBpdCBicmVha3MgdGhpbmdzLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyLlwiO1xuICAgIH1cbiAgICBAaWYgdW5pdGxlc3MoJHB4KSB7XG4gICAgICAgIEB3YXJuIFwiQXNzdW1pbmcgI3skcHh9IHRvIGJlIGluIHBpeGVscywgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGl0IGludG8gcGl4ZWxzLlwiO1xuICAgICAgICBAcmV0dXJuIG1xLXB4MmVtKCRweCAqIDFweCwgJGJhc2UtZm9udC1zaXplKTtcbiAgICB9IEBlbHNlIGlmIHVuaXQoJHB4KSA9PSBlbSB7XG4gICAgICAgIEByZXR1cm4gJHB4O1xuICAgIH1cbiAgICBAcmV0dXJuIChkaXYoJHB4LCAkYmFzZS1mb250LXNpemUpKSAqIDFlbTtcbn1cblxuLy8vIEdldCBhIGJyZWFrcG9pbnQncyB3aWR0aFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludC4gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkdGFibGV0LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCh0YWJsZXQpO1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoZGVza3RvcCkpIHt9XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFZhbHVlIGluIHBpeGVsc1xuQGZ1bmN0aW9uIG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSB7XG4gICAgICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQHdhcm4gXCJCcmVha3BvaW50ICN7JG5hbWV9IHdhc24ndCBmb3VuZCBpbiAkYnJlYWtwb2ludHMuXCI7XG4gICAgfVxufVxuXG4vLy8gTWVkaWEgUXVlcnkgbWl4aW5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGZyb20gW2ZhbHNlXSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICR1bnRpbCBbZmFsc2VdIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGFuZCBbZmFsc2VdIC0gQWRkaXRpb25hbCBtZWRpYSBxdWVyeSBwYXJhbWV0ZXJzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZWRpYS10eXBlIFskbXEtbWVkaWEtdHlwZV0gLSBNZWRpYSB0eXBlOiBzY3JlZW4sIHByaW504oCmXG4vLy9cbi8vLyBAaWdub3JlIFVuZG9jdW1lbnRlZCBBUEksIGZvciBhZHZhbmNlZCB1c2Ugb25seTpcbi8vLyBAaWdub3JlIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgWyRtcS1icmVha3BvaW50c11cbi8vLyBAaWdub3JlIEBwYXJhbSB7U3RyaW5nfSAkc3RhdGljLWJyZWFrcG9pbnQgWyRtcS1zdGF0aWMtYnJlYWtwb2ludF1cbi8vL1xuLy8vIEBjb250ZW50IHN0eWxpbmcgcnVsZXMsIHdyYXBwZWQgaW50byBhIEBtZWRpYSBxdWVyeSB3aGVuICRyZXNwb25zaXZlIGlzIHRydWVcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1tZWRpYS10eXBlXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtcHgyZW1cbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1nZXQtYnJlYWtwb2ludC13aWR0aFxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb24tZGVmYXVsdCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogbW9iaWxlKSB7XG4vLy8gICAgICBjb2xvcjogcmVkO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkdW50aWw6IHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGJsdWU7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKG1vYmlsZSwgdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogZ3JlZW47XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiB0YWJsZXQsICRhbmQ6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknKSB7XG4vLy8gICAgICBjb2xvcjogdGVhbDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoOTUwcHgpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSh0YWJsZXQsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICAvLyBBZHZhbmNlZCB1c2U6XG4vLy8gICAgJG15LWJyZWFrcG9pbnRzOiAoTDogOTAwcHgsIFhMOiAxMjAwcHgpO1xuLy8vICAgIEBpbmNsdWRlIG1xKEwsICRicmVha3BvaW50czogJG15LWJyZWFrcG9pbnRzLCAkc3RhdGljLWJyZWFrcG9pbnQ6IEwpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgfVxuQG1peGluIG1xKFxuICAgICRmcm9tOiBmYWxzZSxcbiAgICAkdW50aWw6IGZhbHNlLFxuICAgICRhbmQ6IGZhbHNlLFxuICAgICRtZWRpYS10eXBlOiAkbXEtbWVkaWEtdHlwZSxcbiAgICAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cyxcbiAgICAkcmVzcG9uc2l2ZTogJG1xLXJlc3BvbnNpdmUsXG4gICAgJHN0YXRpYy1icmVha3BvaW50OiAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbikge1xuICAgICRtaW4td2lkdGg6IDA7XG4gICAgJG1heC13aWR0aDogMDtcbiAgICAkbWVkaWEtcXVlcnk6ICcnO1xuXG4gICAgLy8gRnJvbTogdGhpcyBicmVha3BvaW50IChpbmNsdXNpdmUpXG4gICAgQGlmICRmcm9tIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGZyb20pID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbSgkZnJvbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJGZyb20sICRicmVha3BvaW50cykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW50aWw6IHRoYXQgYnJlYWtwb2ludCAoZXhjbHVzaXZlKVxuICAgIEBpZiAkdW50aWwge1xuICAgICAgICBAaWYgdHlwZS1vZigkdW50aWwpID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbSgkdW50aWwpO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCR1bnRpbCwgJGJyZWFrcG9pbnRzKSkgLSAuMDFlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBkaXNhYmxlZCwgcmFzdGVyaXplIHRoZSBvdXRwdXQgb3V0c2lkZSBAbWVkaWEgYmxvY2tzXG4gICAgLy8gVGhlIGJyb3dzZXIgd2lsbCByZWx5IG9uIHRoZSBjYXNjYWRlIGl0c2VsZi5cbiAgICBAaWYgJHJlc3BvbnNpdmUgPT0gZmFsc2Uge1xuICAgICAgICAkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzdGF0aWMtYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgJHRhcmdldC13aWR0aDogbXEtcHgyZW0oJHN0YXRpYy1icmVha3BvaW50LXdpZHRoKTtcblxuICAgICAgICAvLyBPdXRwdXQgb25seSBydWxlcyB0aGF0IHN0YXJ0IGF0IG9yIHNwYW4gb3VyIHRhcmdldCB3aWR0aFxuICAgICAgICBAaWYgKFxuICAgICAgICAgICAgJGFuZCA9PSBmYWxzZVxuICAgICAgICAgICAgYW5kICRtaW4td2lkdGggPD0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgYW5kIChcbiAgICAgICAgICAgICAgICAkdW50aWwgPT0gZmFsc2Ugb3IgJG1heC13aWR0aCA+PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBhbmQgJG1lZGlhLXR5cGUgIT0gJ3ByaW50J1xuICAgICAgICApIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIG91dHB1dCBydWxlcyBpbnNpZGUgQG1lZGlhIHF1ZXJpZXNcbiAgICBAZWxzZSB7XG4gICAgICAgIEBpZiAkbWluLXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtaW4td2lkdGg6ICN7JG1pbi13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJG1heC13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWF4LXdpZHRoOiAjeyRtYXgtd2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRhbmQgICAgICAgICAgICB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgI3skYW5kfSc7IH1cblxuICAgICAgICAvLyBSZW1vdmUgdW5uZWNlc3NhcnkgbWVkaWEgcXVlcnkgcHJlZml4ICdhbGwgYW5kICdcbiAgICAgICAgQGlmICgkbWVkaWEtdHlwZSA9PSAnYWxsJyBhbmQgJG1lZGlhLXF1ZXJ5ICE9ICcnKSB7XG4gICAgICAgICAgICAkbWVkaWEtdHlwZTogJyc7XG4gICAgICAgICAgICAkbWVkaWEtcXVlcnk6IHN0ci1zbGljZSh1bnF1b3RlKCRtZWRpYS1xdWVyeSksIDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhICN7JG1lZGlhLXR5cGUgKyAkbWVkaWEtcXVlcnl9IHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLy8gUXVpY2sgc29ydFxuLy8vXG4vLy8gQGF1dGhvciBTYW0gUmljaGFyZHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gTGlzdCB0byBzb3J0XG4vLy8gQHJldHVybnMge0xpc3R9IFNvcnRlZCBMaXN0XG5AZnVuY3Rpb24gX21xLXF1aWNrLXNvcnQoJGxpc3QpIHtcbiAgICAkbGVzczogICgpO1xuICAgICRlcXVhbDogKCk7XG4gICAgJGxhcmdlOiAoKTtcblxuICAgIEBpZiBsZW5ndGgoJGxpc3QpID4gMSB7XG4gICAgICAgICRzZWVkOiBudGgoJGxpc3QsIGNlaWwoZGl2KGxlbmd0aCgkbGlzdCksIDIpKSk7XG5cbiAgICAgICAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgICAgICAgICAgQGlmICgkaXRlbSA9PSAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRlcXVhbDogYXBwZW5kKCRlcXVhbCwgJGl0ZW0pO1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPCAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRsZXNzOiBhcHBlbmQoJGxlc3MsICRpdGVtKTtcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtID4gJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkbGFyZ2U6IGFwcGVuZCgkbGFyZ2UsICRpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEByZXR1cm4gam9pbihqb2luKF9tcS1xdWljay1zb3J0KCRsZXNzKSwgJGVxdWFsKSwgX21xLXF1aWNrLXNvcnQoJGxhcmdlKSk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFNvcnQgYSBtYXAgYnkgdmFsdWVzICh3b3JrcyB3aXRoIG51bWJlcnMgb25seSlcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHNvcnRcbi8vLyBAcmV0dXJucyB7TWFwfSBNYXAgc29ydGVkIGJ5IHZhbHVlXG5AZnVuY3Rpb24gX21xLW1hcC1zb3J0LWJ5LXZhbHVlKCRtYXApIHtcbiAgICAkbWFwLXNvcnRlZDogKCk7XG4gICAgJG1hcC1rZXlzOiBtYXAta2V5cygkbWFwKTtcbiAgICAkbWFwLXZhbHVlczogbWFwLXZhbHVlcygkbWFwKTtcbiAgICAkbWFwLXZhbHVlcy1zb3J0ZWQ6IF9tcS1xdWljay1zb3J0KCRtYXAtdmFsdWVzKTtcblxuICAgIC8vIFJlb3JkZXIga2V5L3ZhbHVlIHBhaXJzIGJhc2VkIG9uIGtleSB2YWx1ZXNcbiAgICBAZWFjaCAkdmFsdWUgaW4gJG1hcC12YWx1ZXMtc29ydGVkIHtcbiAgICAgICAgJGluZGV4OiBpbmRleCgkbWFwLXZhbHVlcywgJHZhbHVlKTtcbiAgICAgICAgJGtleTogbnRoKCRtYXAta2V5cywgJGluZGV4KTtcbiAgICAgICAgJG1hcC1zb3J0ZWQ6IG1hcC1tZXJnZSgkbWFwLXNvcnRlZCwgKCRrZXk6ICR2YWx1ZSkpO1xuXG4gICAgICAgIC8vIFVuc2V0IHRoZSB2YWx1ZSBpbiAkbWFwLXZhbHVlcyB0byBwcmV2ZW50IHRoZSBsb29wXG4gICAgICAgIC8vIGZyb20gZmluZGluZyB0aGUgc2FtZSBpbmRleCB0d2ljZVxuICAgICAgICAkbWFwLXZhbHVlczogc2V0LW50aCgkbWFwLXZhbHVlcywgJGluZGV4LCAwKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRtYXAtc29ydGVkO1xufVxuXG4vLy8gQWRkIGEgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIEBpbmNsdWRlIG1xLWFkZC1icmVha3BvaW50KHR2c2NyZWVuLCAxOTIwcHgpO1xuLy8vICBAaW5jbHVkZSBtcSh0dnNjcmVlbikge31cbkBtaXhpbiBtcS1hZGQtYnJlYWtwb2ludCgkbmFtZSwgJHdpZHRoKSB7XG4gICAgJG5ldy1icmVha3BvaW50OiAoJG5hbWU6ICR3aWR0aCk7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJG1xLWJyZWFrcG9pbnRzLCAkbmV3LWJyZWFrcG9pbnQpICFnbG9iYWw7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1xLWJyZWFrcG9pbnRzKSAhZ2xvYmFsO1xufVxuXG4vLy8gU2hvdyB0aGUgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcCByaWdodCBjb3JuZXIgb2YgdGhlIHZpZXdwb3J0XG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hvdy1icmVha3BvaW50cyBbJG1xLXNob3ctYnJlYWtwb2ludHNdIC0gTGlzdCBvZiBicmVha3BvaW50cyB0byBzaG93IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy8gQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJG1xLWJyZWFrcG9pbnRzXSAtIEJyZWFrcG9pbnQgbmFtZXMgYW5kIHNpemVzXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc2hvdy1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGdsb2JhbCBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xuLy8vXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgY3VzdG9tIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHMoKEwsIFhMKSwgKFM6IDMwMHB4LCBMOiA4MDBweCwgWEw6IDEyMDBweCkpO1xuQG1peGluIG1xLXNob3ctYnJlYWtwb2ludHMoJHNob3ctYnJlYWtwb2ludHM6ICRtcS1zaG93LWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIGJvZHk6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZDRjhFMztcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgY29sb3I6ICNDMDk4NTM7XG4gICAgICAgIGZvbnQ6IHNtYWxsLWNhcHRpb247XG4gICAgICAgIHBhZGRpbmc6IDNweCA2cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHotaW5kZXg6IDEwMDtcblxuICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIGJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkIGJlIHNob3duXG4gICAgICAgIEBlYWNoICRzaG93LWJyZWFrcG9pbnQgaW4gJHNob3ctYnJlYWtwb2ludHMge1xuICAgICAgICAgICAgJHdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIiN7JHNob3ctYnJlYWtwb2ludH0g4omlICN7JHdpZHRofSAoI3ttcS1weDJlbSgkd2lkdGgpfSlcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGlmIGxlbmd0aCgkbXEtc2hvdy1icmVha3BvaW50cykgPiAwIHtcbiAgICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xufVxuIiwiLk1JRElTb3VuZHMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgIiwiQGltcG9ydCAnQGZpbmFuY2lhbC10aW1lcy9vLXR5cG9ncmFwaHkvbWFpbic7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28tZ3JpZC9tYWluJztcblxuLm11dGUsXG4ubXV0ZS5vLWZvcm1zLWZpZWxkIHtcbiAgbWFyZ2luOiAxMnB4IDA7XG5cbiAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IEwpIHtcbiAgICBtYXJnaW4tdG9wOiA5cHg7XG4gIH1cbn1cblxuLm11dGUgLm8tZm9ybXMtaW5wdXQtLXRvZ2dsZSB7XG4gIG1hcmdpbi10b3A6IDRweDtcbn1cblxuLm11dGUgLm8tZm9ybXMtaW5wdXQtLXRvZ2dsZSAuby1mb3Jtcy1pbnB1dF9fbGFiZWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAycHggNDVweCAycHggMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4td2lkdGg6IDExN3B4O1xuXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAyMy4zNzVlbSkge1xuICAgIHBhZGRpbmctcmlnaHQ6IDQycHg7XG4gICAgbWluLXdpZHRoOiAxMTRweDtcbiAgfVxufVxuXG4ubXV0ZSAuby1mb3Jtcy1pbnB1dC0tdG9nZ2xlIC5vLWZvcm1zLWlucHV0X19sYWJlbDpiZWZvcmUsXG4ubXV0ZSAuby1mb3Jtcy1pbnB1dC0tdG9nZ2xlIC5vLWZvcm1zLWlucHV0X19sYWJlbDphZnRlciB7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiBhdXRvO1xufVxuXG4ubXV0ZSAuby1mb3Jtcy1pbnB1dC0tdG9nZ2xlIC5vLWZvcm1zLWlucHV0X19sYWJlbDphZnRlciB7XG4gIHJpZ2h0OiAxNnB4O1xufVxuXG4vLyBGaXhlcyBzYWZhcmlcbi5tdXRlIC5vLWZvcm1zLWlucHV0LS10b2dnbGUgaW5wdXRbdHlwZT0nY2hlY2tib3gnXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgd2lkdGg6IDA7XG59XG5cbi5tdXRlIC5vLWZvcm1zLWlucHV0LS10b2dnbGUgaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkICsgLm8tZm9ybXMtaW5wdXRfX2xhYmVsOmFmdGVyIHtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IGF1dG87XG59XG5cbi5zb3VuZC1sZWdlbmQge1xuICBwYWRkaW5nOiAwO1xuICBmb250LWZhbWlseTogTWV0cmljV2ViLCBzYW5zLXNlcmlmO1xuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmMWU1O1xuXG4gICZfX3dyYXBwZXIge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTCkge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICB9XG4gIH1cblxuICAmX190b3Age1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IEwpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuICB9XG5cbiAgJi0tc3RpY2t5LFxuICAuc3RpY2t5LWhlYWRlci13cmFwcGVyLS1maXhlZCA+ICYtLXN0aWNreSB7XG4gICAgYm94LXNoYWRvdzogMHB4IDRweCA2cHggMHB4IHJnYmEoNzcsIDcyLCA2OSwgMC4xKSwgMHB4IDJweCAxcHggMHB4IHJnYmEoNzcsIDcyLCA2OSwgMC4yNCk7XG4gIH1cblxuICAmX19vbi1vZmYge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIH1cblxuICAmLS1zdGlja3kgJl9fd3JhcHBlcixcbiAgLnN0aWNreS1oZWFkZXItd3JhcHBlci0tZml4ZWQgPiAmLS1zdGlja3kgJl9fd3JhcHBlciB7XG4gICAgcGFkZGluZzogMCAxMHB4O1xuXG4gICAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IE0pIHtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTtcbiAgICAgIHdpZHRoOiA3NSU7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDIwcHgpICogMC43NSk7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTCkge1xuICAgICAgd2lkdGg6IDY2LjY2NyU7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDIwcHgpICogMC42NjY2Nyk7XG4gICAgICBwYWRkaW5nLXRvcDogNHB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IFhMKSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICB3aWR0aDogNjgwcHg7XG4gICAgfVxuICB9XG5cbiAgJi0tc3RpY2t5IHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJl9fdGl0bGUuby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtMyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuICAgIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBMKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZfX2ljb24uby1pY29ucy1pY29uIHtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA2cHg7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogMjMuMzc1ZW0pIHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgIH1cbiAgfVxuXG4gICZfX3RvZ2dsZVt0eXBlPSdidXR0b24nXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LWZhbWlseTogTWV0cmljV2ViO1xuICAgIG1hcmdpbjogNnB4IDA7XG4gICAgcGFkZGluZzogMTBweCA0MnB4IDEwcHggMjBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgJixcbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlLFxuICAgICY6Zm9jdXMsXG4gICAgJjp2aXNpdGVkIHtcbiAgICAgIGNvbG9yOiAjMzMzMDJlO1xuICAgIH1cblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAyMy4zNzVlbSkge1xuICAgICAgcGFkZGluZzogMTBweCAyOHB4IDEwcHggMTBweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTSkge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIH1cbiAgfVxuXG4gICZfX3RleHQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkdW50aWw6IEwpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBwYWRkaW5nOiAwIDAgNHB4O1xuICAgICAgbGVmdDogMHB4O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICByaWdodDogMHB4O1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTSkge1xuICAgICAgbWFyZ2luOiA2cHggYXV0byAwO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBMKSB7XG4gICAgICBtYXJnaW46IDEwcHggMCAwO1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxOHB4O1xuICAgIH1cbiAgfVxuXG4gICYtLW9wZW4gJl9fdGV4dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gICZfX2xpc3Qge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxuXG4gICZfX3RleHQtaW50cm8ge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtYXJnaW4tYm90dG9tOiA3cHg7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTSkge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IEwpIHtcbiAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBYTCkge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAyOHB4O1xuICAgIH1cbiAgfVxuXG4gICZfX2xpc3QtaXRlbSB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcblxuICAgIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBYTCkge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxOHB4O1xuICAgIH1cbiAgfVxuXG4gICZfX2J1dHRvbiB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2YyZGZjZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogMjZweDtcbiAgICBjb2xvcjogIzI2MmEzMztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogNnB4IDE0cHggNnB4IDMycHg7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG5cbiAgICAuby1pY29ucy1pY29uIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAycHg7XG4gICAgICB3aWR0aDogMzJweDtcbiAgICB9XG5cbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7IC8vIEZpeGVzIGFuIGlzc3VlIHdoZXJlIFJ1YnkgbG9jYWxlIGlzIG5vdCBzZXQgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL3B1bGwvMTBcblxuQGltcG9ydCBcIkBmaW5hbmNpYWwtdGltZXMvbWF0aFwiO1xuXG4vLy8gQmFzZSBmb250IHNpemUgb24gdGhlIGA8Ym9keT5gIGVsZW1lbnRcbi8vL1xuLy8vIERvIG5vdCBvdmVycmlkZSB0aGlzIHZhbHVlLCBvciB0aGluZ3Mgd2lsbCBicmVha1xuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyXG4vLy8gQGRlcHJlY2F0ZWQgVGhpcyBzZXR0aW5nIHdpbGwgYmUgcmVtb3ZlZCBpbiBzYXNzLW1xIHY2LjAuMFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE51bWJlciAodW5pdClcbiRtcS1iYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8vIFJlc3BvbnNpdmUgbW9kZVxuLy8vXG4vLy8gU2V0IHRvIGBmYWxzZWAgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgQG1lZGlhIHF1ZXJpZXMsXG4vLy8gKElFIDw9IDgsIEZpcmVmb3ggPD0gMywgT3BlcmEgPD0gOSlcbi8vL1xuLy8vIFlvdSBjb3VsZCBjcmVhdGUgYSBzdHlsZXNoZWV0IHNlcnZlZCBleGNsdXNpdmVseSB0byBvbGRlciBicm93c2Vycyxcbi8vLyB3aGVyZSBAbWVkaWEgcXVlcmllcyBhcmUgcmFzdGVyaXplZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBvbGQtaWUuc2Nzc1xuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vZmYgRGlzYWJsZWQgcmVzcG9uc2l2ZSBtb2RlIGRvY3VtZW50YXRpb25cbiRtcS1yZXNwb25zaXZlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBsaXN0XG4vLy9cbi8vLyBOYW1lIHlvdXIgYnJlYWtwb2ludHMgaW4gYSB3YXkgdGhhdCBjcmVhdGVzIGEgdWJpcXVpdG91cyBsYW5ndWFnZVxuLy8vIGFjcm9zcyB0ZWFtIG1lbWJlcnMuIEl0IHdpbGwgaW1wcm92ZSBjb21tdW5pY2F0aW9uIGJldHdlZW5cbi8vLyBzdGFrZWhvbGRlcnMsIGRlc2lnbmVycywgZGV2ZWxvcGVycywgYW5kIHRlc3RlcnMuXG4vLy9cbi8vLyBAdHlwZSBNYXBcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1icmVha3BvaW50czogKFxuICAgIG1vYmlsZTogIDMyMHB4LFxuICAgIHRhYmxldDogIDc0MHB4LFxuICAgIGRlc2t0b3A6IDk4MHB4LFxuICAgIHdpZGU6ICAgIDEzMDBweFxuKSAhZGVmYXVsdDtcblxuLy8vIFN0YXRpYyBicmVha3BvaW50IChmb3IgZml4ZWQtd2lkdGggbGF5b3V0cylcbi8vL1xuLy8vIERlZmluZSB0aGUgYnJlYWtwb2ludCBmcm9tICRtcS1icmVha3BvaW50cyB0aGF0IHNob3VsZFxuLy8vIGJlIHVzZWQgYXMgdGhlIHRhcmdldCB3aWR0aCBmb3IgdGhlIGZpeGVkLXdpZHRoIGxheW91dFxuLy8vIChpLmUuIHdoZW4gJG1xLXJlc3BvbnNpdmUgaXMgc2V0IHRvICdmYWxzZScpIGluIGEgb2xkLWllLnNjc3Ncbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gdGFibGV0LW9ubHkuc2Nzc1xuLy8vICAvL1xuLy8vICAvLyBJZ25vcmUgYWxsIHN0eWxlcyBhYm92ZSB0YWJsZXQgYnJlYWtwb2ludCxcbi8vLyAgLy8gYW5kIGZpeCB0aGUgc3R5bGVzIChzdWNoIGFzIHRoZSBsYXlvdXQpIGF0IHRhYmxldCB3aWR0aFxuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gICRtcS1zdGF0aWMtYnJlYWtwb2ludDogdGFibGV0O1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byB0YWJsZXRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2FkZGluZy1jdXN0b20tYnJlYWtwb2ludHMgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLXN0YXRpYy1icmVha3BvaW50OiBkZXNrdG9wICFkZWZhdWx0O1xuXG4vLy8gU2hvdyBicmVha3BvaW50cyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vXG4vLy8gSWYgeW91IHdhbnQgdG8gZGlzcGxheSB0aGUgY3VycmVudGx5IGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3Bcbi8vLyByaWdodCBjb3JuZXIgb2YgeW91ciBzaXRlIGR1cmluZyBkZXZlbG9wbWVudCwgYWRkIHRoZSBicmVha3BvaW50c1xuLy8vIHRvIHRoaXMgbGlzdCwgb3JkZXJlZCBieSB3aWR0aC4gRm9yIGV4YW1wbGU6IChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAkbXEtc2hvdy1icmVha3BvaW50czogKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKTtcbi8vLyAgIEBpbXBvcnQgJ3BhdGgvdG8vbXEnO1xuLy8vXG4vLy8gQHR5cGUgbWFwXG4kbXEtc2hvdy1icmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG5cbi8vLyBDdXN0b21pemUgdGhlIG1lZGlhIHR5cGUgKGZvciBleGFtcGxlOiBgQG1lZGlhIHNjcmVlbmAgb3IgYEBtZWRpYSBwcmludGApXG4vLy8gQnkgZGVmYXVsdCBzYXNzLW1xIHVzZXMgYW4gXCJhbGxcIiBtZWRpYSB0eXBlIChgQG1lZGlhIGFsbCBhbmQg4oCmYClcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjY2hhbmdpbmctbWVkaWEtdHlwZSBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtbWVkaWEtdHlwZTogYWxsICFkZWZhdWx0O1xuXG4vLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHB4IC0gdmFsdWUgdG8gY29udmVydFxuLy8vIEBpZ25vcmUgQHBhcmFtIHtOdW1iZXJ9ICRiYXNlLWZvbnQtc2l6ZSBbJG1xLWJhc2UtZm9udC1zaXplXSAtIGA8Ym9keT5gIGZvbnQgc2l6ZSAoZGVwcmVjYXRlZClcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJGZvbnQtc2l6ZS1pbi1lbXM6IG1xLXB4MmVtKDE2cHgpO1xuLy8vICBwIHsgZm9udC1zaXplOiBtcS1weDJlbSgxNnB4KTsgfVxuLy8vXG4vLy8gQHJlcXVpcmVzICRtcS1iYXNlLWZvbnQtc2l6ZVxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9XG5AZnVuY3Rpb24gbXEtcHgyZW0oJHB4LCAkYmFzZS1mb250LXNpemU6ICRtcS1iYXNlLWZvbnQtc2l6ZSkge1xuICAgIEBpZiAoJG1xLWJhc2UtZm9udC1zaXplICE9IDE2cHgpIHtcbiAgICAgICAgQHdhcm4gXCJPdmVycmlkaW5nICRtcS1iYXNlLWZvbnQtc2l6ZSB3aWxsIGJyZWFrIHRoaW5ncywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMi5cIjtcbiAgICB9XG4gICAgQGlmICgkYmFzZS1mb250LXNpemUgIT0gMTZweCkge1xuICAgICAgICBAd2FybiBcIlRoZSAkYmFzZS1mb250LXNpemUgYXJndW1lbnQgd2lsbCBiZSByZW1vdmVkIGluIHNhc3MtbXEgdjYuMC4wLCBhcyBvdmVycmlkaW5nIGl0IGJyZWFrcyB0aGluZ3MsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjIuXCI7XG4gICAgfVxuICAgIEBpZiB1bml0bGVzcygkcHgpIHtcbiAgICAgICAgQHdhcm4gXCJBc3N1bWluZyAjeyRweH0gdG8gYmUgaW4gcGl4ZWxzLCBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgaXQgaW50byBwaXhlbHMuXCI7XG4gICAgICAgIEByZXR1cm4gbXEtcHgyZW0oJHB4ICogMXB4LCAkYmFzZS1mb250LXNpemUpO1xuICAgIH0gQGVsc2UgaWYgdW5pdCgkcHgpID09IGVtIHtcbiAgICAgICAgQHJldHVybiAkcHg7XG4gICAgfVxuICAgIEByZXR1cm4gKGRpdigkcHgsICRiYXNlLWZvbnQtc2l6ZSkpICogMWVtO1xufVxuXG4vLy8gR2V0IGEgYnJlYWtwb2ludCdzIHdpZHRoXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50LiBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICR0YWJsZXQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKHRhYmxldCk7XG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aChkZXNrdG9wKSkge31cbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVmFsdWUgaW4gcGl4ZWxzXG5AZnVuY3Rpb24gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJG5hbWUsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIHtcbiAgICAgICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgICBAd2FybiBcIkJyZWFrcG9pbnQgI3skbmFtZX0gd2Fzbid0IGZvdW5kIGluICRicmVha3BvaW50cy5cIjtcbiAgICB9XG59XG5cbi8vLyBNZWRpYSBRdWVyeSBtaXhpblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkZnJvbSBbZmFsc2VdIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJHVudGlsIFtmYWxzZV0gLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkYW5kIFtmYWxzZV0gLSBBZGRpdGlvbmFsIG1lZGlhIHF1ZXJ5IHBhcmFtZXRlcnNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lZGlhLXR5cGUgWyRtcS1tZWRpYS10eXBlXSAtIE1lZGlhIHR5cGU6IHNjcmVlbiwgcHJpbnTigKZcbi8vL1xuLy8vIEBpZ25vcmUgVW5kb2N1bWVudGVkIEFQSSwgZm9yIGFkdmFuY2VkIHVzZSBvbmx5OlxuLy8vIEBpZ25vcmUgQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJG1xLWJyZWFrcG9pbnRzXVxuLy8vIEBpZ25vcmUgQHBhcmFtIHtTdHJpbmd9ICRzdGF0aWMtYnJlYWtwb2ludCBbJG1xLXN0YXRpYy1icmVha3BvaW50XVxuLy8vXG4vLy8gQGNvbnRlbnQgc3R5bGluZyBydWxlcywgd3JhcHBlZCBpbnRvIGEgQG1lZGlhIHF1ZXJ5IHdoZW4gJHJlc3BvbnNpdmUgaXMgdHJ1ZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLW1lZGlhLXR5cGVcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1weDJlbVxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLWdldC1icmVha3BvaW50LXdpZHRoXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vbi1kZWZhdWx0IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLmVsZW1lbnQge1xuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiBtb2JpbGUpIHtcbi8vLyAgICAgIGNvbG9yOiByZWQ7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCR1bnRpbDogdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogYmx1ZTtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEobW9iaWxlLCB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBncmVlbjtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IHRhYmxldCwgJGFuZDogJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScpIHtcbi8vLyAgICAgIGNvbG9yOiB0ZWFsO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSg5NTBweCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKHRhYmxldCwgJG1lZGlhLXR5cGU6IHNjcmVlbikge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIC8vIEFkdmFuY2VkIHVzZTpcbi8vLyAgICAkbXktYnJlYWtwb2ludHM6IChMOiA5MDBweCwgWEw6IDEyMDBweCk7XG4vLy8gICAgQGluY2x1ZGUgbXEoTCwgJGJyZWFrcG9pbnRzOiAkbXktYnJlYWtwb2ludHMsICRzdGF0aWMtYnJlYWtwb2ludDogTCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICB9XG5AbWl4aW4gbXEoXG4gICAgJGZyb206IGZhbHNlLFxuICAgICR1bnRpbDogZmFsc2UsXG4gICAgJGFuZDogZmFsc2UsXG4gICAgJG1lZGlhLXR5cGU6ICRtcS1tZWRpYS10eXBlLFxuICAgICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzLFxuICAgICRyZXNwb25zaXZlOiAkbXEtcmVzcG9uc2l2ZSxcbiAgICAkc3RhdGljLWJyZWFrcG9pbnQ6ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuKSB7XG4gICAgJG1pbi13aWR0aDogMDtcbiAgICAkbWF4LXdpZHRoOiAwO1xuICAgICRtZWRpYS1xdWVyeTogJyc7XG5cbiAgICAvLyBGcm9tOiB0aGlzIGJyZWFrcG9pbnQgKGluY2x1c2l2ZSlcbiAgICBAaWYgJGZyb20ge1xuICAgICAgICBAaWYgdHlwZS1vZigkZnJvbSkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKCRmcm9tKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkZnJvbSwgJGJyZWFrcG9pbnRzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbnRpbDogdGhhdCBicmVha3BvaW50IChleGNsdXNpdmUpXG4gICAgQGlmICR1bnRpbCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCR1bnRpbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKCR1bnRpbCk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHVudGlsLCAkYnJlYWtwb2ludHMpKSAtIC4wMWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGRpc2FibGVkLCByYXN0ZXJpemUgdGhlIG91dHB1dCBvdXRzaWRlIEBtZWRpYSBibG9ja3NcbiAgICAvLyBUaGUgYnJvd3NlciB3aWxsIHJlbHkgb24gdGhlIGNhc2NhZGUgaXRzZWxmLlxuICAgIEBpZiAkcmVzcG9uc2l2ZSA9PSBmYWxzZSB7XG4gICAgICAgICRzdGF0aWMtYnJlYWtwb2ludC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHN0YXRpYy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAkdGFyZ2V0LXdpZHRoOiBtcS1weDJlbSgkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGgpO1xuXG4gICAgICAgIC8vIE91dHB1dCBvbmx5IHJ1bGVzIHRoYXQgc3RhcnQgYXQgb3Igc3BhbiBvdXIgdGFyZ2V0IHdpZHRoXG4gICAgICAgIEBpZiAoXG4gICAgICAgICAgICAkYW5kID09IGZhbHNlXG4gICAgICAgICAgICBhbmQgJG1pbi13aWR0aCA8PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICBhbmQgKFxuICAgICAgICAgICAgICAgICR1bnRpbCA9PSBmYWxzZSBvciAkbWF4LXdpZHRoID49ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGFuZCAkbWVkaWEtdHlwZSAhPSAncHJpbnQnXG4gICAgICAgICkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZW5hYmxlZCwgb3V0cHV0IHJ1bGVzIGluc2lkZSBAbWVkaWEgcXVlcmllc1xuICAgIEBlbHNlIHtcbiAgICAgICAgQGlmICRtaW4td2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi13aWR0aDogI3skbWluLXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkbWF4LXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtYXgtd2lkdGg6ICN7JG1heC13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJGFuZCAgICAgICAgICAgIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAjeyRhbmR9JzsgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSBtZWRpYSBxdWVyeSBwcmVmaXggJ2FsbCBhbmQgJ1xuICAgICAgICBAaWYgKCRtZWRpYS10eXBlID09ICdhbGwnIGFuZCAkbWVkaWEtcXVlcnkgIT0gJycpIHtcbiAgICAgICAgICAgICRtZWRpYS10eXBlOiAnJztcbiAgICAgICAgICAgICRtZWRpYS1xdWVyeTogc3RyLXNsaWNlKHVucXVvdGUoJG1lZGlhLXF1ZXJ5KSwgNik7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgI3skbWVkaWEtdHlwZSArICRtZWRpYS1xdWVyeX0ge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vLyBRdWljayBzb3J0XG4vLy9cbi8vLyBAYXV0aG9yIFNhbSBSaWNoYXJkc1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBMaXN0IHRvIHNvcnRcbi8vLyBAcmV0dXJucyB7TGlzdH0gU29ydGVkIExpc3RcbkBmdW5jdGlvbiBfbXEtcXVpY2stc29ydCgkbGlzdCkge1xuICAgICRsZXNzOiAgKCk7XG4gICAgJGVxdWFsOiAoKTtcbiAgICAkbGFyZ2U6ICgpO1xuXG4gICAgQGlmIGxlbmd0aCgkbGlzdCkgPiAxIHtcbiAgICAgICAgJHNlZWQ6IG50aCgkbGlzdCwgY2VpbChkaXYobGVuZ3RoKCRsaXN0KSwgMikpKTtcblxuICAgICAgICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgICAgICAgICBAaWYgKCRpdGVtID09ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGVxdWFsOiBhcHBlbmQoJGVxdWFsLCAkaXRlbSk7XG4gICAgICAgICAgICB9IEBlbHNlIGlmICgkaXRlbSA8ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGxlc3M6IGFwcGVuZCgkbGVzcywgJGl0ZW0pO1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPiAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRsYXJnZTogYXBwZW5kKCRsYXJnZSwgJGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQHJldHVybiBqb2luKGpvaW4oX21xLXF1aWNrLXNvcnQoJGxlc3MpLCAkZXF1YWwpLCBfbXEtcXVpY2stc29ydCgkbGFyZ2UpKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRsaXN0O1xufVxuXG4vLy8gU29ydCBhIG1hcCBieSB2YWx1ZXMgKHdvcmtzIHdpdGggbnVtYmVycyBvbmx5KVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gc29ydFxuLy8vIEByZXR1cm5zIHtNYXB9IE1hcCBzb3J0ZWQgYnkgdmFsdWVcbkBmdW5jdGlvbiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1hcCkge1xuICAgICRtYXAtc29ydGVkOiAoKTtcbiAgICAkbWFwLWtleXM6IG1hcC1rZXlzKCRtYXApO1xuICAgICRtYXAtdmFsdWVzOiBtYXAtdmFsdWVzKCRtYXApO1xuICAgICRtYXAtdmFsdWVzLXNvcnRlZDogX21xLXF1aWNrLXNvcnQoJG1hcC12YWx1ZXMpO1xuXG4gICAgLy8gUmVvcmRlciBrZXkvdmFsdWUgcGFpcnMgYmFzZWQgb24ga2V5IHZhbHVlc1xuICAgIEBlYWNoICR2YWx1ZSBpbiAkbWFwLXZhbHVlcy1zb3J0ZWQge1xuICAgICAgICAkaW5kZXg6IGluZGV4KCRtYXAtdmFsdWVzLCAkdmFsdWUpO1xuICAgICAgICAka2V5OiBudGgoJG1hcC1rZXlzLCAkaW5kZXgpO1xuICAgICAgICAkbWFwLXNvcnRlZDogbWFwLW1lcmdlKCRtYXAtc29ydGVkLCAoJGtleTogJHZhbHVlKSk7XG5cbiAgICAgICAgLy8gVW5zZXQgdGhlIHZhbHVlIGluICRtYXAtdmFsdWVzIHRvIHByZXZlbnQgdGhlIGxvb3BcbiAgICAgICAgLy8gZnJvbSBmaW5kaW5nIHRoZSBzYW1lIGluZGV4IHR3aWNlXG4gICAgICAgICRtYXAtdmFsdWVzOiBzZXQtbnRoKCRtYXAtdmFsdWVzLCAkaW5kZXgsIDApO1xuICAgIH1cblxuICAgIEByZXR1cm4gJG1hcC1zb3J0ZWQ7XG59XG5cbi8vLyBBZGQgYSBicmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBicmVha3BvaW50XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgQGluY2x1ZGUgbXEtYWRkLWJyZWFrcG9pbnQodHZzY3JlZW4sIDE5MjBweCk7XG4vLy8gIEBpbmNsdWRlIG1xKHR2c2NyZWVuKSB7fVxuQG1peGluIG1xLWFkZC1icmVha3BvaW50KCRuYW1lLCAkd2lkdGgpIHtcbiAgICAkbmV3LWJyZWFrcG9pbnQ6ICgkbmFtZTogJHdpZHRoKTtcbiAgICAkbXEtYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkbXEtYnJlYWtwb2ludHMsICRuZXctYnJlYWtwb2ludCkgIWdsb2JhbDtcbiAgICAkbXEtYnJlYWtwb2ludHM6IF9tcS1tYXAtc29ydC1ieS12YWx1ZSgkbXEtYnJlYWtwb2ludHMpICFnbG9iYWw7XG59XG5cbi8vLyBTaG93IHRoZSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lciBvZiB0aGUgdmlld3BvcnRcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaG93LWJyZWFrcG9pbnRzIFskbXEtc2hvdy1icmVha3BvaW50c10gLSBMaXN0IG9mIGJyZWFrcG9pbnRzIHRvIHNob3cgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vLyBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzIFskbXEtYnJlYWtwb2ludHNdIC0gQnJlYWtwb2ludCBuYW1lcyBhbmQgc2l6ZXNcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zaG93LWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgZ2xvYmFsIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG4vLy9cbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBjdXN0b20gc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cygoTCwgWEwpLCAoUzogMzAwcHgsIEw6IDgwMHB4LCBYTDogMTIwMHB4KSk7XG5AbWl4aW4gbXEtc2hvdy1icmVha3BvaW50cygkc2hvdy1icmVha3BvaW50czogJG1xLXNob3ctYnJlYWtwb2ludHMsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgYm9keTpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGOEUzO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBjb2xvcjogI0MwOTg1MztcbiAgICAgICAgZm9udDogc21hbGwtY2FwdGlvbjtcbiAgICAgICAgcGFkZGluZzogM3B4IDZweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgei1pbmRleDogMTAwO1xuXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCB0aGUgYnJlYWtwb2ludHMgdGhhdCBzaG91bGQgYmUgc2hvd25cbiAgICAgICAgQGVhY2ggJHNob3ctYnJlYWtwb2ludCBpbiAkc2hvdy1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAkd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcSgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHM6ICRicmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiI3skc2hvdy1icmVha3BvaW50fSDiiaUgI3skd2lkdGh9ICgje21xLXB4MmVtKCR3aWR0aCl9KVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaWYgbGVuZ3RoKCRtcS1zaG93LWJyZWFrcG9pbnRzKSA+IDAge1xuICAgIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG59XG4iLCIuY2hhcnQtY29udGFpbmVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuQGtleWZyYW1lcyBzY2FsZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDQpO1xuICAgIHN0cm9rZS13aWR0aDogMC41O1xuICAgIGZpbGw6ICNmZmZmZmY7XG4gIH1cbiAgMTklIHtcbiAgICBmaWxsOiAjZmZmZmZmO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICBzdHJva2Utd2lkdGg6IDI7XG4gICAgZmlsbDogIzBmNTQ5OTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgc3Ryb2tlLXdpZHRoOiAyO1xuICB9XG59XG4iLCIkc3lzdGVtLWNvZGU6ICdpZy1wcm9qZWN0cyc7XG5AaW1wb3J0ICdvLWdyaWQvbWFpbi5zY3NzJztcbkBpbXBvcnQgJ28taWNvbnMvbWFpbic7XG5cbi55aWVsZC1jdXJ2ZSB7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTSkge1xuICAgIG1hcmdpbi1ib3R0b206IDQ2cHg7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbiAgfVxuXG4gIHAgKyAmIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAmX19mbG91cmlzaCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcblxuICAgIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBNKSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0NnB4O1xuICAgICAgbWFyZ2luLXRvcDogMHB4O1xuICAgIH1cbiAgfVxuXG4gICZfX3RpdGxlIHtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgZm9udC1mYW1pbHk6ICdNZXRyaWNXZWInO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IC0zM3B4O1xuICAgIG1hcmdpbi10b3A6IDA7XG5cbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTSkge1xuICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gICAgfVxuICB9XG5cbiAgJl9fc3BsaXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTSkge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG4gIH1cblxuICAmX19oYWxmIHtcbiAgICAmOmZpcnN0LWNoaWxkIC5jaGFydC1jb250YWluZXIge1xuICAgICAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJHVudGlsOiBNKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICB9XG4gICAgfVxuICAgICY6bnRoLWNoaWxkKDIpIHtcbiAgICAgIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCR1bnRpbDogTSkge1xuICAgICAgICBtYXJnaW4tdG9wOiAtMzJweDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IE0pIHtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgfVxuICB9XG5cbiAgJl9fYnV0dG9uLS1oaWRkZW4tdGV4dCB7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgICBjbGlwLXBhdGg6IGluc2V0KDUwJSk7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB3aWR0aDogMXB4O1xuICB9XG5cbiAgJl9fYnV0dG9ucy13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgJl9fY29udHJvbHMtd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTSkge1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIH1cblxuICAgICYtLWRpc2FibGVkIHtcbiAgICAgIG9wYWNpdHk6IDAuNDtcblxuICAgICAgLm8tYnV0dG9uc1tkaXNhYmxlZF0ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5icmVhay1vdXQtZnVsbC13aWR0aCAmX19jb250cm9scy13cmFwcGVyIHtcbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTCkge1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgd2lkdGg6IDY2LjY2NyU7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSArIDIwcHgpICogMC42NjY2Nyk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwcHgpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBYTCkge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgd2lkdGg6IDY4MHB4O1xuICAgIH1cbiAgfVxuXG4gICZfX2J1dHRvbi13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDIzLjM3NWVtKSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICB9XG4gIH1cblxuICAmX19idXR0b24tbGFiZWwge1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBmb250LWZhbWlseTogJ01ldHJpY1dlYicsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgIG1hcmdpbi10b3A6IDZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHdpZHRoOiA0NnB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogMjMuMzc1ZW0pIHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl9fYnV0dG9uLm8tYnV0dG9ucyB7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICB9XG5cbiAgJl9fYnV0dG9uLS1iYWNrLFxuICAmX19idXR0b24tLWZvcndhcmQge1xuICAgIEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJGljb24tbmFtZTogJ3JlZnJlc2gnLCAkY29sb3I6ICNmZmZmZmYsICRzaXplOiA0OCk7XG4gIH1cblxuICAmX19idXR0b24tLWJhY2sge1xuICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcbiAgfVxuICAuby1mb3Jtcy1pbnB1dC0tcmFkaW8tYm94IGxhYmVsIC5vLWZvcm1zLWlucHV0X19sYWJlbCB7XG4gICAgd2lkdGg6IDQ2cHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBoZWlnaHQ6IDQycHg7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogMjMuMzc1ZW0pIHtcbiAgICAgIHdpZHRoOiA0MHB4O1xuICAgIH1cbiAgfVxuXG4gIC5vLWZvcm1zLWlucHV0LS1yYWRpby1ib3ggaW5wdXRbdHlwZT0ncmFkaW8nXSArIC5vLWZvcm1zLWlucHV0X19sYWJlbCB7XG4gICAgY29sb3I6ICMzMzM7XG4gIH1cblxuICAuby1mb3Jtcy1pbnB1dC0tcmFkaW8tYm94IGlucHV0W3R5cGU9J3JhZGlvJ106Y2hlY2tlZCArIC5vLWZvcm1zLWlucHV0X19sYWJlbCB7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gIC5vLWZvcm1zLWlucHV0LS1yYWRpby1ib3hcbiAgICBpbnB1dFt0eXBlPSdyYWRpbyddOm5vdCg6Y2hlY2tlZCk6bm90KDpkaXNhYmxlZCk6aG92ZXJcbiAgICArIC5vLWZvcm1zLWlucHV0X19sYWJlbCB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgfVxuXG4gIC5vLWZvcm1zLWlucHV0LS1yYWRpby1ib3ggbGFiZWwge1xuICAgIGZsZXgtZ3JvdzogMDtcbiAgICBtaW4td2lkdGg6IHVuc2V0O1xuICB9XG5cbiAgLm8tZm9ybXMtaW5wdXQge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cblxuICAuby1mb3Jtcy1maWVsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTSkge1xuICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gICAgfVxuICB9XG5cbiAgJl9fc3ByZWFkcy1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gICZfX2Zvb3Rub3RlIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgZm9udC1mYW1pbHk6IE1ldHJpY1dlYiwgc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGNvbG9yOiAjNjY2MDVjO1xuICAgIG1hcmdpbi10b3A6IC0xMHB4O1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7IC8vIEZpeGVzIGFuIGlzc3VlIHdoZXJlIFJ1YnkgbG9jYWxlIGlzIG5vdCBzZXQgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL3B1bGwvMTBcblxuQGltcG9ydCBcIkBmaW5hbmNpYWwtdGltZXMvbWF0aFwiO1xuXG4vLy8gQmFzZSBmb250IHNpemUgb24gdGhlIGA8Ym9keT5gIGVsZW1lbnRcbi8vL1xuLy8vIERvIG5vdCBvdmVycmlkZSB0aGlzIHZhbHVlLCBvciB0aGluZ3Mgd2lsbCBicmVha1xuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyXG4vLy8gQGRlcHJlY2F0ZWQgVGhpcyBzZXR0aW5nIHdpbGwgYmUgcmVtb3ZlZCBpbiBzYXNzLW1xIHY2LjAuMFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE51bWJlciAodW5pdClcbiRtcS1iYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8vIFJlc3BvbnNpdmUgbW9kZVxuLy8vXG4vLy8gU2V0IHRvIGBmYWxzZWAgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgQG1lZGlhIHF1ZXJpZXMsXG4vLy8gKElFIDw9IDgsIEZpcmVmb3ggPD0gMywgT3BlcmEgPD0gOSlcbi8vL1xuLy8vIFlvdSBjb3VsZCBjcmVhdGUgYSBzdHlsZXNoZWV0IHNlcnZlZCBleGNsdXNpdmVseSB0byBvbGRlciBicm93c2Vycyxcbi8vLyB3aGVyZSBAbWVkaWEgcXVlcmllcyBhcmUgcmFzdGVyaXplZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBvbGQtaWUuc2Nzc1xuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vZmYgRGlzYWJsZWQgcmVzcG9uc2l2ZSBtb2RlIGRvY3VtZW50YXRpb25cbiRtcS1yZXNwb25zaXZlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBsaXN0XG4vLy9cbi8vLyBOYW1lIHlvdXIgYnJlYWtwb2ludHMgaW4gYSB3YXkgdGhhdCBjcmVhdGVzIGEgdWJpcXVpdG91cyBsYW5ndWFnZVxuLy8vIGFjcm9zcyB0ZWFtIG1lbWJlcnMuIEl0IHdpbGwgaW1wcm92ZSBjb21tdW5pY2F0aW9uIGJldHdlZW5cbi8vLyBzdGFrZWhvbGRlcnMsIGRlc2lnbmVycywgZGV2ZWxvcGVycywgYW5kIHRlc3RlcnMuXG4vLy9cbi8vLyBAdHlwZSBNYXBcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1icmVha3BvaW50czogKFxuICAgIG1vYmlsZTogIDMyMHB4LFxuICAgIHRhYmxldDogIDc0MHB4LFxuICAgIGRlc2t0b3A6IDk4MHB4LFxuICAgIHdpZGU6ICAgIDEzMDBweFxuKSAhZGVmYXVsdDtcblxuLy8vIFN0YXRpYyBicmVha3BvaW50IChmb3IgZml4ZWQtd2lkdGggbGF5b3V0cylcbi8vL1xuLy8vIERlZmluZSB0aGUgYnJlYWtwb2ludCBmcm9tICRtcS1icmVha3BvaW50cyB0aGF0IHNob3VsZFxuLy8vIGJlIHVzZWQgYXMgdGhlIHRhcmdldCB3aWR0aCBmb3IgdGhlIGZpeGVkLXdpZHRoIGxheW91dFxuLy8vIChpLmUuIHdoZW4gJG1xLXJlc3BvbnNpdmUgaXMgc2V0IHRvICdmYWxzZScpIGluIGEgb2xkLWllLnNjc3Ncbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gdGFibGV0LW9ubHkuc2Nzc1xuLy8vICAvL1xuLy8vICAvLyBJZ25vcmUgYWxsIHN0eWxlcyBhYm92ZSB0YWJsZXQgYnJlYWtwb2ludCxcbi8vLyAgLy8gYW5kIGZpeCB0aGUgc3R5bGVzIChzdWNoIGFzIHRoZSBsYXlvdXQpIGF0IHRhYmxldCB3aWR0aFxuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gICRtcS1zdGF0aWMtYnJlYWtwb2ludDogdGFibGV0O1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byB0YWJsZXRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2FkZGluZy1jdXN0b20tYnJlYWtwb2ludHMgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLXN0YXRpYy1icmVha3BvaW50OiBkZXNrdG9wICFkZWZhdWx0O1xuXG4vLy8gU2hvdyBicmVha3BvaW50cyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vXG4vLy8gSWYgeW91IHdhbnQgdG8gZGlzcGxheSB0aGUgY3VycmVudGx5IGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3Bcbi8vLyByaWdodCBjb3JuZXIgb2YgeW91ciBzaXRlIGR1cmluZyBkZXZlbG9wbWVudCwgYWRkIHRoZSBicmVha3BvaW50c1xuLy8vIHRvIHRoaXMgbGlzdCwgb3JkZXJlZCBieSB3aWR0aC4gRm9yIGV4YW1wbGU6IChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAkbXEtc2hvdy1icmVha3BvaW50czogKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKTtcbi8vLyAgIEBpbXBvcnQgJ3BhdGgvdG8vbXEnO1xuLy8vXG4vLy8gQHR5cGUgbWFwXG4kbXEtc2hvdy1icmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG5cbi8vLyBDdXN0b21pemUgdGhlIG1lZGlhIHR5cGUgKGZvciBleGFtcGxlOiBgQG1lZGlhIHNjcmVlbmAgb3IgYEBtZWRpYSBwcmludGApXG4vLy8gQnkgZGVmYXVsdCBzYXNzLW1xIHVzZXMgYW4gXCJhbGxcIiBtZWRpYSB0eXBlIChgQG1lZGlhIGFsbCBhbmQg4oCmYClcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjY2hhbmdpbmctbWVkaWEtdHlwZSBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtbWVkaWEtdHlwZTogYWxsICFkZWZhdWx0O1xuXG4vLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHB4IC0gdmFsdWUgdG8gY29udmVydFxuLy8vIEBpZ25vcmUgQHBhcmFtIHtOdW1iZXJ9ICRiYXNlLWZvbnQtc2l6ZSBbJG1xLWJhc2UtZm9udC1zaXplXSAtIGA8Ym9keT5gIGZvbnQgc2l6ZSAoZGVwcmVjYXRlZClcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJGZvbnQtc2l6ZS1pbi1lbXM6IG1xLXB4MmVtKDE2cHgpO1xuLy8vICBwIHsgZm9udC1zaXplOiBtcS1weDJlbSgxNnB4KTsgfVxuLy8vXG4vLy8gQHJlcXVpcmVzICRtcS1iYXNlLWZvbnQtc2l6ZVxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9XG5AZnVuY3Rpb24gbXEtcHgyZW0oJHB4LCAkYmFzZS1mb250LXNpemU6ICRtcS1iYXNlLWZvbnQtc2l6ZSkge1xuICAgIEBpZiAoJG1xLWJhc2UtZm9udC1zaXplICE9IDE2cHgpIHtcbiAgICAgICAgQHdhcm4gXCJPdmVycmlkaW5nICRtcS1iYXNlLWZvbnQtc2l6ZSB3aWxsIGJyZWFrIHRoaW5ncywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMi5cIjtcbiAgICB9XG4gICAgQGlmICgkYmFzZS1mb250LXNpemUgIT0gMTZweCkge1xuICAgICAgICBAd2FybiBcIlRoZSAkYmFzZS1mb250LXNpemUgYXJndW1lbnQgd2lsbCBiZSByZW1vdmVkIGluIHNhc3MtbXEgdjYuMC4wLCBhcyBvdmVycmlkaW5nIGl0IGJyZWFrcyB0aGluZ3MsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjIuXCI7XG4gICAgfVxuICAgIEBpZiB1bml0bGVzcygkcHgpIHtcbiAgICAgICAgQHdhcm4gXCJBc3N1bWluZyAjeyRweH0gdG8gYmUgaW4gcGl4ZWxzLCBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgaXQgaW50byBwaXhlbHMuXCI7XG4gICAgICAgIEByZXR1cm4gbXEtcHgyZW0oJHB4ICogMXB4LCAkYmFzZS1mb250LXNpemUpO1xuICAgIH0gQGVsc2UgaWYgdW5pdCgkcHgpID09IGVtIHtcbiAgICAgICAgQHJldHVybiAkcHg7XG4gICAgfVxuICAgIEByZXR1cm4gKGRpdigkcHgsICRiYXNlLWZvbnQtc2l6ZSkpICogMWVtO1xufVxuXG4vLy8gR2V0IGEgYnJlYWtwb2ludCdzIHdpZHRoXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50LiBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICR0YWJsZXQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKHRhYmxldCk7XG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aChkZXNrdG9wKSkge31cbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVmFsdWUgaW4gcGl4ZWxzXG5AZnVuY3Rpb24gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJG5hbWUsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIHtcbiAgICAgICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgICBAd2FybiBcIkJyZWFrcG9pbnQgI3skbmFtZX0gd2Fzbid0IGZvdW5kIGluICRicmVha3BvaW50cy5cIjtcbiAgICB9XG59XG5cbi8vLyBNZWRpYSBRdWVyeSBtaXhpblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkZnJvbSBbZmFsc2VdIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJHVudGlsIFtmYWxzZV0gLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkYW5kIFtmYWxzZV0gLSBBZGRpdGlvbmFsIG1lZGlhIHF1ZXJ5IHBhcmFtZXRlcnNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lZGlhLXR5cGUgWyRtcS1tZWRpYS10eXBlXSAtIE1lZGlhIHR5cGU6IHNjcmVlbiwgcHJpbnTigKZcbi8vL1xuLy8vIEBpZ25vcmUgVW5kb2N1bWVudGVkIEFQSSwgZm9yIGFkdmFuY2VkIHVzZSBvbmx5OlxuLy8vIEBpZ25vcmUgQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJG1xLWJyZWFrcG9pbnRzXVxuLy8vIEBpZ25vcmUgQHBhcmFtIHtTdHJpbmd9ICRzdGF0aWMtYnJlYWtwb2ludCBbJG1xLXN0YXRpYy1icmVha3BvaW50XVxuLy8vXG4vLy8gQGNvbnRlbnQgc3R5bGluZyBydWxlcywgd3JhcHBlZCBpbnRvIGEgQG1lZGlhIHF1ZXJ5IHdoZW4gJHJlc3BvbnNpdmUgaXMgdHJ1ZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLW1lZGlhLXR5cGVcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1weDJlbVxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLWdldC1icmVha3BvaW50LXdpZHRoXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vbi1kZWZhdWx0IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLmVsZW1lbnQge1xuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiBtb2JpbGUpIHtcbi8vLyAgICAgIGNvbG9yOiByZWQ7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCR1bnRpbDogdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogYmx1ZTtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEobW9iaWxlLCB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBncmVlbjtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IHRhYmxldCwgJGFuZDogJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScpIHtcbi8vLyAgICAgIGNvbG9yOiB0ZWFsO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSg5NTBweCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKHRhYmxldCwgJG1lZGlhLXR5cGU6IHNjcmVlbikge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIC8vIEFkdmFuY2VkIHVzZTpcbi8vLyAgICAkbXktYnJlYWtwb2ludHM6IChMOiA5MDBweCwgWEw6IDEyMDBweCk7XG4vLy8gICAgQGluY2x1ZGUgbXEoTCwgJGJyZWFrcG9pbnRzOiAkbXktYnJlYWtwb2ludHMsICRzdGF0aWMtYnJlYWtwb2ludDogTCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICB9XG5AbWl4aW4gbXEoXG4gICAgJGZyb206IGZhbHNlLFxuICAgICR1bnRpbDogZmFsc2UsXG4gICAgJGFuZDogZmFsc2UsXG4gICAgJG1lZGlhLXR5cGU6ICRtcS1tZWRpYS10eXBlLFxuICAgICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzLFxuICAgICRyZXNwb25zaXZlOiAkbXEtcmVzcG9uc2l2ZSxcbiAgICAkc3RhdGljLWJyZWFrcG9pbnQ6ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuKSB7XG4gICAgJG1pbi13aWR0aDogMDtcbiAgICAkbWF4LXdpZHRoOiAwO1xuICAgICRtZWRpYS1xdWVyeTogJyc7XG5cbiAgICAvLyBGcm9tOiB0aGlzIGJyZWFrcG9pbnQgKGluY2x1c2l2ZSlcbiAgICBAaWYgJGZyb20ge1xuICAgICAgICBAaWYgdHlwZS1vZigkZnJvbSkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKCRmcm9tKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkZnJvbSwgJGJyZWFrcG9pbnRzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbnRpbDogdGhhdCBicmVha3BvaW50IChleGNsdXNpdmUpXG4gICAgQGlmICR1bnRpbCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCR1bnRpbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKCR1bnRpbCk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHVudGlsLCAkYnJlYWtwb2ludHMpKSAtIC4wMWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGRpc2FibGVkLCByYXN0ZXJpemUgdGhlIG91dHB1dCBvdXRzaWRlIEBtZWRpYSBibG9ja3NcbiAgICAvLyBUaGUgYnJvd3NlciB3aWxsIHJlbHkgb24gdGhlIGNhc2NhZGUgaXRzZWxmLlxuICAgIEBpZiAkcmVzcG9uc2l2ZSA9PSBmYWxzZSB7XG4gICAgICAgICRzdGF0aWMtYnJlYWtwb2ludC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHN0YXRpYy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAkdGFyZ2V0LXdpZHRoOiBtcS1weDJlbSgkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGgpO1xuXG4gICAgICAgIC8vIE91dHB1dCBvbmx5IHJ1bGVzIHRoYXQgc3RhcnQgYXQgb3Igc3BhbiBvdXIgdGFyZ2V0IHdpZHRoXG4gICAgICAgIEBpZiAoXG4gICAgICAgICAgICAkYW5kID09IGZhbHNlXG4gICAgICAgICAgICBhbmQgJG1pbi13aWR0aCA8PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICBhbmQgKFxuICAgICAgICAgICAgICAgICR1bnRpbCA9PSBmYWxzZSBvciAkbWF4LXdpZHRoID49ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGFuZCAkbWVkaWEtdHlwZSAhPSAncHJpbnQnXG4gICAgICAgICkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZW5hYmxlZCwgb3V0cHV0IHJ1bGVzIGluc2lkZSBAbWVkaWEgcXVlcmllc1xuICAgIEBlbHNlIHtcbiAgICAgICAgQGlmICRtaW4td2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi13aWR0aDogI3skbWluLXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkbWF4LXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtYXgtd2lkdGg6ICN7JG1heC13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJGFuZCAgICAgICAgICAgIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAjeyRhbmR9JzsgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSBtZWRpYSBxdWVyeSBwcmVmaXggJ2FsbCBhbmQgJ1xuICAgICAgICBAaWYgKCRtZWRpYS10eXBlID09ICdhbGwnIGFuZCAkbWVkaWEtcXVlcnkgIT0gJycpIHtcbiAgICAgICAgICAgICRtZWRpYS10eXBlOiAnJztcbiAgICAgICAgICAgICRtZWRpYS1xdWVyeTogc3RyLXNsaWNlKHVucXVvdGUoJG1lZGlhLXF1ZXJ5KSwgNik7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgI3skbWVkaWEtdHlwZSArICRtZWRpYS1xdWVyeX0ge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vLyBRdWljayBzb3J0XG4vLy9cbi8vLyBAYXV0aG9yIFNhbSBSaWNoYXJkc1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBMaXN0IHRvIHNvcnRcbi8vLyBAcmV0dXJucyB7TGlzdH0gU29ydGVkIExpc3RcbkBmdW5jdGlvbiBfbXEtcXVpY2stc29ydCgkbGlzdCkge1xuICAgICRsZXNzOiAgKCk7XG4gICAgJGVxdWFsOiAoKTtcbiAgICAkbGFyZ2U6ICgpO1xuXG4gICAgQGlmIGxlbmd0aCgkbGlzdCkgPiAxIHtcbiAgICAgICAgJHNlZWQ6IG50aCgkbGlzdCwgY2VpbChkaXYobGVuZ3RoKCRsaXN0KSwgMikpKTtcblxuICAgICAgICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgICAgICAgICBAaWYgKCRpdGVtID09ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGVxdWFsOiBhcHBlbmQoJGVxdWFsLCAkaXRlbSk7XG4gICAgICAgICAgICB9IEBlbHNlIGlmICgkaXRlbSA8ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGxlc3M6IGFwcGVuZCgkbGVzcywgJGl0ZW0pO1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPiAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRsYXJnZTogYXBwZW5kKCRsYXJnZSwgJGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQHJldHVybiBqb2luKGpvaW4oX21xLXF1aWNrLXNvcnQoJGxlc3MpLCAkZXF1YWwpLCBfbXEtcXVpY2stc29ydCgkbGFyZ2UpKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRsaXN0O1xufVxuXG4vLy8gU29ydCBhIG1hcCBieSB2YWx1ZXMgKHdvcmtzIHdpdGggbnVtYmVycyBvbmx5KVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gc29ydFxuLy8vIEByZXR1cm5zIHtNYXB9IE1hcCBzb3J0ZWQgYnkgdmFsdWVcbkBmdW5jdGlvbiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1hcCkge1xuICAgICRtYXAtc29ydGVkOiAoKTtcbiAgICAkbWFwLWtleXM6IG1hcC1rZXlzKCRtYXApO1xuICAgICRtYXAtdmFsdWVzOiBtYXAtdmFsdWVzKCRtYXApO1xuICAgICRtYXAtdmFsdWVzLXNvcnRlZDogX21xLXF1aWNrLXNvcnQoJG1hcC12YWx1ZXMpO1xuXG4gICAgLy8gUmVvcmRlciBrZXkvdmFsdWUgcGFpcnMgYmFzZWQgb24ga2V5IHZhbHVlc1xuICAgIEBlYWNoICR2YWx1ZSBpbiAkbWFwLXZhbHVlcy1zb3J0ZWQge1xuICAgICAgICAkaW5kZXg6IGluZGV4KCRtYXAtdmFsdWVzLCAkdmFsdWUpO1xuICAgICAgICAka2V5OiBudGgoJG1hcC1rZXlzLCAkaW5kZXgpO1xuICAgICAgICAkbWFwLXNvcnRlZDogbWFwLW1lcmdlKCRtYXAtc29ydGVkLCAoJGtleTogJHZhbHVlKSk7XG5cbiAgICAgICAgLy8gVW5zZXQgdGhlIHZhbHVlIGluICRtYXAtdmFsdWVzIHRvIHByZXZlbnQgdGhlIGxvb3BcbiAgICAgICAgLy8gZnJvbSBmaW5kaW5nIHRoZSBzYW1lIGluZGV4IHR3aWNlXG4gICAgICAgICRtYXAtdmFsdWVzOiBzZXQtbnRoKCRtYXAtdmFsdWVzLCAkaW5kZXgsIDApO1xuICAgIH1cblxuICAgIEByZXR1cm4gJG1hcC1zb3J0ZWQ7XG59XG5cbi8vLyBBZGQgYSBicmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBicmVha3BvaW50XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgQGluY2x1ZGUgbXEtYWRkLWJyZWFrcG9pbnQodHZzY3JlZW4sIDE5MjBweCk7XG4vLy8gIEBpbmNsdWRlIG1xKHR2c2NyZWVuKSB7fVxuQG1peGluIG1xLWFkZC1icmVha3BvaW50KCRuYW1lLCAkd2lkdGgpIHtcbiAgICAkbmV3LWJyZWFrcG9pbnQ6ICgkbmFtZTogJHdpZHRoKTtcbiAgICAkbXEtYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkbXEtYnJlYWtwb2ludHMsICRuZXctYnJlYWtwb2ludCkgIWdsb2JhbDtcbiAgICAkbXEtYnJlYWtwb2ludHM6IF9tcS1tYXAtc29ydC1ieS12YWx1ZSgkbXEtYnJlYWtwb2ludHMpICFnbG9iYWw7XG59XG5cbi8vLyBTaG93IHRoZSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lciBvZiB0aGUgdmlld3BvcnRcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaG93LWJyZWFrcG9pbnRzIFskbXEtc2hvdy1icmVha3BvaW50c10gLSBMaXN0IG9mIGJyZWFrcG9pbnRzIHRvIHNob3cgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vLyBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzIFskbXEtYnJlYWtwb2ludHNdIC0gQnJlYWtwb2ludCBuYW1lcyBhbmQgc2l6ZXNcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zaG93LWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgZ2xvYmFsIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG4vLy9cbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBjdXN0b20gc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cygoTCwgWEwpLCAoUzogMzAwcHgsIEw6IDgwMHB4LCBYTDogMTIwMHB4KSk7XG5AbWl4aW4gbXEtc2hvdy1icmVha3BvaW50cygkc2hvdy1icmVha3BvaW50czogJG1xLXNob3ctYnJlYWtwb2ludHMsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgYm9keTpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGOEUzO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBjb2xvcjogI0MwOTg1MztcbiAgICAgICAgZm9udDogc21hbGwtY2FwdGlvbjtcbiAgICAgICAgcGFkZGluZzogM3B4IDZweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgei1pbmRleDogMTAwO1xuXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCB0aGUgYnJlYWtwb2ludHMgdGhhdCBzaG91bGQgYmUgc2hvd25cbiAgICAgICAgQGVhY2ggJHNob3ctYnJlYWtwb2ludCBpbiAkc2hvdy1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAkd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcSgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHM6ICRicmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiI3skc2hvdy1icmVha3BvaW50fSDiiaUgI3skd2lkdGh9ICgje21xLXB4MmVtKCR3aWR0aCl9KVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaWYgbGVuZ3RoKCRtcS1zaG93LWJyZWFrcG9pbnRzKSA+IDAge1xuICAgIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG59XG4iLCIvLy8gT3V0cHV0IHN0eWxlcyBmb3IgYW4gU1ZHIGljb24uXG4vLy8gU3R5bGVzIHRoZSBpY29uIGFzIGEgYmFja2dyb3VuZCBpbWFnZSwgc2V0dGluZyBhIHdpZHRoIGFuZCBoZWlnaHQgb24gdGhlIGVsZW1lbnQgYXMgcmVxdWVzdGVkLlxuLy8vIEEgZmFsbGJhY2sgYmFja2dyb3VuZCBmb3IgV2luZG93cyBIaWdoIENvbnRyYXN0IG1vZGUgaXMgYWxzbyBvdXRwdXQuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkaWNvbi1uYW1lIC0gVGhpcyBzaG91bGQgYmUgYSByZWZlcmVuY2UgdG8gYW4gaWNvbiBpbmNsdWRlZCBpbiBvLWljb25zIGVnIGFycm93LWRvd25cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGNvbG9yIC0gVGhpcyBzaG91bGQgYmUgYSBoZXggY29sb3VyIHZhbHVlLiBVc2VkIHRvIGNvbG9yIHRoZSBpY29uLiBXZSBzdWdnZXN0IHVzaW5nIGFuIG8tY29sb3JzIGZ1bmN0aW9uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE51bGx9ICRzaXplIFsxMjhdIC0gVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGljb24gKHVuaXRzIG9wdGlvbmFsLCBkZWZhdWx0cyB0byBweCkuIFNldCB0byBgbnVsbGAgdG8gc2V0IG5vIHdpZHRoIG9yIGhlaWdodC5cbi8vLyBAcGFyYW0ge0Jvb2x9ICRpbmNsdWRlLWJhc2Utc3R5bGVzIFt0cnVlXSAtIElmIHRydWUsIHdpbGwgb3V0cHV0IHN0eWxlIHJ1bGVzIGZvciB0aGUgY29udGFpbmVyLiBJZiBmYWxzZSB3aWxsIG9ubHkgb3V0cHV0IHRoZSBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnR5XG4vLy8gQHBhcmFtIHtCb29sfSAkaGlnaC1jb250cmFzdC1mYWxsYmFjayBbdHJ1ZV0gLSBUbyBvdXRwdXQgTWljcm9zb2Z0IEhpZ2ggQ29udHJhc3QgZmFsbGJhY2sgZm9yIGFjY2Vzc2liaWxpdHkgcmVhc29ucyBvciBub3QuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRpY29uc2V0LXZlcnNpb24gWzFdIC0gQXQgcHJlc2VudCBvbmx5IDEgdmVyc2lvbiBvZiB0aGUgaWNvbiBzZXQgaXMgYXZhaWxhYmxlLlxuQG1peGluIG9JY29uc0NvbnRlbnQoJGljb24tbmFtZSwgJGNvbG9yOiBudWxsLCAkc2l6ZTogMTI4LCAkaW5jbHVkZS1iYXNlLXN0eWxlczogdHJ1ZSwgJGhpZ2gtY29udHJhc3QtZmFsbGJhY2s6IHRydWUsICRpY29uc2V0LXZlcnNpb246IDEpIHtcblx0Ly8gRXJyb3IgaWYgdGhlIGdsb2JhbCAkc3lzdGVtLWNvZGUgdmFyaWFibGUgaXMgbm90IHNldC5cblx0Ly8gVGhpcyBpcyByZXF1aXJlZCBmb3IgaW1hZ2Ugc2VydmljZSByZXF1ZXN0cy5cblx0QGlmKGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ3N5c3RlbS1jb2RlJykgPT0gZmFsc2Ugb3IgdHlwZS1vZigkc3lzdGVtLWNvZGUpICE9ICdzdHJpbmcnKSB7XG5cdFx0QGVycm9yICdBIGdsb2JhbCBcIiRzeXN0ZW0tY29kZVwiIFNhc3MgdmFyaWFibGUgbXVzdCBiZSBzZXQgdG8gYSB2YWxpZCBCaXpvcHMgc3lzdGVtIGNvZGUgKFxcZV04OztodHRwczovL2Jpei1vcHMuaW4uZnQuY29tL2xpc3QvU3lzdGVtc1xcZVxcXFxodHRwczovL2Jpei1vcHMuaW4uZnQuY29tL2xpc3QvU3lzdGVtc1xcZV04OztcXGVcXFxcKS4nO1xuXHR9XG5cblx0Ly8gSWYgdGhlIHNpemUgb2YgdGhlIGljb25zIGhhcyBiZWVuIGdpdmVuIHdpdGhvdXQgYSB1bml0LCBkZWZhdWx0IHRvIHB4LlxuXHRAaWYgKHR5cGUtb2YoJHNpemUpID09ICdudW1iZXInIGFuZCB1bml0bGVzcygkc2l6ZSkpIHtcblx0XHQkc2l6ZTogJHNpemUgKyAwcHg7XG5cdH1cblxuXHQvLyBEZWZpbmUgYmFzZSBpbWFnZSBzZXJ2aWNlIHBhdGguXG5cdCRzY2hlbWU6IFwiZnRpY29uLXYjeyRpY29uc2V0LXZlcnNpb259XCI7XG5cdCRzZXJ2aWNlLXVybDogXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvaW1hZ2UvdjIvaW1hZ2VzL3Jhdy8jeyRzY2hlbWV9OiN7JGljb24tbmFtZX1cIjtcblxuXHQvLyBJbmNsdWRlIGJhc2Ugc3R5bGVzIHNoYXJlZCBieSBhbGwgaWNvbnMuXG5cdEBpZiAoJGluY2x1ZGUtYmFzZS1zdHlsZXMgPT0gdHJ1ZSkge1xuXHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnRCYXNlU3R5bGVzO1xuXHR9XG5cblx0Ly8gU2V0IHRoZSBpY29uIGRpbWVudGlvbnMuXG5cdHdpZHRoOiAkc2l6ZTtcblx0aGVpZ2h0OiAkc2l6ZTtcblxuXHQvLyBJbmNsdWRlIHRoZSBpY29uIHZpYSB0aGUgaW1hZ2Ugc2VydmljZS5cblx0Ly8gQnVpbGQgYW4gaW1hZ2Ugc2VydmljZSB1cmwgZm9yIHRoZSByZXF1ZXN0ZWQgaWNvbi5cblx0JHF1ZXJ5OiBcIj9zb3VyY2U9I3skc3lzdGVtLWNvZGV9XCI7XG5cdEBpZiAkY29sb3IgIT0gbnVsbCB7XG5cdFx0JGNvbG9yOiBzdHItc2xpY2UoaWUtaGV4LXN0cigkY29sb3IpLCA0KTtcblx0XHQkcXVlcnk6ICRxdWVyeSArIFwiJnRpbnQ9JTIzI3skY29sb3J9LCUyMyN7JGNvbG9yfVwiO1xuXHR9XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkc2VydmljZS11cmwgKyAkcXVlcnkgKyBcIiZmb3JtYXQ9c3ZnXCIpO1xuXG5cdC8vIEluY2x1ZGUgYSBmYWxsYmFjayBmb3IgV2luZG93J3MgaGlnaCBjb250cmFzdCBtb2RlLlxuXHQvLyBUaGlzIG1vZGUgcmVtb3ZlcyBiYWNrZ3JvdW5kIGltYWdlcyB1bmxlc3Mgc3BlY2lmY2FsbHkgaW5jbHVkZWRcblx0Ly8gZm9yIGhpZ2ggY29udHJhc3QgbW9kZS5cblx0Ly8gc2Fzcy1saW50OmRpc2FibGUgbm8tdmVuZG9yLXByZWZpeGVzXG5cdEBpZiAkaGlnaC1jb250cmFzdC1mYWxsYmFjayB7XG5cdFx0QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcblx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkc2VydmljZS11cmwgKyBcIj9zb3VyY2U9I3skc3lzdGVtLWNvZGV9JnRpbnQ9JTIzZmZmZmZmLCUyM2ZmZmZmZiZmb3JtYXQ9c3ZnXCIpO1xuXHRcdH1cblxuXHRcdEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYmxhY2stb24td2hpdGUpIHtcblx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgkc2VydmljZS11cmwgKyBcIj9zb3VyY2U9I3skc3lzdGVtLWNvZGV9JnRpbnQ9JTIzMDAwMDAwLCUyMzAwMDAwMCZmb3JtYXQ9c3ZnXCIpO1xuXHRcdH1cblx0fVxuXHQvLyBzYXNzLWxpbnQ6ZW5hYmxlIG5vLXZlbmRvci1wcmVmaXhlc1xufVxuXG4vLy8gQmFzZSBzdHlsZXMgZm9yIGFsbCBpY29uc1xuLy8vIEBhY2Nlc3MgcHVibGljXG5AbWl4aW4gb0ljb25zQ29udGVudEJhc2VTdHlsZXMoKSB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0YmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCU7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG4iLCJAaW1wb3J0ICdvLWdyaWQvbWFpbi5zY3NzJztcbiRzdGlja3ktYm94LXNoYWRvdzogMCA0cHggNnB4IDAgcmdiYSg3NywgNzIsIDY5LCAwLjEpLCAwIDFweCAycHggMCByZ2JhKDc3LCA3MiwgNjksIDAuMjQpO1xuXG4uc3RpY2t5LWhlYWRlci13cmFwcGVyIHtcbiAgJi0tZml4ZWQge1xuICAgID4gKiB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cztcbiAgICB9XG4gIH1cblxuICAmLS1zaGFkb3cge1xuICAgID4gKiB7XG4gICAgICBib3gtc2hhZG93OiAkc3RpY2t5LWJveC1zaGFkb3c7XG4gICAgfVxuICB9XG59XG4iLCJAZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLVRoaW4ud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1UaGluLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIk1ldHJpY1dlYlwiO2ZvbnQtd2VpZ2h0OjEwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLUxpZ2h0LndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9NZXRyaWNXZWItTGlnaHQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO2ZvbnQtZmFtaWx5OlwiTWV0cmljV2ViXCI7Zm9udC13ZWlnaHQ6MzAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwfUBmb250LWZhY2V7c3JjOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9NZXRyaWNXZWItTGlnaHRJdGFsaWMud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1MaWdodEl0YWxpYy53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJNZXRyaWNXZWJcIjtmb250LXdlaWdodDozMDA7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1SZWd1bGFyLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9NZXRyaWNXZWItUmVndWxhci53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJNZXRyaWNXZWJcIjtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1SZWd1bGFySXRhbGljLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9NZXRyaWNXZWItUmVndWxhckl0YWxpYy53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJNZXRyaWNXZWJcIjtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1NZWRpdW0ud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1NZWRpdW0ud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO2ZvbnQtZmFtaWx5OlwiTWV0cmljV2ViXCI7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwfUBmb250LWZhY2V7c3JjOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9NZXRyaWNXZWItU2VtaWJvbGQud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1TZW1pYm9sZC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJNZXRyaWNXZWJcIjtmb250LXdlaWdodDo2MDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1Cb2xkLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9NZXRyaWNXZWItQm9sZC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJNZXRyaWNXZWJcIjtmb250LXdlaWdodDo3MDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1Cb2xkSXRhbGljLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9NZXRyaWNXZWItQm9sZEl0YWxpYy53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJNZXRyaWNXZWJcIjtmb250LXdlaWdodDo3MDA7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL01ldHJpY1dlYi1CbGFjay53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvTWV0cmljV2ViLUJsYWNrLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIk1ldHJpY1dlYlwiO2ZvbnQtd2VpZ2h0OjkwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1MaWdodC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1MaWdodC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJGaW5hbmNpZXJEaXNwbGF5V2ViXCI7Zm9udC13ZWlnaHQ6MzAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwfUBmb250LWZhY2V7c3JjOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLUxpZ2h0SXRhbGljLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLUxpZ2h0SXRhbGljLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIkZpbmFuY2llckRpc3BsYXlXZWJcIjtmb250LXdlaWdodDozMDA7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItUmVndWxhci53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1SZWd1bGFyLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIkZpbmFuY2llckRpc3BsYXlXZWJcIjtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItUmVndWxhckl0YWxpYy53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1SZWd1bGFySXRhbGljLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIkZpbmFuY2llckRpc3BsYXlXZWJcIjtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItTWVkaXVtSXRhbGljLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLU1lZGl1bUl0YWxpYy53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJGaW5hbmNpZXJEaXNwbGF5V2ViXCI7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtZGlzcGxheTpzd2FwfUBmb250LWZhY2V7c3JjOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLU1lZGl1bS53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1NZWRpdW0ud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO2ZvbnQtZmFtaWx5OlwiRmluYW5jaWVyRGlzcGxheVdlYlwiO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle3NyYzp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1TZW1pYm9sZC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1TZW1pYm9sZC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7Zm9udC1mYW1pbHk6XCJGaW5hbmNpZXJEaXNwbGF5V2ViXCI7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwfUBmb250LWZhY2V7c3JjOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLVNlbWlib2xkSXRhbGljLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLHVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9idWlsZC92Mi9maWxlcy9vLWZvbnRzLWFzc2V0c0AxLjcuMC9GaW5hbmNpZXJEaXNwbGF5V2ViLVNlbWlib2xkSXRhbGljLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIkZpbmFuY2llckRpc3BsYXlXZWJcIjtmb250LXdlaWdodDo2MDA7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItQm9sZC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSx1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvYnVpbGQvdjIvZmlsZXMvby1mb250cy1hc3NldHNAMS43LjAvRmluYW5jaWVyRGlzcGxheVdlYi1Cb2xkLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtmb250LWZhbWlseTpcIkZpbmFuY2llckRpc3BsYXlXZWJcIjtmb250LXdlaWdodDo3MDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtzcmM6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItQmxhY2sud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksdXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2J1aWxkL3YyL2ZpbGVzL28tZm9udHMtYXNzZXRzQDEuNy4wL0ZpbmFuY2llckRpc3BsYXlXZWItQmxhY2sud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO2ZvbnQtZmFtaWx5OlwiRmluYW5jaWVyRGlzcGxheVdlYlwiO2ZvbnQtd2VpZ2h0OjkwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH0uby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtMXtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjMycHg7bGluZS1oZWlnaHQ6MzJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzMzMzAyZTttYXJnaW46MCAwIDE2cHh9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tdHlwb2dyYXBoeS1oZWFkaW5nLWxldmVsLTF7Zm9udC1zaXplOjI2LjU2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtMntmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjI4cHg7bGluZS1oZWlnaHQ6MzJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzMzMzAyZTttYXJnaW46MCAwIDE2cHh9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tdHlwb2dyYXBoeS1oZWFkaW5nLWxldmVsLTJ7Zm9udC1zaXplOjIzLjI0cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtM3tmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjI0cHg7bGluZS1oZWlnaHQ6MjhweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzMzMzAyZTttYXJnaW46MCAwIDE2cHh9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tdHlwb2dyYXBoeS1oZWFkaW5nLWxldmVsLTN7Zm9udC1zaXplOjE5LjkycHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtNHtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjIwcHg7bGluZS1oZWlnaHQ6MjRweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzMzMzAyZTttYXJnaW46MCAwIDE2cHh9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tdHlwb2dyYXBoeS1oZWFkaW5nLWxldmVsLTR7Zm9udC1zaXplOjE2LjZweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC01e2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMzMzMDJlO21hcmdpbjowIDAgMTZweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtNXtmb250LXNpemU6MTQuOTRweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC02e2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMzMzMDJlO21hcmdpbjowIDAgMTZweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtNntmb250LXNpemU6MTMuMjhweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktYm9sZHtmb250LXdlaWdodDo2MDB9Lm8tdHlwb2dyYXBoeS1pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWN9Lm8tdHlwb2dyYXBoeS1zdXB7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTouNjY2ZW07cG9zaXRpb246c3RhdGljO3ZlcnRpY2FsLWFsaWduOnN1cGVyO2xpbmUtaGVpZ2h0OjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXRvcDotMWVtfS5vLXR5cG9ncmFwaHktc3Vie2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6LjY2NmVtO3Bvc2l0aW9uOnN0YXRpYzt2ZXJ0aWNhbC1hbGlnbjpzdWI7bGluZS1oZWlnaHQ6MDtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOi0xZW19Lm8tdHlwb2dyYXBoeS1ib2R5e2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyMHB4O21hcmdpbjowIDAgMjRweDtjb2xvcjojMzMzMDJlfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby10eXBvZ3JhcGh5LWJvZHl7Zm9udC1zaXplOjE1LjY2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LWxpbmt7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLWJvdHRvbTouMjVleCBzb2xpZDtjb2xvcjojMGQ3NjgwO2JvcmRlci1ib3R0b20tY29sb3I6I2NmZDhkMTt0ZXh0LWRlY29yYXRpb24tY29sb3I6I2NmZDhkMX1Ac3VwcG9ydHModGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMC4yNWV4KXsuby10eXBvZ3JhcGh5LWxpbmt7Ym9yZGVyLWJvdHRvbTowO3RleHQtZGVjb3JhdGlvbi10aGlja25lc3M6LjI1ZXg7dGV4dC1kZWNvcmF0aW9uLWxpbmU6dW5kZXJsaW5lfX0uby10eXBvZ3JhcGh5LWxpbms6aG92ZXJ7Y29sb3I6IzA4NDc0ZDtib3JkZXItYm90dG9tLWNvbG9yOiM5ZWMwYmQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiM5ZWMwYmR9Lm8tdHlwb2dyYXBoeS1saW5rOmZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiMwODQ3NGR9Lm8tdHlwb2dyYXBoeS1saW5rLS1leHRlcm5hbHtiYWNrZ3JvdW5kLWltYWdlOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0aWNvbi12MTpvdXRzaWRlLXBhZ2U/c291cmNlPWlnLXByb2plY3RzJnRpbnQ9JTIzMEQ3NjgwLCUyMzBENzY4MCZmb3JtYXQ9c3ZnXCIpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtwYWRkaW5nLXJpZ2h0OmNhbGMoMWVtICsgMC41Y2ggLSAwLjI1ZW0gLSAwLjI1ZW0pO2JhY2tncm91bmQtcG9zaXRpb24teDpjYWxjKDEwMCUgKyAuNWNoKTtiYWNrZ3JvdW5kLW9yaWdpbjpib3JkZXItYm94O2JhY2tncm91bmQtc2l6ZTpjYWxjKDFlbSArIDAuNWNoKSBjYWxjKDFlbSArIDAuNWNoKX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7Lm8tdHlwb2dyYXBoeS1saW5rLS1leHRlcm5hbHtiYWNrZ3JvdW5kLWltYWdlOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0aWNvbi12MTpvdXRzaWRlLXBhZ2U/c291cmNlPWlnLXByb2plY3RzJnRpbnQ9JTIzZmZmZmZmLCUyM2ZmZmZmZiZmb3JtYXQ9c3ZnXCIpfX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGJsYWNrLW9uLXdoaXRlKXsuby10eXBvZ3JhcGh5LWxpbmstLWV4dGVybmFse2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiaHR0cHM6Ly93d3cuZnQuY29tL19fb3JpZ2FtaS9zZXJ2aWNlL2ltYWdlL3YyL2ltYWdlcy9yYXcvZnRpY29uLXYxOm91dHNpZGUtcGFnZT9zb3VyY2U9aWctcHJvamVjdHMmdGludD0lMjMwMDAwMDAsJTIzMDAwMDAwJmZvcm1hdD1zdmdcIil9fUBzdXBwb3J0cyhiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW4pey5vLXR5cG9ncmFwaHktbGluay0tZXh0ZXJuYWx7YmFja2dyb3VuZC1wb3NpdGlvbi15OmNhbGMoMTAwJSArIDAuMjVleCAtIDFweCl9fUBzdXBwb3J0cyh0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAwLjI1ZXgpey5vLXR5cG9ncmFwaHktbGluay0tZXh0ZXJuYWx7YmFja2dyb3VuZC1wb3NpdGlvbi15OmNhbGMoMTAwJSArIDAuMjVlbSAtIDAuMjVleCAtIDFweCl9fUBzdXBwb3J0cyhiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW4pey5vLXR5cG9ncmFwaHktbGluay0tZXh0ZXJuYWx7YmFja2dyb3VuZC1zaXplOmNvbnRhaW59fS5vLXR5cG9ncmFwaHktbGluay0tZXh0ZXJuYWxbdGFyZ2V0PV9ibGFua106YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDAgMCAwIDApO2NsaXAtcGF0aDpwb2x5Z29uKDAgMCwgMCAwKTttYXJnaW46LTFweDtib3JkZXI6MDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3dpZHRoOjJweDtoZWlnaHQ6MnB4O3doaXRlLXNwYWNlOm5vd3JhcDtjb250ZW50OlwiKG9wZW5zIGEgbmV3IHdpbmRvdylcIn0uby10eXBvZ3JhcGh5LWxpc3R7bWFyZ2luOjAgMCAyNHB4O3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9Lm8tdHlwb2dyYXBoeS1saXN0Pmxpe3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3BhZGRpbmctbGVmdDpjYWxjKDJjaCArIDRweCl9Lm8tdHlwb2dyYXBoeS1saXN0PmxpOmJlZm9yZXtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIGxlZnR9Lm8tdHlwb2dyYXBoeS1saXN0LS1vcmRlcmVke2NvdW50ZXItcmVzZXQ6aXRlbX0uby10eXBvZ3JhcGh5LWxpc3QtLW9yZGVyZWQ+bGk6YmVmb3Jle2ZvbnQtd2VpZ2h0OjYwMDtjb250ZW50OmNvdW50ZXIoaXRlbSk7Y291bnRlci1pbmNyZW1lbnQ6aXRlbTtmb250LWZlYXR1cmUtc2V0dGluZ3M6XCJ0bnVtXCI7dHJhbnNmb3JtOnNjYWxlKDAuODg4ODg4ODg4OSk7bWFyZ2luLWxlZnQ6LTAuMTQyMjIyMjIyMmNofS5vLXR5cG9ncmFwaHktbGlzdC0tdW5vcmRlcmVkPmxpOmJlZm9yZXtjb250ZW50Olwi4oCiXCI7Y29sb3I6aW5oZXJpdDt0cmFuc2Zvcm06c2NhbGUoMS41NTU1NTU1NTU2KTttYXJnaW4tdG9wOi0wLjI0ODg4ODg4ODljaH0uby10eXBvZ3JhcGh5LWNhcHRpb257Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE2cHg7bWFyZ2luLXRvcDo4cHg7bWFyZ2luLWJvdHRvbTowO2NvbG9yOiMzMzMwMmV9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLXR5cG9ncmFwaHktY2FwdGlvbntmb250LXNpemU6MTIuMThweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktZm9vdGVye2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyNHB4O2NvbG9yOiMzMzMwMmV9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLXR5cG9ncmFwaHktZm9vdGVye2ZvbnQtc2l6ZToxNS42NnB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnAsLm8tdHlwb2dyYXBoeS13cmFwcGVye2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyMHB4O21hcmdpbjowIDAgMjRweDtjb2xvcjojMzMzMDJlfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby10eXBvZ3JhcGh5LXdyYXBwZXI+cCwuby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tdHlwb2dyYXBoeS13cmFwcGVye2ZvbnQtc2l6ZToxNS42NnB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+aDEsLm8tdHlwb2dyYXBoeS13cmFwcGVyPmgxe2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MzJweDtsaW5lLWhlaWdodDozMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMzMzMDJlO21hcmdpbjowIDAgMTZweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5oMSwuby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LXdyYXBwZXI+aDF7Zm9udC1zaXplOjI2LjU2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5oMiwuby10eXBvZ3JhcGh5LXdyYXBwZXI+aDJ7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToyOHB4O2xpbmUtaGVpZ2h0OjMycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiMzMzMwMmU7bWFyZ2luOjAgMCAxNnB4fS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmgyLC5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5oMntmb250LXNpemU6MjMuMjRweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmgzLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5oM3tmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjI0cHg7bGluZS1oZWlnaHQ6MjhweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzMzMzAyZTttYXJnaW46MCAwIDE2cHh9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+aDMsLm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tdHlwb2dyYXBoeS13cmFwcGVyPmgze2ZvbnQtc2l6ZToxOS45MnB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+aDQsLm8tdHlwb2dyYXBoeS13cmFwcGVyPmg0e2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MjBweDtsaW5lLWhlaWdodDoyNHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMzMzMDJlO21hcmdpbjowIDAgMTZweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5oNCwuby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LXdyYXBwZXI+aDR7Zm9udC1zaXplOjE2LjZweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmg1LC5vLXR5cG9ncmFwaHktd3JhcHBlcj5oNXtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjBweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzMzMzAyZTttYXJnaW46MCAwIDE2cHh9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+aDUsLm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tdHlwb2dyYXBoeS13cmFwcGVyPmg1e2ZvbnQtc2l6ZToxNC45NHB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+aDYsLm8tdHlwb2dyYXBoeS13cmFwcGVyPmg2e2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMzMzMDJlO21hcmdpbjowIDAgMTZweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5oNiwuby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby10eXBvZ3JhcGh5LXdyYXBwZXI+aDZ7Zm9udC1zaXplOjEzLjI4cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5hLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5he3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO2JvcmRlci1ib3R0b206LjI1ZXggc29saWQ7Y29sb3I6IzBkNzY4MDtib3JkZXItYm90dG9tLWNvbG9yOiNjZmQ4ZDE7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiNjZmQ4ZDF9QHN1cHBvcnRzKHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDAuMjVleCl7Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+YSwuby10eXBvZ3JhcGh5LXdyYXBwZXI+YXtib3JkZXItYm90dG9tOjA7dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczouMjVleDt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9fS5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmE6aG92ZXIsLm8tdHlwb2dyYXBoeS13cmFwcGVyPmE6aG92ZXJ7Y29sb3I6IzA4NDc0ZDtib3JkZXItYm90dG9tLWNvbG9yOiM5ZWMwYmQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiM5ZWMwYmR9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+YTpmb2N1cywuby10eXBvZ3JhcGh5LXdyYXBwZXI+YTpmb2N1c3tib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O3RleHQtZGVjb3JhdGlvbi1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojMDg0NzRkfS5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPnAsLm8tdHlwb2dyYXBoeS13cmFwcGVyPnB7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjIwcHg7bWFyZ2luOjAgMCAyNHB4O2NvbG9yOiMzMzMwMmV9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPnAsLm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLXR5cG9ncmFwaHktd3JhcHBlcj5we2ZvbnQtc2l6ZToxNS42NnB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+b2wsLm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+dWwsLm8tdHlwb2dyYXBoeS13cmFwcGVyPm9sLC5vLXR5cG9ncmFwaHktd3JhcHBlcj51bHttYXJnaW46MCAwIDI0cHg7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5vbD5saSwuby10eXBvZ3JhcGh5LXdyYXBwZXI+cD51bD5saSwuby10eXBvZ3JhcGh5LXdyYXBwZXI+b2w+bGksLm8tdHlwb2dyYXBoeS13cmFwcGVyPnVsPmxpe3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3BhZGRpbmctbGVmdDpjYWxjKDJjaCArIDRweCl9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+b2w+bGk6YmVmb3JlLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPnVsPmxpOmJlZm9yZSwuby10eXBvZ3JhcGh5LXdyYXBwZXI+b2w+bGk6YmVmb3JlLC5vLXR5cG9ncmFwaHktd3JhcHBlcj51bD5saTpiZWZvcmV7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciBsZWZ0fS5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPm9sLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5vbHtjb3VudGVyLXJlc2V0Oml0ZW19Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+b2w+bGk6YmVmb3JlLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5vbD5saTpiZWZvcmV7Zm9udC13ZWlnaHQ6NjAwO2NvbnRlbnQ6Y291bnRlcihpdGVtKTtjb3VudGVyLWluY3JlbWVudDppdGVtO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpcInRudW1cIjt0cmFuc2Zvcm06c2NhbGUoMC44ODg4ODg4ODg5KTttYXJnaW4tbGVmdDotMC4xNDIyMjIyMjIyY2h9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+dWw+bGk6YmVmb3JlLC5vLXR5cG9ncmFwaHktd3JhcHBlcj51bD5saTpiZWZvcmV7Y29udGVudDpcIuKAolwiO2NvbG9yOmluaGVyaXQ7dHJhbnNmb3JtOnNjYWxlKDEuNTU1NTU1NTU1Nik7bWFyZ2luLXRvcDotMC4yNDg4ODg4ODg5Y2h9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+Zm9vdGVyLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5mb290ZXJ7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjI0cHg7Y29sb3I6IzMzMzAyZX0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+Zm9vdGVyLC5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby10eXBvZ3JhcGh5LXdyYXBwZXI+Zm9vdGVye2ZvbnQtc2l6ZToxNS42NnB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+c3Ryb25nLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5zdHJvbmd7Zm9udC13ZWlnaHQ6NjAwfS5vLXR5cG9ncmFwaHktd3JhcHBlcj5wPmVtLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5lbXtmb250LXN0eWxlOml0YWxpY30uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5zdXAsLm8tdHlwb2dyYXBoeS13cmFwcGVyPnN1cHtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOi42NjZlbTtwb3NpdGlvbjpzdGF0aWM7dmVydGljYWwtYWxpZ246c3VwZXI7bGluZS1oZWlnaHQ6MDtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOi0xZW19Lm8tdHlwb2dyYXBoeS13cmFwcGVyPnA+c3ViLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5zdWJ7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTouNjY2ZW07cG9zaXRpb246c3RhdGljO3ZlcnRpY2FsLWFsaWduOnN1YjtsaW5lLWhlaWdodDowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1ib3R0b206LTFlbX0uby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5maWdjYXB0aW9uLC5vLXR5cG9ncmFwaHktd3JhcHBlcj5maWdjYXB0aW9ue2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxNnB4O21hcmdpbi10b3A6OHB4O21hcmdpbi1ib3R0b206MDtjb2xvcjojMzMzMDJlfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby10eXBvZ3JhcGh5LXdyYXBwZXI+cD5maWdjYXB0aW9uLC5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby10eXBvZ3JhcGh5LXdyYXBwZXI+ZmlnY2FwdGlvbntmb250LXNpemU6MTIuMThweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWJvZHl7Zm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZjtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxLjY7Y29sb3I6IzMzMzAyZTttYXJnaW46MH1AbWVkaWEobWluLXdpZHRoOiA3Ni4yNWVtKXsuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1ib2R5e2ZvbnQtc2l6ZToyMHB4O2xpbmUtaGVpZ2h0OjEuNn19Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktbGlzdHttYXJnaW46MCAwIDI0cHg7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MH0uby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1saXN0Pmxpe3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3BhZGRpbmctbGVmdDpjYWxjKDJjaCArIDRweCl9Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktbGlzdD5saTpiZWZvcmV7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciBsZWZ0fS5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWxpc3QtLW9yZGVyZWR7Y291bnRlci1yZXNldDppdGVtfS5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWxpc3QtLW9yZGVyZWQ+bGk6YmVmb3Jle2ZvbnQtd2VpZ2h0OjYwMDtjb250ZW50OmNvdW50ZXIoaXRlbSk7Y291bnRlci1pbmNyZW1lbnQ6aXRlbTtmb250LWZlYXR1cmUtc2V0dGluZ3M6XCJ0bnVtXCI7dHJhbnNmb3JtOnNjYWxlKDAuODg4ODg4ODg4OSk7bWFyZ2luLWxlZnQ6LTAuMTQyMjIyMjIyMmNofS5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWxpc3QtLXVub3JkZXJlZD5saTpiZWZvcmV7Y29udGVudDpcIuKAolwiO2NvbG9yOmluaGVyaXQ7dHJhbnNmb3JtOnNjYWxlKDEuNTU1NTU1NTU1Nik7bWFyZ2luLXRvcDotMC4yNDg4ODg4ODg5Y2h9Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktY2FwdGlvbntmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MTZweDtjb2xvcjojMzMzMDJlfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1jYXB0aW9ue2ZvbnQtc2l6ZToxMi4xOHB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGxpbmV7Zm9udC1mYW1pbHk6RmluYW5jaWVyRGlzcGxheVdlYiwgc2VyaWY7Zm9udC1zaXplOjMycHg7bGluZS1oZWlnaHQ6MzJweDtmb250LXdlaWdodDo3MDA7bWFyZ2luOjB9Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGxpbmU6YWZ0ZXJ7Y29udGVudDpcIlwiO2Rpc3BsYXk6YmxvY2s7Ym9yZGVyLWJvdHRvbTpjYWxjKC4zNGV4ICsgMXB4KSBzb2xpZDt3aWR0aDpjYWxjKDdjaCAtIDEwcHgpO21heC13aWR0aDoxMDAlO3BhZGRpbmctdG9wOi40MTZlbX1AbWVkaWEobWluLXdpZHRoOiAzMC42MjVlbSl7Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGxpbmV7Zm9udC1zaXplOjQwcHg7bGluZS1oZWlnaHQ6NDBweH19QG1lZGlhKG1pbi13aWR0aDogNjEuMjVlbSl7Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGxpbmV7Zm9udC1zaXplOjQ4cHg7bGluZS1oZWlnaHQ6NDhweH19Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1kaXNwbGF5LWJvbGQgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGxpbmV7Zm9udC1zaXplOjI4LjhweDtmb250LWZhbWlseTpzZXJpZn1AbWVkaWEobWluLXdpZHRoOiAzMC42MjVlbSl7Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1kaXNwbGF5LWJvbGQgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGxpbmV7Zm9udC1zaXplOjM2cHh9fUBtZWRpYShtaW4td2lkdGg6IDYxLjI1ZW0pey5vLXR5cG9ncmFwaHktLWxvYWRpbmctZGlzcGxheS1ib2xkIC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWhlYWRsaW5le2ZvbnQtc2l6ZTo0My4ycHh9fS5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtMXttYXJnaW46MDtjb2xvcjojMzMzMDJlO2ZvbnQtZmFtaWx5OkZpbmFuY2llckRpc3BsYXlXZWIsIHNlcmlmO2ZvbnQtc2l6ZToyOHB4O2xpbmUtaGVpZ2h0OjMycHg7Zm9udC13ZWlnaHQ6NDAwfUBtZWRpYShtaW4td2lkdGg6IDMwLjYyNWVtKXsuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1oZWFkaW5nLWxldmVsLTF7Zm9udC1zaXplOjMycHg7bGluZS1oZWlnaHQ6MzJweH19QG1lZGlhKG1pbi13aWR0aDogNjEuMjVlbSl7Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC0xe2ZvbnQtc2l6ZTo0MHB4O2xpbmUtaGVpZ2h0OjQwcHh9fS5vLXR5cG9ncmFwaHktLWxvYWRpbmctZGlzcGxheSAuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1oZWFkaW5nLWxldmVsLTF7Zm9udC1zaXplOjI1LjJweDtmb250LWZhbWlseTpzZXJpZn1AbWVkaWEobWluLXdpZHRoOiAzMC42MjVlbSl7Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1kaXNwbGF5IC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtMXtmb250LXNpemU6MjguOHB4fX1AbWVkaWEobWluLXdpZHRoOiA2MS4yNWVtKXsuby10eXBvZ3JhcGh5LS1sb2FkaW5nLWRpc3BsYXkgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC0xe2ZvbnQtc2l6ZTozNnB4fX0uby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1oZWFkaW5nLWxldmVsLTJ7bWFyZ2luOjA7Y29sb3I6IzMzMzAyZTtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjI4cHg7bGluZS1oZWlnaHQ6MzJweDtmb250LXdlaWdodDo2MDB9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC0ye2ZvbnQtc2l6ZToyMy4yNHB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC0ze21hcmdpbjowO2NvbG9yOiMzMzMwMmU7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToyOHB4O2xpbmUtaGVpZ2h0OjMycHg7Zm9udC13ZWlnaHQ6NDAwfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1oZWFkaW5nLWxldmVsLTN7Zm9udC1zaXplOjI0LjM2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1oZWFkaW5nLWxldmVsLTR7bWFyZ2luOjA7Y29sb3I6IzMzMzAyZTtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjI0cHg7bGluZS1oZWlnaHQ6MjhweDtmb250LXdlaWdodDo0MDB9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtNHtmb250LXNpemU6MjAuODhweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtNXttYXJnaW46MDtjb2xvcjojMzMzMDJlO2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0OjQwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjVweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGluZy1sZXZlbC01e2ZvbnQtc2l6ZToxMy45MnB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktc3RhbmRmaXJzdHtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjIwcHg7bGluZS1oZWlnaHQ6MjRweDtjb2xvcjojMzMzMDJlfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1zdGFuZGZpcnN0e2ZvbnQtc2l6ZToxNy40cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1hdXRob3J7Y29sb3I6IzMzMzAyZTtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6NjAwfWEuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1hdXRob3J7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyLWJvdHRvbTowfWEuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1hdXRob3I6aG92ZXJ7Y29sb3I6Izk5MGYzZH0uby1lZGl0b3JpYWwtdHlwb2dyYXBoeS10b3BpY3tjb2xvcjojMzMzMDJlO2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXdlaWdodDo2MDB9YS5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LXRvcGlje2NvbG9yOiM5OTBmM2Q7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyLWJvdHRvbTowfWEuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS10b3BpYzpob3Zlcntjb2xvcjojNGQwODFmfS5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWJ5bGluZXtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjBweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktYnlsaW5le2ZvbnQtc2l6ZToxMy45MnB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktdGltZXN0YW1we3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjojNjY2MDVjfS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3Rle2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7cGFkZGluZy10b3A6MHB4O3BhZGRpbmctYm90dG9tOjBweDtwYWRkaW5nLWxlZnQ6MTZweH0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZSBwe21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjE2cHh9Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmJsb2NrcXVvdGUgcDpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZXtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItbGVmdDo0cHggc29saWQgIzFhMTgxNztjb2xvcjojMDAwfS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3RlIGF7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLWJvdHRvbTouMjVleCBzb2xpZDtjb2xvcjojMGQ3NjgwO2JvcmRlci1ib3R0b20tY29sb3I6I2NmZDhkMTt0ZXh0LWRlY29yYXRpb24tY29sb3I6I2NmZDhkMX1Ac3VwcG9ydHModGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMC4yNWV4KXsuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZSBhe2JvcmRlci1ib3R0b206MDt0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOi4yNWV4O3RleHQtZGVjb3JhdGlvbi1saW5lOnVuZGVybGluZX19Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmJsb2NrcXVvdGUgYTpob3Zlcntjb2xvcjojMDg0NzRkO2JvcmRlci1ib3R0b20tY29sb3I6IzllYzBiZDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzllYzBiZH0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZSBhOmZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiMwODQ3NGR9Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmJsb2NrcXVvdGUgY2l0ZSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZSBmb290ZXJ7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjIwcHg7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc3R5bGU6bm9ybWFsfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZSBjaXRlLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3RlIC5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyBjaXRlLC5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZSBmb290ZXIsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmJsb2NrcXVvdGUgLm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIGZvb3Rlcntmb250LXNpemU6MTUuNjZweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3RlIGNpdGUgYSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZSBmb290ZXIgYXt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcjtib3JkZXItYm90dG9tOi4yNWV4IHNvbGlkO2NvbG9yOiMwZDc2ODA7Ym9yZGVyLWJvdHRvbS1jb2xvcjojY2ZkOGQxO3RleHQtZGVjb3JhdGlvbi1jb2xvcjojY2ZkOGQxfUBzdXBwb3J0cyh0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAwLjI1ZXgpey5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3RlIGNpdGUgYSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZSBmb290ZXIgYXtib3JkZXItYm90dG9tOjA7dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczouMjVleDt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9fS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3RlIGNpdGUgYTpob3Zlciwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZSBmb290ZXIgYTpob3Zlcntjb2xvcjojMDg0NzRkO2JvcmRlci1ib3R0b20tY29sb3I6IzllYzBiZDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzllYzBiZH0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZSBjaXRlIGE6Zm9jdXMsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmJsb2NrcXVvdGUgZm9vdGVyIGE6Zm9jdXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjp0cmFuc3BhcmVudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzA4NDc0ZH0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YmxvY2txdW90ZSBmb290ZXI+Y2l0ZXtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjBweDtmb250LXdlaWdodDo2MDA7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3RlIGZvb3Rlcj5jaXRlLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3RlIC5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2Fucy1ib2xkIGZvb3Rlcj5jaXRle2ZvbnQtc2l6ZToxMy4yOHB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmJsb2NrcXVvdGU6YmVmb3Jle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3dpZHRoOjM2cHg7aGVpZ2h0OjM2cHg7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJodHRwczovL3d3dy5mdC5jb20vX19vcmlnYW1pL3NlcnZpY2UvaW1hZ2UvdjIvaW1hZ2VzL3Jhdy9mdGljb24tdjE6c3BlZWNoLWxlZnQ/c291cmNlPWlnLXByb2plY3RzJnRpbnQ9JTIzMUExODE3LCUyMzFBMTgxNyZmb3JtYXQ9c3ZnXCIpO2NvbnRlbnQ6XCJcIjtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Oi03LjJweDttYXJnaW4tdG9wOi03LjJweDttYXJnaW4tYm90dG9tOmNhbGMoMTZweCAtIDE0LjRweCl9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3RlOmJlZm9yZXtiYWNrZ3JvdW5kLWltYWdlOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0aWNvbi12MTpzcGVlY2gtbGVmdD9zb3VyY2U9aWctcHJvamVjdHMmdGludD0lMjNmZmZmZmYsJTIzZmZmZmZmJmZvcm1hdD1zdmdcIil9fUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYmxhY2stb24td2hpdGUpey5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3RlOmJlZm9yZXtiYWNrZ3JvdW5kLWltYWdlOnVybChcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3L2Z0aWNvbi12MTpzcGVlY2gtbGVmdD9zb3VyY2U9aWctcHJvamVjdHMmdGludD0lMjMwMDAwMDAsJTIzMDAwMDAwJmZvcm1hdD1zdmdcIil9fS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3RlIHB7Zm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZn0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+b2wsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPnVse21hcmdpbjowIDAgMjRweDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO21hcmdpbjowfS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5vbD5saSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+dWw+bGl7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7cGFkZGluZy1sZWZ0OmNhbGMoMmNoICsgNHB4KX0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+b2w+bGk6YmVmb3JlLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj51bD5saTpiZWZvcmV7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciBsZWZ0fS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMSwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMXttYXJnaW4tYm90dG9tOjRweDttYXJnaW4tdG9wOjB9Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgyLC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0ye21hcmdpbi1ib3R0b206MTRweDttYXJnaW4tdG9wOjMycHh9Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgzLC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0zLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oNCwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNHttYXJnaW4tYm90dG9tOjE0cHg7bWFyZ2luLXRvcDowfS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oNSwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNXttYXJnaW4tYm90dG9tOjRweDttYXJnaW4tdG9wOjB9Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmJsb2NrcXVvdGUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPm9sLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj51bCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+cCwuby1lZGl0b3JpYWwtbGF5b3V0LWJvZHl7bWFyZ2luLWJvdHRvbToyNHB4O21hcmdpbi10b3A6MH0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDErYmxvY2txdW90ZSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDErb2wsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgxK3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMStwLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMSsuby1lZGl0b3JpYWwtbGF5b3V0LWJvZHksLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPi5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0xK2Jsb2NrcXVvdGUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPi5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0xK29sLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj4uby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMSt1bCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTErcCwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMSsuby1lZGl0b3JpYWwtbGF5b3V0LWJvZHksLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgxK29sLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMSt1bCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTErb2wsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPi5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0xK3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMitibG9ja3F1b3RlLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMitvbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDIrdWwsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgyK3AsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgyKy5vLWVkaXRvcmlhbC1sYXlvdXQtYm9keSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTIrYmxvY2txdW90ZSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTIrb2wsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPi5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0yK3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj4uby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMitwLC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0yKy5vLWVkaXRvcmlhbC1sYXlvdXQtYm9keSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDIrb2wsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgyK3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj4uby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMitvbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTIrdWwsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgzK2Jsb2NrcXVvdGUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgzK29sLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMyt1bCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDMrcCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDMrLm8tZWRpdG9yaWFsLWxheW91dC1ib2R5LC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj4uby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMytibG9ja3F1b3RlLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj4uby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMytvbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTMrdWwsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPi5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0zK3AsLm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTMrLm8tZWRpdG9yaWFsLWxheW91dC1ib2R5LC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMytvbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDMrdWwsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPi5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0zK29sLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj4uby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMyt1bCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDQrYmxvY2txdW90ZSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDQrb2wsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg0K3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oNCtwLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oNCsuby1lZGl0b3JpYWwtbGF5b3V0LWJvZHksLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPi5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy00K2Jsb2NrcXVvdGUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPi5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy00K29sLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj4uby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNCt1bCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTQrcCwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNCsuby1lZGl0b3JpYWwtbGF5b3V0LWJvZHksLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg0K29sLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oNCt1bCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTQrb2wsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPi5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy00K3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oNStibG9ja3F1b3RlLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oNStvbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDUrdWwsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg1K3AsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg1Ky5vLWVkaXRvcmlhbC1sYXlvdXQtYm9keSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTUrYmxvY2txdW90ZSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTUrb2wsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPi5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy01K3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj4uby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNStwLC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy01Ky5vLWVkaXRvcmlhbC1sYXlvdXQtYm9keSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDUrb2wsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg1K3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj4uby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNStvbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTUrdWx7bWFyZ2luLXRvcDo0cHh9Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgxK2ZpZ3VyZSwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMStmaWd1cmUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgxK3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0xK3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMStvbCwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMStvbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDErYXNpZGUsLm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTErYXNpZGUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgxK2Rpdiwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMStkaXYsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgyK2ZpZ3VyZSwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMitmaWd1cmUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgyK3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0yK3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMitvbCwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMitvbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDIrYXNpZGUsLm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTIrYXNpZGUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgyK2Rpdiwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMitkaXYsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgzK2ZpZ3VyZSwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMytmaWd1cmUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgzK3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0zK3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMytvbCwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMytvbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDMrYXNpZGUsLm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTMrYXNpZGUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgzK2Rpdiwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMytkaXYsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg0K2ZpZ3VyZSwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNCtmaWd1cmUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg0K3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy00K3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oNCtvbCwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNCtvbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDQrYXNpZGUsLm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTQrYXNpZGUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg0K2Rpdiwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNCtkaXYsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg1K2ZpZ3VyZSwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNStmaWd1cmUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg1K3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy01K3VsLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oNStvbCwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNStvbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDUrYXNpZGUsLm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTUrYXNpZGUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg1K2Rpdiwuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNStkaXZ7bWFyZ2luLXRvcDoxNnB4fS5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0xe2NvbG9yOiMzMzMwMmU7Zm9udC1mYW1pbHk6RmluYW5jaWVyRGlzcGxheVdlYiwgc2VyaWY7Zm9udC1zaXplOjI4cHg7bGluZS1oZWlnaHQ6MzJweDtmb250LXdlaWdodDo0MDB9QG1lZGlhKG1pbi13aWR0aDogMzAuNjI1ZW0pey5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0xe2ZvbnQtc2l6ZTozMnB4O2xpbmUtaGVpZ2h0OjMycHh9fUBtZWRpYShtaW4td2lkdGg6IDYxLjI1ZW0pey5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0xe2ZvbnQtc2l6ZTo0MHB4O2xpbmUtaGVpZ2h0OjQwcHh9fS5vLXR5cG9ncmFwaHktLWxvYWRpbmctZGlzcGxheSAuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMXtmb250LXNpemU6MjUuMnB4O2ZvbnQtZmFtaWx5OnNlcmlmfUBtZWRpYShtaW4td2lkdGg6IDMwLjYyNWVtKXsuby10eXBvZ3JhcGh5LS1sb2FkaW5nLWRpc3BsYXkgLm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTF7Zm9udC1zaXplOjI4LjhweH19QG1lZGlhKG1pbi13aWR0aDogNjEuMjVlbSl7Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1kaXNwbGF5IC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0xe2ZvbnQtc2l6ZTozNnB4fX0uby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMntjb2xvcjojMzMzMDJlO2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MjhweDtsaW5lLWhlaWdodDozMnB4O2ZvbnQtd2VpZ2h0OjYwMH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMtYm9sZCAuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMntmb250LXNpemU6MjMuMjRweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0ze2NvbG9yOiMzMzMwMmU7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToyOHB4O2xpbmUtaGVpZ2h0OjMycHg7Zm9udC13ZWlnaHQ6NDAwfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctM3tmb250LXNpemU6MjQuMzZweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy00e2NvbG9yOiMzMzMwMmU7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToyNHB4O2xpbmUtaGVpZ2h0OjI4cHg7Zm9udC13ZWlnaHQ6NDAwfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNHtmb250LXNpemU6MjAuODhweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy01e2NvbG9yOiMzMzMwMmU7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjIwcHg7Zm9udC13ZWlnaHQ6NDAwO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtsZXR0ZXItc3BhY2luZzouNXB4fS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNXtmb250LXNpemU6MTMuOTJweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLWVkaXRvcmlhbC1sYXlvdXQtYm9keXtmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjEuNjtjb2xvcjojMzMzMDJlfUBtZWRpYShtaW4td2lkdGg6IDc2LjI1ZW0pey5vLWVkaXRvcmlhbC1sYXlvdXQtYm9keXtmb250LXNpemU6MjBweDtsaW5lLWhlaWdodDoxLjZ9fS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMXtjb2xvcjojMzMzMDJlO2ZvbnQtZmFtaWx5OkZpbmFuY2llckRpc3BsYXlXZWIsIHNlcmlmO2ZvbnQtc2l6ZToyOHB4O2xpbmUtaGVpZ2h0OjMycHg7Zm9udC13ZWlnaHQ6NDAwfUBtZWRpYShtaW4td2lkdGg6IDMwLjYyNWVtKXsuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDF7Zm9udC1zaXplOjMycHg7bGluZS1oZWlnaHQ6MzJweH19QG1lZGlhKG1pbi13aWR0aDogNjEuMjVlbSl7Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgxe2ZvbnQtc2l6ZTo0MHB4O2xpbmUtaGVpZ2h0OjQwcHh9fS5vLXR5cG9ncmFwaHktLWxvYWRpbmctZGlzcGxheSAuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDF7Zm9udC1zaXplOjI1LjJweDtmb250LWZhbWlseTpzZXJpZn1AbWVkaWEobWluLXdpZHRoOiAzMC42MjVlbSl7Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1kaXNwbGF5IC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oMXtmb250LXNpemU6MjguOHB4fX1AbWVkaWEobWluLXdpZHRoOiA2MS4yNWVtKXsuby10eXBvZ3JhcGh5LS1sb2FkaW5nLWRpc3BsYXkgLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgxe2ZvbnQtc2l6ZTozNnB4fX0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDJ7Y29sb3I6IzMzMzAyZTtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjI4cHg7bGluZS1oZWlnaHQ6MzJweDtmb250LXdlaWdodDo2MDB9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zLWJvbGQgLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgye2ZvbnQtc2l6ZToyMy4yNHB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmgze2NvbG9yOiMzMzMwMmU7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToyOHB4O2xpbmUtaGVpZ2h0OjMycHg7Zm9udC13ZWlnaHQ6NDAwfS5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDN7Zm9udC1zaXplOjI0LjM2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aDR7Y29sb3I6IzMzMzAyZTtmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjI0cHg7bGluZS1oZWlnaHQ6MjhweDtmb250LXdlaWdodDo0MDB9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oNHtmb250LXNpemU6MjAuODhweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5oNXtjb2xvcjojMzMzMDJlO2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0OjQwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjVweH0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmg1e2ZvbnQtc2l6ZToxMy45MnB4O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmJsb2NrcXVvdGUsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPm9sLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj51bCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+cHtmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjEuNjtjb2xvcjojMzMzMDJlfUBtZWRpYShtaW4td2lkdGg6IDc2LjI1ZW0pey5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3RlLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5vbCwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+dWwsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPnB7Zm9udC1zaXplOjIwcHg7bGluZS1oZWlnaHQ6MS42fX0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+b2x7Y291bnRlci1yZXNldDppdGVtfS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5vbD5saTpiZWZvcmV7Zm9udC13ZWlnaHQ6NjAwO2NvbnRlbnQ6Y291bnRlcihpdGVtKTtjb3VudGVyLWluY3JlbWVudDppdGVtO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpcInRudW1cIjt0cmFuc2Zvcm06c2NhbGUoMC44ODg4ODg4ODg5KTttYXJnaW4tbGVmdDotMC4xNDIyMjIyMjIyY2h9Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPnVsPmxpOmJlZm9yZXtjb250ZW50Olwi4oCiXCI7Y29sb3I6aW5oZXJpdDt0cmFuc2Zvcm06c2NhbGUoMS41NTU1NTU1NTU2KTttYXJnaW4tdG9wOi0wLjI0ODg4ODg4ODljaH0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+Zm9vdGVye2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYiwgc2Fucy1zZXJpZjtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyNHB4O2NvbG9yOiMzMzMwMmV9Lm8tdHlwb2dyYXBoeS0tbG9hZGluZy1zYW5zIC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5mb290ZXJ7Zm9udC1zaXplOjE1LjY2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+ZmlndXJlPmZpZ2NhcHRpb24sLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmZpZ2NhcHRpb257Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE2cHg7Y29sb3I6IzMzMzAyZX0uby10eXBvZ3JhcGh5LS1sb2FkaW5nLXNhbnMgLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmZpZ3VyZT5maWdjYXB0aW9uLC5vLXR5cG9ncmFwaHktLWxvYWRpbmctc2FucyAuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+ZmlnY2FwdGlvbntmb250LXNpemU6MTIuMThweDtmb250LWZhbWlseTpzYW5zLXNlcmlmfS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5ibG9ja3F1b3Rle21hcmdpbi1ib3R0b206MjhweDttYXgtd2lkdGg6NTYuMjVjaH0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+cCBhLC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5he3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO2JvcmRlci1ib3R0b206LjI1ZXggc29saWQ7Y29sb3I6IzBkNzY4MDtib3JkZXItYm90dG9tLWNvbG9yOiNjZmQ4ZDE7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiNjZmQ4ZDF9QHN1cHBvcnRzKHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDAuMjVleCl7Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPnAgYSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YXtib3JkZXItYm90dG9tOjA7dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczouMjVleDt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9fS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5wIGE6aG92ZXIsLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPmE6aG92ZXJ7Y29sb3I6IzA4NDc0ZDtib3JkZXItYm90dG9tLWNvbG9yOiM5ZWMwYmQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiM5ZWMwYmR9Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPnAgYTpmb2N1cywuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+YTpmb2N1c3tib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O3RleHQtZGVjb3JhdGlvbi1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojMDg0NzRkfS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5wIHN0cm9uZywuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+c3Ryb25ne2ZvbnQtd2VpZ2h0OjcwMH0uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+cCBlbSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+ZW0sLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyPnAgaSwuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+aXtmb250LXN0eWxlOml0YWxpY30uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXI+cCBzdXB7Zm9udC1mYW1pbHk6TWV0cmljV2ViLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTouNjY2ZW07cG9zaXRpb246c3RhdGljO3ZlcnRpY2FsLWFsaWduOnN1cGVyO2xpbmUtaGVpZ2h0OjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXRvcDotMWVtfS5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlcj5wIHN1Yntmb250LWZhbWlseTpNZXRyaWNXZWIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOi42NjZlbTtwb3NpdGlvbjpzdGF0aWM7dmVydGljYWwtYWxpZ246c3ViO2xpbmUtaGVpZ2h0OjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWJvdHRvbTotMWVtfWh0bWw6YmVmb3Jle2Rpc3BsYXk6bm9uZTtjb250ZW50Oid7XCJsYXlvdXRzXCI6IHtcIlNcIjogXCI0OTBweFwiLCBcIk1cIjogXCI3NDBweFwiLCBcIkxcIjogXCI5ODBweFwiLCBcIlhMXCI6IFwiMTIyMHB4XCJ9fSd9aHRtbCxib2R5e21hcmdpbjowO3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upe2h0bWwgKixodG1sICo6YmVmb3JlLGh0bWwgKjphZnRlcixib2R5ICosYm9keSAqOmJlZm9yZSxib2R5ICo6YWZ0ZXJ7YW5pbWF0aW9uLWR1cmF0aW9uOi4wMDFzICFpbXBvcnRhbnQ7dHJhbnNpdGlvbi1kdXJhdGlvbjouMDAxcyAhaW1wb3J0YW50O2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6MSAhaW1wb3J0YW50fX1tYWlue2Rpc3BsYXk6YmxvY2t9Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIDpmb2N1cyxodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3Vze291dGxpbmU6MnB4IHNvbGlkICM4MDc5NzN9Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIGlucHV0OmZvY3VzLGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cyxib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgc2VsZWN0OmZvY3VzLGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cyxodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMsaHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1c3tib3gtc2hhZG93OjAgMCAwIDFweCAjODA3OTczfWJvZHkuanMtZm9jdXMtdmlzaWJsZSAuZm9jdXMtdmlzaWJsZSxodG1sLmpzLWZvY3VzLXZpc2libGUgLmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgIzgwNzk3M31ib2R5LmpzLWZvY3VzLXZpc2libGUgaW5wdXQuZm9jdXMtdmlzaWJsZSxib2R5LmpzLWZvY3VzLXZpc2libGUgdGV4dGFyZWEuZm9jdXMtdmlzaWJsZSxib2R5LmpzLWZvY3VzLXZpc2libGUgc2VsZWN0LmZvY3VzLXZpc2libGUsaHRtbC5qcy1mb2N1cy12aXNpYmxlIGlucHV0LmZvY3VzLXZpc2libGUsaHRtbC5qcy1mb2N1cy12aXNpYmxlIHRleHRhcmVhLmZvY3VzLXZpc2libGUsaHRtbC5qcy1mb2N1cy12aXNpYmxlIHNlbGVjdC5mb2N1cy12aXNpYmxle2JveC1zaGFkb3c6MCAwIDAgMXB4ICM4MDc5NzN9Ym9keS5qcy1mb2N1cy12aXNpYmxlIDpmb2N1czpub3QoLmZvY3VzLXZpc2libGUpLGh0bWwuanMtZm9jdXMtdmlzaWJsZSA6Zm9jdXM6bm90KC5mb2N1cy12aXNpYmxlKXtvdXRsaW5lOjB9OmZvY3VzLXZpc2libGUsYm9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIDpmb2N1cyxodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3Vze291dGxpbmU6dW5zZXR9OmZvY3VzLXZpc2libGUsYm9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIGlucHV0OmZvY3VzLGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cyxib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMsaHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHRleHRhcmVhOmZvY3VzLGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMsaHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1c3tib3gtc2hhZG93OnVuc2V0fWJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMtdmlzaWJsZSxodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzLXZpc2libGUsOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgIzgwNzk3M31ib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMtdmlzaWJsZSxodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMtdmlzaWJsZSxib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSxodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSxib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgc2VsZWN0OmZvY3VzLXZpc2libGUsaHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cy12aXNpYmxlLGlucHV0OmZvY3VzLXZpc2libGUsdGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSxzZWxlY3Q6Zm9jdXMtdmlzaWJsZXtib3gtc2hhZG93OjAgMCAwIDFweCAjODA3OTczfWh0bWw6Zm9jdXMsYm9keTpmb2N1cyxbcmVhZG9ubHldOmZvY3Vze291dGxpbmU6bm9uZX1he2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9YTphY3RpdmUsYTpob3ZlcntvdXRsaW5lLXdpZHRoOjB9YWJiclt0aXRsZV17Ym9yZGVyLWJvdHRvbTowO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6aW5oZXJpdH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9ZGZue2ZvbnQtc3R5bGU6aXRhbGljfXN1YixzdXB7Zm9udC1zaXplOjc1JTtsaW5lLWhlaWdodDowO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXN1Yntib3R0b206LTAuMjVlbX1zdXB7dG9wOi0wLjVlbX1pbWd7Ym9yZGVyLXN0eWxlOm5vbmV9b3B0Z3JvdXB7Zm9udC13ZWlnaHQ6Ym9sZH1idXR0b24saW5wdXQsc2VsZWN0e292ZXJmbG93OnZpc2libGV9YnV0dG9uLGlucHV0LHNlbGVjdCx0ZXh0YXJlYXttYXJnaW46MH1idXR0b24sc2VsZWN0e3RleHQtdHJhbnNmb3JtOm5vbmV9YnV0dG9uLFt0eXBlPWJ1dHRvbl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF17Y3Vyc29yOnBvaW50ZXJ9W2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjA7cGFkZGluZzowfXRleHRhcmVhe292ZXJmbG93OmF1dG99Lm8tbm9ybWFsaXNlLWNsZWFyZml4e3pvb206MX0uby1ub3JtYWxpc2UtY2xlYXJmaXg6YmVmb3JlLC5vLW5vcm1hbGlzZS1jbGVhcmZpeDphZnRlcntjb250ZW50OlwiXCI7ZGlzcGxheTp0YWJsZTtkaXNwbGF5OmZsZXh9Lm8tbm9ybWFsaXNlLWNsZWFyZml4OmFmdGVye2NsZWFyOmJvdGh9Lm8tbm9ybWFsaXNlLXZpc3VhbGx5LWhpZGRlbntwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMCAwIDAgMCk7Y2xpcC1wYXRoOnBvbHlnb24oMCAwLCAwIDApO21hcmdpbjotMXB4O2JvcmRlcjowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7d2lkdGg6MnB4O2hlaWdodDoycHg7d2hpdGUtc3BhY2U6bm93cmFwfWh0bWx7LW1zLXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJX1odG1sLGJvZHl7YmFja2dyb3VuZC1jb2xvcjojZmZmMWU1O2ZvbnQtZmFtaWx5Ok1ldHJpY1dlYixzYW5zLXNlcmlmO21hcmdpbjowO3BhZGRpbmc6MH1tYWlue2Rpc3BsYXk6YmxvY2t9LmNvcmUgLm8tLWlmLWpzLC5lbmhhbmNlZCAuby0taWYtbm8tanMsLmlzLW5leHQgLmhpZGUtbmV4dCwuaXMtZmFsY29uIC5oaWRlLWZhbGNvbiwuaXMtbG9nZ2VkaW4gLmhpZGUtbG9nZ2VkaW4sLmlzLWFub255bW91cyAuaGlkZS1hbm9ueW1vdXN7ZGlzcGxheTpub25lICFpbXBvcnRhbnR9LnNob3ctbG9nZ2VkaW4sLnNob3ctYW5vbnltb3VzLC5zaG93LW5leHQsLnNob3ctZmFsY29uLC5oaWRlLWZhbGNvbiwuaGlkZS1uZXh0LC5oaWRlLWxvZ2dlZGluLC5oaWRlLWFub255bW91c3tkaXNwbGF5Om5vbmV9LmlzLWxvZ2dlZGluIC5zaG93LWxvZ2dlZGluLC5pcy1hbm9ueW1vdXMgLnNob3ctYW5vbnltb3VzLC5pcy1uZXh0IC5zaG93LW5leHQsLmlzLWZhbGNvbiAuc2hvdy1mYWxjb24sLmlzLWZhbGNvbiAuaGlkZS1uZXh0LC5pcy1uZXh0IC5oaWRlLWZhbGNvbntkaXNwbGF5OmluaGVyaXR9Ym9keXtiYWNrZ3JvdW5kOiNmZmYxZTU7bWFyZ2luOjA7Ym9yZGVyOjA7Zm9udC1mYW1pbHk6TWV0cmljV2ViLHNhbnMtc2VyaWZ9LmFydGljbGUtaGVhZHttYXJnaW4tdG9wOjE4cHg7bWFyZ2luLWJvdHRvbTowfS5ncmFwaGlje2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjEwMCU7bWFyZ2luOjA7cGFkZGluZzowO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlfS5ncmFwaGljPmltZywuZ3JhcGhpYz5zdmd7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bztkaXNwbGF5OmJsb2NrfS5ncmFwaGljLWItMHttYXgtd2lkdGg6NjI1cHh9LmdyYXBoaWMtYi0xe21heC13aWR0aDo3MDBweH0uZGFya3tiYWNrZ3JvdW5kLWNvbG9yOiMyNjJhMzN9LmRhcmsgYm9keXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXR9LmRhcmsgLnBpbmt7YmFja2dyb3VuZDojZmZmMWU1O3BhZGRpbmc6MWVtIDB9QG1lZGlhKG1pbi13aWR0aDogNDYuMjVlbSl7LmRhcmsgLnBpbmt7cGFkZGluZzoyZW0gMH19LmRhcmsgLmFydGljbGUgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktdG9waWMsLmRhcmsgLmFydGljbGUgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktYXV0aG9ye2NvbG9yOiNmZmZ9LmRhcmsgLmFydGljbGUgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktdG9waWM6aG92ZXIsLmRhcmsgLmFydGljbGUgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktYXV0aG9yOmhvdmVye2NvbG9yOiNjNGM1Yzh9LmRhcmsgLmFydGljbGUgaDEsLmRhcmsgLmFydGljbGUgaDIsLmRhcmsgLmFydGljbGUgaDMsLmRhcmsgLmFydGljbGUgaDQsLmRhcmsgLmFydGljbGUgaDUsLmRhcmsgLmFydGljbGUgaDZ7Y29sb3I6I2ZmZn0uZGFyayAuYXJ0aWNsZSAuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1zdGFuZGZpcnN0e2NvbG9yOiNjNGM1Yzh9LmRhcmsgLmFydGljbGUgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktc3RhbmRmaXJzdCBhe2NvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2M0YzVjOH0uZGFyayAuYXJ0aWNsZSAuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS1zdGFuZGZpcnN0IGE6aG92ZXJ7Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2ZmZn0uZGFyayAuYXJ0aWNsZSBwLC5kYXJrIC5hcnRpY2xlIC5vLWRhdGUsLmRhcmsgLmFydGljbGUgLmJ5bGluZSwuZGFyayAuYXJ0aWNsZSBzbWFsbHtjb2xvcjojYzRjNWM4fS5kYXJrIC5hcnRpY2xlIGZpZ2NhcHRpb24sLmRhcmsgLmFydGljbGUgZmlnY2FwdGlvbiBhLC5kYXJrIC5hcnRpY2xlIGZvb3RlciBzbWFsbCBhe2NvbG9yOiM5Nzk3OTd9LmRhcmsgLmFydGljbGUgcCBhe2NvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2M0YzVjOH0uZGFyayAuYXJ0aWNsZSBwIGE6aG92ZXJ7Y29sb3I6I2ZmZjtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjZmZmfS5kYXJrIC5hcnRpY2xlIHAgYTpmb2N1c3tjb2xvcjojZmZmO2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnR9LmRhcmsgLmFydGljbGUgcHtmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjEuNn1AbWVkaWEobWluLXdpZHRoOiA3Ni4yNWVtKXsuZGFyayAuYXJ0aWNsZSBwe2ZvbnQtc2l6ZToyMHB4O2xpbmUtaGVpZ2h0OjEuNn19LmRhcmsgLmFydGljbGUgb2wgbGksLmRhcmsgLmFydGljbGUgdWwgbGl7Zm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZjtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyOHB4O2NvbG9yOiNjNGM1Yzh9LmRhcmsgLmFydGljbGUgb2wgbGk6OmJlZm9yZSwuZGFyayAuYXJ0aWNsZSB1bCBsaTo6YmVmb3Jle2NvbG9yOiNjNGM1YzggIWltcG9ydGFudH0uZGFyayAub253YXJkLWpvdXJuZXkgYSwuZGFyayAub253YXJkLWpvdXJuZXkgaDJ7Y29sb3I6I2ZmZn0uZGFyayAub253YXJkLWpvdXJuZXkgYTpob3ZlciwuZGFyayAub253YXJkLWpvdXJuZXkgaDI6aG92ZXJ7Y29sb3I6I2M0YzVjOH0uZGFyayAub253YXJkLWpvdXJuZXkgYTpmb2N1cywuZGFyayAub253YXJkLWpvdXJuZXkgaDI6Zm9jdXN7Y29sb3I6I2M0YzVjOH0uZGFyayAub253YXJkLWpvdXJuZXkgYTp2aXNpdGVkLC5kYXJrIC5vbndhcmQtam91cm5leSBoMjp2aXNpdGVke2NvbG9yOiNmZmZ9LmRhcmsgLm9ud2FyZC1qb3VybmV5IC5vLWRhdGV7Y29sb3I6I2M0YzVjOH0iLCIvLy8gT3V0cHV0IGN1c3RvbSBGb250LWZhY2UgZGVjbGFyYXRpb25zIGFuZCByZWdpc3RlciB0aGUgZmFtaWx5IGFuZCB2YXJpYW50cyB3aXRoIG8tZm9udHMuXG4vLy9cbi8vLyBAZXhhbXBsZSBUaGlzIGV4YW1wbGUgc2hvd3MgcmVnaXN0ZXJpbmcgYSBjdXN0b20gZm9udCBcIk15Rm9udFwiIHdpdGggXCJzYW5zXCIgZmFsbGJhY2suIFRoZSBmb250IGFsbG93cyByZWd1bGFyIG9yIGJvbGQgdmFyaWFudHMuXG4vLy8gXHRAaW5jbHVkZSBvRm9udHNEZWZpbmVDdXN0b21Gb250KCdNeUZvbnQsIHNhbnMnLCAoXG4vLy8gXHRcdCh3ZWlnaHQ6IHJlZ3VsYXIsIHN0eWxlOiBub3JtYWwpLFxuLy8vIFx0XHQod2VpZ2h0OiBib2xkLCBzdHlsZTogbm9ybWFsKVxuLy8vIFx0KSkge1xuLy8vIFx0XHRAZm9udC1mYWNlIHtcbi8vLyBcdFx0XHRzcmM6IHVybCgnTXlGb250LVRoaW4ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIHVybCgnTXlGb250LVRoaW4ud29mZicpIGZvcm1hdCgnd29mZicpO1xuLy8vIFx0XHRcdGZvbnQtZmFtaWx5OiBNeUZvbnQ7XG4vLy8gXHRcdFx0Zm9udC13ZWlnaHQ6IDEwMDtcbi8vLyBcdFx0XHRmb250LXN0eWxlOiBub3JtYWw7XG4vLy8gXHRcdH1cbi8vL1xuLy8vIFx0XHRAZm9udC1mYWNle1xuLy8vIFx0XHRcdHNyYzogdXJsKCdNeUZvbnQtQm9sZC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSwgdXJsKCdNeUZvbnQtQm9sZC53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4vLy8gXHRcdFx0Zm9udC1mYW1pbHk6IE15Rm9udDtcbi8vLyBcdFx0XHRmb250LXdlaWdodDogNzAwO1xuLy8vIFx0XHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcbi8vLyBcdFx0fVxuLy8vIFx0fTtcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udC1mYW1pbHkgVGhlIGN1c3RvbSBmb250IGZhbWlseSB3aXRoIGZhbGxiYWNrIGUuZy4gJ0NvbWljU2Fucywgc2Fucydcbi8vLyBAcGFyYW0ge01hcH0gJHZhcmlhbnRzIFRoZSB2YXJpYW50cyAod2VpZ2h0IGFuZCBzdHlsZSBjb21iaW5hdGlvbnMpIHdoaWNoIGFyZSBhbGxvd2VkIGluIGEgbmVzdGVkIG1hcCBlLmcuICgod2VpZ2h0OiBib2xkLCBzdHlsZTogbm9ybWFsKSwgKHdlaWdodDogcmVndWxhciwgc3R5bGU6IG5vcm1hbCkpXG4vLy8gQGNvbnRlbnQgSWYgdGhlIGZvbnQgZmFtaWx5IGlzIG5vdCBhIHN5c3RlbSBmb250LCBvdXRwdXQgdGhlIGZvbnQtZmFjZSBmb3IgdGhlIGN1c3RvbSBmb250IGluIHRoZSBtaXhpbiBjb250ZW50LlxuQG1peGluIG9Gb250c0RlZmluZUN1c3RvbUZvbnQoJGZvbnQtZmFtaWx5LCAkdmFyaWFudHMpIHtcblx0Ly8gVmFsaWRhdGUgdmFyaWFudHMuXG5cdEBlYWNoICR2YXJpYW50IGluICR2YXJpYW50cyB7XG5cdFx0JHdlaWdodDogbWFwLWdldCgkdmFyaWFudCwgJ3dlaWdodCcpO1xuXHRcdCRzdHlsZTogbWFwLWdldCgkdmFyaWFudCwgJ3N0eWxlJyk7XG5cdFx0QGlmIHR5cGUtb2YoJHdlaWdodCkgIT0gJ3N0cmluZycgYW5kIG1hcC1oYXMta2V5KCRfby1mb250cy13ZWlnaHRzLCAkd2VpZ2h0KSB7XG5cdFx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBpbmNsdWRlIGN1c3RvbSBmb250IFwiI3skZm9udC1mYW1pbHl9XCIuIEFsbCB2YXJpYW50cyBtdXN0IHNwZWNpZnkgYSB3ZWlnaHQsIG9uZSBvZiBcIiN7JF9vLWZvbnRzLXdlaWdodHN9XCIuJztcblx0XHR9XG5cdFx0QGlmIHR5cGUtb2YoJHN0eWxlKSAhPSAnc3RyaW5nJyB7XG5cdFx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBpbmNsdWRlIGN1c3RvbSBmb250IFwiI3skZm9udC1mYW1pbHl9XCIuIEFsbCB2YXJpYW50cyBtdXN0IHNwZWNpZnkgYSBzdHlsZSwgZS5nLiBcIm5vcm1hbFwiLCBcIml0YWxpY1wiLic7XG5cdFx0fVxuXHR9XG5cdCRmb250LWtleTogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZvbnQtZmFtaWx5KTtcblx0JF9vLWZvbnRzLWZhbWlsaWVzOiBtYXAtbWVyZ2UoKCRmb250LWtleTogKFxuXHRcdCdmb250LWZhbWlseSc6ICRmb250LWZhbWlseSxcblx0XHQndmFyaWFudHMnOiAkdmFyaWFudHMsXG5cdFx0J2N1c3RvbSc6IHRydWVcblx0KSksICRfby1mb250cy1mYW1pbGllcykgIWdsb2JhbDtcblx0QGNvbnRlbnQ7IC8vIE91dHB1dCBhIGN1c3RvbSBGb250LWZhY2UgZGVjbGFyYXRpb24uXG59XG5cbi8vLyBSZWdpc3RlciB3aGljaCBmb250cyBoYXZlIGJlZW4gb3V0cHV0IGJ5IGFscmVhZHkgZm9yIHlvdXIgcHJvamVjdC5cbi8vLyBUaGlzIG1peGluIGlzIHVzZWZ1bCBpZiBhIHByb2plY3QgY2FsbHMgdGhlIGBvRm9udHNgIG1peGluIGlzIGluIGEgZGlmZmVyZW50XG4vLy8gZW50cnkgcG9pbnQuXG4vLy9cbi8vLyBAZXhhbXBsZSBJbmNsdWRlIGFsbCBmb250cyBmb3IgdGhlIGN1cnJlbnQgYnJhbmQgKGNvcmUsIGludGVybmFsLCB3aGl0ZWxhYmVsKS5cbi8vLyAgICAgQGluY2x1ZGUgb0ZvbnRzVmFyaWFudHNJbmNsdWRlZCgpO1xuLy8vXG4vLy8gQGV4YW1wbGUgSW5jbHVkZSBhIGxpbWl0ZWQgc2V0IG9mIHJlY29tbWVuZGVkIGZvbnRzIGZvciB0aGUgY3VycmVudCBicmFuZCAoY29yZSwgaW50ZXJuYWwsIHdoaXRlbGFiZWwpLlxuLy8vICAgICBAaW5jbHVkZSBvRm9udHNWYXJpYW50c0luY2x1ZGVkKCRvcHRzOiAoJ3JlY29tbWVuZGVkJzogdHJ1ZSkpO1xuLy8vXG4vLy8gQGV4YW1wbGUgSW5jbHVkZSBhIGxpbWl0ZWQgc2V0IG9mIHJlY29tbWVuZGVkIGZvbnRzIGZvciB0aGUgY3VycmVudCBicmFuZCwgcGx1cyBhbiBleHRyYSBGaW5hbmNpZXJEaXNwbGF5V2ViIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvRm9udHNWYXJpYW50c0luY2x1ZGVkKCRvcHRzOiAoXG4vLy8gXHRcdCdyZWNvbW1lbmRlZCc6IHRydWUsXG4vLy8gXHRcdCdmaW5hbmNpZXItZGlzcGxheSc6IChcbi8vLyBcdFx0XHQod2VpZ2h0OiByZWd1bGFyLCBzdHlsZTogbm9ybWFsKVxuLy8vIFx0XHQpXG4vLy8gXHQpKTtcbi8vL1xuLy8vIEBleGFtcGxlIEluY2x1ZGUgb25seSByZWd1bGFyIGFuZCBzZW1pYm9sZCBNZXRyaWNXZWIgZm9udCBmYWNlcy5cbi8vLyAgICAgQGluY2x1ZGUgb0ZvbnRzVmFyaWFudHNJbmNsdWRlZCgkb3B0czogKCdtZXRyaWMnOiAoXG4vLy8gICAgIFx0KHdlaWdodDogcmVndWxhciwgc3R5bGU6IG5vcm1hbCksXG4vLy8gICAgIFx0KHdlaWdodDogc2VtaWJvbGQsIHN0eWxlOiBub3JtYWwpLFxuLy8vICAgICApKSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBJbmNsdWRlIG9ubHkgcmVndWxhciBhbmQgYm9sZCBGaW5hbmNpZXJEaXNwbGF5V2ViIGZvbnQgZmFjZXMuXG4vLy8gICAgIEBpbmNsdWRlIG9Gb250c1ZhcmlhbnRzSW5jbHVkZWQoJG9wdHM6ICgnZmluYW5jaWVyLWRpc3BsYXknOiAoXG4vLy8gICAgIFx0KHdlaWdodDogcmVndWxhciwgc3R5bGU6IG5vcm1hbCksXG4vLy8gICAgIFx0KHdlaWdodDogc2VtaWJvbGQsIHN0eWxlOiBub3JtYWwpLFxuLy8vICAgICApKSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBJbmNsdWRlIG9ubHkgcmVndWxhciBmb250IGZhY2VzIGZvciBNZXRyaWNXZWIgYW5kIEZpbmFuY2llckRpc3BsYXlXZWIuXG4vLy8gICAgIEBpbmNsdWRlIG9Gb250c1ZhcmlhbnRzSW5jbHVkZWQoJG9wdHM6IChcbi8vLyAgICAgXHQnbWV0cmljJzogKCh3ZWlnaHQ6IHJlZ3VsYXIsIHN0eWxlOiBub3JtYWwpKSxcbi8vLyAgICAgXHQnZmluYW5jaWVyLWRpc3BsYXknOiAoKHdlaWdodDogcmVndWxhciwgc3R5bGU6IG5vcm1hbCkpXG4vLy8gICAgICkpO1xuLy8vIEBwYXJhbSB7TWFwfSAkb3B0cyAtIHRoZSBmb250IGZhY2VzIHRvIGluY2x1ZGVkLCBzZWUgdGhlIFJFQURNRSBvciBleGFtcGxlcyBmb3IgbW9yZSBkZXRhaWxzLlxuLy8vIEBzZWUgb0ZvbnRzIC0gVXNlIGBvRm9udHNgIHRvIGluY2x1ZGUgZm9udCBmYWNlcy5cbkBtaXhpbiBvRm9udHNWYXJpYW50c0luY2x1ZGVkKCRvcHRzOiAkX28tZm9udHMtZGVmYXVsdCkge1xuXHQkdmFyaWFudHM6IF9vRm9udHNPcHRpb25zVG9WYXJpYW50cygkb3B0cyk7XG5cblx0QGVhY2ggJHZhcmlhbnQgaW4gJHZhcmlhbnRzIHtcblx0XHQkZmFtaWx5OiBtYXAtZ2V0KCR2YXJpYW50LCAnZmFtaWx5Jyk7XG5cdFx0JHdlaWdodDogbWFwLWdldCgkdmFyaWFudCwgJ3dlaWdodCcpO1xuXHRcdCRzdHlsZTogbWFwLWdldCgkdmFyaWFudCwgJ3N0eWxlJyk7XG5cdFx0QGluY2x1ZGUgX29Gb250c1ZhcmlhbnRJbmNsdWRlZCgkZmFtaWx5LCAkd2VpZ2h0LCAkc3R5bGUpO1xuXHR9XG59XG5cbi8vLyBPdXRwdXQgYSBGb250LWZhY2UgZGVjbGFyYXRpb24gZm9yIGEgZ2l2ZW4gZm9udCBmYW1pbHkgd2hpY2ggaXMgcHJvdmlkZWQgYnkgT3JpZ2FtaS5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZmFtaWx5IC0gb25lIG9mICRfby1mb250cy1mYW1pbGllc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkd2VpZ2h0IFtyZWd1bGFyXSAtIGUuZy4gJ3JlZ3VsYXInLCAnc2VtaWJvbGQnLCAnYm9sZCdcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0eWxlIFtub3JtYWxdIC0gZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7U3RyaW5nfE51bGx9ICRkaXNwbGF5IC0gdGhlIGZvbnQtZGlzcGxheSBwcm9wZXJ0eSBmb3IgdGhpcyBmb250IGZhY2UsIGRlZmF1bHRzIHRvICRvLWZvbnRzLWRpc3BsYXlcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb0ZvbnRzSW5jbHVkZSgkZmFtaWx5LCAkd2VpZ2h0OiByZWd1bGFyLCAkc3R5bGU6IG5vcm1hbCwgJGRpc3BsYXk6ICRvLWZvbnRzLWRpc3BsYXkpIHtcblx0Ly8gSGVscCB1c2VyIGlmIHRoZXkgcmVxdWVzdGVkIGEgbm9ybWFsIHJhdGhlciB0aGFuIHJlZ3VsYXIgd2VpZ2h0LlxuXHRAaWYgJHdlaWdodCA9PSBub3JtYWwge1xuXHRcdEB3YXJuICdcIm5vcm1hbFwiIGlzIG5vdCBhIGZvbnQgd2VpZ2h0IGZvciBcIiN7JGZhbWlseX1cIi4gUmVxdWVzdCBhIFwicmVndWxhclwiIHdlaWdodCBpbnN0ZWFkLic7XG5cdFx0JHdlaWdodDogcmVndWxhcjtcblx0fVxuXG5cdC8vIENoZWNrIHRoZSBmb250IGlzIGFuIE9yaWdhbWkgZm9udCwgbm90IGEgY3VzdG9tIGZvbnQuXG5cdEBpZiBtYXAtaGFzLWtleSgkX28tZm9udHMtZmFtaWxpZXMsICRmYW1pbHkpIHtcblx0XHQkZm9udC1mYW1pbHktY29uZmlnOiBtYXAtZ2V0KCRfby1mb250cy1mYW1pbGllcywgJGZhbWlseSk7XG5cdFx0QGlmIG1hcC1nZXQoJGZvbnQtZmFtaWx5LWNvbmZpZywgJ2N1c3RvbScpIHtcblx0XHRcdEBlcnJvciAnQ2FuIG5vdCBpbmNsdWRlIGEgY3VzdG9tIGZvbnQgXCIjeyRmYW1pbHl9XCIuIEluY2x1ZGUgeW91ciBjdXN0b20gZm9udCBtYW51YWxseS4nO1xuXHRcdH1cblx0fVxuXG5cdC8vIENoZWNrIGlmIHRoZSBmb250IGhhcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWRcblx0Ly8gSWYgc28sIG5vIG5lZWQgdG8gb3V0cHV0IGFub3RoZXIgQGZvbnQtZmFjZSBkZWNsYXJhdGlvblxuXHQkZm9udC1pcy1hbHJlYWR5LWluY2x1ZGVkOiBvRm9udHNWYXJpYW50SW5jbHVkZWQoJGZhbWlseSwgJHdlaWdodCwgJHN0eWxlKTtcblxuXHRAaWYgJGZvbnQtaXMtYWxyZWFkeS1pbmNsdWRlZCA9PSBmYWxzZSB7XG5cdFx0Ly8gRXJyb3IgaWYgYSBmb250IGRvZXMgbm90IGV4aXN0IGZvciB0aGUgZ2l2ZW4gdmFyaWFudC5cblx0XHRAaWYgbm90IG1hcC1oYXMta2V5KCRfby1mb250cy1mYW1pbGllcywgJGZhbWlseSkge1xuXHRcdFx0QGVycm9yICdGb250IFwiI3tpbnNwZWN0KCRmYW1pbHkpfVwiIG5vdCBmb3VuZC4gTXVzdCBiZSBvbmUgb2YgI3ttYXAta2V5cygkX28tZm9udHMtZmFtaWxpZXMpfS4nO1xuXHRcdH1cblxuXHRcdEBpZiBub3Qgb0ZvbnRzVmFyaWFudEV4aXN0cygkZmFtaWx5LCAkd2VpZ2h0LCAkc3R5bGUpIHtcblx0XHRcdEBlcnJvciAnRm9udCBmb3IgXCIjeyRmYW1pbHl9XCIgYXQgd2VpZ2h0OiBcIiN7JHdlaWdodH1cIiBhbmQgc3R5bGUgXCIjeyRzdHlsZX1cIiBkb2VzIG5vdCBleGlzdC4nO1xuXHRcdH1cblxuXHRcdC8vIEZpbGVzIGFyZSBuYW1lZCBhcyBmb2xsb3dzXG5cdFx0Ly8gTmFtZS1XZWlnaHRUeXBlXG5cdFx0Ly8gTWV0cmljV2ViLVJlZ3VsYXIgICAgICAgICAgICAgIChyZWd1bGFyIG5vcm1hbClcblx0XHQvLyBNZXRyaWNXZWItUmVndWxhckl0YWxpYyAgICAgICAgKHJlZ3VsYXIgaXRhbGljKVxuXHRcdC8vIE1ldHJpY1dlYi1Cb2xkICAgICAgICAgICAgICAgICAoYm9sZCBub3JtYWwpXG5cdFx0Ly8gTWV0cmljV2ViLUJvbGRJdGFsaWMgICAgICAgICAgIChib2xkIGl0YWxpYylcblxuXHRcdC8vIEJ5IGRlZmF1bHQsIHN1ZmZpeCBpcyB0aGUgd2VpZ2h0XG5cdFx0JGZvbnQtc3VmZml4OiBfb0ZvbnRzU3RyaW5nQ2FwaXRhbGlzZSgkd2VpZ2h0KTtcblxuXHRcdEBpZiAoJHN0eWxlICE9ICdub3JtYWwnKSB7XG5cdFx0XHQkY2FwaXRhbGlzZWQtd2VpZ2h0OiBfb0ZvbnRzU3RyaW5nQ2FwaXRhbGlzZSgkd2VpZ2h0KTtcblx0XHRcdCRjYXBpdGFsaXNlZC1zdHlsZTogX29Gb250c1N0cmluZ0NhcGl0YWxpc2UoJHN0eWxlKTtcblx0XHRcdCRmb250LXN1ZmZpeDogI3skY2FwaXRhbGlzZWQtd2VpZ2h0fSN7JGNhcGl0YWxpc2VkLXN0eWxlfTtcblx0XHR9XG5cblx0XHRAZm9udC1mYWNlIHtcblx0XHRcdHNyYzogdXJsKCRvLWZvbnRzLXBhdGggKyAnI3skZmFtaWx5fS0jeyRmb250LXN1ZmZpeH0nICsgJy53b2ZmMicpIGZvcm1hdCgnd29mZjInKSwgdXJsKCRvLWZvbnRzLXBhdGggKyAnI3skZmFtaWx5fS0jeyRmb250LXN1ZmZpeH0nICsgJy53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG5cdFx0XHRmb250LWZhbWlseTogJGZhbWlseTtcblx0XHRcdGZvbnQtd2VpZ2h0OiBvRm9udHNXZWlnaHQoJHdlaWdodCk7XG5cdFx0XHRmb250LXN0eWxlOiB1bnF1b3RlKCRzdHlsZSk7XG5cdFx0XHRmb250LWRpc3BsYXk6IHVucXVvdGUoJGRpc3BsYXkpO1xuXHRcdH1cblxuXHRcdC8vIEFkZCB0byB0aGUgbGlzdCBvZiBhbHJlYWR5IGluY2x1ZGVkIGZhbWlsaWVzIC8gdmFyaWFudHNcblx0XHRAaW5jbHVkZSBfb0ZvbnRzVmFyaWFudEluY2x1ZGVkKCRmYW1pbHksICR3ZWlnaHQsICRzdHlsZSk7XG5cdH1cbn1cblxuLy8vIExvZyBhIGdpdmVuIGZvbnQgdmFyaWFudCBhcyBoYXZpbmcgYmVlbiBvdXRwdXQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZhbWlseSAtIG9uZSBvZiAkX28tZm9udHMtZmFtaWxpZXNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHdlaWdodCBbcmVndWxhcl0gLSBUaGUgZm9udCB3ZWlnaHQuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHlsZSBbbm9ybWFsXSAtIFRoZSBmb250IHN0eWxlLlxuQG1peGluIF9vRm9udHNWYXJpYW50SW5jbHVkZWQoJGZhbWlseSwgJHdlaWdodCwgJHN0eWxlKSB7XG5cdC8vIEFkZCB0byB0aGUgbGlzdCBvZiBhbHJlYWR5IGluY2x1ZGVkIGZhbWlsaWVzIC8gdmFyaWFudHNcblx0JHZhcmlhbnQta2V5OiBfb0ZvbnRzVmFyaWFudEtleSgkZmFtaWx5LCAkd2VpZ2h0LCAkc3R5bGUpO1xuXHQkX28tZm9udHMtZmFtaWxpZXMtaW5jbHVkZWQ6IG1hcC1tZXJnZSgkX28tZm9udHMtZmFtaWxpZXMtaW5jbHVkZWQsICgkdmFyaWFudC1rZXk6IHRydWUpKSAhZ2xvYmFsO1xufVxuIiwiQGltcG9ydCBcIkBmaW5hbmNpYWwtdGltZXMvby1icmFuZC9tYWluXCI7XG5cbkBpbXBvcnQgXCJzcmMvc2Nzcy92YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy9mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJzcmMvc2Nzcy9taXhpbnNcIjtcblxuLy8vIE91dHB1dCBhbGwgZGVmYXVsdCBmb250LWZhY2UgZGVjbGFyYXRpb25zIGZvciB0aGUgY3VycmVudCBicmFuZC5cbi8vL1xuLy8vIEBleGFtcGxlIEluY2x1ZGUgYWxsIGZvbnRzIGZvciB0aGUgY3VycmVudCBicmFuZCAoY29yZSwgaW50ZXJuYWwsIHdoaXRlbGFiZWwpLlxuLy8vICAgICBAaW5jbHVkZSBvRm9udHMoKTtcbi8vL1xuLy8vIEBleGFtcGxlIEluY2x1ZGUgYSBsaW1pdGVkIHNldCBvZiByZWNvbW1lbmRlZCBmb250cyBmb3IgdGhlIGN1cnJlbnQgYnJhbmQgKGNvcmUsIGludGVybmFsLCB3aGl0ZWxhYmVsKS5cbi8vLyAgICAgQGluY2x1ZGUgb0ZvbnRzKCRvcHRzOiAoJ3JlY29tbWVuZGVkJzogdHJ1ZSkpO1xuLy8vXG4vLy8gQGV4YW1wbGUgSW5jbHVkZSBhIGxpbWl0ZWQgc2V0IG9mIHJlY29tbWVuZGVkIGZvbnRzIGZvciB0aGUgY3VycmVudCBicmFuZCwgcGx1cyBhbiBleHRyYSBGaW5hbmNpZXJEaXNwbGF5V2ViIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvRm9udHMoJG9wdHM6IChcbi8vLyBcdFx0J3JlY29tbWVuZGVkJzogdHJ1ZSxcbi8vLyBcdFx0J2ZpbmFuY2llci1kaXNwbGF5JzogKFxuLy8vIFx0XHRcdCh3ZWlnaHQ6IHJlZ3VsYXIsIHN0eWxlOiBub3JtYWwpXG4vLy8gXHRcdClcbi8vLyBcdCkpO1xuLy8vXG4vLy8gQGV4YW1wbGUgSW5jbHVkZSBvbmx5IHJlZ3VsYXIgYW5kIHNlbWlib2xkIE1ldHJpY1dlYiBmb250IGZhY2VzLlxuLy8vICAgICBAaW5jbHVkZSBvRm9udHMoJG9wdHM6ICgnbWV0cmljJzogKFxuLy8vICAgICBcdCh3ZWlnaHQ6IHJlZ3VsYXIsIHN0eWxlOiBub3JtYWwpLFxuLy8vICAgICBcdCh3ZWlnaHQ6IHNlbWlib2xkLCBzdHlsZTogbm9ybWFsKSxcbi8vLyAgICAgKSkpO1xuLy8vXG4vLy8gQGV4YW1wbGUgSW5jbHVkZSBvbmx5IHJlZ3VsYXIgYW5kIGJvbGQgRmluYW5jaWVyRGlzcGxheVdlYiBmb250IGZhY2VzLlxuLy8vICAgICBAaW5jbHVkZSBvRm9udHMoJG9wdHM6ICgnZmluYW5jaWVyLWRpc3BsYXknOiAoXG4vLy8gICAgIFx0KHdlaWdodDogcmVndWxhciwgc3R5bGU6IG5vcm1hbCksXG4vLy8gICAgIFx0KHdlaWdodDogc2VtaWJvbGQsIHN0eWxlOiBub3JtYWwpLFxuLy8vICAgICApKSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBJbmNsdWRlIG9ubHkgcmVndWxhciBmb250IGZhY2VzIGZvciBNZXRyaWNXZWIgYW5kIEZpbmFuY2llckRpc3BsYXlXZWIuXG4vLy8gICAgIEBpbmNsdWRlIG9Gb250cygkb3B0czogKFxuLy8vICAgICBcdCdtZXRyaWMnOiAoKHdlaWdodDogcmVndWxhciwgc3R5bGU6IG5vcm1hbCkpLFxuLy8vICAgICBcdCdmaW5hbmNpZXItZGlzcGxheSc6ICgod2VpZ2h0OiByZWd1bGFyLCBzdHlsZTogbm9ybWFsKSlcbi8vLyAgICAgKSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBJbmNsdWRlIG9ubHkgYmxhY2sgd2VpZ2h0ZWQgZm9udCBmYWNlcyBmb3IgTWV0cmljV2ViLCBGaW5hbmNpZXJEaXNwbGF5V2ViLCBhbmQgRmluYW5jaWVyVGV4dFdlYi5cbi8vLyAgICAgQGluY2x1ZGUgb0ZvbnRzKCRvcHRzOiAoXG4vLy8gICAgIFx0J21ldHJpYyc6ICgod2VpZ2h0OiAnYmxhY2snLCBzdHlsZTogbm9ybWFsKSksXG4vLy8gICAgIFx0J2ZpbmFuY2llci1kaXNwbGF5JzogKCh3ZWlnaHQ6ICdibGFjaycsIHN0eWxlOiBub3JtYWwpKSxcbi8vLyAgICAgXHQnZmluYW5jaWVyLXRleHQnOiAoKHdlaWdodDogJ2JsYWNrJywgc3R5bGU6IG5vcm1hbCkpXG4vLy8gICAgICkpO1xuLy8vIEBwYXJhbSB7TWFwfSAkb3B0cyAtIHRoZSBmb250IGZhY2VzIHRvIGluY2x1ZGUsIHNlZSB0aGUgUkVBRE1FIG9yIGV4YW1wbGVzIGZvciBtb3JlIGRldGFpbHMuXG5AbWl4aW4gb0ZvbnRzKCRvcHRzOiAkX28tZm9udHMtZGVmYXVsdCkge1xuXHQkdmFyaWFudHM6IF9vRm9udHNPcHRpb25zVG9WYXJpYW50cygkb3B0cyk7XG5cblx0QGVhY2ggJHZhcmlhbnQgaW4gJHZhcmlhbnRzIHtcblx0XHQkZmFtaWx5OiBtYXAtZ2V0KCR2YXJpYW50LCAnZmFtaWx5Jyk7XG5cdFx0JHdlaWdodDogbWFwLWdldCgkdmFyaWFudCwgJ3dlaWdodCcpO1xuXHRcdCRzdHlsZTogbWFwLWdldCgkdmFyaWFudCwgJ3N0eWxlJyk7XG5cdFx0QGluY2x1ZGUgX29Gb250c0luY2x1ZGUoJGZhbWlseSwgJHdlaWdodCwgJHN0eWxlKTtcblx0fVxufVxuXG5AaWYgKCRvLWZvbnRzLWlzLXNpbGVudCA9PSBmYWxzZSkge1xuXHRAaW5jbHVkZSBvRm9udHMoKTtcbn1cbiIsIkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvbWF0aCc7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28tc3BhY2luZy9tYWluJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1ncmlkL21haW4nO1xuQGltcG9ydCAnQGZpbmFuY2lhbC10aW1lcy9vLWZvbnRzL21haW4nO1xuQGltcG9ydCAnQGZpbmFuY2lhbC10aW1lcy9vLWNvbG9ycy9tYWluJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1pY29ucy9tYWluJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1ub3JtYWxpc2UvbWFpbic7XG5cbkBpbXBvcnQgJ3NyYy9zY3NzL2JyYW5kJztcbkBpbXBvcnQgJ3NyYy9zY3NzL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdzcmMvc2Nzcy9mdW5jdGlvbnMnO1xuQGltcG9ydCAnc3JjL3Njc3MvbWl4aW5zJztcbkBpbXBvcnQgJ3NyYy9zY3NzL3VzZS1jYXNlcy9nZW5lcmFsJztcbkBpbXBvcnQgJ3NyYy9zY3NzL3VzZS1jYXNlcy93cmFwcGVyJztcblxuLy8vIE91dHB1dCBvLXR5cG9ncmFwaHkgZmVhdHVyZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYWxsIG8tdHlwb2dyYXBoeSBjc3MgY2xhc3Nlcy5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5KCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBncmFudWxhciBzZWxlY3Rpb24gb2Ygby10eXBvZ3JhcGh5IGNzcyBjbGFzc2VzLiBTZWUgdGhlIFtSRUFETUVdKGh0dHBzOi8vcmVnaXN0cnkub3JpZ2FtaS5mdC5jb20vY29tcG9uZW50cy9vLXR5cG9ncmFwaHkvcmVhZG1lKSBmb3IgYSBmdWxsIGxpc3Qgb2Ygb3B0aW9ucy5cbi8vLyAgICAgQGluY2x1ZGUgb1R5cG9ncmFwaHkoKFxuLy8vICAgICBcdCdib2R5JzogdHJ1ZSxcbi8vLyAgICAgXHQnaGVhZGluZ3MnOiAoMSwgMiwgMyksXG4vLy8gICAgIFx0J2xpc3RzJzogKCd1bm9yZGVyZWQnKSxcbi8vLyAgICAgKSk7XG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG9wdHMgWygnaGVhZGluZ3MnOiAoMSwgMiwgMywgNCwgNSwgNiksICd3cmFwcGVyJzogdHJ1ZSwgJ2JvZHknOiB0cnVlLCAnbGlua3MnOiB0cnVlLCAnbGlzdHMnOiAoJ29yZGVyZWQnLCAndW5vcmRlcmVkJyksICdjYXB0aW9uJzogdHJ1ZSwgJ2Zvb3Rlcic6IHRydWUsICd1dGlsaXRpZXMnOiB0cnVlKV0gLSBUaGUgZmVhdHVyZXMgb2Ygby10eXBvZ3JhcGh5IHRvIG91dHB1dCBjbGFzc2VzIGZvci4gU2VlIHRoZSBbUkVBRE1FXShodHRwczovL3JlZ2lzdHJ5Lm9yaWdhbWkuZnQuY29tL2NvbXBvbmVudHMvby10eXBvZ3JhcGh5L3JlYWRtZSkgZm9yIG1vcmUgZGV0YWlscy5cbkBtaXhpbiBvVHlwb2dyYXBoeSgkb3B0czogKFxuXHQnaGVhZGluZ3MnOiAoMSwgMiwgMywgNCwgNSwgNiksXG5cdCd3cmFwcGVyJzogdHJ1ZSxcblx0J2JvZHknOiB0cnVlLFxuXHQnbGlua3MnOiB0cnVlLFxuXHQnbGlzdHMnOiAoJ29yZGVyZWQnLCAndW5vcmRlcmVkJyksXG5cdCdjYXB0aW9uJzogdHJ1ZSxcblx0J2Zvb3Rlcic6IHRydWUsXG5cdCd1dGlsaXRpZXMnOiB0cnVlLFxuKSkge1xuXHQkd3JhcHBlci1lbmFibGVkOiBtYXAtZ2V0KCRvcHRzLCAnd3JhcHBlcicpO1xuXHQkYm9keS1lbmFibGVkOiBtYXAtZ2V0KCRvcHRzLCAnYm9keScpO1xuXHQkbGlua3MtZW5hYmxlZDogbWFwLWdldCgkb3B0cywgJ2xpbmtzJyk7XG5cdCRjYXB0aW9uLWVuYWJsZWQ6IG1hcC1nZXQoJG9wdHMsICdjYXB0aW9uJyk7XG5cdCRmb290ZXItZW5hYmxlZDogbWFwLWdldCgkb3B0cywgJ2Zvb3RlcicpO1xuXHQkdXRpbGl0aWVzLWVuYWJsZWQ6IG1hcC1nZXQoJG9wdHMsICd1dGlsaXRpZXMnKTtcblx0JGhlYWRpbmdzOiBtYXAtZ2V0KCRvcHRzLCAnaGVhZGluZ3MnKTtcblx0JGhlYWRpbmdzOiBpZigkaGVhZGluZ3MsICRoZWFkaW5ncywgKCkpO1xuXHRAaWYoJGhlYWRpbmdzIGFuZCB0eXBlLW9mKCRoZWFkaW5ncykgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKCRoZWFkaW5ncykgIT0gJ251bWJlcicpIHtcblx0XHRAZXJyb3IgKCdUaGUgXCJoZWFkaW5nc1wiIG9wdGlvbiBtdXN0IGJlIGEgbGlzdCBvZiBoZWFkaW5nIGxldmVscyB0byBpbmNsdWRlIGUuZy4gYCgxLCAyLCAzLCA0LCA1LCA2KWAuJyk7XG5cdH1cblx0JGxpc3RzOiBtYXAtZ2V0KCRvcHRzLCAnbGlzdHMnKTtcblx0JGxpc3RzOiBpZigkbGlzdHMsICRsaXN0cywgKCkpO1xuXHRAaWYoJGxpc3RzIGFuZCB0eXBlLW9mKCRsaXN0cykgIT0gJ2xpc3QnKSB7XG5cdFx0QGVycm9yICgnVGhlIFwibGlzdHNcIiBvcHRpb24gbXVzdCBiZSBhIGxpc3Qgb2YgbGlzdCB0eXBlcyB0byBpbmNsdWRlIGUuZy4gYChcXCdvcmRlcmVkXFwnLCBcXCd1bm9yZGVyZWRcXCcpYC4nKTtcblx0fVxuXG5cdC8vIExvYWQgZm9udHMgd2l0aGluIHRoZSBwcmltYXJ5IG1peGluIGluLWNhc2Ugc2lsZW50IG1vZGUgaXMgb24uXG5cdEBpZiAkby10eXBvZ3JhcGh5LWxvYWQtZm9udHMgPT0gdHJ1ZSB7XG5cdFx0QGluY2x1ZGUgb0ZvbnRzKCk7XG5cdFx0Ly8gU2V0IHRvIGZhbHNlIHNvIGZvbnRzIGFyZSBub3Qgb3V0cHV0IHR3aWNlIGJ5IG8tdHlwb2dyYXBoeS5cblx0XHQkby10eXBvZ3JhcGh5LWxvYWQtZm9udHM6IGZhbHNlICFnbG9iYWw7XG5cdH1cblxuXHQvLyBIZWFkaW5nc1xuXHRAZWFjaCAkbGV2ZWwgaW4gJGhlYWRpbmdzIHtcblx0XHQuby10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtI3skbGV2ZWx9IHtcblx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5SGVhZGluZygkbGV2ZWwpO1xuXHRcdH1cblx0fVxuXG5cdC8vIEJvZHksIEl0YWxpYywgU3VwZXJzY3JpcHQsIFN1YnNjcmlwdC5cblx0QGlmICR1dGlsaXRpZXMtZW5hYmxlZCB7XG5cdFx0Lm8tdHlwb2dyYXBoeS1ib2xkIHtcblx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucyAoXG5cdFx0XHRcdCR3ZWlnaHQ6ICdzZW1pYm9sZCcsXG5cdFx0XHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQuby10eXBvZ3JhcGh5LWl0YWxpYyB7XG5cdFx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdFx0fVxuXG5cdFx0Lm8tdHlwb2dyYXBoeS1zdXAge1xuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTdXBlcjtcblx0XHR9XG5cblx0XHQuby10eXBvZ3JhcGh5LXN1YiB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVN1Yjtcblx0XHR9XG5cdH1cblxuXHQvLyBCb2R5XG5cdEBpZiAkYm9keS1lbmFibGVkIHtcblx0XHQuby10eXBvZ3JhcGh5LWJvZHkge1xuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlCb2R5O1xuXHRcdH1cblx0fVxuXG5cdC8vIExpbmtzXG5cdEBpZiAkbGlua3MtZW5hYmxlZCB7XG5cdFx0Lm8tdHlwb2dyYXBoeS1saW5rIHtcblx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaztcblx0XHR9XG5cblx0XHQuby10eXBvZ3JhcGh5LWxpbmstLWV4dGVybmFsIHtcblx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluayhcblx0XHRcdFx0JGV4dGVybmFsOiB0cnVlLFxuXHRcdFx0XHQkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2Vcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gTGlzdHNcblx0QGlmIGxlbmd0aCgkbGlzdHMpID49IDEge1xuXHRcdC5vLXR5cG9ncmFwaHktbGlzdCB7XG5cdFx0XHQvLyBPdXRwdXQgYmFzZSBzdHlsZXMgc2hhcmVkIGJ5IGFsbCBsaXN0IHR5cGVzLlxuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaXN0KCk7XG5cdFx0fVxuXHR9XG5cblx0QGlmIGluZGV4KCRsaXN0cywgJ29yZGVyZWQnKSB7XG5cdFx0Lm8tdHlwb2dyYXBoeS1saXN0LS1vcmRlcmVkIHtcblx0XHRcdC8vIE91dHB1dCBsaXN0IHN0eWxlcyB1bmlxdWUgdG8gYW4gb3JkZXJlZCBsaXN0LlxuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaXN0KCR0eXBlOiAnb3JkZXJlZCcsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG5cdFx0fVxuXHR9XG5cblx0QGlmIGluZGV4KCRsaXN0cywgJ3Vub3JkZXJlZCcpIHtcblx0XHQuby10eXBvZ3JhcGh5LWxpc3QtLXVub3JkZXJlZCB7XG5cdFx0XHQvLyBPdXRwdXQgbGlzdCBzdHlsZXMgdW5pcXVlIHRvIGFuIHVub3JkZXJlZCBsaXN0LlxuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaXN0KCR0eXBlOiAndW5vcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDYXB0aW9uXG5cdEBpZiAkY2FwdGlvbi1lbmFibGVkIHtcblx0XHQuby10eXBvZ3JhcGh5LWNhcHRpb24ge1xuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlDYXB0aW9uO1xuXHRcdH1cblx0fVxuXG5cdC8vIEZvb3RlclxuXHRAaWYgJGZvb3Rlci1lbmFibGVkIHtcblx0XHQuby10eXBvZ3JhcGh5LWZvb3RlciB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUZvb3Rlcjtcblx0XHR9XG5cdH1cblxuXHQvLyBXcmFwcGVyXG5cdEBpZiAkd3JhcHBlci1lbmFibGVkIHtcblx0XHQuby10eXBvZ3JhcGh5LXdyYXBwZXIgPiBwLFxuXHRcdC5vLXR5cG9ncmFwaHktd3JhcHBlciB7XG5cdFx0XHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlXcmFwcGVyO1xuXHRcdH1cblx0fVxufVxuXG4vLyBTbyB0aGUgYnVpbGQgc2VydmljZSBjYW4gb3V0cHV0IGFsbCB0eXBvZ3JhcGh5IHN0eWxlcy5cbkBpZiAkby10eXBvZ3JhcGh5LWlzLXNpbGVudCA9PSBmYWxzZSB7XG5cdC8vIExvYWQgZm9udHMgb3V0c2lkZSB0aGUgcHJpbWFyeSBtaXhpbiBhcyB0aGV5IG1heSBiZVxuXHQvLyByZXF1aXJlZCBieSBvdGhlciBtaXhpbnMuIEJ1dCBzZXQgdG8gZmFsc2Ugc28gZm9udHNcblx0Ly8gYXJlIG5vdCBvdXRwdXQgdHdpY2UgYnkgby10eXBvZ3JhcGh5LlxuXHRAaWYgJG8tdHlwb2dyYXBoeS1sb2FkLWZvbnRzID09IHRydWUge1xuXHRcdEBpbmNsdWRlIG9Gb250cygpO1xuXHRcdCRvLXR5cG9ncmFwaHktbG9hZC1mb250czogZmFsc2UgIWdsb2JhbDtcblx0fVxuXG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5KCk7XG5cdC8vIERvbid0IG91dHB1dCB0d2ljZVxuXHQkby10eXBvZ3JhcGh5LWlzLXNpbGVudDogdHJ1ZSAhZ2xvYmFsO1xufVxuIiwiLy8vIE91dHB1dHMgdHlwb2dyYXBoeSBzdHlsZXMgZm9yIHRoZSBTZXJpZiBmb250LlxuLy8vIEluY2x1ZGluZzogZmFtaWx5LCBzaXplLCBsaW5lLWhlaWdodCwgd2VpZ2h0LCBzdHlsZSwgYW5kIGZvbnQgc2l6ZXNcbi8vLyBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nLlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGEgZm9udC1mYW1pbHkgcHJvcGVydHkgb25seSBmb3IgdGhlIHNlcmlmIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzZXJpZiBmb250LiBTZXQgYSBjdXN0b20gbGluZS1oZWlnaHQgb2YgMS42LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICRsaW5lLWhlaWdodDogMS42KTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtd2VpZ2h0IGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkd2VpZ2h0OiAnYm9sZCcpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC1zdHlsZSBmb3IgdGhlIHNlcmlmIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgc2VyaWYgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgZm9udC1mYW1pbHkuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBzZXJpZiBmb250IHByb3BlcnRpZXMgd2l0aG91dCBzaXplcyBmb3IgdGhlIGZhbGxiYWNrIGZvbnQgKHdpdGhvdXQgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nKS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1wcm9ncmVzc2l2ZTogZmFsc2UpO1xuLy8vXG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkc2NhbGUgW251bGxdIC0gYSBzY2FsZSBudW1iZXIgdG8gb3V0cHV0IGEgZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFtudWxsXSAtIGN1c3RvbSBsaW5lLWhlaWdodCB2YWx1ZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc2NhbGUncyBkZWZhdWx0XG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIG91dHB1dCBhIGZvbnQtd2VpZ2h0IHByb3BlcnR5LCBlLmcuICdib2xkJywgJ3NlbWlib2xkJ1xuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHN0eWxlIFtudWxsXSAtIG91dHB1dCBhIGZvbnQtc3R5bGUgcHJvcGVydHksIGUuZy4gJ2l0YWxpYydcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWZvbnQtZmFtaWx5IFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHRoZSBmb250LWZhbWlseSBwcm9wZXJ0eSBmcm9tIHRoZSBvdXRwdXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVzaXppbmcgdHlwb2dyYXBoeSwgd2hlcmUgdGhlIHNlcmlmIGZvbnQtZmFtaWx5IGlzIGluaGVyaXRlZCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1wcm9ncmVzc2l2ZSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBzdHlsZXMgdXNlZCBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nIChmb250LWZhbWlseSBhbmQgc2l6ZSBmYWxsYmFja3MgZm9yIGxvYWRpbmcgZm9udHMpLlxuQG1peGluIG9UeXBvZ3JhcGh5U2VyaWYoXG5cdCRzY2FsZTogbnVsbCxcblx0JGxpbmUtaGVpZ2h0OiBudWxsLFxuXHQkd2VpZ2h0OiBudWxsLFxuXHQkc3R5bGU6IG51bGwsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlLFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZTogJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmdcbikge1xuXHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb3IoXG5cdFx0JF9vLXR5cG9ncmFwaHktc2VyaWYsXG5cdFx0JHNjYWxlLFxuXHRcdCRsaW5lLWhlaWdodCxcblx0XHQkd2VpZ2h0LFxuXHRcdCRzdHlsZSxcblx0XHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0XHQkaW5jbHVkZS1wcm9ncmVzc2l2ZVxuXHQpO1xufVxuXG4vLy8gT3V0cHV0cyB0eXBvZ3JhcGh5IHN0eWxlcyBmb3IgdGhlIERpc3BsYXkgZm9udC5cbi8vLyBJbmNsdWRpbmc6IGZhbWlseSwgc2l6ZSwgbGluZS1oZWlnaHQsIHdlaWdodCwgc3R5bGUsIGFuZCBmb250IHNpemVzXG4vLy8gZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZy5cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGZvbnQtZmFtaWx5IHByb3BlcnR5IG9ubHkgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBkaXNwbGF5IGZvbnQuIFNldCBhIGN1c3RvbSBsaW5lLWhlaWdodCBvZiAxLjYuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxLCAkbGluZS1oZWlnaHQ6IDEuNik7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXdlaWdodCBmb3IgdGhlIGRpc3BsYXkgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICR3ZWlnaHQ6ICdib2xkJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXN0eWxlIGZvciB0aGUgZGlzcGxheSBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZGlzcGxheSBmb250IHByb3BlcnRpZXMgd2l0aG91dCBmb250LWZhbWlseS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZGlzcGxheSBmb250IHByb3BlcnRpZXMgd2l0aG91dCBzaXplcyBmb3IgdGhlIGZhbGxiYWNrIGZvbnQgKHdpdGhvdXQgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nKS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLXByb2dyZXNzaXZlOiBmYWxzZSk7XG4vLy9cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgZGlzcGxheSBmb250LWZhbWlseSBpcyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudCBlbGVtZW50LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtcHJvZ3Jlc3NpdmUgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgc3R5bGVzIHVzZWQgZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZyAoZm9udC1mYW1pbHkgYW5kIHNpemUgZmFsbGJhY2tzIGZvciBsb2FkaW5nIGZvbnRzKS5cbkBtaXhpbiBvVHlwb2dyYXBoeURpc3BsYXkoXG5cdCRzY2FsZTogbnVsbCxcblx0JGxpbmUtaGVpZ2h0OiBudWxsLFxuXHQkd2VpZ2h0OiBudWxsLFxuXHQkc3R5bGU6IG51bGwsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlLFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZTogJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmdcbikge1xuXHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb3IoXG5cdFx0JF9vLXR5cG9ncmFwaHktZGlzcGxheSxcblx0XHQkc2NhbGUsXG5cdFx0JGxpbmUtaGVpZ2h0LFxuXHRcdCR3ZWlnaHQsXG5cdFx0JHN0eWxlLFxuXHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5LFxuXHRcdCRpbmNsdWRlLXByb2dyZXNzaXZlXG5cdCk7XG59XG5cbi8vLyBPdXRwdXRzIHR5cG9ncmFwaHkgc3R5bGVzIGZvciB0aGUgU2FucyBmb250LlxuLy8vIEluY2x1ZGluZzogZmFtaWx5LCBzaXplLCBsaW5lLWhlaWdodCwgd2VpZ2h0LCBzdHlsZSwgYW5kIGZvbnQgc2l6ZXNcbi8vLyBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nLlxuLy8vXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBmb250LWZhbWlseSBwcm9wZXJ0eSBvbmx5IGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgYW5kIGxpbmUtaGVpZ2h0IGZvciB0aGUgc2FucyBmb250LiBTZXQgYSBjdXN0b20gbGluZS1oZWlnaHQgb2YgMS42LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJGxpbmUtaGVpZ2h0OiAxLjYpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC13ZWlnaHQgZm9yIHRoZSBzYW5zIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkd2VpZ2h0OiAnYm9sZCcpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC1zdHlsZSBmb3IgdGhlIHNhbnMgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNhbnMgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgZm9udC1mYW1pbHkuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNhbnMgZm9udCBwcm9wZXJ0aWVzIHdpdGhvdXQgc2l6ZXMgZm9yIHRoZSBmYWxsYmFjayBmb250ICh3aXRob3V0IHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZykuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1wcm9ncmVzc2l2ZTogZmFsc2UpO1xuLy8vXG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkc2NhbGUgW251bGxdIC0gYSBzY2FsZSBudW1iZXIgdG8gb3V0cHV0IGEgZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFtudWxsXSAtIGN1c3RvbSBsaW5lLWhlaWdodCB2YWx1ZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc2NhbGUncyBkZWZhdWx0XG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIG91dHB1dCBhIGZvbnQtd2VpZ2h0IHByb3BlcnR5LCBlLmcuICdib2xkJywgJ3NlbWlib2xkJ1xuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHN0eWxlIFtudWxsXSAtIG91dHB1dCBhIGZvbnQtc3R5bGUgcHJvcGVydHksIGUuZy4gJ2l0YWxpYydcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWZvbnQtZmFtaWx5IFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHRoZSBmb250LWZhbWlseSBwcm9wZXJ0eSBmcm9tIHRoZSBvdXRwdXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVzaXppbmcgdHlwb2dyYXBoeSwgd2hlcmUgdGhlIHNhbnMgZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG5AbWl4aW4gb1R5cG9ncmFwaHlTYW5zKFxuXHQkc2NhbGU6IG51bGwsXG5cdCRsaW5lLWhlaWdodDogbnVsbCxcblx0JHdlaWdodDogbnVsbCxcblx0JHN0eWxlOiBudWxsLFxuXHQkaW5jbHVkZS1mb250LWZhbWlseTogdHJ1ZSxcblx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmU6ICRvLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1sb2FkaW5nXG4pIHtcblx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5Rm9yKFxuXHRcdCRfby10eXBvZ3JhcGh5LXNhbnMsXG5cdFx0JHNjYWxlLFxuXHRcdCRsaW5lLWhlaWdodCxcblx0XHQkd2VpZ2h0LFxuXHRcdCRzdHlsZSxcblx0XHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0XHQkaW5jbHVkZS1wcm9ncmVzc2l2ZVxuXHQpO1xufVxuXG4vLy8gU2V0IGEgY3VzdG9tIGZvbnQuXG4vLy9cbi8vLyBAZXhhbXBsZSBUaGlzIGV4YW1wbGUgc2hvd3Mgc2V0dGluZyBhIGN1c3RvbSBmb250IFwiTXlTYW5zRm9udFwiIGFzIHRoZSBcInNhbnNcIiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXRGb250KCR0eXBlOiAnc2FucycsICRmYW1pbHk6ICdNeVNhbnNGb250LCBzYW5zJyk7XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUgLSBPbmUgb2YgJ3NhbnMnLCAnc2VyaWYnLCBvciAnZGlzcGxheScuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmYW1pbHkgLSBUaGUgZm9udCBmYW1pbHkgdG8gc2V0LlxuQG1peGluIG9UeXBvZ3JhcGh5U2V0Rm9udCgkdHlwZSwgJGZhbWlseSkge1xuXHQkZm9udDogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZhbWlseSk7XG5cdEBpZiBub3Qgb0ZvbnRzVmFyaWFudEV4aXN0cygkZm9udCwgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsKSB7XG5cdFx0QGVycm9yICdDb3VsZCBub3Qgc2V0IHRoZSBmb250IGZhbWlseSBcIiN7JGZhbWlseX1cIiBhcyBcIiN7JGZvbnR9XCIgZG9lcyBub3QgZXhpc3QgaW4gXCJvLWZvbnRzXCIuIElmIHlvdSBhcmUgc2V0dGluZyBhIGN1c3RvbSBmb250LCBmaXJzdCByZWdpc3RlciB5b3VyIGN1c3RvbSBmb250IHdpdGggby1mb250cyAoaHR0cHM6Ly9yZWdpc3RyeS5vcmlnYW1pLmZ0LmNvbS9jb21wb25lbnRzL28tZm9udHMpLic7XG5cdH1cblx0QGlmIG5vdCBpbmRleCgkX28tdHlwb2dyYXBoeS10eXBlcywgJHR5cGUpIHtcblx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBzZXQgZm9udC1mYW1pbHkgXCIjeyRmYW1pbHl9XCIgZm9yIGZhbWlseSBzdHlsZSBcIiN7JHR5cGV9XCIsIGZhbWlseSBzdHlsZSBtdXN0IGJlIG9uZSBvZiBcIiN7JF9vLXR5cG9ncmFwaHktdHlwZXN9XCIuJztcblx0fVxuXHQvLyBTZXQgdGhlIGN1c3RvbSBmb250LlxuXHRAaWYgJHR5cGUgPT0gJ3NhbnMnIHtcblx0XHQkX28tdHlwb2dyYXBoeS1zYW5zOiAkZmFtaWx5ICFnbG9iYWw7XG5cdH1cblx0QGlmICR0eXBlID09ICdzZXJpZicge1xuXHRcdCRfby10eXBvZ3JhcGh5LXNlcmlmOiAkZmFtaWx5ICFnbG9iYWw7XG5cdH1cblx0QGlmICR0eXBlID09ICdkaXNwbGF5JyB7XG5cdFx0JF9vLXR5cG9ncmFwaHktZGlzcGxheTogJGZhbWlseSAhZ2xvYmFsO1xuXHR9XG59XG5cbi8vLyBEZWZpbmUgdGhlIHR5cG9ncmFwaGljIHNjYWxlIGZvciBhIGdpdmVuIGZvbnQuIFRoZSBmb250IG1heSBiZSBhbiBleGlzdGluZyBvciBjdXN0b20gZm9udC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZhbWlseSAtIFRoZSBmb250IG5hbWUgb3IgZmFtaWx5IHRvIGFwcGx5IGEgc2NhbGUgdG8uXG4vLy8gQHBhcmFtIHtNYXB9ICRzY2FsZSAtIEEgbWFwIG9mIHNjYWxlIG51bWJlcnMgYXMga2V5cyAoLTIgdG8gMTApLCB3aXRoIGxpc3QgdmFsdWVzIG9mIGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgXCIoLTI6ICgxMiwgMTYpLCAtMTogKDE0LCAxNiksIDA6ICgxNiwgMjApKVwiIGV0Yy4uLlxuLy8vIEBleGFtcGxlIFRoaXMgZXhhbXBsZSBzaG93cyBkZWZpbmluZyBhIGN1c3RvbSBmb250IHNjYWxlIGZvciBhIGN1c3RvbSBmb250IFwiTXlTYW5zRm9udFwiLiBBdCBzY2FsZSBcIjBcIiB0aGUgZm9udCBzaXplIHdpbGwgYmUgMTZweCwgYW5kIHRoZSBsaW5lLWhlaWdodCAyMHB4LlxuLy8vXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGVmaW5lRm9udFNjYWxlKCRmYW1pbHk6ICdNeVNhbnNGb250LCBzYW5zJywgKFxuLy8vXHRcdCAgIC0yOiAoMTIsIDE2KSxcbi8vL1x0XHQgICAtMTogKDE0LCAxOCksXG4vLy9cdFx0ICAgIDA6ICgxNiwgMjApLFxuLy8vXHRcdCAgICAxOiAoMTgsIDI0KSxcbi8vL1x0XHQgICAgMjogKDIwLCAyNiksXG4vLy9cdFx0ICAgIDM6ICgyNCwgMzIpLFxuLy8vXHRcdCAgICA0OiAoMjgsIDM2KSxcbi8vL1x0XHQgICAgNTogKDMyLCA0MiksXG4vLy9cdFx0ICAgIDY6ICg0MCwgNTIpLFxuLy8vXHRcdCAgICA3OiAoNDgsIDYyKSxcbi8vL1x0XHQgICAgODogKDU2LCA3MiksXG4vLy9cdFx0ICAgIDk6ICg3MiwgOTQpLFxuLy8vXHRcdCAgIDEwOiAoODQsIDExMClcbi8vL1x0XHQpKTtcbkBtaXhpbiBvVHlwb2dyYXBoeURlZmluZUZvbnRTY2FsZSgkZmFtaWx5LCAkc2NhbGUpIHtcblx0QGlmIHR5cGUtb2YoJHNjYWxlKSAhPSAnbWFwJyB7XG5cdFx0QGVycm9yICdDb3VsZCBub3Qgc2V0IHRoZSBzY2FsZSBmb3IgZm9udCBcIiN7JGZhbWlseX1cIiwgZXhwZWN0ZWQgdGhlIHNjYWxlIHRvIGJlIGEgbWFwIGJ1dCBmb3VuZCBcIiN7JHNjYWxlfVwiLCBvZiB0eXBlIFwiI3t0eXBlLW9mKCRzY2FsZSl9XCIuJztcblx0fVxuXHRAZWFjaCAkc2NhbGUtbnVtYmVyLCAkc2NhbGUtaXRlbSBpbiAkc2NhbGUge1xuXHRcdEBpZiB0eXBlLW9mKCRzY2FsZS1pdGVtKSAhPSAnbGlzdCcgb3IgbGVuZ3RoKCRzY2FsZS1pdGVtKSAhPSAyIHtcblx0XHRcdEBlcnJvciAnRXhwZWN0ZWQgZWFjaCBpdGVtIGluIHRoZSBzY2FsZSB0byBiZSBhIGxpc3Qgd2l0aCB0d28gaXRlbXMsIHRoZSBmb250IHNpemUgZm9sbG93ZWQgYnkgdGhlIGxpbmUgaGVpZ2h0Lic7XG5cdFx0fVxuXHR9XG5cdEBpZiBtYXAta2V5cygkc2NhbGUpICE9ICgtMiwgLTEsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwKSB7XG5cdFx0QGVycm9yICdFeHBlY3RlZCB0aGUgc2NhbGUgZm9yIGZvbnQgXCIjeyRmYW1pbHl9XCIgdG8gY29udGFpbiB2YWx1ZXMgZm9yIHNjYWxlcyAtMiB0byAxMCwgYnV0IGZvdW5kIHNjYWxlcyBcIiN7bWFwLWtleXMoJHNjYWxlKX1cIi4nO1xuXHR9XG5cdCRmYW1pbHk6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmYW1pbHkpO1xuXHQkX28tdHlwb2dyYXBoeS1mb250LXNjYWxlLWJ5LWZvbnQ6IG1hcC1tZXJnZSgoJGZhbWlseTogJHNjYWxlKSwgJF9vLXR5cG9ncmFwaHktZm9udC1zY2FsZS1ieS1mb250KSAhZ2xvYmFsO1xufVxuXG4vLy8gT3V0cHV0IGEgdHlwb2dyYXBoeSBmb3IgZm9udFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCAtIFRoZSBmb250IHRvIG91dHB1dCB0eXBvZ3JhcGh5IGZvci5cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgZ2l2ZW4gZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29UeXBvZ3JhcGh5Rm9yKFxuXHQkZm9udCxcblx0JHNjYWxlLFxuXHQkbGluZS1oZWlnaHQsXG5cdCR3ZWlnaHQsXG5cdCRzdHlsZSxcblx0JGluY2x1ZGUtZm9udC1mYW1pbHksXG5cdCRpbmNsdWRlLXByb2dyZXNzaXZlXG4pIHtcblx0Ly8gQ2hlY2sgZm9udCB2YXJpYW50IGlzIHN1cHBvcnRlZC5cblx0JGZvbnQtd2l0aG91dC1mYWxsYmFja3M6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTtcblx0JHZhcmlhbnQtZXhpc3RzOiBvRm9udHNWYXJpYW50RXhpc3RzKCRmb250LXdpdGhvdXQtZmFsbGJhY2tzLCAkd2VpZ2h0LCAkc3R5bGUpO1xuXHRAaWYgbm90ICR2YXJpYW50LWV4aXN0cyB7XG5cdFx0QGVycm9yICdGb250IGZhbWlseSBcIiN7JGZvbnQtd2l0aG91dC1mYWxsYmFja3N9XCIgb2Ygd2VpZ2h0ICcgK1xuXHRcdFx0J1wiI3tpZigkd2VpZ2h0LCAkd2VpZ2h0LCAncmVndWxhcicpfVwiIGFuZCBzdHlsZSAnICtcblx0XHRcdCdcIiN7aWYoJHN0eWxlLCAkc3R5bGUsICdub3JtYWwnKX1cIiBpcyBub3Qgc3VwcG9ydGVkLic7XG5cdH1cblxuXHQvLyBDaGVjayBmb250IHZhcmlhbnQgaGFzIGJlZW4gaW5jbHVkZWQsIGFuZCBlcnJvciBpZiBhbiBlcnJvciBtZXNzYWdlXG5cdC8vIGhhcyBiZWVuIHNldCBieSB0aGUgdXNlci5cblx0JHZhcmlhbnQtaW5jbHVkZWQ6IG9Gb250c1ZhcmlhbnRJbmNsdWRlZCgkZm9udC13aXRob3V0LWZhbGxiYWNrcywgJHdlaWdodCwgJHN0eWxlKTtcblx0QGlmIG5vdCAkdmFyaWFudC1pbmNsdWRlZCBhbmQgdHlwZS1vZigkby10eXBvZ3JhcGh5LWVycm9yLWZvci1taXNzaW5nLWZvbnRzKSA9PSAnc3RyaW5nJyB7XG5cdFx0QGVycm9yICdUaGUgZm9udCBmYWNlIGZvciBmb250IGZhbWlseSBcIiN7JGZvbnQtd2l0aG91dC1mYWxsYmFja3N9XCIgb2YgJyArXG5cdFx0XHQnd2VpZ2h0IFwiI3tpZigkd2VpZ2h0LCAkd2VpZ2h0LCAncmVndWxhcicpfVwiIGFuZCBzdHlsZSAnICtcblx0XHRcdCdcIiN7aWYoJHN0eWxlLCAkc3R5bGUsICdub3JtYWwnKX1cIiBoYXMgbm90IGJlZW4gaW5jbHVkZWQgaW4geW91ciAnICtcblx0XHRcdCdwcm9qZWN0LiAje2luc3BlY3QoJG8tdHlwb2dyYXBoeS1lcnJvci1mb3ItbWlzc2luZy1mb250cyl9Jztcblx0fVxuXG5cdEBpZiAkaW5jbHVkZS1mb250LWZhbWlseSB7XG5cdFx0Zm9udC1mYW1pbHk6IGlmKHR5cGUtb2YoJGZvbnQpID09ICdzdHJpbmcnLCB1bnF1b3RlKCRmb250KSwgJGZvbnQpO1xuXHR9XG5cblx0QGlmICRzY2FsZSB7XG5cdFx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5U2l6ZSgkc2NhbGU6ICRzY2FsZSwgJGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQsICRmb250OiAkZm9udCk7XG5cdH0gQGVsc2UgaWYgJGxpbmUtaGVpZ2h0IHtcblx0XHRsaW5lLWhlaWdodDogX29UeXBvZ3JhcGh5QWRqdXN0VW5pdCgkbGluZS1oZWlnaHQpO1xuXHR9XG5cblx0QGlmICR3ZWlnaHQge1xuXHRcdGZvbnQtd2VpZ2h0OiBvRm9udHNXZWlnaHQoJHdlaWdodCk7XG5cdH1cblxuXHRAaWYgJHN0eWxlIHtcblx0XHRmb250LXN0eWxlOiB1bnF1b3RlKCRzdHlsZSk7XG5cdH1cblxuXHRAaWYgJGluY2x1ZGUtcHJvZ3Jlc3NpdmUge1xuXHRcdEBpbmNsdWRlIF9vVHlwb2dyYXBoeVByb2dyZXNzaXZlRm9udEZhbGxiYWNrKCRmb250LCAkc2NhbGUsICR3ZWlnaHQsICRzdHlsZSwgJGluY2x1ZGUtZm9udC1mYW1pbHkpO1xuXHR9XG59XG5cbi8vLyBPdXRwdXRzIHRoZSBmb250IHNpemUgYW5kIGxpbmUgaGVpZ2h0IGJhc2VkIG9uIHRoZSBzY2FsZSwgYWxzb1xuLy8vIGFjY2VwdHMgYW4gb3ZlcnJpZGUgbGluZS1oZWlnaHQgdG8gb3V0cHV0IGFuZCBhIGZvbnQgYWRqdXN0bWVudFxuLy8vIHBhcmFtZXRlciBmb3Igd2hlbiBvdXRwdXR0aW5nIHN0eWxlcyBmb3IgcHJvZ3Jlc3NpdmVseSBsb2FkZWQgZm9udHNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2NhbGUgbnVtYmVyIG9uIHNjYWxlIHRoZSBzaXplcyBhcmUgYmFzZWQgb25cbi8vLyBAcGFyYW0ge0Jvb2xlYW4gfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBzaXplIHRvIG92ZXJyaWRlIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCBbJyddIC0gVGhlIGZvbnQgdG8gZ2V0IHRoZSBmb250IHNpemUgZm9yLCBhcyBmb250cyBtYXkgaGF2ZSBkaWZmZXJlbnQgc2NhbGVzLiBVc2VzIHRoZSBkZWZhdWx0IHNjYWxlIGlmIG5vdCBzcGVjaWZpZWQuXG5AbWl4aW4gX29UeXBvZ3JhcGh5U2l6ZSgkc2NhbGUsICRsaW5lLWhlaWdodDogZmFsc2UsICRmb250OiAnJykge1xuXHRAaWYgdHlwZS1vZigkc2NhbGUpID09IG1hcCB7XG5cdFx0QGVhY2ggJGJyZWFrcG9pbnQsICRzY2FsZSBpbiAkc2NhbGUge1xuXHRcdFx0JGN1cnJlbnQtbGluZS1oZWlnaHQ6IGlmKGxlbmd0aCgkc2NhbGUpID09IDIsIG50aCgkc2NhbGUsIDIpLCAkbGluZS1oZWlnaHQpO1xuXHRcdFx0JGN1cnJlbnQtc2NhbGU6IGlmKHR5cGUtb2YoJHNjYWxlKSA9PSBsaXN0IGFuZCBsZW5ndGgoJHNjYWxlKSAhPSAwLCBudGgoJHNjYWxlLCAxKSwgJHNjYWxlKTtcblxuXHRcdFx0QGlmICRicmVha3BvaW50ID09ICdkZWZhdWx0JyBhbmQgJGN1cnJlbnQtc2NhbGUge1xuXHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAxLCAkZm9udCk7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAkY3VycmVudC1saW5lLWhlaWdodCwgJGZvbnQpO1xuXHRcdFx0fVxuXG5cdFx0XHRAaWYgJGJyZWFrcG9pbnQgIT0gJ2RlZmF1bHQnIGFuZCAkY3VycmVudC1zY2FsZSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRicmVha3BvaW50KSB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkY3VycmVudC1zY2FsZSwgMSwgJGZvbnQpO1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAkY3VycmVudC1saW5lLWhlaWdodCwgJGZvbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRzY2FsZSwgMSwgJGZvbnQpO1xuXHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlMaW5lSGVpZ2h0RnJvbVNjYWxlKCRzY2FsZSwgJGxpbmUtaGVpZ2h0LCAkZm9udCk7XG5cdH1cbn1cblxuLy8vIE91dHB1dHMgdGhlIHByb2dyZXNzaXZlIGZvbnQgZmFsbGJhY2sgc3R5bGVzIGJhc2VkIG9uXG4vLy8gZm9udCBhbmQgc2NhbGUgaWYgdGhlIGZvbnQgaGFzIGZhbGxiYWNrIHNldHRpbmdzXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQgLSBGb250IHRvIG91dHB1dCBmYWxsYmFjayBzdHlsZXMgZm9yIChvciAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSAtIE51bWJlciBvbiBzY2FsZSB0aGUgc2l6ZSBpcyBiYXNlZCBvbi5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBUaGUgd2VpZ2h0IG9mIHRoZSBmb250IHdoaWNoIG5lZWRzIGEgZmFsbGJhY2sgZS5nLiAnYm9sZCcuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBUaGUgc3R5bGUgb2YgdGhlIGZvbnQgd2hpY2ggbmVlZHMgYSBmYWxsYmFjayBlLmcuICdpdGFsaWMnLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gV2hldGhlciB0byBvdXRwdXQgdGhlIGZvbnQgZmFtaWx5IG9mIHRoZSBmYWxsYmFjayBmb250ICh2cy4ganVzdCB0aGUgc2l6ZSlcbkBtaXhpbiBfb1R5cG9ncmFwaHlQcm9ncmVzc2l2ZUZvbnRGYWxsYmFjaygkZm9udCwgJHNjYWxlLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlKSB7XG5cdEBpZiBub3QgJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmcge1xuXHRcdEBlcnJvciAnUHJvZ3Jlc3NpdmUgZm9udCBmYWxsYmFja3MgYXJlIGRpc2FibGVkLicgK1xuXHRcdFx0J0lmIHlvdSBhcmUgc3VyZSB5b3Ugd2FudCB0byBvdXRwdXQgcHJvZ3Jlc3NpdmUgZm9udCBmYWxsYmFja3MgaW4gJyArXG5cdFx0XHQneW91ciBwcm9qZWN0IHNldCBgJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmc6IHRydWU7YCAnICtcblx0XHRcdCdhdCB0aGUgdG9wIG9mIHlvdXIgcHJvamVjdCwgYmVmb3JlIGltcG9ydGluZyBTYXNzIGZpbGVzLiAnICtcblx0XHRcdCdTZWUgdGhlIFJFQURNRSBmb3IgZGV0YWlscyBhbmQgbW9yZSBvcHRpb25zIG9yIGNvbnRhY3QgdGhlIE9yaWdhbWkgdGVhbS4nO1xuXHR9XG5cdEBpZiAkc2NhbGUge1xuXHRcdC8vIElmIGZhbHN5IHdlaWdodC9zdHlsZSBkZWZhdWx0IHRvIHJlZ3VsYXIvbm9ybWFsLlxuXHRcdCR3ZWlnaHQ6IGlmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyk7XG5cdFx0JHN0eWxlOiBpZigkc3R5bGUsICRzdHlsZSwgJ25vcm1hbCcpO1xuXHRcdC8vIEZpbmQgZmFsbGJhY2sgY29uZmlnIGZvciBmb250LCB3ZWlnaHQsIGFuZCBzdHlsZS5cblx0XHRAZWFjaCAkZmFsbGJhY2sgaW4gJF9vLXR5cG9ncmFwaHktcHJvZ3Jlc3NpdmUtZm9udC1mYWxsYmFja3Mge1xuXHRcdFx0Ly8gR2V0IGZhbGxiYWNrIHByb3BlcnRpZXMuXG5cdFx0XHQkZmFsbGJhY2stZmFtaWx5OiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2ZhbWlseScpO1xuXHRcdFx0JGZhbGxiYWNrLWxhYmVsOiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2xhYmVsJyk7XG5cdFx0XHQvLyBNYXRjaCByZWd1bGFyIGJ5IGRlZmF1bHQuXG5cdFx0XHQkZmFsbGJhY2std2VpZ2h0OiBtYXAtZ2V0KCRmYWxsYmFjaywgJ3dlaWdodCcpO1xuXHRcdFx0JGZhbGxiYWNrLXdlaWdodDogaWYoJGZhbGxiYWNrLXdlaWdodCwgJGZhbGxiYWNrLXdlaWdodCwgKCdyZWd1bGFyJykpO1xuXHRcdFx0Ly8gTWF0Y2ggbm9ybWFsIGJ5IGRlZmF1bHQuXG5cdFx0XHQkZmFsbGJhY2stc3R5bGU6IG1hcC1nZXQoJGZhbGxiYWNrLCAnc3R5bGUnKTtcblx0XHRcdCRmYWxsYmFjay1zdHlsZTogaWYoJGZhbGxiYWNrLXN0eWxlLCAkZmFsbGJhY2stc3R5bGUsICgnbm9ybWFsJykpO1xuXHRcdFx0JGZhbGxiYWNrLXNjYWxlOiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2ZhbGxiYWNrLXNjYWxlJyk7XG5cdFx0XHQvLyBDaGVjayBpZiBmYWxsYmFjayBpcyBmb3IgdGhlIGdpdmVuIGZvbnQsIHdlaWdodCwgYW5kIHN0eWxlLjtcblx0XHRcdCRsYWJlbC1tYXRjaDogJGZhbGxiYWNrLWxhYmVsID09IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTsgLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcblx0XHRcdCRmYW1pbHktbWF0Y2g6IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmYWxsYmFjay1mYW1pbHkpID09IG9Gb250c0dldEZvbnRGYW1pbHlXaXRob3V0RmFsbGJhY2tzKCRmb250KTtcblx0XHRcdCR3ZWlnaHQtbWF0Y2g6IGluZGV4KCRmYWxsYmFjay13ZWlnaHQsICR3ZWlnaHQpO1xuXHRcdFx0JHN0eWxlLW1hdGNoOiBpZigkZmFsbGJhY2stc3R5bGUsIGluZGV4KCRmYWxsYmFjay1zdHlsZSwgJHN0eWxlKSwgdHJ1ZSk7XG5cdFx0XHQvLyBPdXRwdXQgdGhlIGZhbGxiYWNrIGlmIGl0IG1hdGNoZXMuXG5cdFx0XHRAaWYgKCRsYWJlbC1tYXRjaCBvciAoJGZhbWlseS1tYXRjaCBhbmQgJHdlaWdodC1tYXRjaCBhbmQgJHN0eWxlLW1hdGNoKSkge1xuXHRcdFx0XHQuI3skX28tdHlwb2dyYXBoeS1sb2FkaW5nLXByZWZpeH0tI3skZmFsbGJhY2stbGFiZWx9ICYge1xuXHRcdFx0XHRcdEBpbmNsdWRlIF9vVHlwb2dyYXBoeUZvbnRTaXplKCRzY2FsZTogJHNjYWxlLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3Q6ICRmYWxsYmFjay1zY2FsZSwgJGZvbnQ6ICRmYWxsYmFjay1mYW1pbHkpO1xuXHRcdFx0XHRcdEBpZiAkaW5jbHVkZS1mb250LWZhbWlseSB7XG5cdFx0XHRcdFx0XHRmb250LWZhbWlseTogbWFwLWdldCgkZmFsbGJhY2ssICdmYWxsYmFjaycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gT3V0cHV0cyB0aGUgZm9udCBzaXplIGJhc2VkIG9uIHRoZSBzY2FsZSwgYWxzbyBhY2NlcHRzIGEgZm9udCBhZGp1c3RtZW50XG4vLy8gcGFyYW1ldGVyIGZvciB3aGVuIG91dHB1dHRpbmcgc3R5bGVzIGZvciBwcm9ncmVzc2l2ZWx5IGxvYWRlZCBmb250c1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSAtIE51bWJlciBvbiBzY2FsZSB0aGUgc2l6ZXMgYXJlIGJhc2VkIG9uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QgLSBNdWx0aXBsaWVyIGZvciBmb250LXNpemUgYWRqdXN0bWVudHMsIHdoZW4gYWRkaW5nIHN0eWxlcyBmb3IgcHJvZ3Jlc3NpdmVseSBsb2FkZWQgZm9udC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQgWycnXSAtIFRoZSBmb250IHRvIGdldCB0aGUgZm9udCBzaXplIGZvciwgYXMgZm9udHMgbWF5IGhhdmUgZGlmZmVyZW50IHNjYWxlcy4gVXNlcyB0aGUgZGVmYXVsdCBzY2FsZSBpZiBub3Qgc3BlY2lmaWVkLlxuQG1peGluIF9vVHlwb2dyYXBoeUZvbnRTaXplKCRzY2FsZSwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0OiAxLCAkZm9udDogJycpIHtcblx0QGlmIHR5cGUtb2YoJHNjYWxlKSA9PSBtYXAge1xuXHRcdEBlYWNoICRicmVha3BvaW50LCAkbnVtYmVyIGluICRzY2FsZSB7XG5cdFx0XHRAaWYgJGJyZWFrcG9pbnQgPT0gJ2RlZmF1bHQnIHtcblx0XHRcdFx0QGlmIHR5cGUtb2YoJG51bWJlcikgPT0gbGlzdCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZShudGgoJG51bWJlciwgMSksICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRudW1iZXIsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IEBlbHNlIGlmKCRudW1iZXIpIHtcblx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGJyZWFrcG9pbnQpIHtcblx0XHRcdFx0XHRAaWYgdHlwZS1vZigkbnVtYmVyKSA9PSBsaXN0IHtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUobnRoKCRudW1iZXIsIDEpLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0XHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJG51bWJlciwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJHNjYWxlLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0fVxufVxuIiwiLy8vIE91dHB1dCBzdHlsZXMgZm9yIHBhZ2UgaGVhZGluZ3MuXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGhlYWRpbmcgbGV2ZWwgMSBzdHlsZXMuXG4vLy8gICAgIGgxIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUhlYWRpbmcoJGxldmVsOiAxKTtcbi8vLyAgICAgfVxuLy8vIEBleGFtcGxlIE91dHB1dCBoZWFkaW5nIGxldmVsIDUgc3R5bGVzLlxuLy8vICAgICBoNSB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlIZWFkaW5nKCRsZXZlbDogNSk7XG4vLy8gICAgIH1cbi8vLyBAcGFyYW0ge051bWJlcn0gJGxldmVsIC0gVGhlIGhlYWRpbmcgbGV2ZWwgMS01LlxuQG1peGluIG9UeXBvZ3JhcGh5SGVhZGluZygkbGV2ZWwpIHtcblx0JGhlYWRpbmdzOiAoXG5cdFx0J2hlYWRpbmctbGV2ZWwtb25lJyxcblx0XHQnaGVhZGluZy1sZXZlbC10d28nLFxuXHRcdCdoZWFkaW5nLWxldmVsLXRocmVlJyxcblx0XHQnaGVhZGluZy1sZXZlbC1mb3VyJyxcblx0XHQnaGVhZGluZy1sZXZlbC1maXZlJyxcblx0XHQnaGVhZGluZy1sZXZlbC1zaXgnLFxuXHQpO1xuXG5cdEBpZih0eXBlLW9mKCRsZXZlbCkgIT0gJ251bWJlcicgb3IgJGxldmVsIDwgMSBvciAkbGV2ZWwgPiA2KSB7XG5cdFx0QGVycm9yICdIZWFkaW5nIGxldmVsIG11c3QgYmUgYSBOdW1iZXIgMS02LiBGb3VuZCAje2luc3BlY3QoJGxldmVsKX0uJztcblx0fVxuXG5cdCRmcm9tOiBudGgoJGhlYWRpbmdzLCAkbGV2ZWwpO1xuXG5cdC8vIEdldCBoZWFkaW5nIHN0eWxlcyBmcm9tIGJyYW5kIGNvbmZpZyAoc2VlIF9icmFuZC5zY3NzKVxuXHQvLyBJZiB3ZWlnaHQgaXMgbm90IGdpdmVuIGRlZmF1bHQgdG8gcmVndWxhciwgdG8gb3ZlcnJpZGUgYnJvd3NlciBkZWZhdWx0cy5cblx0JHdlaWdodDogX29UeXBvZ3JhcGh5R2V0KCd3ZWlnaHQnLCAkZnJvbSk7XG5cdCR3ZWlnaHQ6IGlmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyk7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucyhcblx0XHQkc2NhbGU6IChcblx0XHRcdGRlZmF1bHQ6IF9vVHlwb2dyYXBoeUdldCgnc2NhbGUnLCAkZnJvbSksXG5cdFx0XHRTOiBfb1R5cG9ncmFwaHlHZXQoJ3NjYWxlLXMnLCAkZnJvbSksXG5cdFx0XHRNOiBfb1R5cG9ncmFwaHlHZXQoJ3NjYWxlLW0nLCAkZnJvbSksXG5cdFx0XHRMOiBfb1R5cG9ncmFwaHlHZXQoJ3NjYWxlLWwnLCAkZnJvbSksXG5cdFx0XHRYTDogX29UeXBvZ3JhcGh5R2V0KCdzY2FsZS14bCcsICRmcm9tKVxuXHRcdCksXG5cdFx0JHdlaWdodDogJHdlaWdodFxuXHQpO1xuXHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnYm9keScsICd0ZXh0JywgJGZhbGxiYWNrOiBudWxsKTtcblx0bWFyZ2luOiAwIDAgb1NwYWNpbmdCeU5hbWUoJ3M0Jyk7XG59XG5cblxuLy8vIEJvZHkgdGV4dCBzdHlsZXNcbkBtaXhpbiBvVHlwb2dyYXBoeUJvZHkge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoMSk7XG5cdG1hcmdpbjogMCAwIG9TcGFjaW5nQnlOYW1lKCdzNicpO1xuXHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnYm9keScsICd0ZXh0JywgJGZhbGxiYWNrOiBudWxsKTtcbn1cblxuLy8vIFN1YnNjcmlwdCB0ZXh0XG5AbWl4aW4gb1R5cG9ncmFwaHlTdWIge1xuXHQvLyBtYWtlIHN1YnNjcmlwdCBzbWFsbGVyIGFuZCBzYW5zLXNlcmlmXG5cdC8vIDEycHggZ2l2ZW4gMThweCBjb3B5XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygpO1xuXHRmb250LXNpemU6IDAuNjY2ZW07XG5cdC8vIG92ZXJyaWRlIG8tbm9ybWFsaXNlIGRlZmF1bHRcblx0cG9zaXRpb246IHN0YXRpYztcblx0dmVydGljYWwtYWxpZ246IHN1Yjtcblx0bGluZS1oZWlnaHQ6IDA7XG5cdC8vIHByZXZlbnQgc3ViIGluY3JlYXNpbmcgbGluZS1oZWlnaHRcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRtYXJnaW4tYm90dG9tOiAtMWVtO1xufVxuXG4vLy8gU3VwZXJzY3JpcHQgdGV4dFxuQG1peGluIG9UeXBvZ3JhcGh5U3VwZXIge1xuXHQvLyBtYWtlIHN1cGVyc2NyaXB0IHNtYWxsZXIgYW5kIHNhbnMtc2VyaWZcblx0Ly8gMTJweCBnaXZlbiAxOHB4IGNvcHlcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCk7XG5cdGZvbnQtc2l6ZTogMC42NjZlbTtcblx0Ly8gb3ZlcnJpZGUgby1ub3JtYWxpc2UgZGVmYXVsdFxuXHRwb3NpdGlvbjogc3RhdGljO1xuXHR2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7XG5cdGxpbmUtaGVpZ2h0OiAwO1xuXHQvLyBwcmV2ZW50IHN1cGVyIGluY3JlYXNpbmcgbGluZS1oZWlnaHRcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRtYXJnaW4tdG9wOiAtMWVtO1xufVxuXG4vLy8gT3V0cHV0IGxpbmsgc3R5bGVzLlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHRoZSBzdHlsZXMgZm9yIGEgc3RhbmRhcmQgbGluay5cbi8vLyAgICAgLm15LWxpbmsge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaygpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgdGhlIHN0eWxlcyBmb3IgYW4gZXh0ZXJuYWwgbGluay5cbi8vLyAgICAgLm15LWV4dGVybmFsLWxpbmsge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaygkZXh0ZXJuYWw6IHRydWUpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgdGhlIHN0eWxlcyBmb3IgYW4gZXh0ZXJuYWwgbGluaywgd2l0aG91dCByZXBlYXRpbmcgc3R5bGVzIHNoYXJlZCBieSBzdGFuZGFyZCBsaW5rcy5cbi8vLyAgICAgLm15LWxpbmstLWV4dGVybmFsIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpbmsoJGV4dGVybmFsOiB0cnVlLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBjdXN0b20sIGNsYXJldCBjb2xvdXJlZCBsaW5rIHRvIGdvIG9uIHRoZSBkZWZhdWx0IGJhY2tncm91bmQgY29sb3VyIChwYXBlciBmb3IgdGhlIGNvcmUgYnJhbmQsIHdoaXRlIG90aGVyd2lzZSkuXG4vLy8gICAgIC5teS1jbGFyZXQtbGluayB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaW5rKCR0aGVtZTogKFxuLy8vICAgICBcdFx0J2Jhc2UnOiAnY2xhcmV0Jyxcbi8vLyAgICAgXHRcdCdob3Zlcic6ICdjbGFyZXQtMzAnLFxuLy8vICAgICBcdCkpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBjdXN0b20sIGxlbW9uIGNvbG91cmVkIGxpbmsgdG8gZ28gb24gYSBzbGF0ZSBiYWNrZ3JvdW5kLlxuLy8vICAgICAubXktaW52ZXJzZS1saW5rIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpbmsoJHRoZW1lOiAoXG4vLy8gICAgIFx0XHQnYmFzZSc6ICdsZW1vbicsXG4vLy8gICAgIFx0XHQnaG92ZXInOiAnbGVtb24tMzAnLFxuLy8vICAgICBcdFx0J2NvbnRleHQnOiAnc2xhdGUnLFxuLy8vICAgICBcdCkpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRleHRlcm5hbCBbZmFsc2VdIC0gSWYgdGhlIHN0eWxlIGlzIGZvciBleHRlcm5hbCBsaW5rcywgc2V0IHRvIHRydWUgdG8gb3V0cHV0IGFuIGV4dGVybmFsIGxpbmsgaWNvbi5cbi8vLyBAcGFyYW0ge01hcHxOdWxsfSAkdGhlbWUgW251bGxdIC0gQSBjdXN0b20gdGhlbWUgdG8gY2hhbmdlIHRoZSBsb29rIG9mIGEgbGluaywgd2l0aCBjb2xvdXJzIGZvciBwcm9wZXJ0aWVzIGBiYXNlYCAodGhlIG1haW4gbGluayBjb2xvdXIpLCBgaG92ZXJgICh0aGUgbGlua3Mgb3ZlciBjb2xvdXIpLCBhbmQgb3B0aW9uYWwgYGNvbnRleHRgIGtleS4gQ29udGV4dCBpcyB0aGUgY29sb3VyIHRoZSBsaW5rIHdpbGwgYmUgcGxhY2VkIG9uLCBpdCBkZWZhdWx0cyB0byB0aGUgcGFnZSBiYWNrZ3JvdW5kIChwYXBlciBmb3IgdGhlIGNvcmUgYnJhbmQsIHdoaXRlIG90aGVyd2lzZSkuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1iYXNlLXN0eWxlcyBbdHJ1ZV0gLSBJZiBzZXQgdG8gZmFsc2Ugc3RhbmRhcmQgbGluayBzdHlsZXMgd2lsbCBub3QgYmUgb3V0cHV0LCBvbmx5IGFkZGl0aW9uYWwgc3R5bGVzIHJlcXVpcmVkIGJ5IGEgY3VzdG9tIHRoZW1lIG9yIGV4dGVybmFsIGxpbmsuXG5AbWl4aW4gb1R5cG9ncmFwaHlMaW5rKCRleHRlcm5hbDogZmFsc2UsICR0aGVtZTogbnVsbCwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IHRydWUpIHtcblx0Ly8gRGVmYXVsdCBsaW5rIGNvbG91cnMuXG5cdC8vIFRoZXNlIG1heSBiZSBgbnVsbGAgaWYgdGhlIHVzZWNhc2UgaXMgbm90IHNldCwgaS5lLiBmb3IgdGhlIHdoaXRlbGFiZWwgYnJhbmQuXG5cdCRiYXNlLWNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKGxpbmssIHRleHQsICRmYWxsYmFjazogbnVsbCk7XG5cdCRob3Zlci1jb2xvcjogb0NvbG9yc0J5VXNlY2FzZShsaW5rLWhvdmVyLCB0ZXh0LCAkZmFsbGJhY2s6IG51bGwpO1xuXHQkY29udGV4dC1jb2xvcjogb0NvbG9yc0J5VXNlY2FzZShwYWdlLCBiYWNrZ3JvdW5kKTtcblx0JHVuZGVybGluZS1zaXplOiAwLjI1ZXg7IC8vIDJweCBmb3IgMThweCBNZXRyaWNXZWJcblxuXHQvLyBJZiBhIGN1c3RvbSB0aGVtZSBpcyBnaXZlbiBjaGVjayBpdCBpcyBhIG1hcCB3aXRoIHRoZSByZXF1aXJlZCBrZXlzLlxuXHQvLyBBbmQgdXBkYXRlIHRoZSBsaW5rIGNvbG91cnMuXG5cdCRyZXF1aXJlZC10aGVtZS1rZXlzOiAoJ2Jhc2UnLCAnaG92ZXInKTtcblx0QGlmKCR0aGVtZSBhbmQgdHlwZS1vZigkdGhlbWUpICE9ICdtYXAnKSB7XG5cdFx0QGVycm9yICdUaGUgbGluayAkdGhlbWUgYXJndW1lbnQgbXVzdCBgbnVsbGAgb3IgYSBtYXAuICcgK1xuXHRcdFx0J0ZvdW5kOiBcIiN7aW5zcGVjdCgkdGhlbWUpfVwiJztcblx0fVxuXHRAaWYodHlwZS1vZigkdGhlbWUpID09ICdtYXAnKSB7XG5cdFx0Ly8gR2V0IGN1c3RvbSBiYXNlIGNvbG91ci5cblx0XHQkdGhlbWUtYmFzZTogbWFwLWdldCgkdGhlbWUsICdiYXNlJyk7XG5cdFx0JGJhc2UtY29sb3I6IGlmKHR5cGUtb2YoJHRoZW1lLWJhc2UpID09ICdzdHJpbmcnLCBvQ29sb3JzQnlOYW1lKCR0aGVtZS1iYXNlKSwgJHRoZW1lLWJhc2UpO1xuXHRcdC8vIEdldCBjdXN0b20gaG92ZXIgY29sb3VyLlxuXHRcdCR0aGVtZS1ob3ZlcjogbWFwLWdldCgkdGhlbWUsICdob3ZlcicpO1xuXHRcdCRob3Zlci1jb2xvcjogaWYodHlwZS1vZigkdGhlbWUtaG92ZXIpID09ICdzdHJpbmcnLCBvQ29sb3JzQnlOYW1lKCR0aGVtZS1ob3ZlciksICR0aGVtZS1ob3Zlcik7XG5cdFx0Ly8gR2V0IG9wdGlvbmFsIGNvbnRleHQgY29sb3VyLlxuXHRcdCR0aGVtZS1jb250ZXh0OiBtYXAtZ2V0KCR0aGVtZSwgJ2NvbnRleHQnKTtcblx0XHRAaWYgJHRoZW1lLWNvbnRleHQge1xuXHRcdFx0JGNvbnRleHQtY29sb3I6IGlmKHR5cGUtb2YoJHRoZW1lLWNvbnRleHQpID09ICdzdHJpbmcnLCBvQ29sb3JzQnlOYW1lKCR0aGVtZS1jb250ZXh0KSwgJHRoZW1lLWNvbnRleHQpO1xuXHRcdH1cblx0XHQvLyBWYWxpZGF0ZSBjb2xvdXJzIGdpdmVuLlxuXHRcdEBpZih0eXBlLW9mKCRiYXNlLWNvbG9yKSAhPSAnY29sb3InKSB7XG5cdFx0XHRAZXJyb3IgJ0EgY3VzdG9tIGxpbmsgdGhlbWUgbXVzdCBoYXZlIGEgYGJhc2VgIHByb3BlcnR5IHdpdGggYSBjb2xvdXIgb3IgcGFsZXR0ZSBjb2xvdXIgbmFtZSBlLmcuIGBjbGFyZXRgLiBCdXQgZm91bmQgI3skdGhlbWUtYmFzZX0uJztcblx0XHR9XG5cdFx0QGlmKHR5cGUtb2YoJGhvdmVyLWNvbG9yKSAhPSAnY29sb3InKSB7XG5cdFx0XHRAZXJyb3IgJ0EgY3VzdG9tIGxpbmsgdGhlbWUgbXVzdCBoYXZlIGEgYGhvdmVyYCBwcm9wZXJ0eSB3aXRoIGEgY29sb3Igb3IgcGFsZXR0ZSBjb2xvdXIgbmFtZSBlLmcuIGBjbGFyZXRgLiBCdXQgZm91bmQgI3skdGhlbWUtaG92ZXJ9Lic7XG5cdFx0fVxuXHRcdEBpZigkdGhlbWUtY29udGV4dCBhbmQgdHlwZS1vZigkY29udGV4dC1jb2xvcikgIT0gJ2NvbG9yJykge1xuXHRcdFx0QGVycm9yICdBIGN1c3RvbSBsaW5rIHRoZW1lIG1heSBvcHRpb25hbGx5IGhhdmUgYSBgY29udGV4dGAgcHJvcGVydHkgd2l0aCBhIGNvbG9yIG9yIHBhbGV0dGUgY29sb3VyIG5hbWUsIHRvIGluZGljYXRlIHRoZSBjb2xvdXIgb2YgdGhlIHBhZ2UgYmVoaW5kIHRoZSBsaW5rLCBlLmcuIGBudWxsYCBvciBgcGFwZXJgLiBCdXQgZm91bmQgI3skdGhlbWUtY29udGV4dH0uJztcblx0XHR9XG5cdH1cblxuXHQvLyBPdXRwdXQgZXh0ZXJuYWwgbGluayBzdHlsZXMuXG5cdC8vIEZhbGxiYWNrIHRvIGEgYmxhY2sgaWNvbiBpZiBubyBsaW5rIGNvbG91ciBpcyBnaXZlbi5cblx0QGlmKCRleHRlcm5hbCkge1xuXHRcdCRpY29uLWNvbG9yOiBpZigkYmFzZS1jb2xvciwgJGJhc2UtY29sb3IsIG9Db2xvcnNCeU5hbWUoJ2JsYWNrJykpO1xuXHRcdCRpY29uLXNpemU6IDFlbTtcblx0XHQkaWNvbi1pbmJ1aWx0LXBhZGRpbmctc2l6ZTogI3tkaXYoJGljb24tc2l6ZSwgNCl9O1xuXHRcdCRpY29uLXBhZGRpbmctY2FsYzogXCIjeyRpY29uLXNpemV9ICsgI3swLjVjaH1cIjtcblx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCdvdXRzaWRlLXBhZ2UnLCAkaWNvbi1jb2xvciwgJHNpemU6IG51bGwsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHQvLyBBZGQgcGFkZGluZyBmb3IgaWNvbiBiYWNrZ3JvdW5kLlxuXHRcdC8vIFRvIHBvc2l0aW9uIHRoZSBpY29uIGNsb3NlciB0byB0aGUgY29weSwgbWludXMgdGhlIHJpZ2h0L2xlZnQgcGFkZGluZ1xuXHRcdC8vIGJ1aWx0IGludG8gdGhlIGljb24gc3ZnICgxMHB4IGZvciBhIDQwcHggaWNvbilcblx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vRmluYW5jaWFsLVRpbWVzL2Z0aWNvbnMvYmxvYi92MS4yMC41L2NvbnRyaWJ1dGluZy5tZCNkZXNpZ25cblx0XHRwYWRkaW5nLXJpZ2h0OiBjYWxjKCN7JGljb24tcGFkZGluZy1jYWxjfSAtICN7JGljb24taW5idWlsdC1wYWRkaW5nLXNpemV9IC0gI3skaWNvbi1pbmJ1aWx0LXBhZGRpbmctc2l6ZX0pO1xuXHRcdGJhY2tncm91bmQtcG9zaXRpb24teDogY2FsYygxMDAlICsgMC41Y2gpO1xuXHRcdC8vIE1pbWljIGJhc2VsaW5lIGFsaWdubWVudC5cblx0XHRAc3VwcG9ydHMgKGJhY2tncm91bmQtc2l6ZTogY29udGFpbikge1xuXHRcdFx0YmFja2dyb3VuZC1wb3NpdGlvbi15OiBjYWxjKDEwMCUgKyAjeyR1bmRlcmxpbmUtc2l6ZX0gLSAxcHgpO1xuXHRcdH1cblx0XHRAc3VwcG9ydHMgKHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6ICR1bmRlcmxpbmUtc2l6ZSkge1xuXHRcdFx0YmFja2dyb3VuZC1wb3NpdGlvbi15OiBjYWxjKDEwMCUgKyAjeyRpY29uLWluYnVpbHQtcGFkZGluZy1zaXplfSAtICN7JHVuZGVybGluZS1zaXplfSAtIDFweCk7XG5cdFx0fVxuXHRcdGJhY2tncm91bmQtb3JpZ2luOiBib3JkZXItYm94O1xuXHRcdC8vIElFMTEgZG9lcyBub3Qgc2l6ZSBhbmQgcG9zaXRpb24gdGhlIHN2ZyBpY29uIGJhY2tncm91bmQgY29ycmVjdGx5XG5cdFx0Ly8gdXNpbmcgYGJhY2tncm91bmQtc2l6ZTogY29udGFpbmAuIFVzZSBAc3VwcG9ydHMgdG8gZXhjbHVkZSBJRTExLFxuXHRcdC8vIGFzIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBAc3VwcG9ydHNcblx0XHRiYWNrZ3JvdW5kLXNpemU6IGNhbGMoI3skaWNvbi1wYWRkaW5nLWNhbGN9KSBjYWxjKCN7JGljb24tcGFkZGluZy1jYWxjfSk7IC8vIElFMTEgZmFsbGJhY2tcblx0XHRAc3VwcG9ydHMgKGJhY2tncm91bmQtc2l6ZTogY29udGFpbikge1xuXHRcdFx0YmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuXHRcdH1cblx0XHQmW3RhcmdldD1cIl9ibGFua1wiXTphZnRlciB7XG5cdFx0XHRAaW5jbHVkZSBvTm9ybWFsaXNlVmlzdWFsbHlIaWRkZW4oKTtcblx0XHRcdGNvbnRlbnQ6ICcob3BlbnMgYSBuZXcgd2luZG93KSc7XG5cdFx0fVxuXHR9XG5cblx0Ly8gT3V0cHV0IGJhc2Ugc3R5bGVzIHNoYXJlZCBieSBhbGwgbGlua3MuXG5cdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcykge1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Ym9yZGVyLWJvdHRvbTogJHVuZGVybGluZS1zaXplIHNvbGlkO1xuXG5cdFx0QHN1cHBvcnRzICh0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAkdW5kZXJsaW5lLXNpemUpIHtcblx0XHRcdGJvcmRlci1ib3R0b206IDA7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAkdW5kZXJsaW5lLXNpemU7IC8vc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1taXNzcGVsbGVkLXByb3BlcnRpZXNcblx0XHRcdHRleHQtZGVjb3JhdGlvbi1saW5lOiB1bmRlcmxpbmU7XG5cdFx0fVxuXHR9XG5cblx0Ly8gT3V0cHV0IGJhc2Ugc3R5bGVzIHNoYXJlZCBieSBhbGwgbGlua3MsIG9yXG5cdC8vIHJlcXVpcmVkIGZvciBhIGN1c3RvbSBsaW5rIHRoZW1lLlxuXHRAaWYoJGluY2x1ZGUtYmFzZS1zdHlsZXMgb3IgJHRoZW1lKSB7XG5cdFx0Y29sb3I6ICRiYXNlLWNvbG9yO1xuXHRcdCRkZWNvcmF0aW9uLWNvbG9yOiBpZigkYmFzZS1jb2xvciwgb0NvbG9yc01peCgkYmFzZS1jb2xvciwgJGNvbnRleHQtY29sb3IsICRwZXJjZW50YWdlOiAyMCksIG51bGwpO1xuXHRcdGJvcmRlci1ib3R0b20tY29sb3I6ICRkZWNvcmF0aW9uLWNvbG9yO1xuXHRcdHRleHQtZGVjb3JhdGlvbi1jb2xvcjogJGRlY29yYXRpb24tY29sb3I7XG5cdH1cblxuXHQmOmhvdmVyIHtcblx0XHRAaWYoJGluY2x1ZGUtYmFzZS1zdHlsZXMgb3IgJHRoZW1lKSB7XG5cdFx0XHRjb2xvcjogJGhvdmVyLWNvbG9yO1xuXHRcdFx0JGRlY29yYXRpb24tY29sb3I6IGlmKCRiYXNlLWNvbG9yLCBvQ29sb3JzTWl4KCRiYXNlLWNvbG9yLCAkY29udGV4dC1jb2xvciwgJHBlcmNlbnRhZ2U6IDQwKSwgbnVsbCk7XG5cdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiAkZGVjb3JhdGlvbi1jb2xvcjtcblx0XHRcdHRleHQtZGVjb3JhdGlvbi1jb2xvcjogJGRlY29yYXRpb24tY29sb3I7XG5cdFx0fVxuXHR9XG5cblx0Ly8gby1ub3JtYWxpc2UgcHJvdmlkZXMgZXh0cmEgZm9jdXMgc3R5bGVzIGZvciBsaW5rc1xuXHQmOmZvY3VzIHtcblx0XHRAaWYoJGluY2x1ZGUtYmFzZS1zdHlsZXMpIHtcblx0XHRcdCRkZWNvcmF0aW9uLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRcdGJvcmRlci1ib3R0b20tY29sb3I6ICRkZWNvcmF0aW9uLWNvbG9yO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAkZGVjb3JhdGlvbi1jb2xvcjtcblx0XHR9XG5cdFx0QGlmKCRpbmNsdWRlLWJhc2Utc3R5bGVzIG9yICR0aGVtZSkge1xuXHRcdFx0Y29sb3I6ICRob3Zlci1jb2xvcjtcblx0XHR9XG5cdH1cbn1cblxuLy8vIE91dHB1dCBzdHlsZXMgZm9yIGxpc3RzLlxuLy8vIFN0eWxlcyBjaGlsZCBgbGlgIGVsZW1lbnRzLiBBcHBseSB0byBhXG4vLy8gY29udGFpbmluZyBsaXN0IGVsZW1lbnQgc3VjaCBhcyBgdWxgIG9yIGBvbGAuXG4vLy8gRG9lcyBub3Qgb3V0cHV0IGZvbnQgc3R5bGVzLCB0aGVzZSBhcmVcbi8vLyBpbmhlcml0ZWQgKEBzZWUgb1R5cG9ncmFwaHlCb2R5KS5cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCB0aGUgc3R5bGVzIGZvciBhbiB1bm9yZGVyZWQgbGlzdC5cbi8vLyAgICAgLm15LXVub3JkZXJlZC1saXN0IHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpc3QoJ3Vub3JkZXJlZCcpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgdGhlIHN0eWxlcyBmb3IgYW4gb3JkZXJlZCBhbmQgdW5vcmRlcmVkIGxpc3QsIHNoYXJpbmcgYmFzZSBsaXN0IHN0eWxlcy5cbi8vLyAgICAgLm15LWxpc3Qge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGlzdCgpO1xuLy8vICAgICB9XG4vLy9cbi8vLyAgICAgLm15LWxpc3QtLW9yZGVyZWQge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGlzdCgnb3JkZXJlZCcsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vICAgICAubXktbGlzdC0tdW5vcmRlcmVkIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpc3QoJ3Vub3JkZXJlZCcsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfE51bGx9ICR0eXBlIFtudWxsXSAtIFwib3JkZXJlZFwiLCBcInVub3JkZXJlZFwiLCBvciBudWxsIGZvciBqdXN0IHRoZSBiYXNlIHN0eWxlcyBzaGFyZWQgYnkgYWxsIGxpc3RzXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1iYXNlLXN0eWxlcyBbdHJ1ZV0gLSBzZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBiYXNlIHN0eWxlcyB3aGljaCBhcmUgc2hhcmVkIGJ5IGFsbCBsaXN0IHR5cGVzXG5AbWl4aW4gb1R5cG9ncmFwaHlMaXN0KCR0eXBlOiBudWxsLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogdHJ1ZSkge1xuXHQvLyBVbmRvIGJyb3dzZXIgZGVmYXVsdHMuXG5cdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcykge1xuXHRcdG1hcmdpbjogMCAwIG9TcGFjaW5nQnlOYW1lKCdzNicpO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0fVxuXHQvLyBSZXNldCBudW1iZXIgY291bnRlciBmb3IgbmV3IG9yZGVyZWQgbGlzdC5cblx0QGlmKCR0eXBlID09ICdvcmRlcmVkJykge1xuXHRcdGNvdW50ZXItcmVzZXQ6IGl0ZW07XG5cdH1cblx0PiBsaSB7XG5cdFx0QGlmKCRpbmNsdWRlLWJhc2Utc3R5bGVzKSB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHQvLyBVbmRvIGJyb3dzZXIgZGVmYXVsdC5cblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdC8vIEFsbG93IHNwYWNlIGZvciAyLTMgbnVtYmVycyBmb3IgYm90aCBvcmRlcmVkIGFuZCB1bm9yZGVyZWQgbGlzdHMsXG5cdFx0XHQvLyBzbyBjb250ZW50IGFsaWducyBiZXR3ZWVuIGJvdGggbGlzdCB0eXBlcy5cblx0XHRcdHBhZGRpbmctbGVmdDogY2FsYygyY2ggKyAje29TcGFjaW5nQnlOYW1lKCdzMScpfSk7XG5cdFx0fVxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcykge1xuXHRcdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoKTtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdGxlZnQ6IDA7XG5cdFx0XHRcdHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBsZWZ0O1xuXHRcdFx0fVxuXG5cdFx0XHRAaWYoJHR5cGUgPT0gJ3Vub3JkZXJlZCcpIHtcblx0XHRcdFx0Y29udGVudDogJ1xcMjAyMic7IC8vIGRvdCBjaGFyYWN0ZXJcblx0XHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0XHRcdC8vIDI4cHggbWFya2VyIGdpdmVuIGEgcGFyZW50IGZvbnQtc2l6ZSBvZiAxOHB4XG5cdFx0XHRcdHRyYW5zZm9ybTogc2NhbGUoI3tkaXYoMjgsIDE4KX0pO1xuXHRcdFx0XHQvLyBtYWdpYyBudW1iZXIgdG8gY2VudGVyIG1hcmtlclxuXHRcdFx0XHRtYXJnaW4tdG9wOiAje2RpdigyOCwgMTgpICogLTAuMTZjaH07XG5cdFx0XHR9XG5cblx0XHRcdEBpZigkdHlwZSA9PSAnb3JkZXJlZCcpIHtcblx0XHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCR3ZWlnaHQ6ICdzZW1pYm9sZCcsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG5cdFx0XHRcdGNvbnRlbnQ6IGNvdW50ZXIoaXRlbSk7XG5cdFx0XHRcdGNvdW50ZXItaW5jcmVtZW50OiBpdGVtO1xuXHRcdFx0XHRmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwidG51bVwiO1xuXHRcdFx0XHQvLyAxNnB4IG1hcmtlciBnaXZlbiBhIHBhcmVudCBmb250LXNpemUgb2YgMThweFxuXHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlKCN7ZGl2KDE2LCAxOCl9KTtcblx0XHRcdFx0Ly8gbWFnaWMgbnVtYmVyIHRvIG1ha2UgbWFya2VyIGZsdXNoIHRvIHRoZSBsZWZ0XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAje2RpdigxNiwgMTgpICogLTAuMTZjaH07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBTdHlsZSBmb3IgPGZvb3Rlcj4gdGFnc1xuQG1peGluIG9UeXBvZ3JhcGh5Rm9vdGVyIHtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJGxpbmUtaGVpZ2h0OiAyNHB4KTtcblx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ2JvZHknLCAndGV4dCcsICRmYWxsYmFjazogbnVsbCk7XG59XG5cbi8vLyBTdHlsZXMgZm9yIHBob3RvIG9yIHZpZGVvIGNyZWRpdC9jYXB0aW9uXG5AbWl4aW4gb1R5cG9ncmFwaHlDYXB0aW9uIHtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogLTEpO1xuXHRtYXJnaW4tdG9wOiBvU3BhY2luZ0J5TmFtZSgnczInKTtcblx0bWFyZ2luLWJvdHRvbTogMDtcblx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ2JvZHknLCAndGV4dCcsICRmYWxsYmFjazogbnVsbCk7XG59XG5cbiIsIi8vLyBPdXRwdXQgc3R5bGVzIGZvciBhbiBTVkcgaWNvbi5cbi8vLyBTdHlsZXMgdGhlIGljb24gYXMgYSBiYWNrZ3JvdW5kIGltYWdlLCBzZXR0aW5nIGEgd2lkdGggYW5kIGhlaWdodCBvbiB0aGUgZWxlbWVudCBhcyByZXF1ZXN0ZWQuXG4vLy8gQSBmYWxsYmFjayBiYWNrZ3JvdW5kIGZvciBXaW5kb3dzIEhpZ2ggQ29udHJhc3QgbW9kZSBpcyBhbHNvIG91dHB1dC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRpY29uLW5hbWUgLSBUaGlzIHNob3VsZCBiZSBhIHJlZmVyZW5jZSB0byBhbiBpY29uIGluY2x1ZGVkIGluIG8taWNvbnMgZWcgYXJyb3ctZG93blxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkY29sb3IgLSBUaGlzIHNob3VsZCBiZSBhIGhleCBjb2xvdXIgdmFsdWUuIFVzZWQgdG8gY29sb3IgdGhlIGljb24uIFdlIHN1Z2dlc3QgdXNpbmcgYW4gby1jb2xvcnMgZnVuY3Rpb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TnVsbH0gJHNpemUgWzEyOF0gLSBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgaWNvbiAodW5pdHMgb3B0aW9uYWwsIGRlZmF1bHRzIHRvIHB4KS4gU2V0IHRvIGBudWxsYCB0byBzZXQgbm8gd2lkdGggb3IgaGVpZ2h0LlxuLy8vIEBwYXJhbSB7Qm9vbH0gJGluY2x1ZGUtYmFzZS1zdHlsZXMgW3RydWVdIC0gSWYgdHJ1ZSwgd2lsbCBvdXRwdXQgc3R5bGUgcnVsZXMgZm9yIHRoZSBjb250YWluZXIuIElmIGZhbHNlIHdpbGwgb25seSBvdXRwdXQgdGhlIGJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHlcbi8vLyBAcGFyYW0ge0Jvb2x9ICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrIFt0cnVlXSAtIFRvIG91dHB1dCBNaWNyb3NvZnQgSGlnaCBDb250cmFzdCBmYWxsYmFjayBmb3IgYWNjZXNzaWJpbGl0eSByZWFzb25zIG9yIG5vdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGljb25zZXQtdmVyc2lvbiBbMV0gLSBBdCBwcmVzZW50IG9ubHkgMSB2ZXJzaW9uIG9mIHRoZSBpY29uIHNldCBpcyBhdmFpbGFibGUuXG5AbWl4aW4gb0ljb25zQ29udGVudCgkaWNvbi1uYW1lLCAkY29sb3I6IG51bGwsICRzaXplOiAxMjgsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiB0cnVlLCAkaGlnaC1jb250cmFzdC1mYWxsYmFjazogdHJ1ZSwgJGljb25zZXQtdmVyc2lvbjogMSkge1xuXHQvLyBFcnJvciBpZiB0aGUgZ2xvYmFsICRzeXN0ZW0tY29kZSB2YXJpYWJsZSBpcyBub3Qgc2V0LlxuXHQvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciBpbWFnZSBzZXJ2aWNlIHJlcXVlc3RzLlxuXHRAaWYoZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnc3lzdGVtLWNvZGUnKSA9PSBmYWxzZSBvciB0eXBlLW9mKCRzeXN0ZW0tY29kZSkgIT0gJ3N0cmluZycpIHtcblx0XHRAZXJyb3IgJ0EgZ2xvYmFsIFwiJHN5c3RlbS1jb2RlXCIgU2FzcyB2YXJpYWJsZSBtdXN0IGJlIHNldCB0byBhIHZhbGlkIEJpem9wcyBzeXN0ZW0gY29kZSAoXFxlXTg7O2h0dHBzOi8vYml6LW9wcy5pbi5mdC5jb20vbGlzdC9TeXN0ZW1zXFxlXFxcXGh0dHBzOi8vYml6LW9wcy5pbi5mdC5jb20vbGlzdC9TeXN0ZW1zXFxlXTg7O1xcZVxcXFwpLic7XG5cdH1cblxuXHQvLyBJZiB0aGUgc2l6ZSBvZiB0aGUgaWNvbnMgaGFzIGJlZW4gZ2l2ZW4gd2l0aG91dCBhIHVuaXQsIGRlZmF1bHQgdG8gcHguXG5cdEBpZiAodHlwZS1vZigkc2l6ZSkgPT0gJ251bWJlcicgYW5kIHVuaXRsZXNzKCRzaXplKSkge1xuXHRcdCRzaXplOiAkc2l6ZSArIDBweDtcblx0fVxuXG5cdC8vIERlZmluZSBiYXNlIGltYWdlIHNlcnZpY2UgcGF0aC5cblx0JHNjaGVtZTogXCJmdGljb24tdiN7JGljb25zZXQtdmVyc2lvbn1cIjtcblx0JHNlcnZpY2UtdXJsOiBcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3LyN7JHNjaGVtZX06I3skaWNvbi1uYW1lfVwiO1xuXG5cdC8vIEluY2x1ZGUgYmFzZSBzdHlsZXMgc2hhcmVkIGJ5IGFsbCBpY29ucy5cblx0QGlmICgkaW5jbHVkZS1iYXNlLXN0eWxlcyA9PSB0cnVlKSB7XG5cdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudEJhc2VTdHlsZXM7XG5cdH1cblxuXHQvLyBTZXQgdGhlIGljb24gZGltZW50aW9ucy5cblx0d2lkdGg6ICRzaXplO1xuXHRoZWlnaHQ6ICRzaXplO1xuXG5cdC8vIEluY2x1ZGUgdGhlIGljb24gdmlhIHRoZSBpbWFnZSBzZXJ2aWNlLlxuXHQvLyBCdWlsZCBhbiBpbWFnZSBzZXJ2aWNlIHVybCBmb3IgdGhlIHJlcXVlc3RlZCBpY29uLlxuXHQkcXVlcnk6IFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX1cIjtcblx0QGlmICRjb2xvciAhPSBudWxsIHtcblx0XHQkY29sb3I6IHN0ci1zbGljZShpZS1oZXgtc3RyKCRjb2xvciksIDQpO1xuXHRcdCRxdWVyeTogJHF1ZXJ5ICsgXCImdGludD0lMjMjeyRjb2xvcn0sJTIzI3skY29sb3J9XCI7XG5cdH1cblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArICRxdWVyeSArIFwiJmZvcm1hdD1zdmdcIik7XG5cblx0Ly8gSW5jbHVkZSBhIGZhbGxiYWNrIGZvciBXaW5kb3cncyBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdC8vIFRoaXMgbW9kZSByZW1vdmVzIGJhY2tncm91bmQgaW1hZ2VzIHVubGVzcyBzcGVjaWZjYWxseSBpbmNsdWRlZFxuXHQvLyBmb3IgaGlnaCBjb250cmFzdCBtb2RlLlxuXHQvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcblx0QGlmICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrIHtcblx0XHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArIFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX0mdGludD0lMjNmZmZmZmYsJTIzZmZmZmZmJmZvcm1hdD1zdmdcIik7XG5cdFx0fVxuXG5cdFx0QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBibGFjay1vbi13aGl0ZSkge1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArIFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX0mdGludD0lMjMwMDAwMDAsJTIzMDAwMDAwJmZvcm1hdD1zdmdcIik7XG5cdFx0fVxuXHR9XG5cdC8vIHNhc3MtbGludDplbmFibGUgbm8tdmVuZG9yLXByZWZpeGVzXG59XG5cbi8vLyBCYXNlIHN0eWxlcyBmb3IgYWxsIGljb25zXG4vLy8gQGFjY2VzcyBwdWJsaWNcbkBtaXhpbiBvSWNvbnNDb250ZW50QmFzZVN0eWxlcygpIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDUwJTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cbiIsIi8vLyBWaXN1YWxseSBoaWRlIGFuIGVsZW1lbnQgd2hpbGUgc3RpbGxcbi8vLyBhbGxvd2luZyBpdCB0byBiZSByZWFkIGJ5IGEgc2NyZWVucmVhZGVyXG5AbWl4aW4gb05vcm1hbGlzZVZpc3VhbGx5SGlkZGVuIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRjbGlwOiByZWN0KDAgMCAwIDApO1xuXHRjbGlwLXBhdGg6IHBvbHlnb24oMCAwLCAwIDApO1xuXHRtYXJnaW46IC0xcHg7XG5cdGJvcmRlcjogMDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0cGFkZGluZzogMDtcblx0d2lkdGg6IDJweDtcblx0aGVpZ2h0OiAycHg7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8vLyBDbGVhcmZpeCBoZWxwZXIgc3R5bGVzXG4vLy8gT3V0cHV0cyBjbGVhcmZpeCBzdHlsZXMgb24gdGhlIGN1cnJlbnQgZWxlbWVudFxuQG1peGluIG9Ob3JtYWxpc2VDbGVhcmZpeCB7XG5cdHpvb206IDE7XG5cblx0JjpiZWZvcmUsXG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHRcdGRpc3BsYXk6IGZsZXg7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tYmxvY2stbm8tZHVwbGljYXRlLXByb3BlcnRpZXNcblx0fVxuXHQmOmFmdGVyIHtcblx0XHRjbGVhcjogYm90aDtcblx0fVxufVxuXG4vLy8gQWRkcyBib3ggc2l6aW5nIHRvIGN1cnJlbnQgYW5kIGFsbCBjaGlsZCBlbGVtZW50c1xuQG1peGluIG9Ob3JtYWxpc2VCb3hTaXppbmcge1xuXG5cdC8qYXV0b3ByZWZpeGVyOiBvZmYqL1xuXHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHQtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG5cblx0JiAqLFxuXHQmICo6YmVmb3JlLFxuXHQmICo6YWZ0ZXIge1xuXG5cdFx0LyphdXRvcHJlZml4ZXI6IG9mZiovXG5cdFx0LXdlYmtpdC1ib3gtc2l6aW5nOiBpbmhlcml0OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblx0XHQtbW96LWJveC1zaXppbmc6IGluaGVyaXQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRcdGJveC1zaXppbmc6IGluaGVyaXQ7XG5cblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gZ2VuZXJhbCBodG1sIGVsZW1lbnRzXG4vLy8gZWZmZWN0czogPGh0bWw+LCA8Ym9keT4sIDxtYWluPiwgYW5kIDpmb2N1cyBzdGF0ZVxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTm9ybWFsaXNlQm9keSgkZm9udC1zbW9vdGhpbmc6IHRydWUsICRib3gtc2l6aW5nOiB0cnVlLCAkZm9jdXM6IHRydWUsICRyZWR1Y2UtbW90aW9uOiB0cnVlKSB7XG5cdGh0bWwsXG5cdGJvZHkge1xuXHRcdG1hcmdpbjogMDtcblx0XHR0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuXG5cdFx0LW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRcdC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cblxuXHRcdEBpZiAkZm9udC1zbW9vdGhpbmcge1xuXG5cdFx0XHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0XHRcdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG5cblx0XHR9XG5cblx0XHRAaWYgJGJveC1zaXppbmcge1xuXHRcdFx0QGluY2x1ZGUgb05vcm1hbGlzZUJveFNpemluZztcblx0XHR9XG5cblx0XHRAaWYgJHJlZHVjZS1tb3Rpb24ge1xuXHRcdFx0Ly8gSW1tZWRpYXRlbHkganVtcCBhbnkgYW5pbWF0aW9uIHRvIHRoZSBlbmQgcG9pbnQgaWYgdGhlIHVzZXIgaGFzXG5cdFx0XHQvLyBzZXQgdGhlaXIgZGV2aWNlIHRvIFwicHJlZmVycyByZWR1Y2VkIG1vdGlvblwiLlxuXHRcdFx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTFcblx0XHRcdEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cdFx0XHRcdCosXG5cdFx0XHRcdCo6YmVmb3JlLFxuXHRcdFx0XHQqOmFmdGVyIHtcblxuXHRcdFx0XHRcdGFuaW1hdGlvbi1kdXJhdGlvbjogMC4wMDFzICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cdFx0XHRcdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMDFzICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cdFx0XHRcdFx0YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMSAhaW1wb3J0YW50OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBHaXZlIDxtYWluPnMgdGhlIHByb3BlciBkaXNwbGF5IHZhbHVlIGluIElFLlxuXHRtYWluIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG5cdEBpZiAkZm9jdXMge1xuXHRcdEBpbmNsdWRlIF9vTm9ybWFsaXNlRm9jdXMoKTtcblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgZm9yIGZvY3VzZWQgZWxlbWVudHMuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VGb2N1cyB7XG5cdC8vIEFwcGx5IDpmb2N1cyBzdHlsZXMgYXMgYSBmYWxsYmFja1xuXHQvLyBUaGVzZSBzdHlsZXMgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbCBicm93c2VycyB0aGF0IGRvbid0IHVzZSB0aGUgcG9seWZpbGwsIHRoaXMgaW5jbHVkZXMgYnJvd3NlcnMgd2hpY2ggc3VwcG9ydCB0aGUgZmVhdHVyZSBuYXRpdmVseS5cblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkge1xuXHRcdC8vIFN0YW5kYXJkaXNlIGZvY3VzIHN0eWxlcy5cblx0XHQ6Zm9jdXMge1xuXHRcdFx0b3V0bGluZTogMnB4IHNvbGlkICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXG5cdFx0aW5wdXQ6Zm9jdXMsXG5cdFx0dGV4dGFyZWE6Zm9jdXMsXG5cdFx0c2VsZWN0OmZvY3VzIHtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHRcdH1cblx0fVxuXG5cdC8vIFdoZW4gdGhlIGZvY3VzLXZpc2libGUgcG9seWZpbGwgaXMgYXBwbGllZCBgLmpzLWZvY3VzLXZpc2libGVgIGlzIGFkZGVkIHRvIHRoZSBodG1sIGRvbSBub2RlXG5cdC8vICh0aGUgYm9keSBub2RlIGluIHY0IG9mIHRoZSAzcmQgcGFydHkgcG9seWZpbGwpXG5cblx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRib2R5LmpzLWZvY3VzLXZpc2libGUsIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0aHRtbC5qcy1mb2N1cy12aXNpYmxlIHtcblx0XHQvLyBTdGFuZGFyZGlzZSBmb2N1cyBzdHlsZXMuXG5cdFx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdC5mb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IDJweCBzb2xpZCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHRcdH1cblx0XHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0aW5wdXQuZm9jdXMtdmlzaWJsZSwgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdHRleHRhcmVhLmZvY3VzLXZpc2libGUsXG5cdFx0c2VsZWN0LmZvY3VzLXZpc2libGUge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4ICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXHRcdC8vIERpc2FibGUgYnJvd3NlciBkZWZhdWx0IGZvY3VzIHN0eWxlLlxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHQ6Zm9jdXM6bm90KC5mb2N1cy12aXNpYmxlKSB7XG5cdFx0XHRvdXRsaW5lOiAwO1xuXHRcdH1cblx0fVxuXG5cblx0Ly8gVGhlc2Ugc3R5bGVzIHdpbGwgYmUgaWdub3JlZCBieSBicm93c2VycyB3aGljaCBkbyBub3QgcmVjb2duaXNlIHRoZSA6Zm9jdXMtdmlzaWJsZSBzZWxlY3RvciAoYXMgcGVyIHRoZSB0aGlyZCBidWxsZXQgcG9pbnQgaW4gaHR0cHM6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy0zLyNDb25mb3JtYW5jZSlcblx0Ly8gSWYgYSBicm93c2VyIHN1cHBvcnRzIDpmb2N1cy12aXNpYmxlIHdlIHVuc2V0IHRoZSA6Zm9jdXMgc3R5bGVzIHRoYXQgd2VyZSBhcHBsaWVkIGFib3ZlXG5cdC8vICh3aXRoaW4gdGhlIGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBibG9jaykuXG5cdDpmb2N1cy12aXNpYmxlLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzIHtcblx0XHRvdXRsaW5lOiB1bnNldDtcblx0fVxuXG5cdDpmb2N1cy12aXNpYmxlLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cyxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHRleHRhcmVhOmZvY3VzLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMge1xuXHRcdGJveC1zaGFkb3c6IHVuc2V0O1xuXHR9XG5cblx0Ly8gU3R5bGVzIGdpdmVuIDpmb2N1cy12aXNpYmxlIHN1cHBvcnQuIEV4dHJhIHNlbGVjdG9ycyBuZWVkZWQgdG8gbWF0Y2hcblx0Ly8gcHJldmlvdXMgYDpmb2N1c2Agc2VsZWN0b3Igc3BlY2lmaWNpdHkuXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMtdmlzaWJsZSxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIDpmb2N1cy12aXNpYmxlLFxuXHQ6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0b3V0bGluZTogMnB4IHNvbGlkICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdH1cblxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMtdmlzaWJsZSxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIGlucHV0OmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgc2VsZWN0OmZvY3VzLXZpc2libGUsXG5cdGlucHV0OmZvY3VzLXZpc2libGUsXG5cdHRleHRhcmVhOmZvY3VzLXZpc2libGUsXG5cdHNlbGVjdDpmb2N1cy12aXNpYmxlIHtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0fVxuXG5cdC8vIFByZXZlbnQgSUUgZnJvbSBwdXR0aW5nIGZvY3VzIHN0eWxlcyBvbiB0aGUgYm9keSBvciBodG1sLiBUaGVzZSBzZWxlY3RvcnNcblx0Ly8gc2VydmUgYXMgYSBibGFja2xpc3QgZm9yIFwidGhpbmdzIHdlJ3ZlIGZvdW5kIGNhbiBoYXZlIGZvY3VzIGJ1dCB3ZSBkb24ndCB3YW50XCJcblx0aHRtbDpmb2N1cyxcblx0Ym9keTpmb2N1cyxcblx0W3JlYWRvbmx5XTpmb2N1cyB7XG5cdFx0b3V0bGluZTogbm9uZTtcblx0fVxuXG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byBsaW5rIGVsZW1lbnRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VMaW5rcyB7XG5cblx0Ly8gUmVtb3ZlIHRoZSBncmV5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuXHRhIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgb3V0bGluZSBvbiBmb2N1c2VkIGxpbmtzIHdoZW4gdGhleSBhcmVcblx0Ly8gYWxzbyBhY3RpdmUgb3IgaG92ZXJlZCBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cblx0YTphY3RpdmUsXG5cdGE6aG92ZXIge1xuXHRcdG91dGxpbmUtd2lkdGg6IDA7XG5cdH1cblxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gdGV4dCByZWxhdGVkIGVsZW1lbnRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VUZXh0IHtcblxuXHQvLyAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gRmlyZWZveCAzOS0uXG5cdC8vIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG5cdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0YWJiclt0aXRsZV0ge1xuXHRcdGJvcmRlci1ib3R0b206IDA7IC8vIFsxXVxuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvLyBbMl1cblx0XHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVjbGFyYXRpb24tYmxvY2stbm8tZHVwbGljYXRlLXByb3BlcnRpZXNcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8vIFsyXVxuXHR9XG5cblx0Ly8gUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXG5cdGIsXG5cdHN0cm9uZyB7XG5cdFx0Zm9udC13ZWlnaHQ6IGluaGVyaXQ7XG5cdH1cblxuXHQvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuXHRiLFxuXHRzdHJvbmcge1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkZXI7XG5cdH1cblxuXHQvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCBzdHlsZSBpbiBBbmRyb2lkIDQuMy0uXG5cdGRmbiB7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHR9XG5cblx0Ly8gUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG5cdC8vIGFsbCBicm93c2Vycy5cblx0c3ViLFxuXHRzdXAge1xuXHRcdGZvbnQtc2l6ZTogNzUlO1xuXHRcdGxpbmUtaGVpZ2h0OiAwO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG5cdH1cblxuXHRzdWIge1xuXHRcdGJvdHRvbTogLTAuMjVlbTtcblx0fVxuXG5cdHN1cCB7XG5cdFx0dG9wOiAtMC41ZW07XG5cdH1cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIHRoZSBpbWFnZSBlbGVtZW50XG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VJbWFnZXMge1xuXHQvLyBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLS5cblx0aW1nIHtcblx0XHRib3JkZXItc3R5bGU6IG5vbmU7XG5cdH1cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIGZvcm0gZWxlbWVudHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUZvcm1zIHtcblx0Ly8gUmVzdG9yZSB0aGUgZm9udCB3ZWlnaHQgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG5cdG9wdGdyb3VwIHtcblx0XHRmb250LXdlaWdodDogYm9sZDtcblx0fVxuXG5cdC8vIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuXHQvLyAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuXHQvLyAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG5cdGJ1dHRvbixcblx0aW5wdXQsICAgLy8gWzFdXG5cdHNlbGVjdCB7IC8vIFsyXVxuXHRcdG92ZXJmbG93OiB2aXNpYmxlO1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gU2FmYXJpLlxuXHQvLyAxLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG5cdGJ1dHRvbixcblx0aW5wdXQsXG5cdHNlbGVjdCxcblx0dGV4dGFyZWEgeyAvLyBbMV1cblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cblx0Ly8gMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuXHRidXR0b24sXG5cdHNlbGVjdCB7IC8vIFsxXVxuXHRcdHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHR9XG5cblx0Ly8gQ2hhbmdlIHRoZSBjdXJzb3IgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG5cdGJ1dHRvbixcblx0W3R5cGU9XCJidXR0b25cIl0sXG5cdFt0eXBlPVwicmVzZXRcIl0sXG5cdFt0eXBlPVwic3VibWl0XCJdIHtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdH1cblxuXHQvLyBSZXN0b3JlIHRoZSBkZWZhdWx0IGN1cnNvciB0byBkaXNhYmxlZCBlbGVtZW50cyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cblx0W2Rpc2FibGVkXSB7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cblx0YnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuXHRpbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdHBhZGRpbmc6IDA7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuXHR0ZXh0YXJlYSB7XG5cdFx0b3ZlcmZsb3c6IGF1dG87XG5cdH1cbn1cbiIsIi8vLyBUeXBvZ3JhcGh5IHdyYXBwZXJcbkBtaXhpbiBfb1R5cG9ncmFwaHlXcmFwcGVyKCkge1xuXG5cdC8vIExpc3RzIGluaGVyaXQgZm9udCBmYW1pbHkgYW5kIHNpemUgZnJvbSB0aGUgd3JhcHBlci5cblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlCb2R5KCk7XG5cblx0PiBoMSB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlIZWFkaW5nKCRsZXZlbDogMSk7XG5cdH1cblxuXHQ+IGgyIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUhlYWRpbmcoJGxldmVsOiAyKTtcblx0fVxuXG5cdD4gaDMge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5SGVhZGluZygkbGV2ZWw6IDMpO1xuXHR9XG5cblx0PiBoNCB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlIZWFkaW5nKCRsZXZlbDogNCk7XG5cdH1cblxuXHQ+IGg1IHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUhlYWRpbmcoJGxldmVsOiA1KTtcblx0fVxuXG5cdD4gaDYge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5SGVhZGluZygkbGV2ZWw6IDYpO1xuXHR9XG5cblx0PiBhIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpbmsoKTtcblx0fVxuXG5cdD4gcCB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlCb2R5KCk7XG5cdH1cblxuXHQ+IG9sLFxuXHQ+IHVsIHtcblx0XHQvLyBPdXRwdXQgYmFzZSBzdHlsZXMgc2hhcmVkIGJ5IGFsbCBsaXN0IHR5cGVzLlxuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGlzdCgpO1xuXHR9XG5cblx0PiBvbCB7XG5cdFx0Ly8gT3V0cHV0IGxpc3Qgc3R5bGVzIHVuaXF1ZSB0byBhbiBvcmRlcmVkIGxpc3QuXG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaXN0KCR0eXBlOiAnb3JkZXJlZCcsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG5cdH1cblxuXHQ+IHVsIHtcblx0XHQvLyBPdXRwdXQgbGlzdCBzdHlsZXMgdW5pcXVlIHRvIGFuIHVub3JkZXJlZCBsaXN0LlxuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGlzdCgkdHlwZTogJ3Vub3JkZXJlZCcsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG5cdH1cblxuXHQ+IGZvb3RlciB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlGb290ZXIoKTtcblx0fVxuXG5cdD4gc3Ryb25nIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoXG5cdFx0XHQkd2VpZ2h0OiAnc2VtaWJvbGQnLFxuXHRcdFx0JGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlXG5cdFx0KTtcblx0fVxuXG5cdD4gZW0ge1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0fVxuXG5cdD4gc3VwIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVN1cGVyKCk7XG5cdH1cblxuXHQ+IHN1YiB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTdWIoKTtcblx0fVxuXG5cdD4gZmlnY2FwdGlvbiB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlDYXB0aW9uKCk7XG5cdH1cbn1cbiIsIkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby10eXBvZ3JhcGh5L21haW4nO1xuQGltcG9ydCAnQGZpbmFuY2lhbC10aW1lcy9vLXNwYWNpbmcvbWFpbic7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28tZm9udHMvbWFpbic7XG5cbkBpbXBvcnQgJ3NyYy9zY3NzL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdzcmMvc2Nzcy9mdW5jdGlvbnMnO1xuQGltcG9ydCAnc3JjL3Njc3MvbWl4aW5zJztcblxuLy8vIE91dHB1dCBvRWRpdG9yaWFsVHlwb2dyYXBoeSBmZWF0dXJlcy5cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhbGwgby1lZGl0b3JpYWwtdHlwb2dyYXBoeSBjc3MgY2xhc3Nlcy5cbi8vLyBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5KCk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBncmFudWxhciBzZWxlY3Rpb24gb2Ygby1lZGl0b3JpYWwtdHlwb2dyYXBoeSBjc3MgY2xhc3Nlcy4gU2VlIHRoZSBbUkVBRE1FXShodHRwczovL3JlZ2lzdHJ5Lm9yaWdhbWkuZnQuY29tL2NvbXBvbmVudHMvby1lZGl0b3JpYWwtdHlwb2dyYXBoeS9yZWFkbWUpIGZvciBhIGZ1bGwgbGlzdCBvZiBvcHRpb25zLlxuLy8vICAgICBAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeSgoXG4vLy8gICAgIFx0J2JvZHknOiB0cnVlLFxuLy8vICAgICBcdCdoZWFkaW5ncyc6ICgxLCAyLCAzKSxcbi8vLyAgICAgXHQnbGlzdHMnOiAoJ3Vub3JkZXJlZCcpLFxuLy8vICAgICApKTtcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkb3B0cyBbKCdib2R5JzogdHJ1ZSwgJ2xpc3RzJzogKCdvcmRlcmVkJywgJ3Vub3JkZXJlZCcpLCAnY2FwdGlvbic6IHRydWUsICdoZWFkbGluZSc6IHRydWUsICdoZWFkaW5ncyc6ICgxLCAyLCAzLCA0LCA1KSwgJ2F1dGhvcic6IHRydWUsICdzdGFuZGZpcnN0JzogdHJ1ZSwgJ3RvcGljJzogdHJ1ZSwgJ2J5bGluZSc6IHRydWUsICd0aW1lc3RhbXAnOiB0cnVlLCAnZm9udHMnOiB0cnVlKV0gLSBUaGUgZmVhdHVyZXMgb2Ygby1lZGl0b3JpYWwtdHlwb2dyYXBoeSB0byBvdXRwdXQgY2xhc3NlcyBmb3IuIFNlZSB0aGUgW1JFQURNRV0oaHR0cHM6Ly9yZWdpc3RyeS5vcmlnYW1pLmZ0LmNvbS9jb21wb25lbnRzL28tZWRpdG9yaWFsLXR5cG9ncmFwaHkvcmVhZG1lKSBmb3IgbW9yZSBkZXRhaWxzLlxuQG1peGluIG9FZGl0b3JpYWxUeXBvZ3JhcGh5KCRvcHRzOiAoXG5cdCdib2R5JzogdHJ1ZSxcblx0J2xpc3RzJzogKCdvcmRlcmVkJywgJ3Vub3JkZXJlZCcpLFxuXHQnY2FwdGlvbic6IHRydWUsXG5cdCdoZWFkbGluZSc6IHRydWUsXG5cdCdoZWFkaW5ncyc6ICgxLCAyLCAzLCA0LCA1KSxcblx0J3N0YW5kZmlyc3QnOiB0cnVlLFxuXHQnYXV0aG9yJzogdHJ1ZSxcblx0J3RvcGljJzogdHJ1ZSxcblx0J2J5bGluZSc6IHRydWUsXG5cdCd0aW1lc3RhbXAnOiB0cnVlXG4pKSB7XG5cdCRib2R5OiBtYXAtZ2V0KCRvcHRzLCAnYm9keScpO1xuXHQkbGlzdHM6IG1hcC1nZXQoJG9wdHMsICdsaXN0cycpO1xuXHQkbGlzdHM6IGlmKCRsaXN0cywgJGxpc3RzLCAoKSk7XG5cdEBpZigkbGlzdHMgYW5kIHR5cGUtb2YoJGxpc3RzKSAhPSAnbGlzdCcpIHtcblx0XHRAZXJyb3IgKCdUaGUgXCJsaXN0c1wiIG9wdGlvbiBtdXN0IGJlIGEgbGlzdCBvZiBsaXN0IHR5cGVzIHRvIGluY2x1ZGUgZS5nLiBgKFxcJ29yZGVyZWRcXCcsIFxcJ3Vub3JkZXJlZFxcJylgLicpO1xuXHR9XG5cdCRjYXB0aW9uOiBtYXAtZ2V0KCRvcHRzLCAnY2FwdGlvbicpO1xuXHQkaGVhZGxpbmU6IG1hcC1nZXQoJG9wdHMsICdoZWFkbGluZScpO1xuXHQkaGVhZGluZ3M6IG1hcC1nZXQoJG9wdHMsICdoZWFkaW5ncycpO1xuXHQkaGVhZGluZ3M6IGlmKCRoZWFkaW5ncywgJGhlYWRpbmdzLCAoKSk7XG5cdEBpZigkaGVhZGluZ3MgYW5kIHR5cGUtb2YoJGhlYWRpbmdzKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YoJGhlYWRpbmdzKSAhPSAnbnVtYmVyJykge1xuXHRcdEBlcnJvciAoJ1RoZSBcImhlYWRpbmdzXCIgb3B0aW9uIG11c3QgYmUgYSBsaXN0IG9mIGhlYWRpbmcgbGV2ZWxzIHRvIGluY2x1ZGUgZS5nLiBgKDEsIDIsIDMsIDQsIDUpYC4nKTtcblx0fVxuXHQkc3RhbmRmaXJzdDogbWFwLWdldCgkb3B0cywgJ3N0YW5kZmlyc3QnKTtcblx0JGF1dGhvcjogbWFwLWdldCgkb3B0cywgJ2F1dGhvcicpO1xuXHQkdG9waWM6IG1hcC1nZXQoJG9wdHMsICd0b3BpYycpO1xuXHQkYnlsaW5lOiBtYXAtZ2V0KCRvcHRzLCAnYnlsaW5lJyk7XG5cdCR0aW1lc3RhbXA6IG1hcC1nZXQoJG9wdHMsICd0aW1lc3RhbXAnKTtcblxuXHQvLyBMb2FkIGZvbnRzIHdpdGhpbiB0aGUgcHJpbWFyeSBtaXhpbiBpbi1jYXNlIHNpbGVudCBtb2RlIGlzIG9uLlxuXHQvLyBEb24ndCBsb2FkIGZvbnRzIGlmIG8tdHlwb2dyYXBoeSBoYXMgb3V0cHV0IHRoZW0gYWxyZWFkeSBzaW5jZVxuXHQvLyBgJG8tZWRpdG9yaWFsLXR5cG9ncmFwaHktbG9hZC1mb250c2Agd2FzIHNldC5cblx0QGlmICRvLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWxvYWQtZm9udHMgPT0gdHJ1ZSBhbmQgJG8tdHlwb2dyYXBoeS1sb2FkLWZvbnRzID09IHRydWUge1xuXHRcdEBpbmNsdWRlIG9Gb250cygpO1xuXHRcdC8vIFNldCB0byBmYWxzZSBzbyBmb250cyBhcmUgbm90IG91dHB1dCB0d2ljZSBieSBvLWVkaXRvcmlhbC10eXBvZ3JhcGh5LlxuXHRcdCRvLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWxvYWQtZm9udHM6IGZhbHNlICFnbG9iYWw7XG5cdH1cblxuXHRAaWYgJGJvZHkge1xuXHRcdC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWJvZHkge1xuXHRcdFx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlCb2R5KCk7XG5cdFx0fVxuXHR9XG5cblx0QGlmIGxlbmd0aCgkbGlzdHMpID49IDEge1xuXHRcdC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWxpc3Qge1xuXHRcdFx0Ly8gT3V0cHV0IGJhc2Ugc3R5bGVzIHNoYXJlZCBieSBhbGwgbGlzdCB0eXBlcy5cblx0XHRcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5TGlzdCgpO1xuXHRcdH1cblx0fVxuXG5cdEBpZiBpbmRleCgkbGlzdHMsICdvcmRlcmVkJykge1xuXHRcdC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWxpc3QtLW9yZGVyZWQge1xuXHRcdFx0Ly8gT3V0cHV0IGxpc3Qgc3R5bGVzIHVuaXF1ZSB0byBhbiBvcmRlcmVkIGxpc3QuXG5cdFx0XHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeUxpc3QoJHR5cGU6ICdvcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgaW5kZXgoJGxpc3RzLCAndW5vcmRlcmVkJykge1xuXHRcdC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWxpc3QtLXVub3JkZXJlZCB7XG5cdFx0XHQvLyBPdXRwdXQgbGlzdCBzdHlsZXMgdW5pcXVlIHRvIGFuIHVub3JkZXJlZCBsaXN0LlxuXHRcdFx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlMaXN0KCR0eXBlOiAndW5vcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgJGNhcHRpb24ge1xuXHRcdC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWNhcHRpb24ge1xuXHRcdFx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlDYXB0aW9uKCk7XG5cdFx0fVxuXHR9XG5cblx0QGlmICRoZWFkbGluZSB7XG5cdFx0Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktaGVhZGxpbmUge1xuXHRcdFx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlIZWFkbGluZSgpO1xuXHRcdH1cblx0fVxuXG5cdEBlYWNoICRsZXZlbCBpbiAkaGVhZGluZ3Mge1xuXHRcdC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWhlYWRpbmctbGV2ZWwtI3skbGV2ZWx9IHtcblx0XHRcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5SGVhZGluZygkbGV2ZWwpO1xuXHRcdH1cblx0fVxuXG5cdEBpZiAkc3RhbmRmaXJzdCB7XG5cdFx0Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktc3RhbmRmaXJzdCB7XG5cdFx0XHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeVN0YW5kZmlyc3QoKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgJGF1dGhvciB7XG5cdFx0Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktYXV0aG9yIHtcblx0XHRcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5VGFnKCdhdXRob3InKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgJHRvcGljIHtcblx0XHQuby1lZGl0b3JpYWwtdHlwb2dyYXBoeS10b3BpYyB7XG5cdFx0XHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeVRhZygndG9waWMnKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgJGJ5bGluZSB7XG5cdFx0Lm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktYnlsaW5lIHtcblx0XHRcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5QnlsaW5lKCk7XG5cdFx0fVxuXHR9XG5cblx0QGlmICR0aW1lc3RhbXAge1xuXHRcdC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LXRpbWVzdGFtcCB7XG5cdFx0XHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeVRpbWVzdGFtcCgpO1xuXHRcdH1cblx0fVxufVxuXG5AaWYgKCRvLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWlzLXNpbGVudCA9PSBmYWxzZSkge1xuXHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeSgpO1xuXG5cdC8vIFNldCB0byBzaWxlbnQgYWdhaW4gdG8gYXZvaWQgYmVpbmcgb3V0cHV0IHR3aWNlXG5cdCRvLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWlzLXNpbGVudDogdHJ1ZSAhZ2xvYmFsO1xufVxuIiwiLy8vIE91dHB1dCBlZGl0b3JpYWwgc3R5bGVzIGZvciBib2R5IHRleHQuXG4vLy8gQGV4YW1wbGVcbi8vLyAgICAgcCB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlCb2R5KCk7XG4vLy8gICAgIH1cbi8vLyBAcGFyYW0ge21hcH0gJG9wdHMgWygnbWFyZ2luLXJlc2V0JzogdHJ1ZSldIC0gT3B0aW9ucy4gU2V0IGBtYXJnaW4tcmVzZXRgIHRvIGZhbHNlIHRvIGF2b2lkIG91dHB1dHRpbmcgYSBtYXJnaW4uXG5AbWl4aW4gb0VkaXRvcmlhbFR5cG9ncmFwaHlCb2R5KCRvcHRzOiAoXG5cdCdtYXJnaW4tcmVzZXQnOiB0cnVlXG4pKSB7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAoZGVmYXVsdDogMSwgWEw6IDIpLCAkbGluZS1oZWlnaHQ6IDEuNik7XG5cdGNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKCdib2R5JywgJ3RleHQnKTtcblx0Ly8gdW5kbyBicm93c2VyIGRlZmF1bHRzXG5cdEBpZihtYXAtZ2V0KCRvcHRzLCdtYXJnaW4tcmVzZXQnKSkge1xuXHRcdG1hcmdpbjogMDtcblx0fVxufVxuXG4vLy8gT3V0cHV0IGVkaXRvcmlhbCBzdHlsZXMgZm9yIGxpc3RzLlxuLy8vIFN0eWxlcyBjaGlsZCBgbGlgIGVsZW1lbnRzLiBBcHBseSB0byBhXG4vLy8gY29udGFpbmluZyBsaXN0IGVsZW1lbnQgc3VjaCBhcyBgdWxgIG9yIGBvbGAuXG4vLy8gRG9lcyBub3Qgb3V0cHV0IGZvbnQgc3R5bGVzLCB0aGVzZSBhcmVcbi8vLyBpbmhlcml0ZWQgKEBzZWUgb0VkaXRvcmlhbFR5cG9ncmFwaHlCb2R5KS5cbi8vL1xuLy8vIFdyYXBzIGFuIG8tdHlwb2dyYXBoeSBtaXhpbiBzbyB0aGUgdHdvIG1heSBkaXZlcmdlXG4vLy8gKEBzZWUgb1R5cG9ncmFwaHlMaXN0KVxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHRoZSBzdHlsZXMgZm9yIGFuIHVub3JkZXJlZCBsaXN0LlxuLy8vICAgICAubXktdW5vcmRlcmVkLWxpc3Qge1xuLy8vICAgICBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5TGlzdCgndW5vcmRlcmVkJyk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCB0aGUgc3R5bGVzIGZvciBhbiBvcmRlcmVkIGFuZCB1bm9yZGVyZWQgbGlzdCwgc2hhcmluZyBiYXNlIGxpc3Qgc3R5bGVzLlxuLy8vICAgICAubXktbGlzdCB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlMaXN0KCk7XG4vLy8gICAgIH1cbi8vL1xuLy8vICAgICAubXktbGlzdC0tb3JkZXJlZCB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlMaXN0KCdvcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcbi8vLyAgICAgfVxuLy8vXG4vLy8gICAgIC5teS1saXN0LS11bm9yZGVyZWQge1xuLy8vICAgICBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5TGlzdCgndW5vcmRlcmVkJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcbi8vLyAgICAgfVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd8TnVsbH0gJHR5cGUgW251bGxdIC0gXCJvcmRlcmVkXCIsIFwidW5vcmRlcmVkXCIsIG9yIG51bGwgZm9yIGp1c3QgdGhlIGJhc2Ugc3R5bGVzIHNoYXJlZCBieSBhbGwgbGlzdHNcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWJhc2Utc3R5bGVzIFt0cnVlXSAtIHNldCB0byBmYWxzZSB0byBleGNsdWRlIGJhc2Ugc3R5bGVzIHdoaWNoIGFyZSBzaGFyZWQgYnkgYWxsIGxpc3QgdHlwZXNcbkBtaXhpbiBvRWRpdG9yaWFsVHlwb2dyYXBoeUxpc3QoJHR5cGU6IG51bGwsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiB0cnVlKSB7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGlzdCgkdHlwZSwgJGluY2x1ZGUtYmFzZS1zdHlsZXMpO1xuXHRAaWYgJGluY2x1ZGUtYmFzZS1zdHlsZXMge1xuXHRcdG1hcmdpbjogMDsgLy8gRG8gbm90IGFzc3VtZSB0aGUgY29udGV4dCB0aGUgbGlzdCBpcyB1c2VkLlxuXHR9XG59XG5cbi8vLyBPdXRwdXQgc3R5bGVzIGZvciBjYXB0aW9ucyxcbi8vLyBlLmcuIGZvciBwaG90byBvciB2aWRlbyBjcmVkaXQvY2FwdGlvbi5cbkBtaXhpbiBvRWRpdG9yaWFsVHlwb2dyYXBoeUNhcHRpb24oKSB7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IC0xKTtcblx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ2JvZHknLCAndGV4dCcpO1xufVxuXG4vLy8gT3V0cHV0IHN0eWxlcyBmb3IgbGFyZ2UgaGVhZGxpbmUgdGV4dC5cbi8vLyBUaGlzIHN0eWxlIGhhcyBoaWdoIHZpc3VhbCBwcm9taW5lbmNlLlxuLy8vXG4vLy8gQWx0ZXJuYXRpdmVseSwgeW91IG1heSBwcmVmZXIgdG8gdXNlXG4vLy8gdGhlIGxldmVsIG9uZSBoZWFkaW5nIHN0eWxlLlxuLy8vIEBzZWUgb0VkaXRvcmlhbFR5cG9ncmFwaHlIZWFkaW5nXG5AbWl4aW4gb0VkaXRvcmlhbFR5cG9ncmFwaHlIZWFkbGluZSgpIHtcblx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlEZWNvcmF0ZWQoKTtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KFxuXHRcdCRzY2FsZTogKGRlZmF1bHQ6IDUsIFM6IDYsIEw6IDcpLFxuXHRcdCR3ZWlnaHQ6ICdib2xkJ1xuXHQpO1xuXHRtYXJnaW46IDA7IC8vIHJlbW92ZSBicm93c2VyIGRlZmF1bHQgbWFyZ2luIGZyb20gaGVhZGluZ3Ncbn1cblxuLy8vIE91dHB1dCBzdHlsZXMgZm9yIGVkaXRvcmlhbCBwYWdlIGhlYWRpbmcgY29weS5cbi8vLyBAcGFyYW0ge251bWJlcn0gJGxldmVsIC0gVGhlIGhlYWRpbmcgbGV2ZWwgMS01LlxuLy8vIEBwYXJhbSB7bWFwfSAkb3B0cyBbKCdtYXJnaW4tcmVzZXQnOiB0cnVlKV0gLSBPcHRpb25zLiBTZXQgYG1hcmdpbi1yZXNldGAgdG8gZmFsc2UgdG8gYXZvaWQgb3V0cHV0dGluZyBhIG1hcmdpbi5cbkBtaXhpbiBvRWRpdG9yaWFsVHlwb2dyYXBoeUhlYWRpbmcoJGxldmVsLCAkb3B0czogKFxuXHQnbWFyZ2luLXJlc2V0JzogdHJ1ZVxuKSkge1xuXHRAaWYgdHlwZS1vZigkbGV2ZWwpICE9ICdudW1iZXInIG9yICRsZXZlbCA8IDEgb3IgJGxldmVsID4gNSB7XG5cdFx0QGVycm9yICdIZWFkaW5nIGxldmVscyBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgNS4nO1xuXHR9XG5cblx0Ly8gdW5kbyBicm93c2VyIGRlZmF1bHRzXG5cdEBpZihtYXAtZ2V0KCRvcHRzLCAnbWFyZ2luLXJlc2V0JykpIHtcblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQvLyBzZXQgY29sb3Jcblx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ2JvZHknLCAndGV4dCcpO1xuXG5cdEBpZigkbGV2ZWwgPT0gMSkge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IChkZWZhdWx0OiA0LCBTOiA1LCBMOiA2KSwgJHdlaWdodDogJ3JlZ3VsYXInKTtcblx0fVxuXG5cdEBpZigkbGV2ZWwgPT0gMikge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDQsICR3ZWlnaHQ6ICdzZW1pYm9sZCcpO1xuXHR9XG5cblx0QGlmKCRsZXZlbCA9PSAzKSB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogNCwgJHdlaWdodDogJ3JlZ3VsYXInKTtcblx0fVxuXG5cdEBpZigkbGV2ZWwgPT0gNCkge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDMsICR3ZWlnaHQ6ICdyZWd1bGFyJyk7XG5cdH1cblxuXHRAaWYoJGxldmVsID09IDUpIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAwLCAkd2VpZ2h0OiAncmVndWxhcicpO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuXHR9XG59XG5cbi8vLyBPdXRwdXQgc3R5bGVzIGZvciBlZGl0b3JpYWwgc3RhbmRmaXJzdC5cbkBtaXhpbiBvRWRpdG9yaWFsVHlwb2dyYXBoeVN0YW5kZmlyc3QoKSB7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDIpO1xuXHRjb2xvcjogb0NvbG9yc0J5TmFtZSgnYmxhY2stODAnKTtcbn1cblxuLy8vIE91dHB1dCBzdHlsZXMgZm9yIHRoZSBlZGl0b3JpYWwgYnlsaW5lLlxuQG1peGluIG9FZGl0b3JpYWxUeXBvZ3JhcGh5QnlsaW5lKCkge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAwKTtcbn1cblxuLy8vIE91dHB1dCBzdHlsZXMgZm9yIGEgdGltZXN0YW1wLlxuLy8vIEZvbnQgZmFtaWx5IGFuZCBzaXplIGFyZSBpbmhlcml0ZWQgZnJvbSB0aGVcbi8vLyBwYXJlbnQgZWxlbWVudCBzbyB0aGlzIG1peGluIG1heSBiZSB1c2VkIGluXG4vLy8gbXVsdGlwbGUgY29udGV4dHMuIEZvciBleGFtcGxlIHRpbWVzdGFtcHMgaW5cbi8vLyBhIGNvbW1lbnQgc2VjdGlvbiBvciBhIGJ5bGluZS5cbkBtaXhpbiBvRWRpdG9yaWFsVHlwb2dyYXBoeVRpbWVzdGFtcCgpIHtcblx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0Y29sb3I6IG9Db2xvcnNCeU5hbWUoJ2JsYWNrLTYwJyk7XG59XG5cbi8vLyBPdXRwdXQgc3BlY2lmaWMgdGFnIHN0eWxlcywgc3VjaCBhcyBhdXRob3IgYW5kXG4vLy8gdG9waWMgdGFncywgb3Igc3R5bGVzIGZvciBvdGhlciB0YWdzIG9mIHNpbWlsYXJcbi8vLyBhcHBlYXJhbmNlLiBGb250IHNpemUgaXMgaW5oZXJpdGVkIGZyb20gdGhlXG4vLy8gcGFyZW50IGVsZW1lbnQsIGZvciBleGFtcGxlIGlmIGEgdGFnIGlzIHVzZWRcbi8vLyB3aXRoaW4gYSBieWxpbmUgaXQgd2lsbCBiZSB0aGUgc2FtZSBzaXplIGFzXG4vLy8gdGhlIGJ5bGluZSB0ZXh0LlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGEgdG9waWMgYW5kIGF1dGhvciB0YWcuXG4vLy8gICAgIC5teS10b3BpYy10YWcge1xuLy8vICAgICBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5VGFnKCd0b3BpYycpO1xuLy8vICAgICB9XG4vLy9cbi8vLyAgICAgLm15LWF1dGhvci10YWcge1xuLy8vICAgICBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5VGFnKCdhdXRob3InKTtcbi8vLyAgICAgfVxuLy8vXG4vLy8gQHBhcmFtIHtOdWxsfFN0cmluZ30gJHR5cGUgLSB0aGUgdHlwZSBvZiB0YWcgKCd0b3BpYycsICdhdXRob3InLCBvciBgbnVsbGAgZm9yIGFuIHVuc3BlY2lmaWMga2luZCBvZiB0YWcpLlxuQG1peGluIG9FZGl0b3JpYWxUeXBvZ3JhcGh5VGFnKCR0eXBlKSB7XG5cdC8vIE5vbi1saW5rZWQgdGFncyBhbmQgYXV0aG9yIHRhZ3MgYXJlIHRoZSBzYW1lIGNvbG91ciBhcyB0aGUgYm9keSBjb3B5LlxuXHRAaWYgbm90IGlzLXN1cGVyc2VsZWN0b3IoJ2EnLCAnI3smfScpIHtcblx0XHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnYm9keScsICd0ZXh0Jyk7XG5cdH1cblxuXHQvLyBBdXRob3IgYW5kIHRvcGljIHRhZ3MgYXJlIGJvbGQuXG5cdC8vIFRoZXkgaW5oZXJpdCB0aGVpciBmb250IHNpemUgYnV0IGJlY2F1c2Ugd2Ugd2FudFxuXHQvLyB0aGUgdGFncyB0byBiZSBib2xkIHdlIG11c3Qgc2V0IHRoZSBmb250IGZhbWlseVxuXHQvLyByYXRoZXIgdGhhbiBhc3N1bWUgaXQsIGFzIG91ciBzYW5zIGFuZCBzZXJpZiBmb250c1xuXHQvLyB1c2UgZGlmZmVyZW50IGZvbnQgd2VpZ2h0cy5cblx0QGlmKCR0eXBlID09ICdhdXRob3InIG9yICR0eXBlID09ICd0b3BpYycpIHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHdlaWdodDogJ3NlbWlib2xkJyk7XG5cdH1cblxuXHQvLyBBcHBseSB0YWcgbGluayBzdHlsZXMgb25seSB0byBhbmNob3IgZWxlbWVudHMuXG5cdC8vIGUuZy4gYGEubXktYXV0aG9yLXRhZzpob3ZlcmBcblx0Ly8gVGFncyB3aGljaCBhcmUgbGlua3MgYXJlIGhpZ2hsaWdodGVkIHdpdGggY29sb3VyIGJ5IGRlZmF1bHQuXG5cdC8vIEJ1dCBhdXRob3IgdGFncyBhcmUgdGhlIHNhbWUgY29sb3VyIGFzIGJvZHkgY29weSB1bnRpbCBob3Zlci5cblx0JHRhZy1saW5rLXNlbGVjdG9yOiBzZWxlY3Rvci11bmlmeSgnYScsICcjeyZ9Jyk7XG5cdEBhdC1yb290ICN7JHRhZy1saW5rLXNlbGVjdG9yfSB7XG5cdFx0QGlmKCR0eXBlICE9ICdhdXRob3InKSB7XG5cdFx0XHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgndGFnLWxpbmsnLCB0ZXh0KTtcblx0XHR9XG5cblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMDtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0JGhvdmVyLWNvbG9yOiBpZigkdHlwZSAhPSAnYXV0aG9yJywgJ3RhZy1saW5rLWhvdmVyJywgJ3RhZy1saW5rJyk7XG5cdFx0XHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgkaG92ZXItY29sb3IsIHRleHQpO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gT3V0cHV0IHN0eWxlcyB0byBkZWNvcmF0ZSB0eXBvZ3JhcGh5IHdpdGggYSBzaG9ydCxcbi8vLyB0aGljayB1bmRlcmxpbmUuIFN0eWxlcyBhZnRlciBwc2V1ZG8gZWxlbWVudC5cbi8vLyBAZXhhbXBsZSBEZWNvcmF0ZSBhIGhlYWRlci5cbi8vLyAgICAgLmRlY29yYXRlZC1oZWFkZXIge1xuLy8vICAgICBcdEBpbmNsdWRlIG9FZGl0b3JpYWxUeXBvZ3JhcGh5RGVjb3JhdGVkKCk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIERlY29yYXRlIGEgY2VudHJlZCBoZWFkZXIuXG4vLy8gICAgIC5jZW50ZXJlZC1kZWNvcmF0ZWQtaGVhZGVyIHtcbi8vLyAgICAgXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG4vLy8gICAgIFx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlEZWNvcmF0ZWQoJGFsaWduOiAnY2VudGVyJyk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIERlY29yYXRlIGEgY2VudHJlZCBhbmQgbm9uLWNlbnRyZWQgaGVhZGVyIHdpdGhvdXQgZHVwbGljYXRpbmcgY3NzLlxuLy8vICAgICAuZGVjb3JhdGVkLWhlYWRlciB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlEZWNvcmF0ZWQoKTtcbi8vLyAgICAgfVxuLy8vICAgICAuZGVjb3JhdGVkLWhlYWRlci0tY2VudGVyIHtcbi8vLyAgICAgXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG4vLy8gICAgIFx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlEZWNvcmF0ZWQoJGFsaWduOiAnY2VudGVyJywgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcbi8vLyAgICAgfVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYWxpZ24gWydsZWZ0J10gLSBlaXRoZXIgJ2xlZnQnIG9yICdjZW50ZXInXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1iYXNlLXN0eWxlcyBbdHJ1ZV0gLSBzZXQgdG8gZmFsc2UgdG8gb25seSBvdXRwdXQgc3R5bGVzIHRvIG1vZGlmeSBzdGFuZGFyZCBkZWNvcmF0b3IgYWxpZ25tZW50XG5AbWl4aW4gb0VkaXRvcmlhbFR5cG9ncmFwaHlEZWNvcmF0ZWQoJGFsaWduOiAnbGVmdCcsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiB0cnVlKSB7XG5cdEBpZigkYWxpZ24gIT0gJ2xlZnQnIGFuZCAkYWxpZ24gIT0gJ2NlbnRlcicpIHtcblx0XHRAZXJyb3IgJ0FsaWduIG11c3QgYmUgXCJsZWZ0XCIgb3IgXCJjZW50ZXJcIiwgZm91bmQgXCIje2luc3BlY3QoJGFsaWduKX1cIi4nO1xuXHR9XG5cblx0QGlmKCRpbmNsdWRlLWJhc2Utc3R5bGVzKSB7XG5cdFx0JjphZnRlciB7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Ly8gMThweCBNZXRyaWMgPSA0cHhcblx0XHRcdC8vIDQ4cHggRmluYW5jaWVyRGlzcGxheVdlYiA9IDhweFxuXHRcdFx0Ym9yZGVyLWJvdHRvbTogY2FsYygwLjM0ZXggKyAxcHgpIHNvbGlkO1xuXHRcdFx0Ly8gMThweCBNZXRyaWMgPSB+NjBweFxuXHRcdFx0Ly8gNDhweCBGaW5hbmNpZXJEaXNwbGF5V2ViID0gfjE4MHB4XG5cdFx0XHR3aWR0aDogY2FsYyg3Y2ggLSAxMHB4KTtcblx0XHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRcdC8vIDIwcHggYXNzdW1pbmcgYSA0OHB4IGZvbnQgc2l6ZVxuXHRcdFx0cGFkZGluZy10b3A6IDAuNDE2ZW07XG5cdFx0XHRAaWYoJGFsaWduID09ICdjZW50ZXInKSB7XG5cdFx0XHRcdG1hcmdpbjogYXV0bztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRAaWYoJGFsaWduID09ICdjZW50ZXInKSB7XG5cdFx0JjphZnRlciB7XG5cdFx0XHRtYXJnaW46IGF1dG87XG5cdFx0fVxuXHR9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7IC8vIEZpeGVzIGFuIGlzc3VlIHdoZXJlIFJ1YnkgbG9jYWxlIGlzIG5vdCBzZXQgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL3B1bGwvMTBcblxuQGltcG9ydCBcIkBmaW5hbmNpYWwtdGltZXMvbWF0aFwiO1xuXG4vLy8gQmFzZSBmb250IHNpemUgb24gdGhlIGA8Ym9keT5gIGVsZW1lbnRcbi8vL1xuLy8vIERvIG5vdCBvdmVycmlkZSB0aGlzIHZhbHVlLCBvciB0aGluZ3Mgd2lsbCBicmVha1xuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyXG4vLy8gQGRlcHJlY2F0ZWQgVGhpcyBzZXR0aW5nIHdpbGwgYmUgcmVtb3ZlZCBpbiBzYXNzLW1xIHY2LjAuMFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE51bWJlciAodW5pdClcbiRtcS1iYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8vIFJlc3BvbnNpdmUgbW9kZVxuLy8vXG4vLy8gU2V0IHRvIGBmYWxzZWAgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgQG1lZGlhIHF1ZXJpZXMsXG4vLy8gKElFIDw9IDgsIEZpcmVmb3ggPD0gMywgT3BlcmEgPD0gOSlcbi8vL1xuLy8vIFlvdSBjb3VsZCBjcmVhdGUgYSBzdHlsZXNoZWV0IHNlcnZlZCBleGNsdXNpdmVseSB0byBvbGRlciBicm93c2Vycyxcbi8vLyB3aGVyZSBAbWVkaWEgcXVlcmllcyBhcmUgcmFzdGVyaXplZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBvbGQtaWUuc2Nzc1xuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vZmYgRGlzYWJsZWQgcmVzcG9uc2l2ZSBtb2RlIGRvY3VtZW50YXRpb25cbiRtcS1yZXNwb25zaXZlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBsaXN0XG4vLy9cbi8vLyBOYW1lIHlvdXIgYnJlYWtwb2ludHMgaW4gYSB3YXkgdGhhdCBjcmVhdGVzIGEgdWJpcXVpdG91cyBsYW5ndWFnZVxuLy8vIGFjcm9zcyB0ZWFtIG1lbWJlcnMuIEl0IHdpbGwgaW1wcm92ZSBjb21tdW5pY2F0aW9uIGJldHdlZW5cbi8vLyBzdGFrZWhvbGRlcnMsIGRlc2lnbmVycywgZGV2ZWxvcGVycywgYW5kIHRlc3RlcnMuXG4vLy9cbi8vLyBAdHlwZSBNYXBcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1icmVha3BvaW50czogKFxuICAgIG1vYmlsZTogIDMyMHB4LFxuICAgIHRhYmxldDogIDc0MHB4LFxuICAgIGRlc2t0b3A6IDk4MHB4LFxuICAgIHdpZGU6ICAgIDEzMDBweFxuKSAhZGVmYXVsdDtcblxuLy8vIFN0YXRpYyBicmVha3BvaW50IChmb3IgZml4ZWQtd2lkdGggbGF5b3V0cylcbi8vL1xuLy8vIERlZmluZSB0aGUgYnJlYWtwb2ludCBmcm9tICRtcS1icmVha3BvaW50cyB0aGF0IHNob3VsZFxuLy8vIGJlIHVzZWQgYXMgdGhlIHRhcmdldCB3aWR0aCBmb3IgdGhlIGZpeGVkLXdpZHRoIGxheW91dFxuLy8vIChpLmUuIHdoZW4gJG1xLXJlc3BvbnNpdmUgaXMgc2V0IHRvICdmYWxzZScpIGluIGEgb2xkLWllLnNjc3Ncbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gdGFibGV0LW9ubHkuc2Nzc1xuLy8vICAvL1xuLy8vICAvLyBJZ25vcmUgYWxsIHN0eWxlcyBhYm92ZSB0YWJsZXQgYnJlYWtwb2ludCxcbi8vLyAgLy8gYW5kIGZpeCB0aGUgc3R5bGVzIChzdWNoIGFzIHRoZSBsYXlvdXQpIGF0IHRhYmxldCB3aWR0aFxuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gICRtcS1zdGF0aWMtYnJlYWtwb2ludDogdGFibGV0O1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byB0YWJsZXRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2FkZGluZy1jdXN0b20tYnJlYWtwb2ludHMgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLXN0YXRpYy1icmVha3BvaW50OiBkZXNrdG9wICFkZWZhdWx0O1xuXG4vLy8gU2hvdyBicmVha3BvaW50cyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vXG4vLy8gSWYgeW91IHdhbnQgdG8gZGlzcGxheSB0aGUgY3VycmVudGx5IGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3Bcbi8vLyByaWdodCBjb3JuZXIgb2YgeW91ciBzaXRlIGR1cmluZyBkZXZlbG9wbWVudCwgYWRkIHRoZSBicmVha3BvaW50c1xuLy8vIHRvIHRoaXMgbGlzdCwgb3JkZXJlZCBieSB3aWR0aC4gRm9yIGV4YW1wbGU6IChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAkbXEtc2hvdy1icmVha3BvaW50czogKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKTtcbi8vLyAgIEBpbXBvcnQgJ3BhdGgvdG8vbXEnO1xuLy8vXG4vLy8gQHR5cGUgbWFwXG4kbXEtc2hvdy1icmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG5cbi8vLyBDdXN0b21pemUgdGhlIG1lZGlhIHR5cGUgKGZvciBleGFtcGxlOiBgQG1lZGlhIHNjcmVlbmAgb3IgYEBtZWRpYSBwcmludGApXG4vLy8gQnkgZGVmYXVsdCBzYXNzLW1xIHVzZXMgYW4gXCJhbGxcIiBtZWRpYSB0eXBlIChgQG1lZGlhIGFsbCBhbmQg4oCmYClcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjY2hhbmdpbmctbWVkaWEtdHlwZSBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtbWVkaWEtdHlwZTogYWxsICFkZWZhdWx0O1xuXG4vLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHB4IC0gdmFsdWUgdG8gY29udmVydFxuLy8vIEBpZ25vcmUgQHBhcmFtIHtOdW1iZXJ9ICRiYXNlLWZvbnQtc2l6ZSBbJG1xLWJhc2UtZm9udC1zaXplXSAtIGA8Ym9keT5gIGZvbnQgc2l6ZSAoZGVwcmVjYXRlZClcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJGZvbnQtc2l6ZS1pbi1lbXM6IG1xLXB4MmVtKDE2cHgpO1xuLy8vICBwIHsgZm9udC1zaXplOiBtcS1weDJlbSgxNnB4KTsgfVxuLy8vXG4vLy8gQHJlcXVpcmVzICRtcS1iYXNlLWZvbnQtc2l6ZVxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9XG5AZnVuY3Rpb24gbXEtcHgyZW0oJHB4LCAkYmFzZS1mb250LXNpemU6ICRtcS1iYXNlLWZvbnQtc2l6ZSkge1xuICAgIEBpZiAoJG1xLWJhc2UtZm9udC1zaXplICE9IDE2cHgpIHtcbiAgICAgICAgQHdhcm4gXCJPdmVycmlkaW5nICRtcS1iYXNlLWZvbnQtc2l6ZSB3aWxsIGJyZWFrIHRoaW5ncywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMi5cIjtcbiAgICB9XG4gICAgQGlmICgkYmFzZS1mb250LXNpemUgIT0gMTZweCkge1xuICAgICAgICBAd2FybiBcIlRoZSAkYmFzZS1mb250LXNpemUgYXJndW1lbnQgd2lsbCBiZSByZW1vdmVkIGluIHNhc3MtbXEgdjYuMC4wLCBhcyBvdmVycmlkaW5nIGl0IGJyZWFrcyB0aGluZ3MsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjIuXCI7XG4gICAgfVxuICAgIEBpZiB1bml0bGVzcygkcHgpIHtcbiAgICAgICAgQHdhcm4gXCJBc3N1bWluZyAjeyRweH0gdG8gYmUgaW4gcGl4ZWxzLCBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgaXQgaW50byBwaXhlbHMuXCI7XG4gICAgICAgIEByZXR1cm4gbXEtcHgyZW0oJHB4ICogMXB4LCAkYmFzZS1mb250LXNpemUpO1xuICAgIH0gQGVsc2UgaWYgdW5pdCgkcHgpID09IGVtIHtcbiAgICAgICAgQHJldHVybiAkcHg7XG4gICAgfVxuICAgIEByZXR1cm4gKGRpdigkcHgsICRiYXNlLWZvbnQtc2l6ZSkpICogMWVtO1xufVxuXG4vLy8gR2V0IGEgYnJlYWtwb2ludCdzIHdpZHRoXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50LiBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICR0YWJsZXQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKHRhYmxldCk7XG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aChkZXNrdG9wKSkge31cbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVmFsdWUgaW4gcGl4ZWxzXG5AZnVuY3Rpb24gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJG5hbWUsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIHtcbiAgICAgICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgICBAd2FybiBcIkJyZWFrcG9pbnQgI3skbmFtZX0gd2Fzbid0IGZvdW5kIGluICRicmVha3BvaW50cy5cIjtcbiAgICB9XG59XG5cbi8vLyBNZWRpYSBRdWVyeSBtaXhpblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkZnJvbSBbZmFsc2VdIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJHVudGlsIFtmYWxzZV0gLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkYW5kIFtmYWxzZV0gLSBBZGRpdGlvbmFsIG1lZGlhIHF1ZXJ5IHBhcmFtZXRlcnNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lZGlhLXR5cGUgWyRtcS1tZWRpYS10eXBlXSAtIE1lZGlhIHR5cGU6IHNjcmVlbiwgcHJpbnTigKZcbi8vL1xuLy8vIEBpZ25vcmUgVW5kb2N1bWVudGVkIEFQSSwgZm9yIGFkdmFuY2VkIHVzZSBvbmx5OlxuLy8vIEBpZ25vcmUgQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJG1xLWJyZWFrcG9pbnRzXVxuLy8vIEBpZ25vcmUgQHBhcmFtIHtTdHJpbmd9ICRzdGF0aWMtYnJlYWtwb2ludCBbJG1xLXN0YXRpYy1icmVha3BvaW50XVxuLy8vXG4vLy8gQGNvbnRlbnQgc3R5bGluZyBydWxlcywgd3JhcHBlZCBpbnRvIGEgQG1lZGlhIHF1ZXJ5IHdoZW4gJHJlc3BvbnNpdmUgaXMgdHJ1ZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLW1lZGlhLXR5cGVcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1weDJlbVxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLWdldC1icmVha3BvaW50LXdpZHRoXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vbi1kZWZhdWx0IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLmVsZW1lbnQge1xuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiBtb2JpbGUpIHtcbi8vLyAgICAgIGNvbG9yOiByZWQ7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCR1bnRpbDogdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogYmx1ZTtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEobW9iaWxlLCB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBncmVlbjtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IHRhYmxldCwgJGFuZDogJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScpIHtcbi8vLyAgICAgIGNvbG9yOiB0ZWFsO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSg5NTBweCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKHRhYmxldCwgJG1lZGlhLXR5cGU6IHNjcmVlbikge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIC8vIEFkdmFuY2VkIHVzZTpcbi8vLyAgICAkbXktYnJlYWtwb2ludHM6IChMOiA5MDBweCwgWEw6IDEyMDBweCk7XG4vLy8gICAgQGluY2x1ZGUgbXEoTCwgJGJyZWFrcG9pbnRzOiAkbXktYnJlYWtwb2ludHMsICRzdGF0aWMtYnJlYWtwb2ludDogTCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICB9XG5AbWl4aW4gbXEoXG4gICAgJGZyb206IGZhbHNlLFxuICAgICR1bnRpbDogZmFsc2UsXG4gICAgJGFuZDogZmFsc2UsXG4gICAgJG1lZGlhLXR5cGU6ICRtcS1tZWRpYS10eXBlLFxuICAgICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzLFxuICAgICRyZXNwb25zaXZlOiAkbXEtcmVzcG9uc2l2ZSxcbiAgICAkc3RhdGljLWJyZWFrcG9pbnQ6ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuKSB7XG4gICAgJG1pbi13aWR0aDogMDtcbiAgICAkbWF4LXdpZHRoOiAwO1xuICAgICRtZWRpYS1xdWVyeTogJyc7XG5cbiAgICAvLyBGcm9tOiB0aGlzIGJyZWFrcG9pbnQgKGluY2x1c2l2ZSlcbiAgICBAaWYgJGZyb20ge1xuICAgICAgICBAaWYgdHlwZS1vZigkZnJvbSkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKCRmcm9tKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkZnJvbSwgJGJyZWFrcG9pbnRzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbnRpbDogdGhhdCBicmVha3BvaW50IChleGNsdXNpdmUpXG4gICAgQGlmICR1bnRpbCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCR1bnRpbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKCR1bnRpbCk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHVudGlsLCAkYnJlYWtwb2ludHMpKSAtIC4wMWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGRpc2FibGVkLCByYXN0ZXJpemUgdGhlIG91dHB1dCBvdXRzaWRlIEBtZWRpYSBibG9ja3NcbiAgICAvLyBUaGUgYnJvd3NlciB3aWxsIHJlbHkgb24gdGhlIGNhc2NhZGUgaXRzZWxmLlxuICAgIEBpZiAkcmVzcG9uc2l2ZSA9PSBmYWxzZSB7XG4gICAgICAgICRzdGF0aWMtYnJlYWtwb2ludC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHN0YXRpYy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAkdGFyZ2V0LXdpZHRoOiBtcS1weDJlbSgkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGgpO1xuXG4gICAgICAgIC8vIE91dHB1dCBvbmx5IHJ1bGVzIHRoYXQgc3RhcnQgYXQgb3Igc3BhbiBvdXIgdGFyZ2V0IHdpZHRoXG4gICAgICAgIEBpZiAoXG4gICAgICAgICAgICAkYW5kID09IGZhbHNlXG4gICAgICAgICAgICBhbmQgJG1pbi13aWR0aCA8PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICBhbmQgKFxuICAgICAgICAgICAgICAgICR1bnRpbCA9PSBmYWxzZSBvciAkbWF4LXdpZHRoID49ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGFuZCAkbWVkaWEtdHlwZSAhPSAncHJpbnQnXG4gICAgICAgICkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZW5hYmxlZCwgb3V0cHV0IHJ1bGVzIGluc2lkZSBAbWVkaWEgcXVlcmllc1xuICAgIEBlbHNlIHtcbiAgICAgICAgQGlmICRtaW4td2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi13aWR0aDogI3skbWluLXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkbWF4LXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtYXgtd2lkdGg6ICN7JG1heC13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJGFuZCAgICAgICAgICAgIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAjeyRhbmR9JzsgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSBtZWRpYSBxdWVyeSBwcmVmaXggJ2FsbCBhbmQgJ1xuICAgICAgICBAaWYgKCRtZWRpYS10eXBlID09ICdhbGwnIGFuZCAkbWVkaWEtcXVlcnkgIT0gJycpIHtcbiAgICAgICAgICAgICRtZWRpYS10eXBlOiAnJztcbiAgICAgICAgICAgICRtZWRpYS1xdWVyeTogc3RyLXNsaWNlKHVucXVvdGUoJG1lZGlhLXF1ZXJ5KSwgNik7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgI3skbWVkaWEtdHlwZSArICRtZWRpYS1xdWVyeX0ge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vLyBRdWljayBzb3J0XG4vLy9cbi8vLyBAYXV0aG9yIFNhbSBSaWNoYXJkc1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBMaXN0IHRvIHNvcnRcbi8vLyBAcmV0dXJucyB7TGlzdH0gU29ydGVkIExpc3RcbkBmdW5jdGlvbiBfbXEtcXVpY2stc29ydCgkbGlzdCkge1xuICAgICRsZXNzOiAgKCk7XG4gICAgJGVxdWFsOiAoKTtcbiAgICAkbGFyZ2U6ICgpO1xuXG4gICAgQGlmIGxlbmd0aCgkbGlzdCkgPiAxIHtcbiAgICAgICAgJHNlZWQ6IG50aCgkbGlzdCwgY2VpbChkaXYobGVuZ3RoKCRsaXN0KSwgMikpKTtcblxuICAgICAgICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgICAgICAgICBAaWYgKCRpdGVtID09ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGVxdWFsOiBhcHBlbmQoJGVxdWFsLCAkaXRlbSk7XG4gICAgICAgICAgICB9IEBlbHNlIGlmICgkaXRlbSA8ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGxlc3M6IGFwcGVuZCgkbGVzcywgJGl0ZW0pO1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPiAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRsYXJnZTogYXBwZW5kKCRsYXJnZSwgJGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQHJldHVybiBqb2luKGpvaW4oX21xLXF1aWNrLXNvcnQoJGxlc3MpLCAkZXF1YWwpLCBfbXEtcXVpY2stc29ydCgkbGFyZ2UpKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRsaXN0O1xufVxuXG4vLy8gU29ydCBhIG1hcCBieSB2YWx1ZXMgKHdvcmtzIHdpdGggbnVtYmVycyBvbmx5KVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gc29ydFxuLy8vIEByZXR1cm5zIHtNYXB9IE1hcCBzb3J0ZWQgYnkgdmFsdWVcbkBmdW5jdGlvbiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1hcCkge1xuICAgICRtYXAtc29ydGVkOiAoKTtcbiAgICAkbWFwLWtleXM6IG1hcC1rZXlzKCRtYXApO1xuICAgICRtYXAtdmFsdWVzOiBtYXAtdmFsdWVzKCRtYXApO1xuICAgICRtYXAtdmFsdWVzLXNvcnRlZDogX21xLXF1aWNrLXNvcnQoJG1hcC12YWx1ZXMpO1xuXG4gICAgLy8gUmVvcmRlciBrZXkvdmFsdWUgcGFpcnMgYmFzZWQgb24ga2V5IHZhbHVlc1xuICAgIEBlYWNoICR2YWx1ZSBpbiAkbWFwLXZhbHVlcy1zb3J0ZWQge1xuICAgICAgICAkaW5kZXg6IGluZGV4KCRtYXAtdmFsdWVzLCAkdmFsdWUpO1xuICAgICAgICAka2V5OiBudGgoJG1hcC1rZXlzLCAkaW5kZXgpO1xuICAgICAgICAkbWFwLXNvcnRlZDogbWFwLW1lcmdlKCRtYXAtc29ydGVkLCAoJGtleTogJHZhbHVlKSk7XG5cbiAgICAgICAgLy8gVW5zZXQgdGhlIHZhbHVlIGluICRtYXAtdmFsdWVzIHRvIHByZXZlbnQgdGhlIGxvb3BcbiAgICAgICAgLy8gZnJvbSBmaW5kaW5nIHRoZSBzYW1lIGluZGV4IHR3aWNlXG4gICAgICAgICRtYXAtdmFsdWVzOiBzZXQtbnRoKCRtYXAtdmFsdWVzLCAkaW5kZXgsIDApO1xuICAgIH1cblxuICAgIEByZXR1cm4gJG1hcC1zb3J0ZWQ7XG59XG5cbi8vLyBBZGQgYSBicmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBicmVha3BvaW50XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgQGluY2x1ZGUgbXEtYWRkLWJyZWFrcG9pbnQodHZzY3JlZW4sIDE5MjBweCk7XG4vLy8gIEBpbmNsdWRlIG1xKHR2c2NyZWVuKSB7fVxuQG1peGluIG1xLWFkZC1icmVha3BvaW50KCRuYW1lLCAkd2lkdGgpIHtcbiAgICAkbmV3LWJyZWFrcG9pbnQ6ICgkbmFtZTogJHdpZHRoKTtcbiAgICAkbXEtYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkbXEtYnJlYWtwb2ludHMsICRuZXctYnJlYWtwb2ludCkgIWdsb2JhbDtcbiAgICAkbXEtYnJlYWtwb2ludHM6IF9tcS1tYXAtc29ydC1ieS12YWx1ZSgkbXEtYnJlYWtwb2ludHMpICFnbG9iYWw7XG59XG5cbi8vLyBTaG93IHRoZSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lciBvZiB0aGUgdmlld3BvcnRcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaG93LWJyZWFrcG9pbnRzIFskbXEtc2hvdy1icmVha3BvaW50c10gLSBMaXN0IG9mIGJyZWFrcG9pbnRzIHRvIHNob3cgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vLyBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzIFskbXEtYnJlYWtwb2ludHNdIC0gQnJlYWtwb2ludCBuYW1lcyBhbmQgc2l6ZXNcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zaG93LWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgZ2xvYmFsIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG4vLy9cbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBjdXN0b20gc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cygoTCwgWEwpLCAoUzogMzAwcHgsIEw6IDgwMHB4LCBYTDogMTIwMHB4KSk7XG5AbWl4aW4gbXEtc2hvdy1icmVha3BvaW50cygkc2hvdy1icmVha3BvaW50czogJG1xLXNob3ctYnJlYWtwb2ludHMsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgYm9keTpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGOEUzO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBjb2xvcjogI0MwOTg1MztcbiAgICAgICAgZm9udDogc21hbGwtY2FwdGlvbjtcbiAgICAgICAgcGFkZGluZzogM3B4IDZweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgei1pbmRleDogMTAwO1xuXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCB0aGUgYnJlYWtwb2ludHMgdGhhdCBzaG91bGQgYmUgc2hvd25cbiAgICAgICAgQGVhY2ggJHNob3ctYnJlYWtwb2ludCBpbiAkc2hvdy1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAkd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcSgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHM6ICRicmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiI3skc2hvdy1icmVha3BvaW50fSDiiaUgI3skd2lkdGh9ICgje21xLXB4MmVtKCR3aWR0aCl9KVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaWYgbGVuZ3RoKCRtcS1zaG93LWJyZWFrcG9pbnRzKSA+IDAge1xuICAgIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG59XG4iLCIvLyBNaW5pbWFsLCBiYXNlIHF1b3RlIHN0eWxlcy5cbkBpZiAkX28tcXVvdGUtZmlyc3QtaW1wb3J0ID09IHRydWUge1xuXHQlX28tcXVvdGUge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nLXRvcDogMHB4O1xuXHRcdHBhZGRpbmctYm90dG9tOiAwcHg7XG5cdFx0cGFkZGluZy1sZWZ0OiBvU3BhY2luZ0J5TmFtZSgnczQnKTtcblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IG9TcGFjaW5nQnlOYW1lKCdzNCcpO1xuXHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy8gU3R5bGVzIHNoYXJlZCBieSBib3RoIHN0YW5kYXJkIGFuZCBlZGl0b3JpYWwgYmxvY2sgcXVvdGVzLlxuQGlmICRfby1xdW90ZS1maXJzdC1pbXBvcnQgPT0gdHJ1ZSB7XG5cdCVfby1xdW90ZS1ibG9ja3F1b3RlIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0Ym9yZGVyLWxlZnQ6IDRweCBzb2xpZCBvQ29sb3JzQnlOYW1lKCdibGFjay05MCcpO1xuXHRcdGNvbG9yOiBvQ29sb3JzQnlOYW1lKCdibGFjaycpO1xuXG5cdFx0YSB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpbms7XG5cdFx0fVxuXHR9XG5cblx0JV9vLXF1b3RlLWJsb2NrcXVvdGUtY2l0ZSB7XG5cdFx0Ly8gT3V0cHV0IHdlaWdodCBhbmQgc3R5bGUgdG8gb3ZlcnJpZGUgYnJvd3NlciBkZWZhdWx0cy5cblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoXG5cdFx0XHQkc2NhbGU6IDEsXG5cdFx0XHQkd2VpZ2h0OiAncmVndWxhcicsXG5cdFx0XHQkc3R5bGU6ICdub3JtYWwnXG5cdFx0KTtcblx0XHRhIHtcblx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaztcblx0XHR9XG5cdH1cblxuXHQlX28tcXVvdGUtYmxvY2txdW90ZS1hdXRob3Ige1xuXHRcdC8vIE91dHB1dCB3ZWlnaHQgYW5kIHN0eWxlIHRvIG92ZXJyaWRlIGJyb3dzZXIgZGVmYXVsdHMuXG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKFxuXHRcdFx0JHNjYWxlOiAwLFxuXHRcdFx0JHdlaWdodDogJ3NlbWlib2xkJyxcblx0XHRcdCRzdHlsZTogJ25vcm1hbCdcblx0XHQpO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdH1cbn1cblxuLy8gU3RhbmRhcmQgYmxvY2sgcXVvdGUgc3R5bGVzLlxuQGlmICRfby1xdW90ZS1maXJzdC1pbXBvcnQgPT0gdHJ1ZSBhbmQgX29RdW90ZVN1cHBvcnRzKCdzdGFuZGFyZCcpIHtcblx0JV9vLXF1b3RlLWJsb2NrcXVvdGUtc3RhbmRhcmQge1xuXHRcdHBhZGRpbmctdG9wOiAwcHg7XG5cdFx0cGFkZGluZy1ib3R0b206IDBweDtcblx0XHRwYWRkaW5nLWxlZnQ6IG9TcGFjaW5nQnlOYW1lKCdzNCcpO1xuXG5cdFx0cCB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeUJvZHkoKTtcblx0XHRcdC8vIHJlcGVhdGVkIG1hcmdpbiBhcyBgb1R5cG9ncmFwaHlCb2R5YFxuXHRcdFx0Ly8gb3V0cHV0cyBhIG1hcmdpbiBwcm9wZXJ0eVxuXHRcdFx0bWFyZ2luLWJvdHRvbTogb1NwYWNpbmdCeU5hbWUoJ3M0Jyk7XG5cdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLyBFZGl0b3JpYWwgYmxvY2sgcXVvdGUgc3R5bGVzLlxuQGlmICRfby1xdW90ZS1maXJzdC1pbXBvcnQgPT0gdHJ1ZSBhbmQgX29RdW90ZVN1cHBvcnRzKCdlZGl0b3JpYWwnKSB7XG5cdCVfby1xdW90ZS1ibG9ja3F1b3RlLWVkaXRvcmlhbCB7XG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0JGljb24tc2l6ZTogMzZweDtcblx0XHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoXG5cdFx0XHRcdCRpY29uLW5hbWU6ICdzcGVlY2gtbGVmdCcsXG5cdFx0XHRcdCRjb2xvcjogb0NvbG9yc0J5TmFtZSgnYmxhY2stOTAnKSxcblx0XHRcdFx0JHNpemU6ICRpY29uLXNpemVcblx0XHRcdCk7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHRcdCRpY29uLXdoaXRlc3BhY2U6ICRpY29uLXNpemUgKiAwLjI7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRsZWZ0OiAtJGljb24td2hpdGVzcGFjZTtcblx0XHRcdG1hcmdpbi10b3A6IC0kaWNvbi13aGl0ZXNwYWNlO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogY2FsYygje29TcGFjaW5nQnlOYW1lKCdzNCcpfSAtICN7JGljb24td2hpdGVzcGFjZSAqIDJ9KTtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdC8vIE91dHB1dCBlZGl0b3JpYWwgZm9udCBmYW1pbHkuXG5cdFx0XHQvLyBEbyBub3Qgb3V0cHV0IG90aGVyIHR5cG9ncmFwaHkgcHJvcGVydGllcyBhcyB0aGVzZSBzaG91bGQgYmVcblx0XHRcdC8vIGluaGVyaXRlZCBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQgb2YgdGhlIGVkaXRvcmlhbCBibG9ja3F1b3RlLlxuXHRcdFx0Ly8gRS5nLiBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoZSBmb250IHNpemUgb2Ygc3RvcmllcyBkaWZmZXJlZFxuXHRcdFx0Ly8gb24gYXJ0aWNsZSBwYWdlcyBhbmQgbGl2ZSBibG9ncyBieSBkZXNpZ24uXG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCk7XG5cdFx0fVxuXHR9XG59XG4iLCIvLyBPbmx5IG91dHB1dCBwbGFjZWhvbGRlcnMgaWYgdGhlIGN1cnJlbnQgYnJhbmQgaXMgdGhlIGNvcmUgYnJhbmQuXG4vLyBUaGlzIGFsbG93cyBjb21wb25lbnRzIHdoaWNoIHN1cHBvcnQgbXVsdGlwbGUgYnJhbmRzIHRvIHVzZSBvLWVkaXRvcmlhbC1sYXlvdXQuXG5AaWYgJF9vLWVkaXRvcmlhbC1sYXlvdXQtcGxhY2Vob2xkZXJzLW91dHB1dCA9PSBmYWxzZSBhbmQgb0JyYW5kSXMoJ2NvcmUnKSB7XG5cdC8vIE9ubHkgb3V0cHV0IHBsYWNlaG9sZGVycyBvbmNlLlxuXHQkX28tZWRpdG9yaWFsLWxheW91dC1wbGFjZWhvbGRlcnMtb3V0cHV0OiB0cnVlICFnbG9iYWw7XG5cblx0Ly8gbGlzdHNcblx0Ly8gLSBtYXRjaCBib2R5XG5cdCVfby1lZGl0b3JpYWwtbGF5b3V0LWxpc3Qge1xuXHRcdEBleHRlbmQgJV9vLWVkaXRvcmlhbC1sYXlvdXQtYm9keTtcblx0XHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeUxpc3QoKTtcblx0fVxuXHQvLyBoMVxuXHQvLyAtIHNtYWxsIG1hcmdpbiBiZWxvdyBieSBkZWZhdWx0XG5cdCVfby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMSB7XG5cdFx0bWFyZ2luLWJvdHRvbTogb1NwYWNpbmdCeU5hbWUoJ3MxJyk7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxuXHQvLyBoMlxuXHQvLyAtIGxhcmdlIG1hcmdpbiBhYm92ZSBieSBkZWZhdWx0XG5cdC8vIC0gbWVkaXVtIG1hcmdpbiBiZWxvdyBieSBkZWZhdWx0XG5cdCVfby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMiB7XG5cdFx0Ly8gQnJlYWsgdHlwaWNhbCBzcGFjaW5nIHJ1bGVzIHdpdGggYSBib3R0b20gbWFyZ2luIG9mIDE0cHgsIHdoaWNoIGRvZXNcblx0XHQvLyBub3QgYWxpZ24gdG8gdGhlIDRweCBiYXNlbGluZSBncmlkLCBhcyByZXF1ZXN0ZWQgYnkgdGhlIGRlc2lnbiB0ZWFtLlxuXHRcdG1hcmdpbi1ib3R0b206IG9TcGFjaW5nR2V0QmFzZWxpbmVWYWx1ZSgpICogMy41O1xuXHRcdG1hcmdpbi10b3A6IG9TcGFjaW5nQnlOYW1lKCdzOCcpO1xuXHR9XG5cdC8vIGgzICYgaDRcblx0Ly8gLSBtZWRpdW0gbWFyZ2luIGJlbG93IGJ5IGRlZmF1bHRcblx0JV9vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0zLFxuXHQlX28tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTQge1xuXHRcdC8vIEJyZWFrIHR5cGljYWwgc3BhY2luZyBydWxlcyB3aXRoIGEgYm90dG9tIG1hcmdpbiBvZiAxNHB4LCB3aGljaCBkb2VzXG5cdFx0Ly8gbm90IGFsaWduIHRvIHRoZSA0cHggYmFzZWxpbmUgZ3JpZCwgYXMgcmVxdWVzdGVkIGJ5IHRoZSBkZXNpZ24gdGVhbS5cblx0XHRtYXJnaW4tYm90dG9tOiBvU3BhY2luZ0dldEJhc2VsaW5lVmFsdWUoKSAqIDMuNTtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHR9XG5cdC8vIGg1XG5cdC8vIC0gc21hbGwgbWFyZ2luIGJlbG93IGJ5IGRlZmF1bHRcblx0JV9vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy01IHtcblx0XHRtYXJnaW4tYm90dG9tOiBvU3BhY2luZ0J5TmFtZSgnczEnKTtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHR9XG5cdC8vIGJvZHlcblx0Ly8gLSBtZWRpdW0gbWFyZ2luIGJlbG93IGJ5IGRlZmF1bHRcblx0JV9vLWVkaXRvcmlhbC1sYXlvdXQtYm9keSB7XG5cdFx0bWFyZ2luLWJvdHRvbTogb1NwYWNpbmdCeU5hbWUoJ3M2Jyk7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxuXG5cdC8vIGFsbCBoZWFkaW5nc1xuXHQvLyAtIGluY3JlYXNlIG1hcmdpbiBiZXR3ZWVuIGNlcnRhaW4gZWxlbWVudHNcblx0Ly8gLSBpbmNyZWFzZSBtYXJnaW4gYnkgYSBzbWFsbGVyIGFtb3VudCBmb3IgYm9keSBjb3B5IGVsZW1lbnRzXG5cdCVfby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMSxcblx0JV9vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0yLFxuXHQlX28tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTMsXG5cdCVfby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctNCxcblx0JV9vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy01IHtcblx0XHQmICsgJV9vLWVkaXRvcmlhbC1sYXlvdXQtYm9keSB7XG5cdFx0XHRtYXJnaW4tdG9wOiBvU3BhY2luZ0J5TmFtZSgnczEnKTtcblx0XHR9XG5cblx0XHQmICsgZmlndXJlLFxuXHRcdCYgKyB1bCxcblx0XHQmICsgb2wsXG5cdFx0JiArIGFzaWRlLFxuXHRcdCYgKyBkaXYge1xuXHRcdFx0bWFyZ2luLXRvcDogb1NwYWNpbmdCeUluY3JlbWVudCg0KTtcblx0XHR9XG5cdH1cbn1cbiIsIkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1lZGl0b3JpYWwtdHlwb2dyYXBoeS9tYWluJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1zcGFjaW5nL21haW4nO1xuQGltcG9ydCAnQGZpbmFuY2lhbC10aW1lcy9vLXR5cG9ncmFwaHkvbWFpbic7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28tcXVvdGUvbWFpbic7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28tYnJhbmQvbWFpbic7XG5cbkBpbXBvcnQgJ3NyYy9zY3NzL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdzcmMvc2Nzcy9mdW5jdGlvbnMnO1xuQGltcG9ydCAnc3JjL3Njc3MvbWl4aW5zJztcbkBpbXBvcnQgJ3NyYy9zY3NzL3BsYWNlaG9sZGVycyc7XG5cbi8vLyBPdXRwdXQgQWxsIG9FZGl0b3JpYWxMYXlvdXQgRmVhdHVyZXNcbkBtaXhpbiBvRWRpdG9yaWFsTGF5b3V0KCRvcHRzOiAoXG5cdCdoZWFkaW5ncyc6ICgxLCAyLCAzLCA0LCA1KSxcblx0J2JvZHknOiB0cnVlLFxuXHQnd3JhcHBlcic6IHRydWUsXG4pKSB7XG5cdCRoZWFkaW5nczogbWFwLWdldCgkb3B0cywgJ2hlYWRpbmdzJyk7XG5cdCRoZWFkaW5nczogaWYoJGhlYWRpbmdzLCAkaGVhZGluZ3MsICgpKTtcblx0JGJvZHk6IG1hcC1nZXQoJG9wdHMsICdib2R5Jyk7XG5cdCR3cmFwcGVyOiBtYXAtZ2V0KCRvcHRzLCAnd3JhcHBlcicpO1xuXG5cdEBpZigkaGVhZGluZ3MgYW5kIHR5cGUtb2YoJGhlYWRpbmdzKSAhPSAnbGlzdCcpIHtcblx0XHRAZXJyb3IgKCdUaGUgXCJoZWFkaW5nc1wiIG9wdGlvbiBtdXN0IGJlIGEgbGlzdCBvZiBoZWFkaW5nIGxldmVscyB0byBpbmNsdWRlIGUuZy4gYCgxLCAyLCAzLCA0LCA1KWAuJyk7XG5cdH1cblxuXHQvLyBMb2FkIGZvbnRzIHdpdGhpbiB0aGUgcHJpbWFyeSBtaXhpbiBpbi1jYXNlIHNpbGVudCBtb2RlIGlzIG9uLlxuXHQvLyBEb24ndCBsb2FkIGZvbnRzIGlmIG8tdHlwb2dyYXBoeSBoYXMgb3V0cHV0IHRoZW0gYWxyZWFkeSBzaW5jZVxuXHQvLyBgJG8tZWRpdG9yaWFsLWxheW91dC1sb2FkLWZvbnRzYCB3YXMgc2V0LlxuXHRAaWYgJG8tZWRpdG9yaWFsLWxheW91dC1sb2FkLWZvbnRzID09IHRydWUgYW5kICRvLXR5cG9ncmFwaHktbG9hZC1mb250cyA9PSB0cnVlIHtcblx0XHRAaW5jbHVkZSBvRm9udHMoKTtcblx0XHQvLyBTZXQgdG8gZmFsc2Ugc28gZm9udHMgYXJlIG5vdCBvdXRwdXQgdHdpY2UgYnkgby1lZGl0b3JpYWwtdHlwb2dyYXBoeS5cblx0XHQkby1lZGl0b3JpYWwtbGF5b3V0LWxvYWQtZm9udHM6IGZhbHNlICFnbG9iYWw7XG5cdH1cblxuXHRAaWYgaW5kZXgoJGhlYWRpbmdzLCAxKSB7XG5cdFx0Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTEge1xuXHRcdFx0QGluY2x1ZGUgb0VkaXRvcmlhbExheW91dEhlYWRpbmcoMSk7XG5cdFx0fVxuXHR9XG5cblx0QGlmIGluZGV4KCRoZWFkaW5ncywgMikge1xuXHRcdC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy0yIHtcblx0XHRcdEBpbmNsdWRlIG9FZGl0b3JpYWxMYXlvdXRIZWFkaW5nKDIpO1xuXHRcdH1cblx0fVxuXG5cdEBpZiBpbmRleCgkaGVhZGluZ3MsIDMpIHtcblx0XHQuby1lZGl0b3JpYWwtbGF5b3V0LWhlYWRpbmctMyB7XG5cdFx0XHRAaW5jbHVkZSBvRWRpdG9yaWFsTGF5b3V0SGVhZGluZygzKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgaW5kZXgoJGhlYWRpbmdzLCA0KSB7XG5cdFx0Lm8tZWRpdG9yaWFsLWxheW91dC1oZWFkaW5nLTQge1xuXHRcdFx0QGluY2x1ZGUgb0VkaXRvcmlhbExheW91dEhlYWRpbmcoNCk7XG5cdFx0fVxuXHR9XG5cblx0QGlmIGluZGV4KCRoZWFkaW5ncywgNSkge1xuXHRcdC5vLWVkaXRvcmlhbC1sYXlvdXQtaGVhZGluZy01IHtcblx0XHRcdEBpbmNsdWRlIG9FZGl0b3JpYWxMYXlvdXRIZWFkaW5nKDUpO1xuXHRcdH1cblx0fVxuXG5cdEBpZiAkYm9keSB7XG5cdFx0Lm8tZWRpdG9yaWFsLWxheW91dC1ib2R5IHtcblx0XHRcdEBpbmNsdWRlIG9FZGl0b3JpYWxMYXlvdXRCb2R5KCk7XG5cdFx0fVxuXHR9XG5cblx0QGlmICR3cmFwcGVyIHtcblx0XHQuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXIge1xuXHRcdFx0PiBoMSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9FZGl0b3JpYWxMYXlvdXRIZWFkaW5nKDEpO1xuXHRcdFx0fVxuXG5cdFx0XHQ+IGgyIHtcblx0XHRcdFx0QGluY2x1ZGUgb0VkaXRvcmlhbExheW91dEhlYWRpbmcoMik7XG5cdFx0XHR9XG5cblx0XHRcdD4gaDMge1xuXHRcdFx0XHRAaW5jbHVkZSBvRWRpdG9yaWFsTGF5b3V0SGVhZGluZygzKTtcblx0XHRcdH1cblxuXHRcdFx0PiBoNCB7XG5cdFx0XHRcdEBpbmNsdWRlIG9FZGl0b3JpYWxMYXlvdXRIZWFkaW5nKDQpO1xuXHRcdFx0fVxuXG5cdFx0XHQ+IGg1IHtcblx0XHRcdFx0QGluY2x1ZGUgb0VkaXRvcmlhbExheW91dEhlYWRpbmcoNSk7XG5cdFx0XHR9XG5cblx0XHRcdD4gYmxvY2txdW90ZSxcblx0XHRcdD4gb2wsXG5cdFx0XHQ+IHVsLFxuXHRcdFx0PiBwIHtcblx0XHRcdFx0QGluY2x1ZGUgb0VkaXRvcmlhbExheW91dEJvZHkoKTtcblx0XHRcdH1cblxuXHRcdFx0PiBvbCxcblx0XHRcdD4gdWwge1xuXHRcdFx0XHRAZXh0ZW5kICVfby1lZGl0b3JpYWwtbGF5b3V0LWxpc3Q7XG5cdFx0XHR9XG5cblx0XHRcdD4gb2wge1xuXHRcdFx0XHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeUxpc3QoJ29yZGVyZWQnLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UpO1xuXHRcdFx0fVxuXG5cdFx0XHQ+IHVsIHtcblx0XHRcdFx0QGluY2x1ZGUgb0VkaXRvcmlhbFR5cG9ncmFwaHlMaXN0KCd1bm9yZGVyZWQnLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UpO1xuXHRcdFx0fVxuXG5cdFx0XHQ+IGZvb3RlciB7XG5cdFx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5Rm9vdGVyO1xuXHRcdFx0fVxuXG5cdFx0XHQ+IGZpZ3VyZSA+IGZpZ2NhcHRpb24sXG5cdFx0XHQ+IGZpZ2NhcHRpb24ge1xuXHRcdFx0XHRAaW5jbHVkZSBvRWRpdG9yaWFsVHlwb2dyYXBoeUNhcHRpb24oKTtcblx0XHRcdH1cblxuXHRcdFx0PiBibG9ja3F1b3RlIHtcblx0XHRcdFx0QGluY2x1ZGUgb1F1b3RlRWRpdG9yaWFsKCk7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IG9TcGFjaW5nQnlJbmNyZW1lbnQoNyk7XG5cdFx0XHRcdG1heC13aWR0aDogb1R5cG9ncmFwaHlNYXhMaW5lV2lkdGgoNzUpO1xuXG5cdFx0XHRcdGNpdGUsXG5cdFx0XHRcdGZvb3RlciB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgb1F1b3RlRWRpdG9yaWFsQ2l0ZSgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Zm9vdGVyID4gY2l0ZSB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgb1F1b3RlRWRpdG9yaWFsQ2l0ZUF1dGhvcigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyID4gcCBhLFxuXHRcdC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlciA+IGEge1xuXHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaW5rO1xuXHRcdH1cblxuXHRcdC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlciA+IHAgc3Ryb25nLFxuXHRcdC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlciA+IHN0cm9uZyB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKFxuXHRcdFx0XHQkd2VpZ2h0OiAnYm9sZCcsXG5cdFx0XHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXIgPiBwIGVtLFxuXHRcdC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlciA+IGVtLFxuXHRcdC5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlciA+IHAgaSxcblx0XHQuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXIgPiBpIHtcblx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHR9XG5cblx0XHQuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXIgPiBwIHN1cCB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVN1cGVyKCk7XG5cdFx0fVxuXG5cblx0XHQuby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXIgPiBwIHN1YiB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVN1YigpO1xuXHRcdH1cblx0fVxufVxuXG5AaWYgKCRvLWVkaXRvcmlhbC1sYXlvdXQtaXMtc2lsZW50ID09IGZhbHNlKSB7XG5cdEBpbmNsdWRlIG9FZGl0b3JpYWxMYXlvdXQoKTtcblxuXHQvLyBTZXQgdG8gc2lsZW50IGFnYWluIHRvIGF2b2lkIGJlaW5nIG91dHB1dCB0d2ljZVxuXHQkby1lZGl0b3JpYWwtbGF5b3V0LWlzLXNpbGVudDogdHJ1ZSAhZ2xvYmFsO1xufVxuIiwiLy8vIE91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IGxvYWRlZCBsYXlvdXRzLlxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRsYXlvdXRzIC0gTWFwIG9mIGxheW91dHNcbkBtaXhpbiBvR3JpZERlYnVnSW5mbygkbGF5b3V0czogJG8tZ3JpZC1sYXlvdXRzKSB7XG5cdC8qISBERUJVR1xuXHQgKiBMYXlvdXRzOlxuXHQgKiAje2luc3BlY3QoJGxheW91dHMpfVxuXHQgKi9cblx0QGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cygkX28tZ3JpZC1sYXlvdXQtbmFtZXMsICRvLWdyaWQtbGF5b3V0cyk7XG59XG5cbi8vLyBBZGQgYSBsYXlvdXQgKGJyZWFrcG9pbnQpLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGFkZCBhIG5ldyBicmVha3BvaW50IHRvIGFcbi8vLyBwcm9qZWN0LCBpbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBsYXlvdXRzIChTLCBNLCBMLCBYTCkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIEBpbmNsdWRlIG9HcmlkQWRkTGF5b3V0KCRsYXlvdXQtbmFtZTogUCwgJGxheW91dC13aWR0aDogNjAwcHgpO1xuLy8vICBAaW5jbHVkZSBvR3JpZEFkZExheW91dCgkbGF5b3V0LW5hbWU6IFhYTCwgJGxheW91dC13aWR0aDogMTYwMHB4LCAkZ3V0dGVyLXdpZHRoOiAzMHB4KTtcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGF5b3V0LW5hbWUgLSBOYW1lIG9mIHRoZSBsYXlvdXQgKGUuZy4gUylcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxheW91dC13aWR0aCAtIExheW91dCB3aWR0aCBpbiBweFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZ3V0dGVyLXdpZHRoIFtudWxsXSAtIEd1dHRlciB3aWR0aCBpbiBweFxuQG1peGluIG9HcmlkQWRkTGF5b3V0KCRsYXlvdXQtbmFtZSwgJGxheW91dC13aWR0aCwgJGd1dHRlci13aWR0aDogbnVsbCkge1xuXHQkdGVtcC1sYXlvdXRzOiAoKTtcblx0JHRlbXAtZ3V0dGVyczogKGRlZmF1bHQ6IG9HcmlkR3V0dGVyKCkpO1xuXG5cdC8vIEFkZCB0aGUgbmV3IGxheW91dCBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbjpcblx0Ly8gKHdlIHdhbnQgJG8tZ3JpZC1sYXlvdXRzIGFuZCAkby1ncmlkLWd1dHRlcnMgdG8gYmUgb3JkZXJlZCBmcm9tIHRoZSBzbWFsbGVzdCB0byB0aGUgbGFyZ2VzdCBsYXlvdXQpXG5cdEBmb3IgJGluZGV4IGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkby1ncmlkLWxheW91dHMpIHtcblx0XHQkcHJldmlvdXMtbGF5b3V0LXdpZHRoOiBpZigkaW5kZXggPT0gMSwgMCwgbWFwLWdldCgkby1ncmlkLWxheW91dHMsIG50aCgkX28tZ3JpZC1sYXlvdXQtbmFtZXMsICRpbmRleCAtIDEpKSk7XG5cdFx0JGN1cnJlbnQtbGF5b3V0LW5hbWU6IG50aCgkX28tZ3JpZC1sYXlvdXQtbmFtZXMsICRpbmRleCk7XG5cdFx0JGN1cnJlbnQtbGF5b3V0LXdpZHRoOiBtYXAtZ2V0KCRvLWdyaWQtbGF5b3V0cywgJGN1cnJlbnQtbGF5b3V0LW5hbWUpO1xuXG5cdFx0JGN1cnJlbnQtZ3V0dGVyLXdpZHRoOiBtYXAtZ2V0KCRvLWdyaWQtZ3V0dGVycywgJGN1cnJlbnQtbGF5b3V0LW5hbWUpO1xuXG5cdFx0Ly8gQXNzdW1lcyBhbGwgbGF5b3V0cyB1c2UgdGhlIHNhbWUgdW5pdCBlLmcuIHB4IG9yIHJlbSAoYXMgZG9lcyB0aGUgSmF2YVNjcmlwdClcblx0XHRAaWYgbm90ICgkcHJldmlvdXMtbGF5b3V0LXdpZHRoID4gJGxheW91dC13aWR0aCBvciAkY3VycmVudC1sYXlvdXQtd2lkdGggPCAkbGF5b3V0LXdpZHRoKSB7XG5cdFx0XHQkdGVtcC1sYXlvdXRzOiBtYXAtbWVyZ2UoJHRlbXAtbGF5b3V0cywgKCRsYXlvdXQtbmFtZTogJGxheW91dC13aWR0aCkpO1xuXHRcdFx0JHRlbXAtZ3V0dGVyczogbWFwLW1lcmdlKCR0ZW1wLWd1dHRlcnMsICgkbGF5b3V0LW5hbWU6ICRndXR0ZXItd2lkdGgpKTtcblx0XHR9XG5cblx0XHQkdGVtcC1sYXlvdXRzOiBtYXAtbWVyZ2UoJHRlbXAtbGF5b3V0cywgKCRjdXJyZW50LWxheW91dC1uYW1lOiAkY3VycmVudC1sYXlvdXQtd2lkdGgpKTtcblxuXHRcdEBpZiAkY3VycmVudC1ndXR0ZXItd2lkdGgge1xuXHRcdFx0JHRlbXAtZ3V0dGVyczogbWFwLW1lcmdlKCR0ZW1wLWd1dHRlcnMsICgkY3VycmVudC1sYXlvdXQtbmFtZTogJGN1cnJlbnQtZ3V0dGVyLXdpZHRoKSk7XG5cdFx0fVxuXHR9XG5cdCRvLWdyaWQtbGF5b3V0czogJHRlbXAtbGF5b3V0cyAhZ2xvYmFsO1xuXHQkX28tZ3JpZC1sYXlvdXQtbmFtZXM6IG1hcC1rZXlzKCRvLWdyaWQtbGF5b3V0cykgIWdsb2JhbDtcblxuXHRAaWYgJGd1dHRlci13aWR0aCB7XG5cdFx0JG8tZ3JpZC1ndXR0ZXJzOiAkdGVtcC1ndXR0ZXJzICFnbG9iYWw7XG5cdH1cblxuXHQkX28tZ3JpZC1tYXgtd2lkdGg6IG1hcC1nZXQoJG8tZ3JpZC1sYXlvdXRzLCBudGgoJF9vLWdyaWQtbGF5b3V0LW5hbWVzLCAtMSkpICFnbG9iYWw7XG59XG5cbi8vLyBBcHBseSBzdHlsZXMgYXQgYSBnaXZlbiBsYXlvdXQgc2l6ZSAoYnJlYWtwb2ludCkgYXMgdGhlIGdyaWQuIEl0IHNob3VsZCBiZVxuLy8gcGFzc2VkIG9uZSBvZiAkby1ncmlkLWxheW91dHMgZS5nLiBgU2AsIGBNYCwgZXRjLi4uIGRlcGVuZGluZyBvbiB3aGljaCBsYXlvdXRcbi8vIHNpemUgdGhlIHN0eWxlIHNob3VsZCBhcHBseSBhdC5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gIC8vIFR1cm4gdGhlIGNvbG9yIG9mIGFuIGVsZW1lbnQgcmVkIGF0IG1lZGl1bSBsYXlvdXQgc2l6ZSBhbmQgdXBcbi8vLyAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oTSkge1xuLy8vICBcdGVsZW1lbnQge1xuLy8vICBcdFx0Y29sb3I6IHJlZDtcbi8vLyAgXHR9XG4vLy8gIH1cbi8vLyAgLy8gVHVybiB0aGUgY29sb3Igb2YgYW4gZWxlbWVudCBibHVlIHVudGlsIG1lZGl1bSBsYXlvdXRcbi8vLyAgZWxlbWVudCB7XG4vLy8gIFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJHVudGlsOiBNKSB7XG4vLy8gIFx0XHRjb2xvcjogYmx1ZTtcbi8vLyAgXHR9XG4vLy8gIH1cbi8vLyAgLy8gVHVybiB0aGUgY29sb3Igb2YgYW4gZWxlbWVudCBncmVlbiBmcm9tIHNtYWxsIGxheW91dCB1bnRpbCBtZWRpdW0gbGF5b3V0XG4vLy8gIGVsZW1lbnQge1xuLy8vICBcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBTLCAkdW50aWw6IE0pIHtcbi8vLyAgXHRcdGNvbG9yOiBncmVlbjtcbi8vLyAgXHR9XG4vLy8gIH1cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSBmcm9tIC0gb25lIG9mICRvLWdyaWQtbGF5b3V0c1xuLy8vIEBwYXJhbSB7U3RyaW5nfSB1bnRpbCAtIG9uZSBvZiAkby1ncmlkLWxheW91dHNcbkBtaXhpbiBvR3JpZFJlc3BvbmRUbygkZnJvbTogZmFsc2UsICR1bnRpbDogZmFsc2UpIHtcblxuXHQkZ3JpZC1pcy1yZXNwb25zaXZlOiAkby1ncmlkLW1vZGUgIT0gJ2ZpeGVkJztcblx0QGluY2x1ZGUgbXEoXG5cdFx0JGZyb206ICRmcm9tLFxuXHRcdCR1bnRpbDogJHVudGlsLFxuXHRcdCRyZXNwb25zaXZlOiAkZ3JpZC1pcy1yZXNwb25zaXZlLFxuXHRcdCRicmVha3BvaW50czogJG8tZ3JpZC1sYXlvdXRzLFxuXHRcdCRzdGF0aWMtYnJlYWtwb2ludDogJG8tZ3JpZC1maXhlZC1sYXlvdXRcblx0KSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cbn1cblxuLy8vIEJhc2UgY29sdW1uIHN0eWxlcyBhbmQgcmVzcG9uc2l2ZSBsYXlvdXQgd2lkdGhcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgQmxvY2sgaGFzIGNvbHVtbiBzdHlsZXNcbi8vLyAgIGVsIHsgQGluY2x1ZGUgb0dyaWRDb2xzcGFuKCk7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgNC1jb2x1bW4gd2lkZSBibG9ja1xuLy8vICAgZWwgeyBAaW5jbHVkZSBvR3JpZENvbHNwYW4oNCk7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgSGFsZi13aWR0aCBibG9ja1xuLy8vICAgZWwgeyBAaW5jbHVkZSBvR3JpZENvbHNwYW4oMS8yKTsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyBCbG9jayBpcyBmdWxsLXdpZHRoIGJ5IGRlZmF1bHQsIDgtY29sdW1uIHdpZGUgb24gTWVkaXVtIGxheW91dHMgYW5kIGhpZGRlbiBvbiBMYXJnZSBsYXlvdXRzXG4vLy8gICBlbCB7IEBpbmNsdWRlIG9HcmlkQ29sc3BhbigoZGVmYXVsdDogMTIsIE06IDgsIEw6IGhpZGUpKTsgfVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgfCBNYXB9ICRzcGFuIFtudWxsXVxuQG1peGluIG9HcmlkQ29sc3Bhbigkc3BhbjogbnVsbCwgJHdpZHRoLW9ubHk6IGZhbHNlKSB7XG5cdEBpZiBub3QgJHdpZHRoLW9ubHkge1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0ZmxleDogMSAxIDAlO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTsgLy8gUmVxdWlyZWQgZm9yIHB1c2ggYW5kIHB1bGxcblxuXHRcdEBpZiAkby1ncmlkLW1vZGUgPT0gJ2ZpeGVkJyB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IG9HcmlkR3V0dGVyKCRvLWdyaWQtZml4ZWQtbGF5b3V0KTtcblx0XHR9IEBlbHNlIHtcblx0XHRcdEBlYWNoICRsYXlvdXQtbmFtZSBpbiBtYXAta2V5cygkby1ncmlkLWd1dHRlcnMpIHtcblx0XHRcdFx0QGlmICRsYXlvdXQtbmFtZSA9PSAnZGVmYXVsdCcge1xuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDogb0dyaWRHdXR0ZXIoKTtcblx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGxheW91dC1uYW1lKSB7XG5cdFx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IG9HcmlkR3V0dGVyKCRsYXlvdXQtbmFtZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdEBpZiAkc3BhbiB7XG5cdFx0QGluY2x1ZGUgX29HcmlkQ29sdW1uV2lkdGgoJHNwYW4pO1xuXHR9XG59XG5cbi8vLyBHcmlkIGNvbnRhaW5lclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRncmlkLW1vZGUgWyRvLWdyaWQtbW9kZV1cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRibGVlZCBbZmFsc2VdXG5AbWl4aW4gb0dyaWRDb250YWluZXIoJGdyaWQtbW9kZTogJG8tZ3JpZC1tb2RlLCAkYmxlZWQ6IGZhbHNlKSB7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdG1pbi13aWR0aDogJG8tZ3JpZC1taW4td2lkdGg7XG5cdC8vIE9sZGVyIGJyb3dzZXJzIGdldCBhIGZpeGVkLXdpZHRoIGxheW91dFxuXHRtYXgtd2lkdGg6IG9HcmlkR2V0TWF4V2lkdGhGb3JMYXlvdXQoJG8tZ3JpZC1maXhlZC1sYXlvdXQpO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0QGlmICRibGVlZCB7XG5cdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHRcdHBhZGRpbmctcmlnaHQ6IDA7XG5cdH1cblxuXHRAaWYgJGdyaWQtbW9kZSA9PSAnZml4ZWQnIHtcblx0XHQvLyBJZiB0aGUgZ3JpZCBpc24ndCBmbHVpZCwgd2Ugc2V0IGl0IHRvIGEgY2VydGFpbiB3aWR0aFxuXHRcdHdpZHRoOiBvR3JpZEdldE1heFdpZHRoRm9yTGF5b3V0KCRvLWdyaWQtZml4ZWQtbGF5b3V0LCAkZ3JpZC1tb2RlOiAnZml4ZWQnKTtcblx0XHRAaWYgbm90ICRibGVlZCB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IG9HcmlkR3V0dGVyKCRvLWdyaWQtZml4ZWQtbGF5b3V0KTtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IG9HcmlkR3V0dGVyKCRvLWdyaWQtZml4ZWQtbGF5b3V0KTtcblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdG1heC13aWR0aDogJF9vLWdyaWQtbWF4LXdpZHRoO1xuXG5cdFx0QGVhY2ggJGxheW91dC1uYW1lIGluIG1hcC1rZXlzKCRvLWdyaWQtZ3V0dGVycykge1xuXHRcdFx0QGlmICRsYXlvdXQtbmFtZSA9PSAnZGVmYXVsdCcge1xuXHRcdFx0XHRAaWYgbm90ICRibGVlZCB7XG5cdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiBvR3JpZEd1dHRlcigpO1xuXHRcdFx0XHRcdHBhZGRpbmctcmlnaHQ6IG9HcmlkR3V0dGVyKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkbGF5b3V0LW5hbWUpIHtcblx0XHRcdFx0XHRAaWYgbm90ICRibGVlZCB7XG5cdFx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IG9HcmlkR3V0dGVyKCRsYXlvdXQtbmFtZSk7XG5cdFx0XHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiBvR3JpZEd1dHRlcigkbGF5b3V0LW5hbWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdEBlYWNoICRsYXlvdXQtbmFtZSBpbiAkX28tZ3JpZC1sYXlvdXQtbmFtZXMge1xuXHRcdFx0QGlmIGluZGV4KCRfby1ncmlkLWxheW91dC1uYW1lcywgJGxheW91dC1uYW1lKSA+PSBpbmRleCgkX28tZ3JpZC1sYXlvdXQtbmFtZXMsICRvLWdyaWQtc3RhcnQtc25hcHB5LW1vZGUtYXQpIHtcblx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGxheW91dC1uYW1lKSB7XG5cdFx0XHRcdFx0QGlmICRncmlkLW1vZGUgPT0gJ3NuYXBweScge1xuXHRcdFx0XHRcdFx0bWF4LXdpZHRoOiBtYXAtZ2V0KCRvLWdyaWQtbGF5b3V0cywgJGxheW91dC1uYW1lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0QGlmICRncmlkLW1vZGUgPT0gJ2ZsdWlkJyB7XG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgZ3JpZCBtb2RlIGlzIGZsdWlkLCB0aGVuIHVzZSBhIGNsYXNzIHRvIG1ha2UgYSByb3cgb3IgYSBzZXQgb2Ygcm93cyBzbmFwcHlcblx0XHRcdFx0XHRcdC5vLWdyaWQtc25hcHB5ICYsXG5cdFx0XHRcdFx0XHQmLS1zbmFwcHkge1xuXHRcdFx0XHRcdFx0XHRtYXgtd2lkdGg6IG1hcC1nZXQoJG8tZ3JpZC1sYXlvdXRzLCAkbGF5b3V0LW5hbWUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQmFzZSByb3cgc3R5bGVzXG5AbWl4aW4gb0dyaWRSb3cge1xuXHRjbGVhcjogYm90aDtcblx0ZmxleC13cmFwOiB3cmFwOyAvLyBOb3RlIHRoYXQgdGhpcyBicmVha3MgaW4gb2xkIEZpcmVmb3hcblx0ZGlzcGxheTogZmxleDtcblxuXHRAbWVkaWEgcHJpbnQge1xuXHRcdGRpc3BsYXk6IGluaGVyaXQ7XG5cdH1cblxuXHRAaWYgJG8tZ3JpZC1tb2RlID09ICdmaXhlZCcge1xuXHRcdG1hcmdpbi1sZWZ0OiAtMSAqIG9HcmlkR3V0dGVyKCRvLWdyaWQtZml4ZWQtbGF5b3V0KTtcblx0fSBAZWxzZSB7XG5cdFx0QGVhY2ggJGxheW91dC1uYW1lIGluIG1hcC1rZXlzKCRvLWdyaWQtZ3V0dGVycykge1xuXHRcdFx0QGlmICRsYXlvdXQtbmFtZSA9PSAnZGVmYXVsdCcge1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogLTEgKiBvR3JpZEd1dHRlcigpO1xuXHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRsYXlvdXQtbmFtZSkge1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAtMSAqIG9HcmlkR3V0dGVyKCRsYXlvdXQtbmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDbGVhcmZpeCBmb3IgSUU5IGFuZCBiZWxvd1xuXHR6b29tOiAxO1xuXG5cdCY6YmVmb3JlLFxuXHQmOmFmdGVyIHtcblx0XHRjb250ZW50OiAnJztcblx0XHRkaXNwbGF5OiB0YWJsZTtcblx0XHRkaXNwbGF5OiBmbGV4OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLWJsb2NrLW5vLWR1cGxpY2F0ZS1wcm9wZXJ0aWVzXG5cdH1cblx0JjphZnRlciB7XG5cdFx0Y2xlYXI6IGJvdGg7XG5cdH1cbn1cblxuLy8vIFJlbW92ZSBndXR0ZXJzIGZyb20gY29sdW1ucyBpbiBhIHJvd1xuLy8vXG4vLy8gQHBhcmFtIHtzdHJpbmd9ICRjb2x1bW4tc2VsZWN0b3IgW1wiW28tZ3JpZC1jb2xzcGFuXVwiXSAtIENTUyBzZWxlY3RvciBmb3Igcm93IGVsZW1lbnRcbkBtaXhpbiBvR3JpZFJvd0NvbXBhY3QoJGNvbHVtbi1zZWxlY3RvcjogXCJbby1ncmlkLWNvbHNwYW5dXCIpIHtcblx0bWFyZ2luLWxlZnQ6IDA7XG5cblx0PiAje3VucXVvdGUoJGNvbHVtbi1zZWxlY3Rvcil9IHtcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdH1cbn1cblxuLy8vIFJlbW92ZSByb3cgc3R5bGVzXG5AbWl4aW4gb0dyaWRSZXNldFJvdyB7XG5cdGNsZWFyOiBub25lO1xuXHRkaXNwbGF5OiBibG9jaztcblx0ZmxleC13cmFwOiBub3dyYXA7XG5cdG1hcmdpbi1sZWZ0OiAwO1xuXG5cdCY6YmVmb3JlLFxuXHQmOmFmdGVyIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG59XG5cbi8vLyBDZW50ZXIgY29sdW1uXG5AbWl4aW4gb0dyaWRDZW50ZXIge1xuXHRtYXJnaW4tbGVmdDogYXV0bztcblx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRmbG9hdDogbm9uZTtcbn1cblxuLy8vIFVuY2VudGVyIGNvbHVtblxuQG1peGluIG9HcmlkVW5jZW50ZXIge1xuXHRtYXJnaW4tbGVmdDogMDtcblx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRmbG9hdDogbGVmdDtcbn1cblxuLy8vIFJlbW92ZSBjb2x1bW4gc3R5bGVzXG5AbWl4aW4gb0dyaWRSZXNldENvbHVtbiB7XG5cdHBhZGRpbmctbGVmdDogMDtcblx0cGFkZGluZy1yaWdodDogMDtcblx0ZmxvYXQ6IG5vbmU7XG5cdHdpZHRoOiBhdXRvO1xuXHRtaW4td2lkdGg6IDA7XG5cdG1heC13aWR0aDogbm9uZTtcblx0ZmxleDogbm9uZTtcbn1cblxuLy8vIFJlb3JkZXIgdmlzdWFsbHk6IHB1bGxcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1uc1xuQG1peGluIG9HcmlkUHVsbCgkY29sdW1ucykge1xuXHRyaWdodDogb0dyaWRDb2xzcGFuKCRjb2x1bW5zKTtcblx0bGVmdDogYXV0bztcbn1cblxuLy8vIFJlb3JkZXIgdmlzdWFsbHk6IHB1c2hcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1uc1xuQG1peGluIG9HcmlkUHVzaCgkY29sdW1ucykge1xuXHRsZWZ0OiBvR3JpZENvbHNwYW4oJGNvbHVtbnMpO1xuXHRyaWdodDogYXV0bztcbn1cblxuLy8vIE9mZnNldDogYWRkIHNwYWNlIGJlZm9yZSBhIGNvbHVtblxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zXG5AbWl4aW4gb0dyaWRPZmZzZXQoJGNvbHVtbnMpIHtcblx0bWFyZ2luLWxlZnQ6IG9HcmlkQ29sc3BhbigkY29sdW1ucyk7XG59XG5cbi8vLyBTdXJmYWNlIHRoZSBsYXlvdXQgY3VycmVudGx5IGRpc3BsYXllZCB0byBtYWtlIGl0IHJlYWRhYmxlIGluIEpTLlxuLy8vXG4vLy8gQGV4YW1wbGUganNcbi8vLyAgLy8geW91ci1hcHAvbWFpbi5qc1xuLy8vICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgbGF5b3V0IChlLmcuIGRlZmF1bHQsIFMsIE0sIEwsIFhMKVxuLy8vICBpbXBvcnQgb0dyaWQgZnJvbSAnby1ncmlkJztcbi8vLyAgbGV0IGN1cnJlbnRMYXlvdXQgPSBvR3JpZC5nZXRDdXJyZW50TGF5b3V0KCk7XG4vLy8gIGNvbnNvbGUubG9nKGN1cnJlbnRMYXlvdXQpO1xuLy8vXG4vLy8gIC8vIFJldHVybiB0aGUgY3VycmVudCBndXR0ZXIgKGUuZy4gMTBweCwgMjBweClcbi8vLyAgaW1wb3J0IG9HcmlkIGZyb20gJ28tZ3JpZCc7XG4vLy8gIGxldCBjdXJyZW50R3V0dGVyID0gb0dyaWQuZ2V0Q3VycmVudEd1dHRlcigpO1xuLy8vICBjb25zb2xlLmxvZyhjdXJyZW50R3V0dGVyKTtcbkBtaXhpbiBvR3JpZFN1cmZhY2VDdXJyZW50TGF5b3V0IHtcblx0aHRtbDphZnRlciB7XG5cdFx0Y29udGVudDogJ3sgXCJsYXlvdXRcIjogXCJkZWZhdWx0XCIsIFwiZ3V0dGVyXCI6IFwiJyArIG9HcmlkR3V0dGVyKCkgKyAnXCIgfSc7XG5cdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdEBlYWNoICRicmVha3BvaW50IGluICRfby1ncmlkLWxheW91dC1uYW1lcyB7XG5cdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkYnJlYWtwb2ludCkge1xuXHRcdFx0XHRjb250ZW50OiAneyBcImxheW91dFwiOiBcIicgKyAkYnJlYWtwb2ludCArICdcIiwgXCJndXR0ZXJcIjogXCInICsgb0dyaWRHdXR0ZXIoJGJyZWFrcG9pbnQpICsgJ1wiIH0nO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gRml4IGEgYnVnIGluIFNhZmFyaSB3aGVyZSBpdGVtcyB3b3VsZG4ndCB3cmFwIHByb3Blcmx5XG4vLy8gUmVtb3ZlIHdoZW4gU2FmYXJpIDEwIHN1cHBvcnQgaXMgbm8gbG9uZ2VyIHJlcXVpcmVkLlxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsaXB3YWx0b24vZmxleGJ1Z3MjMTEtbWluLWFuZC1tYXgtc2l6ZS1kZWNsYXJhdGlvbnMtYXJlLWlnbm9yZWQtd2hlbi13cmFwcGluZy1mbGV4LWl0ZW1zXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29HcmlkRml4U2FmYXJpV3JhcCgkYXJncy4uLikge1xuXHRmbGV4LWJhc2lzOiBvR3JpZENvbHNwYW4oJGFyZ3MuLi4pO1xufVxuXG4vLy8gU3VyZmFjZSB0aGUgcHJvamVjdHMgbGF5b3V0cyAoYnJlYWtwb2ludHMpIHRvIG1ha2UgaXQgcmVhZGFibGUgaW4gSlMuXG4vLy9cbi8vLyBAZXhhbXBsZSBqc1xuLy8vICAvLyB5b3VyLWFwcC9tYWluLmpzXG4vLy8gIC8vIFJldHVybiB0aGUgbGF5b3V0cyAoZS5nLiB7XCJsYXlvdXRzXCI6IHtcIlNcIjogXCI0OTBweFwiLFwiTVwiOiBcIjc0MHB4XCIsXCJMXCI6IFwiOTgwcHhcIixcIlhMXCI6IFwiMTIyMHB4XCJ9fSlcbi8vLyAgaW1wb3J0IG9HcmlkIGZyb20gJ28tZ3JpZCc7XG4vLy8gIGxldCBicmVha3BvaW50cyA9IG9HcmlkLmdldEdyaWRCcmVha3BvaW50cygpO1xuLy8vICBjb25zb2xlLmxvZyhicmVha3BvaW50cyk7XG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuQG1peGluIG9HcmlkU3VyZmFjZUxheW91dFNpemVzIHtcblx0aHRtbDpiZWZvcmUge1xuXHRcdCRjb21iaW5lZDogJ3tcImxheW91dHNcIjogeyc7XG5cblx0XHQka2V5czogbWFwLWtleXMoJG8tZ3JpZC1sYXlvdXRzKTtcblxuXHRcdEBmb3IgJGl0dHIgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRrZXlzKSB7XG5cdFx0XHQka2V5OiBudGgoJGtleXMsICRpdHRyKTtcblx0XHRcdCR2YWx1ZTogbWFwLWdldCgkby1ncmlkLWxheW91dHMsICRrZXkpO1xuXG5cdFx0XHQkY29tYmluZWQ6ICRjb21iaW5lZCArIF9vR3JpZFF1b3RlU3RyaW5nKCRrZXkpICsgJzogJyArIF9vR3JpZFF1b3RlU3RyaW5nKCR2YWx1ZSk7XG5cblx0XHRcdEBpZiAkaXR0ciA8IGxlbmd0aCgka2V5cykge1xuXHRcdFx0XHQkY29tYmluZWQ6ICRjb21iaW5lZCArIFwiLCBcIjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQkY29tYmluZWQ6ICRjb21iaW5lZCArICd9fSc7XG5cblx0XHRkaXNwbGF5OiBub25lO1xuXHRcdGNvbnRlbnQ6ICRjb21iaW5lZDtcblx0fVxufVxuXG4vLy8gSHVtYW4gZnJpZW5kbHkgbmFtZXMgZm9yIHBvcnRpb25zIGFuZCBjZW50ZXJpbmc6XG4vLy9cbi8vLyAtIGhpZGVcbi8vLyAtIGZ1bGwtd2lkdGhcbi8vLyAtIG9uZS1oYWxmXG4vLy8gLSBvbmUtdGhpcmRcbi8vLyAtIHR3by10aGlyZHNcbi8vLyAtIG9uZS1xdWFydGVyXG4vLy8gLSB0aHJlZS1xdWFydGVyc1xuLy8vIC0gY2VudGVyXG4vLy8gLSB1bmNlbnRlclxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxheW91dC1uYW1lIFtudWxsXVxuQG1peGluIF9vR3JpZEh1bWFuRnJpZW5kbHlDb2x1bW5zKCRsYXlvdXQtbmFtZTogbnVsbCkge1xuXHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX1oaWRlXCJdIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Ly8gQ2VudGVyIGFuZCB1bi1jZW50ZXJcblx0W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiI3skbGF5b3V0LW5hbWV9Y2VudGVyXCJdIHtcblx0XHRAaW5jbHVkZSBvR3JpZENlbnRlcjtcblx0fVxuXHQvLyBTaW5jZSB3cml0aW5nIFtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cInVuY2VudGVyXCJdIHdvdWxkbid0IG1ha2UgbXVjaCBzZW5zZVxuXHQvLyB3ZSBvbmx5IGFsbG93IFwidW5jZW50ZXJcIiBjb21iaW5lZCB3aXRoIGEgbGF5b3V0IChlLmcuIFhMdW5jZW50ZXIpXG5cdEBpZiAkbGF5b3V0LW5hbWUgIT0gbnVsbCB7XG5cdFx0W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiI3skbGF5b3V0LW5hbWV9dW5jZW50ZXJcIl0ge1xuXHRcdFx0QGluY2x1ZGUgb0dyaWRVbmNlbnRlcjtcblx0XHR9XG5cdH1cblxuXHQvLyBQb3J0aW9uc1xuXHRAZWFjaCAkaHVtYW4tZnJpZW5kbHktbmFtZSBpbiAoZnVsbC13aWR0aCwgb25lLWhhbGYsIG9uZS10aGlyZCwgdHdvLXRoaXJkcywgb25lLXF1YXJ0ZXIsIHRocmVlLXF1YXJ0ZXJzKSB7XG5cdFx0W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiI3skbGF5b3V0LW5hbWV9I3skaHVtYW4tZnJpZW5kbHktbmFtZX1cIl0ge1xuXHRcdFx0Ly8gUmVzdG9yZSB2aXNpYmlsaXR5IGZyb20gYGRpc3BsYXk6IG5vbmVgXG5cdFx0XHQvLyBpZiBgZGF0YS1vLWdyaWQtY29sc3BhbmAgd2FzIHNldCB0byBgMGAgb3IgYGhpZGVgXG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblxuXHRcdFx0Ly8gRGVmaW5lIHdpZHRoIGluICVcblx0XHRcdEBpbmNsdWRlIF9vR3JpZEZpeFNhZmFyaVdyYXAoJGh1bWFuLWZyaWVuZGx5LW5hbWUpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIG9yZGVyL29yZGVyXG5cdFx0XHRtaW4td2lkdGg6IG9HcmlkQ29sc3BhbigkaHVtYW4tZnJpZW5kbHktbmFtZSk7XG5cdFx0XHRtYXgtd2lkdGg6IG9HcmlkQ29sc3BhbigkaHVtYW4tZnJpZW5kbHktbmFtZSk7XG5cdFx0XHR3aWR0aDogb0dyaWRDb2xzcGFuKCRodW1hbi1mcmllbmRseS1uYW1lKTtcblx0XHR9XG5cdH1cbn1cblxuLy8vIFNodWZmbGUgY29sdW1ucyBhcm91bmQgdXNpbmcgcHVsbCwgcHVzaCBhbmQgb2Zmc2V0XG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGF5b3V0LW5hbWUgW251bGxdXG5AbWl4aW4gX29HcmlkU2h1ZmZsZUNvbHVtbnMoJGxheW91dC1uYW1lOiBudWxsKSB7XG5cdEBmb3IgJGNvbHNwYW4gZnJvbSAwIHRocm91Z2ggKCRvLWdyaWQtY29sdW1ucyAtIDEpIHtcblx0XHRbZGF0YS1vLWdyaWQtY29sc3Bhbn49XCIjeyRsYXlvdXQtbmFtZX1wdXNoI3skY29sc3Bhbn1cIl0ge1xuXHRcdFx0QGluY2x1ZGUgb0dyaWRQdXNoKCRjb2xzcGFuKTtcblx0XHR9XG5cdFx0W2RhdGEtby1ncmlkLWNvbHNwYW5+PVwiI3skbGF5b3V0LW5hbWV9cHVsbCN7JGNvbHNwYW59XCJdIHtcblx0XHRcdEBpbmNsdWRlIG9HcmlkUHVsbCgkY29sc3Bhbik7XG5cdFx0fVxuXHRcdFtkYXRhLW8tZ3JpZC1jb2xzcGFufj1cIiN7JGxheW91dC1uYW1lfW9mZnNldCN7JGNvbHNwYW59XCJdIHtcblx0XHRcdEBpbmNsdWRlIG9HcmlkT2Zmc2V0KCRjb2xzcGFuKTtcblx0XHR9XG5cdH1cbn1cblxuLy8vIENyb3NzIGJyb3dzZXIgY29sdW1uIHdpZHRocyBhY3Jvc3MgbGF5b3V0c1xuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICBlbCB7IEBpbmNsdWRlIF9vR3JpZENvbHVtbldpZHRoKDQpOyB9XG4vLy8gICBlbCB7IEBpbmNsdWRlIF9vR3JpZENvbHVtbldpZHRoKDEvMik7IH1cbi8vLyAgIGVsIHsgQGluY2x1ZGUgX29HcmlkQ29sdW1uV2lkdGgoaGlkZSk7IH1cbi8vLyAgIGVsIHsgQGluY2x1ZGUgX29HcmlkQ29sdW1uV2lkdGgoKGRlZmF1bHQ6IDEyLCBNOiA4LCBMOiBoaWRlKSk7IH1cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIHwgTWFwfSAkc3BhblxuQG1peGluIF9vR3JpZENvbHVtbldpZHRoKCRzcGFuKSB7XG5cdC8vIFNwZWNpYWwgY2FzZTogdGhlIGNvbHVtbiBpcyBoaWRkZW4gYnkgZGVmYXVsdFxuXHRAaWYgJHNwYW4gPT0gJ2hpZGUnIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9IEBlbHNlIHtcblx0XHQvLyAkc3BhbiBpcyBhIG51bWJlciBvciBhIGtleXdvcmQsIHNvIHdlJ3JlIG91dHB1dHRpbmcgdGhlIGRlZmF1bHQgd2lkdGggZm9yIHRoYXQgY29sdW1uXG5cdFx0QGlmIHR5cGUtb2YoJHNwYW4pID09IG51bWJlciBvciB0eXBlLW9mKCRzcGFuKSA9PSBzdHJpbmcge1xuXG5cdFx0XHQvLyBSZXN0b3JlIHZpc2liaWxpdHkgZnJvbSBgZGlzcGxheTogbm9uZWBcblx0XHRcdC8vIGlmIGBkYXRhLW8tZ3JpZC1jb2xzcGFuYCB3YXMgc2V0IHRvIGAwYCBvciBgaGlkZWBcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXG5cdFx0XHQvLyBEZWZpbmUgd2lkdGggaW4gJVxuXHRcdFx0QGluY2x1ZGUgX29HcmlkRml4U2FmYXJpV3JhcCgkc3Bhbik7IC8vc3R5bGVsaW50LWRpc2FibGUtbGluZSBvcmRlci9vcmRlclxuXHRcdFx0bWluLXdpZHRoOiBvR3JpZENvbHNwYW4oJHNwYW4pO1xuXHRcdFx0bWF4LXdpZHRoOiBvR3JpZENvbHNwYW4oJHNwYW4pO1xuXHRcdH1cblx0fVxuXG5cdC8vICRzcGFuIGlzIGEgbWFwLCB3ZSdyZSBsb29waW5nIHRocm91Z2ggYWxsIG9mIHRoZSBsYXlvdXRzXG5cdEBpZiB0eXBlLW9mKCRzcGFuKSA9PSBtYXAge1xuXHRcdEBlYWNoICRsYXlvdXQtbmFtZSwgJGxheW91dC1zcGFuIGluICRzcGFuIHtcblx0XHRcdEBpZiAkbGF5b3V0LW5hbWUgPT0gJ2RlZmF1bHQnIHtcblx0XHRcdFx0QGluY2x1ZGUgX29HcmlkQ29sdW1uV2lkdGgoJGxheW91dC1zcGFuKTtcblx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRAaWYgJGxheW91dC1zcGFuID09ICdoaWRlJyB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGxheW91dC1uYW1lKSB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGxheW91dC1uYW1lKSB7XG5cdFx0XHRcdFx0XHQvLyBSZXN0b3JlIHZpc2liaWxpdHkgZnJvbSBgZGlzcGxheTogbm9uZWBcblx0XHRcdFx0XHRcdC8vIGlmIGBkYXRhLW8tZ3JpZC1jb2xzcGFuYCB3YXMgc2V0IHRvIGAwYCBvciBgaGlkZWBcblx0XHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdFx0Ly8gRGVmaW5lIHdpZHRoIGluICVcblx0XHRcdFx0XHRcdEBpbmNsdWRlIF9vR3JpZEZpeFNhZmFyaVdyYXAoJGxheW91dC1zcGFuKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBvcmRlci9vcmRlclxuXHRcdFx0XHRcdFx0bWluLXdpZHRoOiBvR3JpZENvbHNwYW4oJGxheW91dC1zcGFuKTtcblx0XHRcdFx0XHRcdG1heC13aWR0aDogb0dyaWRDb2xzcGFuKCRsYXlvdXQtc3Bhbik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iLCJAaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28tY29sb3JzL21haW4nO1xuXG5AaW1wb3J0ICdzcmMvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnc3JjL3Njc3MvbWl4aW5zJztcblxuLy8vIE91dHB1dHMgYWxsIG8tbm9ybWFsaXNlIHN0eWxlcy5cbi8vLyBAcGFyYW0ge2xpc3R9ICRvcHRzIC0gQSBtYXAgb2Ygd2hpY2ggbm9ybWFsaXNlIHN0eWxlcyBhbmQgaGVscGVyIGNsYXNzZXMgdG8gb3V0cHV0LlxuLy8vIEBleGFtcGxlIE91dHB1dCBhbGwgby1ub3JtYWxpc2Ugc3R5bGVzLlxuLy8vICAgICBAaW5jbHVkZSBvTm9ybWFsaXNlKCk7XG4vLy8gQGV4YW1wbGUgT3V0cHV0IGFsbCBvLW5vcm1hbGlzZSBzdHlsZXMsIHdpdGhvdXQgY3NzIGNsYXNzIGhlbHBlcnMgc3VjaCBhcyBgby1ub3JtYWxpc2UtdmlzdWFsbHktaGlkZGVuYC5cbi8vLyAgICAgQGluY2x1ZGUgb05vcm1hbGlzZSgkb3B0czogKFxuLy8vICAgICBcdCdlbGVtZW50cyc6ICgnZm9ybXMnLCAnaW1hZ2VzJywgJ3RleHQnLCAnbGlua3MnKSxcbi8vLyAgICAgXHQnYm9keSc6ICgnZm9udC1zbW9vdGhpbmcnLCAnZm9jdXMnLCAncmVkdWNlLW1vdGlvbicpXG4vLy8gICAgICkpO1xuLy8vIEBhY2Nlc3MgcHVibGljXG5AbWl4aW4gb05vcm1hbGlzZSgkb3B0czogKFxuXHQnZWxlbWVudHMnOiAoJ2Zvcm1zJywgJ2ltYWdlcycsICd0ZXh0JywgJ2xpbmtzJyksXG5cdCdib2R5JzogKCdmb250LXNtb290aGluZycsICdmb2N1cycsICdyZWR1Y2UtbW90aW9uJyksXG5cdCdoZWxwZXJzJzogKCdjbGVhcmZpeCcsICd2aXN1YWxseS1oaWRkZW4nKVxuKSkge1xuXHQvLyBUaGUgZWxlbWVudHMgdG8gbm9ybWFsaXNlLlxuXHQkZWxlbWVudHM6IG1hcC1nZXQoJG9wdHMsICdlbGVtZW50cycpO1xuXHQkbGlua3M6IGluZGV4KCRlbGVtZW50cywgJ2xpbmtzJyk7XG5cdCR0ZXh0OiBpbmRleCgkZWxlbWVudHMsICd0ZXh0Jyk7XG5cdCRpbWFnZXM6IGluZGV4KCRlbGVtZW50cywgJ2ltYWdlcycpO1xuXHQkZm9ybXM6IGluZGV4KCRlbGVtZW50cywgJ2Zvcm1zJyk7XG5cblx0Ly8gVGhlIGJvZHkgZmVhdHVyZXMgdG8gbm9ybWFsaXNlLlxuXHQkYm9keTogbWFwLWdldCgkb3B0cywgJ2JvZHknKTtcblx0JGZvbnQtc21vb3RoaW5nOiBpbmRleCgkYm9keSwgJ2ZvbnQtc21vb3RoaW5nJyk7XG5cdCRmb2N1czogaW5kZXgoJGJvZHksICdmb2N1cycpO1xuXHQkcmVkdWNlLW1vdGlvbjogaW5kZXgoJGJvZHksICdyZWR1Y2UtbW90aW9uJyk7XG5cblx0Ly8gVGhlIG5vcm1hbGlzZSBjbGFzc2VzIHRvIG91dHB1dC5cblx0JGhlbHBlcnM6IG1hcC1nZXQoJG9wdHMsICdoZWxwZXJzJyk7XG5cdCRjbGVhcmZpeDogaW5kZXgoJGhlbHBlcnMsICdjbGVhcmZpeCcpO1xuXHQkdmlzdWFsbHktaGlkZGVuOiBpbmRleCgkaGVscGVycywgJ3Zpc3VhbGx5LWhpZGRlbicpO1xuXG5cdEBpZigkYm9keSkge1xuXHRcdEBpbmNsdWRlIF9vTm9ybWFsaXNlQm9keSgkZm9udC1zbW9vdGhpbmcsIGZhbHNlLCAkZm9jdXMsICRyZWR1Y2UtbW90aW9uKTtcblx0fVxuXG5cdEBpZigkbGlua3MpIHtcblx0XHRAaW5jbHVkZSBfb05vcm1hbGlzZUxpbmtzKCk7XG5cdH1cblxuXHRAaWYoJHRleHQpIHtcblx0XHRAaW5jbHVkZSBfb05vcm1hbGlzZVRleHQoKTtcblx0fVxuXG5cdEBpZigkaW1hZ2VzKSB7XG5cdFx0QGluY2x1ZGUgX29Ob3JtYWxpc2VJbWFnZXMoKTtcblx0fVxuXG5cdEBpZigkZm9ybXMpIHtcblx0XHRAaW5jbHVkZSBfb05vcm1hbGlzZUZvcm1zKCk7XG5cdH1cblxuXHRAaWYoJGNsZWFyZml4KSB7XG5cdFx0Lm8tbm9ybWFsaXNlLWNsZWFyZml4IHtcblx0XHRcdEBpbmNsdWRlIG9Ob3JtYWxpc2VDbGVhcmZpeDtcblx0XHR9XG5cdH1cblxuXHRAaWYoJHZpc3VhbGx5LWhpZGRlbikge1xuXHRcdC5vLW5vcm1hbGlzZS12aXN1YWxseS1oaWRkZW4ge1xuXHRcdFx0QGluY2x1ZGUgb05vcm1hbGlzZVZpc3VhbGx5SGlkZGVuO1xuXHRcdH1cblx0fVxufVxuXG5AaWYgKCRvLW5vcm1hbGlzZS1pcy1zaWxlbnQgPT0gZmFsc2UpIHtcblx0Ly8gT3V0cHV0IGFsbCBub3JtYWxpc2luZyBzdHlsZXNcblx0QGluY2x1ZGUgb05vcm1hbGlzZSgpO1xuXG5cdC8vIFNldCB0byBzaWxlbnQgYWdhaW4gdG8gYXZvaWQgYmVpbmcgb3V0cHV0IHR3aWNlXG5cdCRvLW5vcm1hbGlzZS1pcy1zaWxlbnQ6IHRydWUgIWdsb2JhbDtcbn1cbiIsIiRvLXR5cG9ncmFwaHktaXMtc2lsZW50OiBmYWxzZTtcbiRvLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWlzLXNpbGVudDogZmFsc2U7XG4kby1lZGl0b3JpYWwtbGF5b3V0LWlzLXNpbGVudDogZmFsc2U7XG5cbkBpbXBvcnQgJy4vX2dsb2JhbHMuc2Nzcyc7XG5AaW1wb3J0ICdvLW5vcm1hbGlzZS9tYWluLnNjc3MnO1xuQGltcG9ydCAnby1jb2xvcnMvbWFpbi5zY3NzJztcbkBpbXBvcnQgJ28tZ3JpZC9tYWluLnNjc3MnO1xuQGltcG9ydCAnby10eXBvZ3JhcGh5L21haW4nO1xuQGltcG9ydCAnby1lZGl0b3JpYWwtdHlwb2dyYXBoeS9tYWluJztcbkBpbXBvcnQgJ28tZWRpdG9yaWFsLWxheW91dC9tYWluJztcblxuQGluY2x1ZGUgb0dyaWRTdXJmYWNlTGF5b3V0U2l6ZXM7XG5AaW5jbHVkZSBvTm9ybWFsaXNlKCk7XG5cbi8vIEBUT0RPIGNoYW5nZSB0byB1c2luZyBvLWZvbnRzXG4kZm9udC1zYW5zOiBNZXRyaWNXZWIsIHNhbnMtc2VyaWY7XG4kZm9udC1zZXJpZjogR2VvcmdpYSwgc2VyaWY7XG4kZm9udC1kaXNwbGF5OiBGaW5hbmNpZXJEaXNwbGF5V2ViLCBHZW9yZ2lhLCBzZXJpZjtcblxuaHRtbCB7XG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG59XG5cbmh0bWwsXG5ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjFlNTtcbiAgZm9udC1mYW1pbHk6IE1ldHJpY1dlYiwgc2Fucy1zZXJpZjtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG5tYWluIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5jb3JlIC5vLS1pZi1qcyxcbi5lbmhhbmNlZCAuby0taWYtbm8tanMsXG4uaXMtbmV4dCAuaGlkZS1uZXh0LFxuLmlzLWZhbGNvbiAuaGlkZS1mYWxjb24sXG4uaXMtbG9nZ2VkaW4gLmhpZGUtbG9nZ2VkaW4sXG4uaXMtYW5vbnltb3VzIC5oaWRlLWFub255bW91cyB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLnNob3ctbG9nZ2VkaW4sXG4uc2hvdy1hbm9ueW1vdXMsXG4uc2hvdy1uZXh0LFxuLnNob3ctZmFsY29uLFxuLmhpZGUtZmFsY29uLFxuLmhpZGUtbmV4dCxcbi5oaWRlLWxvZ2dlZGluLFxuLmhpZGUtYW5vbnltb3VzIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmlzLWxvZ2dlZGluIC5zaG93LWxvZ2dlZGluLFxuLmlzLWFub255bW91cyAuc2hvdy1hbm9ueW1vdXMsXG4uaXMtbmV4dCAuc2hvdy1uZXh0LFxuLmlzLWZhbGNvbiAuc2hvdy1mYWxjb24sXG4uaXMtZmFsY29uIC5oaWRlLW5leHQsXG4uaXMtbmV4dCAuaGlkZS1mYWxjb24ge1xuICBkaXNwbGF5OiBpbmhlcml0O1xufVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZDogb0NvbG9yc0J5VXNlY2FzZSgncGFnZScsICdiYWNrZ3JvdW5kJyk7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyOiAwO1xuICBmb250LWZhbWlseTogJGZvbnQtc2Fucztcbn1cblxuLmFydGljbGUge1xuICAmLWhlYWQge1xuICAgIG1hcmdpbi10b3A6IDE4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC8vIFRoaXMgd2FzIGluIHRoZSBvcmlnaW5hbCBTdGFydGVyIEtpdCBzdHlsZXMuc2NzcyBidXQgcHJldmVudHNcbiAgLy8gZG9pbmcgdGhpbmdzIGxpa2UgZnVsbC1ibGVlZCBpbWFnZXMvdGFibGVzIHNvIGRpc2FibGluZy5cbiAgLy8gJi1ib2R5IHtcbiAgLy8gICBkaXZbZGF0YS1vLWdyaWQtY29sc3Bhbl0ge1xuICAvLyAgICAgJiA+IGRpdiB7XG4gIC8vICAgICAgIG1heC13aWR0aDogNzAwcHg7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyB9XG59XG5cbi5ncmFwaGljIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcblxuICAmID4gaW1nLFxuICAmID4gc3ZnIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAmLWItMCB7XG4gICAgbWF4LXdpZHRoOiA2MjVweDtcbiAgfVxuXG4gICYtYi0xIHtcbiAgICBtYXgtd2lkdGg6IDcwMHB4O1xuICB9XG59XG5cbkBpbXBvcnQgJy4vZGFyayc7XG4iLCIvLyBzdGFydGVyLWtpdCBkYXJrIHRoZW1lXG5cbi5kYXJrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogb0NvbG9yc0J5TmFtZSgnc2xhdGUnKTtcblxuICBib2R5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICB9XG5cbiAgLnBpbmsge1xuICAgIGJhY2tncm91bmQ6IG9Db2xvcnNCeVVzZWNhc2UoJ3BhZ2UnLCAnYmFja2dyb3VuZCcpO1xuICAgIHBhZGRpbmc6IDFlbSAwO1xuXG4gICAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oTSkge1xuICAgICAgcGFkZGluZzogMmVtIDA7XG4gICAgfVxuICB9XG5cbiAgLmFydGljbGUge1xuICAgIC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LXRvcGljLFxuICAgIC5vLWVkaXRvcmlhbC10eXBvZ3JhcGh5LWF1dGhvciB7XG4gICAgICBjb2xvcjogb0NvbG9yc0dldFRleHRDb2xvcihvQ29sb3JzQnlOYW1lKCdzbGF0ZScpLCAxMDApO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IG9Db2xvcnNHZXRUZXh0Q29sb3Iob0NvbG9yc0J5TmFtZSgnc2xhdGUnKSwgNzMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGgxLFxuICAgIGgyLFxuICAgIGgzLFxuICAgIGg0LFxuICAgIGg1LFxuICAgIGg2IHtcbiAgICAgIGNvbG9yOiBvQ29sb3JzR2V0VGV4dENvbG9yKG9Db2xvcnNCeU5hbWUoJ3NsYXRlJyksIDEwMCk7XG4gICAgfVxuXG4gICAgLm8tZWRpdG9yaWFsLXR5cG9ncmFwaHktc3RhbmRmaXJzdCB7XG4gICAgICBjb2xvcjogb0NvbG9yc0dldFRleHRDb2xvcihvQ29sb3JzQnlOYW1lKCdzbGF0ZScpLCA3Myk7XG5cbiAgICAgIGEge1xuICAgICAgICBjb2xvcjogb0NvbG9yc0dldFRleHRDb2xvcihvQ29sb3JzQnlOYW1lKCdzbGF0ZScpLCAxMDApO1xuICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgb0NvbG9yc0dldFRleHRDb2xvcihvQ29sb3JzQnlOYW1lKCdzbGF0ZScpLCA3Myk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIG9Db2xvcnNHZXRUZXh0Q29sb3Iob0NvbG9yc0J5TmFtZSgnc2xhdGUnKSwgMTAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHAsXG4gICAgLm8tZGF0ZSxcbiAgICAuYnlsaW5lLFxuICAgIHNtYWxsIHtcbiAgICAgIGNvbG9yOiBvQ29sb3JzR2V0VGV4dENvbG9yKG9Db2xvcnNCeU5hbWUoJ3NsYXRlJyksIDczKTtcbiAgICB9XG5cbiAgICBmaWdjYXB0aW9uLFxuICAgIGZpZ2NhcHRpb24gYSxcbiAgICBmb290ZXIgc21hbGwgYSB7XG4gICAgICBjb2xvcjogcmdiKDE1MSwgMTUxLCAxNTEpO1xuICAgIH1cblxuICAgIHAgYSB7XG4gICAgICBjb2xvcjogb0NvbG9yc0dldFRleHRDb2xvcihvQ29sb3JzQnlOYW1lKCdzbGF0ZScpLCAxMDApO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIG9Db2xvcnNHZXRUZXh0Q29sb3Iob0NvbG9yc0J5TmFtZSgnc2xhdGUnKSwgNzMpO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IG9Db2xvcnNHZXRUZXh0Q29sb3Iob0NvbG9yc0J5TmFtZSgnc2xhdGUnKSwgMTAwKTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIG9Db2xvcnNHZXRUZXh0Q29sb3Iob0NvbG9yc0J5TmFtZSgnc2xhdGUnKSwgMTAwKTtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGNvbG9yOiBvQ29sb3JzR2V0VGV4dENvbG9yKG9Db2xvcnNCeU5hbWUoJ3NsYXRlJyksIDEwMCk7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIHAge1xuICAgICAgQGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZihcbiAgICAgICAgJHNjYWxlOiAoXG4gICAgICAgICAgZGVmYXVsdDogMSxcbiAgICAgICAgICBYTDogMixcbiAgICAgICAgKSxcbiAgICAgICAgJGxpbmUtaGVpZ2h0OiAxLjZcbiAgICAgICk7XG4gICAgfVxuXG4gICAgb2wgbGksXG4gICAgdWwgbGkge1xuICAgICAgQGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICRsaW5lLWhlaWdodDogMjhweCk7XG4gICAgICBjb2xvcjogb0NvbG9yc0dldFRleHRDb2xvcihvQ29sb3JzQnlOYW1lKCdzbGF0ZScpLCA3Myk7XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbG9yOiBvQ29sb3JzR2V0VGV4dENvbG9yKG9Db2xvcnNCeU5hbWUoJ3NsYXRlJyksIDczKSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5vbndhcmQtam91cm5leSB7XG4gICAgYSxcbiAgICBoMiB7XG4gICAgICBjb2xvcjogb0NvbG9yc0dldFRleHRDb2xvcihvQ29sb3JzQnlOYW1lKCdzbGF0ZScpLCAxMDApO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IG9Db2xvcnNHZXRUZXh0Q29sb3Iob0NvbG9yc0J5TmFtZSgnc2xhdGUnKSwgNzMpO1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6IG9Db2xvcnNHZXRUZXh0Q29sb3Iob0NvbG9yc0J5TmFtZSgnc2xhdGUnKSwgNzMpO1xuICAgICAgfVxuXG4gICAgICAmOnZpc2l0ZWQge1xuICAgICAgICBjb2xvcjogb0NvbG9yc0dldFRleHRDb2xvcihvQ29sb3JzQnlOYW1lKCdzbGF0ZScpLCAxMDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5vLWRhdGUge1xuICAgICAgY29sb3I6IG9Db2xvcnNHZXRUZXh0Q29sb3Iob0NvbG9yc0J5TmFtZSgnc2xhdGUnKSwgNzMpO1xuICAgIH1cbiAgfVxufVxuIiwiQGltcG9ydCBcInNyYy9zY3NzL3ZhcmlhYmxlc1wiO1xuQGltcG9ydCBcInNyYy9zY3NzL21peGluc1wiO1xuQGltcG9ydCBcInNyYy9zY3NzL2ljb24tbGlzdFwiO1xuXG5cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7TWFwfSAkb3B0cyBbKCdpY29ucyc6ICgnYXJyb3ctZG93bicsICdhdWRpbycsICdib29rJykpXSBBIG1hcCBvZiBvLWljb25zIG9wdGlvbnMsIGluY2x1ZGluZyBhbGwgaWNvbnMgdG8gaW5jbHVkZSAoZGVmYXVsdHMgdG8gYWxsIGljb25zLCBzZWUgdGhlIFJFQURNRSBmb3IgYSBmdWxsIGxpc3QpLlxuLy8vIEBleGFtcGxlIEluY2x1ZGUgYWxsIG8taWNvbnMgY3NzLlxuLy8vXHRcdEBpbmNsdWRlIG9JY29ucygpO1xuLy8vIEBleGFtcGxlIEluY2x1ZGUgb25seSBjc3MgZm9yIHRoZSB1cCBhbmQgZG93biBhcnJvd3MuXG4vLy9cdFx0QGluY2x1ZGUgb0ljb25zKCRvcHRzOiAoJ2ljb25zJzogKCdhcnJvdy1kb3duJywgJ2Fycm93LXVwJykpKTtcbkBtaXhpbiBvSWNvbnMoJG9wdHM6IChcblx0J2ljb25zJzogJG8taWNvbnMtbGlzdFxuKSkge1xuXHQuby1pY29ucy1pY29uIHtcblx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50QmFzZVN0eWxlcztcblx0fVxuXG5cdEBlYWNoICRpY29uIGluIG1hcC1nZXQoJG9wdHMsIGljb25zKSB7XG5cdFx0Lm8taWNvbnMtaWNvbi0tI3skaWNvbn0ge1xuXHRcdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgkaWNvbiwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0XHR9XG5cdH1cbn1cblxuLy8gT25seSBvdXRwdXQgYmFzZSBjbGFzc2VzIG9uY2UgaW4gbm9uLXNpbGVudCBtb2RlXG5AaWYgKCRvLWljb25zLWlzLXNpbGVudCA9PSBmYWxzZSkge1xuXHRAaW5jbHVkZSBvSWNvbnMoKTtcblxuXHQkby1pY29ucy1pcy1zaWxlbnQ6IHRydWUgIWdsb2JhbDtcbn1cbiIsIi8vLyBPdXRwdXQgc3R5bGVzIGZvciBhbiBTVkcgaWNvbi5cbi8vLyBTdHlsZXMgdGhlIGljb24gYXMgYSBiYWNrZ3JvdW5kIGltYWdlLCBzZXR0aW5nIGEgd2lkdGggYW5kIGhlaWdodCBvbiB0aGUgZWxlbWVudCBhcyByZXF1ZXN0ZWQuXG4vLy8gQSBmYWxsYmFjayBiYWNrZ3JvdW5kIGZvciBXaW5kb3dzIEhpZ2ggQ29udHJhc3QgbW9kZSBpcyBhbHNvIG91dHB1dC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRpY29uLW5hbWUgLSBUaGlzIHNob3VsZCBiZSBhIHJlZmVyZW5jZSB0byBhbiBpY29uIGluY2x1ZGVkIGluIG8taWNvbnMgZWcgYXJyb3ctZG93blxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkY29sb3IgLSBUaGlzIHNob3VsZCBiZSBhIGhleCBjb2xvdXIgdmFsdWUuIFVzZWQgdG8gY29sb3IgdGhlIGljb24uIFdlIHN1Z2dlc3QgdXNpbmcgYW4gby1jb2xvcnMgZnVuY3Rpb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TnVsbH0gJHNpemUgWzEyOF0gLSBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgaWNvbiAodW5pdHMgb3B0aW9uYWwsIGRlZmF1bHRzIHRvIHB4KS4gU2V0IHRvIGBudWxsYCB0byBzZXQgbm8gd2lkdGggb3IgaGVpZ2h0LlxuLy8vIEBwYXJhbSB7Qm9vbH0gJGluY2x1ZGUtYmFzZS1zdHlsZXMgW3RydWVdIC0gSWYgdHJ1ZSwgd2lsbCBvdXRwdXQgc3R5bGUgcnVsZXMgZm9yIHRoZSBjb250YWluZXIuIElmIGZhbHNlIHdpbGwgb25seSBvdXRwdXQgdGhlIGJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHlcbi8vLyBAcGFyYW0ge0Jvb2x9ICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrIFt0cnVlXSAtIFRvIG91dHB1dCBNaWNyb3NvZnQgSGlnaCBDb250cmFzdCBmYWxsYmFjayBmb3IgYWNjZXNzaWJpbGl0eSByZWFzb25zIG9yIG5vdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGljb25zZXQtdmVyc2lvbiBbMV0gLSBBdCBwcmVzZW50IG9ubHkgMSB2ZXJzaW9uIG9mIHRoZSBpY29uIHNldCBpcyBhdmFpbGFibGUuXG5AbWl4aW4gb0ljb25zQ29udGVudCgkaWNvbi1uYW1lLCAkY29sb3I6IG51bGwsICRzaXplOiAxMjgsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiB0cnVlLCAkaGlnaC1jb250cmFzdC1mYWxsYmFjazogdHJ1ZSwgJGljb25zZXQtdmVyc2lvbjogMSkge1xuXHQvLyBFcnJvciBpZiB0aGUgZ2xvYmFsICRzeXN0ZW0tY29kZSB2YXJpYWJsZSBpcyBub3Qgc2V0LlxuXHQvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciBpbWFnZSBzZXJ2aWNlIHJlcXVlc3RzLlxuXHRAaWYoZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnc3lzdGVtLWNvZGUnKSA9PSBmYWxzZSBvciB0eXBlLW9mKCRzeXN0ZW0tY29kZSkgIT0gJ3N0cmluZycpIHtcblx0XHRAZXJyb3IgJ0EgZ2xvYmFsIFwiJHN5c3RlbS1jb2RlXCIgU2FzcyB2YXJpYWJsZSBtdXN0IGJlIHNldCB0byBhIHZhbGlkIEJpem9wcyBzeXN0ZW0gY29kZSAoXFxlXTg7O2h0dHBzOi8vYml6LW9wcy5pbi5mdC5jb20vbGlzdC9TeXN0ZW1zXFxlXFxcXGh0dHBzOi8vYml6LW9wcy5pbi5mdC5jb20vbGlzdC9TeXN0ZW1zXFxlXTg7O1xcZVxcXFwpLic7XG5cdH1cblxuXHQvLyBJZiB0aGUgc2l6ZSBvZiB0aGUgaWNvbnMgaGFzIGJlZW4gZ2l2ZW4gd2l0aG91dCBhIHVuaXQsIGRlZmF1bHQgdG8gcHguXG5cdEBpZiAodHlwZS1vZigkc2l6ZSkgPT0gJ251bWJlcicgYW5kIHVuaXRsZXNzKCRzaXplKSkge1xuXHRcdCRzaXplOiAkc2l6ZSArIDBweDtcblx0fVxuXG5cdC8vIERlZmluZSBiYXNlIGltYWdlIHNlcnZpY2UgcGF0aC5cblx0JHNjaGVtZTogXCJmdGljb24tdiN7JGljb25zZXQtdmVyc2lvbn1cIjtcblx0JHNlcnZpY2UtdXJsOiBcImh0dHBzOi8vd3d3LmZ0LmNvbS9fX29yaWdhbWkvc2VydmljZS9pbWFnZS92Mi9pbWFnZXMvcmF3LyN7JHNjaGVtZX06I3skaWNvbi1uYW1lfVwiO1xuXG5cdC8vIEluY2x1ZGUgYmFzZSBzdHlsZXMgc2hhcmVkIGJ5IGFsbCBpY29ucy5cblx0QGlmICgkaW5jbHVkZS1iYXNlLXN0eWxlcyA9PSB0cnVlKSB7XG5cdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudEJhc2VTdHlsZXM7XG5cdH1cblxuXHQvLyBTZXQgdGhlIGljb24gZGltZW50aW9ucy5cblx0d2lkdGg6ICRzaXplO1xuXHRoZWlnaHQ6ICRzaXplO1xuXG5cdC8vIEluY2x1ZGUgdGhlIGljb24gdmlhIHRoZSBpbWFnZSBzZXJ2aWNlLlxuXHQvLyBCdWlsZCBhbiBpbWFnZSBzZXJ2aWNlIHVybCBmb3IgdGhlIHJlcXVlc3RlZCBpY29uLlxuXHQkcXVlcnk6IFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX1cIjtcblx0QGlmICRjb2xvciAhPSBudWxsIHtcblx0XHQkY29sb3I6IHN0ci1zbGljZShpZS1oZXgtc3RyKCRjb2xvciksIDQpO1xuXHRcdCRxdWVyeTogJHF1ZXJ5ICsgXCImdGludD0lMjMjeyRjb2xvcn0sJTIzI3skY29sb3J9XCI7XG5cdH1cblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArICRxdWVyeSArIFwiJmZvcm1hdD1zdmdcIik7XG5cblx0Ly8gSW5jbHVkZSBhIGZhbGxiYWNrIGZvciBXaW5kb3cncyBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdC8vIFRoaXMgbW9kZSByZW1vdmVzIGJhY2tncm91bmQgaW1hZ2VzIHVubGVzcyBzcGVjaWZjYWxseSBpbmNsdWRlZFxuXHQvLyBmb3IgaGlnaCBjb250cmFzdCBtb2RlLlxuXHQvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcblx0QGlmICRoaWdoLWNvbnRyYXN0LWZhbGxiYWNrIHtcblx0XHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArIFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX0mdGludD0lMjNmZmZmZmYsJTIzZmZmZmZmJmZvcm1hdD1zdmdcIik7XG5cdFx0fVxuXG5cdFx0QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBibGFjay1vbi13aGl0ZSkge1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCRzZXJ2aWNlLXVybCArIFwiP3NvdXJjZT0jeyRzeXN0ZW0tY29kZX0mdGludD0lMjMwMDAwMDAsJTIzMDAwMDAwJmZvcm1hdD1zdmdcIik7XG5cdFx0fVxuXHR9XG5cdC8vIHNhc3MtbGludDplbmFibGUgbm8tdmVuZG9yLXByZWZpeGVzXG59XG5cbi8vLyBCYXNlIHN0eWxlcyBmb3IgYWxsIGljb25zXG4vLy8gQGFjY2VzcyBwdWJsaWNcbkBtaXhpbiBvSWNvbnNDb250ZW50QmFzZVN0eWxlcygpIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDUwJTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cbiIsIi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAb3V0cHV0IHN0eWxlcyBmb3IgdmFsaWQgYW5kIGludmFsaWQgaW5wdXRzXG5AbWl4aW4gX29Gb3Jtc1ZhbGlkaXR5U3RhdGVzKCkge1xuXHQuby1mb3Jtcy1pbnB1dC0tdmFsaWQge1xuXHRcdCo6dmFsaWQ6bm90KGJ1dHRvbik6bm90KDpkaXNhYmxlZCkge1xuXHRcdFx0Y29sb3I6IF9vRm9ybXNHZXQoJ3ZhbGlkLWJhc2UnKTtcblx0XHRcdGJvcmRlci1jb2xvcjogX29Gb3Jtc0dldCgndmFsaWQtYmFzZScpO1xuXHRcdH1cblx0fVxuXG5cdCo6aW52YWxpZCB7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0fVxuXG5cdC5vLWZvcm1zLWlucHV0X19lcnJvciB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC5vLWZvcm1zLWlucHV0LS1pbnZhbGlkIHtcblx0XHQqOmludmFsaWQ6bm90KDpkaXNhYmxlZCkge1xuXHRcdFx0Y29sb3I6IF9vRm9ybXNHZXQoJ2ludmFsaWQtYmFzZScpO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiBfb0Zvcm1zR2V0KCdpbnZhbGlkLWJhc2UnKTtcblxuXHRcdFx0KyAuby1mb3Jtcy1pbnB1dF9fbGFiZWw6YmVmb3JlLFxuXHRcdFx0KyAuby1mb3Jtcy1pbnB1dF9fbGFiZWw6YWZ0ZXIge1xuXHRcdFx0XHRib3JkZXItY29sb3I6IF9vRm9ybXNHZXQoJ2ludmFsaWQtYmFzZScpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5vLWZvcm1zLWlucHV0X19lcnJvciB7XG5cdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoXG5cdFx0XHRcdCRzY2FsZTogLTEsXG5cdFx0XHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZVxuXHRcdFx0KTtcblx0XHRcdGNvbG9yOiBfb0Zvcm1zR2V0KCdpbnZhbGlkLWJhc2UnKTtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0bWFyZ2luLXRvcDogJF9vLWZvcm1zLXNwYWNpbmctb25lO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogLSRfby1mb3Jtcy1zcGFjaW5nLWZpdmU7XG5cdFx0fVxuXHR9XG59XG4iLCIvLy8gT3V0cHV0cyB0eXBvZ3JhcGh5IHN0eWxlcyBmb3IgdGhlIFNlcmlmIGZvbnQuXG4vLy8gSW5jbHVkaW5nOiBmYW1pbHksIHNpemUsIGxpbmUtaGVpZ2h0LCB3ZWlnaHQsIHN0eWxlLCBhbmQgZm9udCBzaXplc1xuLy8vIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcuXG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBmb250LWZhbWlseSBwcm9wZXJ0eSBvbmx5IGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzZXJpZiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIHNlcmlmIGZvbnQuIFNldCBhIGN1c3RvbSBsaW5lLWhlaWdodCBvZiAxLjYuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNlcmlmKCRzY2FsZTogMSwgJGxpbmUtaGVpZ2h0OiAxLjYpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgZm9udC13ZWlnaHQgZm9yIHRoZSBzZXJpZiBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICR3ZWlnaHQ6ICdib2xkJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXN0eWxlIGZvciB0aGUgc2VyaWYgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBzZXJpZiBmb250IHByb3BlcnRpZXMgd2l0aG91dCBmb250LWZhbWlseS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2VyaWYoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHNlcmlmIGZvbnQgcHJvcGVydGllcyB3aXRob3V0IHNpemVzIGZvciB0aGUgZmFsbGJhY2sgZm9udCAod2l0aG91dCBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcpLlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTZXJpZigkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLXByb2dyZXNzaXZlOiBmYWxzZSk7XG4vLy9cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgc2VyaWYgZm9udC1mYW1pbHkgaXMgaW5oZXJpdGVkIGZyb20gYSBwYXJlbnQgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLXByb2dyZXNzaXZlIFt0cnVlXSAtIFNldCB0byBmYWxzZSB0byBleGNsdWRlIHN0eWxlcyB1c2VkIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcgKGZvbnQtZmFtaWx5IGFuZCBzaXplIGZhbGxiYWNrcyBmb3IgbG9hZGluZyBmb250cykuXG5AbWl4aW4gb1R5cG9ncmFwaHlTZXJpZihcblx0JHNjYWxlOiBudWxsLFxuXHQkbGluZS1oZWlnaHQ6IG51bGwsXG5cdCR3ZWlnaHQ6IG51bGwsXG5cdCRzdHlsZTogbnVsbCxcblx0JGluY2x1ZGUtZm9udC1mYW1pbHk6IHRydWUsXG5cdCRpbmNsdWRlLXByb2dyZXNzaXZlOiAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZ1xuKSB7XG5cdEBpbmNsdWRlIF9vVHlwb2dyYXBoeUZvcihcblx0XHQkX28tdHlwb2dyYXBoeS1zZXJpZixcblx0XHQkc2NhbGUsXG5cdFx0JGxpbmUtaGVpZ2h0LFxuXHRcdCR3ZWlnaHQsXG5cdFx0JHN0eWxlLFxuXHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5LFxuXHRcdCRpbmNsdWRlLXByb2dyZXNzaXZlXG5cdCk7XG59XG5cbi8vLyBPdXRwdXRzIHR5cG9ncmFwaHkgc3R5bGVzIGZvciB0aGUgRGlzcGxheSBmb250LlxuLy8vIEluY2x1ZGluZzogZmFtaWx5LCBzaXplLCBsaW5lLWhlaWdodCwgd2VpZ2h0LCBzdHlsZSwgYW5kIGZvbnQgc2l6ZXNcbi8vLyBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nLlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGEgZm9udC1mYW1pbHkgcHJvcGVydHkgb25seSBmb3IgdGhlIGRpc3BsYXkgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIGRpc3BsYXkgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEpO1xuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGZvbnQtZmFtaWx5LCBmb250LXNpemUsIGFuZCBsaW5lLWhlaWdodCBmb3IgdGhlIGRpc3BsYXkgZm9udC4gU2V0IGEgY3VzdG9tIGxpbmUtaGVpZ2h0IG9mIDEuNi5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5RGlzcGxheSgkc2NhbGU6IDEsICRsaW5lLWhlaWdodDogMS42KTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtd2VpZ2h0IGZvciB0aGUgZGlzcGxheSBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHdlaWdodDogJ2JvbGQnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBsaW5lLWhlaWdodCwgYW5kIGZvbnQtc3R5bGUgZm9yIHRoZSBkaXNwbGF5IGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeURpc3BsYXkoJHNjYWxlOiAxLCAkc3R5bGU6ICdpdGFsaWMnKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBkaXNwbGF5IGZvbnQgcHJvcGVydGllcyB3aXRob3V0IGZvbnQtZmFtaWx5LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBkaXNwbGF5IGZvbnQgcHJvcGVydGllcyB3aXRob3V0IHNpemVzIGZvciB0aGUgZmFsbGJhY2sgZm9udCAod2l0aG91dCBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcpLlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEaXNwbGF5KCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJywgJGluY2x1ZGUtcHJvZ3Jlc3NpdmU6IGZhbHNlKTtcbi8vL1xuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJHNjYWxlIFtudWxsXSAtIGEgc2NhbGUgbnVtYmVyIHRvIG91dHB1dCBhIGZvbnQtc2l6ZSBhbmQgbGluZS1oZWlnaHQgcHJvcGVydHlcbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBbbnVsbF0gLSBjdXN0b20gbGluZS1oZWlnaHQgdmFsdWUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIHNjYWxlJ3MgZGVmYXVsdFxuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXdlaWdodCBwcm9wZXJ0eSwgZS5nLiAnYm9sZCcsICdzZW1pYm9sZCdcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXN0eWxlIHByb3BlcnR5LCBlLmcuICdpdGFsaWMnXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1mb250LWZhbWlseSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSB0aGUgZm9udC1mYW1pbHkgcHJvcGVydHkgZnJvbSB0aGUgb3V0cHV0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHJlc2l6aW5nIHR5cG9ncmFwaHksIHdoZXJlIHRoZSBkaXNwbGF5IGZvbnQtZmFtaWx5IGlzIGluaGVyaXRlZCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1wcm9ncmVzc2l2ZSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBzdHlsZXMgdXNlZCBmb3IgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nIChmb250LWZhbWlseSBhbmQgc2l6ZSBmYWxsYmFja3MgZm9yIGxvYWRpbmcgZm9udHMpLlxuQG1peGluIG9UeXBvZ3JhcGh5RGlzcGxheShcblx0JHNjYWxlOiBudWxsLFxuXHQkbGluZS1oZWlnaHQ6IG51bGwsXG5cdCR3ZWlnaHQ6IG51bGwsXG5cdCRzdHlsZTogbnVsbCxcblx0JGluY2x1ZGUtZm9udC1mYW1pbHk6IHRydWUsXG5cdCRpbmNsdWRlLXByb2dyZXNzaXZlOiAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZ1xuKSB7XG5cdEBpbmNsdWRlIF9vVHlwb2dyYXBoeUZvcihcblx0XHQkX28tdHlwb2dyYXBoeS1kaXNwbGF5LFxuXHRcdCRzY2FsZSxcblx0XHQkbGluZS1oZWlnaHQsXG5cdFx0JHdlaWdodCxcblx0XHQkc3R5bGUsXG5cdFx0JGluY2x1ZGUtZm9udC1mYW1pbHksXG5cdFx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmVcblx0KTtcbn1cblxuLy8vIE91dHB1dHMgdHlwb2dyYXBoeSBzdHlsZXMgZm9yIHRoZSBTYW5zIGZvbnQuXG4vLy8gSW5jbHVkaW5nOiBmYW1pbHksIHNpemUsIGxpbmUtaGVpZ2h0LCB3ZWlnaHQsIHN0eWxlLCBhbmQgZm9udCBzaXplc1xuLy8vIGZvciBwcm9ncmVzc2l2ZSBmb250IGxvYWRpbmcuXG4vLy9cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBhIGZvbnQtZmFtaWx5IHByb3BlcnR5IG9ubHkgZm9yIHRoZSBzYW5zIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzYW5zIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxKTtcbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCBmb250LWZhbWlseSwgZm9udC1zaXplLCBhbmQgbGluZS1oZWlnaHQgZm9yIHRoZSBzYW5zIGZvbnQuIFNldCBhIGN1c3RvbSBsaW5lLWhlaWdodCBvZiAxLjYuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxLCAkbGluZS1oZWlnaHQ6IDEuNik7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXdlaWdodCBmb3IgdGhlIHNhbnMgZm9udC5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICR3ZWlnaHQ6ICdib2xkJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgZm9udC1mYW1pbHksIGZvbnQtc2l6ZSwgbGluZS1oZWlnaHQsIGFuZCBmb250LXN0eWxlIGZvciB0aGUgc2FucyBmb250LlxuLy8vIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJHN0eWxlOiAnaXRhbGljJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgc2FucyBmb250IHByb3BlcnRpZXMgd2l0aG91dCBmb250LWZhbWlseS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgc2FucyBmb250IHByb3BlcnRpZXMgd2l0aG91dCBzaXplcyBmb3IgdGhlIGZhbGxiYWNrIGZvbnQgKHdpdGhvdXQgcHJvZ3Jlc3NpdmUgZm9udCBsb2FkaW5nKS5cbi8vLyBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkc2NhbGU6IDEsICRzdHlsZTogJ2l0YWxpYycsICRpbmNsdWRlLXByb2dyZXNzaXZlOiBmYWxzZSk7XG4vLy9cbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRzY2FsZSBbbnVsbF0gLSBhIHNjYWxlIG51bWJlciB0byBvdXRwdXQgYSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtOdWxsIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgW251bGxdIC0gY3VzdG9tIGxpbmUtaGVpZ2h0IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzY2FsZSdzIGRlZmF1bHRcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICR3ZWlnaHQgW251bGxdIC0gb3V0cHV0IGEgZm9udC13ZWlnaHQgcHJvcGVydHksIGUuZy4gJ2JvbGQnLCAnc2VtaWJvbGQnXG4vLy8gQHBhcmFtIHtOdWxsIHwgU3RyaW5nfSAkc3R5bGUgW251bGxdIC0gb3V0cHV0IGEgZm9udC1zdHlsZSBwcm9wZXJ0eSwgZS5nLiAnaXRhbGljJ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtZm9udC1mYW1pbHkgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGZyb20gdGhlIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXNpemluZyB0eXBvZ3JhcGh5LCB3aGVyZSB0aGUgc2FucyBmb250LWZhbWlseSBpcyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudCBlbGVtZW50LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtcHJvZ3Jlc3NpdmUgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgc3R5bGVzIHVzZWQgZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZyAoZm9udC1mYW1pbHkgYW5kIHNpemUgZmFsbGJhY2tzIGZvciBsb2FkaW5nIGZvbnRzKS5cbkBtaXhpbiBvVHlwb2dyYXBoeVNhbnMoXG5cdCRzY2FsZTogbnVsbCxcblx0JGxpbmUtaGVpZ2h0OiBudWxsLFxuXHQkd2VpZ2h0OiBudWxsLFxuXHQkc3R5bGU6IG51bGwsXG5cdCRpbmNsdWRlLWZvbnQtZmFtaWx5OiB0cnVlLFxuXHQkaW5jbHVkZS1wcm9ncmVzc2l2ZTogJG8tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWxvYWRpbmdcbikge1xuXHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlGb3IoXG5cdFx0JF9vLXR5cG9ncmFwaHktc2Fucyxcblx0XHQkc2NhbGUsXG5cdFx0JGxpbmUtaGVpZ2h0LFxuXHRcdCR3ZWlnaHQsXG5cdFx0JHN0eWxlLFxuXHRcdCRpbmNsdWRlLWZvbnQtZmFtaWx5LFxuXHRcdCRpbmNsdWRlLXByb2dyZXNzaXZlXG5cdCk7XG59XG5cbi8vLyBTZXQgYSBjdXN0b20gZm9udC5cbi8vL1xuLy8vIEBleGFtcGxlIFRoaXMgZXhhbXBsZSBzaG93cyBzZXR0aW5nIGEgY3VzdG9tIGZvbnQgXCJNeVNhbnNGb250XCIgYXMgdGhlIFwic2Fuc1wiIGZvbnQuXG4vLy8gXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNldEZvbnQoJHR5cGU6ICdzYW5zJywgJGZhbWlseTogJ015U2Fuc0ZvbnQsIHNhbnMnKTtcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHlwZSAtIE9uZSBvZiAnc2FucycsICdzZXJpZicsIG9yICdkaXNwbGF5Jy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZhbWlseSAtIFRoZSBmb250IGZhbWlseSB0byBzZXQuXG5AbWl4aW4gb1R5cG9ncmFwaHlTZXRGb250KCR0eXBlLCAkZmFtaWx5KSB7XG5cdCRmb250OiBvRm9udHNHZXRGb250RmFtaWx5V2l0aG91dEZhbGxiYWNrcygkZmFtaWx5KTtcblx0QGlmIG5vdCBvRm9udHNWYXJpYW50RXhpc3RzKCRmb250LCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwpIHtcblx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBzZXQgdGhlIGZvbnQgZmFtaWx5IFwiI3skZmFtaWx5fVwiIGFzIFwiI3skZm9udH1cIiBkb2VzIG5vdCBleGlzdCBpbiBcIm8tZm9udHNcIi4gSWYgeW91IGFyZSBzZXR0aW5nIGEgY3VzdG9tIGZvbnQsIGZpcnN0IHJlZ2lzdGVyIHlvdXIgY3VzdG9tIGZvbnQgd2l0aCBvLWZvbnRzIChodHRwczovL3JlZ2lzdHJ5Lm9yaWdhbWkuZnQuY29tL2NvbXBvbmVudHMvby1mb250cykuJztcblx0fVxuXHRAaWYgbm90IGluZGV4KCRfby10eXBvZ3JhcGh5LXR5cGVzLCAkdHlwZSkge1xuXHRcdEBlcnJvciAnQ291bGQgbm90IHNldCBmb250LWZhbWlseSBcIiN7JGZhbWlseX1cIiBmb3IgZmFtaWx5IHN0eWxlIFwiI3skdHlwZX1cIiwgZmFtaWx5IHN0eWxlIG11c3QgYmUgb25lIG9mIFwiI3skX28tdHlwb2dyYXBoeS10eXBlc31cIi4nO1xuXHR9XG5cdC8vIFNldCB0aGUgY3VzdG9tIGZvbnQuXG5cdEBpZiAkdHlwZSA9PSAnc2Fucycge1xuXHRcdCRfby10eXBvZ3JhcGh5LXNhbnM6ICRmYW1pbHkgIWdsb2JhbDtcblx0fVxuXHRAaWYgJHR5cGUgPT0gJ3NlcmlmJyB7XG5cdFx0JF9vLXR5cG9ncmFwaHktc2VyaWY6ICRmYW1pbHkgIWdsb2JhbDtcblx0fVxuXHRAaWYgJHR5cGUgPT0gJ2Rpc3BsYXknIHtcblx0XHQkX28tdHlwb2dyYXBoeS1kaXNwbGF5OiAkZmFtaWx5ICFnbG9iYWw7XG5cdH1cbn1cblxuLy8vIERlZmluZSB0aGUgdHlwb2dyYXBoaWMgc2NhbGUgZm9yIGEgZ2l2ZW4gZm9udC4gVGhlIGZvbnQgbWF5IGJlIGFuIGV4aXN0aW5nIG9yIGN1c3RvbSBmb250LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZmFtaWx5IC0gVGhlIGZvbnQgbmFtZSBvciBmYW1pbHkgdG8gYXBwbHkgYSBzY2FsZSB0by5cbi8vLyBAcGFyYW0ge01hcH0gJHNjYWxlIC0gQSBtYXAgb2Ygc2NhbGUgbnVtYmVycyBhcyBrZXlzICgtMiB0byAxMCksIHdpdGggbGlzdCB2YWx1ZXMgb2YgZm9udCBzaXplIGFuZCBsaW5lIGhlaWdodCBcIigtMjogKDEyLCAxNiksIC0xOiAoMTQsIDE2KSwgMDogKDE2LCAyMCkpXCIgZXRjLi4uXG4vLy8gQGV4YW1wbGUgVGhpcyBleGFtcGxlIHNob3dzIGRlZmluaW5nIGEgY3VzdG9tIGZvbnQgc2NhbGUgZm9yIGEgY3VzdG9tIGZvbnQgXCJNeVNhbnNGb250XCIuIEF0IHNjYWxlIFwiMFwiIHRoZSBmb250IHNpemUgd2lsbCBiZSAxNnB4LCBhbmQgdGhlIGxpbmUtaGVpZ2h0IDIwcHguXG4vLy9cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlEZWZpbmVGb250U2NhbGUoJGZhbWlseTogJ015U2Fuc0ZvbnQsIHNhbnMnLCAoXG4vLy9cdFx0ICAgLTI6ICgxMiwgMTYpLFxuLy8vXHRcdCAgIC0xOiAoMTQsIDE4KSxcbi8vL1x0XHQgICAgMDogKDE2LCAyMCksXG4vLy9cdFx0ICAgIDE6ICgxOCwgMjQpLFxuLy8vXHRcdCAgICAyOiAoMjAsIDI2KSxcbi8vL1x0XHQgICAgMzogKDI0LCAzMiksXG4vLy9cdFx0ICAgIDQ6ICgyOCwgMzYpLFxuLy8vXHRcdCAgICA1OiAoMzIsIDQyKSxcbi8vL1x0XHQgICAgNjogKDQwLCA1MiksXG4vLy9cdFx0ICAgIDc6ICg0OCwgNjIpLFxuLy8vXHRcdCAgICA4OiAoNTYsIDcyKSxcbi8vL1x0XHQgICAgOTogKDcyLCA5NCksXG4vLy9cdFx0ICAgMTA6ICg4NCwgMTEwKVxuLy8vXHRcdCkpO1xuQG1peGluIG9UeXBvZ3JhcGh5RGVmaW5lRm9udFNjYWxlKCRmYW1pbHksICRzY2FsZSkge1xuXHRAaWYgdHlwZS1vZigkc2NhbGUpICE9ICdtYXAnIHtcblx0XHRAZXJyb3IgJ0NvdWxkIG5vdCBzZXQgdGhlIHNjYWxlIGZvciBmb250IFwiI3skZmFtaWx5fVwiLCBleHBlY3RlZCB0aGUgc2NhbGUgdG8gYmUgYSBtYXAgYnV0IGZvdW5kIFwiI3skc2NhbGV9XCIsIG9mIHR5cGUgXCIje3R5cGUtb2YoJHNjYWxlKX1cIi4nO1xuXHR9XG5cdEBlYWNoICRzY2FsZS1udW1iZXIsICRzY2FsZS1pdGVtIGluICRzY2FsZSB7XG5cdFx0QGlmIHR5cGUtb2YoJHNjYWxlLWl0ZW0pICE9ICdsaXN0JyBvciBsZW5ndGgoJHNjYWxlLWl0ZW0pICE9IDIge1xuXHRcdFx0QGVycm9yICdFeHBlY3RlZCBlYWNoIGl0ZW0gaW4gdGhlIHNjYWxlIHRvIGJlIGEgbGlzdCB3aXRoIHR3byBpdGVtcywgdGhlIGZvbnQgc2l6ZSBmb2xsb3dlZCBieSB0aGUgbGluZSBoZWlnaHQuJztcblx0XHR9XG5cdH1cblx0QGlmIG1hcC1rZXlzKCRzY2FsZSkgIT0gKC0yLCAtMSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTApIHtcblx0XHRAZXJyb3IgJ0V4cGVjdGVkIHRoZSBzY2FsZSBmb3IgZm9udCBcIiN7JGZhbWlseX1cIiB0byBjb250YWluIHZhbHVlcyBmb3Igc2NhbGVzIC0yIHRvIDEwLCBidXQgZm91bmQgc2NhbGVzIFwiI3ttYXAta2V5cygkc2NhbGUpfVwiLic7XG5cdH1cblx0JGZhbWlseTogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZhbWlseSk7XG5cdCRfby10eXBvZ3JhcGh5LWZvbnQtc2NhbGUtYnktZm9udDogbWFwLW1lcmdlKCgkZmFtaWx5OiAkc2NhbGUpLCAkX28tdHlwb2dyYXBoeS1mb250LXNjYWxlLWJ5LWZvbnQpICFnbG9iYWw7XG59XG5cbi8vLyBPdXRwdXQgYSB0eXBvZ3JhcGh5IGZvciBmb250XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250IC0gVGhlIGZvbnQgdG8gb3V0cHV0IHR5cG9ncmFwaHkgZm9yLlxuLy8vIEBwYXJhbSB7TnVsbCB8IE51bWJlcn0gJHNjYWxlIFtudWxsXSAtIGEgc2NhbGUgbnVtYmVyIHRvIG91dHB1dCBhIGZvbnQtc2l6ZSBhbmQgbGluZS1oZWlnaHQgcHJvcGVydHlcbi8vLyBAcGFyYW0ge051bGwgfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBbbnVsbF0gLSBjdXN0b20gbGluZS1oZWlnaHQgdmFsdWUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIHNjYWxlJ3MgZGVmYXVsdFxuLy8vIEBwYXJhbSB7TnVsbCB8IFN0cmluZ30gJHdlaWdodCBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXdlaWdodCBwcm9wZXJ0eSwgZS5nLiAnYm9sZCcsICdzZW1pYm9sZCdcbi8vLyBAcGFyYW0ge051bGwgfCBTdHJpbmd9ICRzdHlsZSBbbnVsbF0gLSBvdXRwdXQgYSBmb250LXN0eWxlIHByb3BlcnR5LCBlLmcuICdpdGFsaWMnXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1mb250LWZhbWlseSBbdHJ1ZV0gLSBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSB0aGUgZm9udC1mYW1pbHkgcHJvcGVydHkgZnJvbSB0aGUgb3V0cHV0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHJlc2l6aW5nIHR5cG9ncmFwaHksIHdoZXJlIHRoZSBnaXZlbiBmb250LWZhbWlseSBpcyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudCBlbGVtZW50LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtcHJvZ3Jlc3NpdmUgW3RydWVdIC0gU2V0IHRvIGZhbHNlIHRvIGV4Y2x1ZGUgc3R5bGVzIHVzZWQgZm9yIHByb2dyZXNzaXZlIGZvbnQgbG9hZGluZyAoZm9udC1mYW1pbHkgYW5kIHNpemUgZmFsbGJhY2tzIGZvciBsb2FkaW5nIGZvbnRzKS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb1R5cG9ncmFwaHlGb3IoXG5cdCRmb250LFxuXHQkc2NhbGUsXG5cdCRsaW5lLWhlaWdodCxcblx0JHdlaWdodCxcblx0JHN0eWxlLFxuXHQkaW5jbHVkZS1mb250LWZhbWlseSxcblx0JGluY2x1ZGUtcHJvZ3Jlc3NpdmVcbikge1xuXHQvLyBDaGVjayBmb250IHZhcmlhbnQgaXMgc3VwcG9ydGVkLlxuXHQkZm9udC13aXRob3V0LWZhbGxiYWNrczogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZvbnQpO1xuXHQkdmFyaWFudC1leGlzdHM6IG9Gb250c1ZhcmlhbnRFeGlzdHMoJGZvbnQtd2l0aG91dC1mYWxsYmFja3MsICR3ZWlnaHQsICRzdHlsZSk7XG5cdEBpZiBub3QgJHZhcmlhbnQtZXhpc3RzIHtcblx0XHRAZXJyb3IgJ0ZvbnQgZmFtaWx5IFwiI3skZm9udC13aXRob3V0LWZhbGxiYWNrc31cIiBvZiB3ZWlnaHQgJyArXG5cdFx0XHQnXCIje2lmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyl9XCIgYW5kIHN0eWxlICcgK1xuXHRcdFx0J1wiI3tpZigkc3R5bGUsICRzdHlsZSwgJ25vcm1hbCcpfVwiIGlzIG5vdCBzdXBwb3J0ZWQuJztcblx0fVxuXG5cdC8vIENoZWNrIGZvbnQgdmFyaWFudCBoYXMgYmVlbiBpbmNsdWRlZCwgYW5kIGVycm9yIGlmIGFuIGVycm9yIG1lc3NhZ2Vcblx0Ly8gaGFzIGJlZW4gc2V0IGJ5IHRoZSB1c2VyLlxuXHQkdmFyaWFudC1pbmNsdWRlZDogb0ZvbnRzVmFyaWFudEluY2x1ZGVkKCRmb250LXdpdGhvdXQtZmFsbGJhY2tzLCAkd2VpZ2h0LCAkc3R5bGUpO1xuXHRAaWYgbm90ICR2YXJpYW50LWluY2x1ZGVkIGFuZCB0eXBlLW9mKCRvLXR5cG9ncmFwaHktZXJyb3ItZm9yLW1pc3NpbmctZm9udHMpID09ICdzdHJpbmcnIHtcblx0XHRAZXJyb3IgJ1RoZSBmb250IGZhY2UgZm9yIGZvbnQgZmFtaWx5IFwiI3skZm9udC13aXRob3V0LWZhbGxiYWNrc31cIiBvZiAnICtcblx0XHRcdCd3ZWlnaHQgXCIje2lmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyl9XCIgYW5kIHN0eWxlICcgK1xuXHRcdFx0J1wiI3tpZigkc3R5bGUsICRzdHlsZSwgJ25vcm1hbCcpfVwiIGhhcyBub3QgYmVlbiBpbmNsdWRlZCBpbiB5b3VyICcgK1xuXHRcdFx0J3Byb2plY3QuICN7aW5zcGVjdCgkby10eXBvZ3JhcGh5LWVycm9yLWZvci1taXNzaW5nLWZvbnRzKX0nO1xuXHR9XG5cblx0QGlmICRpbmNsdWRlLWZvbnQtZmFtaWx5IHtcblx0XHRmb250LWZhbWlseTogaWYodHlwZS1vZigkZm9udCkgPT0gJ3N0cmluZycsIHVucXVvdGUoJGZvbnQpLCAkZm9udCk7XG5cdH1cblxuXHRAaWYgJHNjYWxlIHtcblx0XHRAaW5jbHVkZSBfb1R5cG9ncmFwaHlTaXplKCRzY2FsZTogJHNjYWxlLCAkbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodCwgJGZvbnQ6ICRmb250KTtcblx0fSBAZWxzZSBpZiAkbGluZS1oZWlnaHQge1xuXHRcdGxpbmUtaGVpZ2h0OiBfb1R5cG9ncmFwaHlBZGp1c3RVbml0KCRsaW5lLWhlaWdodCk7XG5cdH1cblxuXHRAaWYgJHdlaWdodCB7XG5cdFx0Zm9udC13ZWlnaHQ6IG9Gb250c1dlaWdodCgkd2VpZ2h0KTtcblx0fVxuXG5cdEBpZiAkc3R5bGUge1xuXHRcdGZvbnQtc3R5bGU6IHVucXVvdGUoJHN0eWxlKTtcblx0fVxuXG5cdEBpZiAkaW5jbHVkZS1wcm9ncmVzc2l2ZSB7XG5cdFx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5UHJvZ3Jlc3NpdmVGb250RmFsbGJhY2soJGZvbnQsICRzY2FsZSwgJHdlaWdodCwgJHN0eWxlLCAkaW5jbHVkZS1mb250LWZhbWlseSk7XG5cdH1cbn1cblxuLy8vIE91dHB1dHMgdGhlIGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgYmFzZWQgb24gdGhlIHNjYWxlLCBhbHNvXG4vLy8gYWNjZXB0cyBhbiBvdmVycmlkZSBsaW5lLWhlaWdodCB0byBvdXRwdXQgYW5kIGEgZm9udCBhZGp1c3RtZW50XG4vLy8gcGFyYW1ldGVyIGZvciB3aGVuIG91dHB1dHRpbmcgc3R5bGVzIGZvciBwcm9ncmVzc2l2ZWx5IGxvYWRlZCBmb250c1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSBudW1iZXIgb24gc2NhbGUgdGhlIHNpemVzIGFyZSBiYXNlZCBvblxuLy8vIEBwYXJhbSB7Qm9vbGVhbiB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IHNpemUgdG8gb3ZlcnJpZGUgdGhlIGxpbmUtaGVpZ2h0IHByb3BlcnR5XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250IFsnJ10gLSBUaGUgZm9udCB0byBnZXQgdGhlIGZvbnQgc2l6ZSBmb3IsIGFzIGZvbnRzIG1heSBoYXZlIGRpZmZlcmVudCBzY2FsZXMuIFVzZXMgdGhlIGRlZmF1bHQgc2NhbGUgaWYgbm90IHNwZWNpZmllZC5cbkBtaXhpbiBfb1R5cG9ncmFwaHlTaXplKCRzY2FsZSwgJGxpbmUtaGVpZ2h0OiBmYWxzZSwgJGZvbnQ6ICcnKSB7XG5cdEBpZiB0eXBlLW9mKCRzY2FsZSkgPT0gbWFwIHtcblx0XHRAZWFjaCAkYnJlYWtwb2ludCwgJHNjYWxlIGluICRzY2FsZSB7XG5cdFx0XHQkY3VycmVudC1saW5lLWhlaWdodDogaWYobGVuZ3RoKCRzY2FsZSkgPT0gMiwgbnRoKCRzY2FsZSwgMiksICRsaW5lLWhlaWdodCk7XG5cdFx0XHQkY3VycmVudC1zY2FsZTogaWYodHlwZS1vZigkc2NhbGUpID09IGxpc3QgYW5kIGxlbmd0aCgkc2NhbGUpICE9IDAsIG50aCgkc2NhbGUsIDEpLCAkc2NhbGUpO1xuXG5cdFx0XHRAaWYgJGJyZWFrcG9pbnQgPT0gJ2RlZmF1bHQnIGFuZCAkY3VycmVudC1zY2FsZSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJGN1cnJlbnQtc2NhbGUsIDEsICRmb250KTtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IF9vVHlwb2dyYXBoeUxpbmVIZWlnaHRGcm9tU2NhbGUoJGN1cnJlbnQtc2NhbGUsICRjdXJyZW50LWxpbmUtaGVpZ2h0LCAkZm9udCk7XG5cdFx0XHR9XG5cblx0XHRcdEBpZiAkYnJlYWtwb2ludCAhPSAnZGVmYXVsdCcgYW5kICRjdXJyZW50LXNjYWxlIHtcblx0XHRcdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGJyZWFrcG9pbnQpIHtcblx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKCRjdXJyZW50LXNjYWxlLCAxLCAkZm9udCk7XG5cdFx0XHRcdFx0bGluZS1oZWlnaHQ6IF9vVHlwb2dyYXBoeUxpbmVIZWlnaHRGcm9tU2NhbGUoJGN1cnJlbnQtc2NhbGUsICRjdXJyZW50LWxpbmUtaGVpZ2h0LCAkZm9udCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJHNjYWxlLCAxLCAkZm9udCk7XG5cdFx0bGluZS1oZWlnaHQ6IF9vVHlwb2dyYXBoeUxpbmVIZWlnaHRGcm9tU2NhbGUoJHNjYWxlLCAkbGluZS1oZWlnaHQsICRmb250KTtcblx0fVxufVxuXG4vLy8gT3V0cHV0cyB0aGUgcHJvZ3Jlc3NpdmUgZm9udCBmYWxsYmFjayBzdHlsZXMgYmFzZWQgb25cbi8vLyBmb250IGFuZCBzY2FsZSBpZiB0aGUgZm9udCBoYXMgZmFsbGJhY2sgc2V0dGluZ3Ncbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCAtIEZvbnQgdG8gb3V0cHV0IGZhbGxiYWNrIHN0eWxlcyBmb3IgKG9yIC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNjYWxlIC0gTnVtYmVyIG9uIHNjYWxlIHRoZSBzaXplIGlzIGJhc2VkIG9uLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkd2VpZ2h0IFtudWxsXSAtIFRoZSB3ZWlnaHQgb2YgdGhlIGZvbnQgd2hpY2ggbmVlZHMgYSBmYWxsYmFjayBlLmcuICdib2xkJy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0eWxlIFtudWxsXSAtIFRoZSBzdHlsZSBvZiB0aGUgZm9udCB3aGljaCBuZWVkcyBhIGZhbGxiYWNrIGUuZy4gJ2l0YWxpYycuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1mb250LWZhbWlseSBbdHJ1ZV0gLSBXaGV0aGVyIHRvIG91dHB1dCB0aGUgZm9udCBmYW1pbHkgb2YgdGhlIGZhbGxiYWNrIGZvbnQgKHZzLiBqdXN0IHRoZSBzaXplKVxuQG1peGluIF9vVHlwb2dyYXBoeVByb2dyZXNzaXZlRm9udEZhbGxiYWNrKCRmb250LCAkc2NhbGUsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGluY2x1ZGUtZm9udC1mYW1pbHk6IHRydWUpIHtcblx0QGlmIG5vdCAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZyB7XG5cdFx0QGVycm9yICdQcm9ncmVzc2l2ZSBmb250IGZhbGxiYWNrcyBhcmUgZGlzYWJsZWQuJyArXG5cdFx0XHQnSWYgeW91IGFyZSBzdXJlIHlvdSB3YW50IHRvIG91dHB1dCBwcm9ncmVzc2l2ZSBmb250IGZhbGxiYWNrcyBpbiAnICtcblx0XHRcdCd5b3VyIHByb2plY3Qgc2V0IGAkby10eXBvZ3JhcGh5LXByb2dyZXNzaXZlLWZvbnQtbG9hZGluZzogdHJ1ZTtgICcgK1xuXHRcdFx0J2F0IHRoZSB0b3Agb2YgeW91ciBwcm9qZWN0LCBiZWZvcmUgaW1wb3J0aW5nIFNhc3MgZmlsZXMuICcgK1xuXHRcdFx0J1NlZSB0aGUgUkVBRE1FIGZvciBkZXRhaWxzIGFuZCBtb3JlIG9wdGlvbnMgb3IgY29udGFjdCB0aGUgT3JpZ2FtaSB0ZWFtLic7XG5cdH1cblx0QGlmICRzY2FsZSB7XG5cdFx0Ly8gSWYgZmFsc3kgd2VpZ2h0L3N0eWxlIGRlZmF1bHQgdG8gcmVndWxhci9ub3JtYWwuXG5cdFx0JHdlaWdodDogaWYoJHdlaWdodCwgJHdlaWdodCwgJ3JlZ3VsYXInKTtcblx0XHQkc3R5bGU6IGlmKCRzdHlsZSwgJHN0eWxlLCAnbm9ybWFsJyk7XG5cdFx0Ly8gRmluZCBmYWxsYmFjayBjb25maWcgZm9yIGZvbnQsIHdlaWdodCwgYW5kIHN0eWxlLlxuXHRcdEBlYWNoICRmYWxsYmFjayBpbiAkX28tdHlwb2dyYXBoeS1wcm9ncmVzc2l2ZS1mb250LWZhbGxiYWNrcyB7XG5cdFx0XHQvLyBHZXQgZmFsbGJhY2sgcHJvcGVydGllcy5cblx0XHRcdCRmYWxsYmFjay1mYW1pbHk6IG1hcC1nZXQoJGZhbGxiYWNrLCAnZmFtaWx5Jyk7XG5cdFx0XHQkZmFsbGJhY2stbGFiZWw6IG1hcC1nZXQoJGZhbGxiYWNrLCAnbGFiZWwnKTtcblx0XHRcdC8vIE1hdGNoIHJlZ3VsYXIgYnkgZGVmYXVsdC5cblx0XHRcdCRmYWxsYmFjay13ZWlnaHQ6IG1hcC1nZXQoJGZhbGxiYWNrLCAnd2VpZ2h0Jyk7XG5cdFx0XHQkZmFsbGJhY2std2VpZ2h0OiBpZigkZmFsbGJhY2std2VpZ2h0LCAkZmFsbGJhY2std2VpZ2h0LCAoJ3JlZ3VsYXInKSk7XG5cdFx0XHQvLyBNYXRjaCBub3JtYWwgYnkgZGVmYXVsdC5cblx0XHRcdCRmYWxsYmFjay1zdHlsZTogbWFwLWdldCgkZmFsbGJhY2ssICdzdHlsZScpO1xuXHRcdFx0JGZhbGxiYWNrLXN0eWxlOiBpZigkZmFsbGJhY2stc3R5bGUsICRmYWxsYmFjay1zdHlsZSwgKCdub3JtYWwnKSk7XG5cdFx0XHQkZmFsbGJhY2stc2NhbGU6IG1hcC1nZXQoJGZhbGxiYWNrLCAnZmFsbGJhY2stc2NhbGUnKTtcblx0XHRcdC8vIENoZWNrIGlmIGZhbGxiYWNrIGlzIGZvciB0aGUgZ2l2ZW4gZm9udCwgd2VpZ2h0LCBhbmQgc3R5bGUuO1xuXHRcdFx0JGxhYmVsLW1hdGNoOiAkZmFsbGJhY2stbGFiZWwgPT0gb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZvbnQpOyAvLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuXHRcdFx0JGZhbWlseS1tYXRjaDogb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZhbGxiYWNrLWZhbWlseSkgPT0gb0ZvbnRzR2V0Rm9udEZhbWlseVdpdGhvdXRGYWxsYmFja3MoJGZvbnQpO1xuXHRcdFx0JHdlaWdodC1tYXRjaDogaW5kZXgoJGZhbGxiYWNrLXdlaWdodCwgJHdlaWdodCk7XG5cdFx0XHQkc3R5bGUtbWF0Y2g6IGlmKCRmYWxsYmFjay1zdHlsZSwgaW5kZXgoJGZhbGxiYWNrLXN0eWxlLCAkc3R5bGUpLCB0cnVlKTtcblx0XHRcdC8vIE91dHB1dCB0aGUgZmFsbGJhY2sgaWYgaXQgbWF0Y2hlcy5cblx0XHRcdEBpZiAoJGxhYmVsLW1hdGNoIG9yICgkZmFtaWx5LW1hdGNoIGFuZCAkd2VpZ2h0LW1hdGNoIGFuZCAkc3R5bGUtbWF0Y2gpKSB7XG5cdFx0XHRcdC4jeyRfby10eXBvZ3JhcGh5LWxvYWRpbmctcHJlZml4fS0jeyRmYWxsYmFjay1sYWJlbH0gJiB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgX29UeXBvZ3JhcGh5Rm9udFNpemUoJHNjYWxlOiAkc2NhbGUsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdDogJGZhbGxiYWNrLXNjYWxlLCAkZm9udDogJGZhbGxiYWNrLWZhbWlseSk7XG5cdFx0XHRcdFx0QGlmICRpbmNsdWRlLWZvbnQtZmFtaWx5IHtcblx0XHRcdFx0XHRcdGZvbnQtZmFtaWx5OiBtYXAtZ2V0KCRmYWxsYmFjaywgJ2ZhbGxiYWNrJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBPdXRwdXRzIHRoZSBmb250IHNpemUgYmFzZWQgb24gdGhlIHNjYWxlLCBhbHNvIGFjY2VwdHMgYSBmb250IGFkanVzdG1lbnRcbi8vLyBwYXJhbWV0ZXIgZm9yIHdoZW4gb3V0cHV0dGluZyBzdHlsZXMgZm9yIHByb2dyZXNzaXZlbHkgbG9hZGVkIGZvbnRzXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNjYWxlIC0gTnVtYmVyIG9uIHNjYWxlIHRoZSBzaXplcyBhcmUgYmFzZWQgb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCAtIE11bHRpcGxpZXIgZm9yIGZvbnQtc2l6ZSBhZGp1c3RtZW50cywgd2hlbiBhZGRpbmcgc3R5bGVzIGZvciBwcm9ncmVzc2l2ZWx5IGxvYWRlZCBmb250LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udCBbJyddIC0gVGhlIGZvbnQgdG8gZ2V0IHRoZSBmb250IHNpemUgZm9yLCBhcyBmb250cyBtYXkgaGF2ZSBkaWZmZXJlbnQgc2NhbGVzLiBVc2VzIHRoZSBkZWZhdWx0IHNjYWxlIGlmIG5vdCBzcGVjaWZpZWQuXG5AbWl4aW4gX29UeXBvZ3JhcGh5Rm9udFNpemUoJHNjYWxlLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3Q6IDEsICRmb250OiAnJykge1xuXHRAaWYgdHlwZS1vZigkc2NhbGUpID09IG1hcCB7XG5cdFx0QGVhY2ggJGJyZWFrcG9pbnQsICRudW1iZXIgaW4gJHNjYWxlIHtcblx0XHRcdEBpZiAkYnJlYWtwb2ludCA9PSAnZGVmYXVsdCcge1xuXHRcdFx0XHRAaWYgdHlwZS1vZigkbnVtYmVyKSA9PSBsaXN0IHtcblx0XHRcdFx0XHRmb250LXNpemU6IF9vVHlwb2dyYXBoeUZvbnRTaXplRnJvbVNjYWxlKG50aCgkbnVtYmVyLCAxKSwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogX29UeXBvZ3JhcGh5Rm9udFNpemVGcm9tU2NhbGUoJG51bWJlciwgJHByb2dyZXNzaXZlLWZvbnQtYWRqdXN0LCAkZm9udCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gQGVsc2UgaWYoJG51bWJlcikge1xuXHRcdFx0XHRAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkYnJlYWtwb2ludCkge1xuXHRcdFx0XHRcdEBpZiB0eXBlLW9mKCRudW1iZXIpID09IGxpc3Qge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZShudGgoJG51bWJlciwgMSksICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHRcdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkbnVtYmVyLCAkcHJvZ3Jlc3NpdmUtZm9udC1hZGp1c3QsICRmb250KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0Zm9udC1zaXplOiBfb1R5cG9ncmFwaHlGb250U2l6ZUZyb21TY2FsZSgkc2NhbGUsICRwcm9ncmVzc2l2ZS1mb250LWFkanVzdCwgJGZvbnQpO1xuXHR9XG59XG4iLCIvLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQG91dHB1dCBTaGFyZWQgYmFzZSBzdGF0ZSBzdHlsZXMgZm9yIGFsbCBmb3JtIGVsZW1lbnRzLlxuQG1peGluIF9vRm9ybXNCYXNlKCkge1xuXHRAaW5jbHVkZSBfb0Zvcm1zVmFsaWRpdHlTdGF0ZXMoKTtcblxuXHQuby1mb3Jtcy1maWVsZCxcblx0Lm8tZm9ybXMtdGl0bGUsXG5cdC5vLWZvcm1zLWlucHV0IHtcblx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoMCk7XG5cdH1cblxuXHQuby1mb3Jtcy1maWVsZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdG1hcmdpbi1ib3R0b206ICRfby1mb3Jtcy1zcGFjaW5nLXNpeDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRsYWJlbCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbjogMCAwICRfby1mb3Jtcy1zcGFjaW5nLXRocmVlO1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdH1cblxuXHRcdGxhYmVsOmxhc3Qtb2YtdHlwZSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5vLWZvcm1zLWZpZWxkLS1vcHRpb25hbCAuby1mb3Jtcy10aXRsZV9fbWFpbjphZnRlciB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogLTEsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG5cdFx0Y29udGVudDogJyhvcHRpb25hbCknO1xuXHRcdGNvbG9yOiBfb0Zvcm1zR2V0KCdkZWZhdWx0LXByb21wdC10ZXh0Jyk7XG5cdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRtYXJnaW4tbGVmdDogJF9vLWZvcm1zLXNwYWNpbmctb25lO1xuXHR9XG5cblx0Lm8tZm9ybXMtdGl0bGVfX21haW4ge1xuXHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucygkd2VpZ2h0OiAnc2VtaWJvbGQnLCAkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2UpO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0Lm8tZm9ybXMtdGl0bGVfX3Byb21wdCB7XG5cdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogLTEsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG5cdFx0Y29sb3I6IF9vRm9ybXNHZXQoJ2RlZmF1bHQtcHJvbXB0LXRleHQnKTtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG5cdC5vLWZvcm1zLWlucHV0IHtcblx0XHRtYXJnaW4tdG9wOiAkX28tZm9ybXMtc3BhY2luZy10aHJlZTtcblx0XHQvLyByZW1vdmUgZGVmYXVsdCBicm93c2VyIHN0eWxlc1xuXHRcdGlucHV0IHtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0XHRhcHBlYXJhbmNlOiBub25lO1xuXHRcdH1cblx0fVxufVxuIiwiJG8tZm9ybXMtaXMtc2lsZW50OiB0cnVlICFkZWZhdWx0O1xuXG4kX28tZm9ybXMtYm9yZGVyOiAxcHggc29saWQgX29Gb3Jtc0dldCgnZGVmYXVsdC1ib3JkZXInKTtcblxuJF9vLWZvcm1zLXNwYWNpbmctaGFsZjogZGl2KG9TcGFjaW5nQnlJbmNyZW1lbnQoMSksIDIpOyAvLzJweFxuJF9vLWZvcm1zLXNwYWNpbmctb25lOiBvU3BhY2luZ0J5SW5jcmVtZW50KDEpOyAvLyA0cHhcbiRfby1mb3Jtcy1zcGFjaW5nLXR3bzogb1NwYWNpbmdCeUluY3JlbWVudCgyKTsgLy8gOHB4XG4kX28tZm9ybXMtc3BhY2luZy10aHJlZTogb1NwYWNpbmdCeUluY3JlbWVudCgzKTsgLy8gMTJweFxuJF9vLWZvcm1zLXNwYWNpbmctZm91cjogb1NwYWNpbmdCeUluY3JlbWVudCg0KTsgLy8gMTZweFxuJF9vLWZvcm1zLXNwYWNpbmctZml2ZTogb1NwYWNpbmdCeUluY3JlbWVudCg1KTsgLy8gMjBweFxuJF9vLWZvcm1zLXNwYWNpbmctc2l4OiBvU3BhY2luZ0J5SW5jcmVtZW50KDYpOyAvLyAyNHB4ICYmIGNoZWNrYm94L3JhZGlvIHdpZHRoc1xuJF9vLWZvcm1zLXNwYWNpbmctc2V2ZW46IG9TcGFjaW5nQnlJbmNyZW1lbnQoNyk7IC8vIDI4cHhcbiRfby1mb3Jtcy1zcGFjaW5nLWVpZ2h0OiBvU3BhY2luZ0J5SW5jcmVtZW50KDgpOyAvLyAzMnB4XG4kX28tZm9ybXMtc3BhY2luZy1uaW5lOiBvU3BhY2luZ0J5SW5jcmVtZW50KDkpOyAvLyAzNnB4XG4kX28tZm9ybXMtc3BhY2luZy10ZW46IG9TcGFjaW5nQnlJbmNyZW1lbnQoMTApOyAvLyA0MHB4XG5cbiRfby1mb3Jtcy1zcGFjaW5nLWNvbnRyb2xzOiAkX28tZm9ybXMtc3BhY2luZy1uaW5lICsgJF9vLWZvcm1zLXNwYWNpbmctaGFsZjtcbiIsIi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRkaXNhYmxlZCBXaGV0aGVyIHRvIG91dHB1dCBkaXNhYmxlZCBzdGF0ZSBzdHlsaW5nXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkcmlnaHQgV2hldGhlciB0byBkaXNwbGF5IGNoZWNrYm94IHRvIHRoZSByaWdodCBvZiB0ZXh0XG4vLy8gQG91dHB1dCBTdHlsaW5nIGZvciB0ZXh0IGlucHV0c1xuQG1peGluIF9vRm9ybXNDaGVja2JveChcblx0JGRpc2FibGVkOiBudWxsLFxuXHQkcmlnaHQ6IG51bGxcbikge1xuXHQuby1mb3Jtcy1pbnB1dC0tY2hlY2tib3gge1xuXHRcdGlucHV0W3R5cGU9Y2hlY2tib3hdIHsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRcdEBpbmNsdWRlIF9vRm9ybXNDb250cm9sc0Jhc2UoJGRpc2FibGVkKTtcblxuXHRcdFx0Jjpmb2N1cyArIC5vLWZvcm1zLWlucHV0X19sYWJlbDpiZWZvcmUgeyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdFx0XHRib3JkZXItY29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ2ZvY3VzJywgJ291dGxpbmUnLCAkZmFsbGJhY2s6IG51bGwpO1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDAgMCAkX28tZm9ybXMtc3BhY2luZy1oYWxmIG9Db2xvcnNCeVVzZWNhc2UoJ2ZvY3VzJywgJ291dGxpbmUnLCAkZmFsbGJhY2s6IG51bGwpO1xuXHRcdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmluZGV0ZXJtaW5hdGUgKyAuby1mb3Jtcy1pbnB1dF9fbGFiZWw6YWZ0ZXIgeyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdFx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCdtaW51cycsIF9vRm9ybXNHZXQoJ2NvbnRyb2xzLWNoZWNrZWQtYmFzZScpLCAkX28tZm9ybXMtc3BhY2luZy1zaXgpO1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0Zvcm1zR2V0KCdjb250cm9scy1iYXNlJyk7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0QGlmICRyaWdodCB7XG5cdFx0XHQuby1mb3Jtcy1pbnB1dF9fcmlnaHQge1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cblx0XHRcdFx0aW5wdXRbdHlwZT1jaGVja2JveF0geyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdFx0XHRcdHJpZ2h0OiAwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC5vLWZvcm1zLWlucHV0X19sYWJlbCB7XG5cdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHRcdFx0XHRcdHBhZGRpbmctcmlnaHQ6ICRfby1mb3Jtcy1zcGFjaW5nLWNvbnRyb2xzO1xuXG5cdFx0XHRcdFx0JjpiZWZvcmUsXG5cdFx0XHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdFx0XHQvLyByaWdodDogMDtcblx0XHRcdFx0XHRcdGxlZnQ6IGNhbGMoMTAwJSAtICN7JF9vLWZvcm1zLXNwYWNpbmctc2l4fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lm8tZm9ybXMtaW5wdXRfX2xhYmVsIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdHBhZGRpbmc6ICRfby1mb3Jtcy1zcGFjaW5nLWhhbGYgMCAwICRfby1mb3Jtcy1zcGFjaW5nLWNvbnRyb2xzO1xuXHRcdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblxuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRAaW5jbHVkZSBfb0Zvcm1zQ29udHJvbHNQc2V1ZG9FbGVtZW50cygpO1xuXHRcdFx0XHRib3JkZXI6ICRfby1mb3Jtcy1ib3JkZXI7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IF9vRm9ybXNHZXQoJ2RlZmF1bHQtYmFja2dyb3VuZCcpO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0QGluY2x1ZGUgX29Gb3Jtc0NvbnRyb2xzUHNldWRvRWxlbWVudHMoKTtcblx0XHRcdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgndGljaycsIF9vRm9ybXNHZXQoJ2NvbnRyb2xzLWNoZWNrZWQtYmFzZScpLCAkX28tZm9ybXMtc3BhY2luZy1zaXgpO1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0Zvcm1zR2V0KCdjb250cm9scy1iYXNlJyk7XG5cdFx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC4xcyBlYXNlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyB0aGlzIGhhbmRsZXMgc3BhY2luZyBiZXR3ZWVuIHR3byBpbnB1dF9fbGFiZWwgc3BhbnMgZm9yIHRoZSBzYW1lIGlucHV0IGVsZW1lbnQsXG5cdFx0XHQvLyB3aGljaCBpcyBuZWNlc3NhcnkgaW4gdGhlIGNhc2Ugb2YgJ2FkZGl0aW9uYWwgY29udGVudCdcblx0XHRcdCYgKyAuby1mb3Jtcy1pbnB1dF9fbGFiZWwge1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogJF9vLWZvcm1zLXNwYWNpbmctdGhyZWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iLCIvLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQG91dHB1dCBTaGFyZWQgYmFzZSBzdHlsZXMgZm9yIGNoZWNrYm94ZXMsIHRvZ2dsZXMsIHJvdW5kLSBhbmQgYm94LXN0eWxlIHJhZGlvIGJ1dHRvbnMuXG5AbWl4aW4gX29Gb3Jtc0NvbnRyb2xzQmFzZSgkZGlzYWJsZWQ6IG51bGwpIHtcblx0Ly8gSGlkZSB2aXN1YWxseSB3aGlsZSByZW1haW5pbmcgYWNjZXNzaWJsZSB0byB2b2ljZSBjb250cm9sIGxpa2UgRHJhZ29uXG5cdC8vIERyYWdvbiByZXF1aXJlcyB0aGUgaW5wdXQgaXQgaXMgdHJ5aW5nIHRvIGNsaWNrIHRvIGJlIGFjdHVhbGx5IGNsaWNrYWJsZVxuXHR6LWluZGV4OiAxO1xuXHRvcGFjaXR5OiAwO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRwYWRkaW5nOiAwO1xuXHR3aWR0aDogJF9vLWZvcm1zLXNwYWNpbmctc2l4O1xuXHRoZWlnaHQ6ICRfby1mb3Jtcy1zcGFjaW5nLXNpeDtcblxuXHQmOmNoZWNrZWQgfiAuby1mb3Jtcy1pbnB1dF9fbGFiZWw6YWZ0ZXIge1xuXHRcdG9wYWNpdHk6IDE7XG5cdH1cblxuXHRAaWYgJGRpc2FibGVkIHtcblx0XHQmOmRpc2FibGVkIHtcblx0XHRcdG9wYWNpdHk6IDA7XG5cblx0XHRcdH4gLm8tZm9ybXMtaW5wdXRfX2xhYmVsIHtcblx0XHRcdFx0b3BhY2l0eTogMC40O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQG91dHB1dCBTaGFyZWQgcHNldWRvIGVsZW1lbnQgc3R5bGVzIGZvciBjaGVja2JveGVzLCB0b2dnbGUsIHJvdW5kLSBhbmQgYm94LXN0eWxlIHJhZGlvIGJ1dHRvbnMuXG5AbWl4aW4gX29Gb3Jtc0NvbnRyb2xzUHNldWRvRWxlbWVudHMge1xuXHRjb250ZW50OiAnJztcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMDtcblx0bGVmdDogMDtcblx0d2lkdGg6ICRfby1mb3Jtcy1zcGFjaW5nLXNpeDtcblx0aGVpZ2h0OiAkX28tZm9ybXMtc3BhY2luZy1zaXg7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAb3V0cHV0IFNoYXJlZCBzdHlsZXMgZm9yIGJveC1zdHlsZSByYWRpbyBidXR0b25zIGFuZCBhbmNob3IgY29udHJvbHNcbkBtaXhpbiBfb0Zvcm1zQ29udHJvbHNCb3hCYXNlIHtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGZsZXgtZ3JvdzogMTtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHRtYXJnaW46IDA7XG5cdG1pbi1oZWlnaHQ6ICRfby1mb3Jtcy1zcGFjaW5nLXNldmVuO1xuXHRtaW4td2lkdGg6IDhjaDtcbn1cblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBvdXRwdXQgU2hhcmVkIHN0eWxlcyBmb3IgYm94LXN0eWxlIGNvbnRhaW5lcnNcbkBtaXhpbiBfb0Zvcm1zQ29udHJvbHNCb3hDb250YWluZXIge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoXG5cdFx0JHNjYWxlOiAtMSxcblx0XHQkbGluZS1oZWlnaHQ6IHVuc2V0LFxuXHRcdCR3ZWlnaHQ6ICdzZW1pYm9sZCcsXG5cdFx0JGluY2x1ZGUtZm9udC1mYW1pbHk6IGZhbHNlXG5cdCk7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdGJvcmRlcjogJF9vLWZvcm1zLWJvcmRlcjtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGZsZXgtd3JhcDogd3JhcDtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRwYWRkaW5nOiAkX28tZm9ybXMtc3BhY2luZy1oYWxmO1xufVxuIiwiLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGRpc2FibGVkIFdoZXRoZXIgdG8gb3V0cHV0IGRpc2FibGVkIHN0YXRlIHN0eWxpbmdcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbnZhbGlkIFdoZXRoZXIgdG8gb3V0cHV0IGludmFsaWQgc3RhdGUgc3R5bGluZ1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZhbGlkIFdoZXRoZXIgdG8gb3V0cHV0IHZhbGlkIHN0YXRlIHN0eWxpbmdcbi8vLyBAb3V0cHV0IFN0eWxpbmcgZm9yIGRhdGUgaW5wdXRzXG5AbWl4aW4gX29Gb3Jtc0RhdGUgKFxuXHQkZGlzYWJsZWQ6IG51bGwsXG4pIHtcblx0Lm8tZm9ybXMtaW5wdXQtLWRhdGUge1xuXG5cdFx0bGFiZWwge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHR9XG5cblx0XHRpbnB1dFt0eXBlPXRleHRdIHsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRcdEBpbmNsdWRlIF9vRm9ybXNJbnB1dEJhc2UoJGRpc2FibGVkKTtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bWFyZ2luOiAkX28tZm9ybXMtc3BhY2luZy1vbmUgJF9vLWZvcm1zLXNwYWNpbmctdGhyZWUgMCAwO1xuXG5cdFx0XHQvLyBUaGUgcGF0dGVybiBhdHRyaWJ1dGUgdXNlZCB0byBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgZGF5L21vbnRoXG5cdFx0XHQvLyBwYXJ0cyBvZiBkYXRlIGlucHV0LiBXaGVuIHRoZSBkYXkgcGF0dGVybiBuZWVkZWQgdG8gY2hhbmdlIHRoZVxuXHRcdFx0Ly8gY2xhc3MgXCJvLWZvcm1zLWlucHV0X19kYXktcGFydFwiIGFuZCBcIi5vLWZvcm1zLWlucHV0X19tb250aC1wYXJ0XCJcblx0XHRcdC8vIHdhcyBhZGRlZC4gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHNlbGVjdCBvbiBib3RoIHRoZSBwYXR0ZXJucy5cblx0XHRcdC8vIEBicmVha2luZyByZW1vdmUgcGF0dGVybiBzZWxlY3RvclxuXHRcdFx0Ji5vLWZvcm1zLWlucHV0X19kYXktcGFydCxcblx0XHRcdCYuby1mb3Jtcy1pbnB1dF9fbW9udGgtcGFydCxcblx0XHRcdCZbcGF0dGVybiQ9J3syfSddLFxuXHRcdFx0JltwYXR0ZXJuJD0nWzAxMl0nXSB7XG5cdFx0XHRcdC8vIEJhc2VkIG9uIGNoYXJhY3RlciB3aWR0aCAocGx1cyBrZXJuaW5nKSBhbmQgbGluZSBoZWlnaHQuXG5cdFx0XHRcdHdpZHRoOiBjYWxjKDIuMmNoICsgMWVtKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVGhlIHBhdHRlcm4gYXR0cmlidXRlIHVzZWQgdG8gYmUgdXNlZCB0byBzZWxlY3QgdGhlIHllYXIgcGFydCBvZlxuXHRcdFx0Ly8gZGF0ZSBpbnB1dC4gXCJvLWZvcm1zLWlucHV0X195ZWFyLXBhcnRcIiB3YXMgYWRkZWQgbGF0ZXIuXG5cdFx0XHQvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgc2VsZWN0IG9uIGJvdGguXG5cdFx0XHQvLyBAYnJlYWtpbmcgcmVtb3ZlIHBhdHRlcm4gc2VsZWN0b3Jcblx0XHRcdCYuby1mb3Jtcy1pbnB1dF9feWVhci1wYXJ0LFxuXHRcdFx0JltwYXR0ZXJuJD0nezR9J10ge1xuXHRcdFx0XHQvLyBCYXNlZCBvbiBjaGFyYWN0ZXIgd2lkdGggKHBsdXMga2VybmluZykgYW5kIGxpbmUgaGVpZ2h0LlxuXHRcdFx0XHR3aWR0aDogY2FsYyg0LjJjaCArIDFlbSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lm8tZm9ybXMtaW5wdXRfX2Vycm9yIHtcblx0XHRcdHBhZGRpbmctdG9wOiAkX28tZm9ybXMtc3BhY2luZy1vbmU7XG5cdFx0XHRjbGVhcjogYm90aDtcblx0XHR9XG5cdH1cbn1cbi8vIHNhc3MtbGludDplbmFibGUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuIiwiLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGRpc2FibGVkIFdoZXRoZXIgdG8gb3V0cHV0IGRpc2FibGVkIHN0YXRlIHN0eWxpbmdcbi8vLyBAb3V0cHV0IGJhc2Ugc3R5bGVzIGZvciBzZWxlY3QsIHRleHRhcmVhIGFuZCB0ZXh0IGlucHV0XG5AbWl4aW4gX29Gb3Jtc0lucHV0QmFzZSgkZGlzYWJsZWQpIHtcblx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdGZvbnQtc2l6ZTogaW5oZXJpdDtcblx0YmFja2dyb3VuZC1jb2xvcjogX29Gb3Jtc0dldCgnZGVmYXVsdC1iYWNrZ3JvdW5kJyk7XG5cdGJvcmRlcjogJF9vLWZvcm1zLWJvcmRlcjtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0bWluLWhlaWdodDogJF9vLWZvcm1zLXNwYWNpbmctdGVuO1xuXHRwYWRkaW5nOiAkX28tZm9ybXMtc3BhY2luZy10d287XG5cdHdpZHRoOiAxMDAlO1xuXG5cdEBpZiAkZGlzYWJsZWQge1xuXHRcdEBpbmNsdWRlIF9vRm9ybXNJbnB1dERpc2FibGVkKCk7XG5cdH1cbn1cblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBvdXRwdXQgU2hhcmVkIGRpc2FibGVkIHN0YXRlIHN0eWxlcyBmb3IgaW5wdXRzLlxuQG1peGluIF9vRm9ybXNJbnB1dERpc2FibGVkIHtcblx0JjpkaXNhYmxlZCB7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHRcdGNvbG9yOiBfb0Zvcm1zR2V0KCdkaXNhYmxlZC10ZXh0Jyk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogX29Gb3Jtc0dldCgnZGlzYWJsZWQtYmFzZScpO1xuXHRcdGJvcmRlci1jb2xvcjogX29Gb3Jtc0dldCgnZGlzYWJsZWQtYmFzZScpO1xuXHRcdC8vIEVuc3VyZSBTYWZhcmkgdXNlcyB0aGUgY29ycmVjdCB0ZXh0IGNvbG91clxuXHRcdC8vIGZvciBkaXNhYmxlZCBpbnB1dHMuXG5cdFx0Ly8gc2Fzcy1saW50OmRpc2FibGUgbm8tdmVuZG9yLXByZWZpeGVzXG5cdFx0LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IGN1cnJlbnRDb2xvcjtcblx0XHQvLyBzYXNzLWxpbnQ6ZW5hYmxlIG5vLXZlbmRvci1wcmVmaXhlc1xuXHRcdC8vIGlPUyBTYWZhcmkgaGFzIGEgZGVmYXVsdCBvcGFjaXR5IG9mIDAuNFxuXHRcdG9wYWNpdHk6IDE7XG5cdH1cbn1cblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBvdXRwdXQgU2hhcmVkIHNtYWxsIHN0eWxlcyBmb3Igc2VsZWN0IGFuZCB0ZXh0IGlucHV0LlxuQG1peGluIF9vRm9ybXNJbnB1dFNtYWxsKCRlbGVtZW50KSB7XG5cdCYuby1mb3Jtcy1pbnB1dC0tc21hbGwge1xuXHRcdCN7JGVsZW1lbnR9IHtcblx0XHRcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucyhcblx0XHRcdFx0JHNjYWxlOiAtMSxcblx0XHRcdFx0JGxpbmUtaGVpZ2h0OiAxLjY1LFxuXHRcdFx0XHQkaW5jbHVkZS1mb250LWZhbWlseTogZmFsc2Vcblx0XHRcdCk7XG5cdFx0XHRtaW4taGVpZ2h0OiAkX28tZm9ybXMtc3BhY2luZy1zZXZlbjtcblx0XHRcdHBhZGRpbmc6IDAgJF9vLWZvcm1zLXNwYWNpbmctdHdvO1xuXHRcdH1cblx0fVxufVxuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQG91dHB1dCBTaGFyZWQgc3VmZml4IHN0eWxlcyBmb3Igc2VsZWN0IGFuZCB0ZXh0IGlucHV0LlxuQG1peGluIF9vRm9ybXNJbnB1dFN1ZmZpeCgkZWxlbWVudCkge1xuXHQmLm8tZm9ybXMtaW5wdXQtLXN1ZmZpeCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cblx0XHQjeyRlbGVtZW50fSB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0Ly8gQWxsb3cgZm9ybSBpbnB1dHMgd2l0aCBhIHN1ZmZpeCB0byBzaHJpbmsgZnVsbHksXG5cdFx0XHQvLyByZWdhcmRsZXNzIG9mIHRoZSBpbnB1dCBgc2l6ZWAgYXR0cmlidXRlLlxuXHRcdFx0Ly8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0lucHV0I2h0bWxhdHRyZGVmc2l6ZVxuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAkX28tZm9ybXMtc3BhY2luZy10d287XG5cdFx0XHQvLyBSZW1vdmUgc3VmZml4IG1hcmdpbiBpZiB0aGVyZSBpcyBubyBlbGVtZW50XG5cdFx0XHQvLyB0byBzdWZmaXggdGhlIGlucHV0IHdpdGguXG5cdFx0XHQmOm9ubHktY2hpbGQge1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lm8tZm9ybXMtaW5wdXRfX2Vycm9yIHtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdH1cblx0fVxufVxuIiwiLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGRpc2FibGVkIFdoZXRoZXIgdG8gb3V0cHV0IGRpc2FibGVkIHN0YXRlIHN0eWxpbmdcbi8vLyBAb3V0cHV0IFN0eWxpbmcgZm9yIGJveC1zdHlsZWQgcmFkaW8gaW5wdXRzXG5AbWl4aW4gX29Gb3Jtc1JhZGlvQm94KFxuXHQkZGlzYWJsZWQ6IG51bGxcbikge1xuXHQuby1mb3Jtcy1pbnB1dC0tcmFkaW8tYm94IHtcblx0XHRAaW5jbHVkZSBfb0Zvcm1zUmFkaW9Cb3hJbnB1dFN0eWxlcygpO1xuXG5cdFx0Lm8tZm9ybXMtaW5wdXQtLXJhZGlvLWJveF9fY29udGFpbmVyIHtcblx0XHRcdEBpbmNsdWRlIF9vRm9ybXNDb250cm9sc0JveENvbnRhaW5lcigpO1xuXHRcdH1cblxuXHRcdCYuby1mb3Jtcy1pbnB1dC0taW52YWxpZCAuby1mb3Jtcy1pbnB1dC0tcmFkaW8tYm94X19jb250YWluZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiBfb0Zvcm1zR2V0KCdpbnZhbGlkLWJhc2UnKTtcblx0XHR9XG5cblx0XHRsYWJlbCB7XG5cdFx0XHRAaW5jbHVkZSBfb0Zvcm1zQ29udHJvbHNCb3hCYXNlKCk7XG5cblx0XHRcdCY6bm90KDpmaXJzdC1vZi10eXBlKSB7XG5cdFx0XHRcdGJvcmRlci1sZWZ0OiAkX28tZm9ybXMtYm9yZGVyO1xuXHRcdFx0fVxuXG5cdFx0XHQuby1mb3Jtcy1pbnB1dF9fbGFiZWwge1xuXHRcdFx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdFx0XHRwYWRkaW5nOiAkX28tZm9ybXMtc3BhY2luZy1vbmUgJF9vLWZvcm1zLXNwYWNpbmctdHdvO1xuXHRcdFx0XHR0cmFuc2l0aW9uOiAwLjNzIGJhY2tncm91bmQtY29sb3IsIDAuMTVzIGNvbG9yIGVhc2Utb3V0O1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aW5wdXRbdHlwZT1yYWRpb10geyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0Ly8gSGlkZSB2aXN1YWxseSB3aGlsZSByZW1haW5pbmcgYWNjZXNzaWJsZSB0byB2b2ljZSBjb250cm9sIGxpa2UgRHJhZ29uXG5cdFx0XHQvLyBEcmFnb24gcmVxdWlyZXMgdGhlIGlucHV0IGl0IGlzIHRyeWluZyB0byBjbGljayB0byBiZSBhY3R1YWxseSBjbGlja2FibGVcblx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHR6LWluZGV4OiAxO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRcdEBpZiAkZGlzYWJsZWQge1xuXHRcdFx0XHQmOmRpc2FibGVkICsgLm8tZm9ybXMtaW5wdXRfX2xhYmVsIHsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRcdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0XHRcdFx0b3BhY2l0eTogMC40O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0QGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oUykge1xuXHRcdFx0Ji5vLWZvcm1zLWlucHV0LS1pbmxpbmUgLm8tZm9ybXMtaW5wdXRfX3N0YXRlIHtcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5vLWZvcm1zLWlucHV0X19zdGF0ZSB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAtKCRfby1mb3Jtcy1zcGFjaW5nLWZpdmUgKyAkX28tZm9ybXMtc3BhY2luZy1oYWxmKTtcblx0XHR9XG5cdH1cbn1cblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TWFwfG51bGx9ICR0aGVtZSBDdXN0b20gdGhlbWUgbWFwXG4vLy8gQG91dHB1dCBzdHlsaW5nIGZvciBib3gtc3R5bGVkIHJhZGlvIGlucHV0c1xuQG1peGluIF9vRm9ybXNSYWRpb0JveElucHV0U3R5bGVzKCR0aGVtZTogbnVsbCkge1xuXHRib3JkZXItY29sb3I6IF9vRm9ybXNHZXQoJ2RlZmF1bHQtYm9yZGVyJywgJGZyb206ICR0aGVtZSk7XG5cblx0Lm8tZm9ybXMtaW5wdXQtLXJhZGlvLWJveF9fY29udGFpbmVyIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0Zvcm1zR2V0KCdyYWRpby1iYWNrZ3JvdW5kJyk7XG5cdH1cblxuXHQuby1mb3Jtcy1pbnB1dC0tcmFkaW8tYm94X19jb250YWluZXIsXG5cdGxhYmVsOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuXHRcdGJvcmRlci1jb2xvcjogX29Gb3Jtc0dldCgnZGVmYXVsdC1ib3JkZXInLCAkZnJvbTogJHRoZW1lKTtcblx0fVxuXG5cdGlucHV0W3R5cGU9cmFkaW9dIHsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHQmICsgLm8tZm9ybXMtaW5wdXRfX2xhYmVsIHsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRcdGNvbG9yOiBfb0Zvcm1zR2V0KCdjb250cm9scy1iYXNlJywgJGZyb206ICR0aGVtZSk7XG5cdFx0fVxuXG5cdFx0Jjpub3QoOmNoZWNrZWQpOm5vdCg6ZGlzYWJsZWQpOmhvdmVyICsgLm8tZm9ybXMtaW5wdXRfX2xhYmVsIHsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoX29Gb3Jtc0dldCgnY29udHJvbHMtYmFzZScsICRmcm9tOiAkdGhlbWUpLCAwLjE1KTtcblx0XHR9XG5cblx0XHQmOmZvY3VzICsgLm8tZm9ybXMtaW5wdXRfX2xhYmVsIHsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRcdGJvcmRlci1jb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnZm9jdXMnLCAnb3V0bGluZScsICRmYWxsYmFjazogbnVsbCk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAkX28tZm9ybXMtc3BhY2luZy1oYWxmIG9Db2xvcnNCeVVzZWNhc2UoJ2ZvY3VzJywgJ291dGxpbmUnLCAkZmFsbGJhY2s6IG51bGwpO1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHR9XG5cblx0XHQmOmNoZWNrZWQgKyAuby1mb3Jtcy1pbnB1dF9fbGFiZWwgeyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogX29Gb3Jtc0dldCgnY29udHJvbHMtYmFzZScsICRmcm9tOiAkdGhlbWUpO1xuXHRcdFx0Y29sb3I6IF9vRm9ybXNHZXQoJ2NvbnRyb2xzLWNoZWNrZWQtYmFzZScsICRmcm9tOiAkdGhlbWUpO1xuXG5cdFx0XHQmLm8tZm9ybXMtaW5wdXRfX2xhYmVsLS1uZWdhdGl2ZSB7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IF9vRm9ybXNHZXQoJ2NvbnRyb2xzLW5lZ2F0aXZlLWNoZWNrZWQtYmFja2dyb3VuZCcsICRmcm9tOiAkdGhlbWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiOyAvLyBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBSdWJ5IGxvY2FsZSBpcyBub3Qgc2V0IHByb3Blcmx5XG4gICAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9wdWxsLzEwXG5cbkBpbXBvcnQgXCJAZmluYW5jaWFsLXRpbWVzL21hdGhcIjtcblxuLy8vIEJhc2UgZm9udCBzaXplIG9uIHRoZSBgPGJvZHk+YCBlbGVtZW50XG4vLy9cbi8vLyBEbyBub3Qgb3ZlcnJpZGUgdGhpcyB2YWx1ZSwgb3IgdGhpbmdzIHdpbGwgYnJlYWtcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMlxuLy8vIEBkZXByZWNhdGVkIFRoaXMgc2V0dGluZyB3aWxsIGJlIHJlbW92ZWQgaW4gc2Fzcy1tcSB2Ni4wLjBcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAdHlwZSBOdW1iZXIgKHVuaXQpXG4kbXEtYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vLyBSZXNwb25zaXZlIG1vZGVcbi8vL1xuLy8vIFNldCB0byBgZmFsc2VgIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IEBtZWRpYSBxdWVyaWVzLFxuLy8vIChJRSA8PSA4LCBGaXJlZm94IDw9IDMsIE9wZXJhIDw9IDkpXG4vLy9cbi8vLyBZb3UgY291bGQgY3JlYXRlIGEgc3R5bGVzaGVldCBzZXJ2ZWQgZXhjbHVzaXZlbHkgdG8gb2xkZXIgYnJvd3NlcnMsXG4vLy8gd2hlcmUgQG1lZGlhIHF1ZXJpZXMgYXJlIHJhc3Rlcml6ZWRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gb2xkLWllLnNjc3Ncbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBCb29sZWFuXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb2ZmIERpc2FibGVkIHJlc3BvbnNpdmUgbW9kZSBkb2N1bWVudGF0aW9uXG4kbXEtcmVzcG9uc2l2ZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJyZWFrcG9pbnQgbGlzdFxuLy8vXG4vLy8gTmFtZSB5b3VyIGJyZWFrcG9pbnRzIGluIGEgd2F5IHRoYXQgY3JlYXRlcyBhIHViaXF1aXRvdXMgbGFuZ3VhZ2Vcbi8vLyBhY3Jvc3MgdGVhbSBtZW1iZXJzLiBJdCB3aWxsIGltcHJvdmUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuXG4vLy8gc3Rha2Vob2xkZXJzLCBkZXNpZ25lcnMsIGRldmVsb3BlcnMsIGFuZCB0ZXN0ZXJzLlxuLy8vXG4vLy8gQHR5cGUgTWFwXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtYnJlYWtwb2ludHM6IChcbiAgICBtb2JpbGU6ICAzMjBweCxcbiAgICB0YWJsZXQ6ICA3NDBweCxcbiAgICBkZXNrdG9wOiA5ODBweCxcbiAgICB3aWRlOiAgICAxMzAwcHhcbikgIWRlZmF1bHQ7XG5cbi8vLyBTdGF0aWMgYnJlYWtwb2ludCAoZm9yIGZpeGVkLXdpZHRoIGxheW91dHMpXG4vLy9cbi8vLyBEZWZpbmUgdGhlIGJyZWFrcG9pbnQgZnJvbSAkbXEtYnJlYWtwb2ludHMgdGhhdCBzaG91bGRcbi8vLyBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgd2lkdGggZm9yIHRoZSBmaXhlZC13aWR0aCBsYXlvdXRcbi8vLyAoaS5lLiB3aGVuICRtcS1yZXNwb25zaXZlIGlzIHNldCB0byAnZmFsc2UnKSBpbiBhIG9sZC1pZS5zY3NzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIHRhYmxldC1vbmx5LnNjc3Ncbi8vLyAgLy9cbi8vLyAgLy8gSWdub3JlIGFsbCBzdHlsZXMgYWJvdmUgdGFibGV0IGJyZWFrcG9pbnQsXG4vLy8gIC8vIGFuZCBmaXggdGhlIHN0eWxlcyAoc3VjaCBhcyB0aGUgbGF5b3V0KSBhdCB0YWJsZXQgd2lkdGhcbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICAkbXEtc3RhdGljLWJyZWFrcG9pbnQ6IHRhYmxldDtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gdGFibGV0XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNhZGRpbmctY3VzdG9tLWJyZWFrcG9pbnRzIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1zdGF0aWMtYnJlYWtwb2ludDogZGVza3RvcCAhZGVmYXVsdDtcblxuLy8vIFNob3cgYnJlYWtwb2ludHMgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vL1xuLy8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXG4vLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGguIEZvciBleGFtcGxlOiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgJG1xLXNob3ctYnJlYWtwb2ludHM6IChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCk7XG4vLy8gICBAaW1wb3J0ICdwYXRoL3RvL21xJztcbi8vL1xuLy8vIEB0eXBlIG1hcFxuJG1xLXNob3ctYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuXG4vLy8gQ3VzdG9taXplIHRoZSBtZWRpYSB0eXBlIChmb3IgZXhhbXBsZTogYEBtZWRpYSBzY3JlZW5gIG9yIGBAbWVkaWEgcHJpbnRgKVxuLy8vIEJ5IGRlZmF1bHQgc2Fzcy1tcSB1c2VzIGFuIFwiYWxsXCIgbWVkaWEgdHlwZSAoYEBtZWRpYSBhbGwgYW5kIOKApmApXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2NoYW5naW5nLW1lZGlhLXR5cGUgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLW1lZGlhLXR5cGU6IGFsbCAhZGVmYXVsdDtcblxuLy8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRweCAtIHZhbHVlIHRvIGNvbnZlcnRcbi8vLyBAaWdub3JlIEBwYXJhbSB7TnVtYmVyfSAkYmFzZS1mb250LXNpemUgWyRtcS1iYXNlLWZvbnQtc2l6ZV0gLSBgPGJvZHk+YCBmb250IHNpemUgKGRlcHJlY2F0ZWQpXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICRmb250LXNpemUtaW4tZW1zOiBtcS1weDJlbSgxNnB4KTtcbi8vLyAgcCB7IGZvbnQtc2l6ZTogbXEtcHgyZW0oMTZweCk7IH1cbi8vL1xuLy8vIEByZXF1aXJlcyAkbXEtYmFzZS1mb250LXNpemVcbi8vLyBAcmV0dXJucyB7TnVtYmVyfVxuQGZ1bmN0aW9uIG1xLXB4MmVtKCRweCwgJGJhc2UtZm9udC1zaXplOiAkbXEtYmFzZS1mb250LXNpemUpIHtcbiAgICBAaWYgKCRtcS1iYXNlLWZvbnQtc2l6ZSAhPSAxNnB4KSB7XG4gICAgICAgIEB3YXJuIFwiT3ZlcnJpZGluZyAkbXEtYmFzZS1mb250LXNpemUgd2lsbCBicmVhayB0aGluZ3MsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjIuXCI7XG4gICAgfVxuICAgIEBpZiAoJGJhc2UtZm9udC1zaXplICE9IDE2cHgpIHtcbiAgICAgICAgQHdhcm4gXCJUaGUgJGJhc2UtZm9udC1zaXplIGFyZ3VtZW50IHdpbGwgYmUgcmVtb3ZlZCBpbiBzYXNzLW1xIHY2LjAuMCwgYXMgb3ZlcnJpZGluZyBpdCBicmVha3MgdGhpbmdzLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyLlwiO1xuICAgIH1cbiAgICBAaWYgdW5pdGxlc3MoJHB4KSB7XG4gICAgICAgIEB3YXJuIFwiQXNzdW1pbmcgI3skcHh9IHRvIGJlIGluIHBpeGVscywgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGl0IGludG8gcGl4ZWxzLlwiO1xuICAgICAgICBAcmV0dXJuIG1xLXB4MmVtKCRweCAqIDFweCwgJGJhc2UtZm9udC1zaXplKTtcbiAgICB9IEBlbHNlIGlmIHVuaXQoJHB4KSA9PSBlbSB7XG4gICAgICAgIEByZXR1cm4gJHB4O1xuICAgIH1cbiAgICBAcmV0dXJuIChkaXYoJHB4LCAkYmFzZS1mb250LXNpemUpKSAqIDFlbTtcbn1cblxuLy8vIEdldCBhIGJyZWFrcG9pbnQncyB3aWR0aFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludC4gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkdGFibGV0LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCh0YWJsZXQpO1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoZGVza3RvcCkpIHt9XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFZhbHVlIGluIHBpeGVsc1xuQGZ1bmN0aW9uIG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSB7XG4gICAgICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQHdhcm4gXCJCcmVha3BvaW50ICN7JG5hbWV9IHdhc24ndCBmb3VuZCBpbiAkYnJlYWtwb2ludHMuXCI7XG4gICAgfVxufVxuXG4vLy8gTWVkaWEgUXVlcnkgbWl4aW5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGZyb20gW2ZhbHNlXSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICR1bnRpbCBbZmFsc2VdIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGFuZCBbZmFsc2VdIC0gQWRkaXRpb25hbCBtZWRpYSBxdWVyeSBwYXJhbWV0ZXJzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZWRpYS10eXBlIFskbXEtbWVkaWEtdHlwZV0gLSBNZWRpYSB0eXBlOiBzY3JlZW4sIHByaW504oCmXG4vLy9cbi8vLyBAaWdub3JlIFVuZG9jdW1lbnRlZCBBUEksIGZvciBhZHZhbmNlZCB1c2Ugb25seTpcbi8vLyBAaWdub3JlIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgWyRtcS1icmVha3BvaW50c11cbi8vLyBAaWdub3JlIEBwYXJhbSB7U3RyaW5nfSAkc3RhdGljLWJyZWFrcG9pbnQgWyRtcS1zdGF0aWMtYnJlYWtwb2ludF1cbi8vL1xuLy8vIEBjb250ZW50IHN0eWxpbmcgcnVsZXMsIHdyYXBwZWQgaW50byBhIEBtZWRpYSBxdWVyeSB3aGVuICRyZXNwb25zaXZlIGlzIHRydWVcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1tZWRpYS10eXBlXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtcHgyZW1cbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1nZXQtYnJlYWtwb2ludC13aWR0aFxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb24tZGVmYXVsdCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogbW9iaWxlKSB7XG4vLy8gICAgICBjb2xvcjogcmVkO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkdW50aWw6IHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGJsdWU7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKG1vYmlsZSwgdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogZ3JlZW47XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiB0YWJsZXQsICRhbmQ6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknKSB7XG4vLy8gICAgICBjb2xvcjogdGVhbDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoOTUwcHgpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSh0YWJsZXQsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICAvLyBBZHZhbmNlZCB1c2U6XG4vLy8gICAgJG15LWJyZWFrcG9pbnRzOiAoTDogOTAwcHgsIFhMOiAxMjAwcHgpO1xuLy8vICAgIEBpbmNsdWRlIG1xKEwsICRicmVha3BvaW50czogJG15LWJyZWFrcG9pbnRzLCAkc3RhdGljLWJyZWFrcG9pbnQ6IEwpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgfVxuQG1peGluIG1xKFxuICAgICRmcm9tOiBmYWxzZSxcbiAgICAkdW50aWw6IGZhbHNlLFxuICAgICRhbmQ6IGZhbHNlLFxuICAgICRtZWRpYS10eXBlOiAkbXEtbWVkaWEtdHlwZSxcbiAgICAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cyxcbiAgICAkcmVzcG9uc2l2ZTogJG1xLXJlc3BvbnNpdmUsXG4gICAgJHN0YXRpYy1icmVha3BvaW50OiAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbikge1xuICAgICRtaW4td2lkdGg6IDA7XG4gICAgJG1heC13aWR0aDogMDtcbiAgICAkbWVkaWEtcXVlcnk6ICcnO1xuXG4gICAgLy8gRnJvbTogdGhpcyBicmVha3BvaW50IChpbmNsdXNpdmUpXG4gICAgQGlmICRmcm9tIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGZyb20pID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbSgkZnJvbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJGZyb20sICRicmVha3BvaW50cykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW50aWw6IHRoYXQgYnJlYWtwb2ludCAoZXhjbHVzaXZlKVxuICAgIEBpZiAkdW50aWwge1xuICAgICAgICBAaWYgdHlwZS1vZigkdW50aWwpID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbSgkdW50aWwpO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCR1bnRpbCwgJGJyZWFrcG9pbnRzKSkgLSAuMDFlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBkaXNhYmxlZCwgcmFzdGVyaXplIHRoZSBvdXRwdXQgb3V0c2lkZSBAbWVkaWEgYmxvY2tzXG4gICAgLy8gVGhlIGJyb3dzZXIgd2lsbCByZWx5IG9uIHRoZSBjYXNjYWRlIGl0c2VsZi5cbiAgICBAaWYgJHJlc3BvbnNpdmUgPT0gZmFsc2Uge1xuICAgICAgICAkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzdGF0aWMtYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgJHRhcmdldC13aWR0aDogbXEtcHgyZW0oJHN0YXRpYy1icmVha3BvaW50LXdpZHRoKTtcblxuICAgICAgICAvLyBPdXRwdXQgb25seSBydWxlcyB0aGF0IHN0YXJ0IGF0IG9yIHNwYW4gb3VyIHRhcmdldCB3aWR0aFxuICAgICAgICBAaWYgKFxuICAgICAgICAgICAgJGFuZCA9PSBmYWxzZVxuICAgICAgICAgICAgYW5kICRtaW4td2lkdGggPD0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgYW5kIChcbiAgICAgICAgICAgICAgICAkdW50aWwgPT0gZmFsc2Ugb3IgJG1heC13aWR0aCA+PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBhbmQgJG1lZGlhLXR5cGUgIT0gJ3ByaW50J1xuICAgICAgICApIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIG91dHB1dCBydWxlcyBpbnNpZGUgQG1lZGlhIHF1ZXJpZXNcbiAgICBAZWxzZSB7XG4gICAgICAgIEBpZiAkbWluLXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtaW4td2lkdGg6ICN7JG1pbi13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJG1heC13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWF4LXdpZHRoOiAjeyRtYXgtd2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRhbmQgICAgICAgICAgICB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgI3skYW5kfSc7IH1cblxuICAgICAgICAvLyBSZW1vdmUgdW5uZWNlc3NhcnkgbWVkaWEgcXVlcnkgcHJlZml4ICdhbGwgYW5kICdcbiAgICAgICAgQGlmICgkbWVkaWEtdHlwZSA9PSAnYWxsJyBhbmQgJG1lZGlhLXF1ZXJ5ICE9ICcnKSB7XG4gICAgICAgICAgICAkbWVkaWEtdHlwZTogJyc7XG4gICAgICAgICAgICAkbWVkaWEtcXVlcnk6IHN0ci1zbGljZSh1bnF1b3RlKCRtZWRpYS1xdWVyeSksIDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhICN7JG1lZGlhLXR5cGUgKyAkbWVkaWEtcXVlcnl9IHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLy8gUXVpY2sgc29ydFxuLy8vXG4vLy8gQGF1dGhvciBTYW0gUmljaGFyZHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gTGlzdCB0byBzb3J0XG4vLy8gQHJldHVybnMge0xpc3R9IFNvcnRlZCBMaXN0XG5AZnVuY3Rpb24gX21xLXF1aWNrLXNvcnQoJGxpc3QpIHtcbiAgICAkbGVzczogICgpO1xuICAgICRlcXVhbDogKCk7XG4gICAgJGxhcmdlOiAoKTtcblxuICAgIEBpZiBsZW5ndGgoJGxpc3QpID4gMSB7XG4gICAgICAgICRzZWVkOiBudGgoJGxpc3QsIGNlaWwoZGl2KGxlbmd0aCgkbGlzdCksIDIpKSk7XG5cbiAgICAgICAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgICAgICAgICAgQGlmICgkaXRlbSA9PSAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRlcXVhbDogYXBwZW5kKCRlcXVhbCwgJGl0ZW0pO1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPCAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRsZXNzOiBhcHBlbmQoJGxlc3MsICRpdGVtKTtcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtID4gJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkbGFyZ2U6IGFwcGVuZCgkbGFyZ2UsICRpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEByZXR1cm4gam9pbihqb2luKF9tcS1xdWljay1zb3J0KCRsZXNzKSwgJGVxdWFsKSwgX21xLXF1aWNrLXNvcnQoJGxhcmdlKSk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFNvcnQgYSBtYXAgYnkgdmFsdWVzICh3b3JrcyB3aXRoIG51bWJlcnMgb25seSlcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHNvcnRcbi8vLyBAcmV0dXJucyB7TWFwfSBNYXAgc29ydGVkIGJ5IHZhbHVlXG5AZnVuY3Rpb24gX21xLW1hcC1zb3J0LWJ5LXZhbHVlKCRtYXApIHtcbiAgICAkbWFwLXNvcnRlZDogKCk7XG4gICAgJG1hcC1rZXlzOiBtYXAta2V5cygkbWFwKTtcbiAgICAkbWFwLXZhbHVlczogbWFwLXZhbHVlcygkbWFwKTtcbiAgICAkbWFwLXZhbHVlcy1zb3J0ZWQ6IF9tcS1xdWljay1zb3J0KCRtYXAtdmFsdWVzKTtcblxuICAgIC8vIFJlb3JkZXIga2V5L3ZhbHVlIHBhaXJzIGJhc2VkIG9uIGtleSB2YWx1ZXNcbiAgICBAZWFjaCAkdmFsdWUgaW4gJG1hcC12YWx1ZXMtc29ydGVkIHtcbiAgICAgICAgJGluZGV4OiBpbmRleCgkbWFwLXZhbHVlcywgJHZhbHVlKTtcbiAgICAgICAgJGtleTogbnRoKCRtYXAta2V5cywgJGluZGV4KTtcbiAgICAgICAgJG1hcC1zb3J0ZWQ6IG1hcC1tZXJnZSgkbWFwLXNvcnRlZCwgKCRrZXk6ICR2YWx1ZSkpO1xuXG4gICAgICAgIC8vIFVuc2V0IHRoZSB2YWx1ZSBpbiAkbWFwLXZhbHVlcyB0byBwcmV2ZW50IHRoZSBsb29wXG4gICAgICAgIC8vIGZyb20gZmluZGluZyB0aGUgc2FtZSBpbmRleCB0d2ljZVxuICAgICAgICAkbWFwLXZhbHVlczogc2V0LW50aCgkbWFwLXZhbHVlcywgJGluZGV4LCAwKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRtYXAtc29ydGVkO1xufVxuXG4vLy8gQWRkIGEgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIEBpbmNsdWRlIG1xLWFkZC1icmVha3BvaW50KHR2c2NyZWVuLCAxOTIwcHgpO1xuLy8vICBAaW5jbHVkZSBtcSh0dnNjcmVlbikge31cbkBtaXhpbiBtcS1hZGQtYnJlYWtwb2ludCgkbmFtZSwgJHdpZHRoKSB7XG4gICAgJG5ldy1icmVha3BvaW50OiAoJG5hbWU6ICR3aWR0aCk7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJG1xLWJyZWFrcG9pbnRzLCAkbmV3LWJyZWFrcG9pbnQpICFnbG9iYWw7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1xLWJyZWFrcG9pbnRzKSAhZ2xvYmFsO1xufVxuXG4vLy8gU2hvdyB0aGUgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcCByaWdodCBjb3JuZXIgb2YgdGhlIHZpZXdwb3J0XG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hvdy1icmVha3BvaW50cyBbJG1xLXNob3ctYnJlYWtwb2ludHNdIC0gTGlzdCBvZiBicmVha3BvaW50cyB0byBzaG93IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy8gQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJG1xLWJyZWFrcG9pbnRzXSAtIEJyZWFrcG9pbnQgbmFtZXMgYW5kIHNpemVzXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc2hvdy1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGdsb2JhbCBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xuLy8vXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgY3VzdG9tIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHMoKEwsIFhMKSwgKFM6IDMwMHB4LCBMOiA4MDBweCwgWEw6IDEyMDBweCkpO1xuQG1peGluIG1xLXNob3ctYnJlYWtwb2ludHMoJHNob3ctYnJlYWtwb2ludHM6ICRtcS1zaG93LWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIGJvZHk6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZDRjhFMztcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgY29sb3I6ICNDMDk4NTM7XG4gICAgICAgIGZvbnQ6IHNtYWxsLWNhcHRpb247XG4gICAgICAgIHBhZGRpbmc6IDNweCA2cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHotaW5kZXg6IDEwMDtcblxuICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIGJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkIGJlIHNob3duXG4gICAgICAgIEBlYWNoICRzaG93LWJyZWFrcG9pbnQgaW4gJHNob3ctYnJlYWtwb2ludHMge1xuICAgICAgICAgICAgJHdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIiN7JHNob3ctYnJlYWtwb2ludH0g4omlICN7JHdpZHRofSAoI3ttcS1weDJlbSgkd2lkdGgpfSlcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGlmIGxlbmd0aCgkbXEtc2hvdy1icmVha3BvaW50cykgPiAwIHtcbiAgICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xufVxuIiwiLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGRpc2FibGVkIFdoZXRoZXIgdG8gb3V0cHV0IGRpc2FibGVkIHN0YXRlIHN0eWxpbmdcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRzbWFsbCBXaGV0aGVyIHRvIG91dHB1dCBzbWFsbCBpbnB1dCBzdHlsZXNcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRzdWZmaXggV2hldGhlciB0byBvdXRwdXQgc3VmZml4IHN0eWxlc1xuLy8vIEBvdXRwdXQgU3R5bGluZyBmb3IgdGV4dCBhcmVhc1xuQG1peGluIF9vRm9ybXNTZWxlY3QoXG5cdCRkaXNhYmxlZDogbnVsbCxcblx0JHNtYWxsOiBudWxsLFxuXHQkc3VmZml4OiBudWxsXG4pIHtcblx0Lm8tZm9ybXMtaW5wdXQtLXNlbGVjdCB7XG5cdFx0QGlmICRzbWFsbCB7XG5cdFx0XHRAaW5jbHVkZSBfb0Zvcm1zSW5wdXRTbWFsbCgnc2VsZWN0Jyk7XG5cdFx0fVxuXG5cdFx0QGlmICRzdWZmaXgge1xuXHRcdFx0QGluY2x1ZGUgX29Gb3Jtc0lucHV0U3VmZml4KCdzZWxlY3QnKTtcblx0XHR9XG5cblx0XHRzZWxlY3Qge1xuXHRcdFx0QGluY2x1ZGUgX29Gb3Jtc0lucHV0QmFzZSgkZGlzYWJsZWQpO1xuXHRcdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgnYXJyb3ctZG93bicsIF9vRm9ybXNHZXQoJ2ZpZWxkLXN0YW5kYXJkLXRleHQnKSwgJHNpemU6IG51bGwsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG5cdFx0XHRhcHBlYXJhbmNlOiBub25lO1xuXHRcdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRcdGJhY2tncm91bmQtc2l6ZTogJF9vLWZvcm1zLXNwYWNpbmctc2l4ICRfby1mb3Jtcy1zcGFjaW5nLXNpeDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0XHRiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXHRcdFx0Y29sb3I6IF9vRm9ybXNHZXQoJ2RlZmF1bHQtdGV4dCcpO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblxuXHRcdFx0Ly8gRm9yIGlPUyA2IHRoYXQgZG9lc24ndCBzdXBwb3J0IDQtdmFsdWUgYmFja2dyb3VuZC1wb3NpdGlvblxuXHRcdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgY2VudGVyO1xuXHRcdFx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlY2xhcmF0aW9uLWJsb2NrLW5vLWR1cGxpY2F0ZS1wcm9wZXJ0aWVzXG5cdFx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAkX28tZm9ybXMtc3BhY2luZy10d28gY2VudGVyO1xuXG5cdFx0XHQvLyBIaWRlIHN0b2NrIGJyb3dzZXIgYXJyb3cgaW4gSUUgMTArXG5cdFx0XHQmOjotbXMtZXhwYW5kIHtcblx0XHRcdFx0Y29sb3I6IG9Db2xvcnNCeU5hbWUoJ3doaXRlJyk7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdCY6ZGlzYWJsZWQge1xuXHRcdFx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCdhcnJvdy1kb3duJywgX29Gb3Jtc0dldCgnZGlzYWJsZWQtdGV4dCcpLCAkc2l6ZTogbnVsbCwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcblx0XHRcdH1cblxuXHRcdFx0JlttdWx0aXBsZV0geyAvL3N0eWxlbGludC1kaXNhYmxlLWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iLCIvLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZGlzYWJsZWQgV2hldGhlciB0byBvdXRwdXQgZGlzYWJsZWQgc3RhdGUgc3R5bGluZ1xuLy8vIEBvdXRwdXQgc3R5bGVzIGZvciB0b2dnbGUgYmFzZWQgb24gYSBjaGVja2JveCBpbnB1dFxuQG1peGluIF9vRm9ybXNUb2dnbGUoJGRpc2FibGVkOiBudWxsKSB7XG5cdC5vLWZvcm1zLWlucHV0LS10b2dnbGUge1xuXHRcdCR0b2dnbGUtd2lkdGg6ICRfby1mb3Jtcy1zcGFjaW5nLXRlbjtcblx0XHQuby1mb3Jtcy1pbnB1dF9fbGFiZWwge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0cGFkZGluZzogJF9vLWZvcm1zLXNwYWNpbmctaGFsZiAwICRfby1mb3Jtcy1zcGFjaW5nLWhhbGYgI3skdG9nZ2xlLXdpZHRoICsgJF9vLWZvcm1zLXNwYWNpbmctb25lfTtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cblx0XHRcdCY6YmVmb3JlLFxuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0dG9wOiAwO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IF9vRm9ybXNHZXQoJ3RvZ2dsZScpO1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAkX28tZm9ybXMtc3BhY2luZy10ZW47XG5cdFx0XHRcdGhlaWdodDogJF9vLWZvcm1zLXNwYWNpbmctc2l4O1xuXHRcdFx0XHR3aWR0aDogJHRvZ2dsZS13aWR0aDtcblx0XHRcdH1cblxuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IG9Db2xvcnNCeVVzZWNhc2UocGFnZSwgYmFja2dyb3VuZCk7XG5cdFx0XHRcdGJvcmRlcjogJF9vLWZvcm1zLXNwYWNpbmctaGFsZiBzb2xpZCBfb0Zvcm1zR2V0KCdkZWZhdWx0LXRleHQnKTtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdFx0XHRoZWlnaHQ6ICRfby1mb3Jtcy1zcGFjaW5nLXNpeDtcblx0XHRcdFx0d2lkdGg6ICRfby1mb3Jtcy1zcGFjaW5nLXNpeDtcblx0XHRcdFx0dHJhbnNpdGlvbjogbGVmdCA3NW1zIGVhc2UtaW4tb3V0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlucHV0W3R5cGU9Y2hlY2tib3hdIHsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRcdCY6Y2hlY2tlZCArIC5vLWZvcm1zLWlucHV0X19sYWJlbCB7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0Zvcm1zR2V0KCd0b2dnbGUtc2VsZWN0ZWQnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0XHRsZWZ0OiAkX28tZm9ybXMtc3BhY2luZy1mb3VyO1xuXHRcdFx0XHRcdGJvcmRlci1jb2xvcjogX29Gb3Jtc0dldCgndG9nZ2xlLXNlbGVjdGVkJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0JjppbnZhbGlkOm5vdCg6ZGlzYWJsZWQpICsgLm8tZm9ybXMtaW5wdXRfX2xhYmVsOmFmdGVyIHsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiBpbmhlcml0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdEBpZiAkZGlzYWJsZWQge1xuXHRcdFx0aW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWQgKyAuby1mb3Jtcy1pbnB1dF9fbGFiZWwgeyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdFx0XHRjb2xvcjogX29Gb3Jtc0dldCgnZGlzYWJsZWQtdGV4dCcpO1xuXG5cdFx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRcdGJvcmRlci1jb2xvcjogX29Gb3Jtc0dldCgndG9nZ2xlLWRpc2FibGVkJyk7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogX29Gb3Jtc0dldCgndG9nZ2xlLWtub2ItZGlzYWJsZWQnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBfb0Zvcm1zR2V0KCd0b2dnbGUtZGlzYWJsZWQnKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBvdXRwdXQgc3R5bGVzIGZvciBpbmxpbmluZyBsYWJlbHMgYW5kIGlucHV0c1xuQG1peGluIF9vRm9ybXNJbmxpbmUoKSB7XG5cdC8qIGlubGluZSBmaWVsZCB0aXRsZXMgYW5kIGlucHV0c1xuXHRcdFt0aXRsZV0gW2lucHV0XVxuXHRcdG9yXG5cdFx0W3RpdGxlXSBbaW5wdXRdXG5cdFx0XHRcdFx0XHRbaW5wdXRdXG5cdCovXG5cdEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKFMpIHtcblx0XHQuby1mb3Jtcy1maWVsZC0taW5saW5lIHtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0XG5cdFx0XHQuby1mb3Jtcy10aXRsZSB7XG5cdFx0XHRcdGZsZXg6IDAgMSA1MCU7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogJF9vLWZvcm1zLXNwYWNpbmctdGhyZWU7XG5cdFx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cblx0XHRcdFx0Ji5vLWZvcm1zLXRpdGxlLS1zaHJpbmsge1xuXHRcdFx0XHRcdGZsZXgtYmFzaXM6IGF1dG87XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHRcdCYuby1mb3Jtcy10aXRsZS0tdmVydGljYWwtY2VudGVyIHtcblx0XHRcdFx0XHRhbGlnbi1zZWxmOiBjZW50ZXI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcblx0XHRcdC5vLWZvcm1zLWlucHV0IHtcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdFx0ZmxleDogMSAwIDUwJTtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdFx0LyogaW5saW5lIGlucHV0c1xuXHRcdFx0W3RpdGxlXSBcblx0XHRcdFtpbnB1dF0gW2lucHV0XVxuXHRcdFx0b3IgKGNvbWJpbmVkIHdpdGggZmllbGQgaW5saW5lKVxuXHRcdFx0W3RpdGxlXSBbaW5wdXRdIFtpbnB1dF1cblx0XHQqL1xuXHRcdC5vLWZvcm1zLWlucHV0Lm8tZm9ybXMtaW5wdXQtLWlubGluZSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1mbG93OiByb3cgd3JhcDtcblx0XHRcdFx0XG5cdFx0XHRsYWJlbCB7XG5cdFx0XHRcdG1hcmdpbjogMCAkX28tZm9ybXMtc3BhY2luZy1mb3VyICRfby1mb3Jtcy1zcGFjaW5nLXRocmVlIDA7XG5cdFx0XHRcdG1heC13aWR0aDogNzUlO1xuXHRcdFx0fVxuXG5cdFx0XHQmLm8tZm9ybXMtaW5wdXQtLWRhdGUgbGFiZWwsXG5cdFx0XHQmLm8tZm9ybXMtaW5wdXQtLXJhZGlvLWJveCBsYWJlbCB7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1icmFuZC9tYWluJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1jb2xvcnMvbWFpbic7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28tdHlwb2dyYXBoeS9tYWluJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1pY29ucy9tYWluJztcbkBpbXBvcnQgJ0BmaW5hbmNpYWwtdGltZXMvby1ub3JtYWxpc2UvbWFpbic7XG5cbkBpbXBvcnQgJy4vc3JjL3Njc3MvYnJhbmQnO1xuQGltcG9ydCAnLi9zcmMvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnLi9zcmMvc2Nzcy9mdW5jdGlvbnMnO1xuQGltcG9ydCAnLi9zcmMvc2Nzcy9taXhpbnMnO1xuXG4vLy8gT3V0cHV0IG8tYnV0dG9ucyBjbGFzc2VzLlxuLy8vXG4vLy8gQGV4YW1wbGUgQWxsIGRlZmF1bHQgby1idXR0b25zIHN0eWxlcy5cbi8vLyAgICAgQGluY2x1ZGUgb0J1dHRvbnMoKTtcbi8vL1xuLy8vIEBleGFtcGxlIFByaW1hcnkgYW5kIHNlY29uZGFyeSBidXR0b24gY2xhc3NlcywgcGx1cyB0aGUgYmlnIGJ1dHRvbiBtb2RpZmllciBjbGFzcy5cbi8vLyAgICBAaW5jbHVkZSBvQnV0dG9ucygkb3B0czogKFxuLy8vICAgICAgICAndHlwZXMnOiAoJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JyksXG4vLy8gICAgICAgICdzaXplcyc6ICgnYmlnJylcbi8vLyAgICApKTtcbi8vL1xuLy8vIEBleGFtcGxlIFByaW1hcnkgYW5kIHNlY29uZGFyeSBidXR0b24gY2xhc3NlcywgcGx1cyBhbiBpbnZlcnNlIHRoZW1lIG1vZGlmaWVyIGNsYXNzLCBhbmQgY2xhc3NlcyBmb3IgYXJyb3cgbGVmdCBhbmQgYXJyb3cgcmlnaHQgaWNvbiBidXR0b25zLlxuLy8vICAgIEBpbmNsdWRlIG9CdXR0b25zKCRvcHRzOiAoXG4vLy8gICAgICAgICd0eXBlcyc6ICgncHJpbWFyeScsICdzZWNvbmRhcnknKSxcbi8vLyAgICAgICAgJ3RoZW1lcyc6ICgnaW52ZXJzZScpLFxuLy8vICAgICAgICAnaWNvbnMnOiAoJ2Fycm93LWxlZnQnLCAnYXJyb3ctcmlnaHQnKVxuLy8vICAgICkpO1xuLy8vXG4vLy8gQGV4YW1wbGUgU2Vjb25kYXJ5IGJ1dHRvbiBjbGFzc2VzLCBwbHVzIGNsYXNzZXMgdG8gc3VwcG9ydCBidXR0b24gZ3JvdXBzIGFuZCBwYWdpbmF0aW9uLlxuLy8vICAgIEBpbmNsdWRlIG9CdXR0b25zKCRvcHRzOiAoXG4vLy8gICAgICAgICd0eXBlcyc6ICgnc2Vjb25kYXJ5JyksXG4vLy8gICAgICAgICdwYWdpbmF0aW9uJzogdHJ1ZSxcbi8vLyAgICAgICAgJ2dyb3Vwcyc6IHRydWVcbi8vLyAgICApKTtcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJG9wdHNcbkBtaXhpbiBvQnV0dG9ucygkb3B0czogKFxuXHQnc2l6ZXMnOiAkX28tYnV0dG9ucy1zaXplcyxcblx0J3R5cGVzJzogJF9vLWJ1dHRvbnMtdHlwZXMsXG5cdCd0aGVtZXMnOiAkX28tYnV0dG9ucy10aGVtZXMsXG5cdCdpY29ucyc6ICRfby1idXR0b25zLWljb25zLFxuXHQncGFnaW5hdGlvbic6IHRydWUsXG5cdCdncm91cHMnOiB0cnVlXG4pKSB7XG5cdCR0eXBlczogbWFwLWdldCgkb3B0cywgJ3R5cGVzJyk7XG5cdCR0eXBlczogaWYoJHR5cGVzLCAkdHlwZXMsICgpKTtcblx0JHNpemVzOiBtYXAtZ2V0KCRvcHRzLCAnc2l6ZXMnKTtcblx0JHNpemVzOiBpZigkc2l6ZXMsICRzaXplcywgKCkpO1xuXHQkdGhlbWVzOiBtYXAtZ2V0KCRvcHRzLCAndGhlbWVzJyk7XG5cdCR0aGVtZXM6IGlmKCR0aGVtZXMsICR0aGVtZXMsICgpKTtcblx0JGljb25zOiBtYXAtZ2V0KCRvcHRzLCAnaWNvbnMnKTtcblx0JGljb25zOiBpZigkaWNvbnMsICRpY29ucywgKCkpO1xuXHQkcGFnaW5hdGlvbi1lbmFibGVkOiBtYXAtZ2V0KCRvcHRzLCAncGFnaW5hdGlvbicpO1xuXHQkZ3JvdXBzLWVuYWJsZWQ6IG1hcC1nZXQoJG9wdHMsICdncm91cHMnKTtcblxuXHQvLyBCYXNlIGJ1dHRvbiBjbGFzcy5cblx0Lm8tYnV0dG9ucyB7XG5cdFx0QGluY2x1ZGUgX29CdXR0b25zQmFzZUNvbnRlbnQoKTtcblx0fVxuXG5cdC8vIEhlbHBlciBjbGFzcyB0byBoaWRlIGRpc2FibGVkIGJ1dHRvbnMuXG5cdC5vLWJ1dHRvbnMtLWhpZGUtZGlzYWJsZWRbZGlzYWJsZWRdIHtcblx0XHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdH1cblxuXHQvLyBTaXplcy5cblx0QGVhY2ggJHNpemUgaW4gJHNpemVzIHtcblx0XHRAaWYgaW5kZXgoJF9vLWJ1dHRvbnMtc2l6ZXMsICRzaXplKSB7XG5cdFx0XHQuby1idXR0b25zLS0jeyRzaXplfSB7XG5cdFx0XHRcdEBpbmNsdWRlIF9vQnV0dG9uc1NpemVDb250ZW50KCRzaXplKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBJY29ucy5cblx0QGlmIChsZW5ndGgoJGljb25zKSA+IDApIHtcblx0XHQuby1idXR0b25zLWljb24ge1xuXHRcdFx0QGluY2x1ZGUgX29CdXR0b25zSWNvbkJhc2VDb250ZW50KCk7XG5cdFx0fVxuXG5cdFx0QGVhY2ggJHNpemUgaW4gJHNpemVzIHtcblx0XHRcdEBpZiBpbmRleCgkX28tYnV0dG9ucy1zaXplcywgJHNpemUpIHtcblx0XHRcdFx0Lm8tYnV0dG9ucy0tI3skc2l6ZX0uby1idXR0b25zLWljb24ge1xuXHRcdFx0XHRcdC8vIElFMTEgcmVuZGVycyB0aGUgYmFja2dyb3VuZCBpbWFnZSBhdCBhIHZlcnkgc21hbGwgc2l6ZSBpZiB5b3UgZG8gbm90XG5cdFx0XHRcdFx0Ly8gZG91YmxlLXVwIHRoZSBiYWNrZ3JvdW5kIHNpemUgaGVyZSwgZGVjbGFyaW5nIGEgd2lkdGggX2FuZF8gaGVpZ2h0LlxuXHRcdFx0XHRcdC8vIFNlZSBodHRwczovL3RoYXRlbWlsLmNvbS9ibG9nLzIwMTUvMDMvMTUvc2l6aW5nLXN2Zy1iYWNrZ3JvdW5kLWltYWdlcy1pbi1pbnRlcm5ldC1leHBsb3Jlci9cblx0XHRcdFx0XHRiYWNrZ3JvdW5kLXNpemU6IF9vQnV0dG9uc0dldCgnYmFja2dyb3VuZC1zaXplJywgJHNpemUpIF9vQnV0dG9uc0dldCgnYmFja2dyb3VuZC1zaXplJywgJHNpemUpO1xuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDogX29CdXR0b25zR2V0KCdpY29uLXBhZGRpbmcnLCAkc2l6ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBIaWdoZXIgc3BlY2lmaWNpdHkgdGhhbiBgLm8tYnV0dG9ucy0tI3skc2l6ZX0uby1idXR0b25zLWljb25gLlxuXHRcdC5vLWJ1dHRvbnMtaWNvbi5vLWJ1dHRvbnMtaWNvbi0taWNvbi1vbmx5IHtcblx0XHRcdEBpbmNsdWRlIF9vQnV0dG9uc0ljb25Pbmx5Q29udGVudCgpO1xuXHRcdH1cblxuXHRcdC5vLWJ1dHRvbnMtaWNvbl9fbGFiZWwge1xuXHRcdFx0QGluY2x1ZGUgb05vcm1hbGlzZVZpc3VhbGx5SGlkZGVuKCk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gVHlwZSAmIHRoZW1lIG1vZGlmaWVycy5cblx0QGVhY2ggJHR5cGUgaW4gJHR5cGVzIHtcblx0XHRAaWYgX29CdXR0b25zU3VwcG9ydHMoJHR5cGUpIHtcblx0XHRcdEBpbmNsdWRlIF9vQnV0dG9uc0FkZCgkdHlwZTogJHR5cGUsICRpY29uczogJGljb25zKTtcblx0XHR9XG5cdFx0QGVhY2ggJHRoZW1lIGluICR0aGVtZXMge1xuXHRcdFx0QGlmIF9vQnV0dG9uc1N1cHBvcnRzKCcjeyR0eXBlfS0jeyR0aGVtZX0nKSB7XG5cdFx0XHRcdEBpbmNsdWRlIF9vQnV0dG9uc0FkZCgkdHlwZSwgJHRoZW1lLCAkaWNvbnMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFBhZ2luYXRpb24gd3JhcHBlci5cblx0QGlmICRwYWdpbmF0aW9uLWVuYWJsZWQge1xuXHRcdC5vLWJ1dHRvbnMtcGFnaW5hdGlvbiB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXG5cdFx0XHQ+IC5vLWJ1dHRvbnMge1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDVweDtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogNXB4O1xuXHRcdFx0XHRtaW4td2lkdGg6IDI0cHg7XG5cdFx0XHR9XG5cblx0XHRcdD4gLm8tYnV0dG9uc1tkaXNhYmxlZF0ge1xuXHRcdFx0XHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0XHR9XG5cblx0XHRcdD4gLm8tYnV0dG9ucy0tYmlnIHtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiA5cHg7XG5cdFx0XHRcdHBhZGRpbmctcmlnaHQ6IDlweDtcblx0XHRcdFx0bWluLXdpZHRoOiAzNnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQ+IC5vLWJ1dHRvbnMtcGFnaW5hdGlvbl9fZWxsaXBzaXMge1xuXHRcdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAxKTtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdG1pbi13aWR0aDogMjRweDtcblx0XHRcdH1cblxuXHRcdFx0PiAuby1idXR0b25zLXBhZ2luYXRpb25fX2VsbGlwc2lzLS1iaWcge1xuXHRcdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiAzKTtcblx0XHRcdFx0bWluLXdpZHRoOiAzNnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBbnkgY2hpbGQgZWxlbWVudCBwcmVjZWRlZCBieSBhbm90aGVyIHNpYmxpbmcgZWxlbWVudC5cblx0XHRcdD4gKiArICoge1xuXHRcdFx0XHRtYXJnaW46IDAgMCAwIG9TcGFjaW5nQnlOYW1lKCdzMScpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIEdyb3VwIHdyYXBwZXIuXG5cdEBpZiAkZ3JvdXBzLWVuYWJsZWQge1xuXHRcdC5vLWJ1dHRvbnMtZ3JvdXAge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRcdD4gLm8tYnV0dG9ucyB7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdFx0XHQrIC5vLWJ1dHRvbnMge1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAtMXB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbkBpZiAoJG8tYnV0dG9ucy1pcy1zaWxlbnQgPT0gZmFsc2UpIHtcblx0QGluY2x1ZGUgb0J1dHRvbnMoKTtcblxuXHQvLyBTZXQgbW9kdWxlIHRvIHNpbGVudCBhZ2FpblxuXHQkby1idXR0b25zLWlzLXNpbGVudDogdHJ1ZSAhZ2xvYmFsO1xufVxuIiwiLy8vIEBvdXRwdXQgU3R5bGVzIGZvciBhIGN1c3RvbSBidXR0b24gdGhlbWUgYC5vLWJ1dHRvbnMtLVskbmFtZV1gLlxuLy8vIEBleGFtcGxlIC0gQWRkIGEgbmV3IGNsYXJldCB0aGVtZSBmb3IgYm90aCBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgYnV0dG9ucy5cbi8vLyAgICAgLy8gT3V0cHV0cyBjbGFzcyAuby1idXR0b25zLS1teS1zcGVjaWFsLWJ1dHRvblxuLy8vICAgICBAaW5jbHVkZSBvQnV0dG9uc0FkZFRoZW1lKFxuLy8vICAgICAgICAgJG5hbWU6ICdteS1zcGVjaWFsLWJ1dHRvbicsXG4vLy8gICAgICAgICAkb3B0czogKCdjb2xvcic6ICdjbGFyZXQtODAnKSxcbi8vLyAgICAgICAgICR0eXBlczogKCdwcmltYXJ5JywgJ3NlY29uZGFyeScpXG4vLy8gICAgICk7XG4vLy8gQGV4YW1wbGUgLSBBZGQgYSBuZXcgY2xhcmV0IHRoZW1lIHRvIGdvIG9uIGEgc2xhdGUgYmFja2dyb3VuZC5cbi8vLyAgICAgLy8gT3V0cHV0cyBjbGFzcyAuby1idXR0b25zLS1teS1zcGVjaWFsLWJ1dHRvblxuLy8vICAgICBAaW5jbHVkZSBvQnV0dG9uc0FkZFRoZW1lKFxuLy8vICAgICAgICAgJG5hbWU6ICdteS1zcGVjaWFsLWJ1dHRvbicsXG4vLy8gICAgICAgICAkb3B0czogKCdjb2xvcic6ICdjbGFyZXQtODAnLCAnY29udGV4dCc6ICdzbGF0ZScpLFxuLy8vICAgICAgICAgJHR5cGVzOiAoJ3ByaW1hcnknLCAnc2Vjb25kYXJ5Jylcbi8vLyAgICAgKTtcbi8vLyBAZXhhbXBsZSAtIEFkZCBhIG5ldyBjbGFyZXQgdGhlbWUgZm9yIGJ1dHRvbnMgd2l0aCBpY29ucy5cbi8vLyAgICAgLy8gT3V0cHV0cyBjbGFzcyAuby1idXR0b25zLS1teS1zcGVjaWFsLWJ1dHRvblxuLy8vICAgICBAaW5jbHVkZSBvQnV0dG9uc0FkZFRoZW1lKFxuLy8vICAgICAgICAgJG5hbWU6ICdteS1zcGVjaWFsLWJ1dHRvbicsXG4vLy8gICAgICAgICAkb3B0czogKCdjb2xvcic6ICdjbGFyZXQtODAnKSxcbi8vLyAgICAgICAgICR0eXBlczogKCdwcmltYXJ5JywgJ3NlY29uZGFyeScpLFxuLy8vICAgICAgICAgJGljb25zOiAoJ2Fycm93LXVwJywgJ2Fycm93LWRvd24nKVxuLy8vICAgICApO1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIEEgdGhlbWUgbmFtZSBlLmcuIGBteS1zcGVjaWFsLWJ1dHRvbmAuXG4vLy8gQHBhcmFtIHtNYXB9ICRvcHRzIC0gQSBjdXN0b20gdGhlbWUgbWFwIHdpdGggYSBgY29sb3JgIGFuZCBvcHRpb25hbCBgY29udGV4dGAga2V5LiBUaGUgY29udGV4dCBrZXkgaW5kaWNhdGVzIHRoZSBiYWNrZ3JvdW5kIGNvbG91ciB5b3VyIGJ1dHRvbiBpcyBwbGFjZWQgb24sIGl0IGRlZmF1bHRzIHRvIHRoZSBwYWdlIGNvbG91ciAocGFwZXIgZm9yIHRoZSBjb3JlIGJyYW5kLCB3aGl0ZSBvdGhlcndpc2UpLiBTZWUgW3RoZSBSRUFETUVdKGh0dHBzOi8vcmVnaXN0cnkub3JpZ2FtaS5mdC5jb20vY29tcG9uZW50cy9vLWJ1dHRvbnMvcmVhZG1lKSBmb3IgbW9yZSBkZXRhaWxzLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHR5cGVzIC0gVGhlIHR5cGVzIG9mIGJ1dHRvbiB0byBvdXRwdXQgdGhlIHRoZW1lIGZvciBlLmcuICgncHJpbWFyeScsICdzZWNvbmRhcnknKS5cbi8vLyBAcGFyYW0ge0xpc3R8TnVsbH0gJGljb25zIFtudWxsXSAtIFRoZSBidXR0b24gaWNvbnMgdG8gb3V0cHV0IGZvciB0aGlzIHRoZW1lLlxuQG1peGluIG9CdXR0b25zQWRkVGhlbWUoJG5hbWUsICRvcHRzLCAkdHlwZXMsICRpY29uczogbnVsbCkge1xuXHQvLyBBZGQgdGhlIG5hbWUgdG8gdGhlIHRoZW1lIG1hcC5cblx0JHRoZW1lOiBtYXAtbWVyZ2UoKCduYW1lJzogJG5hbWUpLCAkb3B0cyk7XG5cdC8vIENyZWF0ZSBlYWNoIGJ1dHRvbiB0eXBlIGZvciB0aGUgbmV3IHRoZW1lLlxuXHRAZWFjaCAkdHlwZSBpbiAkdHlwZXMge1xuXHRcdEBpbmNsdWRlIF9vQnV0dG9uc0FkZCgkdHlwZSwgJHRoZW1lLCAkaWNvbnMpO1xuXHR9XG59XG5cbi8vLyBDcmVhdGUgYSBzaW5nbGUgYnV0dG9uIHdpdGggYSBjdXN0b20gY2xhc3MuIFRvIGF2b2lkIGR1cGxpY2F0ZSBDU1MgdGhpcyBpc1xuLy8vIG5vdCByZWNvbW1lbmRlZCB1bmxlc3MgYG8tYnV0dG9uc2AgZGVmYXVsdCBjbGFzc2VzIGNhbm5vdCBiZSB1c2VkLiBTZWUgW3RoZVxuLy8vIFJFQURNRV0oaHR0cHM6Ly9yZWdpc3RyeS5vcmlnYW1pLmZ0LmNvbS9jb21wb25lbnRzL28tYnV0dG9ucy9yZWFkbWUpIGZvclxuLy8vIG1vcmUgZGV0YWlscy5cbi8vL1xuLy8vIEBleGFtcGxlIC0gT3V0cHV0IGEgcHJpbWFyeSBidXR0b24gd2l0aCByaWdodCBhcnJvdy5cbi8vLyAgICAgLm15LWJ1dHRvbiB7XG4vLy8gICAgICAgICBAaW5jbHVkZSBvQnV0dG9uc0NvbnRlbnQoJG9wdHM6IChcbi8vLyAgICAgICAgICAgICAndHlwZSc6ICdwcmltYXJ5Jyxcbi8vLyAgICAgICAgICAgICAnaWNvbic6ICdhcnJvdy1yaWdodCdcbi8vLyAgICAgICAgICkpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSAtIE91dHB1dCBhIHByaW1hcnkgYnV0dG9uIHdpdGggYSBjdXN0b20gbGVtb24gdGhlbWUuXG4vLy8gICAgIC5teS1sZW1vbi1idXR0b24ge1xuLy8vICAgICAgICAgQGluY2x1ZGUgb0J1dHRvbnNDb250ZW50KCRvcHRzOiAoXG4vLy8gICAgICAgICAgICAgJ3R5cGUnOiAncHJpbWFyeScsXG4vLy8gICAgICAgICAgICAgJ3RoZW1lJzogKCdjb2xvcic6ICdsZW1vbicpXG4vLy8gICAgICAgICApKTtcbi8vLyAgICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgLSBTaGFyZSBiYXNlIGJ1dHRvbiBzdHlsZXMuXG4vLy8gICAgIC8vIG91dHB1dCBiYXNlIGJ1dHRvbiBzdHlsZXMgb25seVxuLy8vICAgICAubXktYnV0dG9uIHtcbi8vLyAgICAgICAgIEBpbmNsdWRlIG9CdXR0b25zQ29udGVudCgkb3B0czogKCkpO1xuLy8vICAgICB9XG4vLy8gICAgIC8vIG91dHB1dCBtb2RpZmllciBjbGFzc2VzIGZvciBidXR0b24gdHlwZXMsIHdpdGhvdXQgZHVwbGljYXRpbmcgYmFzZSBzdHlsZXNcbi8vLyAgICAgLm15LWJ1dHRvbi0tc2Vjb25kYXJ5IHtcbi8vLyAgICAgICAgIEBpbmNsdWRlIG9CdXR0b25zQ29udGVudCgkb3B0czogKFxuLy8vICAgICAgICAgICAgICd0eXBlJzogJ3NlY29uZGFyeSdcbi8vLyAgICAgICAgICksICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG4vLy8gICAgIH1cbi8vLyAgICAgLm15LWJ1dHRvbi0tcHJpbWFyeSB7XG4vLy8gICAgICAgICBAaW5jbHVkZSBvQnV0dG9uc0NvbnRlbnQoJG9wdHM6IChcbi8vLyAgICAgICAgICAgICAndHlwZSc6ICdwcmltYXJ5J1xuLy8vICAgICAgICAgKSwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlKTtcbi8vLyAgICAgfVxuLy8vIEBvdXRwdXQgQnV0dG9uIENTUyBkZWNsYXJhdGlvbnMgd2l0aG91dCBhbnkgc2VsZWN0b3JzLlxuLy8vIEBwYXJhbSB7TWFwfSAkb3B0cyBbKCd0eXBlJzogJ251bGwnLCAndGhlbWUnOiBudWxsLCAnc2l6ZSc6IG51bGwsICdpY29uJzogbnVsbCwgJ2ljb24tb25seSc6IGZhbHNlKV0gLSBUaGUga2luZCBvZiBidXR0b24gc3R5bGVzIHRvIG91dHB1dC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWJhc2Utc3R5bGVzIFt0cnVlXSAtIFdoZXRoZXIgdG8gaW5jbHVkZSBiYXNlIGJ1dHRvbiBzdHlsZXMsIHNoYXJlZCBieSBhbGwgYnV0dG9ucy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWJhc2UtaWNvbi1zdHlsZXMgW3RydWVdIC0gV2hldGhlciB0byBpbmNsdWRlIGJhc2UgaWNvbiBidXR0b24gc3R5bGVzLCBzaGFyZWQgYnkgYWxsIGljb24gYnV0dG9ucyAoZGVmYXVsdHMgdG8gdHJ1ZSBvbmx5IHdoZW4gb3V0cHV0dGluZyBhbiBpY29uIGJ1dHRvbikuXG5AbWl4aW4gb0J1dHRvbnNDb250ZW50KCRvcHRzOiAoXG5cdCd0eXBlJzogbnVsbCxcblx0J3RoZW1lJzogbnVsbCxcblx0J3NpemUnOiBudWxsLFxuXHQnaWNvbic6IG51bGwsXG5cdCdpY29uLW9ubHknOiBmYWxzZVxuKSwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IHRydWUsICRpbmNsdWRlLWJhc2UtaWNvbi1zdHlsZXM6IHRydWUpIHtcblx0JHRoZW1lOiBtYXAtZ2V0KCRvcHRzLCAndGhlbWUnKTtcblx0JHR5cGU6IG1hcC1nZXQoJG9wdHMsICd0eXBlJyk7XG5cdCRpY29uLW9ubHk6IG1hcC1nZXQoJG9wdHMsICdpY29uLW9ubHknKTtcblx0JHNpemU6IG1hcC1nZXQoJG9wdHMsICdzaXplJyk7XG5cdCRpY29uOiBtYXAtZ2V0KCRvcHRzLCAnaWNvbicpO1xuXG5cdC8vIElmIGEgc2l6ZSBpcyBnaXZlbiwgZW5mb3JjZSBpdHMgYW4gYWN0dWFsIGJ1dHRvbiBzaXplXG5cdEBpZiAkc2l6ZSBhbmQgbm90IGluZGV4KCRfby1idXR0b25zLXNpemVzLCAkc2l6ZSkge1xuXHRcdEBlcnJvciAnXCIjeyRzaXplfVwiIGlzIG5vdCBhIGJ1dHRvbiBzaXplLiBBbGxvd2VkIHNpemVzIGluY2x1ZGUgJyArXG5cdFx0XHQnXCIjeyRfby1idXR0b25zLXNpemVzfVwiLiBPciwgZG8gbm90IHNldCB0aGUgYnV0dG9uIHNpemUgdG8gb3V0cHV0ICcgK1xuXHRcdFx0J3RoZSBkZWZhdWx0IHNpemUuJztcblx0fVxuXG5cdEBpZiAkdGhlbWUgYW5kIG5vdCAkdHlwZSB7XG5cdFx0JHRoZW1lLWRlc2NyaXB0aW9uOiBpZih0eXBlLW9mKCR0aGVtZSkgPT0gJ3N0cmluZycsICR0aGVtZSwgJ2N1c3RvbScpO1xuXHRcdEB3YXJuICdBIGJ1dHRvbiB0aGVtZSBjYW5ub3QgYmUgb3V0cHV0IHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgYnV0dG9uICcgK1xuXHRcdFx0J3R5cGUuIFRvIG91dHB1dCBzdHlsZXMgZm9yIGEgXCIjeyR0aGVtZS1kZXNjcmlwdGlvbn1cIiBidXR0b24gdGhlbWUgYWxzbyAnICtcblx0XHRcdCdzcGVjaWZ5IHRoZSBidXR0b24gdHlwZSBhcyBlaXRoZXIgYSBcInByaW1hcnlcIiBvciBcInNlY29uZGFyeVwiIGJ1dHRvbic7XG5cdH1cblxuXHQvLyBHZXQgYnV0dG9uIGNvbG91cnMgZm9yIHRoZSBidXR0b24gdHlwZSBhbmQgdGhlbWUuXG5cdCRidXR0b24tY29sb3JzLW1hcDogaWYoJHR5cGUsIF9vQnV0dG9uc0dlbmVyYXRlQ29sb3JzKCR0eXBlLCAkdGhlbWUpLCAoKSk7XG5cblx0QGlmICRpbmNsdWRlLWJhc2Utc3R5bGVzIHtcblx0XHRAaW5jbHVkZSBfb0J1dHRvbnNCYXNlQ29udGVudCgkc2l6ZSk7XG5cdH1cblxuXHQvLyBJbmNsdWRlIHNpemUgc3R5bGVzIGlmIHRoZXkgaGF2ZW4ndCBiZWVuIGluY2x1ZGVkXG5cdC8vIGFscmVhZHkgYXMgcGFydCBvZiB0aGUgYmFzZSBzdHlsZXMuXG5cdEBpZiAkc2l6ZSBhbmQgbm90ICRpbmNsdWRlLWJhc2Utc3R5bGVzIHtcblx0XHRAaW5jbHVkZSBfb0J1dHRvbnNTaXplQ29udGVudCgkc2l6ZSk7XG5cdH1cblxuXHRAaWYgJHR5cGUge1xuXHRcdEBpbmNsdWRlIF9vQnV0dG9uc1N0YXRlQ29udGVudCgkdHlwZSwgJGJ1dHRvbi1jb2xvcnMtbWFwKTtcblx0fVxuXG5cdEBpZiAkaWNvbiBhbmQgJGluY2x1ZGUtYmFzZS1pY29uLXN0eWxlcyB7XG5cdFx0QGluY2x1ZGUgX29CdXR0b25zSWNvbkJhc2VDb250ZW50KCRzaXplKTtcblx0fVxuXG5cdEBpZiAkaWNvbiBhbmQgJHR5cGUge1xuXHRcdEBpbmNsdWRlIF9vQnV0dG9uc0ljb25TdGF0ZXNDb250ZW50KCRpY29uLCAkYnV0dG9uLWNvbG9ycy1tYXApO1xuXHR9XG5cblx0QGlmICRpY29uLW9ubHkge1xuXHRcdEBpbmNsdWRlIF9vQnV0dG9uc0ljb25Pbmx5Q29udGVudCgpO1xuXHR9XG59XG5cblxuLy8vIEBvdXRwdXQgU3R5bGVzIGZvciBhIGJ1dHRvbiBlLmcuIGAuby1idXR0b25zLS1wcmltYXJ5YCwgYC5vLWJ1dHRvbnMtLXByaW1hcnkuby1idXR0b25zLS1pbnZlcnNlYC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHlwZSAtIFRoZSB0eXBlIG9mIGJ1dHRvbiB0byBvdXRwdXQgZS5nLiAoJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JykuXG4vLy8gQHBhcmFtIHtTdHJpbmd8TWFwfSAkdGhlbWUgLSBUaGUgYnV0dG9uIHRoZW1lIHRvIG91dHB1dC4gRWl0aGVyIGEgZGVmYXVsdCB0aGVtZSAnaW52ZXJzZScgb3IgY3VzdG9tIHRoZW1lIG1hcCB3aXRoIHByb3BlcnRpZXMgYG5hbWVgLCBgY29sb3JgLCBhbmQgb3B0aW9uYWwgYGNvbnRleHRgIGtleS5cbi8vLyBAcGFyYW0ge0xpc3R8TnVsbH0gJGljb25zIFtudWxsXSAtIFRoZSBidXR0b24gaWNvbnMgdG8gb3V0cHV0IGZvciB0aGUgYnV0dG9uIHR5cGUgYW5kIHRoZW1lLlxuQG1peGluIF9vQnV0dG9uc0FkZCgkdHlwZSwgJHRoZW1lOiBudWxsLCAkaWNvbnM6IG51bGwpIHtcblx0Ly8gRXJyb3IgaWYgdGhlIHRoZW1lIGlzIG5vdCBleHBlY3RlZC5cblx0QGlmICgkdGhlbWUgIT0gbnVsbCBhbmQgdHlwZS1vZigkdGhlbWUpICE9ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCR0aGVtZSkgIT0gJ21hcCcpIHtcblx0XHRAZXJyb3IgJ0V4cGVjdGVkIHRoZSBidXR0b24gdGhlbWUgdG8gYmUgYSBzdHJpbmcsIG1hcCwgb3IgYG51bGxgLic7XG5cdH1cblx0Ly8gR2VuZXJhdGUgYnV0dG9uIGNvbG91cnMgaWYgdGhleSBkb24ndCBhbHJlYWR5IGV4aXN0IGZvciB0aGlzIGJ1dHRvbi5cblx0JGJ1dHRvbi1jb2xvcnM6IF9vQnV0dG9uc0dldENvbG9ycygkdHlwZSwgJHRoZW1lKTtcblx0Ly8gQ3JlYXRlIENTUyBzZWxlY3RvcnMuXG5cdCR0aGVtZS1uYW1lOiBpZih0eXBlLW9mKCR0aGVtZSkgPT0gJ21hcCcsIG1hcC1nZXQoJHRoZW1lLCAnbmFtZScpLCAkdGhlbWUpO1xuXHQkdHlwZS1zZWxlY3RvcjogJy5vLWJ1dHRvbnMtLSN7JHR5cGV9Jztcblx0JHRoZW1lLXNlbGVjdG9yOiBpZigkdGhlbWUtbmFtZSwgJy5vLWJ1dHRvbnMtLSN7JHRoZW1lLW5hbWV9JywgJycpO1xuXHQvLyBPdXRwdXQgdmFyaWFudCBzdHlsZXMuXG5cdCN7JHR5cGUtc2VsZWN0b3J9I3skdGhlbWUtc2VsZWN0b3J9IHtcblx0XHRAaW5jbHVkZSBfb0J1dHRvbnNTdGF0ZUNvbnRlbnQoJHR5cGUsICRidXR0b24tY29sb3JzKTtcblx0fVxuXHQvLyBPdXRwdXQgdmFyaWFudCBpY29uIHN0eWxlcy5cblx0QGVhY2ggJGljb24gaW4gJGljb25zIHtcblx0XHQjeyR0eXBlLXNlbGVjdG9yfSN7JHRoZW1lLXNlbGVjdG9yfS5vLWJ1dHRvbnMtaWNvbi0tI3skaWNvbn0ge1xuXHRcdFx0QGluY2x1ZGUgX29CdXR0b25zSWNvblN0YXRlc0NvbnRlbnQoJGljb24sICRidXR0b24tY29sb3JzKTtcblx0XHR9XG5cdH1cbn1cblxuLy8vIFN0eWxlcyBzaGFyZWQgYnkgYWxsIGJ1dHRvbnMgb2YgYSBnaXZlbiBzaXplLlxuLy8vIEBwYXJhbSB7TnVsbHxOdW1iZXJ9ICRzaXplXG5AbWl4aW4gX29CdXR0b25zQmFzZUNvbnRlbnQoJHNpemU6IG51bGwpIHtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCR3ZWlnaHQ6ICdzZW1pYm9sZCcpO1xuXHRAaW5jbHVkZSBfb0J1dHRvbnNTaXplQ29udGVudCgkc2l6ZSk7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0bWFyZ2luOiAwO1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHR0cmFuc2l0aW9uOiAwLjNzIGJhY2tncm91bmQtY29sb3IsIDAuMTVzIGNvbG9yIGVhc2Utb3V0LCAwLjE1cyBib3JkZXItY29sb3IgZWFzZS1vdXQ7XG5cdHVzZXItc2VsZWN0OiBub25lO1xuXHRiYWNrZ3JvdW5kLWNsaXA6IGJvcmRlci1ib3g7XG5cdGJvcmRlci13aWR0aDogMXB4O1xuXHQvLyBQcmV2ZW50IGZhdCB3aGl0ZSB0eXBlIG9uIGEgZGFyayBiYWNrZ3JvdW5kXG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXHQtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRib3JkZXItcmFkaXVzOiAwOyAvLyBFZGdlIDgwIGluc2lzdHMgb24gYSBib2FyZGVyIHJhZGl1cy5cblxuXHQvLyBTYW1lIGFzIGFyaWEtZGlzYWJsZWQ6XG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhL3N0YXRlc19hbmRfcHJvcGVydGllcyNhcmlhLWRpc2FibGVkXG5cdC8vIFRoaXMgaXMgYSBjb21tb24gc3R5bGUgZm9yIGFsbCBidXR0b24gdGhlbWVzXG5cdCZbZGlzYWJsZWRdIHtcblx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHRvcGFjaXR5OiAwLjQ7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHR9XG59XG5cbi8vLyBTdHlsZXMgc2hhcmVkIGJ5IGFsbCBidXR0b25zIG9mIGEgZ2l2ZW4gc2l6ZSB3aXRoIGFuIGljb24uXG4vLy8gQHBhcmFtIHtOdWxsfE51bWJlcn0gJHNpemVcbkBtaXhpbiBfb0J1dHRvbnNJY29uQmFzZUNvbnRlbnQoJHNpemU6IG51bGwpIHtcblx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogM3B4O1xuXHRwYWRkaW5nLWxlZnQ6IF9vQnV0dG9uc0dldCgnaWNvbi1wYWRkaW5nJywgJHNpemUpO1xufVxuXG4vLy8gU3R5bGVzIGZvciBhIGJ1dHRvbiB3aGljaCBpcyBhbiBpY29uIG9ubHkuXG5AbWl4aW4gX29CdXR0b25zSWNvbk9ubHlDb250ZW50KCkge1xuXHRwYWRkaW5nLWxlZnQ6IDA7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDUwJTtcblx0bWluLXdpZHRoOiA0MHB4O1xufVxuXG4vLy8gU3R5bGVzIHRvIHNpemUgYSBidXR0b24uXG4vLy8gQHBhcmFtIHtOdWxsfE51bWJlcn0gJHNpemVcbkBtaXhpbiBfb0J1dHRvbnNTaXplQ29udGVudCgkc2l6ZTogbnVsbCkge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoJHNjYWxlOiBfb0J1dHRvbnNHZXQoJ3NjYWxlJywgJHNpemUpKTtcblx0JGxpbmUtaGVpZ2h0OiBudGgob1R5cG9ncmFwaHlHZXRTY2FsZShcblx0XHQkaW5kZXg6IF9vQnV0dG9uc0dldCgnc2NhbGUnLCAkc2l6ZSksXG5cdFx0JGZvbnQ6IG9UeXBvZ3JhcGh5R2V0Rm9udEZhbWlseSgnc2FucycpXG5cdCksIDEpO1xuXHRsaW5lLWhlaWdodDogI3skbGluZS1oZWlnaHR9cHg7XG5cdC8vIElFMTEgcmVuZGVycyB0aGUgYmFja2dyb3VuZCBpbWFnZSBhdCBhIHZlcnkgc21hbGwgc2l6ZSBpZiB5b3UgZG8gbm90XG5cdC8vIGRvdWJsZS11cCB0aGUgYmFja2dyb3VuZCBzaXplIGhlcmUsIGRlY2xhcmluZyBhIHdpZHRoIF9hbmRfIGhlaWdodC5cblx0Ly8gU2VlIGh0dHBzOi8vdGhhdGVtaWwuY29tL2Jsb2cvMjAxNS8wMy8xNS9zaXppbmctc3ZnLWJhY2tncm91bmQtaW1hZ2VzLWluLWludGVybmV0LWV4cGxvcmVyL1xuXHRiYWNrZ3JvdW5kLXNpemU6IF9vQnV0dG9uc0dldCgnYmFja2dyb3VuZC1zaXplJywgJHNpemUpIF9vQnV0dG9uc0dldCgnYmFja2dyb3VuZC1zaXplJywgJHNpemUpO1xuXHRtaW4taGVpZ2h0OiBfb0J1dHRvbnNHZXQoJ21pbi1oZWlnaHQnLCAkc2l6ZSk7XG5cdG1pbi13aWR0aDogX29CdXR0b25zR2V0KCdtaW4td2lkdGgnLCAkc2l6ZSk7XG5cdHBhZGRpbmc6IF9vQnV0dG9uc0dldCgncGFkZGluZycsICRzaXplKTtcbn1cblxuLy8vIFN0eWxlcyB0byBhcHBseSBjb2xvdXJzIHRvIGVhY2ggYnV0dG9uIHN0YXRlLCBlLmcuIGZvY3VzLCBhY3RpdmUuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlIC0gVGhlIHR5cGUgb2YgYnV0dG9uLCBlLmcuICdwcmltYXJ5J1xuLy8vIEBwYXJhbSB7TWFwfSAkYnV0dG9uLWNvbG9ycy1tYXAgLSBUaGUgY29sb3VycyBmb3IgdGhpcyBidXR0b24gKEBzZWUgX29CdXR0b25zR2V0Q29sb3JzKS5cbkBtaXhpbiBfb0J1dHRvbnNTdGF0ZUNvbnRlbnQoJHR5cGUsICRidXR0b24tY29sb3JzLW1hcCkge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2JhY2tncm91bmQnKTtcblx0Y29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnY29sb3InKTtcblx0Ym9yZGVyLWNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2JvcmRlcicpO1xuXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnaG92ZXItYmFja2dyb3VuZCcpO1xuXHRcdGNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2hvdmVyLWNvbG9yJyk7XG5cdFx0Ym9yZGVyLWNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2hvdmVyLWJvcmRlcicpO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0fVxuXG5cdCY6Zm9jdXMge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnZm9jdXMtYmFja2dyb3VuZCcpO1xuXHRcdGNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2ZvY3VzLWNvbG9yJyk7XG5cdFx0Ym9yZGVyLWNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2ZvY3VzLWJvcmRlcicpO1xuXHR9XG5cblx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZFxuXHQvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXByZXNzZWRcblx0JlthcmlhLXNlbGVjdGVkPXRydWVdLCAvLyBlLmcuIEEgc2VsZWN0ZWQgdGFiIG9yIHBhZ2UgbnVtYmVyIGluIHBhZ2luYXRpb24uXG5cdCZbYXJpYS1jdXJyZW50XSwgLy8gZS5nLiBBIHNlbGVjdGVkIHRhYiBvciBwYWdlIG51bWJlciBpbiBwYWdpbmF0aW9uIChmb3IgbGlua3Mgb25seSkuXG5cdCZbYXJpYS1wcmVzc2VkPXRydWVdLCAvLyBlLmcuIEEgXCJmb2xsb3dcIiBidXR0b24gdGhhdCBpcyBwcmVzc2VkLlxuXHQmOmFjdGl2ZSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdhY3RpdmUtYmFja2dyb3VuZCcpO1xuXHRcdGNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2FjdGl2ZS1jb2xvcicpO1xuXHRcdGJvcmRlci1jb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdhY3RpdmUtYm9yZGVyJyk7XG5cdH1cbn1cblxuLy8vIFN0eWxlcyB0byBhcHBseSBpY29ucyBvZiBkaWZmZXJlbnQgY29sb3VycyB0byBlYWNoIGJ1dHRvbiBzdGF0ZSwgZS5nLiBmb2N1cywgYWN0aXZlLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHlwZSAtIFRoZSB0eXBlIG9mIGJ1dHRvbiwgZS5nLiAncHJpbWFyeSdcbi8vLyBAcGFyYW0ge01hcH0gJGJ1dHRvbi1jb2xvcnMtbWFwIC0gVGhlIGNvbG91cnMgZm9yIHRoaXMgYnV0dG9uIChAc2VlIF9vQnV0dG9uc0dldENvbG9ycykuXG5AbWl4aW4gX29CdXR0b25zSWNvblN0YXRlc0NvbnRlbnQoJGljb24sICRidXR0b24tY29sb3JzLW1hcCkge1xuXHQkbm9ybWFsLWljb24tY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnY29sb3InKTtcblx0JGhvdmVyLWljb24tY29sb3I6IG1hcC1nZXQoJGJ1dHRvbi1jb2xvcnMtbWFwLCAnaG92ZXItY29sb3InKTtcblx0JGFjdGl2ZS1pY29uLWNvbG9yOiBtYXAtZ2V0KCRidXR0b24tY29sb3JzLW1hcCwgJ2FjdGl2ZS1jb2xvcicpO1xuXHQkZm9jdXMtaWNvbi1jb2xvcjogbWFwLWdldCgkYnV0dG9uLWNvbG9ycy1tYXAsICdmb2N1cy1jb2xvcicpO1xuXG5cdEBpbmNsdWRlIF9vQnV0dG9uc0dldEljb24oJGljb24sICRub3JtYWwtaWNvbi1jb2xvcik7XG5cblx0Ly8gT25seSBvdXRwdXQgdGhlIGhvdmVyIGljb24gaWYgaXQgaXMgZGlmZmVyZW50IHRvIHRoZSBkZWZhdWx0IGljb24uXG5cdEBpZigkaG92ZXItaWNvbi1jb2xvciAhPSAkbm9ybWFsLWljb24tY29sb3IpIHtcblx0XHQmOmhvdmVyIHtcblx0XHRcdEBpbmNsdWRlIF9vQnV0dG9uc0dldEljb24oJGljb24sICRob3Zlci1pY29uLWNvbG9yKTtcblx0XHR9XG5cdFx0Ly8gSGFjayB0byBnZXQgdGhlIGhvdmVyIHN0YXRlIGNvbG91ciBzdmcgdG8gZG93bmxvYWQgdG8gcHJldmVudCBmbGFzaFxuXHRcdC8vIGFzIGljb24gaXMgZG93bmxvYWRlZCBvbiBob3ZlclxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdEBpbmNsdWRlIF9vQnV0dG9uc0dldEljb24oJGljb24sICRob3Zlci1pY29uLWNvbG9yKTtcblx0XHRcdC8vIEZvciBhbiB1bmtub3duIHJlYXNvbiB3aGVuIGJ1dHRvbiBjb3B5IGhhcyBsZWFkaW5nIHdoaXRlc3BhY2Vcblx0XHRcdC8vIFNhZmFyaSByZW5kZXJzIHRoZSBiZWZvcmUgcHNldWRvIGVsZW1lbnQgYWJvdmUgdGhlIGNvbnRlbnQgd2l0aFxuXHRcdFx0Ly8gYSBoZWlnaHQgb2YgMTZweCBhbmQgd2lkdGggMXB4LCBtYWtpbmcgdGhlIGJ1dHRvbiB0b28gdGFsbC5cblx0XHRcdC8vIElmIHdoaXRlc3BhY2UgaXMgaW5jbHVkZWQgaW4gdGhlIHBzZXVkbyBlbGVtZW50IFNhZmFyaSBkb2VzIG5vdFxuXHRcdFx0Ly8gZG8gdGhpczogaHR0cHM6Ly9naXRodWIuY29tL0ZpbmFuY2lhbC1UaW1lcy9vLWJ1dHRvbnMvaXNzdWVzLzI1MFxuXHRcdFx0Y29udGVudDogJyAnO1xuXHRcdH1cblx0fVxuXG5cdC8vIE9ubHkgb3V0cHV0IHRoZSBmb2N1cyBpY29uIGlmIGl0IGlzIGRpZmZlcmVudCB0byB0aGUgZGVmYXVsdCBvciBob3ZlciBpY29uLlxuXHRAaWYoJGZvY3VzLWljb24tY29sb3IgIT0gJG5vcm1hbC1pY29uLWNvbG9yIG9yICRmb2N1cy1pY29uLWNvbG9yICE9ICRob3Zlci1pY29uLWNvbG9yKSB7XG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRAaW5jbHVkZSBfb0J1dHRvbnNHZXRJY29uKCRpY29uLCAkZm9jdXMtaWNvbi1jb2xvcik7XG5cdFx0fVxuXHR9XG5cblx0Ly8gT25seSBvdXRwdXQgdGhlIGFjdGl2ZSBpY29uIGlmIGl0IGlzIGRpZmZlcmVudCB0byBzdGF0ZXMgd2l0aCBsZXNzIHNwZWNpZmljaXR5LlxuXHRAaWYoJGFjdGl2ZS1pY29uLWNvbG9yICE9ICRub3JtYWwtaWNvbi1jb2xvciBvciAkYWN0aXZlLWljb24tY29sb3IgIT0gJGhvdmVyLWljb24tY29sb3Igb3IgJGFjdGl2ZS1pY29uLWNvbG9yICE9ICRmb2N1cy1pY29uLWNvbG9yKSB7XG5cdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZFxuXHRcdC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZFxuXHRcdCZbYXJpYS1zZWxlY3RlZD10cnVlXSwgLy8gZS5nLiBBIHNlbGVjdGVkIHRhYiBvciBwYWdlIG51bWJlciBpbiBwYWdpbmF0aW9uLlxuXHRcdCZbYXJpYS1jdXJyZW50XSwgLy8gZS5nLiBBIHNlbGVjdGVkIHRhYiBvciBwYWdlIG51bWJlciBpbiBwYWdpbmF0aW9uIChmb3IgbGlua3Mgb25seSkuXG5cdFx0JlthcmlhLXByZXNzZWQ9dHJ1ZV0sIC8vIGUuZy4gQSBcImZvbGxvd1wiIGJ1dHRvbiB0aGF0IGlzIHByZXNzZWQuXG5cdFx0JjphY3RpdmUge1xuXHRcdFx0QGluY2x1ZGUgX29CdXR0b25zR2V0SWNvbigkaWNvbiwgJGFjdGl2ZS1pY29uLWNvbG9yKTtcblx0XHR9XG5cdFx0Ly8gSGFjayB0byBnZXQgdGhlIGFjdGl2ZSBzdGF0ZSBjb2xvdXIgc3ZnIHRvIGRvd25sb2FkIHRvIHByZXZlbnQgZmxhc2hcblx0XHQvLyBhcyBpY29uIGlzIGRvd25sb2FkZWQgb24gYWN0aXZlXG5cdFx0JjphZnRlciB7XG5cdFx0XHRAaW5jbHVkZSBfb0J1dHRvbnNHZXRJY29uKCRpY29uLCAkYWN0aXZlLWljb24tY29sb3IpO1xuXHRcdFx0Y29udGVudDogJyc7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWRkIGZhbGxiYWNrIGZvciBNUyBIaWdoIENvbnRyYXN0IG1vZGUuXG5cdC8vIFRoaXMgb25seSBuZWVkcyB0byBiZSBvdXRwdXQgb25jZSwgbm90IGZvciBldmVyeSBidXR0b24gc3RhdGUuXG5cdC8vIHNhc3MtbGludDpkaXNhYmxlIG5vLXZlbmRvci1wcmVmaXhlc1xuXHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuXHRcdEBpbmNsdWRlIG9JY29uc0NvbnRlbnQoJGljb24tbmFtZTogJGljb24sICRzaXplOiBudWxsLCAkY29sb3I6ICNmZmZmZmYsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSwgJGhpZ2gtY29udHJhc3QtZmFsbGJhY2s6IGZhbHNlKTtcblx0fVxuXHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGJsYWNrLW9uLXdoaXRlKSB7XG5cdFx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgkaWNvbi1uYW1lOiAkaWNvbiwgJHNpemU6IG51bGwsICRjb2xvcjogIzAwMDAwMCwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlLCAkaGlnaC1jb250cmFzdC1mYWxsYmFjazogZmFsc2UpO1xuXHR9XG5cdC8vIHNhc3MtbGludDplbmFibGUgbm8tdmVuZG9yLXByZWZpeGVzXG59XG5cbi8vLyBSZXF1ZXN0IGFuIGljb24gZnJvbSBvLWljb25zIG9mIGEgc3BlY2lmaWMgY29sb3VyIGZvciBhIGJ1dHRvbi5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkaWNvbi1uYW1lIC0gaWNvbiB0byByZXF1ZXN0XG4vLy8gQHBhcmFtIHtDb2xvcn0gJGljb24tY29sb3IgLSBhIGhleCBmb3IgdGhlIGJ1dHRvbiBpY29uIGNvbG91clxuQG1peGluIF9vQnV0dG9uc0dldEljb24oJGljb24tbmFtZSwgJGljb24tY29sb3IpIHtcblx0QGluY2x1ZGUgb0ljb25zQ29udGVudCgkaWNvbi1uYW1lOiAkaWNvbi1uYW1lLCAkc2l6ZTogbnVsbCwgJGNvbG9yOiAkaWNvbi1jb2xvciwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IGZhbHNlLCAkaGlnaC1jb250cmFzdC1mYWxsYmFjazogZmFsc2UpO1xufVxuIiwiLy8vIFZpc3VhbGx5IGhpZGUgYW4gZWxlbWVudCB3aGlsZSBzdGlsbFxuLy8vIGFsbG93aW5nIGl0IHRvIGJlIHJlYWQgYnkgYSBzY3JlZW5yZWFkZXJcbkBtaXhpbiBvTm9ybWFsaXNlVmlzdWFsbHlIaWRkZW4ge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGNsaXA6IHJlY3QoMCAwIDAgMCk7XG5cdGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDAgMCk7XG5cdG1hcmdpbjogLTFweDtcblx0Ym9yZGVyOiAwO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRwYWRkaW5nOiAwO1xuXHR3aWR0aDogMnB4O1xuXHRoZWlnaHQ6IDJweDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLy8vIENsZWFyZml4IGhlbHBlciBzdHlsZXNcbi8vLyBPdXRwdXRzIGNsZWFyZml4IHN0eWxlcyBvbiB0aGUgY3VycmVudCBlbGVtZW50XG5AbWl4aW4gb05vcm1hbGlzZUNsZWFyZml4IHtcblx0em9vbTogMTtcblxuXHQmOmJlZm9yZSxcblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogJyc7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdFx0ZGlzcGxheTogZmxleDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1ibG9jay1uby1kdXBsaWNhdGUtcHJvcGVydGllc1xuXHR9XG5cdCY6YWZ0ZXIge1xuXHRcdGNsZWFyOiBib3RoO1xuXHR9XG59XG5cbi8vLyBBZGRzIGJveCBzaXppbmcgdG8gY3VycmVudCBhbmQgYWxsIGNoaWxkIGVsZW1lbnRzXG5AbWl4aW4gb05vcm1hbGlzZUJveFNpemluZyB7XG5cblx0LyphdXRvcHJlZml4ZXI6IG9mZiovXG5cdC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cblxuXHQmICosXG5cdCYgKjpiZWZvcmUsXG5cdCYgKjphZnRlciB7XG5cblx0XHQvKmF1dG9wcmVmaXhlcjogb2ZmKi9cblx0XHQtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXHRcdC1tb3otYm94LXNpemluZzogaW5oZXJpdDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdFx0Ym94LXNpemluZzogaW5oZXJpdDtcblxuXHR9XG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byBnZW5lcmFsIGh0bWwgZWxlbWVudHNcbi8vLyBlZmZlY3RzOiA8aHRtbD4sIDxib2R5PiwgPG1haW4+LCBhbmQgOmZvY3VzIHN0YXRlXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX29Ob3JtYWxpc2VCb2R5KCRmb250LXNtb290aGluZzogdHJ1ZSwgJGJveC1zaXppbmc6IHRydWUsICRmb2N1czogdHJ1ZSwgJHJlZHVjZS1tb3Rpb246IHRydWUpIHtcblx0aHRtbCxcblx0Ym9keSB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG5cblx0XHQtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cdFx0LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblxuXG5cdFx0QGlmICRmb250LXNtb290aGluZyB7XG5cblx0XHRcdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRcdFx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblxuXHRcdH1cblxuXHRcdEBpZiAkYm94LXNpemluZyB7XG5cdFx0XHRAaW5jbHVkZSBvTm9ybWFsaXNlQm94U2l6aW5nO1xuXHRcdH1cblxuXHRcdEBpZiAkcmVkdWNlLW1vdGlvbiB7XG5cdFx0XHQvLyBJbW1lZGlhdGVseSBqdW1wIGFueSBhbmltYXRpb24gdG8gdGhlIGVuZCBwb2ludCBpZiB0aGUgdXNlciBoYXNcblx0XHRcdC8vIHNldCB0aGVpciBkZXZpY2UgdG8gXCJwcmVmZXJzIHJlZHVjZWQgbW90aW9uXCIuXG5cdFx0XHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemRldnMvY3NzcmVtZWR5L2lzc3Vlcy8xMVxuXHRcdFx0QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0XHRcdFx0Kixcblx0XHRcdFx0KjpiZWZvcmUsXG5cdFx0XHRcdCo6YWZ0ZXIge1xuXG5cdFx0XHRcdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiAwLjAwMXMgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblx0XHRcdFx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAwMXMgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblx0XHRcdFx0XHRhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIEdpdmUgPG1haW4+cyB0aGUgcHJvcGVyIGRpc3BsYXkgdmFsdWUgaW4gSUUuXG5cdG1haW4ge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0QGlmICRmb2N1cyB7XG5cdFx0QGluY2x1ZGUgX29Ob3JtYWxpc2VGb2N1cygpO1xuXHR9XG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyBmb3IgZm9jdXNlZCBlbGVtZW50cy5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUZvY3VzIHtcblx0Ly8gQXBwbHkgOmZvY3VzIHN0eWxlcyBhcyBhIGZhbGxiYWNrXG5cdC8vIFRoZXNlIHN0eWxlcyB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIGJyb3dzZXJzIHRoYXQgZG9uJ3QgdXNlIHRoZSBwb2x5ZmlsbCwgdGhpcyBpbmNsdWRlcyBicm93c2VycyB3aGljaCBzdXBwb3J0IHRoZSBmZWF0dXJlIG5hdGl2ZWx5LlxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSksXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB7XG5cdFx0Ly8gU3RhbmRhcmRpc2UgZm9jdXMgc3R5bGVzLlxuXHRcdDpmb2N1cyB7XG5cdFx0XHRvdXRsaW5lOiAycHggc29saWQgJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0XHR9XG5cblx0XHRpbnB1dDpmb2N1cyxcblx0XHR0ZXh0YXJlYTpmb2N1cyxcblx0XHRzZWxlY3Q6Zm9jdXMge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4ICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXHR9XG5cblx0Ly8gV2hlbiB0aGUgZm9jdXMtdmlzaWJsZSBwb2x5ZmlsbCBpcyBhcHBsaWVkIGAuanMtZm9jdXMtdmlzaWJsZWAgaXMgYWRkZWQgdG8gdGhlIGh0bWwgZG9tIG5vZGVcblx0Ly8gKHRoZSBib2R5IG5vZGUgaW4gdjQgb2YgdGhlIDNyZCBwYXJ0eSBwb2x5ZmlsbClcblxuXHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdGJvZHkuanMtZm9jdXMtdmlzaWJsZSwgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRodG1sLmpzLWZvY3VzLXZpc2libGUge1xuXHRcdC8vIFN0YW5kYXJkaXNlIGZvY3VzIHN0eWxlcy5cblx0XHQvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0LmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogMnB4IHNvbGlkICRfby1ub3JtYWxpc2UtZm9jdXMtY29sb3I7XG5cdFx0fVxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblx0XHRpbnB1dC5mb2N1cy12aXNpYmxlLCAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cdFx0dGV4dGFyZWEuZm9jdXMtdmlzaWJsZSxcblx0XHRzZWxlY3QuZm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0XHR9XG5cdFx0Ly8gRGlzYWJsZSBicm93c2VyIGRlZmF1bHQgZm9jdXMgc3R5bGUuXG5cdFx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRcdDpmb2N1czpub3QoLmZvY3VzLXZpc2libGUpIHtcblx0XHRcdG91dGxpbmU6IDA7XG5cdFx0fVxuXHR9XG5cblxuXHQvLyBUaGVzZSBzdHlsZXMgd2lsbCBiZSBpZ25vcmVkIGJ5IGJyb3dzZXJzIHdoaWNoIGRvIG5vdCByZWNvZ25pc2UgdGhlIDpmb2N1cy12aXNpYmxlIHNlbGVjdG9yIChhcyBwZXIgdGhlIHRoaXJkIGJ1bGxldCBwb2ludCBpbiBodHRwczovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLTMvI0NvbmZvcm1hbmNlKVxuXHQvLyBJZiBhIGJyb3dzZXIgc3VwcG9ydHMgOmZvY3VzLXZpc2libGUgd2UgdW5zZXQgdGhlIDpmb2N1cyBzdHlsZXMgdGhhdCB3ZXJlIGFwcGxpZWQgYWJvdmVcblx0Ly8gKHdpdGhpbiB0aGUgaHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIGJsb2NrKS5cblx0OmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSA6Zm9jdXMge1xuXHRcdG91dGxpbmU6IHVuc2V0O1xuXHR9XG5cblx0OmZvY3VzLXZpc2libGUsXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cyxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIGlucHV0OmZvY3VzLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgdGV4dGFyZWE6Zm9jdXMsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cyxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cyxcblx0aHRtbDpub3QoLmpzLWZvY3VzLXZpc2libGUpIHNlbGVjdDpmb2N1cyB7XG5cdFx0Ym94LXNoYWRvdzogdW5zZXQ7XG5cdH1cblxuXHQvLyBTdHlsZXMgZ2l2ZW4gOmZvY3VzLXZpc2libGUgc3VwcG9ydC4gRXh0cmEgc2VsZWN0b3JzIG5lZWRlZCB0byBtYXRjaFxuXHQvLyBwcmV2aW91cyBgOmZvY3VzYCBzZWxlY3RvciBzcGVjaWZpY2l0eS5cblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIDpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgOmZvY3VzLXZpc2libGUsXG5cdDpmb2N1cy12aXNpYmxlIHtcblx0XHRvdXRsaW5lOiAycHggc29saWQgJF9vLW5vcm1hbGlzZS1mb2N1cy1jb2xvcjtcblx0fVxuXG5cdGJvZHk6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBpbnB1dDpmb2N1cy12aXNpYmxlLFxuXHRodG1sOm5vdCguanMtZm9jdXMtdmlzaWJsZSkgaW5wdXQ6Zm9jdXMtdmlzaWJsZSxcblx0Ym9keTpub3QoLmpzLWZvY3VzLXZpc2libGUpIHRleHRhcmVhOmZvY3VzLXZpc2libGUsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSB0ZXh0YXJlYTpmb2N1cy12aXNpYmxlLFxuXHRib2R5Om5vdCguanMtZm9jdXMtdmlzaWJsZSkgc2VsZWN0OmZvY3VzLXZpc2libGUsXG5cdGh0bWw6bm90KC5qcy1mb2N1cy12aXNpYmxlKSBzZWxlY3Q6Zm9jdXMtdmlzaWJsZSxcblx0aW5wdXQ6Zm9jdXMtdmlzaWJsZSxcblx0dGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSxcblx0c2VsZWN0OmZvY3VzLXZpc2libGUge1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCAkX28tbm9ybWFsaXNlLWZvY3VzLWNvbG9yO1xuXHR9XG5cblx0Ly8gUHJldmVudCBJRSBmcm9tIHB1dHRpbmcgZm9jdXMgc3R5bGVzIG9uIHRoZSBib2R5IG9yIGh0bWwuIFRoZXNlIHNlbGVjdG9yc1xuXHQvLyBzZXJ2ZSBhcyBhIGJsYWNrbGlzdCBmb3IgXCJ0aGluZ3Mgd2UndmUgZm91bmQgY2FuIGhhdmUgZm9jdXMgYnV0IHdlIGRvbid0IHdhbnRcIlxuXHRodG1sOmZvY3VzLFxuXHRib2R5OmZvY3VzLFxuXHRbcmVhZG9ubHldOmZvY3VzIHtcblx0XHRvdXRsaW5lOiBub25lO1xuXHR9XG5cbn1cblxuLy8vIEFkZHMgbm9ybWFsaXNpbmcgc3R5bGVzIHRvIGxpbmsgZWxlbWVudHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUxpbmtzIHtcblxuXHQvLyBSZW1vdmUgdGhlIGdyZXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG5cdGEge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHRoZSBvdXRsaW5lIG9uIGZvY3VzZWQgbGlua3Mgd2hlbiB0aGV5IGFyZVxuXHQvLyBhbHNvIGFjdGl2ZSBvciBob3ZlcmVkIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuXHRhOmFjdGl2ZSxcblx0YTpob3ZlciB7XG5cdFx0b3V0bGluZS13aWR0aDogMDtcblx0fVxuXG59XG5cbi8vLyBBZGRzIG5vcm1hbGlzaW5nIHN0eWxlcyB0byB0ZXh0IHJlbGF0ZWQgZWxlbWVudHNcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZVRleHQge1xuXG5cdC8vIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBGaXJlZm94IDM5LS5cblx0Ly8gMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cblx0Ly8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXHRhYmJyW3RpdGxlXSB7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMDsgLy8gWzFdXG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8vIFsyXVxuXHRcdC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWNsYXJhdGlvbi1ibG9jay1uby1kdXBsaWNhdGUtcHJvcGVydGllc1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLy8gWzJdXG5cdH1cblxuXHQvLyBQcmV2ZW50IHRoZSBkdXBsaWNhdGUgYXBwbGljYXRpb24gb2YgYGJvbGRlcmAgYnkgdGhlIG5leHQgcnVsZSBpbiBTYWZhcmkgNi5cblx0Yixcblx0c3Ryb25nIHtcblx0XHRmb250LXdlaWdodDogaW5oZXJpdDtcblx0fVxuXG5cdC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG5cdGIsXG5cdHN0cm9uZyB7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGRlcjtcblx0fVxuXG5cdC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cblx0ZGZuIHtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdH1cblxuXHQvLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cblx0Ly8gYWxsIGJyb3dzZXJzLlxuXHRzdWIsXG5cdHN1cCB7XG5cdFx0Zm9udC1zaXplOiA3NSU7XG5cdFx0bGluZS1oZWlnaHQ6IDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcblx0fVxuXG5cdHN1YiB7XG5cdFx0Ym90dG9tOiAtMC4yNWVtO1xuXHR9XG5cblx0c3VwIHtcblx0XHR0b3A6IC0wLjVlbTtcblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gdGhlIGltYWdlIGVsZW1lbnRcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfb05vcm1hbGlzZUltYWdlcyB7XG5cdC8vIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAtLlxuXHRpbWcge1xuXHRcdGJvcmRlci1zdHlsZTogbm9uZTtcblx0fVxufVxuXG4vLy8gQWRkcyBub3JtYWxpc2luZyBzdHlsZXMgdG8gZm9ybSBlbGVtZW50c1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9vTm9ybWFsaXNlRm9ybXMge1xuXHQvLyBSZXN0b3JlIHRoZSBmb250IHdlaWdodCB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cblx0b3B0Z3JvdXAge1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHR9XG5cblx0Ly8gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG5cdC8vIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG5cdC8vIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cblx0YnV0dG9uLFxuXHRpbnB1dCwgICAvLyBbMV1cblx0c2VsZWN0IHsgLy8gWzJdXG5cdFx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIG1hcmdpbiBpbiBTYWZhcmkuXG5cdC8vIDEuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cblx0YnV0dG9uLFxuXHRpbnB1dCxcblx0c2VsZWN0LFxuXHR0ZXh0YXJlYSB7IC8vIFsxXVxuXHRcdG1hcmdpbjogMDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuXHQvLyAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG5cdGJ1dHRvbixcblx0c2VsZWN0IHsgLy8gWzFdXG5cdFx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdH1cblxuXHQvLyBDaGFuZ2UgdGhlIGN1cnNvciBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cblx0YnV0dG9uLFxuXHRbdHlwZT1cImJ1dHRvblwiXSxcblx0W3R5cGU9XCJyZXNldFwiXSxcblx0W3R5cGU9XCJzdWJtaXRcIl0ge1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxuXG5cdC8vIFJlc3RvcmUgdGhlIGRlZmF1bHQgY3Vyc29yIHRvIGRpc2FibGVkIGVsZW1lbnRzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuXHRbZGlzYWJsZWRdIHtcblx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdH1cblxuXHQvLyBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuXHRidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5cdGlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcblx0XHRib3JkZXI6IDA7XG5cdFx0cGFkZGluZzogMDtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUuXG5cdHRleHRhcmVhIHtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0fVxufVxuIiwiJHN5c3RlbS1jb2RlOiAnaWctcHJvamVjdHMnO1xuQGltcG9ydCAnby1jb2xvcnMvbWFpbic7XG5AaW1wb3J0ICdvLWdyaWQvbWFpbi5zY3NzJztcbkBpbXBvcnQgJ28tZm9ybXMvbWFpbic7XG5AaW1wb3J0ICdvLWJ1dHRvbnMvbWFpbic7XG5AaW1wb3J0ICdAZmluYW5jaWFsLXRpbWVzL28taWNvbnMvbWFpbic7XG5AaW1wb3J0ICdvLXR5cG9ncmFwaHkvbWFpbic7XG5cbkBpbmNsdWRlIG9JY29ucygpO1xuXG5AaW5jbHVkZSBvRm9ybXMoXG4gICRvcHRzOiAoXG4gICAgJ2VsZW1lbnRzJzogKFxuICAgICAgJ2RhdGUnLFxuICAgICAgJ2NoZWNrYm94JyxcbiAgICAgICdyYWRpby1ib3gnLFxuICAgICAgJ3RvZ2dsZScsXG4gICAgICAnc2VsZWN0JyxcbiAgICApLFxuICAgICdmZWF0dXJlcyc6IChcbiAgICAgICdpbmxpbmUnLFxuICAgICAgJ2Rpc2FibGVkJyxcbiAgICAgICdzbWFsbCcsXG4gICAgKSxcbiAgKVxuKTtcblxuQGluY2x1ZGUgb0J1dHRvbnMoXG4gICRvcHRzOiAoXG4gICAgJ3NpemVzJzogKFxuICAgICAgJ2JpZycsXG4gICAgKSxcbiAgICAndHlwZXMnOiAoXG4gICAgICAncHJpbWFyeScsXG4gICAgICAnc2Vjb25kYXJ5JyxcbiAgICApLFxuICAgICd0aGVtZXMnOiAoXG4gICAgICAnbW9ubycsXG4gICAgKSxcbiAgICAnaWNvbnMnOiAoXG4gICAgICAncGxheScsXG4gICAgICAncGF1c2UnLFxuICAgICksXG4gICAgJ2dyb3Vwcyc6IHRydWUsXG4gIClcbik7XG5cbi5zcGxpdC1wYXJhZ3JhcGgge1xuICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTSkge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHdpZHRoOiA1MCU7XG4gIH1cbn1cblxuLnNwbGl0LWNoYXJ0IHtcbiAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IE0pIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7XG4gICAgd2lkdGg6IDUwJTtcbiAgfVxuXG4gICYtLXJpZ2h0IHtcbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTSkge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgcGFkZGluZy1sZWZ0OiA0MHB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICB9XG4gIH1cbn1cblxuLnNvdXJjZXMge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBjbGVhcjogYm90aDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgcGFkZGluZzogMjJweCAwIDI2cHg7XG5cbiAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IEwpIHtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gICAgcGFkZGluZzogMzNweCAwIDM5cHg7XG4gIH1cblxuICAmX190aXRsZSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgfVxuXG4gICZfX3RleHQge1xuICAgIGNvbG9yOiAjMzMzO1xuICAgIGZvbnQtZmFtaWx5OiAnTWV0cmljV2ViJywgc2Fucy1zZXJpZjtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIH1cblxuICAuY3JlZGl0cyB7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgZm9udC1mYW1pbHk6ICdNZXRyaWNXZWInLCBzYW5zLXNlcmlmO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICBhIHtcbiAgICAgIEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaygpO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG4gIH1cbn1cblxuLmctZXBpbG9ndWUtY29weXJpZ2h0IHtcbiAgY29sb3I6ICM2NjYwNWM7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gIG1hcmdpbi10b3A6IDA7XG5cbiAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IE0pIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgd2lkdGg6IDkwJTtcbiAgfVxuXG4gIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBMKSB7XG4gICAgd2lkdGg6IDg4LjYlO1xuICB9XG5cbiAgQGluY2x1ZGUgb0dyaWRSZXNwb25kVG8oJGZyb206IFhMKSB7XG4gICAgd2lkdGg6IDY4MHB4O1xuICB9XG5cbiAgYSB7XG4gICAgQGluY2x1ZGUgb1R5cG9ncmFwaHlMaW5rKCk7XG4gIH1cbn1cblxuLmNvbnRlbnQtaGVhZGluZyxcbi5vLWVkaXRvcmlhbC1sYXlvdXQtd3JhcHBlciA+IGgyLmNvbnRlbnQtaGVhZGluZyB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG1hcmdpbi1ib3R0b206IDI4cHg7XG59XG5cbi5jb250ZW50LXN1YmhlYWRpbmcsXG4uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXIgPiBoMy5jb250ZW50LXN1YmhlYWRpbmcge1xuICBjb2xvcjogYmxhY2s7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG59XG5cbi5icmVhay1vdXQtZnVsbC13aWR0aCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAuc3RpY2t5LWhlYWRlci13cmFwcGVyICsgJiAueWllbGQtY3VydmUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cblxuICAmICsgLmNvbnRlbnQtaGVhZGluZyB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuXG4gIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBMKSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICBtYXJnaW4tbGVmdDogLTUwdnc7XG4gICAgbGVmdDogNTAlO1xuICB9XG5cbiAgJl9fd3JhcHBlciB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAaW5jbHVkZSBvR3JpZFJlc3BvbmRUbygkZnJvbTogTCkge1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgbWluLXdpZHRoOiAyNDBweDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1heC13aWR0aDogMTIyMHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgICB9XG4gIH1cbn1cblxuLmNoYXJ0LXN1YnRpdGxlLFxuLm8tZWRpdG9yaWFsLWxheW91dC13cmFwcGVyID4gaDQuY2hhcnQtc3VidGl0bGUge1xuICBjb2xvcjogIzRkNDg0NTtcbiAgZm9udC1mYW1pbHk6IE1ldHJpY1dlYjtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcblxuICAueWllbGQtY3VydmVfX3RpdGxlICsgJiB7XG4gICAgbWFyZ2luLXRvcDogNDFweDtcbiAgfVxufVxuXG4uY2hhcnQtc3VidGl0bGVfX3NlbGVjdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDNweDtcbiAgd2lkdGg6IDExMnB4O1xuXG4gICYtLWZyZXF1ZW5jeSB7XG4gICAgd2lkdGg6IDkwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gIH1cblxuICAmLS15ZWFyIHtcbiAgICB3aWR0aDogODBweDtcbiAgfVxufVxuXG4uaW9zLW1lc3NhZ2UsXG4uby1lZGl0b3JpYWwtbGF5b3V0LXdyYXBwZXIgPiBwLmlvcy1tZXNzYWdlIHtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzFiNztcbiAgZm9udC1mYW1pbHk6IE1ldHJpY1dlYjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbWFyZ2luOiAzMnB4IDAgNDBweDtcbiAgcGFkZGluZzogMTJweCAxMHB4IDE4cHg7XG59XG5cbi5nLXNoYXJlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAyNnB4O1xuXG4gIEBpbmNsdWRlIG9HcmlkUmVzcG9uZFRvKCRmcm9tOiBMKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgfVxufVxuIiwiLy8vIE91dHB1dCBzdHlsZXMgZm9yIHBhZ2UgaGVhZGluZ3MuXG4vLy8gQGV4YW1wbGUgT3V0cHV0IGhlYWRpbmcgbGV2ZWwgMSBzdHlsZXMuXG4vLy8gICAgIGgxIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUhlYWRpbmcoJGxldmVsOiAxKTtcbi8vLyAgICAgfVxuLy8vIEBleGFtcGxlIE91dHB1dCBoZWFkaW5nIGxldmVsIDUgc3R5bGVzLlxuLy8vICAgICBoNSB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlIZWFkaW5nKCRsZXZlbDogNSk7XG4vLy8gICAgIH1cbi8vLyBAcGFyYW0ge051bWJlcn0gJGxldmVsIC0gVGhlIGhlYWRpbmcgbGV2ZWwgMS01LlxuQG1peGluIG9UeXBvZ3JhcGh5SGVhZGluZygkbGV2ZWwpIHtcblx0JGhlYWRpbmdzOiAoXG5cdFx0J2hlYWRpbmctbGV2ZWwtb25lJyxcblx0XHQnaGVhZGluZy1sZXZlbC10d28nLFxuXHRcdCdoZWFkaW5nLWxldmVsLXRocmVlJyxcblx0XHQnaGVhZGluZy1sZXZlbC1mb3VyJyxcblx0XHQnaGVhZGluZy1sZXZlbC1maXZlJyxcblx0XHQnaGVhZGluZy1sZXZlbC1zaXgnLFxuXHQpO1xuXG5cdEBpZih0eXBlLW9mKCRsZXZlbCkgIT0gJ251bWJlcicgb3IgJGxldmVsIDwgMSBvciAkbGV2ZWwgPiA2KSB7XG5cdFx0QGVycm9yICdIZWFkaW5nIGxldmVsIG11c3QgYmUgYSBOdW1iZXIgMS02LiBGb3VuZCAje2luc3BlY3QoJGxldmVsKX0uJztcblx0fVxuXG5cdCRmcm9tOiBudGgoJGhlYWRpbmdzLCAkbGV2ZWwpO1xuXG5cdC8vIEdldCBoZWFkaW5nIHN0eWxlcyBmcm9tIGJyYW5kIGNvbmZpZyAoc2VlIF9icmFuZC5zY3NzKVxuXHQvLyBJZiB3ZWlnaHQgaXMgbm90IGdpdmVuIGRlZmF1bHQgdG8gcmVndWxhciwgdG8gb3ZlcnJpZGUgYnJvd3NlciBkZWZhdWx0cy5cblx0JHdlaWdodDogX29UeXBvZ3JhcGh5R2V0KCd3ZWlnaHQnLCAkZnJvbSk7XG5cdCR3ZWlnaHQ6IGlmKCR3ZWlnaHQsICR3ZWlnaHQsICdyZWd1bGFyJyk7XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2Fucyhcblx0XHQkc2NhbGU6IChcblx0XHRcdGRlZmF1bHQ6IF9vVHlwb2dyYXBoeUdldCgnc2NhbGUnLCAkZnJvbSksXG5cdFx0XHRTOiBfb1R5cG9ncmFwaHlHZXQoJ3NjYWxlLXMnLCAkZnJvbSksXG5cdFx0XHRNOiBfb1R5cG9ncmFwaHlHZXQoJ3NjYWxlLW0nLCAkZnJvbSksXG5cdFx0XHRMOiBfb1R5cG9ncmFwaHlHZXQoJ3NjYWxlLWwnLCAkZnJvbSksXG5cdFx0XHRYTDogX29UeXBvZ3JhcGh5R2V0KCdzY2FsZS14bCcsICRmcm9tKVxuXHRcdCksXG5cdFx0JHdlaWdodDogJHdlaWdodFxuXHQpO1xuXHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnYm9keScsICd0ZXh0JywgJGZhbGxiYWNrOiBudWxsKTtcblx0bWFyZ2luOiAwIDAgb1NwYWNpbmdCeU5hbWUoJ3M0Jyk7XG59XG5cblxuLy8vIEJvZHkgdGV4dCBzdHlsZXNcbkBtaXhpbiBvVHlwb2dyYXBoeUJvZHkge1xuXHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoMSk7XG5cdG1hcmdpbjogMCAwIG9TcGFjaW5nQnlOYW1lKCdzNicpO1xuXHRjb2xvcjogb0NvbG9yc0J5VXNlY2FzZSgnYm9keScsICd0ZXh0JywgJGZhbGxiYWNrOiBudWxsKTtcbn1cblxuLy8vIFN1YnNjcmlwdCB0ZXh0XG5AbWl4aW4gb1R5cG9ncmFwaHlTdWIge1xuXHQvLyBtYWtlIHN1YnNjcmlwdCBzbWFsbGVyIGFuZCBzYW5zLXNlcmlmXG5cdC8vIDEycHggZ2l2ZW4gMThweCBjb3B5XG5cdEBpbmNsdWRlIG9UeXBvZ3JhcGh5U2FucygpO1xuXHRmb250LXNpemU6IDAuNjY2ZW07XG5cdC8vIG92ZXJyaWRlIG8tbm9ybWFsaXNlIGRlZmF1bHRcblx0cG9zaXRpb246IHN0YXRpYztcblx0dmVydGljYWwtYWxpZ246IHN1Yjtcblx0bGluZS1oZWlnaHQ6IDA7XG5cdC8vIHByZXZlbnQgc3ViIGluY3JlYXNpbmcgbGluZS1oZWlnaHRcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRtYXJnaW4tYm90dG9tOiAtMWVtO1xufVxuXG4vLy8gU3VwZXJzY3JpcHQgdGV4dFxuQG1peGluIG9UeXBvZ3JhcGh5U3VwZXIge1xuXHQvLyBtYWtlIHN1cGVyc2NyaXB0IHNtYWxsZXIgYW5kIHNhbnMtc2VyaWZcblx0Ly8gMTJweCBnaXZlbiAxOHB4IGNvcHlcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCk7XG5cdGZvbnQtc2l6ZTogMC42NjZlbTtcblx0Ly8gb3ZlcnJpZGUgby1ub3JtYWxpc2UgZGVmYXVsdFxuXHRwb3NpdGlvbjogc3RhdGljO1xuXHR2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7XG5cdGxpbmUtaGVpZ2h0OiAwO1xuXHQvLyBwcmV2ZW50IHN1cGVyIGluY3JlYXNpbmcgbGluZS1oZWlnaHRcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRtYXJnaW4tdG9wOiAtMWVtO1xufVxuXG4vLy8gT3V0cHV0IGxpbmsgc3R5bGVzLlxuLy8vXG4vLy8gQGV4YW1wbGUgT3V0cHV0IHRoZSBzdHlsZXMgZm9yIGEgc3RhbmRhcmQgbGluay5cbi8vLyAgICAgLm15LWxpbmsge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaygpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgdGhlIHN0eWxlcyBmb3IgYW4gZXh0ZXJuYWwgbGluay5cbi8vLyAgICAgLm15LWV4dGVybmFsLWxpbmsge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGluaygkZXh0ZXJuYWw6IHRydWUpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgdGhlIHN0eWxlcyBmb3IgYW4gZXh0ZXJuYWwgbGluaywgd2l0aG91dCByZXBlYXRpbmcgc3R5bGVzIHNoYXJlZCBieSBzdGFuZGFyZCBsaW5rcy5cbi8vLyAgICAgLm15LWxpbmstLWV4dGVybmFsIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpbmsoJGV4dGVybmFsOiB0cnVlLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogZmFsc2UpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBjdXN0b20sIGNsYXJldCBjb2xvdXJlZCBsaW5rIHRvIGdvIG9uIHRoZSBkZWZhdWx0IGJhY2tncm91bmQgY29sb3VyIChwYXBlciBmb3IgdGhlIGNvcmUgYnJhbmQsIHdoaXRlIG90aGVyd2lzZSkuXG4vLy8gICAgIC5teS1jbGFyZXQtbGluayB7XG4vLy8gICAgIFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlMaW5rKCR0aGVtZTogKFxuLy8vICAgICBcdFx0J2Jhc2UnOiAnY2xhcmV0Jyxcbi8vLyAgICAgXHRcdCdob3Zlcic6ICdjbGFyZXQtMzAnLFxuLy8vICAgICBcdCkpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgYSBjdXN0b20sIGxlbW9uIGNvbG91cmVkIGxpbmsgdG8gZ28gb24gYSBzbGF0ZSBiYWNrZ3JvdW5kLlxuLy8vICAgICAubXktaW52ZXJzZS1saW5rIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpbmsoJHRoZW1lOiAoXG4vLy8gICAgIFx0XHQnYmFzZSc6ICdsZW1vbicsXG4vLy8gICAgIFx0XHQnaG92ZXInOiAnbGVtb24tMzAnLFxuLy8vICAgICBcdFx0J2NvbnRleHQnOiAnc2xhdGUnLFxuLy8vICAgICBcdCkpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRleHRlcm5hbCBbZmFsc2VdIC0gSWYgdGhlIHN0eWxlIGlzIGZvciBleHRlcm5hbCBsaW5rcywgc2V0IHRvIHRydWUgdG8gb3V0cHV0IGFuIGV4dGVybmFsIGxpbmsgaWNvbi5cbi8vLyBAcGFyYW0ge01hcHxOdWxsfSAkdGhlbWUgW251bGxdIC0gQSBjdXN0b20gdGhlbWUgdG8gY2hhbmdlIHRoZSBsb29rIG9mIGEgbGluaywgd2l0aCBjb2xvdXJzIGZvciBwcm9wZXJ0aWVzIGBiYXNlYCAodGhlIG1haW4gbGluayBjb2xvdXIpLCBgaG92ZXJgICh0aGUgbGlua3Mgb3ZlciBjb2xvdXIpLCBhbmQgb3B0aW9uYWwgYGNvbnRleHRgIGtleS4gQ29udGV4dCBpcyB0aGUgY29sb3VyIHRoZSBsaW5rIHdpbGwgYmUgcGxhY2VkIG9uLCBpdCBkZWZhdWx0cyB0byB0aGUgcGFnZSBiYWNrZ3JvdW5kIChwYXBlciBmb3IgdGhlIGNvcmUgYnJhbmQsIHdoaXRlIG90aGVyd2lzZSkuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1iYXNlLXN0eWxlcyBbdHJ1ZV0gLSBJZiBzZXQgdG8gZmFsc2Ugc3RhbmRhcmQgbGluayBzdHlsZXMgd2lsbCBub3QgYmUgb3V0cHV0LCBvbmx5IGFkZGl0aW9uYWwgc3R5bGVzIHJlcXVpcmVkIGJ5IGEgY3VzdG9tIHRoZW1lIG9yIGV4dGVybmFsIGxpbmsuXG5AbWl4aW4gb1R5cG9ncmFwaHlMaW5rKCRleHRlcm5hbDogZmFsc2UsICR0aGVtZTogbnVsbCwgJGluY2x1ZGUtYmFzZS1zdHlsZXM6IHRydWUpIHtcblx0Ly8gRGVmYXVsdCBsaW5rIGNvbG91cnMuXG5cdC8vIFRoZXNlIG1heSBiZSBgbnVsbGAgaWYgdGhlIHVzZWNhc2UgaXMgbm90IHNldCwgaS5lLiBmb3IgdGhlIHdoaXRlbGFiZWwgYnJhbmQuXG5cdCRiYXNlLWNvbG9yOiBvQ29sb3JzQnlVc2VjYXNlKGxpbmssIHRleHQsICRmYWxsYmFjazogbnVsbCk7XG5cdCRob3Zlci1jb2xvcjogb0NvbG9yc0J5VXNlY2FzZShsaW5rLWhvdmVyLCB0ZXh0LCAkZmFsbGJhY2s6IG51bGwpO1xuXHQkY29udGV4dC1jb2xvcjogb0NvbG9yc0J5VXNlY2FzZShwYWdlLCBiYWNrZ3JvdW5kKTtcblx0JHVuZGVybGluZS1zaXplOiAwLjI1ZXg7IC8vIDJweCBmb3IgMThweCBNZXRyaWNXZWJcblxuXHQvLyBJZiBhIGN1c3RvbSB0aGVtZSBpcyBnaXZlbiBjaGVjayBpdCBpcyBhIG1hcCB3aXRoIHRoZSByZXF1aXJlZCBrZXlzLlxuXHQvLyBBbmQgdXBkYXRlIHRoZSBsaW5rIGNvbG91cnMuXG5cdCRyZXF1aXJlZC10aGVtZS1rZXlzOiAoJ2Jhc2UnLCAnaG92ZXInKTtcblx0QGlmKCR0aGVtZSBhbmQgdHlwZS1vZigkdGhlbWUpICE9ICdtYXAnKSB7XG5cdFx0QGVycm9yICdUaGUgbGluayAkdGhlbWUgYXJndW1lbnQgbXVzdCBgbnVsbGAgb3IgYSBtYXAuICcgK1xuXHRcdFx0J0ZvdW5kOiBcIiN7aW5zcGVjdCgkdGhlbWUpfVwiJztcblx0fVxuXHRAaWYodHlwZS1vZigkdGhlbWUpID09ICdtYXAnKSB7XG5cdFx0Ly8gR2V0IGN1c3RvbSBiYXNlIGNvbG91ci5cblx0XHQkdGhlbWUtYmFzZTogbWFwLWdldCgkdGhlbWUsICdiYXNlJyk7XG5cdFx0JGJhc2UtY29sb3I6IGlmKHR5cGUtb2YoJHRoZW1lLWJhc2UpID09ICdzdHJpbmcnLCBvQ29sb3JzQnlOYW1lKCR0aGVtZS1iYXNlKSwgJHRoZW1lLWJhc2UpO1xuXHRcdC8vIEdldCBjdXN0b20gaG92ZXIgY29sb3VyLlxuXHRcdCR0aGVtZS1ob3ZlcjogbWFwLWdldCgkdGhlbWUsICdob3ZlcicpO1xuXHRcdCRob3Zlci1jb2xvcjogaWYodHlwZS1vZigkdGhlbWUtaG92ZXIpID09ICdzdHJpbmcnLCBvQ29sb3JzQnlOYW1lKCR0aGVtZS1ob3ZlciksICR0aGVtZS1ob3Zlcik7XG5cdFx0Ly8gR2V0IG9wdGlvbmFsIGNvbnRleHQgY29sb3VyLlxuXHRcdCR0aGVtZS1jb250ZXh0OiBtYXAtZ2V0KCR0aGVtZSwgJ2NvbnRleHQnKTtcblx0XHRAaWYgJHRoZW1lLWNvbnRleHQge1xuXHRcdFx0JGNvbnRleHQtY29sb3I6IGlmKHR5cGUtb2YoJHRoZW1lLWNvbnRleHQpID09ICdzdHJpbmcnLCBvQ29sb3JzQnlOYW1lKCR0aGVtZS1jb250ZXh0KSwgJHRoZW1lLWNvbnRleHQpO1xuXHRcdH1cblx0XHQvLyBWYWxpZGF0ZSBjb2xvdXJzIGdpdmVuLlxuXHRcdEBpZih0eXBlLW9mKCRiYXNlLWNvbG9yKSAhPSAnY29sb3InKSB7XG5cdFx0XHRAZXJyb3IgJ0EgY3VzdG9tIGxpbmsgdGhlbWUgbXVzdCBoYXZlIGEgYGJhc2VgIHByb3BlcnR5IHdpdGggYSBjb2xvdXIgb3IgcGFsZXR0ZSBjb2xvdXIgbmFtZSBlLmcuIGBjbGFyZXRgLiBCdXQgZm91bmQgI3skdGhlbWUtYmFzZX0uJztcblx0XHR9XG5cdFx0QGlmKHR5cGUtb2YoJGhvdmVyLWNvbG9yKSAhPSAnY29sb3InKSB7XG5cdFx0XHRAZXJyb3IgJ0EgY3VzdG9tIGxpbmsgdGhlbWUgbXVzdCBoYXZlIGEgYGhvdmVyYCBwcm9wZXJ0eSB3aXRoIGEgY29sb3Igb3IgcGFsZXR0ZSBjb2xvdXIgbmFtZSBlLmcuIGBjbGFyZXRgLiBCdXQgZm91bmQgI3skdGhlbWUtaG92ZXJ9Lic7XG5cdFx0fVxuXHRcdEBpZigkdGhlbWUtY29udGV4dCBhbmQgdHlwZS1vZigkY29udGV4dC1jb2xvcikgIT0gJ2NvbG9yJykge1xuXHRcdFx0QGVycm9yICdBIGN1c3RvbSBsaW5rIHRoZW1lIG1heSBvcHRpb25hbGx5IGhhdmUgYSBgY29udGV4dGAgcHJvcGVydHkgd2l0aCBhIGNvbG9yIG9yIHBhbGV0dGUgY29sb3VyIG5hbWUsIHRvIGluZGljYXRlIHRoZSBjb2xvdXIgb2YgdGhlIHBhZ2UgYmVoaW5kIHRoZSBsaW5rLCBlLmcuIGBudWxsYCBvciBgcGFwZXJgLiBCdXQgZm91bmQgI3skdGhlbWUtY29udGV4dH0uJztcblx0XHR9XG5cdH1cblxuXHQvLyBPdXRwdXQgZXh0ZXJuYWwgbGluayBzdHlsZXMuXG5cdC8vIEZhbGxiYWNrIHRvIGEgYmxhY2sgaWNvbiBpZiBubyBsaW5rIGNvbG91ciBpcyBnaXZlbi5cblx0QGlmKCRleHRlcm5hbCkge1xuXHRcdCRpY29uLWNvbG9yOiBpZigkYmFzZS1jb2xvciwgJGJhc2UtY29sb3IsIG9Db2xvcnNCeU5hbWUoJ2JsYWNrJykpO1xuXHRcdCRpY29uLXNpemU6IDFlbTtcblx0XHQkaWNvbi1pbmJ1aWx0LXBhZGRpbmctc2l6ZTogI3tkaXYoJGljb24tc2l6ZSwgNCl9O1xuXHRcdCRpY29uLXBhZGRpbmctY2FsYzogXCIjeyRpY29uLXNpemV9ICsgI3swLjVjaH1cIjtcblx0XHRAaW5jbHVkZSBvSWNvbnNDb250ZW50KCdvdXRzaWRlLXBhZ2UnLCAkaWNvbi1jb2xvciwgJHNpemU6IG51bGwsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHQvLyBBZGQgcGFkZGluZyBmb3IgaWNvbiBiYWNrZ3JvdW5kLlxuXHRcdC8vIFRvIHBvc2l0aW9uIHRoZSBpY29uIGNsb3NlciB0byB0aGUgY29weSwgbWludXMgdGhlIHJpZ2h0L2xlZnQgcGFkZGluZ1xuXHRcdC8vIGJ1aWx0IGludG8gdGhlIGljb24gc3ZnICgxMHB4IGZvciBhIDQwcHggaWNvbilcblx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vRmluYW5jaWFsLVRpbWVzL2Z0aWNvbnMvYmxvYi92MS4yMC41L2NvbnRyaWJ1dGluZy5tZCNkZXNpZ25cblx0XHRwYWRkaW5nLXJpZ2h0OiBjYWxjKCN7JGljb24tcGFkZGluZy1jYWxjfSAtICN7JGljb24taW5idWlsdC1wYWRkaW5nLXNpemV9IC0gI3skaWNvbi1pbmJ1aWx0LXBhZGRpbmctc2l6ZX0pO1xuXHRcdGJhY2tncm91bmQtcG9zaXRpb24teDogY2FsYygxMDAlICsgMC41Y2gpO1xuXHRcdC8vIE1pbWljIGJhc2VsaW5lIGFsaWdubWVudC5cblx0XHRAc3VwcG9ydHMgKGJhY2tncm91bmQtc2l6ZTogY29udGFpbikge1xuXHRcdFx0YmFja2dyb3VuZC1wb3NpdGlvbi15OiBjYWxjKDEwMCUgKyAjeyR1bmRlcmxpbmUtc2l6ZX0gLSAxcHgpO1xuXHRcdH1cblx0XHRAc3VwcG9ydHMgKHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6ICR1bmRlcmxpbmUtc2l6ZSkge1xuXHRcdFx0YmFja2dyb3VuZC1wb3NpdGlvbi15OiBjYWxjKDEwMCUgKyAjeyRpY29uLWluYnVpbHQtcGFkZGluZy1zaXplfSAtICN7JHVuZGVybGluZS1zaXplfSAtIDFweCk7XG5cdFx0fVxuXHRcdGJhY2tncm91bmQtb3JpZ2luOiBib3JkZXItYm94O1xuXHRcdC8vIElFMTEgZG9lcyBub3Qgc2l6ZSBhbmQgcG9zaXRpb24gdGhlIHN2ZyBpY29uIGJhY2tncm91bmQgY29ycmVjdGx5XG5cdFx0Ly8gdXNpbmcgYGJhY2tncm91bmQtc2l6ZTogY29udGFpbmAuIFVzZSBAc3VwcG9ydHMgdG8gZXhjbHVkZSBJRTExLFxuXHRcdC8vIGFzIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBAc3VwcG9ydHNcblx0XHRiYWNrZ3JvdW5kLXNpemU6IGNhbGMoI3skaWNvbi1wYWRkaW5nLWNhbGN9KSBjYWxjKCN7JGljb24tcGFkZGluZy1jYWxjfSk7IC8vIElFMTEgZmFsbGJhY2tcblx0XHRAc3VwcG9ydHMgKGJhY2tncm91bmQtc2l6ZTogY29udGFpbikge1xuXHRcdFx0YmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuXHRcdH1cblx0XHQmW3RhcmdldD1cIl9ibGFua1wiXTphZnRlciB7XG5cdFx0XHRAaW5jbHVkZSBvTm9ybWFsaXNlVmlzdWFsbHlIaWRkZW4oKTtcblx0XHRcdGNvbnRlbnQ6ICcob3BlbnMgYSBuZXcgd2luZG93KSc7XG5cdFx0fVxuXHR9XG5cblx0Ly8gT3V0cHV0IGJhc2Ugc3R5bGVzIHNoYXJlZCBieSBhbGwgbGlua3MuXG5cdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcykge1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Ym9yZGVyLWJvdHRvbTogJHVuZGVybGluZS1zaXplIHNvbGlkO1xuXG5cdFx0QHN1cHBvcnRzICh0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAkdW5kZXJsaW5lLXNpemUpIHtcblx0XHRcdGJvcmRlci1ib3R0b206IDA7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAkdW5kZXJsaW5lLXNpemU7IC8vc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1taXNzcGVsbGVkLXByb3BlcnRpZXNcblx0XHRcdHRleHQtZGVjb3JhdGlvbi1saW5lOiB1bmRlcmxpbmU7XG5cdFx0fVxuXHR9XG5cblx0Ly8gT3V0cHV0IGJhc2Ugc3R5bGVzIHNoYXJlZCBieSBhbGwgbGlua3MsIG9yXG5cdC8vIHJlcXVpcmVkIGZvciBhIGN1c3RvbSBsaW5rIHRoZW1lLlxuXHRAaWYoJGluY2x1ZGUtYmFzZS1zdHlsZXMgb3IgJHRoZW1lKSB7XG5cdFx0Y29sb3I6ICRiYXNlLWNvbG9yO1xuXHRcdCRkZWNvcmF0aW9uLWNvbG9yOiBpZigkYmFzZS1jb2xvciwgb0NvbG9yc01peCgkYmFzZS1jb2xvciwgJGNvbnRleHQtY29sb3IsICRwZXJjZW50YWdlOiAyMCksIG51bGwpO1xuXHRcdGJvcmRlci1ib3R0b20tY29sb3I6ICRkZWNvcmF0aW9uLWNvbG9yO1xuXHRcdHRleHQtZGVjb3JhdGlvbi1jb2xvcjogJGRlY29yYXRpb24tY29sb3I7XG5cdH1cblxuXHQmOmhvdmVyIHtcblx0XHRAaWYoJGluY2x1ZGUtYmFzZS1zdHlsZXMgb3IgJHRoZW1lKSB7XG5cdFx0XHRjb2xvcjogJGhvdmVyLWNvbG9yO1xuXHRcdFx0JGRlY29yYXRpb24tY29sb3I6IGlmKCRiYXNlLWNvbG9yLCBvQ29sb3JzTWl4KCRiYXNlLWNvbG9yLCAkY29udGV4dC1jb2xvciwgJHBlcmNlbnRhZ2U6IDQwKSwgbnVsbCk7XG5cdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiAkZGVjb3JhdGlvbi1jb2xvcjtcblx0XHRcdHRleHQtZGVjb3JhdGlvbi1jb2xvcjogJGRlY29yYXRpb24tY29sb3I7XG5cdFx0fVxuXHR9XG5cblx0Ly8gby1ub3JtYWxpc2UgcHJvdmlkZXMgZXh0cmEgZm9jdXMgc3R5bGVzIGZvciBsaW5rc1xuXHQmOmZvY3VzIHtcblx0XHRAaWYoJGluY2x1ZGUtYmFzZS1zdHlsZXMpIHtcblx0XHRcdCRkZWNvcmF0aW9uLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRcdGJvcmRlci1ib3R0b20tY29sb3I6ICRkZWNvcmF0aW9uLWNvbG9yO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAkZGVjb3JhdGlvbi1jb2xvcjtcblx0XHR9XG5cdFx0QGlmKCRpbmNsdWRlLWJhc2Utc3R5bGVzIG9yICR0aGVtZSkge1xuXHRcdFx0Y29sb3I6ICRob3Zlci1jb2xvcjtcblx0XHR9XG5cdH1cbn1cblxuLy8vIE91dHB1dCBzdHlsZXMgZm9yIGxpc3RzLlxuLy8vIFN0eWxlcyBjaGlsZCBgbGlgIGVsZW1lbnRzLiBBcHBseSB0byBhXG4vLy8gY29udGFpbmluZyBsaXN0IGVsZW1lbnQgc3VjaCBhcyBgdWxgIG9yIGBvbGAuXG4vLy8gRG9lcyBub3Qgb3V0cHV0IGZvbnQgc3R5bGVzLCB0aGVzZSBhcmVcbi8vLyBpbmhlcml0ZWQgKEBzZWUgb1R5cG9ncmFwaHlCb2R5KS5cbi8vL1xuLy8vIEBleGFtcGxlIE91dHB1dCB0aGUgc3R5bGVzIGZvciBhbiB1bm9yZGVyZWQgbGlzdC5cbi8vLyAgICAgLm15LXVub3JkZXJlZC1saXN0IHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpc3QoJ3Vub3JkZXJlZCcpO1xuLy8vICAgICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBPdXRwdXQgdGhlIHN0eWxlcyBmb3IgYW4gb3JkZXJlZCBhbmQgdW5vcmRlcmVkIGxpc3QsIHNoYXJpbmcgYmFzZSBsaXN0IHN0eWxlcy5cbi8vLyAgICAgLm15LWxpc3Qge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGlzdCgpO1xuLy8vICAgICB9XG4vLy9cbi8vLyAgICAgLm15LWxpc3QtLW9yZGVyZWQge1xuLy8vICAgICBcdEBpbmNsdWRlIG9UeXBvZ3JhcGh5TGlzdCgnb3JkZXJlZCcsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vICAgICAubXktbGlzdC0tdW5vcmRlcmVkIHtcbi8vLyAgICAgXHRAaW5jbHVkZSBvVHlwb2dyYXBoeUxpc3QoJ3Vub3JkZXJlZCcsICRpbmNsdWRlLWJhc2Utc3R5bGVzOiBmYWxzZSk7XG4vLy8gICAgIH1cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfE51bGx9ICR0eXBlIFtudWxsXSAtIFwib3JkZXJlZFwiLCBcInVub3JkZXJlZFwiLCBvciBudWxsIGZvciBqdXN0IHRoZSBiYXNlIHN0eWxlcyBzaGFyZWQgYnkgYWxsIGxpc3RzXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1iYXNlLXN0eWxlcyBbdHJ1ZV0gLSBzZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBiYXNlIHN0eWxlcyB3aGljaCBhcmUgc2hhcmVkIGJ5IGFsbCBsaXN0IHR5cGVzXG5AbWl4aW4gb1R5cG9ncmFwaHlMaXN0KCR0eXBlOiBudWxsLCAkaW5jbHVkZS1iYXNlLXN0eWxlczogdHJ1ZSkge1xuXHQvLyBVbmRvIGJyb3dzZXIgZGVmYXVsdHMuXG5cdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcykge1xuXHRcdG1hcmdpbjogMCAwIG9TcGFjaW5nQnlOYW1lKCdzNicpO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0fVxuXHQvLyBSZXNldCBudW1iZXIgY291bnRlciBmb3IgbmV3IG9yZGVyZWQgbGlzdC5cblx0QGlmKCR0eXBlID09ICdvcmRlcmVkJykge1xuXHRcdGNvdW50ZXItcmVzZXQ6IGl0ZW07XG5cdH1cblx0PiBsaSB7XG5cdFx0QGlmKCRpbmNsdWRlLWJhc2Utc3R5bGVzKSB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHQvLyBVbmRvIGJyb3dzZXIgZGVmYXVsdC5cblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdC8vIEFsbG93IHNwYWNlIGZvciAyLTMgbnVtYmVycyBmb3IgYm90aCBvcmRlcmVkIGFuZCB1bm9yZGVyZWQgbGlzdHMsXG5cdFx0XHQvLyBzbyBjb250ZW50IGFsaWducyBiZXR3ZWVuIGJvdGggbGlzdCB0eXBlcy5cblx0XHRcdHBhZGRpbmctbGVmdDogY2FsYygyY2ggKyAje29TcGFjaW5nQnlOYW1lKCdzMScpfSk7XG5cdFx0fVxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdEBpZigkaW5jbHVkZS1iYXNlLXN0eWxlcykge1xuXHRcdFx0XHRAaW5jbHVkZSBvVHlwb2dyYXBoeVNhbnMoKTtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdGxlZnQ6IDA7XG5cdFx0XHRcdHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBsZWZ0O1xuXHRcdFx0fVxuXG5cdFx0XHRAaWYoJHR5cGUgPT0gJ3Vub3JkZXJlZCcpIHtcblx0XHRcdFx0Y29udGVudDogJ1xcMjAyMic7IC8vIGRvdCBjaGFyYWN0ZXJcblx0XHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0XHRcdC8vIDI4cHggbWFya2VyIGdpdmVuIGEgcGFyZW50IGZvbnQtc2l6ZSBvZiAxOHB4XG5cdFx0XHRcdHRyYW5zZm9ybTogc2NhbGUoI3tkaXYoMjgsIDE4KX0pO1xuXHRcdFx0XHQvLyBtYWdpYyBudW1iZXIgdG8gY2VudGVyIG1hcmtlclxuXHRcdFx0XHRtYXJnaW4tdG9wOiAje2RpdigyOCwgMTgpICogLTAuMTZjaH07XG5cdFx0XHR9XG5cblx0XHRcdEBpZigkdHlwZSA9PSAnb3JkZXJlZCcpIHtcblx0XHRcdFx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCR3ZWlnaHQ6ICdzZW1pYm9sZCcsICRpbmNsdWRlLWZvbnQtZmFtaWx5OiBmYWxzZSk7XG5cdFx0XHRcdGNvbnRlbnQ6IGNvdW50ZXIoaXRlbSk7XG5cdFx0XHRcdGNvdW50ZXItaW5jcmVtZW50OiBpdGVtO1xuXHRcdFx0XHRmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwidG51bVwiO1xuXHRcdFx0XHQvLyAxNnB4IG1hcmtlciBnaXZlbiBhIHBhcmVudCBmb250LXNpemUgb2YgMThweFxuXHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlKCN7ZGl2KDE2LCAxOCl9KTtcblx0XHRcdFx0Ly8gbWFnaWMgbnVtYmVyIHRvIG1ha2UgbWFya2VyIGZsdXNoIHRvIHRoZSBsZWZ0XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAje2RpdigxNiwgMTgpICogLTAuMTZjaH07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBTdHlsZSBmb3IgPGZvb3Rlcj4gdGFnc1xuQG1peGluIG9UeXBvZ3JhcGh5Rm9vdGVyIHtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogMSwgJGxpbmUtaGVpZ2h0OiAyNHB4KTtcblx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ2JvZHknLCAndGV4dCcsICRmYWxsYmFjazogbnVsbCk7XG59XG5cbi8vLyBTdHlsZXMgZm9yIHBob3RvIG9yIHZpZGVvIGNyZWRpdC9jYXB0aW9uXG5AbWl4aW4gb1R5cG9ncmFwaHlDYXB0aW9uIHtcblx0QGluY2x1ZGUgb1R5cG9ncmFwaHlTYW5zKCRzY2FsZTogLTEpO1xuXHRtYXJnaW4tdG9wOiBvU3BhY2luZ0J5TmFtZSgnczInKTtcblx0bWFyZ2luLWJvdHRvbTogMDtcblx0Y29sb3I6IG9Db2xvcnNCeVVzZWNhc2UoJ2JvZHknLCAndGV4dCcsICRmYWxsYmFjazogbnVsbCk7XG59XG5cbiJdLCJzb3VyY2VSb290IjoiIn0=*/