﻿.app_page #header {
    height: 100px;
    position: relative;
}
.app_page #header .row {
    height: 100px
}
.app_page #header #smartfees_logo {
    display: block;
    width: 235px;
    height: 75px;
    background: url(../../Content/images/common/branding/SmartFees-blue.png) no-repeat left 0;
    color: #fff;
    font-size: 1px;
    margin: 20px 0 0px -10px;
}
.app_page #header .login_menu {
    position: absolute;
    top: 35px;
    right: 15px;
    font-size: 14px;
}
.app_page #header .login_menu * {
    display: inline-block
}
.app_page #header .login_menu a {
    color: #00adef;
    text-decoration: none
}
.app_page #header .login_menu span.divider {
    padding: 0 10px;
    font-size: 14px
}
.app_page .row {
    max-width: 960px;
    margin: 0 auto;
    position: relative;
    *zoom: 1;
}
.app_page .row:before,
.app_page .row:after {
    content: '';
    display: table
}
.app_page .row:after {
    clear: both
}
.app_page .app {
    max-width: 960px;
    margin: 0 auto
}
.app_page .tabs {
    background: url("../../Content/images/common/branding/grey_gradient.png") repeat-x top left;
    height: 53px;
    border: 1px solid #222;
    border-radius: 5px 5px 0 0;
}
.app_page .tabs a {
    display: inline-block;
    color: #fff;
    text-decoration: none;
    background: url("../../Content/images/common/branding/blue_gradient.png") repeat-x top left;
    padding: 12px 20px;
    font-size: 14px;
    font-weight: bold;
    border-radius: 5px 5px 0 0;
    margin: 10px 0 0 8px;
    border: 1px solid #447486;
    border-width: 1px 1px 0 1px;
}
.app_page .tabs a:first-child {
    margin-left: 15px
}
.app_page .tabs a.active {
    background: url("../../Content/images/common/branding/white_gradient.png") repeat-x top left;
    color: #959393;
    border: 1px solid #b9b9b9;
    border-width: 1px 1px 0 1px;
    -webkit-box-shadow: 0 -2px 7px rgba(0, 0, 0, 0.3);
    box-shadow: 0 -2px 7px rgba(0, 0, 0, 0.3)
}
.app_page .tab_content {
    padding-top: 35px;
    padding-bottom: 55px;
    border: 1px solid #c2cad8;
    border-width: 0 1px 1px 1px;
    z-index: 1;
    position: relative;
    background-color: #fff;
    *zoom: 1;
}
.app_page .tab_content:before,
.app_page .tab_content:after {
    content: '';
    display: table
}
.app_page .tab_content:after {
    clear: both
}
.app_page .sub_menu {
    width: 23%;
    float: left;
}
.app_page .sub_menu ul {
    margin: 0;
    padding: 0;
    border: 1px solid #c2cad8;
    border-radius: 3px;
    margin: 0 0 0 16px;
}
.app_page .sub_menu ul li {
    float: none;
    list-style-type: none;
    padding: 0;
    margin: 0
}
.app_page .sub_menu ul a {
    background: url("../../Content/images/common/branding/grey_gradient_small.png") repeat-x top left;
    height: 30px;
    line-height: 32px;
    font-size: 13px;
    padding: 0 4px 0 13px;
    border-bottom: 1px solid #fff;
    border-top: 1px solid #e8dfce;
    color: #1589c2;
    text-decoration: none;
    display: block
}
.app_page .sub_menu ul li:first-child a {
    border-top: none
}
.app_page .sub_menu ul li:last-child a {
    border-bottom: none
}
.app_page .sub_menu ul .active a {
    color: #222;
    background-color: #eae9e9;
    background-image: none
}
.app_page .inner_tabbed_content {
    width: 75%;
    float: right
}
.app_page .inner_tabs a {
    background-color: #eee;
    border: 1px solid #c2cad8;
    border-width: 1px 1px 0 1px;
    display: inline-block;
    margin: 0 1px 0 0;
    text-decoration: none;
    font-size: 12px;
    padding: 7px 10px;
    color: #222;
}
.app_page .inner_tabs a.active {
    background-color: #fff;
    color: #1589c2;
    font-weight: bold;
    border-bottom: none;
    position: relative;
    z-index: 2
}
.app_page .inner_tab_content {
    border: 1px solid #c2cad8;
    margin: -1px 20px 0 0;
    padding: 15px;
    position: relative;
    z-index: 1;
    *zoom: 1;
}
.app_page .inner_tab_content:before,
.app_page .inner_tab_content:after {
    content: '';
    display: table
}
.app_page .inner_tab_content:after {
    clear: both
}
.app_page .inner_tab_content label {
    width: 100%;
    display: block;
    font-size: 14px;
    margin: 0 0 22px 0
}
.app_page .inner_tab_content input,
.app_page .inner_tab_content select {
    float: right;
    width: 60%;
    border-radius: 2px;
    border: 1px solid #c2cad8;
    height: 22px;
    line-height: 22px;
    color: #4d5968;
    text-indent: 2px;
}
.app_page .inner_tab_content input.small,
.app_page .inner_tab_content select.small {
    width: 20%;
    margin-right: 40%
}
.app_page .inner_tab_content span.required {
    color: #d13f19
}
.app_page .inner_tab_content button {
    font-size: 14px;
    background-color: #00adef;
    color: #fff;
    padding: 8px 12px;
    float: right;
    border: none;
    margin: 30px 0 0 0
}
.app_page #footer {
    background-color: #4d5968;
    height: 170px;
    padding-top: 10px;
    position:initial;
    *position:absolute
}
.app_page #footer ul.footer_menu {
    margin: 0;
    padding: 0;
    display: inline-block;
    *display: inline;
}
.app_page #footer ul.footer_menu li {
    float: none;
    list-style-type: none;
    padding: 0;
    margin: 0
}
.app_page #footer ul.footer_menu li {
    display: inline-block;
    *display: inline;
}
.app_page #footer ul.footer_menu li a {
    border-right: 1px solid #fff;
    color: #fff;
    text-decoration: none;
    font-size: 12px;
    padding-right: 9px;
    height: 12px;
    display: inline-block;
    line-height: 12px;    
    margin-right: 4px;
    *display: inline
}
.app_page #footer ul.footer_menu li:last-child a {
    border-right: 0
}
.app_page #footer p.copyright {
    display: inline-block;
    font-size: 12px;
    text-align: center;
    color: #ccc;
    *display:inline;
}/*
.login_page #header {
    background: #00adef url("Content/images/common/branding/header-gradient-bckgrnd.jpg") no-repeat top center/cover;
    background-color: #00adef;
    height: 308px;
    margin-bottom: 20px;
    position: relative;
}
.login_page #header .row {
    height: 308px
}
.login_page #header #smartfees_logo {
    position: absolute;
    bottom: 80px;
    left: 0;
}
.login_page #header #closing_corp_logo {
    position: absolute;
    top: 50px;
    right: 10px;
}*/
.login_page .row {
    max-width: 960px;
    margin: 0 auto;
    position: relative;
    *zoom: 1;
}
.login_page .row:before,
.login_page .row:after {
    content: '';
    display: table
}
.login_page .row:after {
    clear: both
}
.login_page h2 {
    font-size: 18px;
    font-weight: lighter
}
.login_page h1 {
    font-size: 24px;
    font-weight: lighter
}
.login_page p {
    color: #4d5968;
    font-size: 14px;
}
.login_page p.callout {
    font-size: 18px;
    line-height: 30px
}
.login_page p a {
    color: #00adef;
    text-decoration: none
}
.login_page .content {
    padding: 0 30px
}
.login_page .solutions {
    width: 56%;
    float: left
}
.login_page .login_form {
    width: 40%;
    float: right;
}
.login_page .login_form form {
    *zoom: 1;
}
.login_page .login_form form:before,
.login_page .login_form form:after {
    content: '';
    display: table
}
.login_page .login_form form:after {
    clear: both
}
.login_page .login_form input[type=text],
.login_page .login_form input[type=password] {
    width: 100%;
    border: 1px solid #c2cad8;
    border-left: 2px solid #00adef;
    padding: 9px 10px 9px 30px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    margin: 5px 0;
}
.login_page .login_form input[type=text][name=username],
.login_page .login_form input[type=password][name=username] {
    background: url("../../Content/images/common/branding/icon_person.png") no-repeat 8px 9px
}
.login_page .login_form input[type=text][name=password],
.login_page .login_form input[type=password][name=password] {
    background: url("../../Content/images/common/branding/icon_lock.png") no-repeat 8px 9px
}
.login_page .login_form label.remember {
    margin-top: 10px;
    float: left;
}
.login_page .login_form label.remember input[type=checkbox] {
    width: 18px;
    height: 18px;
    position: relative;
    bottom: -2px;
}
.login_page .login_form button {
    cursor: pointer;
    font-size: 14px;
    background-color: #00adef;
    color: #fff;
    padding: 8px 12px;
    float: right;
    border: none;
    margin: 10px 0 0 5px;
}

.login_page hr {
    border: none;
    border-bottom: 1px solid #eee;
    clear: both;
    margin: 30px 0 30px -10%;
    width: 120%
}
.login_page #footer {
    max-width: 960px;
    margin: 70px auto 0 auto;
}
.login_page #footer ul.footer_menu {
    margin: 0;
    padding: 0;
    text-align: center;
}
.login_page #footer ul.footer_menu li {
    float: none;
    list-style-type: none;
    padding: 0;
    margin: 0
}
.login_page #footer ul.footer_menu li {
    display: inline-block;    
}
.login_page #footer ul.footer_menu li a {
    border-right: 1px solid #4d5968;
    color: #00adef;
    text-decoration: none;
    font-size: 12px;
    padding-right: 9px;
    height: 12px;
    display: inline-block;
    line-height: 12px;
    margin-right: 4px
}
.login_page #footer ul.footer_menu li:last-child a {
    border-right: 0
}
.login_page #footer p.copyright {
    font-size: 12px;
    text-align: center;
    margin-top: 20px
}
.app_page #header {
    height: 100px;
    position: relative;
}
.app_page #header .row {
    height: 100px
}
.app_page #header #smartfees_logo {
   display: block;
    width: 235px;
    height: 75px;
    background: url(../../Content/images/common/branding/SmartFees-blue.png) no-repeat left 0;
    color: #fff;
    font-size: 1px;
    margin: 20px 0 0px -10px;
}
.app_page #header .login_menu {
    position: absolute;
    top: 35px;
    right: 15px;
    font-size: 14px;
}
.app_page #header .login_menu * {
    display: inline-block;
   *display: inline;
}
.app_page #header .login_menu a {
    color: #00adef;
    text-decoration: none
}
.app_page #header .login_menu span.divider {
    padding: 0 10px;
    font-size: 14px
}
.app_page .row {
    max-width: 960px;
    margin: 0 auto;
    position: relative;
    *zoom: 1;
}
.app_page .row:before,
.app_page .row:after {
    content: '';
    display: table
}
.app_page .row:after {
    clear: both
}
.app_page .app {
    max-width: 960px;
    margin: 0 auto
}
.app_page .tabs {
    background: url("../../Content/images/common/branding/grey_gradient.png") repeat-x top left;
    height: 53px;
    border: 1px solid #222;
    border-radius: 5px 5px 0 0;
}
.app_page .tabs a {
    display: inline-block;
    color: #fff;
    text-decoration: none;
    background: url("../../Content/images/common/branding/blue_gradient.png") repeat-x top left;
    padding: 12px 20px;
    font-size: 14px;
    font-weight: bold;
    border-radius: 5px 5px 0 0;
    margin: 10px 0 0 8px;
    border: 1px solid #447486;
    border-width: 1px 1px 0 1px;
}
.app_page .tabs a:first-child {
    margin-left: 15px
}
.app_page .tabs a.active {
    background: url("../../Content/images/common/branding/white_gradient.png") repeat-x top left;
    color: #959393;
    border: 1px solid #b9b9b9;
    border-width: 1px 1px 0 1px;
    -webkit-box-shadow: 0 -2px 7px rgba(0, 0, 0, 0.3);
    box-shadow: 0 -2px 7px rgba(0, 0, 0, 0.3)
}
.app_page .tab_content {
    padding-top: 35px;
    padding-bottom: 55px;
    border: 1px solid #c2cad8;
    border-width: 0 1px 1px 1px;
    z-index: 1;
    position: relative;
    background-color: #fff;
    *zoom: 1;
}
.app_page .tab_content:before,
.app_page .tab_content:after {
    content: '';
    display: table
}
.app_page .tab_content:after {
    clear: both
}
.app_page .sub_menu {
    width: 23%;
    float: left;
}
.app_page .sub_menu ul {
    margin: 0;
    padding: 0;
    border: 1px solid #c2cad8;
    border-radius: 3px;
    margin: 0 0 0 16px;
}
.app_page .sub_menu ul li {
    float: none;
    list-style-type: none;
    padding: 0;
    margin: 0
}
.app_page .sub_menu ul a {
    background: url("../../Content/images/common/branding/grey_gradient_small.png") repeat-x top left;
    height: 30px;
    line-height: 32px;
    font-size: 13px;
    padding: 0 4px 0 13px;
    border-bottom: 1px solid #fff;
    border-top: 1px solid #e8dfce;
    color: #1589c2;
    text-decoration: none;
    display: block
}
.app_page .sub_menu ul li:first-child a {
    border-top: none
}
.app_page .sub_menu ul li:last-child a {
    border-bottom: none
}
.app_page .sub_menu ul .active a {
    color: #222;
    background-color: #eae9e9;
    background-image: none
}
.app_page .inner_tabbed_content {
    width: 75%;
    float: right
}
.app_page .inner_tabs a {
    background-color: #eee;
    border: 1px solid #c2cad8;
    border-width: 1px 1px 0 1px;
    display: inline-block;
    margin: 0 1px 0 0;
    text-decoration: none;
    font-size: 12px;
    padding: 7px 10px;
    color: #222;
}
.app_page .inner_tabs a.active {
    background-color: #fff;
    color: #1589c2;
    font-weight: bold;
    border-bottom: none;
    position: relative;
    z-index: 2
}
.app_page .inner_tab_content {
    border: 1px solid #c2cad8;
    margin: -1px 20px 0 0;
    padding: 15px;
    position: relative;
    z-index: 1;
    *zoom: 1;
}
.app_page .inner_tab_content:before,
.app_page .inner_tab_content:after {
    content: '';
    display: table
}
.app_page .inner_tab_content:after {
    clear: both
}
.app_page .inner_tab_content label {
    width: 100%;
    display: block;
    font-size: 14px;
    margin: 0 0 22px 0
}
.app_page .inner_tab_content input,
.app_page .inner_tab_content select {
    float: right;
    width: 60%;
    border-radius: 2px;
    border: 1px solid #c2cad8;
    height: 22px;
    line-height: 22px;
    color: #4d5968;
    text-indent: 2px;
}
.app_page .inner_tab_content input.small,
.app_page .inner_tab_content select.small {
    width: 20%;
    margin-right: 40%
}
.app_page .inner_tab_content span.required {
    color: #d13f19
}
.app_page .inner_tab_content button {
    font-size: 14px;
    background-color: #00adef;
    color: #fff;
    padding: 8px 12px;
    float: right;
    border: none;
    margin: 30px 0 0 0
}
.app_page #footer {
    background-color: #4d5968;
    height: 50px;
    padding-top: 10px;
    position:initial;
    *position:absolute;
}
.app_page #footer ul.footer_menu {
    margin: 0;
    padding: 0;
    display: inline-block;
    *display: inline;
}
.app_page #footer ul.footer_menu li {
    float: none;
    list-style-type: none;
    padding: 0;
    margin: 0
}
.app_page #footer ul.footer_menu li {
    display: inline-block;
    *display: inline;
}
.app_page #footer ul.footer_menu li a {
    border-right: 1px solid #fff;
    color: #fff;
    text-decoration: none;
    font-size: 12px;
    padding-right: 9px;
    height: 12px;
    display: inline-block;
    line-height: 12px;    
    margin-right: 4px;
    *display: inline
}
.app_page #footer ul.footer_menu li:last-child a {
    border-right: 0
}
.app_page #footer p.copyright {
    display: inline-block;
    font-size: 12px;
    text-align: center;
    color: #ccc;
    *display: inline;
}
.login_page #header {
    background:#433582 url('../../Content/images/common/branding/header-gradient-bckgrnd.jpg') no-repeat;
    background-size: cover;
    /*background-color: #00adef;*/
    height: 240px;
    margin-bottom: 20px;
    position: relative;
    width:100%;
}
.login_page #header .row {
    height: 240px
}
.login_page #header #smartfees_logo {
    position: absolute;
    bottom: 80px;
    left: 0;
}
.login_page #header #closing_corp_logo {
    position: absolute;
    top: 50px;
    right: 10px;
}
.login_page .row {
    max-width: 960px;
    margin: 0 auto;
    position: relative;
    *zoom: 1;
}
.login_page .row:before,
.login_page .row:after {
    content: '';
    display: table
}
.login_page .row:after {
    clear: both
}
.login_page h2 {
    font-size: 18px;
    font-weight: lighter
}
.login_page h1 {
    font-size: 24px;
    font-weight: lighter
}
.login_page p {
    color: #4d5968;
    font-size: 14px;
}
.login_page p.callout {
    font-size: 18px;
    line-height: 30px
}
.login_page p a {
    color: #00adef;
    text-decoration: none
}
.login_page .content {
    padding: 0 30px
}
.login_page .solutions {
    width: 56%;
    float: left
}
.login_page .login_form {
    width: 40%;
    float: right;
}
.login_page .login_form form {
    *zoom: 1;
}
.login_page .login_form form:before,
.login_page .login_form form:after {
    content: '';
    display: table
}
.login_page .login_form form:after {
    clear: both
}
.login_page .login_form input[type=text],
.login_page .login_form input[type=password] {
    width: 100%;
    border: 1px solid #c2cad8;
    border-left: 2px solid #00adef;
    padding: 9px 10px 9px 30px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    margin: 5px 0;
    *width: 88%;
}
.login_page .login_form input[type=text][name=username],
.login_page .login_form input[type=password][name=username] {
    background: url("../../Content/images/common/branding/icon_person.png") no-repeat 8px 9px
}
.login_page .login_form input[type=text][name=password],
.login_page .login_form input[type=password][name=password] {
    background: url("../../Content/images/common/branding/icon_lock.png") no-repeat 8px 9px
}
.login_page .login_form label.remember {
    margin-top: 10px;
    float: left;
}
.login_page .login_form label.remember input[type=checkbox] {
    width: 18px;
    height: 18px;
    position: relative;
    bottom: -2px;
}
.login_page .login_form button {
    cursor: pointer;
    font-size: 14px;
    background-color: #00adef;
    color: #fff;
    padding: 8px 12px;
    float: right;
    border: none;
    margin: 10px 0 0 5px;
}
.login_page hr {
    border: none;
    border-bottom: 1px solid #eee;
    clear: both;
    margin: 30px 0 30px -10%;
    width: 120%
}
.login_page #footer {
    max-width: 960px;
    margin: 70px auto 0 auto;
}
.login_page #footer ul.footer_menu {
    margin: 0;
    padding: 0;
    text-align: center;
}
.login_page #footer ul.footer_menu li {
    float: none;
    list-style-type: none;
    padding: 0;
    margin: 0
}
.login_page #footer ul.footer_menu li {
    display: inline;
}
.login_page #footer ul.footer_menu li a {
    border-right: 1px solid #4d5968;
    color: #00adef;
    text-decoration: none;
    font-size: 12px;
    padding-right: 9px;
    height: 12px;
    display: inline-block;
    line-height: 12px;
    margin-right: 4px
}
.login_page #footer ul.footer_menu li:last-child a {
    border-right: 0
}
.login_page #footer p.copyright {
    font-size: 12px;
    text-align: center;
    margin-top: 20px
}
* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box
}
body {
    margin: 0;
    padding: 0;
}
a {
    border: none
}
img {
    border: none
}

