valtech-components 4.0.391 → 4.0.392

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1655,7 +1655,7 @@ export class ChessimalsGameComponent {
1655
1655
  />
1656
1656
  </ng-template>
1657
1657
  </ion-modal>
1658
- `, isInline: true, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: transparent;--chessimals-piece-white-line: rgba(47, 42, 58, .08);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(47, 42, 58, .3)) drop-shadow(0 2px 3px rgba(47, 42, 58, .14));--chessimals-piece-black-fill: #2f2a3a;--chessimals-piece-black-side: transparent;--chessimals-piece-black-line: rgba(255, 255, 255, .08);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .16)) drop-shadow(0 2px 3px rgba(0, 0, 0, .24));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #fdf8ee;--chessimals-surface: #172116;--chessimals-border: rgba(242, 230, 213, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #526238;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(0, 0, 0, .34)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash span{display:grid;place-items:center;width:4.75rem;height:4.75rem;border-radius:1.6rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:2.25rem;box-shadow:0 1.25rem 3rem rgba(var(--chessimals-primary-rgb),.32);animation:chessimals-resume-pulse 1.2s ease-in-out infinite}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #fdf8ee;--chessimals-surface: #172116;--chessimals-border: rgba(246, 227, 213, .28);--chessimals-text: #2e3a2c;--chessimals-muted: #526238;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: transparent;--chessimals-piece-white-line: rgba(47, 42, 58, .1);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(47, 42, 58, .28)) drop-shadow(0 2px 3px rgba(0, 0, 0, .22));--chessimals-piece-black-fill: #17131f;--chessimals-piece-black-side: transparent;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 3px 4px rgba(0, 0, 0, .44));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-border: rgba(46, 58, 44, .18);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}.chessimals-hero__logo{display:grid;place-items:center;width:min(22rem,82vw);max-width:100%;padding:.5rem;border-radius:1.35rem;background:#fff;box-shadow:0 1rem 2.5rem #2e3a2c1a,inset 0 0 0 1px #2e3a2c14}.chessimals-hero__logo img{display:block;width:100%;height:auto;max-height:12rem;object-fit:contain;border-radius:1rem}.chessimals-hero h1{margin:0;font-size:clamp(2.4rem,9vw,4.5rem);line-height:.95;font-weight:950}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-panel,.chessimals-game,.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-game{display:grid;gap:.875rem}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 1.75rem;width:1.75rem;height:1.75rem;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-result{order:5}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-howto p,.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font:inherit;font-weight:950}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;border:1px solid var(--chessimals-border);border-radius:.95rem;background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),linear-gradient(22deg,transparent 0 31%,rgba(var(--chessimals-stone-rgb),.035) 31.1% 31.16%,transparent 31.26%),linear-gradient(145deg,transparent 0 67%,rgba(var(--chessimals-stone-rgb),.032) 67.1% 67.16%,transparent 67.3%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-selected-rgb), .76);--trail-glow: rgba(var(--chessimals-selected-rgb), .34)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.45rem;padding:1.25rem;background:radial-gradient(circle at 50% 36%,rgba(255,226,129,.28),transparent 28%),radial-gradient(circle at 50% 48%,rgba(var(--chessimals-primary-rgb),.3),transparent 44%),#0d0a12c7;color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.5) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.62) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.46) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.42) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 24% 22%,rgba(255,255,255,.2),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(var(--chessimals-stone-rgb),.12),transparent 28%),linear-gradient(24deg,transparent 0 34%,rgba(255,255,255,.08) 34.3% 34.8%,transparent 35.1%),linear-gradient(138deg,transparent 0 70%,rgba(var(--chessimals-stone-rgb),.11) 70.2% 70.55%,transparent 70.8%),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:72%;height:72%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(47, 42, 58, .18);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{display:none}.chessimals-piece__head{top:3%;width:48%;height:42%;border-radius:50% 50% 42% 42%;background:linear-gradient(135deg,rgba(255,255,255,.26) 0 30%,transparent 31%),var(--chessimals-piece-fill);box-shadow:inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset 4px -3px #ffffff12,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:39%;width:74%;height:18%;border-radius:999px;box-shadow:inset -3px 2px #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__neck{top:54%;width:58%;height:30%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);box-shadow:inset -3px 3px #ffffff0d}.chessimals-piece__base{bottom:2%;width:84%;height:20%;border-radius:.5rem .5rem .24rem .24rem;box-shadow:inset -3px 2px #ffffff0d}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{display:grid;gap:.375rem;place-items:center;min-height:5.75rem;padding:.625rem;border:1px solid var(--chessimals-border);border-radius:1.125rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .9rem 2rem rgba(var(--chessimals-primary-rgb),.13);transform:translateY(-1px)}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:3rem;height:3rem;overflow:hidden;border-radius:1.05rem;background:var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 1px var(--chessimals-animal-face-border),0 .45rem 1.15rem #2e3a2c1a}.chessimals-animal-face img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.28);filter:var(--chessimals-animal-face-filter)}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{background:#fff;color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px #2e3a2c24,0 .75rem 1.6rem rgba(var(--chessimals-selected-rgb),.18)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-cards strong{overflow:hidden;max-width:100%;font-size:.82rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-primary-rgb),.42);box-shadow:0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-primary-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-primary-rgb),.22)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-selected-rgb),.24),0 0 2.2rem rgba(var(--chessimals-selected-rgb),.34),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-selected-rgb),.2),0 0 1.5rem rgba(var(--chessimals-selected-rgb),.42)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:1rem}.chessimals-powers{width:min(100%,44rem);align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:1rem;padding:1rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{min-height:5rem}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1rem;padding-top:.25rem}.chessimals-rules article{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:1rem;padding:1rem;border:1px solid var(--ion-border-color, #e7e4ea);border-radius:1.25rem;background:var(--ion-card-background, #fff);color:var(--ion-text-color, #2f2a3a)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.45rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--ion-color-medium, #6f6a7a);line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-size,.chessimals-mode,.chessimals-actions{grid-template-columns:1fr}.chessimals-game{gap:.55rem;border-radius:1.25rem;padding:.625rem}.chessimals-turn-card{flex-direction:column;align-items:stretch;gap:.45rem;min-height:0;border-radius:.95rem;padding:.55rem}.chessimals-turn-card__chip{padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.98rem,5vw,1.25rem);line-height:1.08}.chessimals-turn-card p{font-size:.76rem;line-height:1.2}.chessimals-player-strip{width:100%;max-width:none;min-width:0}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem}.chessimals-status div{gap:.2rem;min-height:2.5rem;border-radius:.95rem;padding:.4rem .35rem}.chessimals-status small{font-size:.66rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.86rem,3.4vw,1rem);line-height:1.05}.chessimals-tip,.chessimals-result{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.65rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{gap:.25rem;min-height:4.25rem;border-radius:.85rem;padding:.4rem .25rem}.chessimals-animal-face{width:2.1rem;height:2.1rem;border-radius:.75rem}.chessimals-cards strong{font-size:.66rem}.chessimals-board{border-radius:1.1rem}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"], dependencies: [{ kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
1658
+ `, isInline: true, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .26)) drop-shadow(0 2px 3px rgba(84, 62, 34, .14));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .14)) drop-shadow(0 2px 3px rgba(0, 0, 0, .24));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #fdf8ee;--chessimals-surface: #172116;--chessimals-border: rgba(242, 230, 213, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #526238;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(0, 0, 0, .34)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash span{display:grid;place-items:center;width:4.75rem;height:4.75rem;border-radius:1.6rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:2.25rem;box-shadow:0 1.25rem 3rem rgba(var(--chessimals-primary-rgb),.32);animation:chessimals-resume-pulse 1.2s ease-in-out infinite}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #fdf8ee;--chessimals-surface: #172116;--chessimals-border: rgba(246, 227, 213, .28);--chessimals-text: #2e3a2c;--chessimals-muted: #526238;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .24)) drop-shadow(0 2px 3px rgba(0, 0, 0, .2));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 3px 4px rgba(0, 0, 0, .44));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-border: rgba(46, 58, 44, .18);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}.chessimals-hero__logo{display:grid;place-items:center;width:min(22rem,82vw);max-width:100%;padding:.5rem;border-radius:1.35rem;background:#fff;box-shadow:0 1rem 2.5rem #2e3a2c1a,inset 0 0 0 1px #2e3a2c14}.chessimals-hero__logo img{display:block;width:100%;height:auto;max-height:12rem;object-fit:contain;border-radius:1rem}.chessimals-hero h1{margin:0;font-size:clamp(2.4rem,9vw,4.5rem);line-height:.95;font-weight:950}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-panel,.chessimals-game,.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-game{display:grid;gap:.875rem}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 1.75rem;width:1.75rem;height:1.75rem;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-result{order:5}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-howto p,.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font:inherit;font-weight:950}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;border:1px solid var(--chessimals-border);border-radius:.95rem;background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),linear-gradient(22deg,transparent 0 31%,rgba(var(--chessimals-stone-rgb),.035) 31.1% 31.16%,transparent 31.26%),linear-gradient(145deg,transparent 0 67%,rgba(var(--chessimals-stone-rgb),.032) 67.1% 67.16%,transparent 67.3%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-selected-rgb), .76);--trail-glow: rgba(var(--chessimals-selected-rgb), .34)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.45rem;padding:1.25rem;background:radial-gradient(circle at 50% 36%,rgba(255,226,129,.28),transparent 28%),radial-gradient(circle at 50% 48%,rgba(var(--chessimals-primary-rgb),.3),transparent 44%),#0d0a12c7;color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.5) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.62) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.46) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.42) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 24% 22%,rgba(255,255,255,.2),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(var(--chessimals-stone-rgb),.12),transparent 28%),linear-gradient(24deg,transparent 0 34%,rgba(255,255,255,.08) 34.3% 34.8%,transparent 35.1%),linear-gradient(138deg,transparent 0 70%,rgba(var(--chessimals-stone-rgb),.11) 70.2% 70.55%,transparent 70.8%),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .24);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .16);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{display:grid;gap:.375rem;place-items:center;min-height:5.75rem;padding:.625rem;border:1px solid var(--chessimals-border);border-radius:1.125rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .9rem 2rem rgba(var(--chessimals-primary-rgb),.13);transform:translateY(-1px)}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:3.15rem;height:3.15rem;padding:.18rem;overflow:hidden;border-radius:1.05rem;background:var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 1px var(--chessimals-animal-face-border),0 .45rem 1.15rem #2e3a2c1a}.chessimals-animal-face img{display:block;width:100%;height:100%;object-fit:contain;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{background:#fff;color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px #2e3a2c24,0 .75rem 1.6rem rgba(var(--chessimals-selected-rgb),.18)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-cards strong{overflow:hidden;max-width:100%;font-size:.82rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-primary-rgb),.42);box-shadow:0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-primary-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-primary-rgb),.22)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-selected-rgb),.24),0 0 2.2rem rgba(var(--chessimals-selected-rgb),.34),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-selected-rgb),.2),0 0 1.5rem rgba(var(--chessimals-selected-rgb),.42)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:1rem}.chessimals-powers{width:min(100%,44rem);align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:1rem;padding:1rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{min-height:5rem}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1rem;padding-top:.25rem}.chessimals-rules article{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:1rem;padding:1rem;border:1px solid var(--ion-border-color, #e7e4ea);border-radius:1.25rem;background:var(--ion-card-background, #fff);color:var(--ion-text-color, #2f2a3a)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.45rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--ion-color-medium, #6f6a7a);line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-size,.chessimals-mode,.chessimals-actions{grid-template-columns:1fr}.chessimals-game{gap:.55rem;border-radius:1.25rem;padding:.625rem}.chessimals-turn-card{flex-direction:column;align-items:stretch;gap:.45rem;min-height:0;border-radius:.95rem;padding:.55rem}.chessimals-turn-card__chip{padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.98rem,5vw,1.25rem);line-height:1.08}.chessimals-turn-card p{font-size:.76rem;line-height:1.2}.chessimals-player-strip{width:100%;max-width:none;min-width:0}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem}.chessimals-status div{gap:.2rem;min-height:2.5rem;border-radius:.95rem;padding:.4rem .35rem}.chessimals-status small{font-size:.66rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.86rem,3.4vw,1rem);line-height:1.05}.chessimals-tip,.chessimals-result{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.65rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{gap:.25rem;min-height:4.25rem;border-radius:.85rem;padding:.4rem .25rem}.chessimals-animal-face{width:2.1rem;height:2.1rem;border-radius:.75rem}.chessimals-cards strong{font-size:.66rem}.chessimals-board{border-radius:1.1rem}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"], dependencies: [{ kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
1659
1659
  }
1660
1660
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChessimalsGameComponent, decorators: [{
1661
1661
  type: Component,
@@ -2219,7 +2219,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2219
2219
  />
2220
2220
  </ng-template>
2221
2221
  </ion-modal>
2222
- `, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: transparent;--chessimals-piece-white-line: rgba(47, 42, 58, .08);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(47, 42, 58, .3)) drop-shadow(0 2px 3px rgba(47, 42, 58, .14));--chessimals-piece-black-fill: #2f2a3a;--chessimals-piece-black-side: transparent;--chessimals-piece-black-line: rgba(255, 255, 255, .08);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .16)) drop-shadow(0 2px 3px rgba(0, 0, 0, .24));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #fdf8ee;--chessimals-surface: #172116;--chessimals-border: rgba(242, 230, 213, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #526238;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(0, 0, 0, .34)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash span{display:grid;place-items:center;width:4.75rem;height:4.75rem;border-radius:1.6rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:2.25rem;box-shadow:0 1.25rem 3rem rgba(var(--chessimals-primary-rgb),.32);animation:chessimals-resume-pulse 1.2s ease-in-out infinite}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #fdf8ee;--chessimals-surface: #172116;--chessimals-border: rgba(246, 227, 213, .28);--chessimals-text: #2e3a2c;--chessimals-muted: #526238;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: transparent;--chessimals-piece-white-line: rgba(47, 42, 58, .1);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(47, 42, 58, .28)) drop-shadow(0 2px 3px rgba(0, 0, 0, .22));--chessimals-piece-black-fill: #17131f;--chessimals-piece-black-side: transparent;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 3px 4px rgba(0, 0, 0, .44));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-border: rgba(46, 58, 44, .18);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}.chessimals-hero__logo{display:grid;place-items:center;width:min(22rem,82vw);max-width:100%;padding:.5rem;border-radius:1.35rem;background:#fff;box-shadow:0 1rem 2.5rem #2e3a2c1a,inset 0 0 0 1px #2e3a2c14}.chessimals-hero__logo img{display:block;width:100%;height:auto;max-height:12rem;object-fit:contain;border-radius:1rem}.chessimals-hero h1{margin:0;font-size:clamp(2.4rem,9vw,4.5rem);line-height:.95;font-weight:950}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-panel,.chessimals-game,.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-game{display:grid;gap:.875rem}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 1.75rem;width:1.75rem;height:1.75rem;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-result{order:5}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-howto p,.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font:inherit;font-weight:950}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;border:1px solid var(--chessimals-border);border-radius:.95rem;background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),linear-gradient(22deg,transparent 0 31%,rgba(var(--chessimals-stone-rgb),.035) 31.1% 31.16%,transparent 31.26%),linear-gradient(145deg,transparent 0 67%,rgba(var(--chessimals-stone-rgb),.032) 67.1% 67.16%,transparent 67.3%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-selected-rgb), .76);--trail-glow: rgba(var(--chessimals-selected-rgb), .34)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.45rem;padding:1.25rem;background:radial-gradient(circle at 50% 36%,rgba(255,226,129,.28),transparent 28%),radial-gradient(circle at 50% 48%,rgba(var(--chessimals-primary-rgb),.3),transparent 44%),#0d0a12c7;color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.5) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.62) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.46) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.42) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 24% 22%,rgba(255,255,255,.2),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(var(--chessimals-stone-rgb),.12),transparent 28%),linear-gradient(24deg,transparent 0 34%,rgba(255,255,255,.08) 34.3% 34.8%,transparent 35.1%),linear-gradient(138deg,transparent 0 70%,rgba(var(--chessimals-stone-rgb),.11) 70.2% 70.55%,transparent 70.8%),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:72%;height:72%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(47, 42, 58, .18);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{display:none}.chessimals-piece__head{top:3%;width:48%;height:42%;border-radius:50% 50% 42% 42%;background:linear-gradient(135deg,rgba(255,255,255,.26) 0 30%,transparent 31%),var(--chessimals-piece-fill);box-shadow:inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset 4px -3px #ffffff12,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:39%;width:74%;height:18%;border-radius:999px;box-shadow:inset -3px 2px #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__neck{top:54%;width:58%;height:30%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);box-shadow:inset -3px 3px #ffffff0d}.chessimals-piece__base{bottom:2%;width:84%;height:20%;border-radius:.5rem .5rem .24rem .24rem;box-shadow:inset -3px 2px #ffffff0d}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{display:grid;gap:.375rem;place-items:center;min-height:5.75rem;padding:.625rem;border:1px solid var(--chessimals-border);border-radius:1.125rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .9rem 2rem rgba(var(--chessimals-primary-rgb),.13);transform:translateY(-1px)}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:3rem;height:3rem;overflow:hidden;border-radius:1.05rem;background:var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 1px var(--chessimals-animal-face-border),0 .45rem 1.15rem #2e3a2c1a}.chessimals-animal-face img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.28);filter:var(--chessimals-animal-face-filter)}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{background:#fff;color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px #2e3a2c24,0 .75rem 1.6rem rgba(var(--chessimals-selected-rgb),.18)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-cards strong{overflow:hidden;max-width:100%;font-size:.82rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-primary-rgb),.42);box-shadow:0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-primary-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-primary-rgb),.22)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-selected-rgb),.24),0 0 2.2rem rgba(var(--chessimals-selected-rgb),.34),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-selected-rgb),.2),0 0 1.5rem rgba(var(--chessimals-selected-rgb),.42)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:1rem}.chessimals-powers{width:min(100%,44rem);align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:1rem;padding:1rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{min-height:5rem}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1rem;padding-top:.25rem}.chessimals-rules article{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:1rem;padding:1rem;border:1px solid var(--ion-border-color, #e7e4ea);border-radius:1.25rem;background:var(--ion-card-background, #fff);color:var(--ion-text-color, #2f2a3a)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.45rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--ion-color-medium, #6f6a7a);line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-size,.chessimals-mode,.chessimals-actions{grid-template-columns:1fr}.chessimals-game{gap:.55rem;border-radius:1.25rem;padding:.625rem}.chessimals-turn-card{flex-direction:column;align-items:stretch;gap:.45rem;min-height:0;border-radius:.95rem;padding:.55rem}.chessimals-turn-card__chip{padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.98rem,5vw,1.25rem);line-height:1.08}.chessimals-turn-card p{font-size:.76rem;line-height:1.2}.chessimals-player-strip{width:100%;max-width:none;min-width:0}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem}.chessimals-status div{gap:.2rem;min-height:2.5rem;border-radius:.95rem;padding:.4rem .35rem}.chessimals-status small{font-size:.66rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.86rem,3.4vw,1rem);line-height:1.05}.chessimals-tip,.chessimals-result{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.65rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{gap:.25rem;min-height:4.25rem;border-radius:.85rem;padding:.4rem .25rem}.chessimals-animal-face{width:2.1rem;height:2.1rem;border-radius:.75rem}.chessimals-cards strong{font-size:.66rem}.chessimals-board{border-radius:1.1rem}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"] }]
2222
+ `, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .26)) drop-shadow(0 2px 3px rgba(84, 62, 34, .14));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .14)) drop-shadow(0 2px 3px rgba(0, 0, 0, .24));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #fdf8ee;--chessimals-surface: #172116;--chessimals-border: rgba(242, 230, 213, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #526238;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(0, 0, 0, .34)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash span{display:grid;place-items:center;width:4.75rem;height:4.75rem;border-radius:1.6rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:2.25rem;box-shadow:0 1.25rem 3rem rgba(var(--chessimals-primary-rgb),.32);animation:chessimals-resume-pulse 1.2s ease-in-out infinite}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #fdf8ee;--chessimals-surface: #172116;--chessimals-border: rgba(246, 227, 213, .28);--chessimals-text: #2e3a2c;--chessimals-muted: #526238;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f6f9ed;--chessimals-cell-dark: #9eb25f;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .24)) drop-shadow(0 2px 3px rgba(0, 0, 0, .2));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 3px 4px rgba(0, 0, 0, .44));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-border: rgba(46, 58, 44, .18);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}.chessimals-hero__logo{display:grid;place-items:center;width:min(22rem,82vw);max-width:100%;padding:.5rem;border-radius:1.35rem;background:#fff;box-shadow:0 1rem 2.5rem #2e3a2c1a,inset 0 0 0 1px #2e3a2c14}.chessimals-hero__logo img{display:block;width:100%;height:auto;max-height:12rem;object-fit:contain;border-radius:1rem}.chessimals-hero h1{margin:0;font-size:clamp(2.4rem,9vw,4.5rem);line-height:.95;font-weight:950}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-panel,.chessimals-game,.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-game{display:grid;gap:.875rem}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 1.75rem;width:1.75rem;height:1.75rem;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-result{order:5}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-howto p,.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font:inherit;font-weight:950}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;border:1px solid var(--chessimals-border);border-radius:.95rem;background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),linear-gradient(22deg,transparent 0 31%,rgba(var(--chessimals-stone-rgb),.035) 31.1% 31.16%,transparent 31.26%),linear-gradient(145deg,transparent 0 67%,rgba(var(--chessimals-stone-rgb),.032) 67.1% 67.16%,transparent 67.3%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-selected-rgb), .76);--trail-glow: rgba(var(--chessimals-selected-rgb), .34)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.45rem;padding:1.25rem;background:radial-gradient(circle at 50% 36%,rgba(255,226,129,.28),transparent 28%),radial-gradient(circle at 50% 48%,rgba(var(--chessimals-primary-rgb),.3),transparent 44%),#0d0a12c7;color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.5) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.62) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.46) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.42) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 24% 22%,rgba(255,255,255,.2),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(var(--chessimals-stone-rgb),.12),transparent 28%),linear-gradient(24deg,transparent 0 34%,rgba(255,255,255,.08) 34.3% 34.8%,transparent 35.1%),linear-gradient(138deg,transparent 0 70%,rgba(var(--chessimals-stone-rgb),.11) 70.2% 70.55%,transparent 70.8%),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .24);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .16);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{display:grid;gap:.375rem;place-items:center;min-height:5.75rem;padding:.625rem;border:1px solid var(--chessimals-border);border-radius:1.125rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .9rem 2rem rgba(var(--chessimals-primary-rgb),.13);transform:translateY(-1px)}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:3.15rem;height:3.15rem;padding:.18rem;overflow:hidden;border-radius:1.05rem;background:var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 1px var(--chessimals-animal-face-border),0 .45rem 1.15rem #2e3a2c1a}.chessimals-animal-face img{display:block;width:100%;height:100%;object-fit:contain;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{background:#fff;color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px #2e3a2c24,0 .75rem 1.6rem rgba(var(--chessimals-selected-rgb),.18)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-cards strong{overflow:hidden;max-width:100%;font-size:.82rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-primary-rgb),.42);box-shadow:0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-primary-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-primary-rgb),.22)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-selected-rgb),.24),0 0 2.2rem rgba(var(--chessimals-selected-rgb),.34),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-primary-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-selected-rgb),.2),0 0 1.5rem rgba(var(--chessimals-selected-rgb),.42)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-selected-rgb),0)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:1rem}.chessimals-powers{width:min(100%,44rem);align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:1rem;padding:1rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{min-height:5rem}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1rem;padding-top:.25rem}.chessimals-rules article{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:1rem;padding:1rem;border:1px solid var(--ion-border-color, #e7e4ea);border-radius:1.25rem;background:var(--ion-card-background, #fff);color:var(--ion-text-color, #2f2a3a)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.45rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--ion-color-medium, #6f6a7a);line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-size,.chessimals-mode,.chessimals-actions{grid-template-columns:1fr}.chessimals-game{gap:.55rem;border-radius:1.25rem;padding:.625rem}.chessimals-turn-card{flex-direction:column;align-items:stretch;gap:.45rem;min-height:0;border-radius:.95rem;padding:.55rem}.chessimals-turn-card__chip{padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.98rem,5vw,1.25rem);line-height:1.08}.chessimals-turn-card p{font-size:.76rem;line-height:1.2}.chessimals-player-strip{width:100%;max-width:none;min-width:0}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem}.chessimals-status div{gap:.2rem;min-height:2.5rem;border-radius:.95rem;padding:.4rem .35rem}.chessimals-status small{font-size:.66rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.86rem,3.4vw,1rem);line-height:1.05}.chessimals-tip,.chessimals-result{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.65rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{gap:.25rem;min-height:4.25rem;border-radius:.85rem;padding:.4rem .25rem}.chessimals-animal-face{width:2.1rem;height:2.1rem;border-radius:.75rem}.chessimals-cards strong{font-size:.66rem}.chessimals-board{border-radius:1.1rem}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"] }]
2223
2223
  }], ctorParameters: () => [], propDecorators: { boardAnchor: [{
2224
2224
  type: ViewChild,
2225
2225
  args: ['boardAnchor']
@@ -2230,4 +2230,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2230
2230
  }], projectionMode: [{
2231
2231
  type: Input
2232
2232
  }] } });
