html{scroll-behavior:smooth}.services-listing{position:relative;margin-top:-webkit-calc(1.4rem + .75vw);margin-top:calc(1.4rem + .75vw)}@media (min-width: 1200px){.services-listing{margin-top:2rem}}.services-listing--posts>*{display:-ms-grid;display:grid;-ms-grid-columns:1fr;grid-template-columns:1fr;gap:1rem}@media only screen and (min-width: 768px){.services-listing--posts>*{grid-template-columns:repeat(auto-fill, minmax(20rem, 1fr))}}.service-post{display:block;-webkit-align-self:stretch;-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.service-post--inner{display:-ms-grid;display:grid;-ms-grid-columns:1fr;grid-template-columns:1fr;width:100%;height:100%;position:relative;margin:auto}.service-post--inner>*{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.service-post--image{position:relative}.service-post--image img{display:block;width:100%;height:100%}.service-post--image h2{width:100%;font-size:1.13333rem;position:absolute;bottom:0;left:0;color:#FFF;line-height:1;letter-spacing:0.1em;text-align:center;text-transform:uppercase;margin:0;background:-webkit-gradient(linear, left top, left bottom, from(#76B5BA), to(#4E959B));background:linear-gradient(180deg, #76B5BA 0%, #4E959B 100%);padding:.66667rem .33333rem;-webkit-transition:opacity 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);transition:opacity 0.3s cubic-bezier(0.25, 0.1, 0.25, 1)}.service-post--infos{z-index:9;opacity:0;background:-webkit-gradient(linear, left top, left bottom, from(rgba(118,181,186,0.8)), to(rgba(78,149,155,0.8)));background:linear-gradient(180deg, rgba(118,181,186,0.8) 0%, rgba(78,149,155,0.8) 100%);-webkit-transition:opacity 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);transition:opacity 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);visibility:hidden;padding:1.33333rem 1rem}.service-post--infos--inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:100%;color:#FFF}.service-post--title{font-size:1.33333rem;font-weight:800;letter-spacing:0.1em;text-transform:uppercase}.service-post--title:after{content:'';display:block;width:45px;height:1px;margin:12px auto;background-color:#FFF}.service-post--desc{margin-top:.4rem;line-height:23px}.service-post--link{margin-top:1.33333rem}.service-post--link span{display:inline-block;min-width:190px;font-weight:700;line-height:1;letter-spacing:0.1em;text-transform:uppercase;border:1px solid #FFF;-webkit-border-radius:15px;border-radius:15px;background:#FFF;/*!*/padding:.8rem .33333rem .66667rem}body.tmpl_ehpad .service-post--link span{color:#ACC36D}body.tmpl_residences .service-post--link span{color:#A1AF90}body.tmpl_ssr .service-post--link span{color:#76B5BB}body.tmpl_sport .service-post--link span{color:#36B3A8}.service-post:hover .service-post--image h2{opacity:0;visibility:visible}.service-post:hover .service-post--infos{opacity:1;visibility:visible}.singleServicesPage--content+.singleServicesPage--content{margin-top:-webkit-calc(1.53333rem + 2.25vw);margin-top:calc(1.53333rem + 2.25vw)}@media (min-width: 1200px){.singleServicesPage--content+.singleServicesPage--content{margin-top:3.33333rem}}.services-listing--posts[data-slide-count="1"] .services-listing-slider{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.services-listing__filter{margin-bottom:-webkit-calc(1.6rem + 3vw);margin-bottom:calc(1.6rem + 3vw);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:.66667rem}@media (min-width: 1200px){.services-listing__filter{margin-bottom:4rem}}@media only screen and (min-width: 500px){.services-listing__filter{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}}.services-listing__filter>*:first-child{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-weight:700;font-size:1.13333rem;line-height:1;letter-spacing:0.05em;text-transform:uppercase}.services-listing__filter ul{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:.66667rem}.services-listing__filter button{display:inline-block;cursor:pointer;color:#76B5BA;font-weight:700;padding:.33333rem .66667rem;line-height:1;letter-spacing:0.05em;font-size:1.13333rem;text-align:center;text-transform:uppercase;border:1px solid #76B5BA;-webkit-border-radius:5px;border-radius:5px;background:rgba(118,181,186,0.1);-webkit-transition:background .3s ease-in-out, color .3s ease-in-out;transition:background .3s ease-in-out, color .3s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}.services-listing__filter button:hover,.services-listing__filter button.is-active{color:#FFF;background:#76B5BA}.services-listing__group{text-align:center;scroll-margin-top:var(--header-height, 90px)}.services-listing__group>*:first-child{color:#3D3D3D;font-size:-webkit-calc(1.4rem + .75vw);font-size:calc(1.4rem + .75vw);font-weight:800;line-height:1.43}@media (min-width: 1200px){.services-listing__group>*:first-child{font-size:2rem}}.services-listing__group>.services-listing--posts{margin-top:-webkit-calc(1.43333rem + 1.125vw);margin-top:calc(1.43333rem + 1.125vw);margin-bottom:-webkit-calc(1.43333rem + 1.125vw);margin-bottom:calc(1.43333rem + 1.125vw)}@media (min-width: 1200px){.services-listing__group>.services-listing--posts{margin-top:2.33333rem}}@media (min-width: 1200px){.services-listing__group>.services-listing--posts{margin-bottom:2.33333rem}}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNlcnZpY2VzLXBhdGhvbG9naWVzLXRlbXBsYXRlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmZzL3Njc3Muc2NzcyIsImhlbHBlcnMvZnVuY3Rpb25zLnNjc3MiLCJoZWxwZXJzL2Vhc2VzLnNjc3MiLCJoZWxwZXJzL21peGlucy5zY3NzIiwiaGVscGVycy92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxLQUNFLHNCQUF1QixDQUN4QixrQkFHQyxpQkFBa0IsQ0NrU1osdUNBZkUsQ0FlRiwrQkFmNkIsQ0R4UXBDLDJCQVpELGtCQzBTUSxlQWxGNkIsQ0Q1TXBDLENBUkMsMkJBQ0QsZ0JBQWEsQ0FBYixZQUFhLENBQ2Isb0JBQTBCLENBQTFCLHlCQUEwQixDQUMxQixRRVFtQyxDRkpqQywwQ0FQRCwyQkFLQywyREFBa0UsQ0FFbEUsQ0FHSCxjQUNFLGFBQWMsQ0FDZCwwQkFBWSxDQUFaLDJCQUFZLENBQVosMEJBQVksQ0FBWixrQkFBbUIsQ0FFbkIscUJBQ0QsZ0JBQWEsQ0FBYixZQUFhLENBQ2Isb0JBQTBCLENBQTFCLHlCQUEwQixDQUMxQixVQUFXLENBQ1gsV0FBWSxDQUNaLGlCQUFrQixDQUNsQixXQUFZLENBTlYsdUJBU0EsaUJBQWMsQ0FBZCxhQUFjLENBQ2QsY0FBVSxDQUFWLFVBQVcsQ0FDWixxQkFJRCxpQkFBa0IsQ0FEaEIseUJBSUEsYUFBYyxDQUNkLFVBQVcsQ0FDWCxXQUFZLENBTlosd0JBVUEsVUFBVyxDQ3FQUixvQkF2RStCLENENUtsQyxpQkFBa0IsQ0FDbEIsUUFBUyxDQUNULE1BQU8sQ0FDUCxVQUFXLENBQ1gsYUFBYyxDQUNkLG9CQUFxQixDQUNyQixpQkFBa0IsQ0FDbEIsd0JBQXlCLENBQ3pCLFFBQVMsQ0FDVCxzRkFBNkQsQ0FBN0QsNERBQTZELENDME8xRCwyQkF2RStCLENEaktsQyxnRUc1REksQ0g0REosd0RHNUQ0QyxDSDZEN0MscUJBSUQsU0FBVSxDQUNWLFNBQVUsQ0FDVixpSEFBOEYsQ0FBOUYsdUZBQThGLENBQzlGLGdFR3BFOEMsQ0hvRTlDLHdER3BFOEMsQ0hxRTlDLGlCQUFrQixDQytOYix1QkF2RStCLENEckpwQyw0QkFDRSxtQkFBYSxDQUFiLG9CQUFhLENBQWIsbUJBQWEsQ0FBYixZQUFhLENBQ2IsMkJBQXNCLENBQXRCLDRCQUFzQixDQUF0Qiw2QkFBc0IsQ0FBdEIseUJBQXNCLENBQXRCLHFCQUFzQixDQUN0Qix3QkFBbUIsQ0FBbkIsMEJBQW1CLENBQW5CLHFCQUFtQixDQUFuQixrQkFBbUIsQ0FDbkIsdUJBQXVCLENBQXZCLDhCQUF1QixDQUF2QixvQkFBdUIsQ0FBdkIsc0JBQXVCLENBQ3ZCLFdBQVksQ0FDWixVQUFXLENBQ1oscUJDcU5JLG9CQXZFK0IsQ0R6SXBDLGVBQWdCLENBQ2hCLG9CQUFxQixDQUNyQix3QkFBeUIsQ0FKdkIsMkJBT0EsVUFBVyxDQUNYLGFBQWMsQ0FDZCxVQUFXLENBQ1gsVUFBVyxDQUNYLGdCQUFpQixDQUNqQixxQkFBc0IsQ0FDdkIsb0JDcU1JLGdCQXZFK0IsQ0R6SHBDLGdCQUFpQixDQUNmLG9CQytMRyxxQkF2RStCLENEdEhsQyx5QkFJQSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsZUFBZ0IsQ0FDaEIsYUFBYyxDQUNkLG9CQUFxQixDQUNyQix3QkFBeUIsQ0FDekIscUJBQXNCLENBQ3RCLDBCQUFtQixDQUFuQixrQkFBbUIsQ0FDbkIsZUFBZ0IsQ0FDaEIsSUFBQSxDQUFLLGlDQ3lHNkIsQ0R0R25DLHlDSWlHRCxhQ2hOb0IsQ0RvTmxCLDhDQUVGLGFDck5rQixDRHlOaEIsdUNBRUYsYUMxTmtCLENEOE5oQix5Q0FFRixhQy9Ob0IsQ0xRckIsNENBeUdHLFNBQVUsQ0FDVixrQkFBbUIsQ0ExR3RCLHlDQThHRyxTQUFVLENBQ1Ysa0JBQW1CLENBQ3BCLDBEQ3FLTSw0Q0FmRSxDQWVGLG9DQWY2QixDRDlJbkMsMkJBSEMsMERDdUtLLHFCQWxGNkIsQ0RsRm5DLENBSUYsd0VBQ0UsbUJBQWEsQ0FBYixvQkFBYSxDQUFiLG1CQUFhLENBQWIsWUFBYSxDQUNiLHVCQUFpQixDQUFqQiw4QkFBaUIsQ0FBakIsb0JBQWlCLENBQWpCLHNCQUF1QixDQUN4QiwwQkNzSk8sd0NBZjZCLENBZTdCLGdDQWY2QixDRDFIbkMsbUJBQWEsQ0FBYixvQkFBYSxDQUFiLG1CQUFhLENBQWIsWUFBYSxDQUNiLDJCQUFzQixDQUF0Qiw0QkFBc0IsQ0FBdEIsNkJBQXNCLENBQXRCLHlCQUFzQixDQUF0QixxQkFBc0IsQ0FDdEIsYUU3SWtDLENGOEluQywyQkFMRCwwQkNrSlEsa0JBbEY2QixDRDNEcEMsQ0l2Q0MsMENKa0NGLDBCQVFDLDZCQUFtQixDQUFuQiw0QkFBbUIsQ0FBbkIsMEJBQW1CLENBQW5CLHNCQUFtQixDQUFuQixrQkFBbUIsQ0FDbkIsd0JBQWEsQ0FBYiwwQkFBYSxDQUFiLHFCQUFhLENBQWIsa0JBQW1CLENBQ2pCLENBT0gsd0NBQ0UscUJBQWMsQ0FBZCxtQkFBYyxDQUFkLGFBQWMsQ0FDZCxlQUFnQixDQ29IWixvQkF2RStCLENEM0NuQyxhQUFjLENBQ2QscUJBQXNCLENBQ3RCLHdCQUF5QixDQUMxQiw2QkFPQyxtQkFBYSxDQUFiLG9CQUFhLENBQWIsbUJBQWEsQ0FBYixZQUFhLENBQ2Isc0JBQWUsQ0FBZixrQkFBZSxDQUFmLGNBQWUsQ0FDZixhRTFLa0MsQ0YyS25DLGlDQUVDLG9CQUFxQixDQUNyQixjQUFlLENBQ2YsYUFBYyxDQUNkLGVBQWdCLENDZ0daLDJCQXZFK0IsQ0R2Qm5DLGFBQWMsQ0FDZCxxQkFBc0IsQ0M2RmxCLG9CQXZFK0IsQ0RwQm5DLGlCQUFrQixDQUNsQix3QkFBeUIsQ0FDekIsd0JBQXlCLENBQ3pCLHlCQUFrQixDQUFsQixpQkFBa0IsQ0FDbEIsZ0NBQW9DLENBQ3BDLG9FQUE2RCxDQUE3RCw0REFBNkQsQ0FDN0QsdUJBQVksQ0FBWixvQkFBWSxDQUFaLGVBQWdCLENBZmxCLGtGQW1CQyxVQUFXLENBQ1gsa0JBQW1CLENBQ2pCLHlCQWlCRCxpQkFBa0IsQ0FDbEIsNENBQTZDLENBQzlDLHVDQUVDLGFBQWMsQ0M4RFIsc0NBZjZCLENBZTdCLDhCQWY2QixDRDdDbkMsZUFBZ0IsQ0FDaEIsZ0JBQWlCLENBQ2xCLDJCQUxELHVDQ3NFUSxjQWxGNkIsQ0RpQnBDLENBTUQsa0RDb0RRLDZDQWY2QixDQWU3QixxQ0FmNkIsQ0FlN0IsZ0RBZkUsQ0FlRix3Q0FmNkIsQ0RsQ3BDLDJCQUhELGtEQzJEUSxxQkFsRjZCLENEMEJwQyxDQ2pIRywyQkQ4R0osa0RDMkRRLHdCQWxGNkIsQ0QwQnBDIiwiZmlsZSI6InNlcnZpY2VzLXBhdGhvbG9naWVzLXRlbXBsYXRlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ2hlbHBlcnMvaGVscGVycyc7XG5cbmh0bWwge1xuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbn1cblxuLnNlcnZpY2VzLWxpc3Rpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIG1hcmdpbi10b3AoMzBweCk7XG5cbiAgJi0tcG9zdHMgPiAqIHtcblx0ZGlzcGxheTogZ3JpZDtcblx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdGdhcDogcmVtKDE1KTtcblx0QGluY2x1ZGUgbXEoJ3RhYmxldCcsICdtaW4nKSB7XG5cdCAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoI3tyZW0oMzAwKX0sIDFmcikpO1xuXHR9XG4gIH1cbn1cblxuLnNlcnZpY2UtcG9zdCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuXG4gICYtLWlubmVyIHtcblx0ZGlzcGxheTogZ3JpZDtcblx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0bWFyZ2luOiBhdXRvO1xuXG5cdD4gKiB7XG5cdCAgZ3JpZC1jb2x1bW46IDE7XG5cdCAgZ3JpZC1yb3c6IDE7XG5cdH1cbiAgfVxuXG4gICYtLWltYWdlIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdGltZyB7XG5cdCAgZGlzcGxheTogYmxvY2s7XG5cdCAgd2lkdGg6IDEwMCU7XG5cdCAgaGVpZ2h0OiAxMDAlO1xuXHR9XG5cblx0aDIge1xuXHQgIHdpZHRoOiAxMDAlO1xuXHQgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxN3B4KTtcblx0ICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdCAgYm90dG9tOiAwO1xuXHQgIGxlZnQ6IDA7XG5cdCAgY29sb3I6ICNGRkY7XG5cdCAgbGluZS1oZWlnaHQ6IDE7XG5cdCAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xuXHQgIHRleHQtYWxpZ246IGNlbnRlcjtcblx0ICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHQgIG1hcmdpbjogMDtcblx0ICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjNzZCNUJBIDAlLCAjNEU5NTlCIDEwMCUpO1xuXHQgIEBpbmNsdWRlIHBhZGRpbmcoMTBweCA1cHgpO1xuXHQgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyAkZWFzZTtcblx0fVxuICB9XG5cbiAgJi0taW5mb3Mge1xuXHR6LWluZGV4OiA5O1xuXHRvcGFjaXR5OiAwO1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDExOCwgMTgxLCAxODYsIDAuOCkgMCUsIHJnYmEoNzgsIDE0OSwgMTU1LCAwLjgpIDEwMCUpO1xuXHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgJGVhc2U7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0QGluY2x1ZGUgcGFkZGluZygyMHB4IDE1cHgpO1xuXG5cdCYtLWlubmVyIHtcblx0ICBkaXNwbGF5OiBmbGV4O1xuXHQgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdCAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblx0ICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0ICBoZWlnaHQ6IDEwMCU7XG5cdCAgY29sb3I6ICNGRkY7XG5cdH1cbiAgfVxuXG4gICYtLXRpdGxlIHtcblx0QGluY2x1ZGUgZm9udC1zaXplKDIwcHgpO1xuXHRmb250LXdlaWdodDogODAwO1xuXHRsZXR0ZXItc3BhY2luZzogMC4xZW07XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdC8vIEBpbmNsdWRlIG1hcmdpbi1ib3R0b20oNXB4KTtcblx0JjphZnRlciB7XG5cdCAgY29udGVudDogJyc7XG5cdCAgZGlzcGxheTogYmxvY2s7XG5cdCAgd2lkdGg6IDQ1cHg7XG5cdCAgaGVpZ2h0OiAxcHg7XG5cdCAgbWFyZ2luOiAxMnB4IGF1dG87XG5cdCAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcblx0fVxuICB9XG5cbiAgJi0tZGVzYyB7XG5cdEBpbmNsdWRlIG1hcmdpbi10b3AoNnB4KTtcblx0bGluZS1oZWlnaHQ6IDIzcHg7XG4gIH1cblxuICAmLS1saW5rIHtcblx0QGluY2x1ZGUgbWFyZ2luLXRvcCgyMHB4KTtcblxuXHRzcGFuIHtcblx0ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdCAgbWluLXdpZHRoOiAxOTBweDtcblx0ICBmb250LXdlaWdodDogNzAwO1xuXHQgIGxpbmUtaGVpZ2h0OiAxO1xuXHQgIGxldHRlci1zcGFjaW5nOiAwLjFlbTtcblx0ICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHQgIGJvcmRlcjogMXB4IHNvbGlkICNGRkY7XG5cdCAgYm9yZGVyLXJhZGl1czogMTVweDtcblx0ICBiYWNrZ3JvdW5kOiAjRkZGO1xuXHQgIC8qISovXG5cdCAgQGluY2x1ZGUgcGFkZGluZygxMnB4IDVweCAxMHB4KTtcblx0ICBAaW5jbHVkZSBjbGFzcy1vZi1ib2R5KCdjb2xvcicpO1xuXHR9XG4gIH1cblxuICAmOmhvdmVyIHtcblx0LnNlcnZpY2UtcG9zdC0taW1hZ2UgaDIge1xuXHQgIG9wYWNpdHk6IDA7XG5cdCAgdmlzaWJpbGl0eTogdmlzaWJsZTtcblx0fVxuXG5cdC5zZXJ2aWNlLXBvc3QtLWluZm9zIHtcblx0ICBvcGFjaXR5OiAxO1xuXHQgIHZpc2liaWxpdHk6IHZpc2libGU7XG5cdH1cbiAgfVxufVxuXG4uc2luZ2xlU2VydmljZXNQYWdlIHtcbiAgJi0tY29udGVudCB7XG5cdCYgKyAmIHtcblx0ICBAaW5jbHVkZSBtYXJnaW4tdG9wKDUwcHgpO1xuXHR9XG4gIH1cbn1cblxuLnNlcnZpY2VzLWxpc3RpbmctLXBvc3RzW2RhdGEtc2xpZGUtY291bnQ9XCIxXCJdIC5zZXJ2aWNlcy1saXN0aW5nLXNsaWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4vKlxufC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG58IEZpbHRlclxufC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG58XG58XG58XG4qL1xuXG4uc2VydmljZXMtbGlzdGluZ19fZmlsdGVyIHtcbiAgQGluY2x1ZGUgbWFyZ2luLWJvdHRvbSg2MHB4KTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiByZW0oMTApO1xufVxuQGluY2x1ZGUgbXEoNTAwLCAnbWluJykge1xuICAuc2VydmljZXMtbGlzdGluZ19fZmlsdGVyIHtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRleHRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VydmljZXMtbGlzdGluZ19fZmlsdGVyID4gKjpmaXJzdC1jaGlsZCB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBmb250LXdlaWdodDogNzAwO1xuICBAaW5jbHVkZSBmb250LXNpemUoMTdweCk7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VydmljZXMtbGlzdGluZ19fZmlsdGVyIHVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IHJlbSgxMCk7XG59XG4uc2VydmljZXMtbGlzdGluZ19fZmlsdGVyIGJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzc2QjVCQTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgQGluY2x1ZGUgcGFkZGluZyg1cHggMTBweCk7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBAaW5jbHVkZSBmb250LXNpemUoMTdweCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgYm9yZGVyOiAxcHggc29saWQgIzc2QjVCQTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDExOCwgMTgxLCAxODYsIDAuMSk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgLjNzIGVhc2UtaW4tb3V0LCBjb2xvciAuM3MgZWFzZS1pbi1vdXQ7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgJjpob3ZlcixcbiAgJi5pcy1hY3RpdmUge1xuXHRjb2xvcjogI0ZGRjtcblx0YmFja2dyb3VuZDogIzc2QjVCQTtcbiAgfVxufVxuXG4vKlxufC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG58IEdyb3VwXG58LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnxcbnxcbnxcbiovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGVhZGVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNlcnZpY2VzLWxpc3RpbmdfX2dyb3VwIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBzY3JvbGwtbWFyZ2luLXRvcDogdmFyKC0taGVhZGVyLWhlaWdodCwgOTBweCk7XG59XG4uc2VydmljZXMtbGlzdGluZ19fZ3JvdXAgPiAqOmZpcnN0LWNoaWxkIHtcbiAgY29sb3I6ICMzRDNEM0Q7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgzMHB4KTtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNDM7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUG9zdHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VydmljZXMtbGlzdGluZ19fZ3JvdXAgPiAuc2VydmljZXMtbGlzdGluZy0tcG9zdHMge1xuICBAaW5jbHVkZSBtYXJnaW4tdG9wKDM1cHgpO1xuICBAaW5jbHVkZSBtYXJnaW4tYm90dG9tKDM1cHgpO1xufSIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHByb3BlcnR5LWJsYWNrbGlzdCwgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuXG4vLyBTQ1NTIFJGUyBtaXhpblxuLy9cbi8vIEF1dG9tYXRlZCByZXNwb25zaXZlIHZhbHVlcyBmb3IgZm9udCBzaXplcywgcGFkZGluZ3MsIG1hcmdpbnMgYW5kIG11Y2ggbW9yZVxuLy9cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvcmZzL2Jsb2IvbWFpbi9MSUNFTlNFKVxuXG4vLyBDb25maWd1cmF0aW9uXG5cbi8vIEJhc2UgdmFsdWVcbiRyZnMtYmFzZS12YWx1ZTogMS4yNXJlbSAhZGVmYXVsdDtcbiRyZnMtdW5pdDogcmVtICFkZWZhdWx0O1xuXG5AaWYgJHJmcy11bml0ICE9IHJlbSBhbmQgJHJmcy11bml0ICE9IHB4IHtcbiAgQGVycm9yIFwiYCN7JHJmcy11bml0fWAgaXMgbm90IGEgdmFsaWQgdW5pdCBmb3IgJHJmcy11bml0LiBVc2UgYHB4YCBvciBgcmVtYC5cIjtcbn1cblxuLy8gQnJlYWtwb2ludCBhdCB3aGVyZSB2YWx1ZXMgc3RhcnQgZGVjcmVhc2luZyBpZiBzY3JlZW4gd2lkdGggaXMgc21hbGxlclxuJHJmcy1icmVha3BvaW50OiAxMjAwcHggIWRlZmF1bHQ7XG4kcmZzLWJyZWFrcG9pbnQtdW5pdDogcHggIWRlZmF1bHQ7XG5cbkBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdCAhPSBweCBhbmQgJHJmcy1icmVha3BvaW50LXVuaXQgIT0gZW0gYW5kICRyZnMtYnJlYWtwb2ludC11bml0ICE9IHJlbSB7XG4gIEBlcnJvciBcImAjeyRyZnMtYnJlYWtwb2ludC11bml0fWAgaXMgbm90IGEgdmFsaWQgdW5pdCBmb3IgJHJmcy1icmVha3BvaW50LXVuaXQuIFVzZSBgcHhgLCBgZW1gIG9yIGByZW1gLlwiO1xufVxuXG4vLyBSZXNpemUgdmFsdWVzIGJhc2VkIG9uIHNjcmVlbiBoZWlnaHQgYW5kIHdpZHRoXG4kcmZzLXR3by1kaW1lbnNpb25hbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEZhY3RvciBvZiBkZWNyZWFzZVxuJHJmcy1mYWN0b3I6IDEwICFkZWZhdWx0O1xuXG5AaWYgdHlwZS1vZigkcmZzLWZhY3RvcikgIT0gbnVtYmVyIG9yICRyZnMtZmFjdG9yIDw9IDEge1xuICBAZXJyb3IgXCJgI3skcmZzLWZhY3Rvcn1gIGlzIG5vdCBhIHZhbGlkICAkcmZzLWZhY3RvciwgaXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMS5cIjtcbn1cblxuLy8gTW9kZS4gUG9zc2liaWxpdGllczogXCJtaW4tbWVkaWEtcXVlcnlcIiwgXCJtYXgtbWVkaWEtcXVlcnlcIlxuJHJmcy1tb2RlOiBtaW4tbWVkaWEtcXVlcnkgIWRlZmF1bHQ7XG5cbi8vIEdlbmVyYXRlIGVuYWJsZSBvciBkaXNhYmxlIGNsYXNzZXMuIFBvc3NpYmlsaXRpZXM6IGZhbHNlLCBcImVuYWJsZVwiIG9yIFwiZGlzYWJsZVwiXG4kcmZzLWNsYXNzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gMSByZW0gPSAkcmZzLXJlbS12YWx1ZSBweFxuJHJmcy1yZW0tdmFsdWU6IDE2ICFkZWZhdWx0O1xuXG4vLyBTYWZhcmkgaWZyYW1lIHJlc2l6ZSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL3Jmcy9pc3N1ZXMvMTRcbiRyZnMtc2FmYXJpLWlmcmFtZS1yZXNpemUtYnVnLWZpeDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIERpc2FibGUgUkZTIGJ5IHNldHRpbmcgJGVuYWJsZS1yZnMgdG8gZmFsc2VcbiRlbmFibGUtcmZzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBDYWNoZSAkcmZzLWJhc2UtdmFsdWUgdW5pdFxuJHJmcy1iYXNlLXZhbHVlLXVuaXQ6IHVuaXQoJHJmcy1iYXNlLXZhbHVlKTtcblxuQGZ1bmN0aW9uIGRpdmlkZSgkZGl2aWRlbmQsICRkaXZpc29yLCAkcHJlY2lzaW9uOiAxMCkge1xuICAkc2lnbjogaWYoJGRpdmlkZW5kID4gMCBhbmQgJGRpdmlzb3IgPiAwIG9yICRkaXZpZGVuZCA8IDAgYW5kICRkaXZpc29yIDwgMCwgMSwgLTEpO1xuICAkZGl2aWRlbmQ6IGFicygkZGl2aWRlbmQpO1xuICAkZGl2aXNvcjogYWJzKCRkaXZpc29yKTtcbiAgQGlmICRkaXZpZGVuZCA9PSAwIHtcbiAgICBAcmV0dXJuIDA7XG4gIH1cbiAgQGlmICRkaXZpc29yID09IDAge1xuICAgIEBlcnJvciBcIkNhbm5vdCBkaXZpZGUgYnkgMFwiO1xuICB9XG4gICRyZW1haW5kZXI6ICRkaXZpZGVuZDtcbiAgJHJlc3VsdDogMDtcbiAgJGZhY3RvcjogMTA7XG4gIEB3aGlsZSAoJHJlbWFpbmRlciA+IDAgYW5kICRwcmVjaXNpb24gPj0gMCkge1xuICAgICRxdW90aWVudDogMDtcbiAgICBAd2hpbGUgKCRyZW1haW5kZXIgPj0gJGRpdmlzb3IpIHtcbiAgICAgICRyZW1haW5kZXI6ICRyZW1haW5kZXIgLSAkZGl2aXNvcjtcbiAgICAgICRxdW90aWVudDogJHF1b3RpZW50ICsgMTtcbiAgICB9XG4gICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwICsgJHF1b3RpZW50O1xuICAgICRmYWN0b3I6ICRmYWN0b3IgKiAuMTtcbiAgICAkcmVtYWluZGVyOiAkcmVtYWluZGVyICogMTA7XG4gICAgJHByZWNpc2lvbjogJHByZWNpc2lvbiAtIDE7XG4gICAgQGlmICgkcHJlY2lzaW9uIDwgMCBhbmQgJHJlbWFpbmRlciA+PSAkZGl2aXNvciAqIDUpIHtcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyAxO1xuICAgIH1cbiAgfVxuICAkcmVzdWx0OiAkcmVzdWx0ICogJGZhY3RvciAqICRzaWduO1xuICAkZGl2aWRlbmQtdW5pdDogdW5pdCgkZGl2aWRlbmQpO1xuICAkZGl2aXNvci11bml0OiB1bml0KCRkaXZpc29yKTtcbiAgJHVuaXQtbWFwOiAoXG4gICAgXCJweFwiOiAxcHgsXG4gICAgXCJyZW1cIjogMXJlbSxcbiAgICBcImVtXCI6IDFlbSxcbiAgICBcIiVcIjogMSVcbiAgKTtcbiAgQGlmICgkZGl2aWRlbmQtdW5pdCAhPSAkZGl2aXNvci11bml0IGFuZCBtYXAtaGFzLWtleSgkdW5pdC1tYXAsICRkaXZpZGVuZC11bml0KSkge1xuICAgICRyZXN1bHQ6ICRyZXN1bHQgKiBtYXAtZ2V0KCR1bml0LW1hcCwgJGRpdmlkZW5kLXVuaXQpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuLy8gUmVtb3ZlIHB4LXVuaXQgZnJvbSAkcmZzLWJhc2UtdmFsdWUgZm9yIGNhbGN1bGF0aW9uc1xuQGlmICRyZnMtYmFzZS12YWx1ZS11bml0ID09IHB4IHtcbiAgJHJmcy1iYXNlLXZhbHVlOiBkaXZpZGUoJHJmcy1iYXNlLXZhbHVlLCAkcmZzLWJhc2UtdmFsdWUgKiAwICsgMSk7XG59XG5AZWxzZSBpZiAkcmZzLWJhc2UtdmFsdWUtdW5pdCA9PSByZW0ge1xuICAkcmZzLWJhc2UtdmFsdWU6IGRpdmlkZSgkcmZzLWJhc2UtdmFsdWUsIGRpdmlkZSgkcmZzLWJhc2UtdmFsdWUgKiAwICsgMSwgJHJmcy1yZW0tdmFsdWUpKTtcbn1cblxuLy8gQ2FjaGUgJHJmcy1icmVha3BvaW50IHVuaXQgdG8gcHJldmVudCBtdWx0aXBsZSBjYWxsc1xuJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGU6IHVuaXQoJHJmcy1icmVha3BvaW50KTtcblxuLy8gUmVtb3ZlIHVuaXQgZnJvbSAkcmZzLWJyZWFrcG9pbnQgZm9yIGNhbGN1bGF0aW9uc1xuQGlmICRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlID09IHB4IHtcbiAgJHJmcy1icmVha3BvaW50OiBkaXZpZGUoJHJmcy1icmVha3BvaW50LCAkcmZzLWJyZWFrcG9pbnQgKiAwICsgMSk7XG59XG5AZWxzZSBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZSA9PSByZW0gb3IgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gXCJlbVwiIHtcbiAgJHJmcy1icmVha3BvaW50OiBkaXZpZGUoJHJmcy1icmVha3BvaW50LCBkaXZpZGUoJHJmcy1icmVha3BvaW50ICogMCArIDEsICRyZnMtcmVtLXZhbHVlKSk7XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgbWVkaWEgcXVlcnkgdmFsdWVcbiRyZnMtbXEtdmFsdWU6IGlmKCRyZnMtYnJlYWtwb2ludC11bml0ID09IHB4LCAjeyRyZnMtYnJlYWtwb2ludH1weCwgI3tkaXZpZGUoJHJmcy1icmVha3BvaW50LCAkcmZzLXJlbS12YWx1ZSl9I3skcmZzLWJyZWFrcG9pbnQtdW5pdH0pO1xuJHJmcy1tcS1wcm9wZXJ0eS13aWR0aDogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgbWF4LXdpZHRoLCBtaW4td2lkdGgpO1xuJHJmcy1tcS1wcm9wZXJ0eS1oZWlnaHQ6IGlmKCRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnksIG1heC1oZWlnaHQsIG1pbi1oZWlnaHQpO1xuXG4vLyBJbnRlcm5hbCBtaXhpbiB1c2VkIHRvIGRldGVybWluZSB3aGljaCBtZWRpYSBxdWVyeSBuZWVkcyB0byBiZSB1c2VkXG5AbWl4aW4gX3Jmcy1tZWRpYS1xdWVyeSB7XG4gIEBpZiAkcmZzLXR3by1kaW1lbnNpb25hbCB7XG4gICAgQGlmICRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnkge1xuICAgICAgQG1lZGlhICgjeyRyZnMtbXEtcHJvcGVydHktd2lkdGh9OiAjeyRyZnMtbXEtdmFsdWV9KSwgKCN7JHJmcy1tcS1wcm9wZXJ0eS1oZWlnaHR9OiAjeyRyZnMtbXEtdmFsdWV9KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAbWVkaWEgKCN7JHJmcy1tcS1wcm9wZXJ0eS13aWR0aH06ICN7JHJmcy1tcS12YWx1ZX0pIGFuZCAoI3skcmZzLW1xLXByb3BlcnR5LWhlaWdodH06ICN7JHJmcy1tcS12YWx1ZX0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAbWVkaWEgKCN7JHJmcy1tcS1wcm9wZXJ0eS13aWR0aH06ICN7JHJmcy1tcS12YWx1ZX0pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBJbnRlcm5hbCBtaXhpbiB0aGF0IGFkZHMgZGlzYWJsZSBjbGFzc2VzIHRvIHRoZSBzZWxlY3RvciBpZiBuZWVkZWQuXG5AbWl4aW4gX3Jmcy1ydWxlIHtcbiAgQGlmICRyZnMtY2xhc3MgPT0gZGlzYWJsZSBhbmQgJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSB7XG4gICAgLy8gQWRkaW5nIGFuIGV4dHJhIGNsYXNzIGluY3JlYXNlcyBzcGVjaWZpY2l0eSwgd2hpY2ggcHJldmVudHMgdGhlIG1lZGlhIHF1ZXJ5IHRvIG92ZXJyaWRlIHRoZSBwcm9wZXJ0eVxuICAgICYsXG4gICAgLmRpc2FibGUtcmZzICYsXG4gICAgJi5kaXNhYmxlLXJmcyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHJmcy1jbGFzcyA9PSBlbmFibGUgYW5kICRyZnMtbW9kZSA9PSBtaW4tbWVkaWEtcXVlcnkge1xuICAgIC5lbmFibGUtcmZzICYsXG4gICAgJi5lbmFibGUtcmZzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gSW50ZXJuYWwgbWl4aW4gdGhhdCBhZGRzIGVuYWJsZSBjbGFzc2VzIHRvIHRoZSBzZWxlY3RvciBpZiBuZWVkZWQuXG5AbWl4aW4gX3Jmcy1tZWRpYS1xdWVyeS1ydWxlIHtcblxuICBAaWYgJHJmcy1jbGFzcyA9PSBlbmFibGUge1xuICAgIEBpZiAkcmZzLW1vZGUgPT0gbWluLW1lZGlhLXF1ZXJ5IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIF9yZnMtbWVkaWEtcXVlcnkge1xuICAgICAgLmVuYWJsZS1yZnMgJixcbiAgICAgICYuZW5hYmxlLXJmcyB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRyZnMtY2xhc3MgPT0gZGlzYWJsZSBhbmQgJHJmcy1tb2RlID09IG1pbi1tZWRpYS1xdWVyeSB7XG4gICAgICAuZGlzYWJsZS1yZnMgJixcbiAgICAgICYuZGlzYWJsZS1yZnMge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgX3Jmcy1tZWRpYS1xdWVyeSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgZm9ybWF0dGVkIG5vbi1yZXNwb25zaXZlIHZhbHVlXG5AZnVuY3Rpb24gcmZzLXZhbHVlKCR2YWx1ZXMpIHtcbiAgLy8gQ29udmVydCB0byBsaXN0XG4gICR2YWx1ZXM6IGlmKHR5cGUtb2YoJHZhbHVlcykgIT0gbGlzdCwgKCR2YWx1ZXMsKSwgJHZhbHVlcyk7XG5cbiAgJHZhbDogJyc7XG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggdmFsdWUgYW5kIGNhbGN1bGF0ZSB2YWx1ZVxuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XG4gICAgQGlmICR2YWx1ZSA9PSAwIHtcbiAgICAgICR2YWw6ICR2YWwgKyAnIDAnO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBDYWNoZSAkdmFsdWUgdW5pdFxuICAgICAgJHVuaXQ6IGlmKHR5cGUtb2YoJHZhbHVlKSA9PSBcIm51bWJlclwiLCB1bml0KCR2YWx1ZSksIGZhbHNlKTtcblxuICAgICAgQGlmICR1bml0ID09IHB4IHtcbiAgICAgICAgLy8gQ29udmVydCB0byByZW0gaWYgbmVlZGVkXG4gICAgICAgICR2YWw6ICR2YWwgKyAnICcgKyBpZigkcmZzLXVuaXQgPT0gcmVtLCAje2RpdmlkZSgkdmFsdWUsICR2YWx1ZSAqIDAgKyAkcmZzLXJlbS12YWx1ZSl9cmVtLCAkdmFsdWUpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHVuaXQgPT0gcmVtIHtcbiAgICAgICAgLy8gQ29udmVydCB0byBweCBpZiBuZWVkZWRcbiAgICAgICAgJHZhbDogJHZhbCArICcgJyArIGlmKCRyZnMtdW5pdCA9PSBweCwgI3tkaXZpZGUoJHZhbHVlLCAkdmFsdWUgKiAwICsgMSkgKiAkcmZzLXJlbS12YWx1ZX1weCwgJHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgLy8gSWYgJHZhbHVlIGlzbid0IGEgbnVtYmVyIChsaWtlIGluaGVyaXQpIG9yICR2YWx1ZSBoYXMgYSB1bml0IChub3QgcHggb3IgcmVtLCBsaWtlIDEuNWVtKSBvciAkIGlzIDAsIGp1c3QgcHJpbnQgdGhlIHZhbHVlXG4gICAgICAgICR2YWw6ICR2YWwgKyAnICcgKyAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIGZpcnN0IHNwYWNlXG4gIEByZXR1cm4gdW5xdW90ZShzdHItc2xpY2UoJHZhbCwgMikpO1xufVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSByZXNwb25zaXZlIHZhbHVlIGNhbGN1bGF0ZWQgYnkgUkZTXG5AZnVuY3Rpb24gcmZzLWZsdWlkLXZhbHVlKCR2YWx1ZXMpIHtcbiAgLy8gQ29udmVydCB0byBsaXN0XG4gICR2YWx1ZXM6IGlmKHR5cGUtb2YoJHZhbHVlcykgIT0gbGlzdCwgKCR2YWx1ZXMsKSwgJHZhbHVlcyk7XG5cbiAgJHZhbDogJyc7XG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggdmFsdWUgYW5kIGNhbGN1bGF0ZSB2YWx1ZVxuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XG4gICAgQGlmICR2YWx1ZSA9PSAwIHtcbiAgICAgICR2YWw6ICR2YWwgKyAnIDAnO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIC8vIENhY2hlICR2YWx1ZSB1bml0XG4gICAgICAkdW5pdDogaWYodHlwZS1vZigkdmFsdWUpID09IFwibnVtYmVyXCIsIHVuaXQoJHZhbHVlKSwgZmFsc2UpO1xuXG4gICAgICAvLyBJZiAkdmFsdWUgaXNuJ3QgYSBudW1iZXIgKGxpa2UgaW5oZXJpdCkgb3IgJHZhbHVlIGhhcyBhIHVuaXQgKG5vdCBweCBvciByZW0sIGxpa2UgMS41ZW0pIG9yICQgaXMgMCwganVzdCBwcmludCB0aGUgdmFsdWVcbiAgICAgIEBpZiBub3QgJHVuaXQgb3IgJHVuaXQgIT0gcHggYW5kICR1bml0ICE9IHJlbSB7XG4gICAgICAgICR2YWw6ICR2YWwgKyAnICcgKyAkdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgLy8gUmVtb3ZlIHVuaXQgZnJvbSAkdmFsdWUgZm9yIGNhbGN1bGF0aW9uc1xuICAgICAgICAkdmFsdWU6IGRpdmlkZSgkdmFsdWUsICR2YWx1ZSAqIDAgKyBpZigkdW5pdCA9PSBweCwgMSwgZGl2aWRlKDEsICRyZnMtcmVtLXZhbHVlKSkpO1xuXG4gICAgICAgIC8vIE9ubHkgYWRkIHRoZSBtZWRpYSBxdWVyeSBpZiB0aGUgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlXG4gICAgICAgIEBpZiBhYnMoJHZhbHVlKSA8PSAkcmZzLWJhc2UtdmFsdWUgb3Igbm90ICRlbmFibGUtcmZzIHtcbiAgICAgICAgICAkdmFsOiAkdmFsICsgJyAnICsgIGlmKCRyZnMtdW5pdCA9PSByZW0sICN7ZGl2aWRlKCR2YWx1ZSwgJHJmcy1yZW0tdmFsdWUpfXJlbSwgI3skdmFsdWV9cHgpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG1pbmltdW0gdmFsdWVcbiAgICAgICAgICAkdmFsdWUtbWluOiAkcmZzLWJhc2UtdmFsdWUgKyBkaXZpZGUoYWJzKCR2YWx1ZSkgLSAkcmZzLWJhc2UtdmFsdWUsICRyZnMtZmFjdG9yKTtcblxuICAgICAgICAgIC8vIENhbGN1bGF0ZSBkaWZmZXJlbmNlIGJldHdlZW4gJHZhbHVlIGFuZCB0aGUgbWluaW11bSB2YWx1ZVxuICAgICAgICAgICR2YWx1ZS1kaWZmOiBhYnMoJHZhbHVlKSAtICR2YWx1ZS1taW47XG5cbiAgICAgICAgICAvLyBCYXNlIHZhbHVlIGZvcm1hdHRpbmdcbiAgICAgICAgICAkbWluLXdpZHRoOiBpZigkcmZzLXVuaXQgPT0gcmVtLCAje2RpdmlkZSgkdmFsdWUtbWluLCAkcmZzLXJlbS12YWx1ZSl9cmVtLCAjeyR2YWx1ZS1taW59cHgpO1xuXG4gICAgICAgICAgLy8gVXNlIG5lZ2F0aXZlIHZhbHVlIGlmIG5lZWRlZFxuICAgICAgICAgICRtaW4td2lkdGg6IGlmKCR2YWx1ZSA8IDAsIC0kbWluLXdpZHRoLCAkbWluLXdpZHRoKTtcblxuICAgICAgICAgIC8vIFVzZSBgdm1pbmAgaWYgdHdvLWRpbWVuc2lvbmFsIGlzIGVuYWJsZWRcbiAgICAgICAgICAkdmFyaWFibGUtdW5pdDogaWYoJHJmcy10d28tZGltZW5zaW9uYWwsIHZtaW4sIHZ3KTtcblxuICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgdmFyaWFibGUgd2lkdGggYmV0d2VlbiAwIGFuZCAkcmZzLWJyZWFrcG9pbnRcbiAgICAgICAgICAkdmFyaWFibGUtd2lkdGg6ICN7ZGl2aWRlKCR2YWx1ZS1kaWZmICogMTAwLCAkcmZzLWJyZWFrcG9pbnQpfSN7JHZhcmlhYmxlLXVuaXR9O1xuXG4gICAgICAgICAgLy8gUmV0dXJuIHRoZSBjYWxjdWxhdGVkIHZhbHVlXG4gICAgICAgICAgJHZhbDogJHZhbCArICcgY2FsYygnICsgJG1pbi13aWR0aCArIGlmKCR2YWx1ZSA8IDAsICcgLSAnLCAnICsgJykgKyAkdmFyaWFibGUtd2lkdGggKyAnKSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmUgZmlyc3Qgc3BhY2VcbiAgQHJldHVybiB1bnF1b3RlKHN0ci1zbGljZSgkdmFsLCAyKSk7XG59XG5cbi8vIFJGUyBtaXhpblxuQG1peGluIHJmcygkdmFsdWVzLCAkcHJvcGVydHk6IGZvbnQtc2l6ZSkge1xuICBAaWYgJHZhbHVlcyAhPSBudWxsIHtcbiAgICAkdmFsOiByZnMtdmFsdWUoJHZhbHVlcyk7XG4gICAgJGZsdWlkVmFsOiByZnMtZmx1aWQtdmFsdWUoJHZhbHVlcyk7XG5cbiAgICAvLyBEbyBub3QgcHJpbnQgdGhlIG1lZGlhIHF1ZXJ5IGlmIHJlc3BvbnNpdmUgJiBub24tcmVzcG9uc2l2ZSB2YWx1ZXMgYXJlIHRoZSBzYW1lXG4gICAgQGlmICR2YWwgPT0gJGZsdWlkVmFsIHtcbiAgICAgICN7JHByb3BlcnR5fTogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgX3Jmcy1ydWxlIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiBpZigkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5LCAkdmFsLCAkZmx1aWRWYWwpO1xuXG4gICAgICAgIC8vIEluY2x1ZGUgc2FmYXJpIGlmcmFtZSByZXNpemUgZml4IGlmIG5lZWRlZFxuICAgICAgICBtaW4td2lkdGg6IGlmKCRyZnMtc2FmYXJpLWlmcmFtZS1yZXNpemUtYnVnLWZpeCwgKDAgKiAxdncpLCBudWxsKTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgX3Jmcy1tZWRpYS1xdWVyeS1ydWxlIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiBpZigkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5LCAkZmx1aWRWYWwsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTaG9ydGhhbmQgaGVscGVyIG1peGluc1xuQG1peGluIGZvbnQtc2l6ZSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSk7XG59XG5cbkBtaXhpbiBwYWRkaW5nKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nKTtcbn1cblxuQG1peGluIHBhZGRpbmctdG9wKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLXRvcCk7XG59XG5cbkBtaXhpbiBwYWRkaW5nLXJpZ2h0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLXJpZ2h0KTtcbn1cblxuQG1peGluIHBhZGRpbmctYm90dG9tKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLWJvdHRvbSk7XG59XG5cbkBtaXhpbiBwYWRkaW5nLWxlZnQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmctbGVmdCk7XG59XG5cbkBtaXhpbiBtYXJnaW4oJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbik7XG59XG5cbkBtaXhpbiBtYXJnaW4tdG9wKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4tdG9wKTtcbn1cblxuQG1peGluIG1hcmdpbi1yaWdodCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luLXJpZ2h0KTtcbn1cblxuQG1peGluIG1hcmdpbi1ib3R0b20oJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi1ib3R0b20pO1xufVxuXG5AbWl4aW4gbWFyZ2luLWxlZnQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi1sZWZ0KTtcbn1cbiIsIkBmdW5jdGlvbiB6KCRuYW1lKSB7XG4gIEBpZiBpbmRleCgkei1pbmRleGVzLCAkbmFtZSkge1xuXHRAcmV0dXJuICgobGVuZ3RoKCR6LWluZGV4ZXMpICsgOTk5KSAtIGluZGV4KCR6LWluZGV4ZXMsICRuYW1lKSkgKyAxO1xuICB9IEBlbHNlIHtcblx0QHdhcm4gJ1RoZXJlIGlzIG5vIGl0ZW0gXCIjeyRuYW1lfVwiIGluIHRoaXMgbGlzdDsgY2hvb3NlIG9uZSBvZjogI3skei1pbmRleGVzfSc7XG5cdEByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkbnVtYmVyKSB7XG4gIEBpZiB0eXBlLW9mKCRudW1iZXIpID09ICdudW1iZXInIGFuZCBub3QgdW5pdGxlc3MoJG51bWJlcikge1xuXHRAcmV0dXJuICRudW1iZXIgLyAoJG51bWJlciAqIDAgKyAxKTtcbiAgfVxuICBAcmV0dXJuICRudW1iZXI7XG59XG5cbkBmdW5jdGlvbiBlbSgkcGl4ZWwsICRjb250ZXh0OiAkYnJvd3Nlci1jb250ZXh0KSB7XG4gIEByZXR1cm4gKCRwaXhlbCAvICRjb250ZXh0KSAqIDFlbTtcbn1cblxuQGZ1bmN0aW9uIHJlbSgkcGl4ZWwsICRjb250ZXh0OiAkYnJvd3Nlci1jb250ZXh0KSB7XG4gIEByZXR1cm4gKCRwaXhlbCAvICRjb250ZXh0KSAqIDFyZW07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQbGFpbiBTQVNTIFRyaWdvbm9tZXRyeSBBbGdvcml0aG0gaW4gVGF5bG9yIEV4cGFuc2lvbiAvL1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbi8vIEJhc2VkIG9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4vLyAgICAgIGh0dHA6Ly9qYXBib3JzdC5uZXQvcG9zdHMvc2Fzcy1zaW5lcy1hbmQtY29zaW5lcyAvL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuJHBpOiAzLjE0MTU5MjY1MzU5O1xuJF9wcmVjaXNpb246IDEwO1xuXG5AZnVuY3Rpb24gcG93KCRiYXNlLCAkZXhwKSB7XG4gICR2YWx1ZTogJGJhc2U7XG4gIEBpZiAkZXhwID4gMSB7XG5cdEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGV4cCB7XG5cdCAgJHZhbHVlOiAkdmFsdWUgKiAkYmFzZTtcblx0fVxuICB9XG4gIEBpZiAkZXhwIDwgMSB7XG5cdEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggLSRleHAge1xuXHQgICR2YWx1ZTogJHZhbHVlIC8gJGJhc2U7XG5cdH1cbiAgfVxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuQGZ1bmN0aW9uIGZhY3QoJG51bSkge1xuICAkZmFjdDogMTtcbiAgQGlmICRudW0gPiAwIHtcblx0QGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbnVtIHtcblx0ICAkZmFjdDogJGZhY3QgKiAkaTtcblx0fVxuICB9XG4gIEByZXR1cm4gJGZhY3Q7XG59XG5cbkBmdW5jdGlvbiBfdG9fdW5pdGxlc3NfcmFkKCRhbmdsZSkge1xuICBAaWYgdW5pdCgkYW5nbGUpID09IFwiZGVnXCIge1xuXHQkYW5nbGU6ICRhbmdsZSAvIDE4MGRlZyAqICRwaTtcbiAgfVxuICBAaWYgdW5pdCgkYW5nbGUpID09IFwicmFkXCIge1xuXHQkYW5nbGU6ICRhbmdsZSAvIDFyYWQ7XG4gIH1cbiAgQHJldHVybiAkYW5nbGU7XG59XG5cbkBmdW5jdGlvbiBzaW4oJGFuZ2xlKSB7XG4gICRhOiBfdG9fdW5pdGxlc3NfcmFkKCRhbmdsZSk7XG4gICRzaW46ICRhO1xuICBAZm9yICRuIGZyb20gMSB0aHJvdWdoICRfcHJlY2lzaW9uIHtcblx0JHNpbjogJHNpbiArIChwb3coLTEsICRuKSAvIGZhY3QoMiAqICRuICsgMSkgKSAqIHBvdygkYSwgKDIgKiAkbiArIDEpKTtcbiAgfVxuICBAcmV0dXJuICRzaW47XG59XG5cbkBmdW5jdGlvbiBjb3MoJGFuZ2xlKSB7XG4gICRhOiBfdG9fdW5pdGxlc3NfcmFkKCRhbmdsZSk7XG4gICRjb3M6IDE7XG4gIEBmb3IgJG4gZnJvbSAxIHRocm91Z2ggJF9wcmVjaXNpb24ge1xuXHQkY29zOiAkY29zICsgKCBwb3coLTEsJG4pIC8gZmFjdCgyKiRuKSApICogcG93KCRhLDIqJG4pO1xuICB9XG4gIEByZXR1cm4gJGNvcztcbn1cblxuQGZ1bmN0aW9uIHRhbigkYW5nbGUpIHtcbiAgQHJldHVybiBzaW4oJGFuZ2xlKSAvIGNvcygkYW5nbGUpO1xufVxuXG4vLy8vXG4vLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGVhc2lseSB1c2UgYW4gU1ZHIGlubGluZSBpbiBDU1Ncbi8vLyB3aXRob3V0IGVuY29kaW5nIGl0IHRvIGJhc2U2NCwgc2F2aW5nIGJ5dGVzLlxuLy8vIEl0IGFsc28gaGVscHMgd2l0aCBicm93c2VyIHN1cHBvcnQuXG4vLy8vXG5cbi8vLyBBIHNtYWxsIGZ1bmN0aW9uIGFsbG93aW5nIHNraXBwaW5nIGJhc2U2NCBlbmNvZGluZ1xuLy8vIGFuZCBzaW1wbHkgcGFzdGluZyB0aGUgU1ZHIG1hcmt1cCByaWdodCBpbiB0aGUgQ1NTLlxuLy8vIEBhdXRob3IgSmFrb2IgRXJpa3NlblxuLy8vIEBsaW5rIGh0dHA6Ly9jb2RlcGVuLmlvL2pha29iLWUvcGVuL2RvTW9NTFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3ZnIC0gU1ZHIGltYWdlIHRvIGVuY29kZVxuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBFbmNvZGVkIFNWRyBkYXRhIHVyaVxuQGZ1bmN0aW9uIHN2Zy11cmkoJHN2Zykge1xuICAkZW5jb2RlZDogJyc7XG4gICRzbGljZTogMjAwMDtcbiAgJGluZGV4OiAwO1xuICAkbG9vcHM6IGNlaWwoc3RyLWxlbmd0aCgkc3ZnKSAvICRzbGljZSk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbG9vcHMge1xuXHQkY2h1bms6IHN0ci1zbGljZSgkc3ZnLCAkaW5kZXgsICRpbmRleCArICRzbGljZSAtIDEpO1xuXHQkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJ1wiJywgXCInXCIpO1xuXHQkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJzwnLCAnJTNDJyk7XG5cdCRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnPicsICclM0UnKTtcblx0JGNodW5rOiBzdHItcmVwbGFjZSgkY2h1bmssICcmJywgJyUyNicpO1xuXHQkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJyMnLCAnJTIzJyk7XG5cdCRlbmNvZGVkOiAjeyRlbmNvZGVkfSN7JGNodW5rfTtcblx0JGluZGV4OiAkaW5kZXggKyAkc2xpY2U7XG4gIH1cblxuICBAcmV0dXJuIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsI3skZW5jb2RlZH1cIik7XG59XG5cbi8vLyBSZXBsYWNlIGAkc2VhcmNoYCB3aXRoIGAkcmVwbGFjZWAgaW4gYCRzdHJpbmdgXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy8gQGxpbmsgaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0LzFiNGYyZGE1NTI3ODMwMDg4ZTRkXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHJpbmcgLSBJbml0aWFsIHN0cmluZ1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VhcmNoIC0gU3Vic3RyaW5nIHRvIHJlcGxhY2Vcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHJlcGxhY2UgKCcnKSAtIE5ldyB2YWx1ZVxuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBVcGRhdGVkIHN0cmluZ1xuQGZ1bmN0aW9uIHN0ci1yZXBsYWNlKCRzdHJpbmcsICRzZWFyY2gsICRyZXBsYWNlOiAnJykge1xuICAkaW5kZXg6IHN0ci1pbmRleCgkc3RyaW5nLCAkc2VhcmNoKTtcblxuICBAaWYgJGluZGV4IHtcblx0QHJldHVybiBzdHItc2xpY2UoJHN0cmluZywgMSwgJGluZGV4IC0gMSkgKyAkcmVwbGFjZSArIHN0ci1yZXBsYWNlKHN0ci1zbGljZSgkc3RyaW5nLCAkaW5kZXggKyBzdHItbGVuZ3RoKCRzZWFyY2gpKSwgJHNlYXJjaCwgJHJlcGxhY2UpO1xuICB9XG5cbiAgQHJldHVybiAkc3RyaW5nO1xufVxuXG4iLCIkbGluZWFyOiBjdWJpYy1iZXppZXIoMC4yNTAsIDAuMjUwLCAwLjc1MCwgMC43NTApO1xuJGVhc2U6IGN1YmljLWJlemllcigwLjI1MCwgMC4xMDAsIDAuMjUwLCAxLjAwMCk7XG4kZWFzZUluOiBjdWJpYy1iZXppZXIoMC43NTAsIDAuMDAwLCAwLjI1MCwgMS4wMDApO1xuJGVhc2VPdXQ6IGN1YmljLWJlemllcigwLjAwMCwgMC4wMDAsIDAuNTgwLCAxLjAwMCk7XG4kZWFzZUluT3V0OiBjdWJpYy1iZXppZXIoMC40MjAsIDAuMDAwLCAwLjU4MCwgMS4wMDApO1xuXG4kZWFzZUluUXVhZDogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA4NSwgMC42ODAsIDAuNTMwKTtcbiRlYXNlSW5DdWJpYzogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTtcbiRlYXNlSW5RdWFydDogY3ViaWMtYmV6aWVyKDAuODk1LCAwLjAzMCwgMC42ODUsIDAuMjIwKTtcbiRlYXNlSW5RdWludDogY3ViaWMtYmV6aWVyKDAuNzU1LCAwLjA1MCwgMC44NTUsIDAuMDYwKTtcbiRlYXNlSW5TaW5lOiBjdWJpYy1iZXppZXIoMC40NzAsIDAuMDAwLCAwLjc0NSwgMC43MTUpO1xuJGVhc2VJbkV4cG86IGN1YmljLWJlemllcigwLjk1MCwgMC4wNTAsIDAuNzk1LCAwLjAzNSk7XG4kZWFzZUluQ2lyYzogY3ViaWMtYmV6aWVyKDAuNjAwLCAwLjA0MCwgMC45ODAsIDAuMzM1KTtcbiRlYXNlSW5CYWNrOiBjdWJpYy1iZXppZXIoMC42MDAsIC0wLjI4MCwgMC43MzUsIDAuMDQ1KTtcblxuJGVhc2VPdXRRdWFkOiBjdWJpYy1iZXppZXIoMC4yNTAsIDAuNDYwLCAwLjQ1MCwgMC45NDApO1xuJGVhc2VPdXRDdWJpYzogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxMCwgMC4zNTUsIDEuMDAwKTtcbiRlYXNlT3V0UXVhcnQ6IGN1YmljLWJlemllcigwLjE2NSwgMC44NDAsIDAuNDQwLCAxLjAwMCk7XG4kZWFzZU91dFF1aW50OiBjdWJpYy1iZXppZXIoMC4yMzAsIDEuMDAwLCAwLjMyMCwgMS4wMDApO1xuJGVhc2VPdXRTaW5lOiBjdWJpYy1iZXppZXIoMC4zOTAsIDAuNTc1LCAwLjU2NSwgMS4wMDApO1xuJGVhc2VPdXRFeHBvOiBjdWJpYy1iZXppZXIoMC4xOTAsIDEuMDAwLCAwLjIyMCwgMS4wMDApO1xuJGVhc2VPdXRDaXJjOiBjdWJpYy1iZXppZXIoMC4wNzUsIDAuODIwLCAwLjE2NSwgMS4wMDApO1xuJGVhc2VPdXRCYWNrOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMS4yNzUpO1xuXG4kZWFzZUluT3V0UXVhZDogY3ViaWMtYmV6aWVyKDAuNDU1LCAwLjAzMCwgMC41MTUsIDAuOTU1KTtcbiRlYXNlSW5PdXRDdWJpYzogY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEuMDAwKTtcbiRlYXNlSW5PdXRRdWFydDogY3ViaWMtYmV6aWVyKDAuNzcwLCAwLjAwMCwgMC4xNzUsIDEuMDAwKTtcbiRlYXNlSW5PdXRRdWludDogY3ViaWMtYmV6aWVyKDAuODYwLCAwLjAwMCwgMC4wNzAsIDEuMDAwKTtcbiRlYXNlSW5PdXRTaW5lOiBjdWJpYy1iZXppZXIoMC40NDUsIDAuMDUwLCAwLjU1MCwgMC45NTApO1xuJGVhc2VJbk91dEV4cG86IGN1YmljLWJlemllcigxLjAwMCwgMC4wMDAsIDAuMDAwLCAxLjAwMCk7XG4kZWFzZUluT3V0Q2lyYzogY3ViaWMtYmV6aWVyKDAuNzg1LCAwLjEzNSwgMC4xNTAsIDAuODYwKTtcbiRlYXNlSW5PdXRCYWNrOiBjdWJpYy1iZXppZXIoMC42ODAsIC0wLjU1MCwgMC4yNjUsIDEuNTUwKTsiLCJAbWl4aW4gZm9udC1mYWNlKCRmb250LW5hbWUsICRmaWxlLW5hbWUsICR3ZWlnaHQ6IG5vcm1hbCwgJHN0eWxlOiBub3JtYWwpIHtcbiAgQGZvbnQtZmFjZSB7XG5cdGZvbnQtZmFtaWx5OiBxdW90ZSgkZm9udC1uYW1lKTtcblx0c3JjOiB1cmwoJGZpbGUtbmFtZSArICcub3RmJykgZm9ybWF0KCdvcGVudHlwZScpO1xuXHRzcmM6IHVybCgkZmlsZS1uYW1lICsgJy5lb3QnKTtcblx0c3JjOiB1cmwoJGZpbGUtbmFtZSArICcuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcblx0dXJsKCRmaWxlLW5hbWUgKyAnLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcblx0dXJsKCRmaWxlLW5hbWUgKyAnLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcblx0dXJsKCRmaWxlLW5hbWUgKyAnLnN2ZyMjeyRmb250LW5hbWV9JykgZm9ybWF0KCdzdmcnKTtcblx0Zm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG5cdGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgfVxufVxuXG5AbWl4aW4gZGVmYXVsdC1saW5rKCkge1xuICBmb250LXdlaWdodDogNzAwO1xuICB0cmFuc2l0aW9uOiBjb2xvciAuM3MgZWFzZSwgYm9yZGVyLWJvdHRvbS1jb2xvciAuM3MgZWFzZTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM2MzYzNjM7XG5cbiAgJjpob3ZlciB7XG5cdGNvbG9yOiB2YXIoLS10ZW1wbGF0ZS1wcmltYXJ5LWNvbG9yKTtcblx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tdGVtcGxhdGUtcHJpbWFyeS1jb2xvcik7XG4gIH1cbn1cblxuQG1peGluIGN1cnNvcigpIHtcbiAgYm9keS50bXBsX2VocGFkICYge1xuXHRjdXJzb3I6IHN2Zy11cmkoJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgMzkgMzlcIiBmaWxsPVwibm9uZVwiPiA8Y2lyY2xlIHI9XCIxOS41XCIgdHJhbnNmb3JtPVwibWF0cml4KC0xIDAgMCAxIDE5LjUgMTkuNSlcIiBmaWxsPVwidXJsKCM1ZTVlYjQyZi1hODIwLTRiMTEtODk1Yy03ZmU3OWIxY2VjNjgpXCI+PC9jaXJjbGU+IDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xOC4xODM2IDEyLjk5OTlDMTguMTgzNiAxMi40NDc2IDE4LjYzMTMgMTEuOTk5OSAxOS4xODM2IDExLjk5OTlDMTkuNzM1OSAxMS45OTk5IDIwLjE4MzYgMTIuNDQ3NiAyMC4xODM2IDEyLjk5OTlWMTguODE4TDI2IDE4LjgxOEMyNi41NTIzIDE4LjgxOCAyNyAxOS4yNjU3IDI3IDE5LjgxOEMyNyAyMC4zNzAzIDI2LjU1MjMgMjAuODE4IDI2IDIwLjgxOEgyMC4xODM2VjI1Ljk5OTlDMjAuMTgzNiAyNi41NTIyIDE5LjczNTkgMjYuOTk5OSAxOS4xODM2IDI2Ljk5OTlDMTguNjMxMyAyNi45OTk5IDE4LjE4MzYgMjYuNTUyMiAxOC4xODM2IDI1Ljk5OTlWMjAuODE4SDEzQzEyLjQ0NzcgMjAuODE4IDEyIDIwLjM3MDMgMTIgMTkuODE4QzEyIDE5LjI2NTcgMTIuNDQ3NyAxOC44MTggMTMgMTguODE4TDE4LjE4MzYgMTguODE4VjEyLjk5OTlaXCIgZmlsbD1cIndoaXRlXCI+PC9wYXRoPiA8ZGVmcz4gPGxpbmVhckdyYWRpZW50IGlkPVwiNWU1ZWI0MmYtYTgyMC00YjExLTg5NWMtN2ZlNzliMWNlYzY4XCIgeDE9XCIxLjgzMzMzXCIgeTE9XCI0LjY4XCIgeDI9XCI0MC4zNzg0XCIgeTI9XCI2LjMwNTA3XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+IDxzdG9wIHN0b3AtY29sb3I9XCIjQUNDMzZEXCI+PC9zdG9wPiA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM2QzlBMkVcIj48L3N0b3A+IDwvbGluZWFyR3JhZGllbnQ+IDwvZGVmcz4gPC9zdmc+JykgMjAgMjAsIGF1dG87XG4gIH1cblxuICBib2R5LnRtcGxfc3BvcnQgJiB7XG5cdGN1cnNvcjogc3ZnLXVyaSgnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCAzOSAzOVwiIGZpbGw9XCJub25lXCI+IDxjaXJjbGUgcj1cIjE5LjVcIiB0cmFuc2Zvcm09XCJtYXRyaXgoLTEgMCAwIDEgMTkuNSAxOS41KVwiIGZpbGw9XCJ1cmwoIzVlNWViNDJmLWE4MjAtNGIxMS04OTVjLTdmZTc5YjFjZWM2OClcIj48L2NpcmNsZT4gPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE4LjE4MzYgMTIuOTk5OUMxOC4xODM2IDEyLjQ0NzYgMTguNjMxMyAxMS45OTk5IDE5LjE4MzYgMTEuOTk5OUMxOS43MzU5IDExLjk5OTkgMjAuMTgzNiAxMi40NDc2IDIwLjE4MzYgMTIuOTk5OVYxOC44MThMMjYgMTguODE4QzI2LjU1MjMgMTguODE4IDI3IDE5LjI2NTcgMjcgMTkuODE4QzI3IDIwLjM3MDMgMjYuNTUyMyAyMC44MTggMjYgMjAuODE4SDIwLjE4MzZWMjUuOTk5OUMyMC4xODM2IDI2LjU1MjIgMTkuNzM1OSAyNi45OTk5IDE5LjE4MzYgMjYuOTk5OUMxOC42MzEzIDI2Ljk5OTkgMTguMTgzNiAyNi41NTIyIDE4LjE4MzYgMjUuOTk5OVYyMC44MThIMTNDMTIuNDQ3NyAyMC44MTggMTIgMjAuMzcwMyAxMiAxOS44MThDMTIgMTkuMjY1NyAxMi40NDc3IDE4LjgxOCAxMyAxOC44MThMMTguMTgzNiAxOC44MThWMTIuOTk5OVpcIiBmaWxsPVwid2hpdGVcIj48L3BhdGg+IDxkZWZzPiA8bGluZWFyR3JhZGllbnQgaWQ9XCI1ZTVlYjQyZi1hODIwLTRiMTEtODk1Yy03ZmU3OWIxY2VjNjhcIiB4MT1cIjEuODMzMzNcIiB5MT1cIjQuNjhcIiB4Mj1cIjQwLjM3ODRcIiB5Mj1cIjYuMzA1MDdcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj4gPHN0b3Agc3RvcC1jb2xvcj1cIiMzNUIzQTdcIj48L3N0b3A+IDxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzE3OEM4MVwiPjwvc3RvcD4gPC9saW5lYXJHcmFkaWVudD4gPC9kZWZzPiA8L3N2Zz4nKSAyMCAyMCwgYXV0bztcbiAgfVxuXG4gIGJvZHkudG1wbF9yZXNpZGVuY2VzICYge1xuXHRjdXJzb3I6IHN2Zy11cmkoJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgMzkgMzlcIiBmaWxsPVwibm9uZVwiPiA8Y2lyY2xlIHI9XCIxOS41XCIgdHJhbnNmb3JtPVwibWF0cml4KC0xIDAgMCAxIDE5LjUgMTkuNSlcIiBmaWxsPVwidXJsKCM1ZTVlYjQyZi1hODIwLTRiMTEtODk1Yy03ZmU3OWIxY2VjNjgpXCI+PC9jaXJjbGU+IDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xOC4xODM2IDEyLjk5OTlDMTguMTgzNiAxMi40NDc2IDE4LjYzMTMgMTEuOTk5OSAxOS4xODM2IDExLjk5OTlDMTkuNzM1OSAxMS45OTk5IDIwLjE4MzYgMTIuNDQ3NiAyMC4xODM2IDEyLjk5OTlWMTguODE4TDI2IDE4LjgxOEMyNi41NTIzIDE4LjgxOCAyNyAxOS4yNjU3IDI3IDE5LjgxOEMyNyAyMC4zNzAzIDI2LjU1MjMgMjAuODE4IDI2IDIwLjgxOEgyMC4xODM2VjI1Ljk5OTlDMjAuMTgzNiAyNi41NTIyIDE5LjczNTkgMjYuOTk5OSAxOS4xODM2IDI2Ljk5OTlDMTguNjMxMyAyNi45OTk5IDE4LjE4MzYgMjYuNTUyMiAxOC4xODM2IDI1Ljk5OTlWMjAuODE4SDEzQzEyLjQ0NzcgMjAuODE4IDEyIDIwLjM3MDMgMTIgMTkuODE4QzEyIDE5LjI2NTcgMTIuNDQ3NyAxOC44MTggMTMgMTguODE4TDE4LjE4MzYgMTguODE4VjEyLjk5OTlaXCIgZmlsbD1cIndoaXRlXCI+PC9wYXRoPiA8ZGVmcz4gPGxpbmVhckdyYWRpZW50IGlkPVwiNWU1ZWI0MmYtYTgyMC00YjExLTg5NWMtN2ZlNzliMWNlYzY4XCIgeDE9XCIxLjgzMzMzXCIgeTE9XCI0LjY4XCIgeDI9XCI0MC4zNzg0XCIgeTI9XCI2LjMwNTA3XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+IDxzdG9wIHN0b3AtY29sb3I9XCIjQTFBRjkwXCI+PC9zdG9wPiA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM3QzhBNkJcIj48L3N0b3A+IDwvbGluZWFyR3JhZGllbnQ+IDwvZGVmcz4gPC9zdmc+JykgMjAgMjAsIGF1dG87XG4gIH1cblxuICBib2R5LnRtcGxfc3NyICYge1xuXHRjdXJzb3I6IHN2Zy11cmkoJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgMzkgMzlcIiBmaWxsPVwibm9uZVwiPiA8Y2lyY2xlIHI9XCIxOS41XCIgdHJhbnNmb3JtPVwibWF0cml4KC0xIDAgMCAxIDE5LjUgMTkuNSlcIiBmaWxsPVwidXJsKCM1ZTVlYjQyZi1hODIwLTRiMTEtODk1Yy03ZmU3OWIxY2VjNjgpXCI+PC9jaXJjbGU+IDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xOC4xODM2IDEyLjk5OTlDMTguMTgzNiAxMi40NDc2IDE4LjYzMTMgMTEuOTk5OSAxOS4xODM2IDExLjk5OTlDMTkuNzM1OSAxMS45OTk5IDIwLjE4MzYgMTIuNDQ3NiAyMC4xODM2IDEyLjk5OTlWMTguODE4TDI2IDE4LjgxOEMyNi41NTIzIDE4LjgxOCAyNyAxOS4yNjU3IDI3IDE5LjgxOEMyNyAyMC4zNzAzIDI2LjU1MjMgMjAuODE4IDI2IDIwLjgxOEgyMC4xODM2VjI1Ljk5OTlDMjAuMTgzNiAyNi41NTIyIDE5LjczNTkgMjYuOTk5OSAxOS4xODM2IDI2Ljk5OTlDMTguNjMxMyAyNi45OTk5IDE4LjE4MzYgMjYuNTUyMiAxOC4xODM2IDI1Ljk5OTlWMjAuODE4SDEzQzEyLjQ0NzcgMjAuODE4IDEyIDIwLjM3MDMgMTIgMTkuODE4QzEyIDE5LjI2NTcgMTIuNDQ3NyAxOC44MTggMTMgMTguODE4TDE4LjE4MzYgMTguODE4VjEyLjk5OTlaXCIgZmlsbD1cIndoaXRlXCI+PC9wYXRoPiA8ZGVmcz4gPGxpbmVhckdyYWRpZW50IGlkPVwiNWU1ZWI0MmYtYTgyMC00YjExLTg5NWMtN2ZlNzliMWNlYzY4XCIgeDE9XCIxLjgzMzMzXCIgeTE9XCI0LjY4XCIgeDI9XCI0MC4zNzg0XCIgeTI9XCI2LjMwNTA3XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+IDxzdG9wIHN0b3AtY29sb3I9XCIjNzZCNUJBXCI+PC9zdG9wPiA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM0RTk1OUJcIj48L3N0b3A+IDwvbGluZWFyR3JhZGllbnQ+IDwvZGVmcz4gPC9zdmc+JykgMjAgMjAsIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGFkbWluLXN0aWNreS1maXgoICRvZmZzZXQ6IDAgKSB7XG4gICRuYXJyb3ctb2Zmc2V0OiA0NnB4O1xuICAkd2lkZS1vZmZzZXQ6IDMycHg7XG4gIEBpZiAkb2Zmc2V0ICE9IDAgYW5kIHR5cGUtb2YoJG9mZnNldCkgPT0gJ251bWJlcicge1xuXHQkbmFycm93LW9mZnNldDogJG5hcnJvdy1vZmZzZXQgKyAkb2Zmc2V0O1xuXHQkd2lkZS1vZmZzZXQ6ICR3aWRlLW9mZnNldCArICRvZmZzZXQ7XG4gIH1cbiAgLmFkbWluLWJhciAmIHtcblx0dG9wOiAkbmFycm93LW9mZnNldDtcblx0QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzgzcHgpIHtcblx0ICB0b3A6ICR3aWRlLW9mZnNldDtcblx0fVxuICB9XG59XG5cbkBtaXhpbiBsaW5lLWhlaWdodCgkcHMtZm9udC1zaXplLCAkcHMtbGluZS1oZWlnaHQ6IDApIHtcbiAgQGlmICRwcy1saW5lLWhlaWdodCA9PSAwIHtcblx0bGluZS1oZWlnaHQ6IDEuMjtcbiAgfSBAZWxzZSB7XG5cdGxpbmUtaGVpZ2h0OiAoJHBzLWxpbmUtaGVpZ2h0IC8gJHBzLWZvbnQtc2l6ZSk7XG4gIH1cbn1cblxuQG1peGluIGxldHRlci1zcGFjaW5nKCRwcy1sZXR0ZXItc3BhY2luZykge1xuICBsZXR0ZXItc3BhY2luZzogKCRwcy1sZXR0ZXItc3BhY2luZyAvIDEwMDApICsgZW07XG59XG5cbkBtaXhpbiBzY2FsZS1oZWFkaW5nKCRiYXNlLWZvbnQtc2l6ZSwgJGhlYWRpbmctc2NhbGUpIHtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA2IHtcblx0aCN7JGl9IHtcblx0ICBmb250LXNpemU6IHJlbSgkYmFzZS1mb250LXNpemUgKyAkaGVhZGluZy1zY2FsZSAqICg2IC0gJGkpKTtcblx0fVxuICB9XG59XG5cbkBtaXhpbiBjc3MtdHJpYW5nbGUoJGNvbG9yLCAkZGlyZWN0aW9uLCAkc2l6ZTogNnB4LCAkcG9zaXRpb246IGFic29sdXRlLCAkcm91bmQ6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIHBzZXVkbygkcG9zOiAkcG9zaXRpb24pO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBAaWYgJHJvdW5kIHtcblx0Ym9yZGVyLXJhZGl1czogM3B4O1xuICB9XG4gIEBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuXHRib3JkZXItbGVmdDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci1yaWdodDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci10b3A6ICRzaXplIHNvbGlkICRjb2xvcjtcblx0bWFyZ2luLXRvcDogMCAtIHJvdW5kKCAkc2l6ZSAvIDIuNSApO1xuICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdXAge1xuXHRib3JkZXItbGVmdDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci1yaWdodDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci1ib3R0b206ICRzaXplIHNvbGlkICRjb2xvcjtcblx0bWFyZ2luLWJvdHRvbTogMCAtIHJvdW5kKCAkc2l6ZSAvIDIuNSApO1xuICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuXHRib3JkZXItdG9wOiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcblx0Ym9yZGVyLWJvdHRvbTogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci1sZWZ0OiAkc2l6ZSBzb2xpZCAkY29sb3I7XG5cdG1hcmdpbi1yaWdodDogLSRzaXplO1xuICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG5cdGJvcmRlci10b3A6ICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuXHRib3JkZXItYm90dG9tOiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcblx0Ym9yZGVyLXJpZ2h0OiAkc2l6ZSBzb2xpZCAkY29sb3I7XG5cdG1hcmdpbi1sZWZ0OiAtJHNpemU7XG4gIH1cbn1cblxuQG1peGluIGhlYWRpbmdzIHtcbiAgaDEsIGgyLCBoMyxcbiAgaDQsIGg1LCBoNiB7XG5cdEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBtcSgkd2lkdGgsICR0eXBlOiBtYXgpIHtcbiAgQGlmIG1hcF9oYXNfa2V5KCRicmVha3BvaW50cywgJHdpZHRoKSB7XG5cdCR3aWR0aDogbWFwX2dldCgkYnJlYWtwb2ludHMsICR3aWR0aCk7XG4gIH0gQGVsc2Uge1xuXHQkd2lkdGg6ICR3aWR0aCAqIDFweDtcbiAgfVxuICBAaWYgJHR5cGUgPT0gbWF4IHtcblx0JHdpZHRoOiAkd2lkdGggLSAxcHg7XG4gIH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoI3skdHlwZX0td2lkdGg6ICR3aWR0aCkge1xuXHRAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gcGhvdG9zaG9wLWxldHRlcigkZm9udC1zaXplLCAkbGV0dGVyLXNwYWNpbmctcHNkLCAkbGluZS1oZWlnaHQtcHNkOiAwLCAkaW1wb3J0YW50OiAwKSB7XG4gIEBpZiAkaW1wb3J0YW50ID09IDEge1xuXHRmb250LXNpemU6ICRmb250LXNpemUgKiAxcHggIWltcG9ydGFudDtcblx0bGV0dGVyLXNwYWNpbmc6ICgoJGxldHRlci1zcGFjaW5nLXBzZCAqICRmb250LXNpemUpIC8gMTAwMCkgKiAxcHggIWltcG9ydGFudDtcblx0QGlmICRsaW5lLWhlaWdodC1wc2QgPT0gMCB7XG5cdCAgbGluZS1oZWlnaHQ6ICgoMTIwICogJGZvbnQtc2l6ZSkgLyAxMDApICogMXB4ICFpbXBvcnRhbnQ7XG5cdH0gQGVsc2Uge1xuXHQgIGxpbmUtaGVpZ2h0OiAkZm9udC1zaXplICsgKCRsaW5lLWhlaWdodC1wc2QgLyAyKSAqIDFweCAhaW1wb3J0YW50O1xuXHR9XG4gIH0gQGVsc2Uge1xuXHRmb250LXNpemU6ICRmb250LXNpemUgKiAxcHg7XG5cdGxldHRlci1zcGFjaW5nOiAoKCRsZXR0ZXItc3BhY2luZy1wc2QgKiAkZm9udC1zaXplKSAvIDEwMDApICogMXB4O1xuXHRAaWYgJGxpbmUtaGVpZ2h0LXBzZCA9PSAwIHtcblx0ICBsaW5lLWhlaWdodDogKCgxMjAgKiAkZm9udC1zaXplKSAvIDEwMCkgKiAxcHg7XG5cdH0gQGVsc2Uge1xuXHQgIGxpbmUtaGVpZ2h0OiAkZm9udC1zaXplICsgKCRsaW5lLWhlaWdodC1wc2QgLyAyKSAqIDFweDtcblx0fVxuICB9XG59XG5cbi8qKlxuICBDT05WRVJUIFBIT1RPU0hPUCBCT1ggU0hBRE9XIFRPIENTU1xuICovXG5AbWl4aW4gcGhvdG9zaG9wLWJveC1zaGFkb3coJG9wYWNpdHksICRhbmdsZSwgJGRpc3RhbmNlLCAkc3ByZWFkLCAkc2l6ZSwgJHJlZDogMCwgJGdyZWVuOiAwLCAkYmx1ZTogMCwgJG1vcmVfYm94X3NoYWRvdzogMCkge1xuICAkY3NzT3BhY2l0eTogJG9wYWNpdHkgLyAxMDA7IC8vIGNvbnZlcnQgb3BhY2l0eSB0byBudW1iZXJcbiAgJGFuZzogKDE4MCAtICRhbmdsZSkgKiAzLjE0IC8gMTgwOyAvLyBjb252ZXJ0IHRvIHJhZGlhbnNcblxuICAkb2Zmc2V0WTogcm91bmQoc2luKCRhbmcpICogJGRpc3RhbmNlKTsgLy8gVmVydGljYWwgc2hhZG93XG4gICRvZmZzZXRYOiByb3VuZChjb3MoJGFuZykgKiAkZGlzdGFuY2UpOyAvLyBIb3Jpem9udGFsIHNoYWRvd1xuXG4gICRzcHJlYWRSYWQ6ICRzaXplICogJHNwcmVhZC8xMDA7IC8vIFNwcmVhZCByYWRpdXNcbiAgJGJsdXJSYWQ6ICRzaXplIC0gJHNwcmVhZFJhZDsgLy8gQmx1ciByYWRpdXNcblxuICBAaWYgJG1vcmVfYm94X3NoYWRvdyA9PSAwIHtcblx0Ym94LXNoYWRvdzogI3skb2Zmc2V0WH1weCAjeyRvZmZzZXRZfXB4ICN7JGJsdXJSYWR9cHggI3skc3ByZWFkUmFkfXB4IHJnYmEoJHJlZCwgJGdyZWVuLCAkYmx1ZSwgJGNzc09wYWNpdHkpO1xuICB9IEBlbHNlIHtcblx0Ym94LXNoYWRvdzogI3skb2Zmc2V0WH1weCAjeyRvZmZzZXRZfXB4ICN7JGJsdXJSYWR9cHggI3skc3ByZWFkUmFkfXB4IHJnYmEoJHJlZCwgJGdyZWVuLCAkYmx1ZSwgJGNzc09wYWNpdHkpLCAkbW9yZV9ib3hfc2hhZG93O1xuICB9XG59XG5cbi8vIEBsaW5rIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvc2Fzcy9kZWVwLWdldHNldC1tYXBzL1xuQGZ1bmN0aW9uIG1hcC1kZWVwLWdldCgkbWFwLCAka2V5cy4uLikge1xuICBAZWFjaCAka2V5IGluICRrZXlzIHtcblx0JG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgfVxuICBAcmV0dXJuICRtYXA7XG59XG5cbkBmdW5jdGlvbiBoZXhUb1JHQigkaGV4KSB7XG4gIEByZXR1cm4gcmVkKCRoZXgpLCBncmVlbigkaGV4KSwgYmx1ZSgkaGV4KTtcbn1cblxuQG1peGluIGdlbmVyYXRlQ29sb3JzKCRjb2xvcnMpIHtcbiAgLy8gQ29sb3JzLCBSR0IgQ29sb3JzXG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICRjb2xvcnMge1xuXHRAaWYgc3RyLXNsaWNlKCN7JHZhbHVlfSwgMSwgMSkgPT0gXCIjXCIge1xuXHQgIC0tI3skY29sb3J9OiAjeyR2YWx1ZX07XG5cdCAgLS1SR0JfI3skY29sb3J9OiAje2hleFRvUkdCKCR2YWx1ZSl9O1xuXHR9IEBlbHNlIHtcblx0ICAtLSN7JGNvbG9yfTogdmFyKC0tI3skdmFsdWV9KTtcblx0ICAtLVJHQl8jeyRjb2xvcn06IHZhcigtLVJHQl8jeyR2YWx1ZX0pO1xuXHR9XG4gIH1cbn1cblxuQG1peGluIGxpbmVhckdyYWRpZW50Q29sb3JzKCkge1xuICBib2R5LnRtcGxfZWhwYWQgJiB7XG5cdGJhY2tncm91bmQ6ICNBQ0MzNkQ7XG4gIH1cblxuICBib2R5LnRtcGxfcmVzaWRlbmNlcyAmIHtcblx0YmFja2dyb3VuZDogI0ExQUY5MDtcbiAgfVxuXG4gIGJvZHkudG1wbF9zc3IgJiB7XG5cdGJhY2tncm91bmQ6ICM3NkI1QkE7XG4gIH1cblxuICBib2R5LnRtcGxfc3BvcnQgJiB7XG5cdGJhY2tncm91bmQ6ICMzNUIzQTc7XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKiBNaXhpbiBwb3VyIGfDqW7DqXJlciBsZXMgY2xhc3MgcG91ciBsZXMgYXV0cmVzIGVudGl0w6lzICoqKioqKioqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AbWl4aW4gY2xhc3Mtb2YtYm9keSgkYXR0cmlidXRlLCAkYXR0cmlidXRlMjogbnVsbCkge1xuICBib2R5LnRtcGxfZWhwYWQgJiB7XG5cdCN7JGF0dHJpYnV0ZX06ICRjb2xvci1laHBhZDtcblx0QGlmICRhdHRyaWJ1dGUyICE9IG51bGwge1xuXHQgICN7JGF0dHJpYnV0ZTJ9OiAkY29sb3ItZWhwYWQ7XG5cdH1cbiAgfVxuICBib2R5LnRtcGxfcmVzaWRlbmNlcyAmIHtcblx0I3skYXR0cmlidXRlfTogJGNvbG9yLXJlcztcblx0QGlmICRhdHRyaWJ1dGUyICE9IG51bGwge1xuXHQgICN7JGF0dHJpYnV0ZTJ9OiAkY29sb3ItcmVzO1xuXHR9XG4gIH1cbiAgYm9keS50bXBsX3NzciAmIHtcblx0I3skYXR0cmlidXRlfTogJGNvbG9yLXNzcjtcblx0QGlmICRhdHRyaWJ1dGUyICE9IG51bGwge1xuXHQgICN7JGF0dHJpYnV0ZTJ9OiAkY29sb3Itc3NyO1xuXHR9XG4gIH1cbiAgYm9keS50bXBsX3Nwb3J0ICYge1xuXHQjeyRhdHRyaWJ1dGV9OiAkY29sb3Itc3BvcnQ7XG5cdEBpZiAkYXR0cmlidXRlMiAhPSBudWxsIHtcblx0ICAjeyRhdHRyaWJ1dGUyfTogJGNvbG9yLXNwb3J0O1xuXHR9XG4gIH1cbn1cblxuQG1peGluIGNsYXNzLW9mLXBhcmVudCgkYXR0cmlidXRlLCAkYXR0cmlidXRlMjogbnVsbCkge1xuICBib2R5IC50bXBsX2VocGFkICYge1xuXHQjeyRhdHRyaWJ1dGV9OiAkY29sb3ItZWhwYWQ7XG5cdEBpZiAkYXR0cmlidXRlMiAhPSBudWxsIHtcblx0ICAjeyRhdHRyaWJ1dGUyfTogJGNvbG9yLWVocGFkO1xuXHR9XG4gIH1cbiAgYm9keSAudG1wbF9yZXNpZGVuY2VzICYge1xuXHQjeyRhdHRyaWJ1dGV9OiAkY29sb3ItcmVzO1xuXHRAaWYgJGF0dHJpYnV0ZTIgIT0gbnVsbCB7XG5cdCAgI3skYXR0cmlidXRlMn06ICRjb2xvci1yZXM7XG5cdH1cbiAgfVxuICBib2R5IC50bXBsX3NzciAmIHtcblx0I3skYXR0cmlidXRlfTogJGNvbG9yLXNzcjtcblx0QGlmICRhdHRyaWJ1dGUyICE9IG51bGwge1xuXHQgICN7JGF0dHJpYnV0ZTJ9OiAkY29sb3Itc3NyO1xuXHR9XG4gIH1cbiAgYm9keSAudG1wbF9zcG9ydCAmIHtcblx0I3skYXR0cmlidXRlfTogJGNvbG9yLXNwb3J0O1xuXHRAaWYgJGF0dHJpYnV0ZTIgIT0gbnVsbCB7XG5cdCAgI3skYXR0cmlidXRlMn06ICRjb2xvci1zcG9ydDtcblx0fVxuICB9XG59XG5cbkBtaXhpbiBjbGFzcy1vZi1wYXJlbnQtZWxlbWVudCgkYXR0cmlidXRlLCAkYXR0cmlidXRlMjogbnVsbCkge1xuICAmLnRtcGxfZWhwYWQge1xuXHQjeyRhdHRyaWJ1dGV9OiAkY29sb3ItZWhwYWQ7XG5cdEBpZiAkYXR0cmlidXRlMiAhPSBudWxsIHtcblx0ICAjeyRhdHRyaWJ1dGUyfTogJGNvbG9yLWVocGFkO1xuXHR9XG4gIH1cbiAgJi50bXBsX3Jlc2lkZW5jZXMge1xuXHQjeyRhdHRyaWJ1dGV9OiAkY29sb3ItcmVzO1xuXHRAaWYgJGF0dHJpYnV0ZTIgIT0gbnVsbCB7XG5cdCAgI3skYXR0cmlidXRlMn06ICRjb2xvci1yZXM7XG5cdH1cbiAgfVxuICAmLnRtcGxfc3NyIHtcblx0I3skYXR0cmlidXRlfTogJGNvbG9yLXNzcjtcblx0QGlmICRhdHRyaWJ1dGUyICE9IG51bGwge1xuXHQgICN7JGF0dHJpYnV0ZTJ9OiAkY29sb3Itc3NyO1xuXHR9XG4gIH1cbiAgJi50bXBsX3Nwb3J0IHtcblx0I3skYXR0cmlidXRlfTogJGNvbG9yLXNwb3J0O1xuXHRAaWYgJGF0dHJpYnV0ZTIgIT0gbnVsbCB7XG5cdCAgI3skYXR0cmlidXRlMn06ICRjb2xvci1zcG9ydDtcblx0fVxuICB9XG59XG5cbkBtaXhpbiBzdWItbWVudS1jb2xvcigpIHtcbiAgLnRtcGxfZWhwYWQge1xuXHQudWJlcm1lbnUtc3VibWVudSB7XG5cdCAgPiAudWJlcm1lbnUtaXRlbS10eXBlLWNvbHVtbiB7XG5cdFx0PiAudWJlcm1lbnUtc3VibWVudS10eXBlLXN0YWNrIHtcblx0XHQgID4gLnViZXJtZW51LWl0ZW0tbGV2ZWwtMiB7XG5cdFx0XHQ+IGEge1xuXHRcdFx0ICBjb2xvcjogJGNvbG9yLWVocGFkO1xuXG5cdFx0XHQgICY6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogJGNvbG9yLXRleHQ7XG5cdFx0XHQgIH1cblx0XHRcdH1cblx0XHQgIH1cblx0XHR9XG5cblx0XHQudWJlcm1lbnUtc3VibWVudS10eXBlLWF1dG8ge1xuXHRcdCAgYSB7XG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdCAgY29sb3I6ICRjb2xvci1laHBhZDtcblx0XHRcdH1cblx0XHQgIH1cblx0XHR9XG5cdCAgfVxuXHR9XG4gIH1cblxuICAudG1wbF9yZXNpZGVuY2VzIHtcblx0LnViZXJtZW51LXN1Ym1lbnUge1xuXHQgID4gLnViZXJtZW51LWl0ZW0tdHlwZS1jb2x1bW4ge1xuXHRcdD4gLnViZXJtZW51LXN1Ym1lbnUtdHlwZS1zdGFjayB7XG5cdFx0ICA+IC51YmVybWVudS1pdGVtLWxldmVsLTIge1xuXHRcdFx0PiBhIHtcblx0XHRcdCAgY29sb3I6ICRjb2xvci1yZXM7XG5cblx0XHRcdCAgJjpob3ZlciB7XG5cdFx0XHRcdGNvbG9yOiAkY29sb3ItdGV4dDtcblx0XHRcdCAgfVxuXHRcdFx0fVxuXHRcdCAgfVxuXHRcdH1cblxuXHRcdC51YmVybWVudS1zdWJtZW51LXR5cGUtYXV0byB7XG5cdFx0ICBhIHtcblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0ICBjb2xvcjogJGNvbG9yLXJlcztcblx0XHRcdH1cblx0XHQgIH1cblx0XHR9XG5cdCAgfVxuXHR9XG4gIH1cblxuICAudG1wbF9zc3Ige1xuXHQudWJlcm1lbnUtc3VibWVudSB7XG5cdCAgPiAudWJlcm1lbnUtaXRlbS10eXBlLWNvbHVtbiB7XG5cdFx0PiAudWJlcm1lbnUtc3VibWVudS10eXBlLXN0YWNrIHtcblx0XHQgID4gLnViZXJtZW51LWl0ZW0tbGV2ZWwtMiB7XG5cdFx0XHQ+IGEge1xuXHRcdFx0ICBjb2xvcjogJGNvbG9yLXNzcjtcblxuXHRcdFx0ICAmOmhvdmVyIHtcblx0XHRcdFx0Y29sb3I6ICRjb2xvci10ZXh0O1xuXHRcdFx0ICB9XG5cdFx0XHR9XG5cdFx0ICB9XG5cdFx0fVxuXG5cdFx0LnViZXJtZW51LXN1Ym1lbnUtdHlwZS1hdXRvIHtcblx0XHQgIGEge1xuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHQgIGNvbG9yOiAkY29sb3Itc3NyO1xuXHRcdFx0fVxuXHRcdCAgfVxuXHRcdH1cblx0ICB9XG5cdH1cbiAgfVxuXG4gIC50bXBsX3Nwb3J0IHtcblx0LnViZXJtZW51LXN1Ym1lbnUge1xuXHQgID4gLnViZXJtZW51LWl0ZW0tdHlwZS1jb2x1bW4ge1xuXHRcdD4gLnViZXJtZW51LXN1Ym1lbnUtdHlwZS1zdGFjayB7XG5cdFx0ICA+IC51YmVybWVudS1pdGVtLWxldmVsLTIge1xuXHRcdFx0PiBhIHtcblx0XHRcdCAgY29sb3I6ICRjb2xvci1zcG9ydDtcblxuXHRcdFx0ICAmOmhvdmVyIHtcblx0XHRcdFx0Y29sb3I6ICRjb2xvci10ZXh0O1xuXHRcdFx0ICB9XG5cdFx0XHR9XG5cdFx0ICB9XG5cdFx0fVxuXG5cdFx0LnViZXJtZW51LXN1Ym1lbnUtdHlwZS1hdXRvIHtcblx0XHQgIGEge1xuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHQgIGNvbG9yOiAkY29sb3Itc3BvcnQ7XG5cdFx0XHR9XG5cdFx0ICB9XG5cdFx0fVxuXHQgIH1cblx0fVxuICB9XG5cbn1cbkBtaXhpbiBsaXN0LWFkdmFuY2VkLXN0eWxlKCkge1xuICBsaSB7XG5cdHBhZGRpbmctbGVmdDogcmVtKDI1KTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRsaW5lLWhlaWdodDogMS41O1xuXG5cdCY6YmVmb3JlIHtcblx0ICBjb250ZW50OiAnJztcblx0ICB3aWR0aDogMTZweDtcblx0ICBoZWlnaHQ6IDE1LjQycHg7XG5cdCAgcG9zaXRpb246IGFic29sdXRlO1xuXHQgIHRvcDogNHB4O1xuXHQgIGxlZnQ6IDA7XG5cdCAgYm9yZGVyLXJhZGl1czogMDtcblx0ICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9waWN0by1nZW5lcmFsLnN2ZycpO1xuXHQgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cdCAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblxuXHQgIGJvZHkudG1wbF9nZW5lcmFsICYge1xuXHRcdGhlaWdodDogMTZweDtcblx0ICB9XG5cblx0ICBib2R5LnRtcGxfZWhwYWQgJiB7XG5cdFx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9pbWFnZXMvcGljdG8tZWhwYWQuc3ZnJyk7XG5cdFx0YmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcblx0ICB9XG5cblx0ICBib2R5LnRtcGxfcmVzaWRlbmNlcyAmIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9waWN0by1yZXNpZGVuY2VzLnN2ZycpO1xuXHRcdGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cdCAgfVxuXG5cdCAgYm9keS50bXBsX3NzciAmIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9waWN0by1zc3Iuc3ZnJyk7XG5cdFx0YmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcblx0ICB9XG5cblx0ICBib2R5LnRtcGxfc3BvcnQgJiB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWFnZXMvcGljdG8tc3BvcnQuc3ZnJyk7XG5cdFx0YmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcblx0ICB9XG5cblx0ICAudHh0LWNvbG9yLXdoaXRlICYge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1hZ2VzL3BpY3RvLWJ1bGxldC13aGl0ZS5zdmcnKSAhaW1wb3J0YW50O1xuXHQgIH1cblx0fVxuICB9XG59XG5cbkBtaXhpbiBuZXctcHJvZ3Jlc3MtcGFnaW5hdGlvbigkbWFyZ2luVG9wOiAyMHB4LCAkZm9udFNpemU6IDlweCwgJHNob3dOYXZpZ2F0aW9uOiAxMTAwKSB7XG5cdG1hcmdpbi10b3A6ICRtYXJnaW5Ub3A7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTRweDtcblxuXHQmLmludmlzaWJsZS1uYXZpZ2F0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblxuXHRcdEBpbmNsdWRlIG1xKCRzaG93TmF2aWdhdGlvbiwnbWluJykge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cblxuXHRidXR0b24ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxuXG5cdCZfX2NvdW50ZXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRwYWRkaW5nOiA0LjE4cHg7XG5cdFx0d2lkdGg6IDYwcHg7XG5cdFx0aGVpZ2h0OiA2MHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDEwMCU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZW5kO1xuXHRcdGp1c3RpZnktY29udGVudDogcmlnaHQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdGJvZHkudG1wbF9laHBhZCAmIHtcblx0XHRcdGJhY2tncm91bmQ6ICNBQ0MzNkQ7XG5cdFx0fVxuXG5cdFx0Ym9keS50bXBsX3Jlc2lkZW5jZXMgJiB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAjQTFBRjkwO1xuXHRcdH1cblxuXHRcdGJvZHkudG1wbF9zc3IgJiB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAjNzZCNUJCO1xuXHRcdH1cblxuXHRcdGJvZHkudG1wbF9zcG9ydCAmIHtcblx0XHRcdGJhY2tncm91bmQ6ICMzNkIzQTg7XG5cdFx0fVxuXHRcdFxuXHRcdC5wcm9ncmVzcy1iYXJfX3Byb2dyZXNzIHtcblx0XHRcdGZpbGw6IG5vbmU7XG5cdFx0XHRzdHJva2U6ICNGMkYyRjI7XG5cdFx0XHRzdHJva2UtZGFzaGFycmF5OiAxMDAgMTAwO1xuXHRcdFx0c3Ryb2tlLWRhc2hvZmZzZXQ6IDEwMDtcblx0XHRcdHN0cm9rZS1saW5lY2FwOiByb3VuZDtcblx0XHRcdHN0cm9rZS13aWR0aDogMC44O1xuXHRcdFx0dHJhbnNpdGlvbjogc3Ryb2tlLWRhc2hvZmZzZXQgMC41cyBlYXNlLWluLW91dDtcblx0XHR9XG5cdFxuXHRcdC5wcm9ncmVzcy1iYXJfX2JhY2tncm91bmQge1xuXHRcdFx0ZmlsbDogbm9uZTtcblx0XHRcdHN0cm9rZTogcmdiYSgyNDIsIDI0MiwgMjQyLCAwLjMpO1xuXHRcdFx0c3Ryb2tlLXdpZHRoOiAwLjg7XG5cdFx0fVxuXHRcblx0XHRzdmcge1xuXHRcdFx0d2lkdGg6IDUxLjYzMnB4O1xuXHRcdFx0aGVpZ2h0OiA1MS42MzJweDtcblx0XHRcdHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XG5cdFx0fVxuXHR9XG5cblx0Jl9fY291bnRlcl9fbnVtYmVyIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiA1MCU7XG5cdFx0bGVmdDogNTAlO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXHRcdGNvbG9yOiAjRkZGO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LXNpemU6ICRmb250U2l6ZTtcblx0XHRmb250LXN0eWxlOiBub3JtYWw7XG5cdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRsaW5lLWhlaWdodDogbm9ybWFsO1xuXHR9XG59IiwiJGJyb3dzZXItY29udGV4dDogMTU7XG4kcmZzLXJlbS12YWx1ZTogJGJyb3dzZXItY29udGV4dDtcblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ09MT1JTXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qIEJhc2UgY29sb3JzICovXG4kY29sb3ItcHJpbWFyeTogIzY3ODdCNztcbiRjb2xvci1laHBhZDogI0FDQzM2RDtcbiRjb2xvci1yZXM6ICNBMUFGOTA7XG4kY29sb3Itc3NyOiAjNzZCNUJCO1xuJGNvbG9yLXNwb3J0OiAjMzZCM0E4O1xuJGNvbG9yLXRleHQ6ICM2MzYzNjM7XG4kY29sb3ItaGVhZGluZ3M6ICMzRDNEM0Q7XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIExBWU9VVFxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kY29udGFpbmVyLXdpZHRoOiAxMzkwcHg7XG4kZ3V0dGVyOiAxNXB4O1xuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUWVBPR1JBUEhZXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qIERlZmF1bHQgZm9udHMgKi9cbiRmb250LXNlcmlmOiBHZW9yZ2lhLCBzZXJpZjtcbiRmb250LXNhbnMtc2VyaWY6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4kZm9udC1tb25vc3BhY2U6IENvdXJpZXIsIG1vbm9zcGFjZTtcbiRmb250LWN1cnNpdmU6IGN1cnNpdmU7XG5cbi8qIEFwcCBmb250cyAqL1xuJGZvbnQtcHJpbWFyeTogJ2FrdGl2LWdyb3Rlc2snLCAkZm9udC1zYW5zLXNlcmlmO1xuJGZvbnQtYm9sZDogJ0FrdGl2R3JvdGVzay1ib2xkJywgJGZvbnQtc2Fucy1zZXJpZjtcbiRmb250LWJsYWNrOiAnQWt0aXZHcm90ZXNrLWJsYWNrJywgJGZvbnQtc2Fucy1zZXJpZjtcblxuLyogRm9udCB3ZWlnaHRzICovXG4kdGhpbjogdmFyKC0tZm9udFdlaWdodFRoaW4pO1xuJGxpZ2h0OiB2YXIoLS1mb250V2VpZ2h0TGlnaHQpO1xuJHJlZ3VsYXI6IHZhcigtLWZvbnRXZWlnaHRSZWd1bGFyKTtcbiRtZWRpdW06IHZhcigtLWZvbnRXZWlnaHRNZWRpdW0pO1xuJHNlbWktYm9sZDogdmFyKC0tZm9udFdlaWdodFNlbWlCb2xkKTtcbiRib2xkOiB2YXIoLS1mb250V2VpZ2h0Qm9sZCk7XG4kZXh0cmEtYm9sZDogdmFyKC0tZm9udFdlaWdodEV4dHJhQm9sZCk7XG4kYmxhY2s6IHZhcigtLWZvbnRXZWlnaHRCbGFjayk7XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJSRUFLUE9JTlRTXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRicmVha3BvaW50czogKFxuXHRcdFwicGhvbmVcIjogNDAwcHgsXG5cdFx0XCJwaG9uZS13aWRlXCI6IDQ4MHB4LFxuXHRcdFwicGhhYmxldFwiOiA1NjBweCxcblx0XHRcInRhYmxldC1zbWFsbFwiOiA2NDBweCxcblx0XHRcInRhYmxldFwiOiA3NjhweCxcblx0XHRcIndpZHRoLTkwMFwiOiA5MDBweCxcblx0XHRcIndpZHRoLTEwMDBcIjogMTAwMHB4LFxuXHRcdFwidGFibGV0LXdpZGVcIjogMTAyNHB4LFxuXHRcdFwid2lkdGgtMTEwMFwiOiAxMTAwcHgsXG5cdFx0XCJkZXNrdG9wXCI6IDEyNDhweCxcblx0XHRcImRlc2t0b3Atd2lkZVwiOiAxNDQwcHgsXG4pO1xuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBaIElOREVYRVNcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHotaW5kZXhlczogKFxuXHRcdCdtb2RhbC1wb3B1cCcsXG5cdFx0J2hlYWRlcicsXG5cdFx0J21lbnUtb3ZlcmxheScsXG5cdFx0J2RvY3RvbGliLXdpZGdldCcsXG5cdFx0J3dpZGdldC1mb290ZXItbW9iaWxlJyxcblx0XHQnd2lkZ2V0LWluY3JlYXNlLWRlY3JlYXNlLWZvbnQnLFxuXHRcdCdmYW5jeWJveC1jb250YWluZXInLFxuXHRcdCdiYWNrLXRvLXRvcCdcbik7XG4iXX0= */