.release_notes_page, .document_library_page {
    font-family: Montserrat, Arial, Helvetica, sans-serif;
    color: #444;
}

.release_notes_page #header {
    background-size: cover;
    height: 120px;
    margin-bottom: 20px;
    position: relative;
    width: 100%;
    border-bottom: 1px solid black;
}

.release_notes_page #header img {
    height: 40px;
    width: auto;
}


.release_notes_page #header .row {
    height: 120px
}

.release_notes_page #header h1 {
    position: absolute;
    bottom: 5px;
    left: 0;
    font-weight: 200;
    font-size: 35px;
}

.release_notes_header h1 {
    font-weight: 200;
    font-size: 35px;
}

.release_notes_page #header #corelogic_logo {
    position: absolute;
    top: 40px;
}

.release_notes_page .row {
    max-width: 65%;
    margin: 0 auto;
    position: relative;
    *zoom: 1;
}

.release_notes_page table thead{
    display:none;
}

#releaseNotesTable a {
    text-decoration: none;
    color: #007b88;
    font-family: Montserrat, Arial, Helvetica, sans-serif;
    font-weight: 400;
    font-size: 17px;
}


#releaseNotesTable a:hover {
    color: #03a9f4;
}

.release-calendar-button {
    text-decoration: none;
    background-color: #007b88;
    padding: 13px 35px;
    color: #fff !important;
    display: inline-block;
    position: relative;
    text-transform: uppercase;
    text-align: center;
    font-style: normal;
    font-family: 'Montserrat';
    font-weight: 500;
    font-size:14px;
}

.published-date {
    color: #747474;
    font-size: 14px;
}

.release-calendar-button:hover {
    background-color: #03a9f4;
}

.release-notes-grid {
    width: 70%;
    float: left;
}

.release-notes-calendar {
    width: 30%;
    margin-left: auto
}

.document_library_page #header {
    background-size: cover;
    height: 120px;
    margin-bottom: 20px;
    position: relative;
    width: 100%;
    border-bottom: 1px solid black;
}

.document_library_page #header .row {
    height: 120px
}

.document_library_page #header img {
    height: 40px;
    width: auto;
}

.document_library_page #header h1 {
    position: absolute;
    bottom: 5px;
    left: 0;
    font-weight: 200;
    font-size: 35px;
    color: rgb(255, 255, 255);
}

.document_library_header h1 {
    font-weight: 200;
    font-size: 35px;
}

.document_library_page #header #corelogic_logo {
    position: absolute;
    top: 40px;
}

.document_library_page .row {
    max-width: 65%;
    margin: 0 auto;
    position: relative;
    *zoom: 1;
}

.document_library_page table thead {
    display: none;
}

.document-library {
    box-sizing: border-box;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    height: 100px;
    border: 1px solid #cbc9c9;
    padding: 20px;
}

#documentLibrariesTable a {
    text-decoration: none;
    color: #4a8eff;
}

.document-library .filename {
    position: relative;
    font-size: 14pt;
    font-weight: 700;
    word-wrap:break-word;
}

#documentLibrariesTable a:hover {
    color: #03a9f4;
}

.document-library-download {
    text-decoration: none;
    background-color: #4a8eff;
    padding: 7.5px 16px;
    color: #fff !important;
    font-size: 13px;
    font-weight: 500;
    text-transform: uppercase;
    display: inline-block;
    position: relative;
    border-radius: 4px;
    letter-spacing: 1px;
    font-family: Rubik, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
    border: 1px solid transparent;
    line-height:1.5;
    float:right;
}

.fileinfo {
    margin-top: 10px;
}

.fileinfo img {
    height:11px;
    width:11px
}

.fileinfo span {
    color: #5087d9;
    font-size: 80%;
}

.fileinfo span.filesize {
    margin-left:10px;
}

.calendar-icon {
    border: none;
    height: 12px;
    background-color: #fff;
    margin-right: 5px;
}

.document-library-filelist {
    float: left;
    position: absolute;
    width: 50%;
    white-space: normal;
}

.document-library-filelist .download-img {
    width: 13%;
    float: left;
}

.document-library-filelist .download-img img {
    width: 60px;
}
.document-library-filelist .filelist-content {
    width: 87%;
    float: right;
}

.download-buttons-content {
    float: right;
    width:45%
}

.document_library_page .published-date {
    font-style: italic;
}

.demolink-content {
    margin-top:27px;
}

.demolink-content p {
    line-height: 1.714285714;
    margin: 0 0 27px;
}

.demolink-content p a {
    color: #21759b;
}

.demolink-content p a:hover {
    color: #2d3647;
}

.demolink-content p a:visited {
    color:#9f9f9f;
}