2233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFxQixTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLG9CQUFvQixHQUNyQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWExRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUdwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0Is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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnakJUO3dEQWlrRWlDLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkE2RVgsWUFBWTtzQkFBeEIsS0FBSztnQkFRRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBhcHBseUNoZXNzaW1hbHNNb3ZlLFxuICBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZSxcbiAgY3JlYXRlQ2hlc3NpbWFsc0dhbWUsXG4gIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzLFxuICBnZXRDaGVzc2ltYWxzUGllY2VBdCxcbiAgcG9zaXRpb25LZXksXG4gIHJlc2lnbkNoZXNzaW1hbHNHYW1lLFxufSBmcm9tICcuL2NoZXNzaW1hbHMtZW5naW5lJztcbmltcG9ydCB7IENoZXNzaW1hbHNPbmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLW9ubGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0hpc3RvcnlFbnRyeSxcbiAgQ2hlc3NpbWFsc0xvY2FsTW9kZSxcbiAgQ2hlc3NpbWFsc01vdmUsXG4gIENoZXNzaW1hbHNQaWVjZSxcbiAgQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuICBDaGVzc2ltYWxzUG9zaXRpb24sXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTW9kYWxMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbW9kYWwtbGF5b3V0L21vZGFsLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFwdGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9oYXB0aWNzL2hhcHRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9taW5pLWdhbWUtcGxheWVyLXByb2ZpbGUuc2VydmljZSc7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzQW5pbWFsVmlldyB7XG4gIHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBhc3NldFNyYzogc3RyaW5nO1xuICB0b25lOiBudW1iZXI7XG59XG5cbnR5cGUgQ2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gPSAncmVzdGFydCcgfCAnbW9kZScgfCAnZ2FtZXMnIHwgJ3Jlc2lnbic7XG50eXBlIENoZXNzaW1hbHNSZW1hdGNoU3RhdGUgPSAnbm9uZScgfCAncmVxdWVzdGVkJyB8ICdpbmNvbWluZyc7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHtcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgZnJvbVJvdzogbnVtYmVyO1xuICBmcm9tQ29sOiBudW1iZXI7XG4gIHRvUm93OiBudW1iZXI7XG4gIHRvQ29sOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92ZUVmZmVjdFZpZXcge1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgZnJvbTogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICB0bzogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVUcmFpbFZpZXcge1xuICB4OiBzdHJpbmc7XG4gIHk6IHN0cmluZztcbiAgbGVuZ3RoOiBzdHJpbmc7XG4gIGFuZ2xlOiBzdHJpbmc7XG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5jb25zdCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TID0gMzYwO1xuY29uc3QgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMgPSA2MjA7XG5jb25zdCBDSEVTU0lNQUxTX0JPVF9DT0xPUjogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gJ2JsYWNrJztcblxuY29uc3QgQU5JTUFMUzogQ2hlc3NpbWFsc0FuaW1hbFZpZXdbXSA9IFtcbiAgeyB0eXBlOiAnZWFnbGUnLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2VhZ2xlLmpwZycsIHRvbmU6IDY1OS4yNSB9LFxuICB7IHR5cGU6ICdidWxsJywgYXNzZXRTcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9idWxsLmpwZycsIHRvbmU6IDI2MS42MyB9LFxuICB7IHR5cGU6ICdrYW5nYXJvbycsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMva2FuZ2Fyb28uanBnJywgdG9uZTogNTIzLjI1IH0sXG4gIHsgdHlwZTogJ2xpb24nLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2xpb24uanBnJywgdG9uZTogMzkyIH0sXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hlc3NpbWFscy1nYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbk1vZGFsLCBNb2RhbExheW91dENvbXBvbmVudCwgVXNlckF2YXRhckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1haW4gY2xhc3M9XCJjaGVzc2ltYWxzLXNoZWxsXCIgW2NsYXNzLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb25dPVwicHJvamVjdGlvbk1vZGVcIj5cbiAgICAgIEBpZiAoc2NyZWVuKCkgPT09ICdob21lJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWhlcm9fX2xvZ29cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvbG9nby5qcGdcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoMT57eyB0KCdjaGVzc2ltYWxzVGl0bGUnKSB9fTwvaDE+XG4gICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1N1YnRpdGxlJykgfX08L3A+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcGFuZWxcIj5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtaG93dG9cIj5cbiAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzSG93VG9UaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIb3dUb0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWxlYXJuLW1vcmVcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5SdWxlc01vZGFsKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnbGVhcm5Nb3JlJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNpemVcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvYXJkU2l6ZScpXCI+XG4gICAgICAgICAgICBAZm9yIChzaXplIG9mIGJvYXJkU2l6ZXM7IHRyYWNrIHNpemUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvYXJkU2l6ZSgpID09PSBzaXplXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRCb2FyZFNpemUuc2V0KHNpemUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2l6ZSB9fXh7eyBzaXplIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHNpemUgPT09IDYgPyB0KCdjaGVzc2ltYWxzU2l6ZVNtYWxsJykgOiB0KCdjaGVzc2ltYWxzU2l6ZUxhcmdlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW1vZGVcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc01vZGVUaXRsZScpXCI+XG4gICAgICAgICAgICBAZm9yIChtb2RlIG9mIGxvY2FsTW9kZXM7IHRyYWNrIG1vZGUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZExvY2FsTW9kZSgpID09PSBtb2RlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRMb2NhbE1vZGUuc2V0KG1vZGUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbG9jYWxNb2RlTGFiZWwobW9kZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgbG9jYWxNb2RlRGVzY3JpcHRpb24obW9kZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWRpZmZpY3VsdHlcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvdERpZmZpY3VsdHknKVwiPlxuICAgICAgICAgICAgICBAZm9yIChkaWZmaWN1bHR5IG9mIGJvdERpZmZpY3VsdGllczsgdHJhY2sgZGlmZmljdWx0eSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkQm90RGlmZmljdWx0eSgpID09PSBkaWZmaWN1bHR5XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGRpZmZpY3VsdHkpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBib3REaWZmaWN1bHR5TGFiZWwoZGlmZmljdWx0eSkgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRHYW1lKClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTdGFydCcpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc09ubGluZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzT25saW5lQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKG9ubGluZUVycm9yKCkpIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fZXJyb3JcIj57eyBvbmxpbmVFcnJvcigpIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChvbmxpbmVMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVMb2FkaW5nJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cIm9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZU9ubGluZUdhbWUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJykge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lSGludCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19qb2luXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmVUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzSm9pbkNvZGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvbmxpbmVKb2luQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0KCdjaGVzc2ltYWxzSm9pbkNvZGVQbGFjZWhvbGRlcicpXCJcbiAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbmxpbmVKb2luQ29kZS5zZXQobm9ybWFsaXplR2FtZUlkKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnam9pbidcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2pvaW4nXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpIHx8ICFvbmxpbmVKb2luQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiam9pbk9ubGluZUdhbWVCeUNvZGUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnam9pbicpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIEBpZiAob25saW5lSGlzdG9yeSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZSBjaGVzc2ltYWxzLWhpc3RvcnlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0hpc3RvcnlUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5Qm9keScpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9fbGlzdFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIG9ubGluZUhpc3RvcnkoKTsgdHJhY2sgZW50cnkuZ2FtZUlkKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faXRlbVwiIChjbGljayk9XCJvcGVuSGlzdG9yeUdhbWUoZW50cnkpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZW50cnkuZ2FtZUlkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGhpc3RvcnlPdXRjb21lTGFiZWwoZW50cnkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgdCgnY2hlc3NpbWFsc0hpc3RvcnlPcGVuJykgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtZ2FtZVwiPlxuICAgICAgICAgIEBpZiAocmVzdW1lU3BsYXNoVmlzaWJsZSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj7imZ88L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaFRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay10dXJuXT1cImdhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkX19jb3B5XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXBcIj5cbiAgICAgICAgICAgICAgICB7eyBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnID8gdCgnY2hlc3NpbWFsc0ZpbmlzaGVkQ2hpcCcpIDogbW9kZUNoaXBMYWJlbCgpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnID8gd2luVGl0bGUoKSA6IHR1cm5UaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgICAgICAgICAgIDxwPnt7IHdpbkJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcFwiPlxuICAgICAgICAgICAgICBAaWYgKGxvZ2dlZEluVXNlcigpKSB7XG4gICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwibG9nZ2VkUGxheWVyQXZhdGFyUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgbG9jYWxQbGF5ZXJBdmF0YXIoKSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQobG9nZ2VkSW5Vc2VyKCkgPyAnbG9nZ2VkUGxheWVyJyA6ICdsb2NhbFBsYXllcicpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbG9nZ2VkUGxheWVyTmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgQGlmIChsb2dnZWRQbGF5ZXJIYW5kbGUoKSkge1xuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxvZ2dlZFBsYXllckhhbmRsZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgQGlmIChnYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgZ2FtZSgpLnN0YXR1cyA9PT0gJ3dhaXRpbmcnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lIGNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgyPnt7IHdhaXRpbmdUaXRsZSgpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8cD57eyB3YWl0aW5nQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChjYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5hdmF0YXIgPz8gJ+KZn++4jycgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzSm9pblJlcXVlc3RQbGF5ZXInKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcGVuZGluZ0d1ZXN0TmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1nYW1lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0dhbWVDb2RlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLmlkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBpZiAoY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdyZWplY3QnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWplY3RPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1JlamVjdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdhY2NlcHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY2NlcHRPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0FjY2VwdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb3B5T25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDb3B5TGluaycpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlT25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTaGFyZUxpbmsnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zdGF0dXNcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzTW92ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLm1vdmVDb3VudCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHQoJ2NoZXNzaW1hbHNXaW5uZXInKSA6IHQoJ2NoZXNzaW1hbHNQb3dlcnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHBsYXllckxhYmVsKGdhbWUoKS53aW5uZXIgPz8gJ3doaXRlJykgOiB1bmxvY2tlZExhYmVsKGdhbWUoKS5jdXJyZW50VHVybikgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB0KCdjaGVzc2ltYWxzUmVzdWx0JykgOiB0KCdjaGVzc2ltYWxzUml2YWwnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHdpblJlYXNvbkxhYmVsKCkgOiBwbGF5ZXJMYWJlbChnYW1lKCkuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAnYmxhY2snIDogJ3doaXRlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWFyZW5hXCI+XG4gICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAjYm9hcmRBbmNob3JcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLXdyYXBcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1vcmllbnRpbmddPVwiaXNCb2FyZE9yaWVudGluZygpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXN5bmNpbmddPVwibW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWJvYXJkLXNpemVdPVwiZ2FtZSgpLmJvYXJkU2l6ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLWZyYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay12aWV3XT1cImdhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb2FyZCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheVJvd3MoKTsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkaXNwbGF5Q29scygpOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZGFyay1jZWxsXT1cImlzRGFya0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJpc1NlbGVjdGVkQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWxlZ2FsXT1cImlzTGVnYWxDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY2FwdHVyZV09XCJpc0NhcHR1cmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbGFzdF09XCJpc0xhc3RNb3ZlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLW1vdmluZy1zb3VyY2VdPVwiaXNNb3ZpbmdTb3VyY2VDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLW1vdmUtZWZmZWN0XT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtc291cmNlLWVmZmVjdF09XCJpc01vdmVFZmZlY3RTb3VyY2VDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLWNhcHR1cmUtZWZmZWN0XT1cImlzTW92ZUVmZmVjdENhcHR1cmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWVhZ2xlXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdlYWdsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sLCAnYnVsbCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3Qta2FuZ2Fyb29dPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2thbmdhcm9vJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1saW9uXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdsaW9uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb2plY3Rpb25Nb2RlIHx8IGdhbWUoKS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHwgIWNhblBsYXlDdXJyZW50VHVybigpIHx8ICEhbW92aW5nUGllY2UoKSB8fCBib3RUaGlua2luZygpIHx8IG1vdmVTeW5jaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENlbGwoeyByb3csIGNvbCB9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93UmFua0xhYmVsKGNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSBjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJhbmtMYWJlbChyb3cpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0ZpbGVMYWJlbChyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUgY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWxlTGFiZWwoY29sKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBpZWNlQXQocm93LCBjb2wpOyBhcyBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWJsYWNrXT1cInBpZWNlLmNvbG9yID09PSAnYmxhY2snXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYXllckxhYmVsKHBpZWNlLmNvbG9yKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX3NpZGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19oZWFkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fbmVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2Jhc2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGlzTGVnYWxDZWxsKHJvdywgY29sKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdGFyZ2V0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VudGVyLWxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmVUcmFpbCgpOyBhcyB0cmFpbCkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlci10cmFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNhcHR1cmVdPVwidHJhaWwuY2FwdHVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1lYWdsZV09XCJ0cmFpbC5hbmltYWwgPT09ICdlYWdsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJ0cmFpbC5hbmltYWwgPT09ICdidWxsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJ0cmFpbC5hbmltYWwgPT09ICdrYW5nYXJvbydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtbGlvbl09XCJ0cmFpbC5hbmltYWwgPT09ICdsaW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhaWwteF09XCJ0cmFpbC54XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC15XT1cInRyYWlsLnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWxlbmd0aF09XCJ0cmFpbC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWFuZ2xlXT1cInRyYWlsLmFuZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmluZ1BpZWNlKCk7IGFzIG1vdmluZykge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1tb3ZpbmctcGllY2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWZyb20tcm93XT1cIm1vdmluZy5mcm9tUm93XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1mcm9tLWNvbF09XCJtb3ZpbmcuZnJvbUNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tcm93XT1cIm1vdmluZy50b1Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tY29sXT1cIm1vdmluZy50b0NvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiIFtjbGFzcy5pcy1ibGFja109XCJtb3ZpbmcuY29sb3IgPT09ICdibGFjaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fc2lkZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9faGVhZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19uZWNrXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19iYXNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzR2FtZU92ZXInKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHdpblRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbW92ZXNTdW1tYXJ5KCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgIEBpZiAob25saW5lUm9sZSgpICE9PSAnc3BlY3RhdG9yJyAmJiAhcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXJzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbG9ja2VkXT1cIiFjdXJyZW50UGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXJlYWR5XT1cImN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdW5sb2NrLXB1bHNlXT1cInBvd2VyVW5sb2NrUHVsc2UoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzQW5pbWFsQ2FyZHMnKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc1VubG9ja2VkJykgOiB0KCdjaGVzc2ltYWxzTG9ja2VkJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IGN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc0NhcmRzUmVhZHknKSA6IHQoJ2NoZXNzaW1hbHNDYXJkc0xvY2tlZCcpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNhcmRzXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChhbmltYWwgb2YgYW5pbWFsczsgdHJhY2sgYW5pbWFsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEFuaW1hbCgpID09PSBhbmltYWwudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVzZWRdPVwiY3VycmVudFBsYXllcigpLmNhcmRzW2FuaW1hbC50eXBlXS51c2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkIHx8IGN1cnJlbnRQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZCB8fCBnYW1lKCkuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8ICFjYW5QbGF5Q3VycmVudFR1cm4oKSB8fCAhIW1vdmluZ1BpZWNlKClcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbmltYWwoYW5pbWFsKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYW5pbWFsLWZhY2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhbmltYWwuYXNzZXRTcmNcIiBbYWx0XT1cImFuaW1hbExhYmVsKGFuaW1hbC50eXBlKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgYW5pbWFsTGFiZWwoYW5pbWFsLnR5cGUpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdWx0XCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgd2luVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB3aW5Cb2R5KCkgfX08L3A+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChyZW1hdGNoU3RhdGUoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXNcIiBbY2xhc3MuaXMtaW5jb21pbmddPVwicmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgcmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcbiAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoZXNzaW1hbHNSZW1hdGNoSW5jb21pbmdUaXRsZScpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZFRpdGxlJylcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICByZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJ1xuICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hlc3NpbWFsc1JlbWF0Y2hJbmNvbWluZ0JvZHknKVxuICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hlc3NpbWFsc1JlbWF0Y2hSZXF1ZXN0ZWRCb2R5JylcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1hY3Rpb25zXCI+XG4gICAgICAgICAgICBAaWYgKGdhbWUoKS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0UmVzaWduKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVzaWduJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChnYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgb25saW5lUm9sZSgpICE9PSAnc3BlY3RhdG9yJykge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlbWF0Y2hTdGF0ZSgpID09PSAncmVxdWVzdGVkJyB8fCByZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVxdWVzdE9ubGluZVJlbWF0Y2goKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgcmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzQWNjZXB0UmVtYXRjaCcpXG4gICAgICAgICAgICAgICAgICAgIDogcmVtYXRjaFN0YXRlKCkgPT09ICdyZXF1ZXN0ZWQnXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZEFjdGlvbicpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGVzc2ltYWxzUmVtYXRjaCcpXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGdhbWUoKS5tb2RlICE9PSAnb25saW5lJykge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXN0YXJ0R2FtZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgncmVzdGFydCcpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChnYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgZ2FtZSgpLmlkICYmICFwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlUHJvamVjdGlvbkxpbmsoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTaGFyZVByb2plY3Rpb24nKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbmdlTW9kZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuICAgIDwvbWFpbj5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiaXNSdWxlc01vZGFsT3BlbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNsb3NlUnVsZXNNb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cInQoJ2NoZXNzaW1hbHNSdWxlc1RpdGxlJylcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJ0KCdjaGVzc2ltYWxzUnVsZXNTdWJ0aXRsZScpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbZm9vdGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VSdWxlc01vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+MTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVHb2FsVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVHb2FsQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjI8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTW92ZVRpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTW92ZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj4zPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZVBvd2Vyc1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlUG93ZXJzQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjQ8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlQ2FyZHNUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgdCgnY2hlc3NpbWFsc1J1bGVFYWdsZScpIH19PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUJ1bGwnKSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgdCgnY2hlc3NpbWFsc1J1bGVLYW5nYXJvbycpIH19PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUxpb24nKSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj41PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUxpbWl0c1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGltaXRzQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvdmFsLW1vZGFsLWxheW91dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cIiEhY29uZmlybUFjdGlvbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNsb3NlQ29uZmlybU1vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwiY29uZmlybVRpdGxlKClcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJjb25maXJtQm9keSgpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbYWN0aW9uc109XCJjb25maXJtQWN0aW9ucygpXCJcbiAgICAgICAgICBhY3Rpb25zQWxpZ249XCJlbmRcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZUNvbmZpcm1Nb2RhbCgpXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiY29uZmlybVBlbmRpbmdBY3Rpb24oJGV2ZW50LmFjdGlvbj8udG9rZW4pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBhbmVsOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogI2ZmZmFmMTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogcmdiYSg0NiwgNTgsIDQ0LCAwLjE4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6ICMyZTNhMmM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tdXRlZDogIzUxNjQzZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMTExLCAxMjIsIDYwLCAwLjEpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlbGVjdGVkOiAjMzdmMjhhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiOiA1NSwgMjQyLCAxMzg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlLXJnYjogdmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmU6ICMxZmNkYjM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYjogMzEsIDIwNSwgMTc5O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdDogIzhjNmI0ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3QtcmdiOiAxNDAsIDEwNywgNzk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0OiAjZjZmOWVkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1kYXJrOiAjOWViMjVmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtZmlsbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNpZGU6IHRyYW5zcGFyZW50O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtbGluZTogcmdiYSg0NywgNDIsIDU4LCAwLjA4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoNDcsIDQyLCA1OCwgMC4zKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDJweCAzcHggcmdiYSg0NywgNDIsIDU4LCAwLjE0KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1maWxsOiAjMmYyYTNhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2lkZTogdHJhbnNwYXJlbnQ7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93OlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDJweCAzcHggcmdiYSgwLCAwLCAwLCAwLjI0KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZzogI2ZmZmRmNztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJvcmRlcjogcmdiYSg0NiwgNTgsIDQ0LCAwLjEyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcjogZHJvcC1zaGFkb3coMCAwLjEycmVtIDAuMTZyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjE4KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtZmlsdGVyOiBncmF5c2NhbGUoMC4yKSBzYXR1cmF0ZSgwLjcyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1pbWctb3BhY2l0eTogMC43MjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxLjEyNXJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogbWluKDEwMCUsIDYwcmVtKTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLXNoZWxsIHtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICNmZGY4ZWU7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXN1cmZhY2U6ICMxNzIxMTY7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogcmdiYSgyNDIsIDIzMCwgMjEzLCAwLjE4KTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogIzJlM2EyYztcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICM1MjYyMzg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMTExLCAxMjIsIDYwLCAwLjIyKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNreTogI2MwNmEzZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmUtcmdiOiAxNDIsIDE0NywgOTg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNmNmY5ZWQ7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtZGFyazogIzllYjI1ZjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMzQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2gge1xuICAgICAgICBvcmRlcjogMDtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA0MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpLCB0cmFuc3BhcmVudCAyMnJlbSksXG4gICAgICAgICAgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpIDkyJSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMC45cmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDQuNzVyZW07XG4gICAgICAgIGhlaWdodDogNC43NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS42cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udC1zaXplOiAyLjI1cmVtO1xuICAgICAgICBib3gtc2hhZG93OiAwIDEuMjVyZW0gM3JlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjMyKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXJlc3VtZS1wdWxzZSAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS41NXJlbSwgNXZ3LCAyLjRyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBwIHtcbiAgICAgICAgbWF4LXdpZHRoOiAyNHJlbTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1yZXN1bWUtcHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjI1cmVtKSBzY2FsZSgxLjA0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtc3BpbiB7XG4gICAgICAgIHRvIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1zaGVsbCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICNmZGY4ZWU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjMTcyMTE2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMjgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogIzJlM2EyYztcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjNTI2MjM4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNmNmY5ZWQ7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM5ZWIyNWY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlOiAjNjZmMmQ3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2I6IDEwMiwgMjQyLCAyMTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0OiAjY2RiZTliO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdC1yZ2I6IDIwNSwgMTkwLCAxNTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsOiAjZmZmYWZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZTogdHJhbnNwYXJlbnQ7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1saW5lOiByZ2JhKDQ3LCA0MiwgNTgsIDAuMSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDQ3LCA0MiwgNTgsIDAuMjgpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMjIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGw6ICMxNzEzMWY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlOiB0cmFuc3BhcmVudDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWxpbmU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgM3B4IDRweCByZ2JhKDAsIDAsIDAsIDAuNDQpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJnOiAjZmZmZGY3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDAsIDAsIDAsIDAuMjIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6XG4gICAgICAgICAgZ3JheXNjYWxlKDAuMzIpXG4gICAgICAgICAgc2F0dXJhdGUoMC43Mik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtaW1nLW9wYWNpdHk6IDAuNTg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm8ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS43NXJlbTtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMS4yNXJlbSwgNXZ3LCAyLjVyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKSwgdHJhbnNwYXJlbnQgMjAlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZmRmOGVlIDAlLCAjZmZmZmZmIDQwJSwgI2VkZjNkZiAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvX19sb2dvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IG1pbigyMnJlbSwgODJ2dyk7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjM1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMXJlbSAyLjVyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjEpLFxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCByZ2JhKDQ2LCA1OCwgNDQsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvX19sb2dvIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMnJlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVybyBoMSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjRyZW0sIDl2dywgNC41cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDAuOTU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIHAsXG4gICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYW5lbCxcbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS42MjVyZW07XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDFyZW0sIDR2dywgMS41cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nIHtcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4zNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBoMixcbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgaDIge1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fY3JlYXRlLFxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4gPiBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fZXJyb3Ige1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nIHNwYW4ge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXI6IDAuMTVyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc3BpbiAwLjc1cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuM3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjg1cmVtIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZS1jb2RlIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4zNXJlbSwgNnZ3LCAycmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3Rvcnkge1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19saXN0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gZW0ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wZW5kaW5nLXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZm9udC1zaXplOiAxLjA1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCB7XG4gICAgICAgIG9yZGVyOiAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNzVyZW07XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTUlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYiksIDAuMSkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtYmxhY2stdHVybiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjI4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMiksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjE0KSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1maW5pc2hlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuNDIpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTUlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM1KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xOCksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWZpbmlzaGVkIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZ2FwOiAwLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4ycmVtIDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBzdHJvbmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDFyZW0sIDMuNXZ3LCAxLjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgcCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDEwcmVtO1xuICAgICAgICBtYXgtd2lkdGg6IG1pbigxN3JlbSwgNDIlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNTVyZW0gMC4zcmVtIDAuMzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWxpZ2h0LXJnYiwgMjQ0LCAyNDUsIDI0OCksIDAuNzIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGZsZXg6IDAgMCAxLjc1cmVtO1xuICAgICAgICB3aWR0aDogMS43NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4wNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgb3JkZXI6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8sXG4gICAgICAuY2hlc3NpbWFscy10aXAsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cy5pcy1pbmNvbWluZyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMzgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjE0KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gaDIsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWxlYXJuLW1vcmUge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgYnV0dG9uLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjY1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45NXJlbSwgMi41dncsIDEuMnJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAuaXMtb3JpZW50aW5nIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLW9yaWVudC1ib2FyZCAzMjBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLWZpbmlzaGVkIHtcbiAgICAgICAgb3ZlcmZsb3cteDogdmlzaWJsZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICBmbGV4OiAwIDEgNThyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogNThyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOTVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMTYlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA4MiUgNzglLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgyMmRlZywgdHJhbnNwYXJlbnQgMCAzMSUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdG9uZS1yZ2IpLCAwLjAzNSkgMzEuMSUgMzEuMTYlLCB0cmFuc3BhcmVudCAzMS4yNiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHRyYW5zcGFyZW50IDAgNjclLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3RvbmUtcmdiKSwgMC4wMzIpIDY3LjElIDY3LjE2JSwgdHJhbnNwYXJlbnQgNjcuMyUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLFxuICAgICAgICAgIDAgMC44NXJlbSAyLjFyZW0gdmFyKC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLXN5bmNpbmcgLmNoZXNzaW1hbHMtYm9hcmQge1xuICAgICAgICBjdXJzb3I6IHdhaXQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKSA3OCUsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFuayB7XG4gICAgICAgIHRvcDogMC4ycmVtO1xuICAgICAgICBsZWZ0OiAwLjI0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGUge1xuICAgICAgICByaWdodDogMC4yNHJlbTtcbiAgICAgICAgYm90dG9tOiAwLjE4cmVtO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb3JpZW50LWJvYXJkIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDAuMDZyZW0pO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45ODUpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjkyO1xuICAgICAgICAgIGZpbHRlcjogYmx1cigwKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VudGVyLWxpbmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci10b3A6IDAuMDhyZW0gZGFzaGVkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNTYpO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjI0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjYpKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjc2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmlzLWNhcHR1cmUge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQ2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWVhZ2xlIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDEyMCwgMjEwLCAyNTUsIDAuNTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtYnVsbCB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTg4LCAxMzEsIDc2LCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDE4OCwgMTMxLCA3NiwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1rYW5nYXJvbyB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTc0LCAxMjQsIDI1NSwgMC44Nik7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSgxNzQsIDEyNCwgMjU1LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24ge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKDI1NSwgMjIxLCAxMjAsIDAuODgpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMjU1LCAxOTAsIDU2LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwgPiBzcGFuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IHZhcigtLXRyYWlsLXkpO1xuICAgICAgICBsZWZ0OiB2YXIoLS10cmFpbC14KTtcbiAgICAgICAgd2lkdGg6IHZhcigtLXRyYWlsLWxlbmd0aCk7XG4gICAgICAgIGhlaWdodDogMC40NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSA0MiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MikpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHZhcigtLXRyYWlsLWdsb3cpLFxuICAgICAgICAgIDAgMCAxLjQ1cmVtIHZhcigtLXRyYWlsLWdsb3cpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDUwJTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBvd2VyLXRyYWlsIDcyMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1lYWdsZSA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDAuMjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSA0NCUsIHJnYmEoMTIwLCAyMTAsIDI1NSwgMC41OCkpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50IDAgMC43cmVtLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjYpIDAuN3JlbSAwLjkycmVtKTtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGNoZXNzaW1hbHMtZWFnbGUtdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1idWxsID4gc3BhbiB7XG4gICAgICAgIGhlaWdodDogMC43MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpIDAgMC4xOHJlbSwgdHJhbnNwYXJlbnQgMC4xOHJlbSAwLjQycmVtKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCB2YXIoLS10cmFpbC1jb2xvciksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1idWxsLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3Qta2FuZ2Fyb28gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXItdG9wOiAwLjE2cmVtIGRhc2hlZCB2YXIoLS10cmFpbC1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjhyZW0gdmFyKC0tdHJhaWwtZ2xvdykpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1rYW5nYXJvby10cmFpbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NSkgMCAwLjEycmVtLCB0cmFuc3BhcmVudCAwLjEycmVtIDAuMzRyZW0pO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1saW9uLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcG93ZXItdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC43Mik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWVhZ2xlLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC44Mikgc2tld1goLTEwZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxLjA1KSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1idWxsLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBzY2FsZVkoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAzOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjcpIHNjYWxlWSgxLjE4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKSBzY2FsZVkoMC44Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWthbmdhcm9vLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjRyZW0pIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM0JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuMnJlbSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1saW9uLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMzYlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS40KTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNzYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogODtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzYlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuMjgpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDQ4JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4zKSwgdHJhbnNwYXJlbnQgNDQlKSxcbiAgICAgICAgICByZ2JhKDEzLCAxMCwgMTgsIDAuNzgpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheTo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDIwJSAzMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA3NSUgMjUlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuNjIpIDAgMC4xcmVtLCB0cmFuc3BhcmVudCAwLjEycmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDY4JSA3MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDYpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDM1JSA3OCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MikgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy12aWN0b3J5LXNwYXJrcyAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5ID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzcGFuIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjMycmVtIDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS42NXJlbSwgOHZ3LCAzcmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgMS4yNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Mik7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45cmVtLCAzdncsIDEuMXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy12aWN0b3J5LXNwYXJrcyB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjQ2O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgwLjk4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC45NTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMzVyZW0pIHNjYWxlKDEuMDIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtYmc6IHZhcigtLWNoZXNzaW1hbHMtY2VsbC1saWdodCk7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMjQlIDIyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDc4JSA3NiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdG9uZS1yZ2IpLCAwLjEyKSwgdHJhbnNwYXJlbnQgMjglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMjRkZWcsIHRyYW5zcGFyZW50IDAgMzQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpIDM0LjMlIDM0LjglLCB0cmFuc3BhcmVudCAzNS4xJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzOGRlZywgdHJhbnNwYXJlbnQgMCA3MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdG9uZS1yZ2IpLCAwLjExKSA3MC4yJSA3MC41NSUsIHRyYW5zcGFyZW50IDcwLjglKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICBiYWNrZ3JvdW5kIDE2MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxNjBtcyBlYXNlLFxuICAgICAgICAgIHRyYW5zZm9ybSAxNjBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsOjpiZWZvcmUsXG4gICAgICAuY2hlc3NpbWFscy1jZWxsOjphZnRlciB7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWRhcmstY2VsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtZGFyayk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtc2VsZWN0ZWQge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjI4KSAwIDM2JSwgdHJhbnNwYXJlbnQgNjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkKSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNDIpLFxuICAgICAgICAgIDAgMCAwLjU1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjU2KSxcbiAgICAgICAgICAwIDAgMS41NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbGVnYWw6bm90KC5pcy1jYXB0dXJlKTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAxMyU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJvcmRlcjogbWF4KDJweCwgMS44JSkgc29saWQgdmFyKC0tY2hlc3NpbWFscy1tb3ZlKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41NXJlbTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDAuNzQ7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWxhc3Q6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1sZWdhbCk6bm90KC5pcy1jYXB0dXJlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWxhc3QtcmdiKSwgMC4xNikgMCA0MiUsIHRyYW5zcGFyZW50IDY4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlIHtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNCksIHRyYW5zcGFyZW50IDM0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4xNCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjg0KSxcbiAgICAgICAgICBpbnNldCAwIDAgMS40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMjQpLFxuICAgICAgICAgIDAgMCAwLjk1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzQpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1hdXJhIDEuMzVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDQlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC42NHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjI0KSwgdHJhbnNwYXJlbnQgNTglKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNDIlKSBzY2FsZSgwLjkpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1zd2VlcCAxLjM1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDglO1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICBib3JkZXI6IG1heCgycHgsIDEuNTUlKSBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjYycmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNSksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNzJyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIyKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1mcmFtZSAxLjM1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtYXVyYSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjEycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNzgpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yKSxcbiAgICAgICAgICAgIDAgMCAwLjY0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzIpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMjIpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuOTYpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDEuMzRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNCksXG4gICAgICAgICAgICAwIDAgMS4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1jYXB0dXJlLXN3ZWVwIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MiUpIHNjYWxlKDAuODgpO1xuICAgICAgICB9XG5cbiAgICAgICAgNDIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjY2O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQ4JSkgc2NhbGUoMC45Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtc291cmNlLWVmZmVjdDpub3QoLmlzLW1vdmluZy1zb3VyY2UpIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4xMikgMCAzNCUsIHRyYW5zcGFyZW50IDY0JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Qge1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yMikgMCAzNCUsIHRyYW5zcGFyZW50IDY4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODYpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNiksXG4gICAgICAgICAgMCAwIDEuMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMTJyZW07XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40MiksIHRyYW5zcGFyZW50IDU4JSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzIpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItaW1wYWN0IDcwMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0OjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMjhyZW07XG4gICAgICAgIHotaW5kZXg6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXI6IDAuMTRyZW0gc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41OHJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNiksXG4gICAgICAgICAgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItZnJhbWUgODYwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtY2FwdHVyZS1lZmZlY3Qge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQgNzgwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5lZmZlY3QtZWFnbGU6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQgMTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzgpIDQ4JSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzYpLCB0cmFuc3BhcmVudCA2MiUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1idWxsOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkgMCAwLjE2cmVtLCB0cmFuc3BhcmVudCAwLjE2cmVtIDAuMzRyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zOCksIHRyYW5zcGFyZW50IDYyJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWthbmdhcm9vOjpiZWZvcmUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDQyJSA0NCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1OCUgNTYlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCA2NCUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1saW9uOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KGZyb20gMGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NiksIHRyYW5zcGFyZW50LCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBvd2VyLWltcGFjdCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NCkgcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nikgcm90YXRlKDJkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMykgcm90YXRlKDhkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci1mcmFtZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44NCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE2KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM1JSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjM1KSBicmlnaHRuZXNzKDEuMDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbW92aW5nLXNvdXJjZSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDcyJTtcbiAgICAgICAgaGVpZ2h0OiA3MiU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtZmlsbDogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1saW5lOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utb3V0bGluZTogcmdiYSg0NywgNDIsIDU4LCAwLjE4KTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1maWxsOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utc2lkZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDY7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyB2YXIoLS1ib2FyZC1zaXplKSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC8gdmFyKC0tYm9hcmQtc2l6ZSkpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICBjYWxjKHZhcigtLWZyb20tcm93KSAqIDEwMCUpXG4gICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1waWVjZS10cmF2ZWwgMzYwbXMgY3ViaWMtYmV6aWVyKDAuMiwgMC44MiwgMC4yNCwgMSkgYm90aDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBpZWNlLXRyYXZlbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICA2OCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS10by1yb3cpICogMTAwJSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHNjYWxlKDEuMDcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX3NpZGUsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9faGVhZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19iYXNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBib3JkZXI6IG1heCgxcHgsIDEuMjUlKSBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19zaWRlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICB0b3A6IDMlO1xuICAgICAgICB3aWR0aDogNDglO1xuICAgICAgICBoZWlnaHQ6IDQyJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlIDUwJSA0MiUgNDIlO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNikgMCAzMCUsIHRyYW5zcGFyZW50IDMxJSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1saW5lKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2UuaXMtYmxhY2sgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDRweCAtM3B4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3KSxcbiAgICAgICAgICBpbnNldCAwIC0xcHggMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fY29sbGFyIHtcbiAgICAgICAgdG9wOiAzOSU7XG4gICAgICAgIHdpZHRoOiA3NCU7XG4gICAgICAgIGhlaWdodDogMTglO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtM3B4IDJweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNiksXG4gICAgICAgICAgaW5zZXQgMCAtMXB4IDAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1saW5lKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX25lY2sge1xuICAgICAgICB0b3A6IDU0JTtcbiAgICAgICAgd2lkdGg6IDU4JTtcbiAgICAgICAgaGVpZ2h0OiAzMCU7XG4gICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigxNiUgMCwgODQlIDAsIDEwMCUgMTAwJSwgMCAxMDAlKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtM3B4IDNweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19iYXNlIHtcbiAgICAgICAgYm90dG9tOiAyJTtcbiAgICAgICAgd2lkdGg6IDg0JTtcbiAgICAgICAgaGVpZ2h0OiAyMCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbSAwLjVyZW0gMC4yNHJlbSAwLjI0cmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IC0zcHggMnB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdGFyZ2V0IHtcbiAgICAgICAgd2lkdGg6IDE2JTtcbiAgICAgICAgaGVpZ2h0OiAxNiU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1vdmUpO1xuICAgICAgICBvcGFjaXR5OiAwLjk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwLjlyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1vdmUtcmdiKSwgMC40Mik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzc1cmVtO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4taGVpZ2h0OiA1Ljc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjEyNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJvcmRlci1jb2xvciAxODBtcyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMTgwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTgwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMjhyZW0gMC42MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNiksXG4gICAgICAgICAgMCAwLjlyZW0gMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtdXNlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDNyZW07XG4gICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4wNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZyk7XG4gICAgICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSA5MiUsICMwMDApO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJvcmRlciksXG4gICAgICAgICAgMCAwLjQ1cmVtIDEuMTVyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yOCk7XG4gICAgICAgIGZpbHRlcjogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1maWx0ZXIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtc2VsZWN0ZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkgOTQlLCAjMDAwKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSg0NiwgNTgsIDQ0LCAwLjE0KSxcbiAgICAgICAgICAwIDAuNzVyZW0gMS42cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjE4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLWxvY2tlZCAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSB7XG4gICAgICAgIGZpbHRlcjogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtZmlsdGVyKTtcbiAgICAgICAgb3BhY2l0eTogMC44NjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLWxvY2tlZCAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcsXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtdXNlZCAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICBvcGFjaXR5OiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1pbWctb3BhY2l0eSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLWxvY2tlZCAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1yZWFkeSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC40Mik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1yZWFkeSAuY2hlc3NpbWFscy1jYXJkcyBidXR0b246bm90KC5pcy11c2VkKSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFsc1Bvd2VyUHVsc2UgMTgwMG1zIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtdW5sb2NrLXB1bHNlIHtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzUG93ZXJzVW5sb2NrZWQgMTE4MG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy11bmxvY2stcHVsc2UgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkge1xuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgY2hlc3NpbWFsc1Bvd2VySWduaXRlIDc2MG1zIGVhc2Utb3V0IGJvdGgsXG4gICAgICAgICAgY2hlc3NpbWFsc1Bvd2VyUHVsc2UgMTgwMG1zIGVhc2UtaW4tb3V0IDc2MG1zIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHNQb3dlclB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDApO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHNQb3dlcnNVbmxvY2tlZCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM0JSB7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIDAuMThyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMjQpLFxuICAgICAgICAgICAgMCAwIDIuMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNCksXG4gICAgICAgICAgICAwIDFyZW0gMi40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwKSxcbiAgICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJJZ25pdGUge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTYpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDQyJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjA4cmVtKSBzY2FsZSgxLjAyNSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIDAuMTRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMiksXG4gICAgICAgICAgICAwIDAgMS41cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjQyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWN0aW9ucyB7XG4gICAgICAgIG9yZGVyOiA2O1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgobWluKDEwMCUsIDEycmVtKSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICBtYXgtd2lkdGg6IG1pbig5NnZ3LCA5MHJlbSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IDAuODc1cmVtIDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXN0YXR1cyxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWFjdGlvbnMsXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1vbmxpbmUsXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1ib2FyZC13cmFwIHtcbiAgICAgICAgd2lkdGg6IG1pbig5NnZ3LCA4MnZoLCA1OHJlbSk7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjBweCkge1xuICAgICAgICAuY2hlc3NpbWFscy1nYW1lIHtcbiAgICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQsXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtYWN0aW9ucyB7XG4gICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHtcbiAgICAgICAgICB3aWR0aDogbWluKDEwMCUsIDQ0cmVtKTtcbiAgICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMTFyZW0sIDAuNjhmcikgbWlubWF4KDAsIDFmcik7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24ge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMmYyYTNhKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBhcnRpY2xlID4gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGgzLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHVsIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGxpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2ZjZhN2EpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB1bCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LFxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy42MjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxLjEyNXJlbSAyLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LmlzLXdvcmtpbmcsXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkuaXMtd29ya2luZyB7XG4gICAgICAgIGN1cnNvcjogd2FpdDtcbiAgICAgICAgb3BhY2l0eTogMC44MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXIge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm9yZGVyOiAwLjE0cmVtIHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1zcGluIDcyMG1zIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDU2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLXNpemUsXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC42MjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC45NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjE4cmVtIDAuNXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDAuNnJlbTtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNDVlbTtcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHN0cm9uZyB7XG4gICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjk4cmVtLCA1dncsIDEuMjVyZW0pO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIGRpdiB7XG4gICAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMi41cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOTVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC40cmVtIDAuMzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc21hbGwge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC44NnJlbSwgMy40dncsIDFyZW0pO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdGlwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQge1xuICAgICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMC43cmVtIDAuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgbWFyZ2luLWlubGluZTogMDtcbiAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHtcbiAgICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcge1xuICAgICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIGgyIHtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcgc3BhbiB7XG4gICAgICAgICAgcGFkZGluZzogMC4yMnJlbSAwLjQ4cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDQuMjVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjRyZW0gMC4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgICB3aWR0aDogMi4xcmVtO1xuICAgICAgICAgIGhlaWdodDogMi4xcmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YmVmb3JlLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmFmdGVyLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmJlZm9yZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmFmdGVyLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1jYXB0dXJlLWVmZmVjdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vdmluZy1waWVjZSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICBjYWxjKHZhcigtLXRvLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENoZXNzaW1hbHNHYW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1ZGlvID0gaW5qZWN0KFJldHJvQXVkaW9TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvbmxpbmUgPSBpbmplY3QoQ2hlc3NpbWFsc09ubGluZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFwdGljcyA9IGluamVjdChIYXB0aWNzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyUHJvZmlsZXMgPSBpbmplY3QoTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSk7XG4gIHByaXZhdGUgYm9hcmRPcmllbnRhdGlvblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb3ZlQW5pbWF0aW9uVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGJvdFR1cm5UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgb25saW5lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGlzdG9yeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhpc3RvcnlVaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoaXN0b3J5V2F0Y2hUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUVmZmVjdFN0YXJ0VGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG1vdmVFZmZlY3RDbGVhclRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBwb3dlclVubG9ja1RpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBwZW5kaW5nT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb3BlbmluZ09ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9wZW5lZE9ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2JvYXJkQW5jaG9yJykgcHJpdmF0ZSBib2FyZEFuY2hvcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHJlYWRvbmx5IGJvYXJkU2l6ZXM6IENoZXNzaW1hbHNCb2FyZFNpemVbXSA9IFs2LCA4XTtcbiAgcmVhZG9ubHkgbG9jYWxNb2RlczogQ2hlc3NpbWFsc0xvY2FsTW9kZVtdID0gWydvbmUtZGV2aWNlJywgJ2JvdCddO1xuICByZWFkb25seSBib3REaWZmaWN1bHRpZXM6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5W10gPSBbJ2Vhc3knLCAnbm9ybWFsJywgJ2hhcmQnXTtcbiAgcmVhZG9ubHkgYW5pbWFscyA9IEFOSU1BTFM7XG4gIHJlYWRvbmx5IHNjcmVlbiA9IHNpZ25hbDwnaG9tZScgfCAnZ2FtZSc+KCdob21lJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm9hcmRTaXplID0gc2lnbmFsPENoZXNzaW1hbHNCb2FyZFNpemU+KDYpO1xuICByZWFkb25seSBzZWxlY3RlZExvY2FsTW9kZSA9IHNpZ25hbDxDaGVzc2ltYWxzTG9jYWxNb2RlPignb25lLWRldmljZScpO1xuICByZWFkb25seSBzZWxlY3RlZEJvdERpZmZpY3VsdHkgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdERpZmZpY3VsdHk+KCdub3JtYWwnKTtcbiAgcmVhZG9ubHkgZ2FtZSA9IHNpZ25hbDxDaGVzc2ltYWxzR2FtZVN0YXRlPihjcmVhdGVDaGVzc2ltYWxzR2FtZSg2KSk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkUGllY2VJZCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQW5pbWFsID0gc2lnbmFsPENoZXNzaW1hbHNBbmltYWxUeXBlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpc1J1bGVzTW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNCb2FyZE9yaWVudGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vdmluZ1BpZWNlID0gc2lnbmFsPENoZXNzaW1hbHNNb3ZpbmdQaWVjZVZpZXcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG1vdmVFZmZlY3QgPSBzaWduYWw8Q2hlc3NpbWFsc01vdmVFZmZlY3RWaWV3IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBwb3dlclVubG9ja1B1bHNlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbW92ZVRyYWlsID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc01vdmVUcmFpbFZpZXcgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICBpZiAoIWVmZmVjdCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGJvYXJkU2l6ZSA9IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZTtcbiAgICBjb25zdCBmcm9tQ29sID0gdGhpcy5kaXNwbGF5Q29sSW5kZXgoZWZmZWN0LmZyb20uY29sKSArIDAuNTtcbiAgICBjb25zdCBmcm9tUm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgoZWZmZWN0LmZyb20ucm93KSArIDAuNTtcbiAgICBjb25zdCB0b0NvbCA9IHRoaXMuZGlzcGxheUNvbEluZGV4KGVmZmVjdC50by5jb2wpICsgMC41O1xuICAgIGNvbnN0IHRvUm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgoZWZmZWN0LnRvLnJvdykgKyAwLjU7XG4gICAgY29uc3QgZnJvbVggPSAoZnJvbUNvbCAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgZnJvbVkgPSAoZnJvbVJvdyAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgZHggPSAoKHRvQ29sIC0gZnJvbUNvbCkgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGR5ID0gKCh0b1JvdyAtIGZyb21Sb3cpIC8gYm9hcmRTaXplKSAqIDEwMDtcbiAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1heCgxMCwgTWF0aC5oeXBvdChkeCwgZHkpKTtcbiAgICBjb25zdCBhbmdsZSA9IE1hdGguYXRhbjIoZHksIGR4KSAqICgxODAgLyBNYXRoLlBJKTtcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBgJHtmcm9tWH0lYCxcbiAgICAgIHk6IGAke2Zyb21ZfSVgLFxuICAgICAgbGVuZ3RoOiBgJHtsZW5ndGh9JWAsXG4gICAgICBhbmdsZTogYCR7YW5nbGV9ZGVnYCxcbiAgICAgIGFuaW1hbDogZWZmZWN0LmFuaW1hbCxcbiAgICAgIGNhcHR1cmU6IGVmZmVjdC5jYXB0dXJlLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBib3RUaGlua2luZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb24gPSBzaWduYWw8Q2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG9ubGluZUpvaW5Db2RlID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgb25saW5lTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG9ubGluZUFjdGlvbiA9IHNpZ25hbDwnY3JlYXRlJyB8ICdqb2luJyB8ICdhY2NlcHQnIHwgJ3JlamVjdCcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG9ubGluZUVycm9yID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgb25saW5lVWlkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25saW5lSGlzdG9yeSA9IHNpZ25hbDxDaGVzc2ltYWxzSGlzdG9yeUVudHJ5W10+KFtdKTtcbiAgcmVhZG9ubHkgcmVzdW1lU3BsYXNoVmlzaWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHJlbWF0Y2hMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbW92ZVN5bmNpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBsb2dnZWRJblVzZXIgPSB0aGlzLmF1dGgudXNlcjtcbiAgcmVhZG9ubHkgbG9jYWxQbGF5ZXJQcm9maWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCkpO1xuICByZWFkb25seSBsb2NhbFBsYXllckF2YXRhciA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCk/LmF2YXRhciA/PyAn8J+MnycpO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJOYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgIGlmICh1c2VyPy5uYW1lPy50cmltKCkpIHJldHVybiB1c2VyLm5hbWUudHJpbSgpO1xuICAgIGlmICh1c2VyPy5lbWFpbD8udHJpbSgpKSByZXR1cm4gdXNlci5lbWFpbC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyUHJvZmlsZXMuZGlzcGxheU5hbWUodGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKSwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllckhhbmRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICBjb25zdCBoYW5kbGUgPSB1c2VyPy5oYW5kbGU/LnRyaW0oKTtcbiAgICBpZiAoaGFuZGxlKSByZXR1cm4gaGFuZGxlLnN0YXJ0c1dpdGgoJ0AnKSA/IGhhbmRsZSA6IGBAJHtoYW5kbGV9YDtcbiAgICBpZiAodXNlcj8udXNlcklkKSByZXR1cm4gYElEICR7dGhpcy5zaG9ydFVzZXJJZCh1c2VyLnVzZXJJZCl9YDtcbiAgICBjb25zdCBwcm9maWxlSWQgPSB0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpPy5pZDtcbiAgICByZXR1cm4gcHJvZmlsZUlkID8gYElEICR7dGhpcy5zaG9ydFVzZXJJZChwcm9maWxlSWQpfWAgOiAnJztcbiAgfSk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllckF2YXRhclByb3BzID0gY29tcHV0ZWQ8VXNlckF2YXRhck1ldGFkYXRhPigoKSA9PiAoe1xuICAgIHVzZXI6IHRoaXMubG9nZ2VkSW5Vc2VyKCksXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgICBib3JkZXJlZDogdHJ1ZSxcbiAgfSkpO1xuXG4gIEBJbnB1dCgpIHNldCBvbmxpbmVHYW1lSWQodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBnYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodmFsdWUgPz8gJycpO1xuICAgIGlmICghZ2FtZUlkKSByZXR1cm47XG4gICAgdGhpcy5wZW5kaW5nT25saW5lR2FtZUlkID0gZ2FtZUlkO1xuICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCAhPT0gZ2FtZUlkICYmIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCAhPT0gZ2FtZUlkKSB7XG4gICAgICB2b2lkIHRoaXMub3Blbk9ubGluZUdhbWUoZ2FtZUlkKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgbWluaUdhbWVzUm91dGUgPSAnL21pbmktZ2FtZXMnO1xuICBASW5wdXQoKSBwcm9qZWN0aW9uTW9kZSA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRQbGF5ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5wbGF5ZXJzW3RoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuXSk7XG4gIHJlYWRvbmx5IGxlZ2FsTW92ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGllY2VJZCA9IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gICAgaWYgKCFwaWVjZUlkKSByZXR1cm4gW107XG4gICAgaWYgKCF0aGlzLmNhblBsYXlDdXJyZW50VHVybigpKSByZXR1cm4gW107XG4gICAgcmV0dXJuIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHRoaXMuZ2FtZSgpLCBwaWVjZUlkLCB0aGlzLnNlbGVjdGVkQW5pbWFsKCkpO1xuICB9KTtcbiAgcmVhZG9ubHkgbGVnYWxNb3ZlS2V5cyA9IGNvbXB1dGVkKCgpID0+IG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkubWFwKChtb3ZlKSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSkpKTtcbiAgcmVhZG9ubHkgY2FwdHVyZU1vdmVLZXlzID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gbmV3IFNldCh0aGlzLmxlZ2FsTW92ZXMoKS5maWx0ZXIoKG1vdmUpID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpLm1hcCgobW92ZSkgPT4gcG9zaXRpb25LZXkobW92ZS50bykpKSxcbiAgKTtcbiAgcmVhZG9ubHkgYm9hcmRSb3dzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5nYW1lKCkuYm9hcmRTaXplIH0sIChfLCBpbmRleCkgPT4gaW5kZXgpKTtcbiAgcmVhZG9ubHkgYm9hcmRDb2xzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5nYW1lKCkuYm9hcmRTaXplIH0sIChfLCBpbmRleCkgPT4gaW5kZXgpKTtcbiAgcmVhZG9ubHkgZGlzcGxheVJvd3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyBbLi4udGhpcy5ib2FyZFJvd3MoKV0ucmV2ZXJzZSgpIDogdGhpcy5ib2FyZFJvd3MoKSxcbiAgKTtcbiAgcmVhZG9ubHkgZGlzcGxheUNvbHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyBbLi4udGhpcy5ib2FyZENvbHMoKV0ucmV2ZXJzZSgpIDogdGhpcy5ib2FyZENvbHMoKSxcbiAgKTtcbiAgcmVhZG9ubHkgYm9hcmRPcmllbnRhdGlvbkNvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gdWlkID8gdGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHVpZCkgPz8gJ3doaXRlJyA6ICd3aGl0ZSc7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSByZXR1cm4gJ3doaXRlJztcbiAgICByZXR1cm4gZ2FtZS5jdXJyZW50VHVybjtcbiAgfSk7XG4gIHJlYWRvbmx5IG9ubGluZVJvbGUgPSBjb21wdXRlZCgoKTogQ2hlc3NpbWFsc1BsYXllckNvbG9yIHwgJ3dhaXRpbmcnIHwgJ3BlbmRpbmcnIHwgJ3NwZWN0YXRvcicgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmICghdWlkKSByZXR1cm4gJ3NwZWN0YXRvcic7XG4gICAgaWYgKHRoaXMub25saW5lLmlzSG9zdFdhaXRpbmcoZ2FtZSwgdWlkKSkgcmV0dXJuICd3YWl0aW5nJztcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICd3YWl0aW5nJyAmJiBnYW1lLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py51aWQgPT09IHVpZCkgcmV0dXJuICdwZW5kaW5nJztcbiAgICByZXR1cm4gdGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHVpZCkgPz8gJ3NwZWN0YXRvcic7XG4gIH0pO1xuICByZWFkb25seSBjYW5QbGF5Q3VycmVudFR1cm4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSB7XG4gICAgICByZXR1cm4gZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1IgJiYgIXRoaXMuYm90VGhpbmtpbmcoKTtcbiAgICB9XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiB0aGlzLm9ubGluZVJvbGUoKSA9PT0gZ2FtZS5jdXJyZW50VHVybjtcbiAgfSk7XG4gIHJlYWRvbmx5IHJlbWF0Y2hTdGF0ZSA9IGNvbXB1dGVkPENoZXNzaW1hbHNSZW1hdGNoU3RhdGU+KCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScgfHwgZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybiAnbm9uZSc7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAoIXVpZCB8fCB0aGlzLm9ubGluZVJvbGUoKSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiAnbm9uZSc7XG5cbiAgICBjb25zdCByZXF1ZXN0cyA9IGdhbWUub25saW5lPy5yZW1hdGNoUmVxdWVzdHMgPz8gW107XG4gICAgY29uc3QgaGFzTWluZSA9IHJlcXVlc3RzLmluY2x1ZGVzKHVpZCk7XG4gICAgY29uc3QgaGFzT3RoZXIgPSByZXF1ZXN0cy5zb21lKChpdGVtKSA9PiBpdGVtICE9PSB1aWQpO1xuXG4gICAgaWYgKGhhc090aGVyICYmICFoYXNNaW5lKSByZXR1cm4gJ2luY29taW5nJztcbiAgICBpZiAoaGFzTWluZSkgcmV0dXJuICdyZXF1ZXN0ZWQnO1xuICAgIHJldHVybiAnbm9uZSc7XG4gIH0pO1xuICByZWFkb25seSBjdXJyZW50VHVyblRpdGxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ2NoZXNzaW1hbHNDdXJyZW50VHVybicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wbGF5ZXJMYWJlbCh0aGlzLmdhbWUoKS5jdXJyZW50VHVybikpLFxuICApO1xuICByZWFkb25seSB3aW5UaXRsZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdjaGVzc2ltYWxzV2luVGl0bGUnKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGxheWVyTGFiZWwodGhpcy5nYW1lKCkud2lubmVyID8/ICd3aGl0ZScpKSxcbiAgKTtcbiAgcmVhZG9ubHkgd2luQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByZWFzb24gPSB0aGlzLmdhbWUoKS53aW5uZXJSZWFzb24gPz8gJ3Byb21vdGlvbic7XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIHJlYXNvbiA9PT0gJ2VsaW1pbmF0aW9uJ1xuICAgICAgICA/ICdjaGVzc2ltYWxzV2luRWxpbWluYXRpb24nXG4gICAgICAgIDogcmVhc29uID09PSAncmVzaWduYXRpb24nXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc1dpblJlc2lnbmF0aW9uJ1xuICAgICAgICAgIDogJ2NoZXNzaW1hbHNXaW5Qcm9tb3Rpb24nO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KTtcbiAgfSk7XG4gIHJlYWRvbmx5IHdpblJlYXNvbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlYXNvbiA9IHRoaXMuZ2FtZSgpLndpbm5lclJlYXNvbiA/PyAncHJvbW90aW9uJztcbiAgICBjb25zdCBrZXkgPVxuICAgICAgcmVhc29uID09PSAnZWxpbWluYXRpb24nXG4gICAgICAgID8gJ2NoZXNzaW1hbHNSZWFzb25FbGltaW5hdGlvbidcbiAgICAgICAgOiByZWFzb24gPT09ICdyZXNpZ25hdGlvbidcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzUmVhc29uUmVzaWduYXRpb24nXG4gICAgICAgICAgOiAnY2hlc3NpbWFsc1JlYXNvblByb21vdGlvbic7XG4gICAgcmV0dXJuIHRoaXMudChrZXkpO1xuICB9KTtcbiAgcmVhZG9ubHkgbW92ZXNTdW1tYXJ5ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ2NoZXNzaW1hbHNNb3Zlc1N1bW1hcnknKS5yZXBsYWNlKCd7bW92ZXN9JywgYCR7dGhpcy5nYW1lKCkubW92ZUNvdW50fWApLFxuICApO1xuICByZWFkb25seSBjb25maXJtVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc3RhcnRUaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXNpZ24nKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc2lnblRpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1HYW1lc1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1Nb2RlVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1Cb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXN0YXJ0Qm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXNpZ24nKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc2lnbkJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybUdhbWVzQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtTW9kZUJvZHknKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb25zID0gY29tcHV0ZWQ8QnV0dG9uTWV0YWRhdGFbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRleHQ6IHRoaXMudCgnY2FuY2VsJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICB0b2tlbjogJ2NhbmNlbCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0ZXh0OlxuICAgICAgICAgIGFjdGlvbiA9PT0gJ3Jlc2lnbidcbiAgICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzUmVzaWduJylcbiAgICAgICAgICAgIDogYWN0aW9uID09PSAncmVzdGFydCdcbiAgICAgICAgICAgICAgPyB0aGlzLnQoJ3Jlc3RhcnQnKVxuICAgICAgICAgICAgICA6IGFjdGlvbiA9PT0gJ2dhbWVzJ1xuICAgICAgICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbmdlR2FtZScpXG4gICAgICAgICAgICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFuZ2VNb2RlJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICB0b2tlbjogJ2NvbmZpcm0nLFxuICAgICAgfSxcbiAgICBdO1xuICB9KTtcbiAgcmVhZG9ubHkgYWN0aW9uSGludCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwaWVjZUlkID0gdGhpcy5zZWxlY3RlZFBpZWNlSWQoKTtcbiAgICBpZiAoIXBpZWNlSWQpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrQW55UGllY2UnKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEFuaW1hbCgpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja1Bvd2VyVGFyZ2V0Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tUYXJnZXQnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01pbmlHYW1lcycsIE1JTklfR0FNRVNfSTE4Tik7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gICAgICBpZiAodXNlcikge1xuICAgICAgICB0aGlzLnF1ZXVlSGlzdG9yeVdhdGNoKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGlzdG9yeVVpZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub25saW5lSGlzdG9yeS5zZXQoW10pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KHRydWUpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKTtcbiAgICBpZiAodGhpcy5wb3dlclVubG9ja1RpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5wb3dlclVubG9ja1RpbWVyKTtcbiAgICBpZiAodGhpcy5ib3RUdXJuVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvdFR1cm5UaW1lcik7XG4gICAgaWYgKHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgICBjb25zdCBnYW1lSWQgPSB0aGlzLnBlbmRpbmdPbmxpbmVHYW1lSWQ7XG4gICAgaWYgKGdhbWVJZCAmJiB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCAhPT0gZ2FtZUlkICYmIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCAhPT0gZ2FtZUlkKSB7XG4gICAgICB2b2lkIHRoaXMub3Blbk9ubGluZUdhbWUoZ2FtZUlkKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWluaUdhbWVzJyk7XG4gIH1cblxuICBwcml2YXRlIHNob3J0VXNlcklkKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB2YWx1ZS50cmltKCk7XG4gICAgaWYgKG5vcm1hbGl6ZWQubGVuZ3RoIDw9IDEwKSByZXR1cm4gbm9ybWFsaXplZDtcbiAgICByZXR1cm4gYCR7bm9ybWFsaXplZC5zbGljZSgwLCA0KX3igKYke25vcm1hbGl6ZWQuc2xpY2UoLTQpfWA7XG4gIH1cblxuICBzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5nYW1lLnNldChjcmVhdGVDaGVzc2ltYWxzR2FtZSh0aGlzLnNlbGVjdGVkQm9hcmRTaXplKCkpKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9ubGluZUdhbWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLm9ubGluZUVycm9yLnNldCgnJyk7XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdjcmVhdGUnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGdhbWUgPSBhd2FpdCB0aGlzLm9ubGluZS5jcmVhdGVHYW1lKHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUoKSk7XG4gICAgICB0aGlzLm9ubGluZVVpZC5zZXQodGhpcy5vbmxpbmUuY3VycmVudFVpZCk7XG4gICAgICB0aGlzLnF1ZXVlSGlzdG9yeVdhdGNoKCk7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IGdhbWUuaWQ7XG4gICAgICB0aGlzLndhdGNoT25saW5lR2FtZShnYW1lLmlkKTtcbiAgICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3Muc3VjY2VzcygpO1xuICAgICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2hlc3NpbWFsc0dhbWVSb3V0ZShnYW1lLmlkKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNyZWF0ZSBvbmxpbmUgZ2FtZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGpvaW5PbmxpbmVHYW1lQnlDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh0aGlzLm9ubGluZUpvaW5Db2RlKCkpO1xuICAgIGlmICghdGhpcy5vbmxpbmUuaXNWYWxpZEdhbWVJZChnYW1lSWQpKSB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChnYW1lSWQpO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgnam9pbicpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPT09IGdhbWVJZCkge1xuICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5jaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWVJZCkpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvcGVuT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRHYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQoZ2FtZUlkKTtcbiAgICBpZiAoIXRoaXMub25saW5lLmlzVmFsaWRHYW1lSWQobm9ybWFsaXplZEdhbWVJZCkpIHtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9PT0gbm9ybWFsaXplZEdhbWVJZCB8fCB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPT09IG5vcm1hbGl6ZWRHYW1lSWQpIHJldHVybjtcblxuICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSBub3JtYWxpemVkR2FtZUlkO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5qb2luR2FtZShub3JtYWxpemVkR2FtZUlkKTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gbm9ybWFsaXplZEdhbWVJZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKG5vcm1hbGl6ZWRHYW1lSWQpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zZWxlY3Rpb24oKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gb3BlbiBvbmxpbmUgZ2FtZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdm9pZCB0aGlzLnJlcXVlc3RPbmxpbmVSZW1hdGNoKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5nYW1lLnNldChjcmVhdGVDaGVzc2ltYWxzR2FtZSh0aGlzLmdhbWUoKS5ib2FyZFNpemUpKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHJlc2V0VG9Nb2RlU2V0dXAoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVzZXRUb0dhbWVzTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0VG9Nb2RlU2V0dXAoKTtcbiAgICBjb25zdCByb3V0ZSA9IHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlKS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdChyZXR1cm5Ib21lID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ2xvY2FsJyB8fCBnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuICAgIHRoaXMubW92ZUFuaW1hdGlvblRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5nYW1lLnNldChjcmVhdGVDaGVzc2ltYWxzR2FtZShnYW1lLmJvYXJkU2l6ZSkpO1xuICAgIGlmIChyZXR1cm5Ib21lKSB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgfVxuXG4gIHJlcXVlc3RSZXN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdyZXN0YXJ0Jyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdtb2RlJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlR2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdnYW1lcycpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdFJlc2lnbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzaWduJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUNvbmZpcm1Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBjb25maXJtUGVuZGluZ0FjdGlvbih0b2tlbj86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0b2tlbiAhPT0gJ2NvbmZpcm0nKSB7XG4gICAgICB0aGlzLmNsb3NlQ29uZmlybU1vZGFsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuXG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSB7XG4gICAgICB0aGlzLnJlc3RhcnRHYW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdtb2RlJykge1xuICAgICAgdGhpcy5yZXNldFRvTW9kZVNldHVwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHtcbiAgICAgIHRoaXMucmVzZXRUb0dhbWVzTWVudSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykge1xuICAgICAgdGhpcy5yZXNpZ25HYW1lKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNpZ25HYW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgdm9pZCB0aGlzLm9ubGluZS5yZXNpZ24oZ2FtZS5pZCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmdhbWUuc2V0KHJlc2lnbkNoZXNzaW1hbHNHYW1lKGdhbWUsIGdhbWUuY3VycmVudFR1cm4pKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzVmljdG9yeSgpO1xuICB9XG5cbiAgb3BlblJ1bGVzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1J1bGVzTW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlUnVsZXNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUnVsZXNNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHNlbGVjdENlbGwocG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCAhdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fCB0aGlzLm1vdmluZ1BpZWNlKCkgfHwgdGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm47XG5cbiAgICBjb25zdCBwaWVjZSA9IGdldENoZXNzaW1hbHNQaWVjZUF0KGdhbWUsIHBvc2l0aW9uKTtcbiAgICBpZiAocGllY2U/LmNvbG9yID09PSBnYW1lLmN1cnJlbnRUdXJuKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQocGllY2UuaWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vdmUgPSB0aGlzLmxlZ2FsTW92ZXMoKS5maW5kKChpdGVtKSA9PiBwb3NpdGlvbktleShpdGVtLnRvKSA9PT0gcG9zaXRpb25LZXkocG9zaXRpb24pKTtcbiAgICBpZiAoIW1vdmUpIHJldHVybjtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIHRoaXMuYW5pbWF0ZU1vdmUoZ2FtZSwgbW92ZSwgdXBkYXRlZCk7XG4gICAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgICB0aGlzLm1vdmVTeW5jaW5nLnNldCh0cnVlKTtcbiAgICAgICAgdm9pZCB0aGlzLm9ubGluZVxuICAgICAgICAgIC5tb3ZlKGdhbWUuaWQsIG1vdmUpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuaW1wYWN0KG1vdmUuY2FwdHVyZXNQaWVjZUlkID8gJ21lZGl1bScgOiAnbGlnaHQnKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIG9ubGluZSBtb3ZlIGZhaWxlZCcsIHsgZ2FtZUlkOiBnYW1lLmlkLCBtb3ZlLCBlcnJvciB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW92ZVN5bmNpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYW5pbWF0ZU1vdmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgbW92ZTogQ2hlc3NpbWFsc01vdmUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgdGhpcy5xdWV1ZU1vdmVFZmZlY3QobW92ZSk7XG5cbiAgICBjb25zdCBtb3ZpbmdQaWVjZSA9IGdhbWUucGllY2VzLmZpbmQoKHBpZWNlKSA9PiBwaWVjZS5pZCA9PT0gbW92ZS5waWVjZUlkKTtcbiAgICBpZiAoIW1vdmluZ1BpZWNlKSB7XG4gICAgICB0aGlzLmFwcGx5QW5pbWF0ZWRNb3ZlKGdhbWUsIHVwZGF0ZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHtcbiAgICAgIGNvbG9yOiBtb3ZpbmdQaWVjZS5jb2xvcixcbiAgICAgIGZyb21Sb3c6IHRoaXMuZGlzcGxheVJvd0luZGV4KG1vdmUuZnJvbS5yb3cpLFxuICAgICAgZnJvbUNvbDogdGhpcy5kaXNwbGF5Q29sSW5kZXgobW92ZS5mcm9tLmNvbCksXG4gICAgICB0b1JvdzogdGhpcy5kaXNwbGF5Um93SW5kZXgobW92ZS50by5yb3cpLFxuICAgICAgdG9Db2w6IHRoaXMuZGlzcGxheUNvbEluZGV4KG1vdmUudG8uY29sKSxcbiAgICB9KTtcblxuICAgIHRoaXMubW92ZUFuaW1hdGlvblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFwcGx5QW5pbWF0ZWRNb3ZlKGdhbWUsIHVwZGF0ZWQpO1xuICAgIH0sIENIRVNTSU1BTFNfTU9WRV9BTklNQVRJT05fTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUFuaW1hdGVkTW92ZShwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5nYW1lLnNldCh1cGRhdGVkKTtcbiAgICB0aGlzLnBsYXlQb3dlclVubG9ja1NvdW5kKHByZXZpb3VzLCB1cGRhdGVkKTtcbiAgICBpZiAoXG4gICAgICB1cGRhdGVkLmN1cnJlbnRUdXJuICE9PSBwcmV2aW91cy5jdXJyZW50VHVybiAmJlxuICAgICAgdXBkYXRlZC5zdGF0dXMgIT09ICdmaW5pc2hlZCcgJiZcbiAgICAgICF0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKHVwZGF0ZWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnRyaWdnZXJCb2FyZE9yaWVudGF0aW9uKCk7XG4gICAgfVxuICAgIGlmICh1cGRhdGVkLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzVmljdG9yeSgpO1xuICAgIH1cbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBwcml2YXRlIHBsYXlQb3dlclVubG9ja1NvdW5kKHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3Qgd2hpdGVVbmxvY2tlZCA9ICFwcmV2aW91cy5wbGF5ZXJzLndoaXRlLnBvd2VyVW5sb2NrZWQgJiYgdXBkYXRlZC5wbGF5ZXJzLndoaXRlLnBvd2VyVW5sb2NrZWQ7XG4gICAgY29uc3QgYmxhY2tVbmxvY2tlZCA9ICFwcmV2aW91cy5wbGF5ZXJzLmJsYWNrLnBvd2VyVW5sb2NrZWQgJiYgdXBkYXRlZC5wbGF5ZXJzLmJsYWNrLnBvd2VyVW5sb2NrZWQ7XG4gICAgaWYgKHdoaXRlVW5sb2NrZWQgfHwgYmxhY2tVbmxvY2tlZCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzUG93ZXJVbmxvY2tlZCgpO1xuICAgICAgdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldChmYWxzZSk7XG4gICAgICBjb25zdCBzdGFydFB1bHNlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnBvd2VyVW5sb2NrUHVsc2Uuc2V0KHRydWUpO1xuICAgICAgICBpZiAodGhpcy5wb3dlclVubG9ja1RpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5wb3dlclVubG9ja1RpbWVyKTtcbiAgICAgICAgdGhpcy5wb3dlclVubG9ja1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnBvd2VyVW5sb2NrUHVsc2Uuc2V0KGZhbHNlKSwgMTM1MCk7XG4gICAgICB9O1xuICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0YXJ0UHVsc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdGFydFB1bHNlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZUJvdFR1cm5JZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnIHx8XG4gICAgICBnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcgfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUlxuICAgICkge1xuICAgICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ib3RUdXJuVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvdFR1cm5UaW1lcik7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmJvdFRoaW5raW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wbGF5Qm90VHVybigpLCBDSEVTU0lNQUxTX0JPVF9USElOS0lOR19NUyk7XG4gIH1cblxuICBwcml2YXRlIHBsYXlCb3RUdXJuKCk6IHZvaWQge1xuICAgIHRoaXMuYm90VHVyblRpbWVyID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoXG4gICAgICBnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcgfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUlxuICAgICkge1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vdmUgPSBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZShnYW1lLCB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eSgpKTtcbiAgICBpZiAoIW1vdmUpIHtcbiAgICAgIHRoaXMuZ2FtZS5zZXQocmVzaWduQ2hlc3NpbWFsc0dhbWUoZ2FtZSwgQ0hFU1NJTUFMU19CT1RfQ09MT1IpKTtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1ZpY3RvcnkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoZ2FtZSwgbW92ZSk7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmFuaW1hdGVNb3ZlKGdhbWUsIG1vdmUsIHVwZGF0ZWQpO1xuICAgICAgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUsIHRydWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckJvdFR1cm4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMuYm90VHVyblRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWMoKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKTtcbiAgICB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KGZhbHNlKTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KGZhbHNlKSwgMzQwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHRoaXMuZ2FtZSgpKTogYm9vbGVhbiB7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JztcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNCb2FyZFNvb24oKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5ib2FyZEFuY2hvcj8ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XG4gICAgICB9LCA4MCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBsYXlNb3ZlU291bmQobW92ZTogQ2hlc3NpbWFsc01vdmUsIGlzQm90ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAobW92ZS5hbmltYWwpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyKG1vdmUuYW5pbWFsKTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNDYXB0dXJlKCksIDE1MCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzQ2FwdHVyZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNCb3QpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc0JvdE1vdmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzTW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZU1vdmVFZmZlY3QobW92ZTogQ2hlc3NpbWFsc01vdmUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcik7XG5cbiAgICBpZiAoIW1vdmUuYW5pbWFsICYmICFtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgdGhpcy5tb3ZlRWZmZWN0LnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubW92ZUVmZmVjdC5zZXQodW5kZWZpbmVkKTtcbiAgICBjb25zdCBkZWxheU1zID0gTWF0aC5tYXgoMCwgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyAtIDkwKTtcbiAgICB0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHtcbiAgICAgICAgYW5pbWFsOiBtb3ZlLmFuaW1hbCxcbiAgICAgICAgZnJvbTogeyAuLi5tb3ZlLmZyb20gfSxcbiAgICAgICAgdG86IHsgLi4ubW92ZS50byB9LFxuICAgICAgICBjYXB0dXJlOiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCksIDk1MCk7XG4gICAgfSwgZGVsYXlNcyk7XG4gIH1cblxuICB0b2dnbGVBbmltYWwoYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVmlldyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8ICF0aGlzLmNhblBsYXlDdXJyZW50VHVybigpIHx8IHRoaXMuYm90VGhpbmtpbmcoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnNlbGVjdGVkQW5pbWFsKCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQoY3VycmVudCA9PT0gYW5pbWFsLnR5cGUgPyB1bmRlZmluZWQgOiBhbmltYWwudHlwZSk7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUGllY2VJZCgpKSB7XG4gICAgICBjb25zdCBmaXJzdFBpZWNlID0gdGhpcy5nYW1lKCkucGllY2VzLmZpbmQoXG4gICAgICAgIChwaWVjZSkgPT4gIXBpZWNlLmNhcHR1cmVkICYmIHBpZWNlLmNvbG9yID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybixcbiAgICAgICk7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQoZmlyc3RQaWVjZT8uaWQpO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvLnNpbW9uUGFkKGFuaW1hbC50b25lKTtcbiAgfVxuXG4gIHBpZWNlQXQocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogQ2hlc3NpbWFsc1BpZWNlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQodGhpcy5nYW1lKCksIHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc0RhcmtDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAocm93ICsgY29sKSAlIDIgPT09IDE7XG4gIH1cblxuICBpc1NlbGVjdGVkQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBwaWVjZSA9IHRoaXMucGllY2VBdChyb3csIGNvbCk7XG4gICAgcmV0dXJuICEhcGllY2UgJiYgcGllY2UuaWQgPT09IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gIH1cblxuICBpc0xlZ2FsQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sZWdhbE1vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNDYXB0dXJlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXB0dXJlTW92ZUtleXMoKS5oYXMocG9zaXRpb25LZXkoeyByb3csIGNvbCB9KSk7XG4gIH1cblxuICBpc0xhc3RNb3ZlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBsYXN0TW92ZSA9IHRoaXMuZ2FtZSgpLmxhc3RNb3ZlO1xuICAgIHJldHVybiAhdGhpcy5zZWxlY3RlZFBpZWNlSWQoKSAmJiAhIWxhc3RNb3ZlICYmIHBvc2l0aW9uS2V5KGxhc3RNb3ZlLnRvKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzTW92aW5nU291cmNlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBtb3ZpbmcgPSB0aGlzLm1vdmluZ1BpZWNlKCk7XG4gICAgaWYgKCFtb3ZpbmcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5Um93SW5kZXgocm93KSA9PT0gbW92aW5nLmZyb21Sb3cgJiYgdGhpcy5kaXNwbGF5Q29sSW5kZXgoY29sKSA9PT0gbW92aW5nLmZyb21Db2w7XG4gIH1cblxuICBpc01vdmVFZmZlY3RDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlciwgYW5pbWFsPzogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICBpZiAoIWVmZmVjdCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhbmltYWwgJiYgZWZmZWN0LmFuaW1hbCAhPT0gYW5pbWFsKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHBvc2l0aW9uS2V5KGVmZmVjdC50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc01vdmVFZmZlY3RTb3VyY2VDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIHJldHVybiAhIWVmZmVjdCAmJiBwb3NpdGlvbktleShlZmZlY3QuZnJvbSkgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc01vdmVFZmZlY3RDYXB0dXJlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICByZXR1cm4gISFlZmZlY3Q/LmNhcHR1cmUgJiYgcG9zaXRpb25LZXkoZWZmZWN0LnRvKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGZpbGVMYWJlbChjb2w6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoNjUgKyBjb2wpO1xuICB9XG5cbiAgcmFua0xhYmVsKHJvdzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5nYW1lKCkuYm9hcmRTaXplIC0gcm93fWA7XG4gIH1cblxuICBzaG93UmFua0xhYmVsKGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNvbCA9PT0gdGhpcy5kaXNwbGF5Q29scygpWzBdO1xuICB9XG5cbiAgc2hvd0ZpbGVMYWJlbChyb3c6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmRpc3BsYXlSb3dzKCk7XG4gICAgcmV0dXJuIHJvdyA9PT0gcm93c1tyb3dzLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgcGxheWVyTGFiZWwoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbG9yID09PSAnd2hpdGUnID8gdGhpcy50KCdjaGVzc2ltYWxzV2hpdGUnKSA6IHRoaXMudCgnY2hlc3NpbWFsc0JsYWNrJyk7XG4gIH1cblxuICBtb2RlQ2hpcExhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JyA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZScpO1xuICAgIH1cbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgaWYgKHJvbGUgPT09ICd3YWl0aW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVdhaXRpbmcnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGVuZGluZycpO1xuICAgIGlmIChyb2xlID09PSAnc3BlY3RhdG9yJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1NwZWN0YXRvcicpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVQbGF5ZXInKTtcbiAgfVxuXG4gIHR1cm5UaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgJiYgZ2FtZS5jdXJyZW50VHVybiA9PT0gQ0hFU1NJTUFMU19CT1RfQ09MT1IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdFRoaW5raW5nVGl0bGUnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRUdXJuVGl0bGUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSBnYW1lLmN1cnJlbnRUdXJuKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm4nKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ3VycmVudFR1cm4nKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGxheWVyTGFiZWwoZ2FtZS5jdXJyZW50VHVybikpO1xuICB9XG5cbiAgbm9ybWFsaXplR2FtZUlkKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgY29weU9ubGluZUxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUuc2hhcmVVcmwodGhpcy5nYW1lKCkuaWQsIHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCkpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkPy53cml0ZVRleHQodXJsKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc0xpbmtDb3BpZWQnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDIyMDAsIHBvc2l0aW9uOiAndG9wJyB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2hhcmVPbmxpbmVMaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkLCB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKTtcbiAgICBpZiAobmF2aWdhdG9yLnNoYXJlKSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2hhcmUoeyB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzVGl0bGUnKSwgdGV4dDogdGhpcy50KCdjaGVzc2ltYWxzU2hhcmVUZXh0JyksIHVybCB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5jb3B5T25saW5lTGluaygpO1xuICB9XG5cbiAgYXN5bmMgc2hhcmVQcm9qZWN0aW9uTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLm9ubGluZS5wcm9qZWN0aW9uU2hhcmVVcmwodGhpcy5nYW1lKCkuaWQsIHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCkpO1xuICAgIGlmIChuYXZpZ2F0b3Iuc2hhcmUpIHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5zaGFyZSh7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQcm9qZWN0aW9uVGl0bGUnKSxcbiAgICAgICAgdGV4dDogdGhpcy50KCdjaGVzc2ltYWxzUHJvamVjdGlvblNoYXJlVGV4dCcpLFxuICAgICAgICB1cmwsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQ/LndyaXRlVGV4dCh1cmwpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzUHJvamVjdGlvbkxpbmtDb3BpZWQnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDIyMDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBjYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCk7XG4gICAgcmV0dXJuICEhdWlkXG4gICAgICAmJiBnYW1lLm1vZGUgPT09ICdvbmxpbmUnXG4gICAgICAmJiBnYW1lLnN0YXR1cyA9PT0gJ3dhaXRpbmcnXG4gICAgICAmJiBnYW1lLm9ubGluZT8ubG9iYnk/LnVpZCA9PT0gdWlkXG4gICAgICAmJiAhIWdhbWUub25saW5lLnBlbmRpbmdHdWVzdDtcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q/Lm5hbWUgPz8gdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpO1xuICB9XG5cbiAgd2FpdGluZ1RpdGxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdFRpdGxlJyk7XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2JieUd1ZXN0V2FpdGluZ1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUaXRsZScpO1xuICB9XG5cbiAgd2FpdGluZ0JvZHkoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0Qm9keScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wZW5kaW5nR3Vlc3ROYW1lKCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0xvYmJ5R3Vlc3RXYWl0aW5nQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nQm9keScpO1xuICB9XG5cbiAgYXN5bmMgYWNjZXB0T25saW5lR3Vlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSByZXR1cm47XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdhY2NlcHQnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5hY2NlcHRHdWVzdCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNHdWVzdEFjY2VwdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gYWNjZXB0IGd1ZXN0IGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlamVjdE9ubGluZUd1ZXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkgcmV0dXJuO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgncmVqZWN0Jyk7XG4gICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUucmVqZWN0R3Vlc3QodGhpcy5nYW1lKCkuaWQpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzR3Vlc3RSZWplY3RlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy53YXJuaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIHJlamVjdCBndWVzdCBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvcGVuSGlzdG9yeUdhbWUoZW50cnk6IENoZXNzaW1hbHNIaXN0b3J5RW50cnkpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZW50cnkuZ2FtZUlkKSk7XG4gIH1cblxuICBoaXN0b3J5T3V0Y29tZUxhYmVsKGVudHJ5OiBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBvdXRjb21lS2V5ID0gYGNoZXNzaW1hbHNIaXN0b3J5JHtlbnRyeS5vdXRjb21lXG4gICAgICAuc3BsaXQoJ18nKVxuICAgICAgLm1hcCgocGFydCkgPT4gdGhpcy5jYXBpdGFsaXplKHBhcnQpKVxuICAgICAgLmpvaW4oJycpfWA7XG4gICAgY29uc3Qgb3Bwb25lbnQgPSBlbnRyeS5vcHBvbmVudE5hbWVcbiAgICAgID8gYCDCtyAke3RoaXMudCgnY2hlc3NpbWFsc0hpc3RvcnlBZ2FpbnN0JykucmVwbGFjZSgne3BsYXllcn0nLCBlbnRyeS5vcHBvbmVudE5hbWUpfWBcbiAgICAgIDogJyc7XG4gICAgcmV0dXJuIGAke3RoaXMudChvdXRjb21lS2V5KX0ke29wcG9uZW50fWA7XG4gIH1cblxuICBhc3luYyByZXF1ZXN0T25saW5lUmVtYXRjaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5nYW1lKCkubW9kZSAhPT0gJ29ubGluZScpIHJldHVybjtcbiAgICBpZiAodGhpcy5yZW1hdGNoU3RhdGUoKSA9PT0gJ3JlcXVlc3RlZCcgfHwgdGhpcy5yZW1hdGNoTG9hZGluZygpKSByZXR1cm47XG4gICAgY29uc3QgYWNjZXB0aW5nID0gdGhpcy5yZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJztcbiAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUucmVxdWVzdFJlbWF0Y2godGhpcy5nYW1lKCkuaWQpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KGFjY2VwdGluZyA/ICdjaGVzc2ltYWxzUmVtYXRjaEFjY2VwdGVkJyA6ICdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZFRvYXN0JyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAyNDAwLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5yZW1hdGNoTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcXVldWVIaXN0b3J5V2F0Y2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKTtcbiAgICB0aGlzLmhpc3RvcnlXYXRjaFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLndhdGNoT25saW5lSGlzdG9yeSgpLCAyMjApO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaE9ubGluZUhpc3RvcnkoKTogdm9pZCB7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmUuY3VycmVudFVpZDtcbiAgICBpZiAoIXVpZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmhpc3RvcnlVaWQgPT09IHVpZCAmJiB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24pIHJldHVybjtcbiAgICB0aGlzLmhpc3RvcnlVaWQgPSB1aWQ7XG4gICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbiA9IHRoaXMub25saW5lLndhdGNoSGlzdG9yeSgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoaGlzdG9yeSkgPT4gdGhpcy5vbmxpbmVIaXN0b3J5LnNldChoaXN0b3J5KSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLm9ubGluZUhpc3Rvcnkuc2V0KFtdKSxcbiAgICB9KTtcbiAgfVxuXG4gIHVubG9ja2VkTGFiZWwoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLnBsYXllcnNbY29sb3JdLnBvd2VyVW5sb2NrZWQgPyB0aGlzLnQoJ2NoZXNzaW1hbHNVbmxvY2tlZCcpIDogdGhpcy50KCdjaGVzc2ltYWxzTG9ja2VkJyk7XG4gIH1cblxuICBsb2NhbE1vZGVMYWJlbChtb2RlOiBDaGVzc2ltYWxzTG9jYWxNb2RlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9kZSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2UnKTtcbiAgfVxuXG4gIGxvY2FsTW9kZURlc2NyaXB0aW9uKG1vZGU6IENoZXNzaW1hbHNMb2NhbE1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnYm90JyA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGVCb2R5JykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2VCb2R5Jyk7XG4gIH1cblxuICBib3REaWZmaWN1bHR5TGFiZWwoZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkpOiBzdHJpbmcge1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnZWFzeScpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RFYXN5Jyk7XG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICdoYXJkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdEhhcmQnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90Tm9ybWFsJyk7XG4gIH1cblxuICBhbmltYWxMYWJlbCh0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc0FuaW1hbCR7dGhpcy5jYXBpdGFsaXplKHR5cGUpfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Um93SW5kZXgocm93OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gdGhpcy5nYW1lKCkuYm9hcmRTaXplIC0gMSAtIHJvdyA6IHJvdztcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheUNvbEluZGV4KGNvbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZSAtIDEgLSBjb2wgOiBjb2w7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uID0gdGhpcy5vbmxpbmUud2F0Y2hHYW1lKGdhbWVJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5nYW1lKCk7XG4gICAgICAgIHRoaXMuZ2FtZS5zZXQoc3RhdGUpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQm9hcmRTaXplLnNldChzdGF0ZS5ib2FyZFNpemUpO1xuICAgICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNQZW5kaW5nVWlkID0gcHJldmlvdXMuaWQgPT09IHN0YXRlLmlkID8gcHJldmlvdXMub25saW5lPy5wZW5kaW5nR3Vlc3Q/LnVpZCA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgbmV4dFBlbmRpbmdVaWQgPSBzdGF0ZS5vbmxpbmU/LnBlbmRpbmdHdWVzdD8udWlkO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc3RhdGUuc3RhdHVzID09PSAnd2FpdGluZycgJiZcbiAgICAgICAgICBzdGF0ZS5vbmxpbmU/LmxvYmJ5Py51aWQgPT09IHRoaXMub25saW5lLmN1cnJlbnRVaWQgJiZcbiAgICAgICAgICAhIW5leHRQZW5kaW5nVWlkICYmXG4gICAgICAgICAgbmV4dFBlbmRpbmdVaWQgIT09IHByZXZpb3VzUGVuZGluZ1VpZFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNKb2luUmVxdWVzdCgpO1xuICAgICAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJldmlvdXMuY3VycmVudFR1cm4gIT09IHN0YXRlLmN1cnJlbnRUdXJuICYmXG4gICAgICAgICAgc3RhdGUuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnICYmXG4gICAgICAgICAgIXRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWMoc3RhdGUpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMudHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIHByZXZpb3VzLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykge1xuICAgICAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1ZpY3RvcnkoKTtcbiAgICAgICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1pbmlHYW1lc0Jhc2VSb3V0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdXRlID0gKHRoaXMubWluaUdhbWVzUm91dGUgfHwgJy9taW5pLWdhbWVzJykudHJpbSgpO1xuICAgIHJldHVybiBgLyR7cm91dGUucmVwbGFjZSgvXlxcLyt8XFwvKyQvZywgJycpIHx8ICdtaW5pLWdhbWVzJ31gO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKX0vY2hlc3NpbWFscy8ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQoZ2FtZUlkKSl9YDtcbiAgfVxuXG4gIHByaXZhdGUgY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKTtcbiAgfVxufVxuIl19
2233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFxQixTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLG9CQUFvQixHQUNyQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWExRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUdwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0Is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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnakJUO3dEQStsRWlDLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkE2RVgsWUFBWTtzQkFBeEIsS0FBSztnQkFRRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBhcHBseUNoZXNzaW1hbHNNb3ZlLFxuICBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZSxcbiAgY3JlYXRlQ2hlc3NpbWFsc0dhbWUsXG4gIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzLFxuICBnZXRDaGVzc2ltYWxzUGllY2VBdCxcbiAgcG9zaXRpb25LZXksXG4gIHJlc2lnbkNoZXNzaW1hbHNHYW1lLFxufSBmcm9tICcuL2NoZXNzaW1hbHMtZW5naW5lJztcbmltcG9ydCB7IENoZXNzaW1hbHNPbmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLW9ubGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0hpc3RvcnlFbnRyeSxcbiAgQ2hlc3NpbWFsc0xvY2FsTW9kZSxcbiAgQ2hlc3NpbWFsc01vdmUsXG4gIENoZXNzaW1hbHNQaWVjZSxcbiAgQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuICBDaGVzc2ltYWxzUG9zaXRpb24sXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTW9kYWxMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbW9kYWwtbGF5b3V0L21vZGFsLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFwdGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9oYXB0aWNzL2hhcHRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9taW5pLWdhbWUtcGxheWVyLXByb2ZpbGUuc2VydmljZSc7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzQW5pbWFsVmlldyB7XG4gIHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBhc3NldFNyYzogc3RyaW5nO1xuICB0b25lOiBudW1iZXI7XG59XG5cbnR5cGUgQ2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gPSAncmVzdGFydCcgfCAnbW9kZScgfCAnZ2FtZXMnIHwgJ3Jlc2lnbic7XG50eXBlIENoZXNzaW1hbHNSZW1hdGNoU3RhdGUgPSAnbm9uZScgfCAncmVxdWVzdGVkJyB8ICdpbmNvbWluZyc7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHtcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgZnJvbVJvdzogbnVtYmVyO1xuICBmcm9tQ29sOiBudW1iZXI7XG4gIHRvUm93OiBudW1iZXI7XG4gIHRvQ29sOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92ZUVmZmVjdFZpZXcge1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgZnJvbTogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICB0bzogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVUcmFpbFZpZXcge1xuICB4OiBzdHJpbmc7XG4gIHk6IHN0cmluZztcbiAgbGVuZ3RoOiBzdHJpbmc7XG4gIGFuZ2xlOiBzdHJpbmc7XG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5jb25zdCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TID0gMzYwO1xuY29uc3QgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMgPSA2MjA7XG5jb25zdCBDSEVTU0lNQUxTX0JPVF9DT0xPUjogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gJ2JsYWNrJztcblxuY29uc3QgQU5JTUFMUzogQ2hlc3NpbWFsc0FuaW1hbFZpZXdbXSA9IFtcbiAgeyB0eXBlOiAnZWFnbGUnLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2VhZ2xlLmpwZycsIHRvbmU6IDY1OS4yNSB9LFxuICB7IHR5cGU6ICdidWxsJywgYXNzZXRTcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9idWxsLmpwZycsIHRvbmU6IDI2MS42MyB9LFxuICB7IHR5cGU6ICdrYW5nYXJvbycsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMva2FuZ2Fyb28uanBnJywgdG9uZTogNTIzLjI1IH0sXG4gIHsgdHlwZTogJ2xpb24nLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2xpb24uanBnJywgdG9uZTogMzkyIH0sXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hlc3NpbWFscy1nYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbk1vZGFsLCBNb2RhbExheW91dENvbXBvbmVudCwgVXNlckF2YXRhckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1haW4gY2xhc3M9XCJjaGVzc2ltYWxzLXNoZWxsXCIgW2NsYXNzLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb25dPVwicHJvamVjdGlvbk1vZGVcIj5cbiAgICAgIEBpZiAoc2NyZWVuKCkgPT09ICdob21lJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWhlcm9fX2xvZ29cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvbG9nby5qcGdcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoMT57eyB0KCdjaGVzc2ltYWxzVGl0bGUnKSB9fTwvaDE+XG4gICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1N1YnRpdGxlJykgfX08L3A+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcGFuZWxcIj5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtaG93dG9cIj5cbiAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzSG93VG9UaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIb3dUb0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWxlYXJuLW1vcmVcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5SdWxlc01vZGFsKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnbGVhcm5Nb3JlJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNpemVcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvYXJkU2l6ZScpXCI+XG4gICAgICAgICAgICBAZm9yIChzaXplIG9mIGJvYXJkU2l6ZXM7IHRyYWNrIHNpemUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvYXJkU2l6ZSgpID09PSBzaXplXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRCb2FyZFNpemUuc2V0KHNpemUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2l6ZSB9fXh7eyBzaXplIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHNpemUgPT09IDYgPyB0KCdjaGVzc2ltYWxzU2l6ZVNtYWxsJykgOiB0KCdjaGVzc2ltYWxzU2l6ZUxhcmdlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW1vZGVcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc01vZGVUaXRsZScpXCI+XG4gICAgICAgICAgICBAZm9yIChtb2RlIG9mIGxvY2FsTW9kZXM7IHRyYWNrIG1vZGUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZExvY2FsTW9kZSgpID09PSBtb2RlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRMb2NhbE1vZGUuc2V0KG1vZGUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbG9jYWxNb2RlTGFiZWwobW9kZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgbG9jYWxNb2RlRGVzY3JpcHRpb24obW9kZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWRpZmZpY3VsdHlcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvdERpZmZpY3VsdHknKVwiPlxuICAgICAgICAgICAgICBAZm9yIChkaWZmaWN1bHR5IG9mIGJvdERpZmZpY3VsdGllczsgdHJhY2sgZGlmZmljdWx0eSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkQm90RGlmZmljdWx0eSgpID09PSBkaWZmaWN1bHR5XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGRpZmZpY3VsdHkpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBib3REaWZmaWN1bHR5TGFiZWwoZGlmZmljdWx0eSkgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRHYW1lKClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTdGFydCcpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc09ubGluZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzT25saW5lQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKG9ubGluZUVycm9yKCkpIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fZXJyb3JcIj57eyBvbmxpbmVFcnJvcigpIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChvbmxpbmVMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVMb2FkaW5nJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cIm9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZU9ubGluZUdhbWUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJykge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lSGludCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19qb2luXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmVUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzSm9pbkNvZGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvbmxpbmVKb2luQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0KCdjaGVzc2ltYWxzSm9pbkNvZGVQbGFjZWhvbGRlcicpXCJcbiAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbmxpbmVKb2luQ29kZS5zZXQobm9ybWFsaXplR2FtZUlkKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnam9pbidcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2pvaW4nXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpIHx8ICFvbmxpbmVKb2luQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiam9pbk9ubGluZUdhbWVCeUNvZGUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnam9pbicpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIEBpZiAob25saW5lSGlzdG9yeSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZSBjaGVzc2ltYWxzLWhpc3RvcnlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0hpc3RvcnlUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5Qm9keScpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9fbGlzdFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIG9ubGluZUhpc3RvcnkoKTsgdHJhY2sgZW50cnkuZ2FtZUlkKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faXRlbVwiIChjbGljayk9XCJvcGVuSGlzdG9yeUdhbWUoZW50cnkpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZW50cnkuZ2FtZUlkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGhpc3RvcnlPdXRjb21lTGFiZWwoZW50cnkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgdCgnY2hlc3NpbWFsc0hpc3RvcnlPcGVuJykgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtZ2FtZVwiPlxuICAgICAgICAgIEBpZiAocmVzdW1lU3BsYXNoVmlzaWJsZSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj7imZ88L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaFRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay10dXJuXT1cImdhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkX19jb3B5XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXBcIj5cbiAgICAgICAgICAgICAgICB7eyBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnID8gdCgnY2hlc3NpbWFsc0ZpbmlzaGVkQ2hpcCcpIDogbW9kZUNoaXBMYWJlbCgpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnID8gd2luVGl0bGUoKSA6IHR1cm5UaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgICAgICAgICAgIDxwPnt7IHdpbkJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcFwiPlxuICAgICAgICAgICAgICBAaWYgKGxvZ2dlZEluVXNlcigpKSB7XG4gICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwibG9nZ2VkUGxheWVyQXZhdGFyUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgbG9jYWxQbGF5ZXJBdmF0YXIoKSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQobG9nZ2VkSW5Vc2VyKCkgPyAnbG9nZ2VkUGxheWVyJyA6ICdsb2NhbFBsYXllcicpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbG9nZ2VkUGxheWVyTmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgQGlmIChsb2dnZWRQbGF5ZXJIYW5kbGUoKSkge1xuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxvZ2dlZFBsYXllckhhbmRsZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgQGlmIChnYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgZ2FtZSgpLnN0YXR1cyA9PT0gJ3dhaXRpbmcnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lIGNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgyPnt7IHdhaXRpbmdUaXRsZSgpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8cD57eyB3YWl0aW5nQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChjYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5hdmF0YXIgPz8gJ+KZn++4jycgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzSm9pblJlcXVlc3RQbGF5ZXInKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcGVuZGluZ0d1ZXN0TmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1nYW1lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0dhbWVDb2RlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLmlkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBpZiAoY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdyZWplY3QnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWplY3RPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1JlamVjdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdhY2NlcHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY2NlcHRPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0FjY2VwdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb3B5T25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDb3B5TGluaycpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlT25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTaGFyZUxpbmsnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zdGF0dXNcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzTW92ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLm1vdmVDb3VudCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHQoJ2NoZXNzaW1hbHNXaW5uZXInKSA6IHQoJ2NoZXNzaW1hbHNQb3dlcnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHBsYXllckxhYmVsKGdhbWUoKS53aW5uZXIgPz8gJ3doaXRlJykgOiB1bmxvY2tlZExhYmVsKGdhbWUoKS5jdXJyZW50VHVybikgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB0KCdjaGVzc2ltYWxzUmVzdWx0JykgOiB0KCdjaGVzc2ltYWxzUml2YWwnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHdpblJlYXNvbkxhYmVsKCkgOiBwbGF5ZXJMYWJlbChnYW1lKCkuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAnYmxhY2snIDogJ3doaXRlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWFyZW5hXCI+XG4gICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAjYm9hcmRBbmNob3JcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLXdyYXBcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1vcmllbnRpbmddPVwiaXNCb2FyZE9yaWVudGluZygpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXN5bmNpbmddPVwibW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWJvYXJkLXNpemVdPVwiZ2FtZSgpLmJvYXJkU2l6ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLWZyYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay12aWV3XT1cImdhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb2FyZCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheVJvd3MoKTsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkaXNwbGF5Q29scygpOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZGFyay1jZWxsXT1cImlzRGFya0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJpc1NlbGVjdGVkQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWxlZ2FsXT1cImlzTGVnYWxDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY2FwdHVyZV09XCJpc0NhcHR1cmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbGFzdF09XCJpc0xhc3RNb3ZlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLW1vdmluZy1zb3VyY2VdPVwiaXNNb3ZpbmdTb3VyY2VDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLW1vdmUtZWZmZWN0XT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtc291cmNlLWVmZmVjdF09XCJpc01vdmVFZmZlY3RTb3VyY2VDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLWNhcHR1cmUtZWZmZWN0XT1cImlzTW92ZUVmZmVjdENhcHR1cmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWVhZ2xlXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdlYWdsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sLCAnYnVsbCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3Qta2FuZ2Fyb29dPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2thbmdhcm9vJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1saW9uXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdsaW9uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb2plY3Rpb25Nb2RlIHx8IGdhbWUoKS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHwgIWNhblBsYXlDdXJyZW50VHVybigpIHx8ICEhbW92aW5nUGllY2UoKSB8fCBib3RUaGlua2luZygpIHx8IG1vdmVTeW5jaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENlbGwoeyByb3csIGNvbCB9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93UmFua0xhYmVsKGNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSBjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJhbmtMYWJlbChyb3cpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0ZpbGVMYWJlbChyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUgY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWxlTGFiZWwoY29sKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBpZWNlQXQocm93LCBjb2wpOyBhcyBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWJsYWNrXT1cInBpZWNlLmNvbG9yID09PSAnYmxhY2snXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYXllckxhYmVsKHBpZWNlLmNvbG9yKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX3NpZGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19oZWFkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fbmVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2Jhc2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGlzTGVnYWxDZWxsKHJvdywgY29sKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdGFyZ2V0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VudGVyLWxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmVUcmFpbCgpOyBhcyB0cmFpbCkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlci10cmFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNhcHR1cmVdPVwidHJhaWwuY2FwdHVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1lYWdsZV09XCJ0cmFpbC5hbmltYWwgPT09ICdlYWdsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJ0cmFpbC5hbmltYWwgPT09ICdidWxsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJ0cmFpbC5hbmltYWwgPT09ICdrYW5nYXJvbydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtbGlvbl09XCJ0cmFpbC5hbmltYWwgPT09ICdsaW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhaWwteF09XCJ0cmFpbC54XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC15XT1cInRyYWlsLnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWxlbmd0aF09XCJ0cmFpbC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWFuZ2xlXT1cInRyYWlsLmFuZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmluZ1BpZWNlKCk7IGFzIG1vdmluZykge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1tb3ZpbmctcGllY2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWZyb20tcm93XT1cIm1vdmluZy5mcm9tUm93XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1mcm9tLWNvbF09XCJtb3ZpbmcuZnJvbUNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tcm93XT1cIm1vdmluZy50b1Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tY29sXT1cIm1vdmluZy50b0NvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiIFtjbGFzcy5pcy1ibGFja109XCJtb3ZpbmcuY29sb3IgPT09ICdibGFjaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fc2lkZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9faGVhZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19uZWNrXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19iYXNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzR2FtZU92ZXInKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHdpblRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbW92ZXNTdW1tYXJ5KCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgIEBpZiAob25saW5lUm9sZSgpICE9PSAnc3BlY3RhdG9yJyAmJiAhcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXJzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbG9ja2VkXT1cIiFjdXJyZW50UGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXJlYWR5XT1cImN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdW5sb2NrLXB1bHNlXT1cInBvd2VyVW5sb2NrUHVsc2UoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzQW5pbWFsQ2FyZHMnKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc1VubG9ja2VkJykgOiB0KCdjaGVzc2ltYWxzTG9ja2VkJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IGN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc0NhcmRzUmVhZHknKSA6IHQoJ2NoZXNzaW1hbHNDYXJkc0xvY2tlZCcpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNhcmRzXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChhbmltYWwgb2YgYW5pbWFsczsgdHJhY2sgYW5pbWFsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEFuaW1hbCgpID09PSBhbmltYWwudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVzZWRdPVwiY3VycmVudFBsYXllcigpLmNhcmRzW2FuaW1hbC50eXBlXS51c2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkIHx8IGN1cnJlbnRQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZCB8fCBnYW1lKCkuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8ICFjYW5QbGF5Q3VycmVudFR1cm4oKSB8fCAhIW1vdmluZ1BpZWNlKClcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbmltYWwoYW5pbWFsKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYW5pbWFsLWZhY2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhbmltYWwuYXNzZXRTcmNcIiBbYWx0XT1cImFuaW1hbExhYmVsKGFuaW1hbC50eXBlKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgYW5pbWFsTGFiZWwoYW5pbWFsLnR5cGUpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdWx0XCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgd2luVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB3aW5Cb2R5KCkgfX08L3A+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChyZW1hdGNoU3RhdGUoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXNcIiBbY2xhc3MuaXMtaW5jb21pbmddPVwicmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgcmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcbiAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoZXNzaW1hbHNSZW1hdGNoSW5jb21pbmdUaXRsZScpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZFRpdGxlJylcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICByZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJ1xuICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hlc3NpbWFsc1JlbWF0Y2hJbmNvbWluZ0JvZHknKVxuICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hlc3NpbWFsc1JlbWF0Y2hSZXF1ZXN0ZWRCb2R5JylcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1hY3Rpb25zXCI+XG4gICAgICAgICAgICBAaWYgKGdhbWUoKS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0UmVzaWduKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVzaWduJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChnYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgb25saW5lUm9sZSgpICE9PSAnc3BlY3RhdG9yJykge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlbWF0Y2hTdGF0ZSgpID09PSAncmVxdWVzdGVkJyB8fCByZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVxdWVzdE9ubGluZVJlbWF0Y2goKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgcmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzQWNjZXB0UmVtYXRjaCcpXG4gICAgICAgICAgICAgICAgICAgIDogcmVtYXRjaFN0YXRlKCkgPT09ICdyZXF1ZXN0ZWQnXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZEFjdGlvbicpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGVzc2ltYWxzUmVtYXRjaCcpXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGdhbWUoKS5tb2RlICE9PSAnb25saW5lJykge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXN0YXJ0R2FtZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgncmVzdGFydCcpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChnYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgZ2FtZSgpLmlkICYmICFwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlUHJvamVjdGlvbkxpbmsoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTaGFyZVByb2plY3Rpb24nKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbmdlTW9kZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuICAgIDwvbWFpbj5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiaXNSdWxlc01vZGFsT3BlbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNsb3NlUnVsZXNNb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cInQoJ2NoZXNzaW1hbHNSdWxlc1RpdGxlJylcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJ0KCdjaGVzc2ltYWxzUnVsZXNTdWJ0aXRsZScpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbZm9vdGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VSdWxlc01vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+MTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVHb2FsVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVHb2FsQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjI8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTW92ZVRpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTW92ZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj4zPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZVBvd2Vyc1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlUG93ZXJzQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjQ8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlQ2FyZHNUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgdCgnY2hlc3NpbWFsc1J1bGVFYWdsZScpIH19PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUJ1bGwnKSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgdCgnY2hlc3NpbWFsc1J1bGVLYW5nYXJvbycpIH19PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUxpb24nKSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj41PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUxpbWl0c1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGltaXRzQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvdmFsLW1vZGFsLWxheW91dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cIiEhY29uZmlybUFjdGlvbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNsb3NlQ29uZmlybU1vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwiY29uZmlybVRpdGxlKClcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJjb25maXJtQm9keSgpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbYWN0aW9uc109XCJjb25maXJtQWN0aW9ucygpXCJcbiAgICAgICAgICBhY3Rpb25zQWxpZ249XCJlbmRcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZUNvbmZpcm1Nb2RhbCgpXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiY29uZmlybVBlbmRpbmdBY3Rpb24oJGV2ZW50LmFjdGlvbj8udG9rZW4pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBhbmVsOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogI2ZmZmFmMTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogcmdiYSg0NiwgNTgsIDQ0LCAwLjE4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6ICMyZTNhMmM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tdXRlZDogIzUxNjQzZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMTExLCAxMjIsIDYwLCAwLjEpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlbGVjdGVkOiAjMzdmMjhhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiOiA1NSwgMjQyLCAxMzg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlLXJnYjogdmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmU6ICMxZmNkYjM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYjogMzEsIDIwNSwgMTc5O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdDogIzhjNmI0ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3QtcmdiOiAxNDAsIDEwNywgNzk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0OiAjZjZmOWVkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1kYXJrOiAjOWViMjVmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtZmlsbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNpZGU6ICNmM2VhZGI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1saW5lOiByZ2JhKDgyLCA2NSwgNDYsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2hhZG93OlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSg4NCwgNjIsIDM0LCAwLjI2KSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDJweCAzcHggcmdiYSg4NCwgNjIsIDM0LCAwLjE0KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1maWxsOiAjMjQyOTM2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2lkZTogIzE3MWIyNTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWxpbmU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAycHggM3B4IHJnYmEoMCwgMCwgMCwgMC4yNCkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtZ29sZDogI2M3OWE0MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQtZGFyazogIzhhNWYyMjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJnOiAjZmZmZGY3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6IGdyYXlzY2FsZSgwLjIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjcyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMTI1cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oMTAwJSwgNjByZW0pO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogI2ZkZjhlZTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogIzE3MjExNjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0MiwgMjMwLCAyMTMsIDAuMTgpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiAjMmUzYTJjO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tdXRlZDogIzUyNjIzODtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMjIpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5OiAjMmU2ZjNlO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYjogNDYsIDExMSwgNjI7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeTogI2E4YTA2YTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYjogMTY4LCAxNjAsIDEwNjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1za3ktcmdiOiAxOTIsIDEwNiwgNjE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lOiAjOGU5MzYyO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1saWdodDogI2Y2ZjllZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1kYXJrOiAjOWViMjVmO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCB7XG4gICAgICAgIG9yZGVyOiAwO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDQyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCksIHRyYW5zcGFyZW50IDIycmVtKSxcbiAgICAgICAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCkgOTIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwLjlyZW0pO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogNC43NXJlbTtcbiAgICAgICAgaGVpZ2h0OiA0Ljc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjZyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBmb250LXNpemU6IDIuMjVyZW07XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMS4yNXJlbSAzcmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMzIpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcmVzdW1lLXB1bHNlIDEuMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2ggc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjU1cmVtLCA1dncsIDIuNHJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoIHAge1xuICAgICAgICBtYXgtd2lkdGg6IDI0cmVtO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXJlc3VtZS1wdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMjVyZW0pIHNjYWxlKDEuMDQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1zcGluIHtcbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLXNoZWxsLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1zaGVsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogI2ZkZjhlZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN1cmZhY2U6ICMxNzIxMTY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoMjQ2LCAyMjcsIDIxMywgMC4yOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiAjMmUzYTJjO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICM1MjYyMzg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zb2Z0OiByZ2JhKDExMSwgMTIyLCA2MCwgMC4yMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5OiAjMmU2ZjNlO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeTogI2E4YTA2YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3k6ICNjMDZhM2Q7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3ktcmdiOiAxOTIsIDEwNiwgNjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lLXJnYjogMTQyLCAxNDcsIDk4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1saWdodDogI2Y2ZjllZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtZGFyazogIzllYjI1ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvYXJkLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjM0KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmU6ICM2NmYyZDc7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYjogMTAyLCAyNDIsIDIxNTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3Q6ICNjZGJlOWI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0LXJnYjogMjA1LCAxOTAsIDE1NTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWZpbGw6ICNmZmZhZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaWRlOiAjZjBlNWQ0O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtbGluZTogcmdiYSg4MiwgNjUsIDQ2LCAwLjEyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoODQsIDYyLCAzNCwgMC4yNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAycHggM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1maWxsOiAjMjAyNjMzO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2lkZTogIzExMTYyMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWxpbmU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgM3B4IDRweCByZ2JhKDAsIDAsIDAsIDAuNDQpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJnOiAjZmZmZGY3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDAsIDAsIDAsIDAuMjIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6XG4gICAgICAgICAgZ3JheXNjYWxlKDAuMzIpXG4gICAgICAgICAgc2F0dXJhdGUoMC43Mik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtaW1nLW9wYWNpdHk6IDAuNTg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm8ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS43NXJlbTtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMS4yNXJlbSwgNXZ3LCAyLjVyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKSwgdHJhbnNwYXJlbnQgMjAlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZmRmOGVlIDAlLCAjZmZmZmZmIDQwJSwgI2VkZjNkZiAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvX19sb2dvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IG1pbigyMnJlbSwgODJ2dyk7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjM1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMXJlbSAyLjVyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjEpLFxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCByZ2JhKDQ2LCA1OCwgNDQsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvX19sb2dvIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMnJlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVybyBoMSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjRyZW0sIDl2dywgNC41cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDAuOTU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIHAsXG4gICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYW5lbCxcbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS42MjVyZW07XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDFyZW0sIDR2dywgMS41cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nIHtcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4zNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBoMixcbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgaDIge1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fY3JlYXRlLFxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4gPiBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fZXJyb3Ige1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nIHNwYW4ge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXI6IDAuMTVyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc3BpbiAwLjc1cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuM3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjg1cmVtIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZS1jb2RlIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4zNXJlbSwgNnZ3LCAycmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3Rvcnkge1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19saXN0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gZW0ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wZW5kaW5nLXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZm9udC1zaXplOiAxLjA1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCB7XG4gICAgICAgIG9yZGVyOiAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNzVyZW07XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTUlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYiksIDAuMSkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtYmxhY2stdHVybiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjI4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMiksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjE0KSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1maW5pc2hlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuNDIpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTUlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM1KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xOCksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWZpbmlzaGVkIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZ2FwOiAwLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4ycmVtIDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBzdHJvbmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDFyZW0sIDMuNXZ3LCAxLjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgcCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDEwcmVtO1xuICAgICAgICBtYXgtd2lkdGg6IG1pbigxN3JlbSwgNDIlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNTVyZW0gMC4zcmVtIDAuMzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWxpZ2h0LXJnYiwgMjQ0LCAyNDUsIDI0OCksIDAuNzIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGZsZXg6IDAgMCAxLjc1cmVtO1xuICAgICAgICB3aWR0aDogMS43NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4wNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgb3JkZXI6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8sXG4gICAgICAuY2hlc3NpbWFscy10aXAsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cy5pcy1pbmNvbWluZyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMzgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjE0KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gaDIsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWxlYXJuLW1vcmUge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgYnV0dG9uLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjY1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45NXJlbSwgMi41dncsIDEuMnJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAuaXMtb3JpZW50aW5nIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLW9yaWVudC1ib2FyZCAzMjBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLWZpbmlzaGVkIHtcbiAgICAgICAgb3ZlcmZsb3cteDogdmlzaWJsZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICBmbGV4OiAwIDEgNThyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogNThyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOTVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMTYlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA4MiUgNzglLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgyMmRlZywgdHJhbnNwYXJlbnQgMCAzMSUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdG9uZS1yZ2IpLCAwLjAzNSkgMzEuMSUgMzEuMTYlLCB0cmFuc3BhcmVudCAzMS4yNiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHRyYW5zcGFyZW50IDAgNjclLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3RvbmUtcmdiKSwgMC4wMzIpIDY3LjElIDY3LjE2JSwgdHJhbnNwYXJlbnQgNjcuMyUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLFxuICAgICAgICAgIDAgMC44NXJlbSAyLjFyZW0gdmFyKC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLXN5bmNpbmcgLmNoZXNzaW1hbHMtYm9hcmQge1xuICAgICAgICBjdXJzb3I6IHdhaXQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKSA3OCUsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFuayB7XG4gICAgICAgIHRvcDogMC4ycmVtO1xuICAgICAgICBsZWZ0OiAwLjI0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGUge1xuICAgICAgICByaWdodDogMC4yNHJlbTtcbiAgICAgICAgYm90dG9tOiAwLjE4cmVtO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb3JpZW50LWJvYXJkIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDAuMDZyZW0pO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45ODUpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjkyO1xuICAgICAgICAgIGZpbHRlcjogYmx1cigwKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VudGVyLWxpbmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci10b3A6IDAuMDhyZW0gZGFzaGVkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNTYpO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjI0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjYpKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjc2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmlzLWNhcHR1cmUge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQ2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWVhZ2xlIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDEyMCwgMjEwLCAyNTUsIDAuNTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtYnVsbCB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTg4LCAxMzEsIDc2LCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDE4OCwgMTMxLCA3NiwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1rYW5nYXJvbyB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTc0LCAxMjQsIDI1NSwgMC44Nik7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSgxNzQsIDEyNCwgMjU1LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24ge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKDI1NSwgMjIxLCAxMjAsIDAuODgpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMjU1LCAxOTAsIDU2LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwgPiBzcGFuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IHZhcigtLXRyYWlsLXkpO1xuICAgICAgICBsZWZ0OiB2YXIoLS10cmFpbC14KTtcbiAgICAgICAgd2lkdGg6IHZhcigtLXRyYWlsLWxlbmd0aCk7XG4gICAgICAgIGhlaWdodDogMC40NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSA0MiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MikpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHZhcigtLXRyYWlsLWdsb3cpLFxuICAgICAgICAgIDAgMCAxLjQ1cmVtIHZhcigtLXRyYWlsLWdsb3cpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDUwJTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBvd2VyLXRyYWlsIDcyMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1lYWdsZSA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDAuMjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSA0NCUsIHJnYmEoMTIwLCAyMTAsIDI1NSwgMC41OCkpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50IDAgMC43cmVtLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjYpIDAuN3JlbSAwLjkycmVtKTtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGNoZXNzaW1hbHMtZWFnbGUtdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1idWxsID4gc3BhbiB7XG4gICAgICAgIGhlaWdodDogMC43MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpIDAgMC4xOHJlbSwgdHJhbnNwYXJlbnQgMC4xOHJlbSAwLjQycmVtKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCB2YXIoLS10cmFpbC1jb2xvciksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1idWxsLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3Qta2FuZ2Fyb28gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXItdG9wOiAwLjE2cmVtIGRhc2hlZCB2YXIoLS10cmFpbC1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjhyZW0gdmFyKC0tdHJhaWwtZ2xvdykpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1rYW5nYXJvby10cmFpbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NSkgMCAwLjEycmVtLCB0cmFuc3BhcmVudCAwLjEycmVtIDAuMzRyZW0pO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1saW9uLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcG93ZXItdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC43Mik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWVhZ2xlLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC44Mikgc2tld1goLTEwZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxLjA1KSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1idWxsLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBzY2FsZVkoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAzOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjcpIHNjYWxlWSgxLjE4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKSBzY2FsZVkoMC44Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWthbmdhcm9vLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjRyZW0pIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM0JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuMnJlbSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1saW9uLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMzYlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS40KTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNzYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogODtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzYlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuMjgpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDQ4JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4zKSwgdHJhbnNwYXJlbnQgNDQlKSxcbiAgICAgICAgICByZ2JhKDEzLCAxMCwgMTgsIDAuNzgpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheTo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDIwJSAzMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA3NSUgMjUlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuNjIpIDAgMC4xcmVtLCB0cmFuc3BhcmVudCAwLjEycmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDY4JSA3MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDYpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDM1JSA3OCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MikgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy12aWN0b3J5LXNwYXJrcyAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5ID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzcGFuIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjMycmVtIDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS42NXJlbSwgOHZ3LCAzcmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgMS4yNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Mik7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45cmVtLCAzdncsIDEuMXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy12aWN0b3J5LXNwYXJrcyB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjQ2O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgwLjk4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC45NTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMzVyZW0pIHNjYWxlKDEuMDIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtYmc6IHZhcigtLWNoZXNzaW1hbHMtY2VsbC1saWdodCk7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMjQlIDIyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDc4JSA3NiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdG9uZS1yZ2IpLCAwLjEyKSwgdHJhbnNwYXJlbnQgMjglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMjRkZWcsIHRyYW5zcGFyZW50IDAgMzQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpIDM0LjMlIDM0LjglLCB0cmFuc3BhcmVudCAzNS4xJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzOGRlZywgdHJhbnNwYXJlbnQgMCA3MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdG9uZS1yZ2IpLCAwLjExKSA3MC4yJSA3MC41NSUsIHRyYW5zcGFyZW50IDcwLjglKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICBiYWNrZ3JvdW5kIDE2MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxNjBtcyBlYXNlLFxuICAgICAgICAgIHRyYW5zZm9ybSAxNjBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsOjpiZWZvcmUsXG4gICAgICAuY2hlc3NpbWFscy1jZWxsOjphZnRlciB7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWRhcmstY2VsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtZGFyayk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtc2VsZWN0ZWQge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjI4KSAwIDM2JSwgdHJhbnNwYXJlbnQgNjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkKSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNDIpLFxuICAgICAgICAgIDAgMCAwLjU1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjU2KSxcbiAgICAgICAgICAwIDAgMS41NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbGVnYWw6bm90KC5pcy1jYXB0dXJlKTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAxMyU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJvcmRlcjogbWF4KDJweCwgMS44JSkgc29saWQgdmFyKC0tY2hlc3NpbWFscy1tb3ZlKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41NXJlbTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDAuNzQ7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWxhc3Q6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1sZWdhbCk6bm90KC5pcy1jYXB0dXJlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWxhc3QtcmdiKSwgMC4xNikgMCA0MiUsIHRyYW5zcGFyZW50IDY4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlIHtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNCksIHRyYW5zcGFyZW50IDM0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4xNCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjg0KSxcbiAgICAgICAgICBpbnNldCAwIDAgMS40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMjQpLFxuICAgICAgICAgIDAgMCAwLjk1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzQpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1hdXJhIDEuMzVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDQlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC42NHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjI0KSwgdHJhbnNwYXJlbnQgNTglKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNDIlKSBzY2FsZSgwLjkpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1zd2VlcCAxLjM1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDglO1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICBib3JkZXI6IG1heCgycHgsIDEuNTUlKSBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjYycmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNSksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNzJyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIyKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1mcmFtZSAxLjM1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtYXVyYSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjEycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNzgpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yKSxcbiAgICAgICAgICAgIDAgMCAwLjY0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzIpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMjIpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuOTYpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDEuMzRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNCksXG4gICAgICAgICAgICAwIDAgMS4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1jYXB0dXJlLXN3ZWVwIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MiUpIHNjYWxlKDAuODgpO1xuICAgICAgICB9XG5cbiAgICAgICAgNDIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjY2O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQ4JSkgc2NhbGUoMC45Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtc291cmNlLWVmZmVjdDpub3QoLmlzLW1vdmluZy1zb3VyY2UpIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4xMikgMCAzNCUsIHRyYW5zcGFyZW50IDY0JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Qge1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yMikgMCAzNCUsIHRyYW5zcGFyZW50IDY4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODYpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNiksXG4gICAgICAgICAgMCAwIDEuMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMTJyZW07XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40MiksIHRyYW5zcGFyZW50IDU4JSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzIpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItaW1wYWN0IDcwMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0OjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMjhyZW07XG4gICAgICAgIHotaW5kZXg6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXI6IDAuMTRyZW0gc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41OHJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNiksXG4gICAgICAgICAgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItZnJhbWUgODYwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtY2FwdHVyZS1lZmZlY3Qge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQgNzgwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5lZmZlY3QtZWFnbGU6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQgMTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzgpIDQ4JSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzYpLCB0cmFuc3BhcmVudCA2MiUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1idWxsOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkgMCAwLjE2cmVtLCB0cmFuc3BhcmVudCAwLjE2cmVtIDAuMzRyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zOCksIHRyYW5zcGFyZW50IDYyJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWthbmdhcm9vOjpiZWZvcmUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDQyJSA0NCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1OCUgNTYlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCA2NCUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1saW9uOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KGZyb20gMGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NiksIHRyYW5zcGFyZW50LCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBvd2VyLWltcGFjdCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NCkgcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nikgcm90YXRlKDJkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMykgcm90YXRlKDhkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci1mcmFtZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44NCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE2KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM1JSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjM1KSBicmlnaHRuZXNzKDEuMDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbW92aW5nLXNvdXJjZSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDY4JTtcbiAgICAgICAgaGVpZ2h0OiA3NCU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtZmlsbDogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1saW5lOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utb3V0bGluZTogcmdiYSg4MiwgNjUsIDQ2LCAwLjI0KTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1maWxsOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utc2lkZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDY7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyB2YXIoLS1ib2FyZC1zaXplKSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC8gdmFyKC0tYm9hcmQtc2l6ZSkpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICBjYWxjKHZhcigtLWZyb20tcm93KSAqIDEwMCUpXG4gICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1waWVjZS10cmF2ZWwgMzYwbXMgY3ViaWMtYmV6aWVyKDAuMiwgMC44MiwgMC4yNCwgMSkgYm90aDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBpZWNlLXRyYXZlbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICA2OCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS10by1yb3cpICogMTAwJSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHNjYWxlKDEuMDcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX3NpZGUsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9faGVhZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19iYXNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBib3JkZXI6IG1heCgxcHgsIDEuMjUlKSBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19zaWRlIHtcbiAgICAgICAgdG9wOiA0NiU7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIHdpZHRoOiA1OCU7XG4gICAgICAgIGhlaWdodDogNDElO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzNCUgMzQlIDEyJSAxMiU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDk2ZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGUpIDAgMzQlLCB0cmFuc3BhcmVudCAzNSUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCk7XG4gICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigyMiUgMCwgNzglIDAsIDk2JSAxMDAlLCA0JSAxMDAlKTtcbiAgICAgICAgb3BhY2l0eTogMC45MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICB0b3A6IDElO1xuICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICB3aWR0aDogNDglO1xuICAgICAgICBoZWlnaHQ6IDQwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMCUgMjIlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpIDAgMTMlLCB0cmFuc3BhcmVudCAxNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yOCkgMCAzNCUsIHRyYW5zcGFyZW50IDM1JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xOHJlbSAtMC4xMnJlbSAwIHJnYmEoODIsIDY1LCA0NiwgMC4wNiksXG4gICAgICAgICAgaW5zZXQgMCAtMXB4IDAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1saW5lKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2UuaXMtYmxhY2sgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAuMThyZW0gLTAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpLFxuICAgICAgICAgIGluc2V0IDAgLTFweCAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIge1xuICAgICAgICB0b3A6IDM3JTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgd2lkdGg6IDcyJTtcbiAgICAgICAgaGVpZ2h0OiAxNSU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsICNmNWNkNzcgMCUsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZ29sZCkgNTUlLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQtZGFyaykgMTAwJSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZ29sZC1kYXJrKSA3MiUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjgpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMDhyZW0gMCByZ2JhKDcwLCA0NiwgMTgsIDAuMjIpLFxuICAgICAgICAgIDAgMC4wOHJlbSAwLjE4cmVtIHJnYmEoNzAsIDQ2LCAxOCwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19uZWNrIHtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIHdpZHRoOiA1MiU7XG4gICAgICAgIGhlaWdodDogMzElO1xuICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTYlIDAsIDg0JSAwLCAxMDAlIDEwMCUsIDAgMTAwJSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDI4JSwgdHJhbnNwYXJlbnQgMjklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA3OCUsIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utc2lkZSkpKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xMnJlbSAwLjFyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fYmFzZSB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgei1pbmRleDogNjtcbiAgICAgICAgd2lkdGg6IDg2JTtcbiAgICAgICAgaGVpZ2h0OiAxNyU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNDJyZW0gMC40MnJlbSAwLjIycmVtIDAuMjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDE4JSwgdHJhbnNwYXJlbnQgMTklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA5MiUsICNmZmZmZmYpLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMXJlbSAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIHdpZHRoOiAxNiU7XG4gICAgICAgIGhlaWdodDogMTYlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb3ZlKTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMC45cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tb3ZlLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjM3NXJlbTtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLWhlaWdodDogNS43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42MjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4xMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICBib3JkZXItY29sb3IgMTgwbXMgZWFzZSxcbiAgICAgICAgICBib3gtc2hhZG93IDE4MG1zIGVhc2UsXG4gICAgICAgICAgdHJhbnNmb3JtIDE4MG1zIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZyBzcGFuIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjI4cmVtIDAuNjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpLFxuICAgICAgICAgIDAgMC45cmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXVzZWQge1xuICAgICAgICBvcGFjaXR5OiAwLjQyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzLjE1cmVtO1xuICAgICAgICBoZWlnaHQ6IDMuMTVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMThyZW07XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMDVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmcpO1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkgOTIlLCAjMDAwKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXIpLFxuICAgICAgICAgIDAgMC40NXJlbSAxLjE1cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZCAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1yZWFkeSAuY2hlc3NpbWFscy1jYXJkcyBidXR0b246bm90KC5pcy11c2VkKSAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSA5NCUsICMwMDApO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpLFxuICAgICAgICAgIDAgMC43NXJlbSAxLjZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMTgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXIpO1xuICAgICAgICBvcGFjaXR5OiAwLjg2O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyxcbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXJlYWR5IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjQyKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXJlYWR5IC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIHtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzUG93ZXJQdWxzZSAxODAwbXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy11bmxvY2stcHVsc2Uge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNQb3dlcnNVbmxvY2tlZCAxMTgwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXVubG9jay1wdWxzZSAuY2hlc3NpbWFscy1jYXJkcyBidXR0b246bm90KC5pcy11c2VkKSB7XG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICBjaGVzc2ltYWxzUG93ZXJJZ25pdGUgNzYwbXMgZWFzZS1vdXQgYm90aCxcbiAgICAgICAgICBjaGVzc2ltYWxzUG93ZXJQdWxzZSAxODAwbXMgZWFzZS1pbi1vdXQgNzYwbXMgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc1Bvd2VyUHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMS40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc1Bvd2Vyc1VubG9ja2VkIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAwIDAgMCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMCksXG4gICAgICAgICAgICAwIDFyZW0gMi40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzQlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgMC4xOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yNCksXG4gICAgICAgICAgICAwIDAgMi4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjM0KSxcbiAgICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHNQb3dlcklnbml0ZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMC45Nik7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDApO1xuICAgICAgICB9XG5cbiAgICAgICAgNDIlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMDhyZW0pIHNjYWxlKDEuMDI1KTtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgMC4xNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yKSxcbiAgICAgICAgICAgIDAgMCAxLjVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNDIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgb3JkZXI6IDY7XG4gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RyZXRjaDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heChtaW4oMTAwJSwgMTJyZW0pLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIG1heC13aWR0aDogbWluKDk2dncsIDkwcmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYWN0aW9ucyxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLW9ubGluZSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICB3aWR0aDogbWluKDk2dncsIDgydmgsIDU4cmVtKTtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCxcbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LFxuICAgICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMge1xuICAgICAgICAgIHdpZHRoOiBtaW4oMTAwJSwgNDRyZW0pO1xuICAgICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgxMXJlbSwgMC42OGZyKSBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgICAgbWluLWhlaWdodDogNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgI2U3ZTRlYSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsICNmZmYpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMyZjJhM2EpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBhcnRpY2xlID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGFydGljbGUgPiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgaDMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBwLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgdWwge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBwLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgbGkge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzZmNmE3YSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByaW1hcnksXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjYyNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByaW1hcnkge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDEuMTI1cmVtIDIuOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByaW1hcnkuaXMtd29ya2luZyxcbiAgICAgIC5jaGVzc2ltYWxzLXNlY29uZGFyeS5pcy13b3JraW5nIHtcbiAgICAgICAgY3Vyc29yOiB3YWl0O1xuICAgICAgICBvcGFjaXR5OiAwLjgyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lciB7XG4gICAgICAgIHdpZHRoOiAxcmVtO1xuICAgICAgICBoZWlnaHQ6IDFyZW07XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBib3JkZXI6IDAuMTRyZW0gc29saWQgY3VycmVudENvbG9yO1xuICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXNwaW4gNzIwbXMgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNTYwcHgpIHtcbiAgICAgICAgLmNoZXNzaW1hbHMtc2l6ZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtbW9kZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtYWN0aW9ucyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1nYW1lIHtcbiAgICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCB7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICAgIHBhZGRpbmc6IDAuMThyZW0gMC41cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42cmVtO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0NWVtO1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuOThyZW0sIDV2dywgMS4yNXJlbSk7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgICBnYXA6IDAuMnJlbTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC45NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjRyZW0gMC4zNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzbWFsbCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjg2cmVtLCAzLjR2dywgMXJlbSk7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCB7XG4gICAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjdyZW0gMC43NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXRpcCBzdHJvbmcsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtYXJnaW4taW5saW5lOiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMge1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZyB7XG4gICAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgaDIge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZyBzcGFuIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjIycmVtIDAuNDhyZW07XG4gICAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgICBnYXA6IDAuMjVyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogNC4yNXJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNHJlbSAwLjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICAgIHdpZHRoOiAyLjFyZW07XG4gICAgICAgICAgaGVpZ2h0OiAyLjFyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHN0cm9uZyB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYm9hcmQge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjU4cmVtO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjpiZWZvcmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YWZ0ZXIsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0LFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YmVmb3JlLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YWZ0ZXIsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLWNhcHR1cmUtZWZmZWN0LFxuICAgICAgICAuY2hlc3NpbWFscy1tb3ZpbmctcGllY2Uge1xuICAgICAgICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgY2FsYyh2YXIoLS10by1yb3cpICogMTAwJSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlc3NpbWFsc0dhbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXVkaW8gPSBpbmplY3QoUmV0cm9BdWRpb1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9ubGluZSA9IGluamVjdChDaGVzc2ltYWxzT25saW5lU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBoYXB0aWNzID0gaW5qZWN0KEhhcHRpY3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwbGF5ZXJQcm9maWxlcyA9IGluamVjdChNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBib2FyZE9yaWVudGF0aW9uVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG1vdmVBbmltYXRpb25UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgYm90VHVyblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBvbmxpbmVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoaXN0b3J5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGlzdG9yeVVpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhpc3RvcnlXYXRjaFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb3ZlRWZmZWN0U3RhcnRUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUVmZmVjdENsZWFyVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHBvd2VyVW5sb2NrVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHBlbmRpbmdPbmxpbmVHYW1lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvcGVuaW5nT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb3BlbmVkT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnYm9hcmRBbmNob3InKSBwcml2YXRlIGJvYXJkQW5jaG9yPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgcmVhZG9ubHkgYm9hcmRTaXplczogQ2hlc3NpbWFsc0JvYXJkU2l6ZVtdID0gWzYsIDhdO1xuICByZWFkb25seSBsb2NhbE1vZGVzOiBDaGVzc2ltYWxzTG9jYWxNb2RlW10gPSBbJ29uZS1kZXZpY2UnLCAnYm90J107XG4gIHJlYWRvbmx5IGJvdERpZmZpY3VsdGllczogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHlbXSA9IFsnZWFzeScsICdub3JtYWwnLCAnaGFyZCddO1xuICByZWFkb25seSBhbmltYWxzID0gQU5JTUFMUztcbiAgcmVhZG9ubHkgc2NyZWVuID0gc2lnbmFsPCdob21lJyB8ICdnYW1lJz4oJ2hvbWUnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb2FyZFNpemUgPSBzaWduYWw8Q2hlc3NpbWFsc0JvYXJkU2l6ZT4oNik7XG4gIHJlYWRvbmx5IHNlbGVjdGVkTG9jYWxNb2RlID0gc2lnbmFsPENoZXNzaW1hbHNMb2NhbE1vZGU+KCdvbmUtZGV2aWNlJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm90RGlmZmljdWx0eSA9IHNpZ25hbDxDaGVzc2ltYWxzQm90RGlmZmljdWx0eT4oJ25vcm1hbCcpO1xuICByZWFkb25seSBnYW1lID0gc2lnbmFsPENoZXNzaW1hbHNHYW1lU3RhdGU+KGNyZWF0ZUNoZXNzaW1hbHNHYW1lKDYpKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRQaWVjZUlkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRBbmltYWwgPSBzaWduYWw8Q2hlc3NpbWFsc0FuaW1hbFR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzUnVsZXNNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc0JvYXJkT3JpZW50aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbW92aW5nUGllY2UgPSBzaWduYWw8Q2hlc3NpbWFsc01vdmluZ1BpZWNlVmlldyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbW92ZUVmZmVjdCA9IHNpZ25hbDxDaGVzc2ltYWxzTW92ZUVmZmVjdFZpZXcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHBvd2VyVW5sb2NrUHVsc2UgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtb3ZlVHJhaWwgPSBjb21wdXRlZDxDaGVzc2ltYWxzTW92ZVRyYWlsVmlldyB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIGlmICghZWZmZWN0KSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgYm9hcmRTaXplID0gdGhpcy5nYW1lKCkuYm9hcmRTaXplO1xuICAgIGNvbnN0IGZyb21Db2wgPSB0aGlzLmRpc3BsYXlDb2xJbmRleChlZmZlY3QuZnJvbS5jb2wpICsgMC41O1xuICAgIGNvbnN0IGZyb21Sb3cgPSB0aGlzLmRpc3BsYXlSb3dJbmRleChlZmZlY3QuZnJvbS5yb3cpICsgMC41O1xuICAgIGNvbnN0IHRvQ29sID0gdGhpcy5kaXNwbGF5Q29sSW5kZXgoZWZmZWN0LnRvLmNvbCkgKyAwLjU7XG4gICAgY29uc3QgdG9Sb3cgPSB0aGlzLmRpc3BsYXlSb3dJbmRleChlZmZlY3QudG8ucm93KSArIDAuNTtcbiAgICBjb25zdCBmcm9tWCA9IChmcm9tQ29sIC8gYm9hcmRTaXplKSAqIDEwMDtcbiAgICBjb25zdCBmcm9tWSA9IChmcm9tUm93IC8gYm9hcmRTaXplKSAqIDEwMDtcbiAgICBjb25zdCBkeCA9ICgodG9Db2wgLSBmcm9tQ29sKSAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgZHkgPSAoKHRvUm93IC0gZnJvbVJvdykgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KDEwLCBNYXRoLmh5cG90KGR4LCBkeSkpO1xuICAgIGNvbnN0IGFuZ2xlID0gTWF0aC5hdGFuMihkeSwgZHgpICogKDE4MCAvIE1hdGguUEkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGAke2Zyb21YfSVgLFxuICAgICAgeTogYCR7ZnJvbVl9JWAsXG4gICAgICBsZW5ndGg6IGAke2xlbmd0aH0lYCxcbiAgICAgIGFuZ2xlOiBgJHthbmdsZX1kZWdgLFxuICAgICAgYW5pbWFsOiBlZmZlY3QuYW5pbWFsLFxuICAgICAgY2FwdHVyZTogZWZmZWN0LmNhcHR1cmUsXG4gICAgfTtcbiAgfSk7XG4gIHJlYWRvbmx5IGJvdFRoaW5raW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbiA9IHNpZ25hbDxDaGVzc2ltYWxzQ29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25saW5lSm9pbkNvZGUgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBvbmxpbmVMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgb25saW5lQWN0aW9uID0gc2lnbmFsPCdjcmVhdGUnIHwgJ2pvaW4nIHwgJ2FjY2VwdCcgfCAncmVqZWN0JyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25saW5lRXJyb3IgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBvbmxpbmVVaWQgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVIaXN0b3J5ID0gc2lnbmFsPENoZXNzaW1hbHNIaXN0b3J5RW50cnlbXT4oW10pO1xuICByZWFkb25seSByZXN1bWVTcGxhc2hWaXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgcmVtYXRjaExvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtb3ZlU3luY2luZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxvZ2dlZEluVXNlciA9IHRoaXMuYXV0aC51c2VyO1xuICByZWFkb25seSBsb2NhbFBsYXllclByb2ZpbGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKSk7XG4gIHJlYWRvbmx5IGxvY2FsUGxheWVyQXZhdGFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKT8uYXZhdGFyID8/ICfwn4yfJyk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllck5hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gICAgaWYgKHVzZXI/Lm5hbWU/LnRyaW0oKSkgcmV0dXJuIHVzZXIubmFtZS50cmltKCk7XG4gICAgaWYgKHVzZXI/LmVtYWlsPy50cmltKCkpIHJldHVybiB1c2VyLmVtYWlsLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcy5wbGF5ZXJQcm9maWxlcy5kaXNwbGF5TmFtZSh0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpLCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJykpO1xuICB9KTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVySGFuZGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgIGNvbnN0IGhhbmRsZSA9IHVzZXI/LmhhbmRsZT8udHJpbSgpO1xuICAgIGlmIChoYW5kbGUpIHJldHVybiBoYW5kbGUuc3RhcnRzV2l0aCgnQCcpID8gaGFuZGxlIDogYEAke2hhbmRsZX1gO1xuICAgIGlmICh1c2VyPy51c2VySWQpIHJldHVybiBgSUQgJHt0aGlzLnNob3J0VXNlcklkKHVzZXIudXNlcklkKX1gO1xuICAgIGNvbnN0IHByb2ZpbGVJZCA9IHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCk/LmlkO1xuICAgIHJldHVybiBwcm9maWxlSWQgPyBgSUQgJHt0aGlzLnNob3J0VXNlcklkKHByb2ZpbGVJZCl9YCA6ICcnO1xuICB9KTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVyQXZhdGFyUHJvcHMgPSBjb21wdXRlZDxVc2VyQXZhdGFyTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgdXNlcjogdGhpcy5sb2dnZWRJblVzZXIoKSxcbiAgICBzaXplOiAnc21hbGwnLFxuICAgIGJvcmRlcmVkOiB0cnVlLFxuICB9KSk7XG5cbiAgQElucHV0KCkgc2V0IG9ubGluZUdhbWVJZCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh2YWx1ZSA/PyAnJyk7XG4gICAgaWYgKCFnYW1lSWQpIHJldHVybjtcbiAgICB0aGlzLnBlbmRpbmdPbmxpbmVHYW1lSWQgPSBnYW1lSWQ7XG4gICAgaWYgKHRoaXMub3BlbmVkT25saW5lR2FtZUlkICE9PSBnYW1lSWQgJiYgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkICE9PSBnYW1lSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShnYW1lSWQpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBtaW5pR2FtZXNSb3V0ZSA9ICcvbWluaS1nYW1lcyc7XG4gIEBJbnB1dCgpIHByb2plY3Rpb25Nb2RlID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgY3VycmVudFBsYXllciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLnBsYXllcnNbdGhpcy5nYW1lKCkuY3VycmVudFR1cm5dKTtcbiAgcmVhZG9ubHkgbGVnYWxNb3ZlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwaWVjZUlkID0gdGhpcy5zZWxlY3RlZFBpZWNlSWQoKTtcbiAgICBpZiAoIXBpZWNlSWQpIHJldHVybiBbXTtcbiAgICBpZiAoIXRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkpIHJldHVybiBbXTtcbiAgICByZXR1cm4gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModGhpcy5nYW1lKCksIHBpZWNlSWQsIHRoaXMuc2VsZWN0ZWRBbmltYWwoKSk7XG4gIH0pO1xuICByZWFkb25seSBsZWdhbE1vdmVLZXlzID0gY29tcHV0ZWQoKCkgPT4gbmV3IFNldCh0aGlzLmxlZ2FsTW92ZXMoKS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSkpO1xuICByZWFkb25seSBjYXB0dXJlTW92ZUtleXMgPSBjb21wdXRlZChcbiAgICAoKSA9PiBuZXcgU2V0KHRoaXMubGVnYWxNb3ZlcygpLmZpbHRlcigobW92ZSkgPT4gISFtb3ZlLmNhcHR1cmVzUGllY2VJZCkubWFwKChtb3ZlKSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSkpLFxuICApO1xuICByZWFkb25seSBib2FyZFJvd3MgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmdhbWUoKS5ib2FyZFNpemUgfSwgKF8sIGluZGV4KSA9PiBpbmRleCkpO1xuICByZWFkb25seSBib2FyZENvbHMgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmdhbWUoKS5ib2FyZFNpemUgfSwgKF8sIGluZGV4KSA9PiBpbmRleCkpO1xuICByZWFkb25seSBkaXNwbGF5Um93cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IFsuLi50aGlzLmJvYXJkUm93cygpXS5yZXZlcnNlKCkgOiB0aGlzLmJvYXJkUm93cygpLFxuICApO1xuICByZWFkb25seSBkaXNwbGF5Q29scyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IFsuLi50aGlzLmJvYXJkQ29scygpXS5yZXZlcnNlKCkgOiB0aGlzLmJvYXJkQ29scygpLFxuICApO1xuICByZWFkb25seSBib2FyZE9yaWVudGF0aW9uQ29sb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB1aWQgPyB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudFNpZGUoZ2FtZSwgdWlkKSA/PyAnd2hpdGUnIDogJ3doaXRlJztcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHJldHVybiAnd2hpdGUnO1xuICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgb25saW5lUm9sZSA9IGNvbXB1dGVkKCgpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgfCAnd2FpdGluZycgfCAncGVuZGluZycgfCAnc3BlY3RhdG9yJyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKCF1aWQpIHJldHVybiAnc3BlY3RhdG9yJztcbiAgICBpZiAodGhpcy5vbmxpbmUuaXNIb3N0V2FpdGluZyhnYW1lLCB1aWQpKSByZXR1cm4gJ3dhaXRpbmcnO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ3dhaXRpbmcnICYmIGdhbWUub25saW5lPy5wZW5kaW5nR3Vlc3Q/LnVpZCA9PT0gdWlkKSByZXR1cm4gJ3BlbmRpbmcnO1xuICAgIHJldHVybiB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudFNpZGUoZ2FtZSwgdWlkKSA/PyAnc3BlY3RhdG9yJztcbiAgfSk7XG4gIHJlYWRvbmx5IGNhblBsYXlDdXJyZW50VHVybiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUiAmJiAhdGhpcy5ib3RUaGlua2luZygpO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHRoaXMub25saW5lUm9sZSgpID09PSBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVtYXRjaFN0YXRlID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc1JlbWF0Y2hTdGF0ZT4oKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJyB8fCBnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuICdub25lJztcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIGlmICghdWlkIHx8IHRoaXMub25saW5lUm9sZSgpID09PSAnc3BlY3RhdG9yJykgcmV0dXJuICdub25lJztcblxuICAgIGNvbnN0IHJlcXVlc3RzID0gZ2FtZS5vbmxpbmU/LnJlbWF0Y2hSZXF1ZXN0cyA/PyBbXTtcbiAgICBjb25zdCBoYXNNaW5lID0gcmVxdWVzdHMuaW5jbHVkZXModWlkKTtcbiAgICBjb25zdCBoYXNPdGhlciA9IHJlcXVlc3RzLnNvbWUoKGl0ZW0pID0+IGl0ZW0gIT09IHVpZCk7XG5cbiAgICBpZiAoaGFzT3RoZXIgJiYgIWhhc01pbmUpIHJldHVybiAnaW5jb21pbmcnO1xuICAgIGlmIChoYXNNaW5lKSByZXR1cm4gJ3JlcXVlc3RlZCc7XG4gICAgcmV0dXJuICdub25lJztcbiAgfSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRUdXJuVGl0bGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc0N1cnJlbnRUdXJuJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuKSksXG4gICk7XG4gIHJlYWRvbmx5IHdpblRpdGxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ2NoZXNzaW1hbHNXaW5UaXRsZScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wbGF5ZXJMYWJlbCh0aGlzLmdhbWUoKS53aW5uZXIgPz8gJ3doaXRlJykpLFxuICApO1xuICByZWFkb25seSB3aW5Cb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlYXNvbiA9IHRoaXMuZ2FtZSgpLndpbm5lclJlYXNvbiA/PyAncHJvbW90aW9uJztcbiAgICBjb25zdCBrZXkgPVxuICAgICAgcmVhc29uID09PSAnZWxpbWluYXRpb24nXG4gICAgICAgID8gJ2NoZXNzaW1hbHNXaW5FbGltaW5hdGlvbidcbiAgICAgICAgOiByZWFzb24gPT09ICdyZXNpZ25hdGlvbidcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzV2luUmVzaWduYXRpb24nXG4gICAgICAgICAgOiAnY2hlc3NpbWFsc1dpblByb21vdGlvbic7XG4gICAgcmV0dXJuIHRoaXMudChrZXkpO1xuICB9KTtcbiAgcmVhZG9ubHkgd2luUmVhc29uTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5nYW1lKCkud2lubmVyUmVhc29uID8/ICdwcm9tb3Rpb24nO1xuICAgIGNvbnN0IGtleSA9XG4gICAgICByZWFzb24gPT09ICdlbGltaW5hdGlvbidcbiAgICAgICAgPyAnY2hlc3NpbWFsc1JlYXNvbkVsaW1pbmF0aW9uJ1xuICAgICAgICA6IHJlYXNvbiA9PT0gJ3Jlc2lnbmF0aW9uJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNSZWFzb25SZXNpZ25hdGlvbidcbiAgICAgICAgICA6ICdjaGVzc2ltYWxzUmVhc29uUHJvbW90aW9uJztcbiAgICByZXR1cm4gdGhpcy50KGtleSk7XG4gIH0pO1xuICByZWFkb25seSBtb3Zlc1N1bW1hcnkgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc01vdmVzU3VtbWFyeScpLnJlcGxhY2UoJ3ttb3Zlc30nLCBgJHt0aGlzLmdhbWUoKS5tb3ZlQ291bnR9YCksXG4gICk7XG4gIHJlYWRvbmx5IGNvbmZpcm1UaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzdGFydFRpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzaWduVGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybUdhbWVzVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybU1vZGVUaXRsZScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc3RhcnRCb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzaWduQm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtR2FtZXNCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1Nb2RlQm9keScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogdGhpcy50KCdjYW5jZWwnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY2FuY2VsJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6XG4gICAgICAgICAgYWN0aW9uID09PSAncmVzaWduJ1xuICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNSZXNpZ24nKVxuICAgICAgICAgICAgOiBhY3Rpb24gPT09ICdyZXN0YXJ0J1xuICAgICAgICAgICAgICA/IHRoaXMudCgncmVzdGFydCcpXG4gICAgICAgICAgICAgIDogYWN0aW9uID09PSAnZ2FtZXMnXG4gICAgICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFuZ2VHYW1lJylcbiAgICAgICAgICAgICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0NoYW5nZU1vZGUnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY29uZmlybScsXG4gICAgICB9LFxuICAgIF07XG4gIH0pO1xuICByZWFkb25seSBhY3Rpb25IaW50ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHBpZWNlSWQgPSB0aGlzLnNlbGVjdGVkUGllY2VJZCgpO1xuICAgIGlmICghcGllY2VJZCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tBbnlQaWVjZScpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQW5pbWFsKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrUG93ZXJUYXJnZXQnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja1RhcmdldCcpO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnTWluaUdhbWVzJywgTUlOSV9HQU1FU19JMThOKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5oaXN0b3J5VWlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVIaXN0b3J5LnNldChbXSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQodHJ1ZSk7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKTtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKTtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpO1xuICAgIGlmICh0aGlzLnBvd2VyVW5sb2NrVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnBvd2VyVW5sb2NrVGltZXIpO1xuICAgIGlmICh0aGlzLmJvdFR1cm5UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm90VHVyblRpbWVyKTtcbiAgICBpZiAodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMucGVuZGluZ09ubGluZUdhbWVJZDtcbiAgICBpZiAoZ2FtZUlkICYmIHRoaXMub3BlbmVkT25saW5lR2FtZUlkICE9PSBnYW1lSWQgJiYgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkICE9PSBnYW1lSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShnYW1lSWQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNaW5pR2FtZXMnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvcnRVc2VySWQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRyaW0oKTtcbiAgICBpZiAobm9ybWFsaXplZC5sZW5ndGggPD0gMTApIHJldHVybiBub3JtYWxpemVkO1xuICAgIHJldHVybiBgJHtub3JtYWxpemVkLnNsaWNlKDAsIDQpfeKApiR7bm9ybWFsaXplZC5zbGljZSgtNCl9YDtcbiAgfVxuXG4gIHN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmdhbWUuc2V0KGNyZWF0ZUNoZXNzaW1hbHNHYW1lKHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUoKSkpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT25saW5lR2FtZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQoJ2NyZWF0ZScpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZ2FtZSA9IGF3YWl0IHRoaXMub25saW5lLmNyZWF0ZUdhbWUodGhpcy5zZWxlY3RlZEJvYXJkU2l6ZSgpKTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gZ2FtZS5pZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKGdhbWUuaWQpO1xuICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5jaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWUuaWQpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY3JlYXRlIG9ubGluZSBnYW1lIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLmVycm9yKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub25saW5lQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgam9pbk9ubGluZUdhbWVCeUNvZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZ2FtZUlkID0gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKHRoaXMub25saW5lSm9pbkNvZGUoKSk7XG4gICAgaWYgKCF0aGlzLm9ubGluZS5pc1ZhbGlkR2FtZUlkKGdhbWVJZCkpIHtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub25saW5lSm9pbkNvZGUuc2V0KGdhbWVJZCk7XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdqb2luJyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub3Blbk9ubGluZUdhbWUoZ2FtZUlkKTtcbiAgICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9PT0gZ2FtZUlkKSB7XG4gICAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZ2FtZUlkKSk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub25saW5lQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9wZW5PbmxpbmVHYW1lKGdhbWVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZEdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZChnYW1lSWQpO1xuICAgIGlmICghdGhpcy5vbmxpbmUuaXNWYWxpZEdhbWVJZChub3JtYWxpemVkR2FtZUlkKSkge1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlbmVkT25saW5lR2FtZUlkID09PSBub3JtYWxpemVkR2FtZUlkIHx8IHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9PT0gbm9ybWFsaXplZEdhbWVJZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5vbmxpbmVFcnJvci5zZXQoJycpO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KHRydWUpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IG5vcm1hbGl6ZWRHYW1lSWQ7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub25saW5lLmpvaW5HYW1lKG5vcm1hbGl6ZWRHYW1lSWQpO1xuICAgICAgdGhpcy5vbmxpbmVVaWQuc2V0KHRoaXMub25saW5lLmN1cnJlbnRVaWQpO1xuICAgICAgdGhpcy5xdWV1ZUhpc3RvcnlXYXRjaCgpO1xuICAgICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSBub3JtYWxpemVkR2FtZUlkO1xuICAgICAgdGhpcy53YXRjaE9ubGluZUdhbWUobm9ybWFsaXplZEdhbWVJZCk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnNlbGVjdGlvbigpO1xuICAgICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBvcGVuIG9ubGluZSBnYW1lIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICByZXN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5nYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICB2b2lkIHRoaXMucmVxdWVzdE9ubGluZVJlbWF0Y2goKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmdhbWUuc2V0KGNyZWF0ZUNoZXNzaW1hbHNHYW1lKHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZSkpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcmVzZXRUb01vZGVTZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICByZXNldFRvR2FtZXNNZW51KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRUb01vZGVTZXR1cCgpO1xuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KHJldHVybkhvbWUgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8IGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgdGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmdhbWUuc2V0KGNyZWF0ZUNoZXNzaW1hbHNHYW1lKGdhbWUuYm9hcmRTaXplKSk7XG4gICAgaWYgKHJldHVybkhvbWUpIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICB9XG5cbiAgcmVxdWVzdFJlc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc3RhcnQnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ21vZGUnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2dhbWVzJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0UmVzaWduKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdyZXNpZ24nKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlQ29uZmlybU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGNvbmZpcm1QZW5kaW5nQWN0aW9uKHRva2VuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRva2VuICE9PSAnY29uZmlybScpIHtcbiAgICAgIHRoaXMuY2xvc2VDb25maXJtTW9kYWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHtcbiAgICAgIHRoaXMucmVzdGFydEdhbWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ21vZGUnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9Nb2RlU2V0dXAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykge1xuICAgICAgdGhpcy5yZXNldFRvR2FtZXNNZW51KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdyZXNpZ24nKSB7XG4gICAgICB0aGlzLnJlc2lnbkdhbWUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2lnbkdhbWUoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICB2b2lkIHRoaXMub25saW5lLnJlc2lnbihnYW1lLmlkKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMuZ2FtZS5zZXQocmVzaWduQ2hlc3NpbWFsc0dhbWUoZ2FtZSwgZ2FtZS5jdXJyZW50VHVybikpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNWaWN0b3J5KCk7XG4gIH1cblxuICBvcGVuUnVsZXNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUnVsZXNNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VSdWxlc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNSdWxlc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgc2VsZWN0Q2VsbChwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8ICF0aGlzLmNhblBsYXlDdXJyZW50VHVybigpIHx8IHRoaXMubW92aW5nUGllY2UoKSB8fCB0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybjtcblxuICAgIGNvbnN0IHBpZWNlID0gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoZ2FtZSwgcG9zaXRpb24pO1xuICAgIGlmIChwaWVjZT8uY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldChwaWVjZS5pZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZSA9IHRoaXMubGVnYWxNb3ZlcygpLmZpbmQoKGl0ZW0pID0+IHBvc2l0aW9uS2V5KGl0ZW0udG8pID09PSBwb3NpdGlvbktleShwb3NpdGlvbikpO1xuICAgIGlmICghbW92ZSkgcmV0dXJuO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKGdhbWUsIG1vdmUpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAgIHRoaXMubW92ZVN5bmNpbmcuc2V0KHRydWUpO1xuICAgICAgICB2b2lkIHRoaXMub25saW5lXG4gICAgICAgICAgLm1vdmUoZ2FtZS5pZCwgbW92ZSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRoaXMuaGFwdGljcy5pbXBhY3QobW92ZS5jYXB0dXJlc1BpZWNlSWQgPyAnbWVkaXVtJyA6ICdsaWdodCcpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gb25saW5lIG1vdmUgZmFpbGVkJywgeyBnYW1lSWQ6IGdhbWUuaWQsIG1vdmUsIGVycm9yIH0pO1xuICAgICAgICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICAgICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3ZlU3luY2luZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhbmltYXRlTW92ZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBtb3ZlOiBDaGVzc2ltYWxzTW92ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vdmVBbmltYXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKTtcbiAgICB0aGlzLnF1ZXVlTW92ZUVmZmVjdChtb3ZlKTtcblxuICAgIGNvbnN0IG1vdmluZ1BpZWNlID0gZ2FtZS5waWVjZXMuZmluZCgocGllY2UpID0+IHBpZWNlLmlkID09PSBtb3ZlLnBpZWNlSWQpO1xuICAgIGlmICghbW92aW5nUGllY2UpIHtcbiAgICAgIHRoaXMuYXBwbHlBbmltYXRlZE1vdmUoZ2FtZSwgdXBkYXRlZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQoe1xuICAgICAgY29sb3I6IG1vdmluZ1BpZWNlLmNvbG9yLFxuICAgICAgZnJvbVJvdzogdGhpcy5kaXNwbGF5Um93SW5kZXgobW92ZS5mcm9tLnJvdyksXG4gICAgICBmcm9tQ29sOiB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLmZyb20uY29sKSxcbiAgICAgIHRvUm93OiB0aGlzLmRpc3BsYXlSb3dJbmRleChtb3ZlLnRvLnJvdyksXG4gICAgICB0b0NvbDogdGhpcy5kaXNwbGF5Q29sSW5kZXgobW92ZS50by5jb2wpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYXBwbHlBbmltYXRlZE1vdmUoZ2FtZSwgdXBkYXRlZCk7XG4gICAgfSwgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5QW5pbWF0ZWRNb3ZlKHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmdhbWUuc2V0KHVwZGF0ZWQpO1xuICAgIHRoaXMucGxheVBvd2VyVW5sb2NrU291bmQocHJldmlvdXMsIHVwZGF0ZWQpO1xuICAgIGlmIChcbiAgICAgIHVwZGF0ZWQuY3VycmVudFR1cm4gIT09IHByZXZpb3VzLmN1cnJlbnRUdXJuICYmXG4gICAgICB1cGRhdGVkLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyAmJlxuICAgICAgIXRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWModXBkYXRlZClcbiAgICApIHtcbiAgICAgIHRoaXMudHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNWaWN0b3J5KCk7XG4gICAgfVxuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheVBvd2VyVW5sb2NrU291bmQocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCB3aGl0ZVVubG9ja2VkID0gIXByZXZpb3VzLnBsYXllcnMud2hpdGUucG93ZXJVbmxvY2tlZCAmJiB1cGRhdGVkLnBsYXllcnMud2hpdGUucG93ZXJVbmxvY2tlZDtcbiAgICBjb25zdCBibGFja1VubG9ja2VkID0gIXByZXZpb3VzLnBsYXllcnMuYmxhY2sucG93ZXJVbmxvY2tlZCAmJiB1cGRhdGVkLnBsYXllcnMuYmxhY2sucG93ZXJVbmxvY2tlZDtcbiAgICBpZiAod2hpdGVVbmxvY2tlZCB8fCBibGFja1VubG9ja2VkKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNQb3dlclVubG9ja2VkKCk7XG4gICAgICB0aGlzLnBvd2VyVW5sb2NrUHVsc2Uuc2V0KGZhbHNlKTtcbiAgICAgIGNvbnN0IHN0YXJ0UHVsc2UgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMucG93ZXJVbmxvY2tQdWxzZS5zZXQodHJ1ZSk7XG4gICAgICAgIGlmICh0aGlzLnBvd2VyVW5sb2NrVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnBvd2VyVW5sb2NrVGltZXIpO1xuICAgICAgICB0aGlzLnBvd2VyVW5sb2NrVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucG93ZXJVbmxvY2tQdWxzZS5zZXQoZmFsc2UpLCAxMzUwKTtcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RhcnRQdWxzZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN0YXJ0UHVsc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHF1ZXVlQm90VHVybklmTmVlZGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnNjcmVlbigpICE9PSAnZ2FtZScgfHxcbiAgICAgIGdhbWUubW9kZSAhPT0gJ2xvY2FsJyB8fFxuICAgICAgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpICE9PSAnYm90JyB8fFxuICAgICAgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHxcbiAgICAgIGdhbWUuY3VycmVudFR1cm4gIT09IENIRVNTSU1BTFNfQk9UX0NPTE9SXG4gICAgKSB7XG4gICAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJvdFR1cm5UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm90VHVyblRpbWVyKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuYm90VHVyblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnBsYXlCb3RUdXJuKCksIENIRVNTSU1BTFNfQk9UX1RISU5LSU5HX01TKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheUJvdFR1cm4oKTogdm9pZCB7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIGdhbWUubW9kZSAhPT0gJ2xvY2FsJyB8fFxuICAgICAgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpICE9PSAnYm90JyB8fFxuICAgICAgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHxcbiAgICAgIGdhbWUuY3VycmVudFR1cm4gIT09IENIRVNTSU1BTFNfQk9UX0NPTE9SXG4gICAgKSB7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZSA9IGNob29zZUNoZXNzaW1hbHNCb3RNb3ZlKGdhbWUsIHRoaXMuc2VsZWN0ZWRCb3REaWZmaWN1bHR5KCkpO1xuICAgIGlmICghbW92ZSkge1xuICAgICAgdGhpcy5nYW1lLnNldChyZXNpZ25DaGVzc2ltYWxzR2FtZShnYW1lLCBDSEVTU0lNQUxTX0JPVF9DT0xPUikpO1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzVmljdG9yeSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuYW5pbWF0ZU1vdmUoZ2FtZSwgbW92ZSwgdXBkYXRlZCk7XG4gICAgICB0aGlzLnBsYXlNb3ZlU291bmQobW92ZSwgdHJ1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQm90VHVybigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ib3RUdXJuVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvdFR1cm5UaW1lcik7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYygpKSByZXR1cm47XG4gICAgaWYgKHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpO1xuICAgIHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQoZmFsc2UpO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQoZmFsc2UpLCAzNDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYyhnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlID0gdGhpcy5nYW1lKCkpOiBib29sZWFuIHtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0JvYXJkU29vbigpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmJvYXJkQW5jaG9yPy5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcbiAgICAgIH0sIDgwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheU1vdmVTb3VuZChtb3ZlOiBDaGVzc2ltYWxzTW92ZSwgaXNCb3QgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmIChtb3ZlLmFuaW1hbCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzUG93ZXIobW92ZS5hbmltYWwpO1xuICAgICAgaWYgKG1vdmUuY2FwdHVyZXNQaWVjZUlkICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMuYXVkaW8uY2hlc3NpbWFsc0NhcHR1cmUoKSwgMTUwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG1vdmUuY2FwdHVyZXNQaWVjZUlkKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNDYXB0dXJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0JvdCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzQm90TW92ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNNb3ZlKCk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXVlTW92ZUVmZmVjdChtb3ZlOiBDaGVzc2ltYWxzTW92ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKTtcblxuICAgIGlmICghbW92ZS5hbmltYWwgJiYgIW1vdmUuY2FwdHVyZXNQaWVjZUlkKSB7XG4gICAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tb3ZlRWZmZWN0LnNldCh1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlbGF5TXMgPSBNYXRoLm1heCgwLCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TIC0gOTApO1xuICAgIHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubW92ZUVmZmVjdC5zZXQoe1xuICAgICAgICBhbmltYWw6IG1vdmUuYW5pbWFsLFxuICAgICAgICBmcm9tOiB7IC4uLm1vdmUuZnJvbSB9LFxuICAgICAgICB0bzogeyAuLi5tb3ZlLnRvIH0sXG4gICAgICAgIGNhcHR1cmU6ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMubW92ZUVmZmVjdC5zZXQodW5kZWZpbmVkKSwgOTUwKTtcbiAgICB9LCBkZWxheU1zKTtcbiAgfVxuXG4gIHRvZ2dsZUFuaW1hbChhbmltYWw6IENoZXNzaW1hbHNBbmltYWxWaWV3KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgIXRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgfHwgdGhpcy5ib3RUaGlua2luZygpKSByZXR1cm47XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuc2VsZWN0ZWRBbmltYWwoKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldChjdXJyZW50ID09PSBhbmltYWwudHlwZSA/IHVuZGVmaW5lZCA6IGFuaW1hbC50eXBlKTtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRQaWVjZUlkKCkpIHtcbiAgICAgIGNvbnN0IGZpcnN0UGllY2UgPSB0aGlzLmdhbWUoKS5waWVjZXMuZmluZChcbiAgICAgICAgKHBpZWNlKSA9PiAhcGllY2UuY2FwdHVyZWQgJiYgcGllY2UuY29sb3IgPT09IHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuLFxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldChmaXJzdFBpZWNlPy5pZCk7XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uc2ltb25QYWQoYW5pbWFsLnRvbmUpO1xuICB9XG5cbiAgcGllY2VBdChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBDaGVzc2ltYWxzUGllY2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRDaGVzc2ltYWxzUGllY2VBdCh0aGlzLmdhbWUoKSwgeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzRGFya0NlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChyb3cgKyBjb2wpICUgMiA9PT0gMTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWRDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBpZWNlID0gdGhpcy5waWVjZUF0KHJvdywgY29sKTtcbiAgICByZXR1cm4gISFwaWVjZSAmJiBwaWVjZS5pZCA9PT0gdGhpcy5zZWxlY3RlZFBpZWNlSWQoKTtcbiAgfVxuXG4gIGlzTGVnYWxDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxlZ2FsTW92ZUtleXMoKS5oYXMocG9zaXRpb25LZXkoeyByb3csIGNvbCB9KSk7XG4gIH1cblxuICBpc0NhcHR1cmVDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhcHR1cmVNb3ZlS2V5cygpLmhhcyhwb3NpdGlvbktleSh7IHJvdywgY29sIH0pKTtcbiAgfVxuXG4gIGlzTGFzdE1vdmVDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhc3RNb3ZlID0gdGhpcy5nYW1lKCkubGFzdE1vdmU7XG4gICAgcmV0dXJuICF0aGlzLnNlbGVjdGVkUGllY2VJZCgpICYmICEhbGFzdE1vdmUgJiYgcG9zaXRpb25LZXkobGFzdE1vdmUudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZpbmdTb3VyY2VDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1vdmluZyA9IHRoaXMubW92aW5nUGllY2UoKTtcbiAgICBpZiAoIW1vdmluZykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlSb3dJbmRleChyb3cpID09PSBtb3ZpbmcuZnJvbVJvdyAmJiB0aGlzLmRpc3BsYXlDb2xJbmRleChjb2wpID09PSBtb3ZpbmcuZnJvbUNvbDtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyLCBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIGlmICghZWZmZWN0KSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGFuaW1hbCAmJiBlZmZlY3QuYW5pbWFsICE9PSBhbmltYWwpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gcG9zaXRpb25LZXkoZWZmZWN0LnRvKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdFNvdXJjZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgcmV0dXJuICEhZWZmZWN0ICYmIHBvc2l0aW9uS2V5KGVmZmVjdC5mcm9tKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdENhcHR1cmVDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIHJldHVybiAhIWVmZmVjdD8uY2FwdHVyZSAmJiBwb3NpdGlvbktleShlZmZlY3QudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgZmlsZUxhYmVsKGNvbDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NSArIGNvbCk7XG4gIH1cblxuICByYW5rTGFiZWwocm93OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmdhbWUoKS5ib2FyZFNpemUgLSByb3d9YDtcbiAgfVxuXG4gIHNob3dSYW5rTGFiZWwoY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29sID09PSB0aGlzLmRpc3BsYXlDb2xzKClbMF07XG4gIH1cblxuICBzaG93RmlsZUxhYmVsKHJvdzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuZGlzcGxheVJvd3MoKTtcbiAgICByZXR1cm4gcm93ID09PSByb3dzW3Jvd3MubGVuZ3RoIC0gMV07XG4gIH1cblxuICBwbGF5ZXJMYWJlbChjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyB0aGlzLnQoJ2NoZXNzaW1hbHNXaGl0ZScpIDogdGhpcy50KCdjaGVzc2ltYWxzQmxhY2snKTtcbiAgfVxuXG4gIG1vZGVDaGlwTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZScpIDogdGhpcy50KCdjaGVzc2ltYWxzT25lRGV2aWNlJyk7XG4gICAgfVxuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAocm9sZSA9PT0gJ3dhaXRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lV2FpdGluZycpO1xuICAgIGlmIChyb2xlID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVQZW5kaW5nJyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzU3BlY3RhdG9yJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBsYXllcicpO1xuICB9XG5cbiAgdHVyblRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JyAmJiBnYW1lLmN1cnJlbnRUdXJuID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUikge1xuICAgICAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90VGhpbmtpbmdUaXRsZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFR1cm5UaXRsZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09IGdhbWUuY3VycmVudFR1cm4pIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNZb3VyVHVybicpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDdXJyZW50VHVybicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wbGF5ZXJMYWJlbChnYW1lLmN1cnJlbnRUdXJuKSk7XG4gIH1cblxuICBub3JtYWxpemVHYW1lSWQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh2YWx1ZSk7XG4gIH1cblxuICBhc3luYyBjb3B5T25saW5lTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLm9ubGluZS5zaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQ/LndyaXRlVGV4dCh1cmwpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzTGlua0NvcGllZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzaGFyZU9ubGluZUxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUuc2hhcmVVcmwodGhpcy5nYW1lKCkuaWQsIHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCkpO1xuICAgIGlmIChuYXZpZ2F0b3Iuc2hhcmUpIHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5zaGFyZSh7IHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNUaXRsZScpLCB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNTaGFyZVRleHQnKSwgdXJsIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmNvcHlPbmxpbmVMaW5rKCk7XG4gIH1cblxuICBhc3luYyBzaGFyZVByb2plY3Rpb25MaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnByb2plY3Rpb25TaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgaWYgKG5hdmlnYXRvci5zaGFyZSkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25UaXRsZScpLFxuICAgICAgICB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNQcm9qZWN0aW9uU2hhcmVUZXh0JyksXG4gICAgICAgIHVybCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZD8ud3JpdGVUZXh0KHVybCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQcm9qZWN0aW9uTGlua0NvcGllZCcpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMjIwMCxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIGNhblJldmlld1BlbmRpbmdHdWVzdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICByZXR1cm4gISF1aWRcbiAgICAgICYmIGdhbWUubW9kZSA9PT0gJ29ubGluZSdcbiAgICAgICYmIGdhbWUuc3RhdHVzID09PSAnd2FpdGluZydcbiAgICAgICYmIGdhbWUub25saW5lPy5sb2JieT8udWlkID09PSB1aWRcbiAgICAgICYmICEhZ2FtZS5vbmxpbmUucGVuZGluZ0d1ZXN0O1xuICB9XG5cbiAgcGVuZGluZ0d1ZXN0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdD8ubmFtZSA/PyB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJyk7XG4gIH1cblxuICB3YWl0aW5nVGl0bGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0VGl0bGUnKTtcbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0xvYmJ5R3Vlc3RXYWl0aW5nVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1RpdGxlJyk7XG4gIH1cblxuICB3YWl0aW5nQm9keSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzSm9pblJlcXVlc3RCb2R5JykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBlbmRpbmdHdWVzdE5hbWUoKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9ubGluZVJvbGUoKSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTG9iYnlHdWVzdFdhaXRpbmdCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdCb2R5Jyk7XG4gIH1cblxuICBhc3luYyBhY2NlcHRPbmxpbmVHdWVzdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHJldHVybjtcbiAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQoJ2FjY2VwdCcpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub25saW5lLmFjY2VwdEd1ZXN0KHRoaXMuZ2FtZSgpLmlkKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc0d1ZXN0QWNjZXB0ZWQnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDIyMDAsIHBvc2l0aW9uOiAndG9wJyB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3Muc3VjY2VzcygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBhY2NlcHQgZ3Vlc3QgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLmVycm9yKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub25saW5lQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVqZWN0T25saW5lR3Vlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSByZXR1cm47XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdyZWplY3QnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5yZWplY3RHdWVzdCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNHdWVzdFJlamVjdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLndhcm5pbmcoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gcmVqZWN0IGd1ZXN0IGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5IaXN0b3J5R2FtZShlbnRyeTogQ2hlc3NpbWFsc0hpc3RvcnlFbnRyeSk6IHZvaWQge1xuICAgIHRoaXMub25saW5lSm9pbkNvZGUuc2V0KGVudHJ5LmdhbWVJZCk7XG4gICAgdm9pZCB0aGlzLm9wZW5PbmxpbmVHYW1lKGVudHJ5LmdhbWVJZCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2hlc3NpbWFsc0dhbWVSb3V0ZShlbnRyeS5nYW1lSWQpKTtcbiAgfVxuXG4gIGhpc3RvcnlPdXRjb21lTGFiZWwoZW50cnk6IENoZXNzaW1hbHNIaXN0b3J5RW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IG91dGNvbWVLZXkgPSBgY2hlc3NpbWFsc0hpc3Rvcnkke2VudHJ5Lm91dGNvbWVcbiAgICAgIC5zcGxpdCgnXycpXG4gICAgICAubWFwKChwYXJ0KSA9PiB0aGlzLmNhcGl0YWxpemUocGFydCkpXG4gICAgICAuam9pbignJyl9YDtcbiAgICBjb25zdCBvcHBvbmVudCA9IGVudHJ5Lm9wcG9uZW50TmFtZVxuICAgICAgPyBgIMK3ICR7dGhpcy50KCdjaGVzc2ltYWxzSGlzdG9yeUFnYWluc3QnKS5yZXBsYWNlKCd7cGxheWVyfScsIGVudHJ5Lm9wcG9uZW50TmFtZSl9YFxuICAgICAgOiAnJztcbiAgICByZXR1cm4gYCR7dGhpcy50KG91dGNvbWVLZXkpfSR7b3Bwb25lbnR9YDtcbiAgfVxuXG4gIGFzeW5jIHJlcXVlc3RPbmxpbmVSZW1hdGNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmdhbWUoKS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuO1xuICAgIGlmICh0aGlzLnJlbWF0Y2hTdGF0ZSgpID09PSAncmVxdWVzdGVkJyB8fCB0aGlzLnJlbWF0Y2hMb2FkaW5nKCkpIHJldHVybjtcbiAgICBjb25zdCBhY2NlcHRpbmcgPSB0aGlzLnJlbWF0Y2hTdGF0ZSgpID09PSAnaW5jb21pbmcnO1xuICAgIHRoaXMucmVtYXRjaExvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5yZXF1ZXN0UmVtYXRjaCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoYWNjZXB0aW5nID8gJ2NoZXNzaW1hbHNSZW1hdGNoQWNjZXB0ZWQnIDogJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkVG9hc3QnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDI0MDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZUhpc3RvcnlXYXRjaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpO1xuICAgIHRoaXMuaGlzdG9yeVdhdGNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMud2F0Y2hPbmxpbmVIaXN0b3J5KCksIDIyMCk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoT25saW5lSGlzdG9yeSgpOiB2b2lkIHtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZS5jdXJyZW50VWlkO1xuICAgIGlmICghdWlkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaGlzdG9yeVVpZCA9PT0gdWlkICYmIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbikgcmV0dXJuO1xuICAgIHRoaXMuaGlzdG9yeVVpZCA9IHVpZDtcbiAgICB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uID0gdGhpcy5vbmxpbmUud2F0Y2hIaXN0b3J5KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChoaXN0b3J5KSA9PiB0aGlzLm9ubGluZUhpc3Rvcnkuc2V0KGhpc3RvcnkpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMub25saW5lSGlzdG9yeS5zZXQoW10pLFxuICAgIH0pO1xuICB9XG5cbiAgdW5sb2NrZWRMYWJlbChjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkucGxheWVyc1tjb2xvcl0ucG93ZXJVbmxvY2tlZCA/IHRoaXMudCgnY2hlc3NpbWFsc1VubG9ja2VkJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2NrZWQnKTtcbiAgfVxuXG4gIGxvY2FsTW9kZUxhYmVsKG1vZGU6IENoZXNzaW1hbHNMb2NhbE1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnYm90JyA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZScpO1xuICB9XG5cbiAgbG9jYWxNb2RlRGVzY3JpcHRpb24obW9kZTogQ2hlc3NpbWFsc0xvY2FsTW9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1vZGUgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZUJvZHknKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZUJvZHknKTtcbiAgfVxuXG4gIGJvdERpZmZpY3VsdHlMYWJlbChkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSk6IHN0cmluZyB7XG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICdlYXN5JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdEVhc3knKTtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90SGFyZCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROb3JtYWwnKTtcbiAgfVxuXG4gIGFuaW1hbExhYmVsKHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzQW5pbWFsJHt0aGlzLmNhcGl0YWxpemUodHlwZSl9YCk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlSb3dJbmRleChyb3c6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyB0aGlzLmdhbWUoKS5ib2FyZFNpemUgLSAxIC0gcm93IDogcm93O1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Q29sSW5kZXgoY29sOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gdGhpcy5nYW1lKCkuYm9hcmRTaXplIC0gMSAtIGNvbCA6IGNvbDtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hPbmxpbmVHYW1lKGdhbWVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24gPSB0aGlzLm9ubGluZS53YXRjaEdhbWUoZ2FtZUlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHN0YXRlKSA9PiB7XG4gICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmdhbWUoKTtcbiAgICAgICAgdGhpcy5nYW1lLnNldChzdGF0ZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUuc2V0KHN0YXRlLmJvYXJkU2l6ZSk7XG4gICAgICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgICAgICBjb25zdCBwcmV2aW91c1BlbmRpbmdVaWQgPSBwcmV2aW91cy5pZCA9PT0gc3RhdGUuaWQgPyBwcmV2aW91cy5vbmxpbmU/LnBlbmRpbmdHdWVzdD8udWlkIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBuZXh0UGVuZGluZ1VpZCA9IHN0YXRlLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py51aWQ7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzdGF0ZS5zdGF0dXMgPT09ICd3YWl0aW5nJyAmJlxuICAgICAgICAgIHN0YXRlLm9ubGluZT8ubG9iYnk/LnVpZCA9PT0gdGhpcy5vbmxpbmUuY3VycmVudFVpZCAmJlxuICAgICAgICAgICEhbmV4dFBlbmRpbmdVaWQgJiZcbiAgICAgICAgICBuZXh0UGVuZGluZ1VpZCAhPT0gcHJldmlvdXNQZW5kaW5nVWlkXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc0pvaW5SZXF1ZXN0KCk7XG4gICAgICAgICAgdm9pZCB0aGlzLmhhcHRpY3Muc3VjY2VzcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwcmV2aW91cy5jdXJyZW50VHVybiAhPT0gc3RhdGUuY3VycmVudFR1cm4gJiZcbiAgICAgICAgICBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiZcbiAgICAgICAgICAhdGhpcy5zaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYyhzdGF0ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiYgcHJldmlvdXMuc3RhdHVzICE9PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzVmljdG9yeSgpO1xuICAgICAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWluaUdhbWVzQmFzZVJvdXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGUgPSAodGhpcy5taW5pR2FtZXNSb3V0ZSB8fCAnL21pbmktZ2FtZXMnKS50cmltKCk7XG4gICAgcmV0dXJuIGAvJHtyb3V0ZS5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJykgfHwgJ21pbmktZ2FtZXMnfWA7XG4gIH1cblxuICBwcml2YXRlIGNoZXNzaW1hbHNHYW1lUm91dGUoZ2FtZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpfS9jaGVzc2ltYWxzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZChnYW1lSWQpKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBjYXBpdGFsaXplKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnNsaWNlKDEpO1xuICB9XG59XG4iXX0=