/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImltcG9ydHMvcGFnZXMvX2FwcC5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL3Bvc2l0aW9ucy5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL2ZsZXguc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9qZWV0L3N0eWx1cy9qZWV0L19ncmlkLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvdmVuZG9yLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvYm9yZGVyLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvYm9yZGVyLXJhZGl1cy5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL2F4aXMvYXhpcy90eXBvZ3JhcGh5LnN0eWwiLCJpbXBvcnRzL3BhZ2VzL19sb2dpbi5zdHlsIiwiYXBwLnN0eWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0Msa0JBQ0MsT0FBUSxNQUNSLFNBQVUsVUFDVix1QkFDQyxPQUFRLE1BQ1Qsa0NDRkEsU0FBc0IsU0FHVixPQUE0QyxLQUE1QyxLQUE0QyxNREN4RCw4QkNKQSxTQUFzQixTQUdWLElBQTRDLEtBQTVDLE1BQTRDLEtER3ZELFVBQVcsTUFDWCxnQ0VXQyxRQUFTLGFGVFYsZ0NBQ0MsTUFBTyxRQUNQLGdCQUFpQixLQUNsQiwyQ0FDQyxRQUFTLE9BQ1QsVUFBVyxLQUNkLGVBQ0MsVUFBVyxNQUNYLE9BQVEsT0FDUixTQUFVLFNHdVFULE1BQU0sR0FFUCxzQkFBVSxxQkFDUixRQUFTLEdEMVFULFFBQVMsTUM2UVgscUJBQ0UsTUFBTyxLSDVRVixlQUNDLFVBQVcsTUFDWCxPQUFRLE9BRVQsZ0JJc2RHLFdBQVcscURKcGRiLE9BQVEsS0tyQk4sT0FBUSxlQzJDVixjQUFjLGFObkJkLGtCRVhFLFFBQVMsYUZhVixNQUFPLEtBQ1AsZ0JBQWlCLEtJOGNoQixXQUFXLHFESjVjWixRQUFTLFVBQ1QsVUFBVyxLQUNYLFlBQWEsS01ZZCxjQUFjLFlOVmIsT0FB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Q1gsaUJBQWtCLFFBQ2xCLE1BQU8sS0FDUCxRQUFTLFNBQ1QsTUFBTyxNSHpETixPQUFRLEtHMkRULE9BQVEsV0FDVixlSDVERyxPQUFRLEtHOERWLGNBQWUsZUFDZixNQUFPLEtBQ1AsT0FBUSxpQkFDUixNQUFPLEtBRVIsb0JBQ0MsVUFBVyxNQUNYLE9BQVEsa0JBQ1IsbUNEb1FBLE9BQVEsRUFDUixRQUFTLEVDblFSLFdBQVksUURxUWIsc0NBQ0UsTUFBTyxLQUNQLGdCQUFpQixLQUNqQixRQUFTLEVBQ1QsT0FBUSxFQ3hRVCxzQ041REMsUUFBUyxjTThEVCx3Q0FDQyxhQUFjLGtCQUNkLE1BQU8sUUFDUCxnQkFBaUIsS0FDakIsVUFBVyxLQUNYLGNBQWUsSUFDZixPQUFRLEtOcEVULFFBQVMsYU1zRVIsWUFBYSxLQUNiLGFBQWMsSUFDZixtREFDQyxhQUFjLEVBQ2pCLGdDQUNDLFVBQVcsS0FDWCxXQUFZLE9BQ1osV0FBWSxLQzNGZixXQUNDLFlBQVksV0FDWixXQUFXLE1BQ1gsSUFBb0Msa0NBRXJDLEVMOEJrQixtQkFBRyxXQUFILGdCQUFHLFdBUk4sV0FBRyxXS25CbEIsS0FDQyxPQUFRLEVBQ1IsUUFBUyxFQUNULFlBQXVCLGlCQUV4QixFSlpJLE9BQVEsS0llWixJSmZJLE9BQVEiLCJmaWxlIjoiYXBwLmNzcyIsInNvdXJjZVJvb3QiOiIvc291cmNlLyIsInNvdXJjZXNDb250ZW50IjpbIi5hcHBfcGFnZVxyXG5cdCNoZWFkZXJcclxuXHRcdGhlaWdodDogMTAwcHhcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZVxyXG5cdFx0LnJvd1xyXG5cdFx0XHRoZWlnaHQ6IDEwMHB4XHJcblx0XHQjc21hcnRmZWVzX2xvZ29cclxuXHRcdFx0YWJzb2x1dGU6IGJvdHRvbSAzMHB4IGxlZnQgMTVweFxyXG5cdFx0LmxvZ2luX21lbnVcclxuXHRcdFx0YWJzb2x1dGU6IHRvcCAzNXB4IHJpZ2h0IDE1cHhcclxuXHRcdFx0Zm9udC1zaXplOiAxNHB4XHJcblx0XHRcdCogXHJcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrXHJcblx0XHRcdGFcclxuXHRcdFx0XHRjb2xvcjogJGJsdWVcclxuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmVcclxuXHRcdFx0c3Bhbi5kaXZpZGVyXHJcblx0XHRcdFx0cGFkZGluZzogMCAxMHB4XHJcblx0XHRcdFx0Zm9udC1zaXplOiAxNHB4XHJcblx0LnJvd1xyXG5cdFx0bWF4LXdpZHRoOiA5NjBweFxyXG5cdFx0bWFyZ2luOiAwIGF1dG9cclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZVxyXG5cdFx0Y2YoKVxyXG5cdC5hcHBcclxuXHRcdG1heC13aWR0aDogJHJvd193aWR0aFxyXG5cdFx0bWFyZ2luOiAwIGF1dG9cclxuXHRcdFxyXG5cdC50YWJzXHJcblx0XHRiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltYWdlcy9ncmV5X2dyYWRpZW50LnBuZycpIHJlcGVhdC14IHRvcCBsZWZ0XHJcblx0XHRoZWlnaHQ6IDUzcHhcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrXHRcclxuXHRcdGJvcmRlci1yYWRpdXM6IDVweCA1cHggMCAwXHJcblx0XHRhXHJcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9ja1xyXG5cdFx0XHRjb2xvcjogd2hpdGVcclxuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lXHJcblx0XHRcdGJhY2tncm91bmQ6IHVybCgnLi4vaW1hZ2VzL2JsdWVfZ3JhZGllbnQucG5nJykgcmVwZWF0LXggdG9wIGxlZnRcclxuXHRcdFx0cGFkZGluZzogMTJweCAyMHB4XHJcblx0XHRcdGZvbnQtc2l6ZTogMTRweFxyXG5cdFx0XHRmb250LXdlaWdodDogYm9sZFxyXG5cdFx0XHRib3JkZXItcmFkaXVzOiA1cHggNXB4IDAgMFxyXG5cdFx0XHRtYXJnaW46IDEwcHggMCAwIDhweFxyXG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjNDQ3NDg2XHJcblx0XHRcdGJvcmRlci13aWR0aDogMXB4IDFweCAwIDFweFxyXG5cdFx0XHQmOmZpcnN0LWNoaWxkXHJcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDE1cHhcclxuXHRcdFx0Ji5hY3RpdmVcclxuXHRcdFx0XHRiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltYWdlcy93aGl0ZV9ncmFkaWVudC5wbmcnKSByZXBlYXQteCB0b3AgbGVmdFx0XHRcdFxyXG5cdFx0XHRcdGNvbG9yOiAjOTU5MzkzXHJcblx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI0I5QjlCOVxyXG5cdFx0XHRcdGJvcmRlci13aWR0aDogMXB4IDFweCAwIDFweFxyXG5cdFx0XHRcdGJveC1zaGFkb3coMCAtMnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMykpXHJcblx0LnRhYl9jb250ZW50XHJcblx0XHRwYWRkaW5nLXRvcDogMzVweFxyXG5cdFx0cGFkZGluZy1ib3R0b206IDU1cHhcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRsaWdodF9ncmV5XHJcblx0XHRib3JkZXItd2lkdGg6IDAgMXB4IDFweCAxcHhcclxuXHRcdHotaW5kZXg6IDFcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZVxyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGVcclxuXHRcdGNmKClcclxuXHRcclxuXHQuc3ViX21lbnVcclxuXHRcdHdpZHRoOiAyMyVcclxuXHRcdGZsb2F0OiBsZWZ0XHJcblx0XHR1bFxyXG5cdFx0XHRyZXNldC1saXN0KClcclxuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGxpZ2h0X2dyZXlcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4XHJcblx0XHRcdG1hcmdpbjogMCAwIDAgMTZweFxyXG5cdFx0XHRhXHJcblx0XHRcdFx0YmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvZ3JleV9ncmFkaWVudF9zbWFsbC5wbmcnKSByZXBlYXQteCB0b3AgbGVmdFxyXG5cdFx0XHRcdGhlaWdodDogMzBweFxyXG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiAzMnB4XHJcblx0XHRcdFx0Zm9udC1zaXplOiAxM3B4XHJcblx0XHRcdFx0cGFkZGluZzogMCA0cHggMCAxM3B4XHJcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHdoaXRlXHJcblx0XHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNFOERGQ0VcclxuXHRcdFx0XHRjb2xvcjogJG1lZGl1bV9ibHVlXHJcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lXHJcblx0XHRcdFx0ZGlzcGxheTogYmxvY2tcclxuXHRcdFx0bGk6Zmlyc3QtY2hpbGQgYVxyXG5cdFx0XHRcdGJvcmRlci10b3A6IG5vbmVcclxuXHRcdFx0bGk6bGFzdC1jaGlsZCBhXHJcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogbm9uZVxyXG5cdFx0XHQuYWN0aXZlIGFcclxuXHRcdFx0XHRjb2xvcjogYmxhY2tcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjRUFFOUU5XHJcblx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogbm9uZVxyXG5cdC5pbm5lcl90YWJiZWRfY29udGVudFxyXG5cdFx0d2lkdGg6IDc1JVxyXG5cdFx0ZmxvYXQ6IHJpZ2h0XHJcblx0XHRcclxuXHQuaW5uZXJfdGFic1xyXG5cdFx0YVxyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRlcl9ncmV5XHJcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRsaWdodF9ncmV5XHJcblx0XHRcdGJvcmRlci13aWR0aDogMXB4IDFweCAwIDFweFxyXG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2tcclxuXHRcdFx0bWFyZ2luOiAwIDFweCAwIDBcclxuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lXHJcblx0XHRcdGZvbnQtc2l6ZTogMTJweFxyXG5cdFx0XHRwYWRkaW5nOiA3cHggMTBweFxyXG5cdFx0XHRjb2xvcjogYmxhY2tcclxuXHRcdFx0Ji5hY3RpdmVcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZVxyXG5cdFx0XHRcdGNvbG9yOiAkbWVkaXVtX2JsdWVcclxuXHRcdFx0XHRmb250LXdlaWdodDogYm9sZFxyXG5cdFx0XHRcdGJvcmRlci1ib3R0b206IG5vbmVcclxuXHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmVcclxuXHRcdFx0XHR6LWluZGV4OiAyXHJcblx0XHRcdFx0XHJcblx0LmlubmVyX3RhYl9jb250ZW50XHJcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkbGlnaHRfZ3JleVxyXG5cdFx0bWFyZ2luOiAtMXB4IDIwcHggMCAwXHJcblx0XHRwYWRkaW5nOiAxNXB4XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmVcclxuXHRcdHotaW5kZXg6IDFcclxuXHRcdGNmKClcclxuXHRcdGxhYmVsXHJcblx0XHRcdHdpZHRoOiAxMDAlXHJcblx0XHRcdGRpc3BsYXk6IGJsb2NrXHJcblx0XHRcdGZvbnQtc2l6ZTogMTRweFxyXG5cdFx0XHRtYXJnaW46IDAgMCAyMnB4IDBcclxuXHRcdGlucHV0LCBzZWxlY3RcclxuXHRcdFx0ZmxvYXQ6IHJpZ2h0XHJcblx0XHRcdHdpZHRoOiA2MCVcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogMnB4XHJcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRsaWdodF9ncmV5XHJcblx0XHRcdGhlaWdodDogMjJweFxyXG5cdFx0XHRsaW5lLWhlaWdodDogMjJweFxyXG5cdFx0XHRjb2xvcjogJGdyZXlcclxuXHRcdFx0dGV4dC1pbmRlbnQ6IDJweFxyXG5cdFx0XHQmLnNtYWxsXHJcblx0XHRcdFx0d2lkdGg6IDIwJVxyXG5cdFx0XHRcdG1hcmdpbi1yaWdodDogNDAlXHJcblx0XHRzcGFuLnJlcXVpcmVkXHJcblx0XHRcdGNvbG9yOiByZWRcclxuXHRcdGJ1dHRvblxyXG5cdFx0XHRmb250LXNpemU6IDE0cHhcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGJsdWVcclxuXHRcdFx0Y29sb3I6IHdoaXRlXHJcblx0XHRcdHBhZGRpbmc6IDhweCAxMnB4XHJcblx0XHRcdGZsb2F0OiByaWdodFxyXG5cdFx0XHRib3JkZXI6IG5vbmVcclxuXHRcdFx0bWFyZ2luOiAzMHB4IDAgMCAwXHJcblxyXG5cdCNmb290ZXJcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICRibHVlX2dyZXlcclxuXHRcdGhlaWdodDogMTcwcHhcclxuXHRcdHBhZGRpbmctdG9wOiAxMHB4XHJcblx0XHR1bC5mb290ZXJfbWVudVxyXG5cdFx0XHRyZXNldC1saXN0KClcclxuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrXHJcblx0XHRcdGxpXHJcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrXHJcblx0XHRcdFx0YVxyXG5cdFx0XHRcdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgd2hpdGVcclxuXHRcdFx0XHRcdGNvbG9yOiB3aGl0ZVxyXG5cdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lXHJcblx0XHRcdFx0XHRmb250LXNpemU6IDEycHhcclxuXHRcdFx0XHRcdHBhZGRpbmctcmlnaHQ6IDlweFxyXG5cdFx0XHRcdFx0aGVpZ2h0OiAxMnB4XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2tcclxuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiAxMnB4XHJcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDRweFxyXG5cdFx0XHRcdCY6bGFzdC1jaGlsZCBhXHJcblx0XHRcdFx0XHRib3JkZXItcmlnaHQ6IDBcclxuXHRcdHAuY29weXJpZ2h0XHJcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9ja1xyXG5cdFx0XHRmb250LXNpemU6IDEycHhcclxuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyXHJcblx0XHRcdGNvbG9yOiAjY2NjXHJcbiIsIi8vIGhlbHBlclxuXG4tcG9zKHR5cGUsIGFyZ3MpXG4gIGkgPSAwXG4gIHBvc2l0aW9uOiB1bnF1b3RlKHR5cGUpXG4gIGZvciBqIGluICgxLi40KVxuICAgIGlmIGxlbmd0aChhcmdzKSA+IGlcbiAgICAgIHthcmdzW2ldfTogYXJnc1tpICsgMV0gaXMgYSAndW5pdCcgPyBhcmdzW2kgKz0gMV0gOiAwXG4gICAgaSArPSAxXG5cbi8qXG4gKiBQb3NpdGlvbiB1dGlsaXR5LlxuICpcbiAqIFN5bm9wc2lzOlxuICpcbiAqICAgZml4ZWQ6IDxwb3M+IFtuXSA8cG9zPiBbbl1cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgZml4ZWQ6IHRvcCBsZWZ0XG4gKiAgICAgZml4ZWQ6IHRvcCA1cHggbGVmdFxuICogICAgIGZpeGVkOiB0b3AgbGVmdCA1cHhcbiAqICAgICBmaXhlZDogdG9wIDVweCBsZWZ0IDVweFxuICpcbiAqL1xuXG5maXhlZCgpXG4gIC1wb3MoJ2ZpeGVkJywgYXJndW1lbnRzKVxuXG4vKlxuICogUG9zaXRpb24gdXRpbGl0eS5cbiAqXG4gKiBTeW5vcHNpczpcbiAqXG4gKiAgIGFic29sdXRlOiA8cG9zPiBbbl0gPHBvcz4gW25dXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIGFic29sdXRlOiB0b3AgbGVmdFxuICogICAgIGFic29sdXRlOiB0b3AgNXB4IGxlZnRcbiAqICAgICBhYnNvbHV0ZTogdG9wIGxlZnQgNXB4XG4gKiAgICAgYWJzb2x1dGU6IHRvcCA1cHggbGVmdCA1cHhcbiAqXG4gKi9cblxuYWJzb2x1dGUoKVxuICAtcG9zKCdhYnNvbHV0ZScsIGFyZ3VtZW50cylcblxuLypcbiAqIFBvc2l0aW9uIHV0aWxpdHkuXG4gKlxuICogU3lub3BzaXM6XG4gKlxuICogICByZWxhdGl2ZTogPHBvcz4gW25dIDxwb3M+IFtuXVxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICByZWxhdGl2ZTogdG9wIGxlZnRcbiAqICAgICByZWxhdGl2ZTogdG9wIDVweCBsZWZ0XG4gKiAgICAgcmVsYXRpdmU6IHRvcCBsZWZ0IDVweFxuICogICAgIHJlbGF0aXZlOiB0b3AgNXB4IGxlZnQgNXB4XG4gKlxuICovXG5cbnJlbGF0aXZlKClcbiAgLXBvcygncmVsYXRpdmUnLCBhcmd1bWVudHMpXG4iLCIvKlxuICogVmVuZG9yIFwiZGlzcGxheTogZmxleFwiIHN1cHBvcnQgd2l0aCBmYWxsYmFjayB0byBvYnNvbGV0ZSB2ZXJzaW9ucy5cbiAqL1xuXG5mbGV4LXZlcnNpb24gPz0gYm94IGZsZXhcblxuLy9cbi8vIDEuIERpc3BsYXkgdmFsdWVzXG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jZmxleC1jb250YWluZXJzXG4vL1xuZGlzcGxheSh0eXBlLCBhcmdzLi4uKVxuICBpZiBmbGV4ID09IHR5cGUgfHwgaW5saW5lLWZsZXggPT0gdHlwZVxuICAgIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICAgIGlmIGZsZXggPT0gdHlwZVxuICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveCBhcmdzXG4gICAgICAgIGRpc3BsYXk6IHZlbmRvci12YWx1ZShib3ggYXJncywgb25seTogbW96IHdlYmtpdClcbiAgICAgIGVsc2VcbiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94IGFyZ3NcbiAgICAgICAgZGlzcGxheTogdmVuZG9yLXZhbHVlKGlubGluZS1ib3ggYXJncywgb25seTogbW96IHdlYmtpdClcbiAgICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgICAgZGlzcGxheTogdmVuZG9yLXZhbHVlKGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKSAvLyBvdmVyd3JpdGVzIG9sZCB3ZWJraXRcbiAgZWxzZVxuICAgIGRpc3BsYXk6IGFyZ3VtZW50c1xuXG4vKlxuICogTmV3IHN5bnRheCBmb3IgYnJvd3NlcnMgbGlrZSBHb29nbGUgQ2hyb21lLlxuICogUGx1cyBhIHRyYW5zbGF0aW9uIHRvIHRoZSBvbGQgc3ludGF4LCBpZiBwb3NzaWJsZS5cbiAqL1xuXG5cbi8vXG4vLyA1LiBPcmRlcmluZyBhbmQgT3JpZW50YXRpb25cbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNvcmRlcmluZy1hbmQtb3JpZW50YXRpb25cbi8vXG4tZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oZGlyZWN0aW9uKVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgaWYgcm93LXJldmVyc2UgPT0gZGlyZWN0aW9uIHx8IGNvbHVtbi1yZXZlcnNlID09IGRpcmVjdGlvblxuICAgICAgdmVuZG9yKCdib3gtZGlyZWN0aW9uJywgcmV2ZXJzZSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAgIGlmIHJvdyA9PSBkaXJlY3Rpb24gfHwgcm93LXJldmVyc2UgPT0gZGlyZWN0aW9uXG4gICAgICB2ZW5kb3IoJ2JveC1vcmllbnQnLCBob3Jpem9udGFsLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuICAgIGVsc2UgaWYgY29sdW1uID09IGRpcmVjdGlvbiB8fCBjb2x1bW4tcmV2ZXJzZSA9PSBkaXJlY3Rpb25cbiAgICAgIHZlbmRvcignYm94LW9yaWVudCcsIHZlcnRpY2FsLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4tZmxleC1vYnNvbGV0ZS13cmFwKHZhbHVlKVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgLy8gV0FSTjogd3JhcC1yZXZlcnNlIGRvZXMgbm90IGhhdmUgYSBib3ggZXF1aXZhbGVudC4gVGhpcyB3aWxsIHJlbmRlciBpbiBkaWZmZXJlbnQgbWFubmVyc1xuICAgIC8vICAgIG9uIGJveCB2cy4gZmxleCB2YWx1ZXMuXG4gICAgaWYgJ3dyYXAnID09IHZhbHVlIHx8IHdyYXAtcmV2ZXJzZSA9PSB2YWx1ZVxuICAgICAgdmVuZG9yKCdib3gtbGluZXMnLCBtdWx0aXBsZSwgaWdub3JlOiBtcyBvZmZpY2lhbClcbiAgICBlbHNlIGlmIG5vd3JhcCA9PSB2YWx1ZVxuICAgICAgdmVuZG9yKCdib3gtbGluZXMnLCBzaW5nbGUsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbmZsZXgtZGlyZWN0aW9uKGRpcmVjdGlvbilcbiAgLy8gb2Jzb2xldGVcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGRpcmVjdGlvbilcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtZGlyZWN0aW9uJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cbmZsZXgtd3JhcCh2YWx1ZSlcbiAgLy8gb2Jzb2xldGVcbiAgLWZsZXgtb2Jzb2xldGUtd3JhcCh2YWx1ZSlcblxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC13cmFwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cbmZsZXgtZmxvdygpXG4gIC8vIG9ic29sZXRlXG4gIC1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihhcmd1bWVudHNbMF0pXG4gIC1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihhcmd1bWVudHNbMV0pXG4gIC1mbGV4LW9ic29sZXRlLXdyYXAoYXJndW1lbnRzWzBdKVxuICAtZmxleC1vYnNvbGV0ZS13cmFwKGFyZ3VtZW50c1sxXSlcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtZmxvdycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxuXG5cbm9yZGVyKClcbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYm94LW9yZGluYWwtZ3JvdXAnLCBhcmd1bWVudHMsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LW9yZGVyJywgYXJndW1lbnRzLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ29yZGVyJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cblxuLy9cbi8vIDcuIEZsZXhpYmlsaXR5XG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jZmxleGliaWxpdHlcbi8vXG5mbGV4LWdyb3coZ3Jvd3RoKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtZmxleCcsIGdyb3d0aClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtZ3JvdycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5mbGV4LWJhc2lzKClcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtYmFzaXMnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuZmxleC1zaHJpbmsoKVxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1zaHJpbmsnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuZmxleChncm93dGgpXG5cbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHNocmluayA9IDFcblxuICAgIGlmIG5vbmUgPT0gZ3Jvd3RoIHx8IGluaXRpYWwgPT0gZ3Jvd3RoXG4gICAgICAvLyBXZWxsIGtub3duIHZhbHVlc1xuICAgICAgc2hyaW5rID0gMCBpZiBub25lID09IGdyb3d0aFxuICAgICAgZ3Jvd3RoID0gMFxuICAgIGVsc2UgaWYgaXMtd2lkdGgoZ3Jvd3RoKSA9PSB0cnVlXG4gICAgICAvLyBCYXNpcyBpcyBkZWZpbmVkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXJcbiAgICAgIGdyb3d0aCA9IGFyZ3VtZW50c1sxXSB8fCAwXG4gICAgICBzaHJpbmsgPSBhcmd1bWVudHNbMl0gaWYgMyA8PSBsZW5ndGgoYXJndW1lbnRzKVxuICAgIGVsc2UgaWYgYXJndW1lbnRzWzFdICYmIGlzLXdpZHRoKGFyZ3VtZW50c1sxXSkgPT0gZmFsc2VcbiAgICAgIC8vIEdyb3d0aCBpcyBmaXJzdCBhbmQgc2hyaW5rIGlzIHNlY29uZFxuICAgICAgc2hyaW5rID0gYXJndW1lbnRzWzFdXG5cbiAgICAvLyBTaW5jZSB3ZSBjYW4ndCBtYWtlIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGdyb3dpbmcgYW5kIHNocmlua2luZyBpbiB0aGUgYm94IG1vZGVsLCB0YWtlXG4gICAgLy8gdGhlIG9uZSB0aGF0IHByb3ZpZGVzIHRoZSBtb3N0IGZsZXhpYmlsaXR5LlxuICAgIHZlbmRvcignYm94LWZsZXgnLCBtYXgoZ3Jvd3RoLCBzaHJpbmspLCBpZ25vcmU6IG1zKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxuXG5cbi8vIGNvbnZlcnRzIHRoZSBqdXN0aWZpY2F0aW9uIGFsaWdubWVudFxuLWNvbnZlcnQtanVzdGlmeShhbGlnbilcbiAgaWYgZmxleC1zdGFydCA9PSBhbGlnblxuICAgIHJldHVybiBzdGFydFxuICBlbHNlIGlmIGZsZXgtZW5kID09IGFsaWduXG4gICAgcmV0dXJuIGVuZFxuICBlbHNlIGlmIHNwYWNlLWFyb3VuZCA9PSBhbGlnblxuICAgIHJldHVybiBkaXN0cmlidXRlXG4gIGVsc2UgaWYgc3BhY2UtYmV0d2VlbiA9PSBhbGlnblxuICAgIHJldHVybiBqdXN0aWZ5XG4gIGVsc2VcbiAgICByZXR1cm4gYWxpZ25cblxuLy9cbi8vIDguIEFsaWdubWVudFxuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI2FsaWdubWVudFxuLy9cbmp1c3RpZnktY29udGVudChhbGlnbilcbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYm94LXBhY2snLCAtY29udmVydC1qdXN0aWZ5KGFsaWduKSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ2p1c3RpZnktY29udGVudCcsIGFsaWduLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmFsaWduLWNvbnRlbnQoYWxpZ24pXG4gIC8vIFdBUk46IE9ic29sZXRlIHNwZWMgZG9lcyBub3QgYWxsb3cgZm9yIGFkanVzdG1lbnQgaGVyZVxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1saW5lLXBhY2snLCAtY29udmVydC1qdXN0aWZ5KGFsaWduKSwgb25seTogbXMpXG4gICAgdmVuZG9yKCdhbGlnbi1jb250ZW50JywgYWxpZ24sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuLy8gY29udmVydHMgYWxpZ25tZW50IGZyb20gJ2ZsZXgnIHRvIG5vcm1hbCB2YWx1ZVxuLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKVxuICBpZiBmbGV4LXN0YXJ0ID09IGFsaWduXG4gICAgcmV0dXJuIHN0YXJ0XG4gIGVsc2UgaWYgZmxleC1lbmQgPT0gYWxpZ25cbiAgICByZXR1cm4gZW5kXG4gIGVsc2VcbiAgICByZXR1cm4gYWxpZ25cblxuYWxpZ24taXRlbXMoYWxpZ24pXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2JveC1hbGlnbicsIC1jb252ZXJ0LWFsaWdubWVudChhbGlnbiksIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWFsaWduJywgLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKSwgb25seTogbXMpXG4gICAgdmVuZG9yKCdhbGlnbi1pdGVtcycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5hbGlnbi1zZWxmKGFsaWduKVxuICAvLyBXQVJOOiBPYnNvbGV0ZSBzcGVjIGRvZXMgbm90IGFsbG93IGZvciBvdmVycmlkaW5nIGFsaWdubWVudCBvbiBpbmRpdmlkdWFsIGl0ZW1zLlxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYWxpZ24tc2VsZicsIGFsaWduLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG4gICAgdmVuZG9yKCdmbGV4LWl0ZW0tYWxpZ24nLCAtY29udmVydC1hbGlnbm1lbnQoYWxpZ24pLCBvbmx5OiBtcylcbiIsIi8qKlxuICogU3R5bGUgYW4gZWxlbWVudCBhcyBhIGNvbHVtbiB3aXRoIGEgZ3V0dGVyLlxuICogQHBhcmFtIHtudW1iZXJ9IFtyYXRpb3M9MV0gLSBBIHdpZHRoIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXIgYXMgYSBmcmFjdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbb2Zmc2V0PTBdIC0gQSBvZmZzZXQgc3BlY2lmaWVkIGFzIGEgZnJhY3Rpb24gKHNlZSByYXRpb3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtjeWNsZT0wXSAtIEVhc2lseSBjcmVhdGUgYW4gbnRoIGNvbHVtbiBncmlkIHdoZXJlIGN5Y2xlIGVxdWFscyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuXG4gKiBAcGFyYW0ge251bWJlcn0gW3VuY3ljbGU9MF0gLSBVbmRvIGEgcHJldmlvdXMgY3ljbGUgdmFsdWUgdG8gYWxsb3cgZm9yIGEgbmV3IG9uZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZ3V0dGVyPWplZXQuZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbmNvbHVtbihyYXRpb3MgPSAxLCBvZmZzZXQgPSAwLCBjeWNsZSA9IDAsIHVuY3ljbGUgPSAwLCBndXR0ZXIgPSBqZWV0Lmd1dHRlcilcbiAgc2lkZSA9IGplZXQtZ2V0LWxheW91dC1kaXJlY3Rpb24oKVxuICBvcHBvc2l0ZS1zaWRlID0gb3Bwb3NpdGUtcG9zaXRpb24oc2lkZSlcbiAgY29sdW1uLXdpZHRocyA9IGplZXQtZ2V0LWNvbHVtbihyYXRpb3MsIGd1dHRlcilcbiAgbWFyZ2luLWxhc3QgPSAwXG4gIG1hcmdpbi1sID0gbWFyZ2luLWxhc3RcbiAgbWFyZ2luLXIgPSBjb2x1bW4td2lkdGhzWzFdXG5cbiAgdW5sZXNzIG9mZnNldCA9PSAwXG4gICAgaWYgb2Zmc2V0IDwgMFxuICAgICAgb2Zmc2V0ICo9IC0xXG4gICAgICBvZmZzZXQgPSBqZWV0LWdldC1jb2x1bW4ob2Zmc2V0LCBjb2x1bW4td2lkdGhzWzFdKVswXVxuICAgICAgbWFyZ2luLXIgPSBtYXJnaW4tbGFzdCA9IG9mZnNldCArIGNvbHVtbi13aWR0aHNbMV0gKiAyXG4gICAgZWxzZVxuICAgICAgb2Zmc2V0ID0gamVldC1nZXQtY29sdW1uKG9mZnNldCwgY29sdW1uLXdpZHRoc1sxXSlbMF1cbiAgICAgIG1hcmdpbi1sID0gb2Zmc2V0ICsgY29sdW1uLXdpZHRoc1sxXVxuXG4gIGNmKClcbiAgZmxvYXQ6IHNpZGVcbiAgY2xlYXI6IG5vbmVcbiAgdGV4dC1hbGlnbjogaW5oZXJpdFxuICB3aWR0aDogKGNvbHVtbi13aWR0aHNbMF0pJVxuICBtYXJnaW4te3NpZGV9OiAobWFyZ2luLWwpJVxuICBtYXJnaW4te29wcG9zaXRlLXNpZGV9OiAobWFyZ2luLXIpJVxuXG4gIGlmIHVuY3ljbGUgIT0gMFxuICAgICY6bnRoLWNoaWxkKHt1bmN5Y2xlfW4pXG4gICAgICBtYXJnaW4te29wcG9zaXRlLXNpZGV9OiAobWFyZ2luLXIpJVxuICAgICAgZmxvYXQ6IHNpZGVcbiAgICAmOm50aC1jaGlsZCh7dW5jeWNsZX1uKzEpXG4gICAgICBjbGVhcjogbm9uZVxuXG4gIGlmIGN5Y2xlICE9IDBcbiAgICAmOm50aC1jaGlsZCh7Y3ljbGV9bilcbiAgICAgIG1hcmdpbi17b3Bwb3NpdGUtc2lkZX06IChtYXJnaW4tbGFzdCklXG4gICAgICBmbG9hdDogb3Bwb3NpdGUtc2lkZVxuICAgICY6bnRoLWNoaWxkKHtjeWNsZX1uKzEpXG4gICAgICBjbGVhcjogYm90aFxuICAgZWxzZVxuICAgICY6bGFzdC1jaGlsZFxuICAgICAgbWFyZ2luLXtvcHBvc2l0ZS1zaWRlfTogKG1hcmdpbi1sYXN0KSVcblxuLyoqXG4gKiBBbiBhbGlhcyBmb3IgdGhlIGNvbHVtbiBtaXhpbi5cbiAqL1xuY29sID0gY29sdW1uXG5cbi8qKlxuICogR2V0IHRoZSB3aWR0aCBvZiBhIGNvbHVtbiBhbmQgbm90aGluZyBlbHNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtyYXRpb3M9MV0gLSBBIHdpZHRoIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXIgYXMgYSBmcmFjdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZz1qZWV0Lmd1dHRlcl0gLSBTcGVjaWZ5IHRoZSBndXR0ZXIgd2lkdGggYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBjb250YWluZXJzIHdpZHRoLlxuICovXG5jb2x1bW4td2lkdGgocmF0aW9zID0gMSwgZyA9IGplZXQuZ3V0dGVyKVxuICByYXRpb3MgPSBqZWV0LXJldmVyc2UocmF0aW9zKSB1bmxlc3MgamVldC5wYXJlbnQtZmlyc3QgaXMgdHJ1ZVxuICB3ID0gMTAwXG5cbiAgZm9yIHJhdGlvIGluIHJhdGlvc1xuICAgIHcgPSAxMDAgKiByYXRpbyAtIGcgKyByYXRpbyAqIGdcblxuICByZXR1cm4gdyArICclJ1xuXG4vKipcbiAqIEFuIGFsaWFzIGZvciB0aGUgY29sdW1uLXdpZHRoIGZ1bmN0aW9uLlxuICovXG5jdyA9IGNvbHVtbi13aWR0aFxuXG4vKipcbiAqIEdldCB0aGUgZ3V0dGVyIHNpemUgb2YgYSBjb2x1bW4gYW5kIG5vdGhpbmcgZWxzZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2c9amVldC5ndXR0ZXJdIC0gU3BlY2lmeSB0aGUgZ3V0dGVyIHdpZHRoIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgY29udGFpbmVycyB3aWR0aC5cbiAqL1xuY29sdW1uLWd1dHRlcihyYXRpb3MgPSAxLCBnID0gamVldC5ndXR0ZXIpXG4gIHJhdGlvcyA9IGplZXQtcmV2ZXJzZShyYXRpb3MpIHVubGVzcyBqZWV0LnBhcmVudC1maXJzdCBpcyB0cnVlXG4gIHcgPSAxMDBcblxuICBmb3IgcmF0aW8gaW4gcmF0aW9zXG4gICAgZyA9IGcgLyB3ICogMTAwXG5cbiAgcmV0dXJuIGcgKyAnJSdcblxuLyoqXG4gKiBBbiBhbGlhcyBmb3IgdGhlIGNvbHVtbi1ndXR0ZXIgZnVuY3Rpb24uXG4gKi9cbmNnID0gY29sdW1uLWd1dHRlclxuXG4vKipcbiAqIFN0eWxlIGFuIGVsZW1lbnQgYXMgYSBjb2x1bW4gd2l0aG91dCBhbnkgZ3V0dGVycyBmb3IgYSBzZWFtbGVzcyByb3cuXG4gKiBAcGFyYW0ge251bWJlcn0gW3JhdGlvcz0xXSAtIEEgd2lkdGggcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5lciBhcyBhIGZyYWN0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtvZmZzZXQ9MF0gLSBBIG9mZnNldCBzcGVjaWZpZWQgYXMgYSBmcmFjdGlvbiAoc2VlIHJhdGlvcykuXG4gKiBAcGFyYW0ge251bWJlcn0gW2N5Y2xlPTBdIC0gRWFzaWx5IGNyZWF0ZSBhbiBudGggY29sdW1uIGdyaWQgd2hlcmUgY3ljbGUgZXF1YWxzIHRoZSBudW1iZXIgb2YgY29sdW1ucy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbdW5jeWNsZT0wXSAtIFVuZG8gYSBwcmV2aW91cyBjeWNsZSB2YWx1ZSB0byBhbGxvdyBmb3IgYSBuZXcgb25lLlxuICovXG5zcGFuKHJhdGlvID0gMSwgb2Zmc2V0ID0gMCwgY3ljbGUgPSAwLCB1bmN5Y2xlID0gMClcbiAgc2lkZSA9IGplZXQtZ2V0LWxheW91dC1kaXJlY3Rpb24oKVxuICBvcHBvc2l0ZS1zaWRlID0gb3Bwb3NpdGUtcG9zaXRpb24oc2lkZSlcbiAgc3Bhbi13aWR0aCA9IGplZXQtZ2V0LXNwYW4ocmF0aW8pXG4gIG1hcmdpbi1yID0gMFxuICBtYXJnaW4tbCA9IG1hcmdpbi1yXG5cbiAgdW5sZXNzIG9mZnNldCA9PSAwXG4gICAgaWYgb2Zmc2V0IDwgMFxuICAgICAgb2Zmc2V0ICo9IC0xXG4gICAgICBtYXJnaW4tciA9IGplZXQtZ2V0LXNwYW4ob2Zmc2V0KVxuICAgIGVsc2VcbiAgICAgIG1hcmdpbi1sID0gamVldC1nZXQtc3BhbihvZmZzZXQpXG5cbiAgY2YoKVxuICBmbG9hdDogc2lkZVxuICBjbGVhcjogbm9uZVxuICB0ZXh0LWFsaWduOiBpbmhlcml0XG4gIHdpZHRoOiAoc3Bhbi13aWR0aCklXG4gIG1hcmdpbi17c2lkZX06IChtYXJnaW4tbCklXG4gIG1hcmdpbi17b3Bwb3NpdGUtc2lkZX06IChtYXJnaW4tciklXG5cbiAgaWYgY3ljbGUgIT0gMFxuICAgICY6bnRoLWNoaWxkKHtjeWNsZX1uKVxuICAgICAgZmxvYXQ6IG9wcG9zaXRlLXNpZGVcbiAgICAmOm50aC1jaGlsZCh7Y3ljbGV9biArIDEpXG4gICAgICBjbGVhcjogYm90aFxuXG4gIGlmIHVuY3ljbGUgIT0gMFxuICAgICY6bnRoLWNoaWxkKHt1bmN5Y2xlfW4pXG4gICAgICBmbG9hdDogc2lkZVxuICAgICY6bnRoLWNoaWxkKHt1bmN5Y2xlfW4gKyAxKVxuICAgICAgY2xlYXI6IG5vbmVcblxuLyoqXG4gKiBSZW9yZGVyIGNvbHVtbnMgd2l0aG91dCBhbHRlcmluZyB0aGUgSFRNTC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbcmF0aW9zPTBdIC0gU3BlY2lmeSBob3cgZmFyIGFsb25nIHlvdSB3YW50IHRoZSBlbGVtZW50IHRvIG1vdmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvbC1vci1zcGFuPWNvbHVtbl0gLSBTcGVjaWZ5IHdoZXRoZXIgdGhlIGVsZW1lbnQgaGFzIGEgZ3V0dGVyIG9yIG5vdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZ3V0dGVyPWplZXQuZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbnNoaWZ0KHJhdGlvcyA9IDAsIGNvbC1vci1zcGFuID0gY29sdW1uLCBndXR0ZXIgPSBqZWV0Lmd1dHRlcilcbiAgdHJhbnNsYXRlID0gJydcbiAgc2lkZSA9IGplZXQtZ2V0LWxheW91dC1kaXJlY3Rpb24oKVxuXG4gIGlmIHNpZGUgPT0gcmlnaHRcbiAgICByYXRpb3MgPSBqZWV0LXJlcGxhY2UtbnRoKHJhdGlvcywgMCwgcmF0aW9zWzBdICogLTEpXG5cbiAgaWYgY29sLW9yLXNwYW4gPT0gY29sdW1uIG9yIGNvbC1vci1zcGFuID09IGNvbCBvciBjb2wtb3Itc3BhbiA9PSBjXG4gICAgY29sdW1uLXdpZHRocyA9IGplZXQtZ2V0LWNvbHVtbihyYXRpb3MsIGd1dHRlcilcbiAgICB0cmFuc2xhdGUgPSBjb2x1bW4td2lkdGhzWzBdICsgY29sdW1uLXdpZHRoc1sxXVxuICBlbHNlXG4gICAgdHJhbnNsYXRlID0gamVldC1nZXQtc3BhbihyYXRpb3MpXG5cbiAgcG9zaXRpb246IHJlbGF0aXZlXG4gIGxlZnQ6ICh0cmFuc2xhdGUpJVxuXG4vKipcbiAqIFJlc2V0IGFuIGVsZW1lbnQgdGhhdCBoYXMgaGFkIHNoaWZ0KCkgYXBwbGllZCB0byBpdC5cbiAqL1xudW5zaGlmdCgpXG4gIHBvc2l0aW9uOiBzdGF0aWNcbiAgbGVmdDogMFxuXG4vKipcbiAqIFZpZXcgdGhlIGdyaWQgYW5kIGl0cyBsYXllcnMgZm9yIGVhc3kgZGVidWdnaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2xvcj1ibGFja10gLSBUaGUgYmFja2dyb3VuZCB0aW50IGFwcGxpZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbXBvcnRhbnQ9ZmFsc2VdIC0gV2hldGhlciB0byBhcHBseSB0aGUgc3R5bGUgYXMgIWltcG9ydGFudC5cbiAqL1xuZWRpdChjb2xvciA9IGJsYWNrLCBpbXBvcnRhbnQgPSBmYWxzZSlcbiAgaWYgaW1wb3J0YW50XG4gICAgKlxuICAgICAgYmFja2dyb3VuZDogcmdiYShjb2xvciwgNSUpICFpbXBvcnRhbnRcbiAgZWxzZVxuICAgICpcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoY29sb3IsIDUlKVxuXG4vKipcbiAqICBBbGlhcyBmb3IgZWRpdCgpLlxuICovXG5kZWJ1ZyA9IGVkaXRcblxuLyoqXG4gKiBIb3Jpem9udGFsbHkgY2VudGVyIGFuIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gW21heC13aWR0aD1qZWV0Lm1heC13aWR0aF0gLSBUaGUgbWF4IHdpZHRoIHRoZSBlbGVtZW50IGNhbiBiZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbcGFkPTBdIC0gU3BlY2lmeSB0aGUgZWxlbWVudCdzIGxlZnQgYW5kIHJpZ2h0IHBhZGRpbmcuXG4gKi9cbmNlbnRlcihtYXgtd2lkdGggPSBqZWV0Lm1heC13aWR0aCwgcGFkID0gMClcbiAgY2YoKVxuICB3aWR0aDogYXV0b1xuICBtYXgtd2lkdGg6IG1heC13aWR0aFxuICBmbG9hdDogbm9uZVxuICBkaXNwbGF5OiB1bnF1b3RlKCdibG9jaycpXG4gIG1hcmdpbi1yaWdodDogYXV0b1xuICBtYXJnaW4tbGVmdDogYXV0b1xuICBwYWRkaW5nLWxlZnQ6IHBhZFxuICBwYWRkaW5nLXJpZ2h0OiBwYWRcblxuLyoqXG4gKiBVbmNlbnRlciBhbiBlbGVtZW50LlxuICovXG51bmNlbnRlcigpXG4gIG1heC13aWR0aDogbm9uZVxuICBtYXJnaW4tcmlnaHQ6IDBcbiAgbWFyZ2luLWxlZnQ6IDBcbiAgcGFkZGluZy1sZWZ0OiAwXG4gIHBhZGRpbmctcmlnaHQ6IDBcblxuLyoqXG4gKiBTdGFjayBhbiBlbGVtZW50IHNvIHRoYXQgbm90aGluZyBpcyBlaXRoZXIgc2lkZSBvZiBpdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbcGFkPTBdIC0gU3BlY2lmeSB0aGUgZWxlbWVudCdzIGxlZnQgYW5kIHJpZ2h0IHBhZGRpbmcuXG4gKiBAcGFyYW0ge2JvbGxlYW4vc3RyaW5nfSBbYWxpZ249ZmFsc2VdIC0gU3BlY2lmeSB0aGUgdGV4dCBhbGlnbiBmb3IgdGhlIGVsZW1lbnQuXG4gKi9cbnN0YWNrKHBhZCA9IDAsIGFsaWduID0gZmFsc2UpXG4gIHNpZGUgPSBqZWV0LWdldC1sYXlvdXQtZGlyZWN0aW9uKClcbiAgb3Bwb3NpdGUtc2lkZSA9IG9wcG9zaXRlLXBvc2l0aW9uKHNpZGUpXG5cbiAgZGlzcGxheTogdW5xdW90ZSgnYmxvY2snKVxuICBjbGVhcjogYm90aFxuICBmbG9hdDogbm9uZVxuICB3aWR0aDogMTAwJVxuICBtYXJnaW4tbGVmdDogYXV0b1xuICBtYXJnaW4tcmlnaHQ6IGF1dG9cblxuICAmOmZpcnN0LWNoaWxkXG4gICAgbWFyZ2luLXtzaWRlfTogYXV0b1xuXG4gICY6bGFzdC1jaGlsZFxuICAgIG1hcmdpbi17b3Bwb3NpdGUtc2lkZX06IGF1dG9cblxuICBpZiBwYWQgIT0gMFxuICAgIHBhZGRpbmctbGVmdDogcGFkXG4gICAgcGFkZGluZy1yaWdodDogcGFkXG5cbiAgaWYgKGFsaWduIGlzIG5vdCBmYWxzZSlcbiAgICBpZiAoYWxpZ24gPT0gY2VudGVyKSBvciAoYWxpZ24gPT0gYylcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlclxuICAgIGlmIChhbGlnbiA9PSBsZWZ0KSBvciAoYWxpZ24gPT0gbClcbiAgICAgIHRleHQtYWxpZ246IGxlZnRcbiAgICBpZiAoYWxpZ24gPT0gcmlnaHQpIG9yIChhbGlnbiA9PSByKVxuICAgICAgdGV4dC1hbGlnbjogcmlnaHRcblxuLyoqXG4gKiBVbnN0YWNrIGFuIGVsZW1lbnQuXG4gKi9cbnVuc3RhY2soKVxuICBzaWRlID0gamVldC1nZXQtbGF5b3V0LWRpcmVjdGlvbigpXG4gIG9wcG9zaXRlLXNpZGUgPSBvcHBvc2l0ZS1wb3NpdGlvbihzaWRlKVxuXG4gIHRleHQtYWxpZ246IHNpZGVcbiAgZGlzcGxheTogaW5saW5lXG4gIGNsZWFyOiBub25lXG4gIHdpZHRoOiBhdXRvXG4gIG1hcmdpbi1sZWZ0OiAwXG4gIG1hcmdpbi1yaWdodDogMFxuXG4gICY6Zmlyc3QtY2hpbGRcbiAgICBtYXJnaW4te3NpZGV9OiAwXG5cbiAgJjpsYXN0LWNoaWxkXG4gICAgbWFyZ2luLXtvcHBvc2l0ZS1zaWRlfTogMFxuXG4vKipcbiAqIENlbnRlciBhbiBlbGVtZW50IG9uIGVpdGhlciBvciBib3RoIGF4ZXMuXG4gKiBAcmVxdWlyZXMgQSBwYXJlbnQgY29udGFpbmVyIHdpdGggcmVsYXRpdmUgcG9zaXRpb25pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2RpcmVjdGlvbj1ib3RoXSAtIFNwZWNpZnkgd2hpY2ggYXhlcyB0byBjZW50ZXIgdGhlIGVsZW1lbnQgb24uXG4gKi9cbmFsaWduKGRpcmVjdGlvbiA9IGJvdGgpXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZVxuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkXG5cbiAgaWYgKGRpcmVjdGlvbiA9PSBob3Jpem9udGFsKSBvciAoZGlyZWN0aW9uID09IGgpXG4gICAgbGVmdDogNTAlXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpXG4gIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSB2ZXJ0aWNhbCkgb3IgKGRpcmVjdGlvbiA9PSB2KVxuICAgIHRvcDogNTAlXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpXG4gIGVsc2VcbiAgICB0b3A6IDUwJVxuICAgIGxlZnQ6IDUwJVxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpXG5cbi8qKlxuICogQXBwbHkgYSBjbGVhcmZpeCB0byBhbiBlbGVtZW50LlxuICovXG5jZigpXG4gICp6b29tOiAxXG5cbiAgJjpiZWZvcmUsICY6YWZ0ZXJcbiAgICBjb250ZW50OiAnJ1xuICAgIGRpc3BsYXk6IHRhYmxlXG5cbiAgJjphZnRlclxuICAgIGNsZWFyOiBib3RoXG4iLCJ1c2UoJy4uL25vZGVzL3ZlbmRvci1oZWxwZXJzLmpzJylcbkBpbXBvcnQgJ2NvbmZpZydcblxuLypcbiAqIEFsaWFzIFwibm93cmFwXCIgYXMgXCJuby13cmFwXCIuXG4gKi9cblxubm8td3JhcCA9IHVucXVvdGUoJ25vd3JhcCcpXG5cbi8qXG4gKiBIZWxwZXIgdG8gZmluZCBvdXQgaWYgYSBnaXZlbiB2YWx1ZSBpcyBhIHdpZHRoXG4gKi9cblxuaXMtd2lkdGgodmFsKVxuICBpZiBhdXRvID09IHZhbFxuICAgIHJldHVybiB0cnVlXG4gIGVsc2UgaWYgdmFsICYmICd1bml0JyA9PSB0eXBlKHZhbClcbiAgICAvLyBTdHlsdXMgZG9lcyBub3Qgc2hvcnQgY2lyY3VpdCBzbyB3ZSBuZWVkIHRvIHBlcmZvcm0gdGhpcyBhcyBhIGRpc3RpbmN0XG4gICAgLy8gb3BlcmF0aW9uIHRvIHByZXZlbnQgZXJyb3JzXG4gICAgcmV0dXJuICcnICE9IHVuaXQodmFsKVxuICByZXR1cm4gZmFsc2VcblxuLypcbiAqIFZlbmRvciBzdXBwb3J0IGZvciB0aGUgZ2l2ZW4gcHJvcCAvIGFyZ3VtZW50cywgb3B0aW9uYWxseSBzcGVjaWZ5aW5nIHRoZVxuICogb25seSBwcmVmaXhlcyB0byB1dGlsaXplLCBvciB0aG9zZSB3aGljaCBzaG91bGQgYmUgaWdub3JlZC5cbiAqL1xuXG52ZW5kb3IocHJvcCwgYXJncywgb25seSA9IG51bGwsIGlnbm9yZSA9IG51bGwsIHZlbmRvci1wcm9wZXJ0eSA9IHRydWUpXG4gIG5lZWRfbm9ybWFsaXplID0gIXZlbmRvci1wcm9wZXJ0eSBvciBwcm9wIGluICgndHJhbnNpdGlvbicgJ3RyYW5zaXRpb24tcHJvcGVydHknICdib3JkZXItaW1hZ2UnICdib3JkZXItaW1hZ2Utc2xpY2UnKVxuICBmb3IgcHJlZml4IGluIHZlbmRvci1wcmVmaXhlc1xuICAgIHVubGVzcyAob25seSBhbmQgIShwcmVmaXggaW4gb25seSkpIG9yIChpZ25vcmUgYW5kIHByZWZpeCBpbiBpZ25vcmUpXG4gICAgICBpZiBvZmZpY2lhbCA9PSBwcmVmaXhcbiAgICAgICAgaWYgbmVlZF9ub3JtYWxpemVcbiAgICAgICAgICB7cHJvcH06IG5vcm1hbGl6ZShwcm9wLCgnJXMnICUgYXJncykpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7cHJvcH06IGFyZ3NcbiAgICAgIGVsc2VcbiAgICAgICAgbmV3cHJvcCA9IHByb3BcbiAgICAgICAgbmV3cHJvcCA9ICctJyArIHByZWZpeCArICctJyArIHByb3AgaWYgdmVuZG9yLXByb3BlcnR5XG5cbiAgICAgICAgaWYgbmVlZF9ub3JtYWxpemVcbiAgICAgICAgICB7bmV3cHJvcH06IG5vcm1hbGl6ZShwcm9wLCgnJXMnICUgYXJncykscHJlZml4KVxuICAgICAgICBlbHNlXG4gICAgICAgICAge25ld3Byb3B9OiBhcmdzXG4vKlxuICogVmVuZG9yaXplIHRoZSBnaXZlbiB2YWx1ZS5cbiAqL1xuXG52ZW5kb3ItdmFsdWUoYXJnLCBvbmx5ID0gbnVsbCwgaWdub3JlID0gbnVsbClcbiAgcHJvcCA9IGN1cnJlbnQtcHJvcGVydHlbMF1cbiAgZm9yIHByZWZpeCBpbiB2ZW5kb3ItcHJlZml4ZXNcbiAgICB1bmxlc3MgKG9ubHkgYW5kICEocHJlZml4IGluIG9ubHkpKSBvciAoaWdub3JlIGFuZCBwcmVmaXggaW4gaWdub3JlKSBvciBvZmZpY2lhbCA9PSBwcmVmaXhcbiAgICAgIGFkZC1wcm9wZXJ0eShwcm9wLCAnLSVzLSVzJyAlIChwcmVmaXggYXJnKSlcbiAgYXJnXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtc2hhZG93XCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtc2hhZG93KClcbiAgdmVuZG9yKCdib3gtc2hhZG93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ1c2VyLXNlbGVjdFwiIHN1cHBvcnQuXG4gKi9cblxudXNlci1zZWxlY3QoKVxuICB2ZW5kb3IoJ3VzZXItc2VsZWN0JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLWNvdW50XCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tY291bnQoKVxuICB2ZW5kb3IoJ2NvbHVtbi1jb3VudCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1nYXBcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1nYXAoKVxuICB2ZW5kb3IoJ2NvbHVtbi1nYXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZVwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGUtY29sb3JcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlLWNvbG9yKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS1jb2xvcicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1ydWxlLXdpZHRoXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tcnVsZS13aWR0aCgpXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtd2lkdGgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZS1zdHlsZVwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUtc3R5bGUoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlLXN0eWxlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXdpZHRoXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4td2lkdGgoKVxuICB2ZW5kb3IoJ2NvbHVtbi13aWR0aCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1zcGFuXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tc3BhbigpXG4gIHZlbmRvcignY29sdW1uLXNwYW4nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1maWxsXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tZmlsbCgpXG4gIHZlbmRvcignY29sdW1uLWZpbGwnLCBhcmd1bWVudHMsIG9ubHk6IG1veilcblxuLypcbiAqIExlZ2FjeSBzeW50YXggc3VwcG9ydCBmb3IgYmFja2dyb3VuZC1jbGlwIGFuZCBiYWNrZ3JvdW5kLW9yaWdpblxuICovXG5cbmxlZ2FjeS1iZy12YWx1ZXMocHJvcGVydHksIGFyZ3MpXG4gIGxlZ2FjeV9hcmdzID0gKClcbiAgaW1wb3J0YW5jZSA9IHVucXVvdGUoJycpXG4gIGZvciBzdWJhcmdzIGluIGFyZ3NcbiAgICBmb3IgYXJnIGluIHN1YmFyZ3NcbiAgICAgIGlmIGFyZyBpbiAoYm9yZGVyLWJveCBwYWRkaW5nLWJveCBjb250ZW50LWJveClcbiAgICAgICAgYXJnID0gdW5xdW90ZSgnYm9yZGVyJykgIGlmIGFyZyA9PSBib3JkZXItYm94XG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ3BhZGRpbmcnKSBpZiBhcmcgPT0gcGFkZGluZy1ib3hcbiAgICAgICAgYXJnID0gdW5xdW90ZSgnY29udGVudCcpIGlmIGFyZyA9PSBjb250ZW50LWJveFxuICAgICAgaWYgYXJnICE9ICchaW1wb3J0YW50J1xuICAgICAgICBwdXNoKGxlZ2FjeV9hcmdzLGFyZylcbiAgICAgIGVsc2VcbiAgICAgICAgaW1wb3J0YW5jZSA9ICFpbXBvcnRhbnRcbiAgdmVuZG9yKHByb3BlcnR5LCB1bnF1b3RlKGpvaW4oJywgJyxsZWdhY3lfYXJncykpIGltcG9ydGFuY2UsIG9ubHk6IG1veiB3ZWJraXQpXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZ3JvdW5kLWNsaXBcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtY2xpcCgpXG4gIGlmIGFyZ3VtZW50c1swXSA9PSB0ZXh0XG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kLWNsaXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdClcbiAgZWxzZVxuICAgIGxlZ2FjeS1iZy12YWx1ZXMoJ2JhY2tncm91bmQtY2xpcCcsIGFyZ3VtZW50cylcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IGFyZ3VtZW50c1xuXG4vKlxuICogVmVuZG9yIFwiYmFja2dyb3VuZC1vcmlnaW5cIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtb3JpZ2luKClcbiAgbGVnYWN5LWJnLXZhbHVlcygnYmFja2dyb3VuZC1vcmlnaW4nLCBhcmd1bWVudHMpXG4gIGJhY2tncm91bmQtb3JpZ2luOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJhY2tncm91bmQtc2l6ZVwiIHN1cHBvcnQuXG4gKi9cblxuYmFja2dyb3VuZC1zaXplKClcbiAgdmVuZG9yKCdiYWNrZ3JvdW5kLXNpemUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2Zvcm1cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zZm9ybSgpXG4gIHZlbmRvcigndHJhbnNmb3JtJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNmb3JtLW9yaWdpblwiIHN1cHBvcnQuXG4gKi9cbnRyYW5zZm9ybS1vcmlnaW4oKVxuICAgIHZlbmRvcigndHJhbnNmb3JtLW9yaWdpbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zZm9ybS1zdHlsZVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNmb3JtLXN0eWxlKClcbiAgdmVuZG9yKCd0cmFuc2Zvcm0tc3R5bGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3JkZXItaW1hZ2VcIiBzdXBwb3J0LlxuICovXG5cbmJvcmRlci1pbWFnZSgpXG4gIHZlbmRvcignYm9yZGVyLWltYWdlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG8gb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2l0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi1wcm9wZXJ0eVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi1wcm9wZXJ0eSgpXG4gIHZlbmRvcigndHJhbnNpdGlvbi1wcm9wZXJ0eScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tZHVyYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tZHVyYXRpb24oKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tZHVyYXRpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi1kZWxheVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi1kZWxheSgpXG4gIHZlbmRvcigndHJhbnNpdGlvbi1kZWxheScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImJhY2tmYWNlLXZpc2liaWxpdHlcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tmYWNlLXZpc2liaWxpdHkoKVxuICB2ZW5kb3IoJ2JhY2tmYWNlLXZpc2liaWxpdHknLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJwZXJzcGVjdGl2ZVwiIHN1cHBvcnQuXG4gKi9cblxucGVyc3BlY3RpdmUoKVxuICBpZiBtaXhpblxuICAgIHZlbmRvcigncGVyc3BlY3RpdmUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG4gIGVsc2VcbiAgICAncGVyc3BlY3RpdmUoJXMpJyAlIGFyZ3VtZW50c1xuXG4vKlxuICogVmVuZG9yIFwicGVyc3BlY3RpdmUtb3JpZ2luXCIgc3VwcG9ydC5cbiAqL1xuXG5wZXJzcGVjdGl2ZS1vcmlnaW4oKVxuICB2ZW5kb3IoJ3BlcnNwZWN0aXZlLW9yaWdpbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIE9wYWNpdHkgd2l0aCBjb25kaXRpb25hbCBJRSBzdXBwb3J0LlxuICovXG5cbm9wYWNpdHkobiwgYXJncy4uLilcbiAgb3BhY2l0eTogbiBhcmdzXG4gIGlmIHN1cHBvcnQtZm9yLWllXG4gICAgaWYgbiA9PSBpbmhlcml0IG9yIG4gPT0gaW5pdGlhbFxuICAgICAgLW1zLWZpbHRlcjogbiBhcmdzXG4gICAgICBmaWx0ZXI6IG4gYXJnc1xuICAgIGVsc2VcbiAgICAgIHZhbCA9IHJvdW5kKG4gKiAxMDApXG4gICAgICBpZiB2YWwgPT0gMTAwXG4gICAgICAgIC1tcy1maWx0ZXI6IG5vbmUgYXJnc1xuICAgICAgICBmaWx0ZXI6IG5vbmUgYXJnc1xuICAgICAgZWxzZVxuICAgICAgICAtbXMtZmlsdGVyOiAnXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0lcylcIicgJSB2YWwgYXJnc1xuICAgICAgICBmaWx0ZXI6ICdhbHBoYShvcGFjaXR5PSVzKScgJSB2YWwgYXJnc1xuXG4vKlxuICogVmVuZG9yIFwidGV4dC1zaXplLWFkanVzdFwiXG4gKi9cblxudGV4dC1zaXplLWFkanVzdCgpXG4gIHZlbmRvcigndGV4dC1zaXplLWFkanVzdCcsIGFyZ3VtZW50cylcblxuLypcbiAqIEFsaWFzIHRoZSBcIndoaXRlLXNwYWNlXCIgcHJvcGVydHkuXG4gKi9cblxud2hpdGVzcGFjZSgpXG4gIHdoaXRlLXNwYWNlOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJveC1zaXppbmdcIiBzdXBwb3J0LlxuICovXG5cbmJveC1zaXppbmcoKVxuICB2ZW5kb3IoJ2JveC1zaXppbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtb3JpZW50XCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtb3JpZW50KClcbiAgdmVuZG9yKCdib3gtb3JpZW50JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LWZsZXgtZ3JvdXBcIiBzdXBwb3J0LlxuICovXG5cbmJveC1mbGV4LWdyb3VwKClcbiAgdmVuZG9yKCdib3gtZmxleC1ncm91cCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1vcmRpbmFsLWdyb3VwXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtb3JkaW5hbC1ncm91cCgpXG4gIHZlbmRvcignYm94LW9yZGluYWwtZ3JvdXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cblxuLypcbiAqIFZlbmRvciBcImJveC1hbGlnblwiIHN1cHBvcnQuXG4gKi9cblxuYm94LWFsaWduKClcbiAgdmVuZG9yKCdib3gtYWxpZ24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtcGFja1wiIHN1cHBvcnQuXG4gKi9cblxuYm94LXBhY2soKVxuICB2ZW5kb3IoJ2JveC1wYWNrJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LWRpcmVjdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYm94LWRpcmVjdGlvbigpXG4gIHZlbmRvcignYm94LWRpcmVjdGlvbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uKClcbiAgdmVuZG9yKCdhbmltYXRpb24nLCBhcmd1bWVudHMpXG5cblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1uYW1lXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tbmFtZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLW5hbWUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZHVyYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1kdXJhdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uLWR1cmF0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWRlbGF5XCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZGVsYXkoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kZWxheScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1kaXJlY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1kaXJlY3Rpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kaXJlY3Rpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50XCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24taXRlcmF0aW9uLWNvdW50KClcbiAgdmVuZG9yKCdhbmltYXRpb24taXRlcmF0aW9uLWNvdW50JywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1wbGF5LXN0YXRlXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tcGxheS1zdGF0ZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLXBsYXktc3RhdGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZmlsbC1tb2RlXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZmlsbC1tb2RlKClcbiAgdmVuZG9yKCdhbmltYXRpb24tZmlsbC1tb2RlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiaHlwaGVuc1wiIHN1cHBvcnQuXG4gKi9cblxuaHlwaGVucygpXG4gIHZlbmRvcignaHlwaGVucycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImFwcGVhcmFuY2VcIiBzdXBwb3J0LlxuICovXG5cbmFwcGVhcmFuY2UoKVxuICB2ZW5kb3IoJ2FwcGVhcmFuY2UnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0YWItc2l6ZVwiIHN1cHBvcnQuXG4gKi9cblxudGFiLXNpemUoKVxuICB2ZW5kb3IoJ3RhYi1zaXplJywgYXJndW1lbnRzLCBvbmx5OiBtb3ogbyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcIm92ZXJmbG93LXNjcm9sbGluZ1wiIHN1cHBvcnQuXG4gKi9cblxub3ZlcmZsb3ctc2Nyb2xsaW5nKClcbiAgdmVuZG9yKCdvdmVyZmxvdy1zY3JvbGxpbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcInRleHQtb3ZlcmZsb3dcIiBzdXBwb3J0LCAsIC1vLSBmb3Igb3BlcmEgOS4qIC0gMTAuKlxuICovXG5cbnRleHQtb3ZlcmZsb3coKVxuICB2ZW5kb3IoJ3RleHQtb3ZlcmZsb3cnLCBhcmd1bWVudHMsIG9ubHk6IG9mZmljaWFsIG8pXG5cbi8qXG4gKiBWZW5kb3IgXCJ0ZXh0LXNpemUtYWRqdXN0XCIgc3VwcG9ydC5cbiAqL1xudGV4dC1zaXplLWFkanVzdCgpXG4gIHZlbmRvcigndGV4dC1zaXplLWFkanVzdCcsIGFyZ3VtZW50cywgb25seTogb2ZmaWNpYWwgd2Via2l0IG1zKVxuXG4vKlxuICogVmVuZG9yIFwiZm9udC1zbW9vdGhpbmdcIiBzdXBwb3J0LCB3ZWJraXQgb25seS5cbiAqL1xuZm9udC1zbW9vdGhpbmcoKVxuICB2ZW5kb3IoJ2ZvbnQtc21vb3RoaW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQpXG5cblxuLyoqXG4gKiBWZW5kb3IgaW5wdXQtcGxhY2Vob2xkZXIvcGxhY2Vob2xkZXIgc3VwcG9ydC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqICAgIC8vIERlZmF1bHQgc3ludGF4XG4gKiAgICBib2R5XG4gKiAgICAgIHBsYWNlaG9sZGVyKGNvbG9yICMzMzMsIGZvbnQtd2VpZ2h0IG5vcm1hbClcbiAqXG4gKiAgICAvLyBUaGUgY29tbWEgaXMgaW1wb3J0YW50XG4gKiAgICAucGxhY2Vob2xkZXItcmVkXG4gKiAgICAgIHBsYWNlaG9sZGVyKGNvbG9yIHJlZCwpXG4gKlxuICogICAgLy8gV2UgY2FuIHBhc3MgYSBmdW5jdGlvblxuICogICAgZ3JlZW4tcGxhY2Vob2xkZXIoKVxuICogICAgICBjb2xvciBncmVlblxuICogICAgLnBsYWNlaG9sZGVyLWdyZWVuXG4gKiAgICAgIHBsYWNlaG9sZGVyKGdyZWVuLXBsYWNlaG9sZGVyKVxuICpcbiAqICAgIC8vIFdlIGNhbiBwYXNzIGEgaGFzaFxuICogICAgdGV4dGFyZWFcbiAqICAgICAgcGxhY2Vob2xkZXIoKGZvbnQtc3R5bGUgaXRhbGljKSAoZm9udC13ZWlnaHQgYm9sZCkgKHBhZGRpbmcgJzRweCAxMHB4JykpXG4gKi9cbnBsYWNlaG9sZGVyKClcbiAgZm9yIHYgaW4gJzotd2Via2l0LWlucHV0JyAnLW1veicgJzotbW96JyAnLW1zLWlucHV0J1xuICAgICY6e3Z9LXBsYWNlaG9sZGVyXG4gICAgICBmb3IgcGFpciBpbiBhcmd1bWVudHNcbiAgICAgICAgaWYgdHlwZW9mKHBhaXIpID09ICdmdW5jdGlvbidcbiAgICAgICAgICBwYWlyKClcbiAgICAgICAgZWxzZSBpZiBwYWlyIGlzIG5vdCBudWxsICYmIHBhaXJbMF0gaXMgbm90IG51bGxcbiAgICAgICAgICB7cGFpclswXX06IHR5cGUocGFpclsxXSkgPT0gJ3N0cmluZycgPyBzKHBhaXJbMV0pIDogcGFpclsxXVxuaW5wdXQtcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlclxuXG4vKlxuICogVmVuZG9yIGJhY2tncm91bmQgc3VwcG9ydCAoZ3JhZGllbnRzKS5cbiAqL1xuXG5iYWNrZ3JvdW5kKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2JhY2tncm91bmQnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBiYWNrZ3JvdW5kIGFyZ3VtZW50c1xuXG5iYWNrZ3JvdW5kLWltYWdlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2JhY2tncm91bmQtaW1hZ2UnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBiYWNrZ3JvdW5kLWltYWdlIGFyZ3VtZW50c1xuXG5jdXJzb3IoKVxuICBpZiBtYXRjaCgnLWdyYWRpZW50XFwoJywgJycrYXJndW1lbnRzKVxuICAgIHZlbmRvcignY3Vyc29yJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgY3Vyc29yIGFyZ3VtZW50c1xuXG5saXN0LXN0eWxlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2xpc3Qtc3R5bGUnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBsaXN0LXN0eWxlIGFyZ3VtZW50c1xuXG5saXN0LXN0eWxlLWltYWdlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2xpc3Qtc3R5bGUtaW1hZ2UnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBsaXN0LXN0eWxlLWltYWdlIGFyZ3VtZW50c1xuIiwiLypcbiAqIGJvcmRlcjogPGNvbG9yPlxuICogYm9yZGVyOiAuLi5cbiAqL1xuXG5ib3JkZXIoY29sb3IsIGFyZ3MuLi4pXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yIGFyZ3NcbiAgZWxzZVxuICAgIGJvcmRlcjogYXJndW1lbnRzXG4iLCIvKlxuICogSGVscGVyIGZvciBib3JkZXItcmFkaXVzKCkuXG4gKi9cblxuLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zLCBpbXBvcnRhbmNlKVxuICBpZiBsZW5ndGgocG9zKSA9PSAzXG4gICAgLy8gYm9yZGVyLXJhZGl1czogPHRvcCB8IGJvdHRvbT4gPGxlZnQgfCByaWdodD4gPG4+XG4gICAgeSA9IHBvc1swXVxuICAgIHggPSBwb3NbMV1cbiAgICAvLyBXZSBkb24ndCB1c2UgdmVuZG9yIGZvciBib2Rlci1yYWRpdXMgYW55bW9yZVxuICAgIC8vIHZlbmRvcignYm9yZGVyLXJhZGl1cy0lcyVzJyAlIHBvcywgcG9zWzJdLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG4gICAgeydib3JkZXItJXMtJXMtcmFkaXVzJyAlIHBvc306IHBvc1syXSBpbXBvcnRhbmNlXG4gIGVsc2UgaWYgcG9zWzBdIGluICh0b3AgYm90dG9tKVxuICAgIC8vIGJvcmRlci1yYWRpdXM6IDx0b3AgfCBib3R0b20+IDxuPlxuICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvc1swXSBsZWZ0IHBvc1sxXSwgaW1wb3J0YW5jZSlcbiAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3NbMF0gcmlnaHQgcG9zWzFdLCBpbXBvcnRhbmNlKVxuICBlbHNlIGlmIHBvc1swXSBpbiAobGVmdCByaWdodClcbiAgICAvLyBib3JkZXItcmFkaXVzOiA8bGVmdCB8IHJpZ2h0PiA8bj5cbiAgICB1bnNoaWZ0KHBvcywgdG9wKTtcbiAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3MsIGltcG9ydGFuY2UpXG4gICAgcG9zWzBdID0gYm90dG9tXG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zLCBpbXBvcnRhbmNlKVxuXG4vKlxuICogYm9yZGVyLXJhZGl1cyBzdXBwb3J0aW5nIGF1Z21lbnRlZCBiZWhhdmlvci5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICBib3JkZXItcmFkaXVzOiAycHggNXB4XG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgNXB4IGJvdHRvbSAxMHB4XG4gKiAgICBib3JkZXItcmFkaXVzOiBsZWZ0IDVweFxuICogICAgYm9yZGVyLXJhZGl1czogdG9wIGxlZnQgNXB4XG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgbGVmdCAxMHB4IGJvdHRvbSByaWdodCA1cHhcbiAqICAgIGJvcmRlci1yYWRpdXM6IHRvcCBsZWZ0IDEwcHgsIGJvdHRvbSByaWdodCA1cHhcbiAqXG4gKi9cblxuYm9yZGVyLXJhZGl1cygpXG4gIHBvcyA9ICgpXG4gIGF1Z21lbnRlZCA9IGZhbHNlXG4gIGltcG9ydGFuY2UgPSBhcmd1bWVudHNbbGVuZ3RoKGFyZ3VtZW50cykgLSAxXSA9PSAhaW1wb3J0YW50ID8gIWltcG9ydGFudCA6IHVucXVvdGUoJycpXG5cbiAgZm9yIGFyZ3MgaW4gYXJndW1lbnRzXG4gICAgZm9yIGFyZyBpbiBhcmdzXG4gICAgICBpZiBhcmcgaXMgYSAnaWRlbnQnXG4gICAgICAgIGFwcGVuZChwb3MsIGFyZylcbiAgICAgICAgYXVnbWVudGVkID0gdHJ1ZVxuICAgICAgZWxzZVxuICAgICAgICBhcHBlbmQocG9zLCBhcmcpXG4gICAgICAgIGlmIGF1Z21lbnRlZFxuICAgICAgICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcbiAgICAgICAgICBwb3MgPSAoKVxuICBib3JkZXItcmFkaXVzIHBvcyB1bmxlc3MgYXVnbWVudGVkXG4iLCIvLyAtLS0tLS0tLS0tXG4vLyBUeXBvZ3JhcGh5XG4vLyAtLS0tLS0tLS0tXG5cbi8vIEFsaWFzOiBCb2xkXG4vLyBJdCdzIGp1c3QgZmFzdGVyIHRvIHR5cGUgYm9sZCgpIHRoYW4gZm9udC13ZWlnaHQ6IGJvbGRcblxuYm9sZCgpXG4gIGZvbnQtd2VpZ2h0OiBib2xkXG5cbi8vIEFsaWFzOiBJdGFsaWNcbi8vIEl0J3MganVzdCBmYXN0ZXIgdG8gdHlwZSBpdGFsaWMoKSB0aGFuIGZvbnQtc3R5bGU6IGl0YWxpY1xuXG5pdGFsaWMoKVxuICBmb250LXN0eWxlOiBpdGFsaWNcblxuLy8gQWxpYXM6IE5vcm1hbFxuLy8gUHV0IHRoZSBmb250LXdlaWdodCBhbmQgc3R5bGUgYmFjayB0byBub3JtYWxcblxubm9ybWFsKClcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbFxuICBmb250LXN0eWxlOiBub3JtYWxcblxuLy8gTWl4aW46IFJhcXVvXG4vL1xuLy8gQmVjYXVzZSB0ZWNobmljYWxseSByYXF1byBpcyBub3Qgc2VtYW50aWMsIGl0J3MgYmV0dGVyIHRvIGFkZCBpdCBsaWtlIHRoaXMuXG4vL1xuLy8gZXguIHJhcXVvKClcblxucmFxdW8oKVxuICAmOmFmdGVyXG4gICAgY29udGVudDogXCIgXFwwMEJCXCJcblxuLy8gTWl4aW46IEZvbnQgRmFjZVxuLy9cbi8vIFN1cGVyIHNpbXBsZSBmb250LWZhY2UgZGVjbGFyYXRpb24uIEp1c3QgZ2l2ZSB0aGUgbmFtZSBhbmQgdGhlIGZvbGRlciBpdFxuLy8gbGl2ZXMgaW4uIE1ha2Ugc3VyZSB0aGUgZm9udCBuYW1lIG1hdGNoZXMgdGhlIG5hbWUgb2YgdGhlIGZpbGVzLiBVc2VzIHRoZVxuLy8gZm9udHNwcmluZyBzeW50YXg6XG4vLyBodHRwOi8vd3d3LmZvbnRzcHJpbmcuY29tL2Jsb2cvdGhlLW5ldy1idWxsZXRwcm9vZi1mb250LWZhY2Utc3ludGF4XG4vL1xuLy8gZXguIGZvbnQtZmFjZShwcm94aW1hLW5vdmEsICcvZm9udHMnKVxuXG5mb250LWZhY2UoJG5hbWUsICRmb2xkZXIsICR3ZWlnaHQgPSAnbm9ybWFsJywgJHN0eWxlID0gJ25vcm1hbCcpXG4gIEBmb250LWZhY2VcbiAgICBmb250LWZhbWlseTogJG5hbWVcbiAgICBzcmM6IHVybCgkZm9sZGVyIHVucXVvdGUoJy8nKSAkbmFtZSB1bnF1b3RlKCcuZW90JykgJz8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIHVybCgkZm9sZGVyIHVucXVvdGUoJy8nKSAkbmFtZSB1bnF1b3RlKCcud29mZicpKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCRmb2xkZXIgdW5xdW90ZSgnLycpICRuYW1lIHVucXVvdGUoJy50dGYnKSkgZm9ybWF0KCd0cnVldHlwZScpLCB1cmwoJGZvbGRlciB1bnF1b3RlKCcvJykgJG5hbWUgdW5xdW90ZSgnLmVvdCcpIHVucXVvdGUoJyMnKSAkbmFtZSkgZm9ybWF0KCdzdmcnKTtcbiAgICBmb250LXdlaWdodDogdW5xdW90ZSgkd2VpZ2h0KVxuICAgIGZvbnQtc3R5bGU6IHVucXVvdGUoJHN0eWxlKVxuXG5cbi8vIE1peGluOiBFbGxpcHNpc1xuLy8gVHJ1bmNhdGUgdGV4dCB0byB0aGUgd2lkdGggb2YgaXRzIGNvbnRhaW5lci4uLlxuLy8gZXg6IGVsbGlwc2lzKClcbi8vIGV4OiBlbGxpcHNpczogMzAwcHhcblxuZWxsaXBzaXMoJHdpZHRoID0gMTAwJSlcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2tcbiAgbWF4LXdpZHRoOiAkd2lkdGhcbiAgb3ZlcmZsb3c6IGhpZGRlblxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpc1xuICB3b3JkLXdyYXA6IG5vcm1hbFxuXG4vLyBGdW5jdGlvbjogTGluZSBIZWlnaHRcbi8vXG4vLyBJZiB0aGVyZSBpcyBhIGZvbnQtc2l6ZSBzZXQgb24gdGhlIHBhcmVudCBlbGVtZW50LCBhZGp1c3RzIHRoZSBsaW5lIGhlaWdodCB0b1xuLy8gbWF0Y2ggdGhhdC4gSWYgbm90LCBpdCB1c2VzIHRoZSBiYXNlIGZvbnQtc2l6ZSB0byBjYWxjdWxhdGUgdGhlIGxpbmUtaGVpZ2h0LlxuXG4tbGluZS1oZWlnaHQoKVxuICBpZiBAZm9udC1zaXplXG4gICAgbGluZS1oZWlnaHQ6IDEuNmVtXG4gIGVsc2VcbiAgICBsaW5lLWhlaWdodDogdW5pdCgkZm9udC1zaXplKjEuNiwgJ3B4JylcbiAgICBsaW5lLWhlaWdodDogMS42cmVtXG5cbi8vIE1peGluOiBUZXh0IE1hcmdpblxuLy9cbi8vIFB1dHMgbmljZSB2aXN1YWxseSBwbGVhc2luZyB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIG9uIGEgcGFyYWdyYXBoIG9mIHRleHQuXG4vLyBQdXQgYSBmb250LXNpemUgb24geW91ciBlbGVtZW50IHRvIGhhdmUgaXQgYWRqdXN0IGFjY29yZGluZ2x5LlxuLy9cbi8vIGV4LiBwXG4vLyAgICAgICBmb250LXNpemU6IDE4cHhcbi8vICAgICAgIHRleHQtbWFyZ2luKClcblxudGV4dC1tYXJnaW4oJHNpemUgPSAkZm9udC1zaXplKVxuICBpZiBAZm9udC1zaXplXG4gICAgbWFyZ2luOiAuNzVlbSAwXG4gIGVsc2VcbiAgICBtYXJnaW46IHVuaXQoJGZvbnQtc2l6ZSouNzUsICdweCcpIDBcblxuLy8gTWl4aW46IFBhcmFncmFwaFxuLy9cbi8vIFNldHMgYSBuaWNlIHNpemUsIGxpbmUtaGVpZ2h0LCBhbmQgbWFyZ2lucyBvbiBhIHBhcmFncmFwaCBvZiB0ZXh0LiBQYXNzIGFcbi8vIHNpemUgaW4gdG8gY3VzdG9taXplLiBUb2dnbGUgbWFyZ2lucyBvZmYgaWYgeW91IGRvbid0IHdhbnQgdGhlbS5cbi8vXG4vLyBleC4gcCgpXG4vLyBleC4gcDogMThweFxuLy8gZXguIHA6IDE0cHggZmFsc2VcblxucCgkc2l6ZSA9IDFyZW0sICRtYXJnaW5zID0gdHJ1ZSlcbiAgZm9udC1zaXplOiAkc2l6ZVxuICB0ZXh0LW1hcmdpbigpIGlmICRtYXJnaW5zXG4gIC1saW5lLWhlaWdodCgpXG4gIG9wZW4tdHlwZS1saWdhdHVyZXMoKSBpZiAkbGlnYXR1cmVzXG5cbi8vIEFsaWFzOiBwYXJhZ3JhcGhcbnBhcmFncmFwaCA9IHBcblxuLy8gQWxpYXM6IEZvbnQgU2l6ZVxuLy8gQW4gYWxpYXMgZm9yICdmb250LXNpemUnIHdpdGggYXV0by1mYWxsYmFjayBmb3IgcmVtLlxuLy8gZXguIGZzOiAxNnB4XG4vLyBleC4gZnM6IDEuMnJlbVxuXG5mcygkc2l6ZSlcbiAgaWYgKHVuaXQoJHNpemUpID09ICdyZW0nKVxuICAgIGZvbnQtc2l6ZTogcm91bmQodW5pdCgoJGZvbnQtc2l6ZSokc2l6ZSksICdweCcpKVxuICAgIGZvbnQtc2l6ZTogJHNpemVcbiAgZWxzZVxuICAgIGZvbnQtc2l6ZTogJHNpemVcblxuLy8gQWxpYXM6IFVwcGVyY2FzZVxuLy8gQW4gYWxpYXMgZm9yICd0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlJ1xuLy8gZXguIHVwcGVyY2FzZSgpXG5cbnVwcGVyY2FzZSgpXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2VcblxuLy8gQWxpYXM6IFVwY2FzZVxudXBjYXNlID0gdXBwZXJjYXNlXG5cbi8vIEFsaWFzOiBMb3dlcmNhc2Vcbi8vIEFuIGFsaWFzIGZvciAndGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZSdcbi8vIGV4LiBsb3dlcmNhc2UoKVxuXG5sb3dlcmNhc2UoKVxuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlXG5cbi8vIEFsaWFzOiBEb3duY2FzZVxuZG93bmNhc2UgPSBsb3dlcmNhc2VcblxuLy8gQWxpYXM6IFJlc2V0IENhc2Vcbi8vIEdldHMgcmlkIG9mIGFuIHRleHQgdHJhbnNmb3JtXG4vLyBleC4gcmVzZXQtY2FzZSgpXG5cbnJlc2V0LWNhc2UoKVxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZVxuXG4vLyBNaXhpbjogU21hbGxcbi8vXG4vLyBNYWtlcyB5b3VyIHRleHQgc21hbGxlciBhbmQgYSBsaXR0bGUgbGlnaHRlci4gR3JlYXQgb24gPHNtYWxsIC8+IHRhZ3MuXG4vL1xuLy8gZXguIHNtYWxsKClcblxuc21hbGwoKVxuICBmb250LXNpemU6IDU1JVxuICBvcGFjaXR5OiAuNlxuICBmb250LXdlaWdodDogbm9ybWFsXG5cbi8vIEZ1bmN0aW9uOiBIZWFkaW5nXG4vLyBGb3IgaW50ZXJuYWwgdXNlIHdpdGhpbiBoZWFkaW5nc1xuXG4taGVhZGluZygkbXVsdGlwbGllciwgJG1hcmdpbnMgPSB0cnVlKVxuICBmb250LXNpemU6IHVuaXQoKCRmb250LXNpemUqJG11bHRpcGxpZXIpLCAncHgnKVxuICBmb250LXNpemU6IHVuaXQoJG11bHRpcGxpZXIsICdyZW0nKVxuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVsZWdpYmlsaXR5XG4gIGZvbnQtd2VpZ2h0OiBib2xkXG4gIHRleHQtbWFyZ2luKCkgaWYgJG1hcmdpbnNcbiAgLWxpbmUtaGVpZ2h0KClcbiAgb3BlblR5cGVMaWdhdHVyZXMoKSBpZiAkbGlnYXR1cmVzXG5cbi8vIE1peGluIFNldDogaDEsIGgyLCBoMywgaDQsIGg1LCBoNlxuLy9cbi8vIFRoZXNlIHByb3ZpZGUgbmljZSBkZWZhdWx0cyBmb3IgaGVhZGluZ3MgYmFzZWQgb2ZmIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZS5cbi8vIFRoZSBjYW4gc2NhbGUgaW5maW5pdGVseSwgYW5kIHdvcmsgYmVzdCB3aGVuIG1hdGNoZWQgdG8gdGhlaXIgY29ycmVzcG9uZGluZ1xuLy8gaHRtbCBlbGVtZW50cy4gSWYgeW91J2QgbGlrZSB0byBjaGFuZ2UgdGhlIGJhc2Ugc2l6ZSBvZiBhIGhlYWRlciwganVzdCBwYXNzXG4vLyBpdCBhcyBhbiBvcHRpb24uXG4vL1xuLy8gZXguIGgzKClcbi8vIGV4LiBoMzogMy41XG5cbmgxKCRzaXplPTIuNClcbiAgLWhlYWRpbmcoJHNpemUpXG5cbmgyKCRzaXplPTEuOClcbiAgLWhlYWRpbmcoJHNpemUpXG5cbmgzKCRzaXplPTEuNSlcbiAgLWhlYWRpbmcoJHNpemUpXG5cbmg0KCRzaXplPTEuMylcbiAgLWhlYWRpbmcoJHNpemUpXG5cbmg1KCRzaXplPTEuMClcbiAgLWhlYWRpbmcoJHNpemUpXG5cbmg2KCRzaXplPTAuOSlcbiAgLWhlYWRpbmcoJHNpemUpXG4gIHVwY2FzZSgpXG5cbi8vIE1peGluOiBMaW5rXG4vL1xuLy8gQSBuaWNlIGRlZmF1bHQgc3R5bGUgZm9yIGxpbmtzLiBBY2NlcHRzIGEgY29sb3IgYW5kIGEgc3R5bGUuIENvbG9yIGNhbiBiZVxuLy8gYW55dGhpbmcsIHN0eWxlIGNhbiBiZSB1bmRlcmxpbmUsIGRhcmtlbiwgbGlnaHRlbiwgb3IgZ2xvdywgZWFjaCBnaXZpbmcgaXQgYVxuLy8gZGlmZmVyZW50IHN0eWxlIG9mIGludGVyYWN0aW9uIHdoZW4gaG92ZXJlZC4gTW9yZSBzdWdnZXN0aW9ucyBoZXJlIHdlbGNvbWUuXG4vL1xuLy8gZXguIGxpbmsoKVxuLy8gZXguIGxpbms6IGdyZWVuXG4vLyBleC4gbGluazogIzU3Nzc3RSAnZ2xvdydcblxubGluaygkY29sb3IgPSAkYmx1ZSwgJHN0eWxlID0gJ3VuZGVybGluZScpXG4gIGNvbG9yOiAkY29sb3JcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lXG4gIHRyYW5zaXRpb24oKVxuXG4gIGlmICRzdHlsZSA9PSAndW5kZXJsaW5lJ1xuICAgIGhvdmVyLXVuZGVybGluZSgpXG4gICAgJjpob3ZlclxuICAgICAgY29sb3I6IGRhcmtlbihAY29sb3IsIDE1JSlcbiAgZWxzZSBpZiAkc3R5bGUgPT0gJ2RhcmtlbidcbiAgICAmOmhvdmVyXG4gICAgICBjb2xvcjogZGFya2VuKEBjb2xvciwgMjAlKVxuICBlbHNlIGlmICRzdHlsZSA9PSAnbGlnaHRlbidcbiAgICBob3Zlci1saWdodGVuKClcbiAgZWxzZSBpZiAkc3R5bGUgPT0gJ2dsb3cnXG4gICAgJjpob3ZlclxuICAgICAgdGV4dC1zaGFkb3c6IDAgMCA3cHggcmdiYShAY29sb3IsIC42KVxuXG4gICY6dmlzaXRlZFxuICAgIG9wYWNpdHk6IC44XG5cbi8vIE1peGluOiBSZXNldCBMaW5rXG4vL1xuLy8gU29tZXRpbWVzIG15IGxpbmsgbWl4aW4gb2YgdGhlIGJyb3dzZXIgZGVmYXVsdHMgd2lsbCBnaXZlIHlvdSBxdWVzdGlvbmFibGVcbi8vIGxpbmsgZGVmYXVsdHMgdGhhdCB5b3UgZG9uJ3Qgd2FudCBvbiBjZXJ0YWluIGVsZW1lbnRzLiBUaGlzIGd1eSBnZXRzIHJpZCBvZlxuLy8gdGhhdC5cblxuLy8gZXguIHJlc2V0LWxpbmsoKVxuXG5yZXNldC1saW5rKClcbiAgYm9yZGVyOiBub25lXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZVxuICBjb2xvcjogaW5pdGlhbFxuXG4gICY6aG92ZXJcbiAgICBib3JkZXI6IG5vbmVcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmVcbiAgICBjb2xvcjogaW5pdGlhbFxuXG4gICY6dmlzaXRlZFxuICAgIG9wYWNpdHk6IDFcblxuLy8gTWl4aW46IFRleHQgU2VsZWN0aW9uXG4vL1xuLy8gVGhpcyBndXkgc2V0cyB0aGUgdGV4dCBzZWxlY3QgY29sb3IgaW50ZWxsaWdlbnRseSBiYXNlZCBvbiB0aGVcbi8vIGhpZ2hsaWdodC1jb2xvciB2YXJpYWJsZSBmb3VuZCBpbiB0aGUgc2V0dGluZ3MgZmlsZS4gSWYgeW91IHJlYWxseSB3YW50LCB5b3Vcbi8vIGNhbiBwYXNzIGl0IGEgY29sb3Igb3ZlcnJpZGUgdG9vLlxuXG4vLyBleC4gdGV4dC1zZWxlY3Rpb24oKVxuXG50ZXh0LXNlbGVjdGlvbigkY29sb3IgPSAkaGlnaGxpZ2h0LWNvbG9yLCAkdGV4dC1jb2xvciA9IG51bGwpXG5cbiAgJHRleHQtY29sb3IgPSAobGlnaHQoJGNvbG9yKSA/IHdoaXRlIDogIzQ5NDk0OSkgdW5sZXNzICR0ZXh0LWNvbG9yXG5cbiAgJjo6LW1vei1zZWxlY3Rpb25cbiAgICBiYWNrZ3JvdW5kOiAkY29sb3JcbiAgICBjb2xvcjogJHRleHQtY29sb3JcblxuICAmOjpzZWxlY3Rpb25cbiAgICBiYWNrZ3JvdW5kOiAkY29sb3JcbiAgICBjb2xvcjogJHRleHQtY29sb3JcblxuLy8gTWl4aW46IFVsXG4vL1xuLy8gQSBuaWNlIGRlZmF1bHQgZm9yIGxpc3Qgc3R5bGVzLiBNb3JlIG9yIGxlc3MgdGhlIHNhbWUgYXMgYnJvd3NlciBkZWZhdWx0cyxcbi8vIHNjYWxlcyBuaWNlbHkuIFlvdSBjYW4gcGFzcyBpdCBhbnkgc3R5bGUgdGhhdCBsaXN0LXN0eWxlLXR5cGUgd291bGQgbm9ybWFsbHlcbi8vIHRha2UuIERlZmF1bHRzIHRvIGRpc2MuIFVzZSB0aGlzIG9uIGEgdWwgZWxlbWVudCBwb3IgZmF2b3IuXG4vL1xuLy8gZXguIHVsKClcbi8vIGV4LiB1bDogJ3NxdWFyZSdcblxudWwoJHN0eWxlID0gJ2Rpc2MnKVxuICBtYXJnaW46IDVweCAxNXB4XG4gIG1hcmdpbjogMC4zMnJlbSAwLjk0cmVtXG4gIHBhZGRpbmctbGVmdDogMXJlbVxuXG4gIGxpXG4gICAgbGlzdC1zdHlsZS10eXBlOiB1bnF1b3RlKCRzdHlsZSlcbiAgICBwYWRkaW5nOiAycHggMFxuICAgIHBhZGRpbmc6IDAuMTI1cmVtXG5cbi8vIE1peGluOiBPbFxuLy9cbi8vIEEgbmljZSBkZWZhdWx0IGZvciBsaXN0IHN0eWxlcy4gTW9yZSBvciBsZXNzIHRoZSBzYW1lIGFzIGJyb3dzZXIgZGVmYXVsdHMsXG4vLyBzY2FsZXMgbmljZWx5LiBZb3UgY2FuIHBhc3MgaXQgYW55IHN0eWxlIHRoYXQgbGlzdC1zdHlsZS10eXBlIHdvdWxkIG5vcm1hbGx5XG4vLyB0YWtlLiBEZWZhdWx0cyB0byBkZWNpbWFsLiBVc2UgdGhpcyBvbiBhIG9sIGVsZW1lbnQgcG9yIGZhdm9yLlxuLy9cbi8vIGV4LiBvbCgpXG4vLyBleC4gb2w6ICd1cHBlci1yb21hbidcblxub2woJHN0eWxlID0gJ2RlY2ltYWwnKVxuICBtYXJnaW46IDVweCAxOHB4XG4gIG1hcmdpbjogMC4zMnJlbSAxLjEyNXJlbVxuICBwYWRkaW5nLWxlZnQ6IDFyZW1cblxuICBsaVxuICAgIGxpc3Qtc3R5bGUtdHlwZTogdW5xdW90ZSgkc3R5bGUpXG4gICAgcGFkZGluZzogMnB4IDBcbiAgICBwYWRkaW5nOiAwLjEyNXJlbVxuXG4vLyBNaXhpbjogSW5saW5lIExpc3Rcbi8vXG4vLyBGb3Igd2hlbiB5b3UgbmVlZCB5b3VyIGxpc3QgdG8gYmUgaG9yaXpvbnRhbC4gUGFzcyBpdCB0aGUgc3BhY2luZyB5b3Ugd2FudFxuLy8gYmV0d2VlbiBsaXN0IGVsZW1lbnRzLCB3aGF0ZXZlciB1bml0cyB5b3UnZCBsaWtlLiBEZWZhdWx0cyB0byAyMHB4LlxuLy9cbi8vIGV4LiBpbmxpbmUtbGlzdCgpXG4vLyBleC4gaW5saW5lLWxpc3Q6IDE1cHhcblxuaW5saW5lLWxpc3QoJHNwYWNpbmcgPSAyMHB4KVxuICBncm91cCgpXG4gIG1hcmdpbjogMFxuICBwYWRkaW5nOiAwXG5cbiAgbGlcbiAgICBmbG9hdDogbGVmdFxuICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmdcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmVcblxuICBsaTpsYXN0LWNoaWxkXG4gICAgbWFyZ2luLXJpZ2h0OiAwXG5cbi8vIE1peGluOiBSZXNldCBMaXN0XG4vL1xuLy8gSWYgeW91J3JlIHRpcmVkIG9mIGFsbCB0aGUgbGlzdCBzaGVuYW5pZ2FucyBhbmQgd2FudCB0byBnZXQgcmlkIG9mIHRoZW0gZm9yXG4vLyB0aGlzIHNwZWNpYWwgbGlzdCB5b3UncmUgd29ya2luZyBvbiwgdGhpcyBpcyB5b3VyIGd1eS4gUmVzZXRzIHRoZSBtYXJnaW5zLFxuLy8gcGFkZGluZywgYW5kIHN0eWxlLlxuLy9cbi8vIGV4LiByZXNldC1saXN0KClcblxucmVzZXQtbGlzdCgpXG4gIG1hcmdpbjogMFxuICBwYWRkaW5nOiAwXG5cbiAgbGlcbiAgICBmbG9hdDogbm9uZVxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZVxuICAgIHBhZGRpbmc6IDBcbiAgICBtYXJnaW46IDBcblxuLy8gTWl4aW46IEJsb2NrcXVvdGVcbi8vXG4vLyBOaWNlIHN0eWxlcyBmb3IgYSBibG9ja3F1b3RlLCBhbmQgZXZlbiBwdXRzIGEgbmljZSBoeXBoZW4gaW4gYmVmb3JlIHlvdXJcbi8vIGNpdGF0aW9uLiBVc2Ugd2l0aCBhIDxwPiBhbmQgPGNpdGU+LCA8Zm9vdGVyPiwgb3IgPGZpZ2NhcHRpb24+IGluc2lkZSBmb3Jcbi8vIGJlc3QgcmVzdWx0cy4gUGFzcyBhIGNvbG9yIG9yICdub25lJyB0byBzZXQgdGhlIGxlZnQgYm9yZGVyLlxuLy9cbi8vIGV4LiBibG9ja3F1b3RlKClcblxuYmxvY2txdW90ZSgkY29sb3IgPSAkYmx1ZSlcbiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAkY29sb3JcbiAgbWFyZ2luOiAxZW0gMFxuICBwYWRkaW5nLWxlZnQ6IDEuNWVtXG4gIGdyb3VwKClcblxuICA+IHBcbiAgICBmb250LXdlaWdodDogMzAwXG4gICAgZm9udC1zaXplOiAxMjclXG4gICAgZm9udC1zaXplOiAxLjI3cmVtXG4gICAgbGluZS1oZWlnaHQ6IDEyNyVcbiAgICBsaW5lLWhlaWdodDogMS4yN3JlbVxuICAgIG1hcmdpbi10b3A6IDBcblxuICA+IGNpdGUsID4gZm9vdGVyLCA+IGZpZ2NhcHRpb25cbiAgICBjb2xvcjogIzg4ODg4OFxuICAgICY6YmVmb3JlXG4gICAgICBjb250ZW50OiAnXFwyMDE0J1xuXG4vLyBBbGlhczogYmxvY2txdW9cbmJsb2NrcXVvID0gYmxvY2txdW90ZVxuXG4vLyBIeXBoZW5hdGlvblxuLy9cbi8vIEh5cGhlbmF0aW9uIGlzIHRoZSBiZXR0ZXIgd29yZC1icmVhay4gSXTigJlzIGxvY2FsZSBhd2FyZSwgYW5kIGluc2VydHMgdGhlXG4vLyBoeXBoZW4gY2hhcmFjdGVyIGF0IHRoZSBjb3JyZWN0IHBsYWNlLCB3aGVuIGJyZWFraW5nIHRoZSB3b3Jkcy4gVGhpcyBpc1xuLy8gZXNwZWNpYWxseSBpbXBvcnRhbnQgaW4gcmVzcG9uc2l2ZSBkZXNpZ25zLiBJdCB3aWxsIHNhdmUgeW91IGZyb20gYSBsb3Qgb2Zcbi8vIHJhZ2dlZCBsaW5lcy4gQW5kLCBubyBuZWVkIGFueW1vcmUgZm9yIGNsdW5reSAmIHNsb3cgSmF2YXNjcmlwdCBoeXBoZW5hdGlvblxuLy8gZmFsbGJhY2tzLiBUYWtlbiBmcm9tIGh0dHA6Ly93d3cubmV3bmV0LXNvZnQuY29tL2Jsb2cvY3NzdHlwb2dyYXBoeVxuLy9cbi8vIGV4LiBoeXBoZW5hdGlvbigpXG5cbmh5cGhlbmF0aW9uKClcbiAgICAtbXMtd29yZC1icmVhazogYnJlYWstYWxsXG4gICAgd29yZC1icmVhazogICAgIGJyZWFrLWFsbFxuICAgIHdvcmQtYnJlYWs6ICAgICBicmVhay13b3JkIC8vIHdlYmtpdFxuICAgIGh5cGhlbnM6IGF1dG8gLy8gbm9uZSwgYXV0bywgPG51bWJlcj5cbiAgICAtd2Via2l0LWh5cGhlbmF0ZS1iZWZvcmU6IDJcbiAgICAtd2Via2l0LWh5cGhlbmF0ZS1hZnRlcjogIDNcbiAgICBoeXBoZW5hdGUtbGluZXM6ICAgICAgICAgIDNcblxuLy8gTWl4aW46IFNoYWRvdyBTdHJva2Vcbi8vXG4vLyBDcmVhdGVzIGEgdGV4dCBvdXRsaW5lIHVzaW5nIHRleHQtc2hhZG93LiBQb3J0ZWQgZnJvbSBuaWIuXG4vLyBUYWtlcyBhIGNvbG9yLlxuLy9cbi8vIGV4OiBzaGFkb3ctc3Ryb2tlKClcbi8vIGV4OiBzYWhkb3ctc3Ryb2tlKHJlZClcblxuc2hhZG93LXN0cm9rZSgkY29sb3IgPSAkYmx1ZSlcbiAgdGV4dC1zaGFkb3c6IC0xcHggLTFweCAwICRjb2xvciwgMXB4IC0xcHggMCAkY29sb3IsIC0xcHggMXB4IDAgJGNvbG9yLCAxcHggMXB4IDAgJGNvbG9yXG5cbi8vIEFkZGl0aXZlIE1peGluOiBCYXNlXG4vL1xuLy8gV0FSTklORzogQ3JlYXRlcyBjbGFzc2VzIGluIHlvdXIgY3NzIGFuZCBzdHlsZXMgdGhlbSAtIG5vdCB0byBiZSB1c2VkIGluc2lkZVxuLy8gYW4gZWxlbWVudC5cbi8vXG4vLyBUaGlzIGlzIGFuIGVzc2VudGlhbCBtaXhpbi4gWW91IHdhbnQgdGhpcyBvbiB5b3VyIHBhZ2UuIFNldHMgeW91ciBmb250IHN0YWNrLFxuLy8gc2l6ZSwgYW5kIGNvbG9ycyBiYXNlZCBvbiB0aGUgc2V0dGluZ3MgZmlsZSBhbmQgbWFrZXMgc3VyZSB0aGF0IHlvdXIgdGV4dCBpc1xuLy8gYSBncmVhdCBsb29raW5nIGFzIHBvc3NpYmxlLiBZb3UgY2FuIG92ZXJyaWRlIGFueSBvZiB0aGUgcGFyYW1zLCBidXQgdGhlcmUgaXNcbi8vIHJlYWxseSBubyByZWFzb24gdG8uXG4vL1xuLy8gZXguIGJhc2UoKVxuXG5iYXNlKCRmb250cyA9ICRmb250LXN0YWNrLCAkc2l6ZSA9ICRmb250LXNpemUsICRjb2xvciA9ICRmb250LWNvbG9yKVxuICBodG1sXG4gICAgZm9udC1zaXplOiB1bml0KCRzaXplLCAncHgnKVxuICAgIGZvbnQtc2l6ZTogdW5pdCgoJHNpemUvMTYpKjEwMCwgXCIlXCIpXG5cbiAgYm9keVxuICAgIGZvbnQtZmFtaWx5OiAkZm9udHNcbiAgICBjb2xvcjogJGNvbG9yXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWRcbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCVcbiAgICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJVxuICAgIGZvbnQtc2l6ZS1hZGp1c3Q6IGF1dG9cblxuLy8gQWRkaXRpdmUgTWl4aW46IEhlYWRlcnNcbi8vXG4vLyBXQVJOSU5HOiBDcmVhdGVzIGNsYXNzZXMgaW4geW91ciBjc3MgYW5kIHN0eWxlcyB0aGVtIC0gbm90IHRvIGJlIHVzZWQgaW5zaWRlXG4vLyBhbiBlbGVtZW50LlxuLy9cbi8vIEFkZHMgcm9vdHMnIHdvbmRlcmZ1bCBzY2FsaW5nIGhlYWRlciBzdHlsZXMgdG8geW91ciA8aHg+IHRhZ3MuXG4vL1xuLy8gZXguIGhlYWRlcnMoKVxuXG5oZWFkZXJzKClcbiAgaDFcbiAgICBoMSgpXG5cbiAgaDJcbiAgICBoMigpXG5cbiAgaDNcbiAgICBoMygpXG5cbiAgaDRcbiAgICBoNCgpXG5cbiAgaDVcbiAgICBoNSgpXG5cbiAgaDZcbiAgICBoNigpXG5cbi8vIEFkZGl0aXZlIE1peGluOiBMaXN0c1xuLy9cbi8vIFdBUk5JTkc6IENyZWF0ZXMgY2xhc3NlcyBpbiB5b3VyIGNzcyBhbmQgc3R5bGVzIHRoZW0gLSBub3QgdG8gYmUgdXNlZCBpbnNpZGVcbi8vIGFuIGVsZW1lbnQuXG4vL1xuLy8gQWRkcyByb290cycgc3R5bGVzIHRvIHVsIGFuZCBvbHMuXG4vL1xuLy8gZXguIGxpc3RzKClcblxubGlzdHMoKVxuICB1bFxuICAgIHVsKClcbiAgb2xcbiAgICBvbCgpXG5cbi8vIEFkZGl0aXZlIE1peGluOiBCb2xkLUl0YWxpY1xuLy9cbi8vIFdBUk5JTkc6IENyZWF0ZXMgY2xhc3NlcyBpbiB5b3VyIGNzcyBhbmQgc3R5bGVzIHRoZW0gLSBub3QgdG8gYmUgdXNlZCBpbnNpZGVcbi8vIGFuIGVsZW1lbnQuXG4vL1xuLy8gQWRkcyBib2xkIGFuZCBpdGFsaWMgc3R5bGVzIHRvIHRoZSByaWdodCB0YWdzIGlmIHlvdSBkaWQgYSBnbG9iYWwgcmVzZXQuXG4vL1xuLy8gZXguIGJvbGQtaXRhbGljKClcblxuYm9sZC1pdGFsaWMoKVxuICBiXG4gICAgYm9sZCgpXG4gIGlcbiAgICBpdGFsaWMoKVxuICBzdHJvbmdcbiAgICBib2xkKClcbiAgZW1cbiAgICBpdGFsaWMoKVxuXG4vLyBBZGRpdGl2ZSBNaXhpbjogVHlwb2dyYXBoeVxuLy9cbi8vIFdBUk5JTkc6IENyZWF0ZXMgY2xhc3NlcyBpbiB5b3VyIGNzcyBhbmQgc3R5bGVzIHRoZW0gLSBub3QgdG8gYmUgdXNlZCBpbnNpZGVcbi8vIGFuIGVsZW1lbnQuXG4vL1xuLy8gQWRkcyByb290cycgc3R5bGVzIHRvIGJvbGQgYW5kIGl0YWxpYyBlbGVtZW50cywgaGVhZGVycywgcGFyYWdyYXBncywgc21hbGxcbi8vIHRleHQsIGxpbmtzLCBsaXN0cywgYW5kIGJsb2NrcXVvdGVzLiBHb3QgYWxsIHlvdXIgYmFzaWMgZWxlbWVudHMgY292ZXJlZC5cbi8vXG4vLyBleC4gdHlwb2dyYXBoeSgpXG5cbnR5cG9ncmFwaHkoKVxuICBib2xkLWl0YWxpYygpXG4gIGhlYWRlcnMoKVxuICBsaXN0cygpXG4gIHRleHQtc2VsZWN0aW9uKClcblxuICBwXG4gICAgcGFyYWdyYXBoKClcblxuICBzbWFsbFxuICAgIHNtYWxsKClcblxuICBhW2hyZWZdOm5vdChbY2xhc3NdKVxuICAgIGxpbmsoKVxuXG4gIGJsb2NrcXVvdGVcbiAgICBibG9ja3F1bygpXG5cbiAgLmh5cGhlbmF0aW9uXG4gICAgaHlwaGVuYXRpb24oKVxuIiwiLmxvZ2luX3BhZ2VcclxuXHQjaGVhZGVyXHJcblx0XHRiYWNrZ3JvdW5kOiAkYmx1ZSB1cmwoJy4uL2ltYWdlcy9oZWFkZXItZ3JhZGllbnQtYmNrZ3JuZC5qcGcnKSBuby1yZXBlYXQgdG9wIGNlbnRlciBcXC8gY292ZXJcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICRibHVlXHJcblx0XHRoZWlnaHQ6IDMwOHB4XHJcblx0XHRtYXJnaW4tYm90dG9tOiAyMHB4XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmVcclxuXHRcdC5yb3dcclxuXHRcdFx0aGVpZ2h0OiAzMDhweFxyXG5cdFx0I3NtYXJ0ZmVlc19sb2dvXHJcblx0XHRcdGFic29sdXRlOiBib3R0b20gODBweCBsZWZ0IDBcclxuXHRcdCNjbG9zaW5nX2NvcnBfbG9nb1xyXG5cdFx0XHRhYnNvbHV0ZTogdG9wIDUwcHggcmlnaHQgMTBweFxyXG5cdC5yb3dcclxuXHRcdG1heC13aWR0aDogOTYwcHhcclxuXHRcdG1hcmdpbjogMCBhdXRvXHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmVcclxuXHRcdGNmKClcclxuXHRoMlxyXG5cdFx0Zm9udC1zaXplOiAxOHB4XHJcblx0XHRmb250LXdlaWdodDogbGlnaHRlclxyXG5cdGgxXHJcblx0XHRmb250LXNpemU6IDI0cHhcclxuXHRcdGZvbnQtd2VpZ2h0OiBsaWdodGVyXHJcblx0cFxyXG5cdFx0Y29sb3I6ICRncmV5XHJcblx0XHRmb250LXNpemU6IDE0cHhcclxuXHRcdCYuY2FsbG91dFxyXG5cdFx0XHRmb250LXNpemU6IDE4cHhcclxuXHRcdFx0bGluZS1oZWlnaHQ6IDMwcHhcclxuXHRcdGFcclxuXHRcdFx0Y29sb3I6ICRibHVlXHJcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZVxyXG5cdC5jb250ZW50XHJcblx0XHRwYWRkaW5nOiAwIDMwcHhcclxuXHQuc29sdXRpb25zXHJcblx0XHR3aWR0aDogNTYlXHJcblx0XHRmbG9hdDogbGVmdFxyXG5cdC5sb2dpbl9mb3JtXHJcblx0XHR3aWR0aDogNDAlXHJcblx0XHRmbG9hdDogcmlnaHRcclxuXHRcdGZvcm1cclxuXHRcdFx0Y2YoKVxyXG5cdFx0aW5wdXRbdHlwZT1cInRleHRcIl0sIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXVxyXG5cdFx0XHR3aWR0aDogMTAwJVxyXG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkbGlnaHRfZ3JleVxyXG5cdFx0XHRib3JkZXItbGVmdDogMnB4IHNvbGlkICRibHVlXHJcblx0XHRcdHBhZGRpbmc6IDlweCAxMHB4IDlweCAzMHB4XHJcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3hcclxuXHRcdFx0bWFyZ2luOiA1cHggMFxyXG5cdFx0XHQmW25hbWU9XCJ1c2VybmFtZVwiXVxyXG5cdFx0XHRcdGJhY2tncm91bmQ6IHVybCgnLi4vaW1hZ2VzL2ljb25fcGVyc29uLnBuZycpIG5vLXJlcGVhdCA4cHggOXB4XHJcblx0XHRcdCZbbmFtZT1cInBhc3N3b3JkXCJdXHJcblx0XHRcdFx0YmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvaWNvbl9sb2NrLnBuZycpIG5vLXJlcGVhdCA4cHggOXB4XHJcblx0XHRsYWJlbC5yZW1lbWJlclxyXG5cdFx0XHRtYXJnaW4tdG9wOiAxMHB4XHJcblx0XHRcdGZsb2F0OiBsZWZ0XHJcblx0XHRcdGlucHV0W3R5cGU9XCJjaGVja2JveFwiXVxyXG5cdFx0XHRcdHdpZHRoOiAxOHB4XHJcblx0XHRcdFx0aGVpZ2h0OiAxOHB4XHJcblx0XHRcdFx0cmVsYXRpdmU6IGJvdHRvbSAtMnB4XHJcblx0XHRidXR0b25cclxuXHRcdFx0Zm9udC1zaXplOiAxNHB4XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRibHVlXHJcblx0XHRcdGNvbG9yOiB3aGl0ZVxyXG5cdFx0XHRwYWRkaW5nOiA4cHggMTJweFxyXG5cdFx0XHRmbG9hdDogcmlnaHRcclxuXHRcdFx0Ym9yZGVyOiBub25lXHJcblx0XHRcdG1hcmdpbjogMTBweCAwIDAgMFxyXG5cdGhyXHJcblx0XHRib3JkZXI6IG5vbmVcclxuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbGlnaHRlcl9ncmV5XHJcblx0XHRjbGVhcjogYm90aFxyXG5cdFx0bWFyZ2luOiAzMHB4IDAgMzBweCAtMTAlXHJcblx0XHR3aWR0aDogMTIwJVxyXG5cclxuXHQjZm9vdGVyXHJcblx0XHRtYXgtd2lkdGg6IDk2MHB4XHJcblx0XHRtYXJnaW46IDcwcHggYXV0byAwIGF1dG9cclxuXHRcdHVsLmZvb3Rlcl9tZW51XHJcblx0XHRcdHJlc2V0LWxpc3QoKVxyXG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXJcclxuXHRcdFx0bGlcclxuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2tcclxuXHRcdFx0XHRhXHJcblx0XHRcdFx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkZ3JleVxyXG5cdFx0XHRcdFx0Y29sb3I6ICRibHVlXHJcblx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmVcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTJweFxyXG5cdFx0XHRcdFx0cGFkZGluZy1yaWdodDogOXB4XHJcblx0XHRcdFx0XHRoZWlnaHQ6IDEycHhcclxuXHRcdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9ja1xyXG5cdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDEycHhcclxuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogNHB4XHJcblx0XHRcdFx0JjpsYXN0LWNoaWxkIGFcclxuXHRcdFx0XHRcdGJvcmRlci1yaWdodDogMFxyXG5cdFx0cC5jb3B5cmlnaHRcclxuXHRcdFx0Zm9udC1zaXplOiAxMnB4XHJcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlclxyXG5cdFx0XHRtYXJnaW4tdG9wOiAyMHB4IiwiQGltcG9ydCAnbmliJ1xyXG5AaW1wb3J0ICdqZWV0J1xyXG5AaW1wb3J0ICdydXB0dXJlJ1xyXG5cclxuQGltcG9ydCBcInZhcnMuc3R5bFwiXHJcbkBpbXBvcnQgXCJpbXBvcnRzLypcIlxyXG5AaW1wb3J0IFwiaW1wb3J0cy9wYWdlcy8qXCJcclxuXHJcbkBmb250LWZhY2VcclxuXHRmb250LWZhbWlseSBNb250c2VycmF0XHJcblx0Zm9udC1zdHlsZSBsaWdodFxyXG5cdHNyYyB1cmwoJ2ZvbnRzL01vbnRzZXJyYXQtTGlnaHQub3RmJylcclxuXHJcbipcclxuXHRib3gtc2l6aW5nOiBib3JkZXItYm94XHJcblxyXG5ib2R5XHJcblx0bWFyZ2luOiAwXHJcblx0cGFkZGluZzogMFxyXG5cdGZvbnQtZmFtaWx5OiBNb250c2VycmF0LCBBcmlhbFxyXG5cdFxyXG5hXHJcblx0Ym9yZGVyOiBub25lXHJcblxyXG5pbWdcclxuXHRib3JkZXI6IG5vbmUiXX0= */