valtech-components 4.0.370 → 4.0.372
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.
- package/esm2022/lib/components/organisms/mini-games/chessimals-game.component.mjs +3 -3
- package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +5 -5
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/mini-games/public-api.mjs +6 -19
- package/fesm2022/valtech-components-mini-games.mjs +5 -18
- package/fesm2022/valtech-components-mini-games.mjs.map +1 -1
- package/fesm2022/valtech-components.mjs +7 -7
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +2 -2
- package/lib/components/atoms/text/text.component.d.ts +1 -1
- package/lib/components/atoms/user-avatar/user-avatar.component.d.ts +1 -1
- package/lib/components/molecules/features-list/features-list.component.d.ts +2 -2
- package/lib/components/molecules/load-more/load-more.component.d.ts +1 -1
- package/lib/components/molecules/operation-reference/operation-reference.component.d.ts +1 -1
- package/lib/components/molecules/phone-display/phone-display.component.d.ts +1 -1
- package/lib/components/organisms/article/article.component.d.ts +7 -7
- package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +1 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1183,7 +1183,7 @@ export class ChessimalsGameComponent {
|
|
|
1183
1183
|
/>
|
|
1184
1184
|
</ng-template>
|
|
1185
1185
|
</ion-modal>
|
|
1186
|
-
`, isInline: true, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: var(--ion-card-background, #ffffff);--chessimals-border: var(--ion-border-color, #e7e4ea);--chessimals-text: var(--ion-color-dark, #2f2a3a);--chessimals-muted: var(--ion-color-medium, #6f6a7a);--chessimals-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--chessimals-primary: var(--ion-color-primary, #ff00b2);--chessimals-secondary: var(--ion-color-tertiary, #6a2de2);--chessimals-selected: #2fffa1;--chessimals-selected-rgb: 47, 255, 161;--chessimals-move: var(--ion-color-secondary, #3dc2ff);--chessimals-move-rgb: var(--ion-color-secondary-rgb, 61, 194, 255);--chessimals-capture: #00e6d0;--chessimals-capture-rgb: 0, 230, 208;--chessimals-last: #b98cff;--chessimals-last-rgb: 185, 140, 255;--chessimals-cell-light: var(--chessimals-panel);--chessimals-cell-dark: var(--chessimals-soft);--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 .08rem rgba(47, 42, 58, .32)) drop-shadow(0 .18rem .22rem rgba(47, 42, 58, .16));--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 .08rem rgba(255, 255, 255, .18)) drop-shadow(0 .22rem .28rem rgba(0, 0, 0, .26));--chessimals-animal-face-bg: radial-gradient(circle at 32% 24%, rgba(255, 255, 255, .88), transparent 30%), color-mix(in srgb, var(--chessimals-text) 6%, var(--chessimals-panel));--chessimals-animal-face-border: color-mix(in srgb, var(--chessimals-text) 13%, transparent);--chessimals-animal-face-filter: drop-shadow(0 .12rem .12rem rgba(0, 0, 0, .16));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;max-width:48rem;margin:0 auto;color:var(--chessimals-text)}.chessimals-resume-splash{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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-contrast, #fff);font-size:2.25rem;box-shadow:0 1.25rem 3rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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)}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #231f2d;--chessimals-border: rgba(255, 255, 255, .13);--chessimals-text: #fff8ff;--chessimals-muted: rgba(255, 248, 255, .68);--chessimals-soft: rgba(255, 255, 255, .07);--chessimals-cell-light: #24202e;--chessimals-cell-dark: #54515d;--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 .1rem rgba(255, 255, 255, .62)) drop-shadow(0 .18rem .24rem 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 .08rem rgba(255, 255, 255, .46)) drop-shadow(0 0 .28rem rgba(255, 255, 255, .18)) drop-shadow(0 .22rem .34rem rgba(0, 0, 0, .42));--chessimals-animal-face-bg: radial-gradient(circle at 32% 24%, rgba(255, 255, 255, .18), transparent 30%), linear-gradient(145deg, #f7f0ff, #d8d1e4);--chessimals-animal-face-border: rgba(255, 255, 255, .72);--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;overflow:hidden;border-radius:1.75rem;padding:clamp(2rem,7vw,4rem);background:radial-gradient(circle at 22% 18%,rgba(255,255,255,.52),transparent 16%),linear-gradient(135deg,var(--chessimals-primary),var(--chessimals-secondary));color:#fff;text-align:center}.chessimals-hero__icon{font-size:clamp(2.5rem,10vw,5rem);line-height:1}.chessimals-hero h1{margin:0;font-size:clamp(3rem,12vw,5.5rem);line-height:.9;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(--ion-color-primary-rgb, 255, 0, 178),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{border-color:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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-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-game{display:grid;gap:.875rem}.chessimals-turn-card{display:flex;align-items:center;justify-content:space-between;gap:.875rem;min-height:4.5rem;overflow:visible;border:1px solid rgba(var(--ion-color-primary-rgb, 255, 0, 178),.24);border-radius:1.125rem;padding:.75rem .875rem .8rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2),rgba(var(--ion-color-tertiary-rgb, 106, 45, 226),.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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-rgb, 255, 0, 178),.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:.25rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.35rem .65rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1.05rem,4vw,1.45rem);line-height:1.14;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.9rem;line-height:1.35}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.65rem;min-width:12rem;max-width:min(20rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.45rem .7rem .45rem .5rem;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 2rem;width:2rem;height:2rem;border-radius:999px;background:var(--chessimals-primary);color:var(--ion-color-primary-contrast, #fff);font-size:1rem;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:.64rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.92rem;line-height:1.12;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.72rem;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.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(--ion-color-primary-rgb, 255, 0, 178),.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{grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.375rem;align-content:center;min-width:0;min-height:5.75rem;padding:1rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;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(--ion-color-primary-rgb, 255, 0, 178),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(1.08rem,3vw,1.55rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted)}.chessimals-board-wrap{display:grid;justify-items:center;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{--chessimals-coord-size: 1.35rem;--chessimals-coord-gap: .55rem;display:grid;grid-template-columns:var(--chessimals-coord-size) minmax(0,1fr) var(--chessimals-coord-size);grid-template-rows:var(--chessimals-coord-size) minmax(0,1fr) var(--chessimals-coord-size);gap:var(--chessimals-coord-gap);align-items:stretch;justify-content:center;width:min(100%,44rem)}.chessimals-file-labels,.chessimals-rank-labels{display:grid;color:color-mix(in srgb,var(--chessimals-muted) 82%,var(--chessimals-text));font-size:clamp(.62rem,2.1vw,.78rem);font-weight:950;letter-spacing:.04em;line-height:1;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-file-labels{grid-column:2;grid-row:1;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));align-items:end;text-align:center}.chessimals-file-labels--bottom{grid-row:3;align-items:start}.chessimals-rank-labels{grid-column:1;grid-row:2;grid-template-rows:repeat(var(--board-size),minmax(0,1fr));align-items:center;justify-items:end}.chessimals-rank-labels--right{grid-column:3;justify-items:start}.chessimals-board{position:relative;grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));width:100%;aspect-ratio:1;overflow:hidden;border:1px solid var(--chessimals-border);border-radius:.95rem;background:var(--chessimals-border)}@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-selected-rgb),.62);pointer-events:none}.chessimals-board-overlay{position:absolute;inset:0;z-index:3;display:grid;place-content:center;gap:.45rem;padding:1.25rem;background:radial-gradient(circle at 50% 38%,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28),transparent 33%),#0d0a12b8;color:#fff;text-align:center;backdrop-filter:blur(2px)}.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}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.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:var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.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:.35rem;z-index:2;border:.14rem 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{background:linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.12),#ffffff0f),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .2rem var(--chessimals-capture),inset 0 0 .42rem #ffffff6b,inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.22),0 0 .42rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.7s ease-in-out infinite}.chessimals-cell.is-capture:before{display:none}.chessimals-cell.is-capture:after{position:absolute;inset:.28rem;z-index:3;border:.14rem solid rgba(255,255,255,.84);border-radius:.58rem;box-shadow:0 0 .6rem #ffffff7a,inset 0 0 .85rem rgba(var(--chessimals-capture-rgb),.18);content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.6s ease-in-out infinite}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .18rem var(--chessimals-capture),inset 0 0 .38rem #ffffff6b,inset 0 0 .86rem rgba(var(--chessimals-capture-rgb),.2),0 0 .34rem rgba(var(--chessimals-capture-rgb),.28)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .22rem var(--chessimals-capture),inset 0 0 .58rem #ffffff94,inset 0 0 1.18rem rgba(var(--chessimals-capture-rgb),.3),0 0 .52rem rgba(var(--chessimals-capture-rgb),.42)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:clamp(2.1rem,7.8vw,3.95rem);height:clamp(2.1rem,7.8vw,3.95rem);color:var(--ion-color-primary, #ff00b2);--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:.075rem 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 -.08rem 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .22rem -.18rem #ffffff12,inset 0 -.08rem 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:39%;width:74%;height:18%;border-radius:999px;box-shadow:inset -.18rem .14rem #ffffff0f,inset 0 -.08rem 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 -.16rem .16rem #ffffff0d}.chessimals-piece__base{bottom:2%;width:84%;height:20%;border-radius:.5rem .5rem .24rem .24rem;box-shadow:inset -.16rem .12rem #ffffff0d}.chessimals-target{width:.85rem;height:.85rem;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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-rgb, 255, 0, 178),.16),0 .9rem 2rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.13);transform:translateY(-1px)}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:1rem;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)}.chessimals-animal-face img{display:block;width:72%;height:72%;object-fit:contain;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:radial-gradient(circle at 34% 24%,rgba(255,255,255,.96),transparent 32%),linear-gradient(145deg,#fff,#f0ecf7);color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px #2f2a3a1f,0 .75rem 1.6rem rgba(var(--chessimals-selected-rgb),.14)}.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(--ion-color-primary-rgb, 255, 0, 178),.42);box-shadow:0 1rem 2.4rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--ion-color-primary-rgb, 255, 0, 178),0)}50%{box-shadow:0 0 1.4rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.22)}}.chessimals-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}@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(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--ion-color-primary, #ff00b2);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{min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--ion-color-primary-contrast, #fff);box-shadow:0 1.125rem 2.8rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}@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:.65rem;min-height:0;border-radius:1rem;padding:.7rem}.chessimals-turn-card__chip{padding:.25rem .55rem;font-size:.66rem;letter-spacing:.045em;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(1.1rem,6vw,1.45rem);line-height:1.14}.chessimals-turn-card p{font-size:.82rem;line-height:1.3}.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.75rem;border-radius:.95rem;padding:.45rem .4rem}.chessimals-status small{font-size:.7rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.92rem,3.8vw,1.08rem);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-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-board-frame{--chessimals-coord-size: 1.05rem;--chessimals-coord-gap: .42rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.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"] }] }); }
|
|
1186
|
+
`, isInline: true, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: var(--ion-card-background, #ffffff);--chessimals-border: var(--ion-border-color, #e7e4ea);--chessimals-text: var(--ion-color-dark, #2f2a3a);--chessimals-muted: var(--ion-color-medium, #6f6a7a);--chessimals-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--chessimals-primary: var(--ion-color-primary, #ff00b2);--chessimals-secondary: var(--ion-color-tertiary, #6a2de2);--chessimals-selected: #2fffa1;--chessimals-selected-rgb: 47, 255, 161;--chessimals-move: var(--ion-color-secondary, #3dc2ff);--chessimals-move-rgb: var(--ion-color-secondary-rgb, 61, 194, 255);--chessimals-capture: #00e6d0;--chessimals-capture-rgb: 0, 230, 208;--chessimals-last: #b98cff;--chessimals-last-rgb: 185, 140, 255;--chessimals-cell-light: var(--chessimals-panel);--chessimals-cell-dark: var(--chessimals-soft);--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 .08rem rgba(47, 42, 58, .32)) drop-shadow(0 .18rem .22rem rgba(47, 42, 58, .16));--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 .08rem rgba(255, 255, 255, .18)) drop-shadow(0 .22rem .28rem rgba(0, 0, 0, .26));--chessimals-animal-face-bg: radial-gradient(circle at 32% 24%, rgba(255, 255, 255, .88), transparent 30%), color-mix(in srgb, var(--chessimals-text) 6%, var(--chessimals-panel));--chessimals-animal-face-border: color-mix(in srgb, var(--chessimals-text) 13%, transparent);--chessimals-animal-face-filter: drop-shadow(0 .12rem .12rem rgba(0, 0, 0, .16));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;max-width:48rem;margin:0 auto;color:var(--chessimals-text)}.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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-contrast, #fff);font-size:2.25rem;box-shadow:0 1.25rem 3rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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)}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #231f2d;--chessimals-border: rgba(255, 255, 255, .13);--chessimals-text: #fff8ff;--chessimals-muted: rgba(255, 248, 255, .68);--chessimals-soft: rgba(255, 255, 255, .07);--chessimals-cell-light: #24202e;--chessimals-cell-dark: #54515d;--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 .1rem rgba(255, 255, 255, .62)) drop-shadow(0 .18rem .24rem 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 .08rem rgba(255, 255, 255, .46)) drop-shadow(0 0 .28rem rgba(255, 255, 255, .18)) drop-shadow(0 .22rem .34rem rgba(0, 0, 0, .42));--chessimals-animal-face-bg: radial-gradient(circle at 32% 24%, rgba(255, 255, 255, .18), transparent 30%), linear-gradient(145deg, #f7f0ff, #d8d1e4);--chessimals-animal-face-border: rgba(255, 255, 255, .72);--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;overflow:hidden;border-radius:1.75rem;padding:clamp(2rem,7vw,4rem);background:radial-gradient(circle at 22% 18%,rgba(255,255,255,.52),transparent 16%),linear-gradient(135deg,var(--chessimals-primary),var(--chessimals-secondary));color:#fff;text-align:center}.chessimals-hero__icon{font-size:clamp(2.5rem,10vw,5rem);line-height:1}.chessimals-hero h1{margin:0;font-size:clamp(3rem,12vw,5.5rem);line-height:.9;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(--ion-color-primary-rgb, 255, 0, 178),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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-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-game{display:grid;gap:.875rem}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.875rem;min-height:4.5rem;overflow:visible;border:1px solid rgba(var(--ion-color-primary-rgb, 255, 0, 178),.24);border-radius:1.125rem;padding:.75rem .875rem .8rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2),rgba(var(--ion-color-tertiary-rgb, 106, 45, 226),.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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-rgb, 255, 0, 178),.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:.25rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.35rem .65rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1.05rem,4vw,1.45rem);line-height:1.14;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.9rem;line-height:1.35}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.65rem;min-width:12rem;max-width:min(20rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.45rem .7rem .45rem .5rem;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 2rem;width:2rem;height:2rem;border-radius:999px;background:var(--chessimals-primary);color:var(--ion-color-primary-contrast, #fff);font-size:1rem;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:.64rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.92rem;line-height:1.12;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.72rem;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-result{order:5}.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(--ion-color-primary-rgb, 255, 0, 178),.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:.375rem;align-content:center;min-width:0;min-height:5.75rem;padding:1rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;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(--ion-color-primary-rgb, 255, 0, 178),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(1.08rem,3vw,1.55rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted)}.chessimals-board-wrap{display:grid;justify-items:center;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{--chessimals-coord-size: 1.35rem;--chessimals-coord-gap: .55rem;display:grid;grid-template-columns:var(--chessimals-coord-size) minmax(0,1fr) var(--chessimals-coord-size);grid-template-rows:var(--chessimals-coord-size) minmax(0,1fr) var(--chessimals-coord-size);gap:var(--chessimals-coord-gap);align-items:stretch;justify-content:center;width:min(100%,44rem)}.chessimals-file-labels,.chessimals-rank-labels{display:grid;color:color-mix(in srgb,var(--chessimals-muted) 82%,var(--chessimals-text));font-size:clamp(.62rem,2.1vw,.78rem);font-weight:950;letter-spacing:.04em;line-height:1;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-file-labels{grid-column:2;grid-row:1;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));align-items:end;text-align:center}.chessimals-file-labels--bottom{grid-row:3;align-items:start}.chessimals-rank-labels{grid-column:1;grid-row:2;grid-template-rows:repeat(var(--board-size),minmax(0,1fr));align-items:center;justify-items:end}.chessimals-rank-labels--right{grid-column:3;justify-items:start}.chessimals-board{position:relative;grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));width:100%;aspect-ratio:1;overflow:hidden;border:1px solid var(--chessimals-border);border-radius:.95rem;background:var(--chessimals-border)}@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-selected-rgb),.62);pointer-events:none}.chessimals-board-overlay{position:absolute;inset:0;z-index:3;display:grid;place-content:center;gap:.45rem;padding:1.25rem;background:radial-gradient(circle at 50% 38%,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28),transparent 33%),#0d0a12b8;color:#fff;text-align:center;backdrop-filter:blur(2px)}.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}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.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:var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.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:.35rem;z-index:2;border:.14rem 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{background:linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.12),#ffffff0f),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .2rem var(--chessimals-capture),inset 0 0 .42rem #ffffff6b,inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.22),0 0 .42rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.7s ease-in-out infinite}.chessimals-cell.is-capture:before{display:none}.chessimals-cell.is-capture:after{position:absolute;inset:.28rem;z-index:3;border:.14rem solid rgba(255,255,255,.84);border-radius:.58rem;box-shadow:0 0 .6rem #ffffff7a,inset 0 0 .85rem rgba(var(--chessimals-capture-rgb),.18);content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.6s ease-in-out infinite}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .18rem var(--chessimals-capture),inset 0 0 .38rem #ffffff6b,inset 0 0 .86rem rgba(var(--chessimals-capture-rgb),.2),0 0 .34rem rgba(var(--chessimals-capture-rgb),.28)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .22rem var(--chessimals-capture),inset 0 0 .58rem #ffffff94,inset 0 0 1.18rem rgba(var(--chessimals-capture-rgb),.3),0 0 .52rem rgba(var(--chessimals-capture-rgb),.42)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:clamp(2.1rem,7.8vw,3.95rem);height:clamp(2.1rem,7.8vw,3.95rem);color:var(--ion-color-primary, #ff00b2);--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:.075rem 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 -.08rem 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .22rem -.18rem #ffffff12,inset 0 -.08rem 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:39%;width:74%;height:18%;border-radius:999px;box-shadow:inset -.18rem .14rem #ffffff0f,inset 0 -.08rem 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 -.16rem .16rem #ffffff0d}.chessimals-piece__base{bottom:2%;width:84%;height:20%;border-radius:.5rem .5rem .24rem .24rem;box-shadow:inset -.16rem .12rem #ffffff0d}.chessimals-target{width:.85rem;height:.85rem;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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-rgb, 255, 0, 178),.16),0 .9rem 2rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.13);transform:translateY(-1px)}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:1rem;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)}.chessimals-animal-face img{display:block;width:72%;height:72%;object-fit:contain;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:radial-gradient(circle at 34% 24%,rgba(255,255,255,.96),transparent 32%),linear-gradient(145deg,#fff,#f0ecf7);color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px #2f2a3a1f,0 .75rem 1.6rem rgba(var(--chessimals-selected-rgb),.14)}.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(--ion-color-primary-rgb, 255, 0, 178),.42);box-shadow:0 1rem 2.4rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--ion-color-primary-rgb, 255, 0, 178),0)}50%{box-shadow:0 0 1.4rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.22)}}.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}@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(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--ion-color-primary, #ff00b2);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{min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--ion-color-primary-contrast, #fff);box-shadow:0 1.125rem 2.8rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}@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:.65rem;min-height:0;border-radius:1rem;padding:.7rem}.chessimals-turn-card__chip{padding:.25rem .55rem;font-size:.66rem;letter-spacing:.045em;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(1.1rem,6vw,1.45rem);line-height:1.14}.chessimals-turn-card p{font-size:.82rem;line-height:1.3}.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.75rem;border-radius:.95rem;padding:.45rem .4rem}.chessimals-status small{font-size:.7rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.92rem,3.8vw,1.08rem);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-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-board-frame{--chessimals-coord-size: 1.05rem;--chessimals-coord-gap: .42rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.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"] }] }); }
|
|
1187
1187
|
}
|
|
1188
1188
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChessimalsGameComponent, decorators: [{
|
|
1189
1189
|
type: Component,
|
|
@@ -1607,11 +1607,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
1607
1607
|
/>
|
|
1608
1608
|
</ng-template>
|
|
1609
1609
|
</ion-modal>
|
|
1610
|
-
`, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: var(--ion-card-background, #ffffff);--chessimals-border: var(--ion-border-color, #e7e4ea);--chessimals-text: var(--ion-color-dark, #2f2a3a);--chessimals-muted: var(--ion-color-medium, #6f6a7a);--chessimals-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--chessimals-primary: var(--ion-color-primary, #ff00b2);--chessimals-secondary: var(--ion-color-tertiary, #6a2de2);--chessimals-selected: #2fffa1;--chessimals-selected-rgb: 47, 255, 161;--chessimals-move: var(--ion-color-secondary, #3dc2ff);--chessimals-move-rgb: var(--ion-color-secondary-rgb, 61, 194, 255);--chessimals-capture: #00e6d0;--chessimals-capture-rgb: 0, 230, 208;--chessimals-last: #b98cff;--chessimals-last-rgb: 185, 140, 255;--chessimals-cell-light: var(--chessimals-panel);--chessimals-cell-dark: var(--chessimals-soft);--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 .08rem rgba(47, 42, 58, .32)) drop-shadow(0 .18rem .22rem rgba(47, 42, 58, .16));--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 .08rem rgba(255, 255, 255, .18)) drop-shadow(0 .22rem .28rem rgba(0, 0, 0, .26));--chessimals-animal-face-bg: radial-gradient(circle at 32% 24%, rgba(255, 255, 255, .88), transparent 30%), color-mix(in srgb, var(--chessimals-text) 6%, var(--chessimals-panel));--chessimals-animal-face-border: color-mix(in srgb, var(--chessimals-text) 13%, transparent);--chessimals-animal-face-filter: drop-shadow(0 .12rem .12rem rgba(0, 0, 0, .16));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;max-width:48rem;margin:0 auto;color:var(--chessimals-text)}.chessimals-resume-splash{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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-contrast, #fff);font-size:2.25rem;box-shadow:0 1.25rem 3rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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)}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #231f2d;--chessimals-border: rgba(255, 255, 255, .13);--chessimals-text: #fff8ff;--chessimals-muted: rgba(255, 248, 255, .68);--chessimals-soft: rgba(255, 255, 255, .07);--chessimals-cell-light: #24202e;--chessimals-cell-dark: #54515d;--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 .1rem rgba(255, 255, 255, .62)) drop-shadow(0 .18rem .24rem 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 .08rem rgba(255, 255, 255, .46)) drop-shadow(0 0 .28rem rgba(255, 255, 255, .18)) drop-shadow(0 .22rem .34rem rgba(0, 0, 0, .42));--chessimals-animal-face-bg: radial-gradient(circle at 32% 24%, rgba(255, 255, 255, .18), transparent 30%), linear-gradient(145deg, #f7f0ff, #d8d1e4);--chessimals-animal-face-border: rgba(255, 255, 255, .72);--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;overflow:hidden;border-radius:1.75rem;padding:clamp(2rem,7vw,4rem);background:radial-gradient(circle at 22% 18%,rgba(255,255,255,.52),transparent 16%),linear-gradient(135deg,var(--chessimals-primary),var(--chessimals-secondary));color:#fff;text-align:center}.chessimals-hero__icon{font-size:clamp(2.5rem,10vw,5rem);line-height:1}.chessimals-hero h1{margin:0;font-size:clamp(3rem,12vw,5.5rem);line-height:.9;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(--ion-color-primary-rgb, 255, 0, 178),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{border-color:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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-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-game{display:grid;gap:.875rem}.chessimals-turn-card{display:flex;align-items:center;justify-content:space-between;gap:.875rem;min-height:4.5rem;overflow:visible;border:1px solid rgba(var(--ion-color-primary-rgb, 255, 0, 178),.24);border-radius:1.125rem;padding:.75rem .875rem .8rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2),rgba(var(--ion-color-tertiary-rgb, 106, 45, 226),.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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-rgb, 255, 0, 178),.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:.25rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.35rem .65rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1.05rem,4vw,1.45rem);line-height:1.14;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.9rem;line-height:1.35}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.65rem;min-width:12rem;max-width:min(20rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.45rem .7rem .45rem .5rem;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 2rem;width:2rem;height:2rem;border-radius:999px;background:var(--chessimals-primary);color:var(--ion-color-primary-contrast, #fff);font-size:1rem;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:.64rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.92rem;line-height:1.12;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.72rem;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.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(--ion-color-primary-rgb, 255, 0, 178),.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{grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.375rem;align-content:center;min-width:0;min-height:5.75rem;padding:1rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;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(--ion-color-primary-rgb, 255, 0, 178),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(1.08rem,3vw,1.55rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted)}.chessimals-board-wrap{display:grid;justify-items:center;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{--chessimals-coord-size: 1.35rem;--chessimals-coord-gap: .55rem;display:grid;grid-template-columns:var(--chessimals-coord-size) minmax(0,1fr) var(--chessimals-coord-size);grid-template-rows:var(--chessimals-coord-size) minmax(0,1fr) var(--chessimals-coord-size);gap:var(--chessimals-coord-gap);align-items:stretch;justify-content:center;width:min(100%,44rem)}.chessimals-file-labels,.chessimals-rank-labels{display:grid;color:color-mix(in srgb,var(--chessimals-muted) 82%,var(--chessimals-text));font-size:clamp(.62rem,2.1vw,.78rem);font-weight:950;letter-spacing:.04em;line-height:1;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-file-labels{grid-column:2;grid-row:1;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));align-items:end;text-align:center}.chessimals-file-labels--bottom{grid-row:3;align-items:start}.chessimals-rank-labels{grid-column:1;grid-row:2;grid-template-rows:repeat(var(--board-size),minmax(0,1fr));align-items:center;justify-items:end}.chessimals-rank-labels--right{grid-column:3;justify-items:start}.chessimals-board{position:relative;grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));width:100%;aspect-ratio:1;overflow:hidden;border:1px solid var(--chessimals-border);border-radius:.95rem;background:var(--chessimals-border)}@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-selected-rgb),.62);pointer-events:none}.chessimals-board-overlay{position:absolute;inset:0;z-index:3;display:grid;place-content:center;gap:.45rem;padding:1.25rem;background:radial-gradient(circle at 50% 38%,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28),transparent 33%),#0d0a12b8;color:#fff;text-align:center;backdrop-filter:blur(2px)}.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}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.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:var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.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:.35rem;z-index:2;border:.14rem 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{background:linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.12),#ffffff0f),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .2rem var(--chessimals-capture),inset 0 0 .42rem #ffffff6b,inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.22),0 0 .42rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.7s ease-in-out infinite}.chessimals-cell.is-capture:before{display:none}.chessimals-cell.is-capture:after{position:absolute;inset:.28rem;z-index:3;border:.14rem solid rgba(255,255,255,.84);border-radius:.58rem;box-shadow:0 0 .6rem #ffffff7a,inset 0 0 .85rem rgba(var(--chessimals-capture-rgb),.18);content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.6s ease-in-out infinite}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .18rem var(--chessimals-capture),inset 0 0 .38rem #ffffff6b,inset 0 0 .86rem rgba(var(--chessimals-capture-rgb),.2),0 0 .34rem rgba(var(--chessimals-capture-rgb),.28)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .22rem var(--chessimals-capture),inset 0 0 .58rem #ffffff94,inset 0 0 1.18rem rgba(var(--chessimals-capture-rgb),.3),0 0 .52rem rgba(var(--chessimals-capture-rgb),.42)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:clamp(2.1rem,7.8vw,3.95rem);height:clamp(2.1rem,7.8vw,3.95rem);color:var(--ion-color-primary, #ff00b2);--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:.075rem 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 -.08rem 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .22rem -.18rem #ffffff12,inset 0 -.08rem 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:39%;width:74%;height:18%;border-radius:999px;box-shadow:inset -.18rem .14rem #ffffff0f,inset 0 -.08rem 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 -.16rem .16rem #ffffff0d}.chessimals-piece__base{bottom:2%;width:84%;height:20%;border-radius:.5rem .5rem .24rem .24rem;box-shadow:inset -.16rem .12rem #ffffff0d}.chessimals-target{width:.85rem;height:.85rem;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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-rgb, 255, 0, 178),.16),0 .9rem 2rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.13);transform:translateY(-1px)}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:1rem;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)}.chessimals-animal-face img{display:block;width:72%;height:72%;object-fit:contain;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:radial-gradient(circle at 34% 24%,rgba(255,255,255,.96),transparent 32%),linear-gradient(145deg,#fff,#f0ecf7);color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px #2f2a3a1f,0 .75rem 1.6rem rgba(var(--chessimals-selected-rgb),.14)}.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(--ion-color-primary-rgb, 255, 0, 178),.42);box-shadow:0 1rem 2.4rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--ion-color-primary-rgb, 255, 0, 178),0)}50%{box-shadow:0 0 1.4rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.22)}}.chessimals-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}@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(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--ion-color-primary, #ff00b2);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{min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--ion-color-primary-contrast, #fff);box-shadow:0 1.125rem 2.8rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}@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:.65rem;min-height:0;border-radius:1rem;padding:.7rem}.chessimals-turn-card__chip{padding:.25rem .55rem;font-size:.66rem;letter-spacing:.045em;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(1.1rem,6vw,1.45rem);line-height:1.14}.chessimals-turn-card p{font-size:.82rem;line-height:1.3}.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.75rem;border-radius:.95rem;padding:.45rem .4rem}.chessimals-status small{font-size:.7rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.92rem,3.8vw,1.08rem);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-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-board-frame{--chessimals-coord-size: 1.05rem;--chessimals-coord-gap: .42rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-moving-piece{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"] }]
|
|
1610
|
+
`, styles: [":host{display:block}.chessimals-shell{--chessimals-panel: var(--ion-card-background, #ffffff);--chessimals-border: var(--ion-border-color, #e7e4ea);--chessimals-text: var(--ion-color-dark, #2f2a3a);--chessimals-muted: var(--ion-color-medium, #6f6a7a);--chessimals-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--chessimals-primary: var(--ion-color-primary, #ff00b2);--chessimals-secondary: var(--ion-color-tertiary, #6a2de2);--chessimals-selected: #2fffa1;--chessimals-selected-rgb: 47, 255, 161;--chessimals-move: var(--ion-color-secondary, #3dc2ff);--chessimals-move-rgb: var(--ion-color-secondary-rgb, 61, 194, 255);--chessimals-capture: #00e6d0;--chessimals-capture-rgb: 0, 230, 208;--chessimals-last: #b98cff;--chessimals-last-rgb: 185, 140, 255;--chessimals-cell-light: var(--chessimals-panel);--chessimals-cell-dark: var(--chessimals-soft);--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 .08rem rgba(47, 42, 58, .32)) drop-shadow(0 .18rem .22rem rgba(47, 42, 58, .16));--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 .08rem rgba(255, 255, 255, .18)) drop-shadow(0 .22rem .28rem rgba(0, 0, 0, .26));--chessimals-animal-face-bg: radial-gradient(circle at 32% 24%, rgba(255, 255, 255, .88), transparent 30%), color-mix(in srgb, var(--chessimals-text) 6%, var(--chessimals-panel));--chessimals-animal-face-border: color-mix(in srgb, var(--chessimals-text) 13%, transparent);--chessimals-animal-face-filter: drop-shadow(0 .12rem .12rem rgba(0, 0, 0, .16));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;max-width:48rem;margin:0 auto;color:var(--chessimals-text)}.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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-contrast, #fff);font-size:2.25rem;box-shadow:0 1.25rem 3rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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)}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #231f2d;--chessimals-border: rgba(255, 255, 255, .13);--chessimals-text: #fff8ff;--chessimals-muted: rgba(255, 248, 255, .68);--chessimals-soft: rgba(255, 255, 255, .07);--chessimals-cell-light: #24202e;--chessimals-cell-dark: #54515d;--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 .1rem rgba(255, 255, 255, .62)) drop-shadow(0 .18rem .24rem 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 .08rem rgba(255, 255, 255, .46)) drop-shadow(0 0 .28rem rgba(255, 255, 255, .18)) drop-shadow(0 .22rem .34rem rgba(0, 0, 0, .42));--chessimals-animal-face-bg: radial-gradient(circle at 32% 24%, rgba(255, 255, 255, .18), transparent 30%), linear-gradient(145deg, #f7f0ff, #d8d1e4);--chessimals-animal-face-border: rgba(255, 255, 255, .72);--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;overflow:hidden;border-radius:1.75rem;padding:clamp(2rem,7vw,4rem);background:radial-gradient(circle at 22% 18%,rgba(255,255,255,.52),transparent 16%),linear-gradient(135deg,var(--chessimals-primary),var(--chessimals-secondary));color:#fff;text-align:center}.chessimals-hero__icon{font-size:clamp(2.5rem,10vw,5rem);line-height:1}.chessimals-hero h1{margin:0;font-size:clamp(3rem,12vw,5.5rem);line-height:.9;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(--ion-color-primary-rgb, 255, 0, 178),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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-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-game{display:grid;gap:.875rem}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.875rem;min-height:4.5rem;overflow:visible;border:1px solid rgba(var(--ion-color-primary-rgb, 255, 0, 178),.24);border-radius:1.125rem;padding:.75rem .875rem .8rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2),rgba(var(--ion-color-tertiary-rgb, 106, 45, 226),.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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-rgb, 255, 0, 178),.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:.25rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.35rem .65rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1.05rem,4vw,1.45rem);line-height:1.14;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.9rem;line-height:1.35}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.65rem;min-width:12rem;max-width:min(20rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.45rem .7rem .45rem .5rem;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 2rem;width:2rem;height:2rem;border-radius:999px;background:var(--chessimals-primary);color:var(--ion-color-primary-contrast, #fff);font-size:1rem;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:.64rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.92rem;line-height:1.12;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.72rem;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-result{order:5}.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(--ion-color-primary-rgb, 255, 0, 178),.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:.375rem;align-content:center;min-width:0;min-height:5.75rem;padding:1rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;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(--ion-color-primary-rgb, 255, 0, 178),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.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-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(1.08rem,3vw,1.55rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted)}.chessimals-board-wrap{display:grid;justify-items:center;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{--chessimals-coord-size: 1.35rem;--chessimals-coord-gap: .55rem;display:grid;grid-template-columns:var(--chessimals-coord-size) minmax(0,1fr) var(--chessimals-coord-size);grid-template-rows:var(--chessimals-coord-size) minmax(0,1fr) var(--chessimals-coord-size);gap:var(--chessimals-coord-gap);align-items:stretch;justify-content:center;width:min(100%,44rem)}.chessimals-file-labels,.chessimals-rank-labels{display:grid;color:color-mix(in srgb,var(--chessimals-muted) 82%,var(--chessimals-text));font-size:clamp(.62rem,2.1vw,.78rem);font-weight:950;letter-spacing:.04em;line-height:1;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-file-labels{grid-column:2;grid-row:1;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));align-items:end;text-align:center}.chessimals-file-labels--bottom{grid-row:3;align-items:start}.chessimals-rank-labels{grid-column:1;grid-row:2;grid-template-rows:repeat(var(--board-size),minmax(0,1fr));align-items:center;justify-items:end}.chessimals-rank-labels--right{grid-column:3;justify-items:start}.chessimals-board{position:relative;grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));width:100%;aspect-ratio:1;overflow:hidden;border:1px solid var(--chessimals-border);border-radius:.95rem;background:var(--chessimals-border)}@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-selected-rgb),.62);pointer-events:none}.chessimals-board-overlay{position:absolute;inset:0;z-index:3;display:grid;place-content:center;gap:.45rem;padding:1.25rem;background:radial-gradient(circle at 50% 38%,rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28),transparent 33%),#0d0a12b8;color:#fff;text-align:center;backdrop-filter:blur(2px)}.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}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.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:var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.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:.35rem;z-index:2;border:.14rem 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{background:linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.12),#ffffff0f),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .2rem var(--chessimals-capture),inset 0 0 .42rem #ffffff6b,inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.22),0 0 .42rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.7s ease-in-out infinite}.chessimals-cell.is-capture:before{display:none}.chessimals-cell.is-capture:after{position:absolute;inset:.28rem;z-index:3;border:.14rem solid rgba(255,255,255,.84);border-radius:.58rem;box-shadow:0 0 .6rem #ffffff7a,inset 0 0 .85rem rgba(var(--chessimals-capture-rgb),.18);content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.6s ease-in-out infinite}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .18rem var(--chessimals-capture),inset 0 0 .38rem #ffffff6b,inset 0 0 .86rem rgba(var(--chessimals-capture-rgb),.2),0 0 .34rem rgba(var(--chessimals-capture-rgb),.28)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .22rem var(--chessimals-capture),inset 0 0 .58rem #ffffff94,inset 0 0 1.18rem rgba(var(--chessimals-capture-rgb),.3),0 0 .52rem rgba(var(--chessimals-capture-rgb),.42)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:clamp(2.1rem,7.8vw,3.95rem);height:clamp(2.1rem,7.8vw,3.95rem);color:var(--ion-color-primary, #ff00b2);--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:.075rem 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 -.08rem 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .22rem -.18rem #ffffff12,inset 0 -.08rem 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:39%;width:74%;height:18%;border-radius:999px;box-shadow:inset -.18rem .14rem #ffffff0f,inset 0 -.08rem 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 -.16rem .16rem #ffffff0d}.chessimals-piece__base{bottom:2%;width:84%;height:20%;border-radius:.5rem .5rem .24rem .24rem;box-shadow:inset -.16rem .12rem #ffffff0d}.chessimals-target{width:.85rem;height:.85rem;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(--ion-color-primary-rgb, 255, 0, 178),.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(--ion-color-primary-rgb, 255, 0, 178),.16),0 .9rem 2rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.13);transform:translateY(-1px)}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:1rem;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)}.chessimals-animal-face img{display:block;width:72%;height:72%;object-fit:contain;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:radial-gradient(circle at 34% 24%,rgba(255,255,255,.96),transparent 32%),linear-gradient(145deg,#fff,#f0ecf7);color:color-mix(in srgb,var(--chessimals-text) 94%,#000);box-shadow:inset 0 0 0 1px #2f2a3a1f,0 .75rem 1.6rem rgba(var(--chessimals-selected-rgb),.14)}.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(--ion-color-primary-rgb, 255, 0, 178),.42);box-shadow:0 1rem 2.4rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--ion-color-primary-rgb, 255, 0, 178),0)}50%{box-shadow:0 0 1.4rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.22)}}.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}@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(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--ion-color-primary, #ff00b2);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{min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--ion-color-primary-contrast, #fff);box-shadow:0 1.125rem 2.8rem rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}@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:.65rem;min-height:0;border-radius:1rem;padding:.7rem}.chessimals-turn-card__chip{padding:.25rem .55rem;font-size:.66rem;letter-spacing:.045em;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(1.1rem,6vw,1.45rem);line-height:1.14}.chessimals-turn-card p{font-size:.82rem;line-height:1.3}.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.75rem;border-radius:.95rem;padding:.45rem .4rem}.chessimals-status small{font-size:.7rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.92rem,3.8vw,1.08rem);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-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-board-frame{--chessimals-coord-size: 1.05rem;--chessimals-coord-gap: .42rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-moving-piece{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"] }]
|
|
1611
1611
|
}], ctorParameters: () => [], propDecorators: { boardAnchor: [{
|
|
1612
1612
|
type: ViewChild,
|
|
1613
1613
|
args: ['boardAnchor']
|
|
1614
1614
|
}], onlineGameId: [{
|
|
1615
1615
|
type: Input
|
|
1616
1616
|
}] } });
|
|
1617
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFxQixTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsb0JBQW9CLEdBQ3JCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBWTFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBR3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9E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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb2FUO3dEQW00Q2lDLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkE4Q1gsWUFBWTtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBhcHBseUNoZXNzaW1hbHNNb3ZlLFxuICBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZSxcbiAgY3JlYXRlQ2hlc3NpbWFsc0dhbWUsXG4gIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzLFxuICBnZXRDaGVzc2ltYWxzUGllY2VBdCxcbiAgcG9zaXRpb25LZXksXG4gIHJlc2lnbkNoZXNzaW1hbHNHYW1lLFxufSBmcm9tICcuL2NoZXNzaW1hbHMtZW5naW5lJztcbmltcG9ydCB7IENoZXNzaW1hbHNPbmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLW9ubGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0xvY2FsTW9kZSxcbiAgQ2hlc3NpbWFsc01vdmUsXG4gIENoZXNzaW1hbHNQaWVjZSxcbiAgQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuICBDaGVzc2ltYWxzUG9zaXRpb24sXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTW9kYWxMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbW9kYWwtbGF5b3V0L21vZGFsLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSB9IGZyb20gJy4vbWluaS1nYW1lLXBsYXllci1wcm9maWxlLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0FuaW1hbFZpZXcge1xuICB0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgYXNzZXRTcmM6IHN0cmluZztcbiAgdG9uZTogbnVtYmVyO1xufVxuXG50eXBlIENoZXNzaW1hbHNDb25maXJtQWN0aW9uID0gJ3Jlc3RhcnQnIHwgJ2hvbWUnIHwgJ3Jlc2lnbic7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHtcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgZnJvbVJvdzogbnVtYmVyO1xuICBmcm9tQ29sOiBudW1iZXI7XG4gIHRvUm93OiBudW1iZXI7XG4gIHRvQ29sOiBudW1iZXI7XG59XG5cbmNvbnN0IENIRVNTSU1BTFNfTU9WRV9BTklNQVRJT05fTVMgPSAzNjA7XG5jb25zdCBDSEVTU0lNQUxTX0JPVF9USElOS0lOR19NUyA9IDYyMDtcbmNvbnN0IENIRVNTSU1BTFNfQk9UX0NPTE9SOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSAnYmxhY2snO1xuXG5jb25zdCBBTklNQUxTOiBDaGVzc2ltYWxzQW5pbWFsVmlld1tdID0gW1xuICB7IHR5cGU6ICdlYWdsZScsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvZWFnbGUucG5nJywgdG9uZTogNjU5LjI1IH0sXG4gIHsgdHlwZTogJ2J1bGwnLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2J1bGwucG5nJywgdG9uZTogMjYxLjYzIH0sXG4gIHsgdHlwZTogJ2thbmdhcm9vJywgYXNzZXRTcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9tYW1tYS5wbmcnLCB0b25lOiA1MjMuMjUgfSxcbiAgeyB0eXBlOiAnbGlvbicsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvbGlvbmVzcy5wbmcnLCB0b25lOiAzOTIgfSxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jaGVzc2ltYWxzLWdhbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uTW9kYWwsIE1vZGFsTGF5b3V0Q29tcG9uZW50LCBVc2VyQXZhdGFyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWFpbiBjbGFzcz1cImNoZXNzaW1hbHMtc2hlbGxcIj5cbiAgICAgIEBpZiAoc2NyZWVuKCkgPT09ICdob21lJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1oZXJvX19pY29uXCI+4pmfPC9zcGFuPlxuICAgICAgICAgIDxoMT57eyB0KCdjaGVzc2ltYWxzVGl0bGUnKSB9fTwvaDE+XG4gICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1N1YnRpdGxlJykgfX08L3A+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcGFuZWxcIj5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtaG93dG9cIj5cbiAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzSG93VG9UaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIb3dUb0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWxlYXJuLW1vcmVcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5SdWxlc01vZGFsKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnbGVhcm5Nb3JlJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNpemVcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvYXJkU2l6ZScpXCI+XG4gICAgICAgICAgICBAZm9yIChzaXplIG9mIGJvYXJkU2l6ZXM7IHRyYWNrIHNpemUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvYXJkU2l6ZSgpID09PSBzaXplXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRCb2FyZFNpemUuc2V0KHNpemUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2l6ZSB9fXh7eyBzaXplIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHNpemUgPT09IDYgPyB0KCdjaGVzc2ltYWxzU2l6ZVNtYWxsJykgOiB0KCdjaGVzc2ltYWxzU2l6ZUxhcmdlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW1vZGVcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc01vZGVUaXRsZScpXCI+XG4gICAgICAgICAgICBAZm9yIChtb2RlIG9mIGxvY2FsTW9kZXM7IHRyYWNrIG1vZGUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZExvY2FsTW9kZSgpID09PSBtb2RlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRMb2NhbE1vZGUuc2V0KG1vZGUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbG9jYWxNb2RlTGFiZWwobW9kZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgbG9jYWxNb2RlRGVzY3JpcHRpb24obW9kZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWRpZmZpY3VsdHlcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvdERpZmZpY3VsdHknKVwiPlxuICAgICAgICAgICAgICBAZm9yIChkaWZmaWN1bHR5IG9mIGJvdERpZmZpY3VsdGllczsgdHJhY2sgZGlmZmljdWx0eSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkQm90RGlmZmljdWx0eSgpID09PSBkaWZmaWN1bHR5XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGRpZmZpY3VsdHkpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBib3REaWZmaWN1bHR5TGFiZWwoZGlmZmljdWx0eSkgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRHYW1lKClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTdGFydCcpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc09ubGluZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzT25saW5lQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKG9ubGluZUVycm9yKCkpIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fZXJyb3JcIj57eyBvbmxpbmVFcnJvcigpIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19jcmVhdGVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlT25saW5lR2FtZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDcmVhdGVPbmxpbmUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDcmVhdGVPbmxpbmVIaW50JykgfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2pvaW5cIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzSm9pbk9ubGluZVRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtY29kZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNKb2luQ29kZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9ubGluZUpvaW5Db2RlKClcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ2NoZXNzaW1hbHNKb2luQ29kZVBsYWNlaG9sZGVyJylcIlxuICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9ubGluZUpvaW5Db2RlLnNldChub3JtYWxpemVHYW1lSWQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSkpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKSB8fCAhb25saW5lSm9pbkNvZGUoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImpvaW5PbmxpbmVHYW1lQnlDb2RlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1nYW1lXCI+XG4gICAgICAgICAgQGlmIChyZXN1bWVTcGxhc2hWaXNpYmxlKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2hcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPuKZnzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUmVzdW1lU3BsYXNoVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUmVzdW1lU3BsYXNoQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGFydGljbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWJsYWNrLXR1cm5dPVwiZ2FtZSgpLmN1cnJlbnRUdXJuID09PSAnYmxhY2snXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1maW5pc2hlZF09XCJnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHlcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcFwiPlxuICAgICAgICAgICAgICAgIHt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB0KCdjaGVzc2ltYWxzRmluaXNoZWRDaGlwJykgOiBtb2RlQ2hpcExhYmVsKCkgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB3aW5UaXRsZSgpIDogdHVyblRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHdpbkJvZHkoKSA6IHR1cm5Cb2R5KCkgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwXCI+XG4gICAgICAgICAgICAgIEBpZiAobG9nZ2VkSW5Vc2VyKCkpIHtcbiAgICAgICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJsb2dnZWRQbGF5ZXJBdmF0YXJQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBsb2NhbFBsYXllckF2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdChsb2dnZWRJblVzZXIoKSA/ICdsb2dnZWRQbGF5ZXInIDogJ2xvY2FsUGxheWVyJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBsb2dnZWRQbGF5ZXJOYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICBAaWYgKGxvZ2dlZFBsYXllckhhbmRsZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbG9nZ2VkUGxheWVySGFuZGxlKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICBAaWYgKGdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiBnYW1lKCkuc3RhdHVzID09PSAnd2FpdGluZycpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUgY2hlc3NpbWFscy1vbmxpbmUtLXdhaXRpbmdcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc1dhaXRpbmdUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzV2FpdGluZ0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWdhbWUtY29kZVwiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzR2FtZUNvZGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBnYW1lKCkuaWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb3B5T25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ29weUxpbmsnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlT25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU2hhcmVMaW5rJykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc3RhdHVzXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc01vdmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5tb3ZlQ291bnQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB0KCdjaGVzc2ltYWxzV2lubmVyJykgOiB0KCdjaGVzc2ltYWxzUG93ZXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyBwbGF5ZXJMYWJlbChnYW1lKCkud2lubmVyID8/ICd3aGl0ZScpIDogdW5sb2NrZWRMYWJlbChnYW1lKCkuY3VycmVudFR1cm4pIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnID8gdCgnY2hlc3NpbWFsc1Jlc3VsdCcpIDogdCgnY2hlc3NpbWFsc1JpdmFsJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB3aW5SZWFzb25MYWJlbCgpIDogcGxheWVyTGFiZWwoZ2FtZSgpLmN1cnJlbnRUdXJuID09PSAnd2hpdGUnID8gJ2JsYWNrJyA6ICd3aGl0ZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1hcmVuYVwiPlxuICAgICAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgICAgI2JvYXJkQW5jaG9yXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC13cmFwXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWZpbmlzaGVkXT1cImdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCdcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtb3JpZW50aW5nXT1cImlzQm9hcmRPcmllbnRpbmcoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWJvYXJkLXNpemVdPVwiZ2FtZSgpLmJvYXJkU2l6ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLWZyYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtZmlsZS1sYWJlbHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkaXNwbGF5Q29scygpOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmlsZUxhYmVsKGNvbCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmFuay1sYWJlbHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHJvdyBvZiBkaXNwbGF5Um93cygpOyB0cmFjayByb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcmFua0xhYmVsKHJvdykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay12aWV3XT1cImdhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb2FyZCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheVJvd3MoKTsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkaXNwbGF5Q29scygpOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZGFyay1jZWxsXT1cImlzRGFya0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJpc1NlbGVjdGVkQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWxlZ2FsXT1cImlzTGVnYWxDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY2FwdHVyZV09XCJpc0NhcHR1cmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbGFzdF09XCJpc0xhc3RNb3ZlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLW1vdmluZy1zb3VyY2VdPVwiaXNNb3ZpbmdTb3VyY2VDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2FtZSgpLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCAhY2FuUGxheUN1cnJlbnRUdXJuKCkgfHwgISFtb3ZpbmdQaWVjZSgpIHx8IGJvdFRoaW5raW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENlbGwoeyByb3csIGNvbCB9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwaWVjZUF0KHJvdywgY29sKTsgYXMgcGllY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFja109XCJwaWVjZS5jb2xvciA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwbGF5ZXJMYWJlbChwaWVjZS5jb2xvcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19zaWRlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9faGVhZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2NvbGxhclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX25lY2tcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19iYXNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChpc0xlZ2FsQ2VsbChyb3csIGNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXRhcmdldFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbnRlci1saW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgQGlmIChtb3ZpbmdQaWVjZSgpOyBhcyBtb3ZpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtbW92aW5nLXBpZWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1mcm9tLXJvd109XCJtb3ZpbmcuZnJvbVJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tZnJvbS1jb2xdPVwibW92aW5nLmZyb21Db2xcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvLXJvd109XCJtb3ZpbmcudG9Sb3dcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvLWNvbF09XCJtb3ZpbmcudG9Db2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VcIiBbY2xhc3MuaXMtYmxhY2tdPVwibW92aW5nLmNvbG9yID09PSAnYmxhY2snXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX3NpZGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2hlYWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2NvbGxhclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fbmVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fYmFzZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc0dhbWVPdmVyJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB3aW5UaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IG1vdmVzU3VtbWFyeSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmFuay1sYWJlbHMgY2hlc3NpbWFscy1yYW5rLWxhYmVscy0tcmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHJvdyBvZiBkaXNwbGF5Um93cygpOyB0cmFjayByb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcmFua0xhYmVsKHJvdykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtZmlsZS1sYWJlbHMgY2hlc3NpbWFscy1maWxlLWxhYmVscy0tYm90dG9tXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgZGlzcGxheUNvbHMoKTsgdHJhY2sgY29sKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbGVMYWJlbChjb2wpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXBvd2Vyc1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1sb2NrZWRdPVwiIWN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXJlYWR5XT1cImN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzQW5pbWFsQ2FyZHMnKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjdXJyZW50UGxheWVyKCkucG93ZXJVbmxvY2tlZCA/IHQoJ2NoZXNzaW1hbHNVbmxvY2tlZCcpIDogdCgnY2hlc3NpbWFsc0xvY2tlZCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxwPnt7IGN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc0NhcmRzUmVhZHknKSA6IHQoJ2NoZXNzaW1hbHNDYXJkc0xvY2tlZCcpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2FyZHNcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChhbmltYWwgb2YgYW5pbWFsczsgdHJhY2sgYW5pbWFsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEFuaW1hbCgpID09PSBhbmltYWwudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy11c2VkXT1cImN1cnJlbnRQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudFBsYXllcigpLnBvd2VyVW5sb2NrZWQgfHwgY3VycmVudFBsYXllcigpLmNhcmRzW2FuaW1hbC50eXBlXS51c2VkIHx8IGdhbWUoKS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHwgIWNhblBsYXlDdXJyZW50VHVybigpIHx8ICEhbW92aW5nUGllY2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbmltYWwoYW5pbWFsKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1hbmltYWwtZmFjZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhbmltYWwuYXNzZXRTcmNcIiBbYWx0XT1cImFuaW1hbExhYmVsKGFuaW1hbC50eXBlKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhbmltYWxMYWJlbChhbmltYWwudHlwZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdWx0XCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgd2luVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB3aW5Cb2R5KCkgfX08L3A+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYWN0aW9uc1wiPlxuICAgICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdFJlc2lnbigpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1Jlc2lnbicpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIG9ubGluZVJvbGUoKSAhPT0gJ3NwZWN0YXRvcicpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0T25saW5lUmVtYXRjaCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1JlbWF0Y2gnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLm1vZGUgIT09ICdvbmxpbmUnKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdFJlc3RhcnRHYW1lKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdyZXN0YXJ0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXNldFRvSG9tZSgpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFuZ2VNb2RlJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgPC9tYWluPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc1J1bGVzTW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VSdWxlc01vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwidCgnY2hlc3NpbWFsc1J1bGVzVGl0bGUnKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cInQoJ2NoZXNzaW1hbHNSdWxlc1N1YnRpdGxlJylcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFtmb290ZXJdPVwiZmFsc2VcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNcIj5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj4xPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUdvYWxUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZUdvYWxCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+Mjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVNb3ZlVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVNb3ZlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjM8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlUG93ZXJzVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVQb3dlcnNCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+NDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVDYXJkc1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUVhZ2xlJykgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPnt7IHQoJ2NoZXNzaW1hbHNSdWxlQnVsbCcpIH19PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUthbmdhcm9vJykgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGlvbicpIH19PC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjU8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGltaXRzVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW1pdHNCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC92YWwtbW9kYWwtbGF5b3V0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiISFjb25maXJtQWN0aW9uKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJjb25maXJtVGl0bGUoKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cImNvbmZpcm1Cb2R5KClcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFthY3Rpb25zXT1cImNvbmZpcm1BY3Rpb25zKClcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlQ29uZmlybU1vZGFsKClcIlxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJjb25maXJtUGVuZGluZ0FjdGlvbigkZXZlbnQuYWN0aW9uPy50b2tlbilcIlxuICAgICAgICAvPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsICNmZmZmZmYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCAjZTdlNGVhKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMmYyYTNhKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjNmY2YTdhKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMDgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICNmZjAwYjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiB2YXIoLS1pb24tY29sb3ItdGVydGlhcnksICM2YTJkZTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQ6ICMyZmZmYTE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2I6IDQ3LCAyNTUsIDE2MTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vdmU6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnksICMzZGMyZmYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW92ZS1yZ2I6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnktcmdiLCA2MSwgMTk0LCAyNTUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZTogIzAwZTZkMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiOiAwLCAyMzAsIDIwODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3Q6ICNiOThjZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0LXJnYjogMTg1LCAxNDAsIDI1NTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1kYXJrOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtZmlsbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNpZGU6IHRyYW5zcGFyZW50O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtbGluZTogcmdiYSg0NywgNDIsIDU4LCAwLjA4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMC4wOHJlbSByZ2JhKDQ3LCA0MiwgNTgsIDAuMzIpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjIycmVtIHJnYmEoNDcsIDQyLCA1OCwgMC4xNikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbDogIzJmMmEzYTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGU6IHRyYW5zcGFyZW50O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMC4wOHJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTgpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4yMnJlbSAwLjI4cmVtIHJnYmEoMCwgMCwgMCwgMC4yNikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmc6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMiUgMjQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODgpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpIDYlLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpIDEzJSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xMnJlbSByZ2JhKDAsIDAsIDAsIDAuMTYpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6IGdyYXlzY2FsZSgwLjIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjcyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMTI1cmVtO1xuICAgICAgICBtYXgtd2lkdGg6IDQ4cmVtO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2gge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDQyJSwgcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xOCksIHRyYW5zcGFyZW50IDIycmVtKSxcbiAgICAgICAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCkgOTIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwLjlyZW0pO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogNC43NXJlbTtcbiAgICAgICAgaGVpZ2h0OiA0Ljc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjZyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGZvbnQtc2l6ZTogMi4yNXJlbTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxLjI1cmVtIDNyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4zMik7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1yZXN1bWUtcHVsc2UgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuNTVyZW0sIDV2dywgMi40cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2ggcCB7XG4gICAgICAgIG1heC13aWR0aDogMjRyZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcmVzdW1lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4yNXJlbSkgc2NhbGUoMS4wNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLXNoZWxsLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1zaGVsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogIzIzMWYyZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6ICNmZmY4ZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tdXRlZDogcmdiYSgyNTUsIDI0OCwgMjU1LCAwLjY4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNyk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0OiAjMjQyMDJlO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1kYXJrOiAjNTQ1MTVkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtZmlsbDogI2ZmZmFmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNpZGU6IHRyYW5zcGFyZW50O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtbGluZTogcmdiYSg0NywgNDIsIDU4LCAwLjEpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2hhZG93OlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAwLjFyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4yNHJlbSByZ2JhKDAsIDAsIDAsIDAuMjIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGw6ICMxNzEzMWY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlOiB0cmFuc3BhcmVudDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWxpbmU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDAuMDhyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ2KSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMC4yOHJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTgpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4yMnJlbSAwLjM0cmVtIHJnYmEoMCwgMCwgMCwgMC40MikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmc6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMiUgMjQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTgpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxNDVkZWcsICNmN2YwZmYsICNkOGQxZTQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDAsIDAsIDAsIDAuMjIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6XG4gICAgICAgICAgZ3JheXNjYWxlKDAuMzIpXG4gICAgICAgICAgc2F0dXJhdGUoMC43Mik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtaW1nLW9wYWNpdHk6IDAuNTg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm8ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDJyZW0sIDd2dywgNHJlbSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAyMiUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTIpLCB0cmFuc3BhcmVudCAxNiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSksIHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm9fX2ljb24ge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDIuNXJlbSwgMTB2dywgNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIGgxIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDNyZW0sIDEydncsIDUuNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwLjk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIHAsXG4gICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYW5lbCxcbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS42MjVyZW07XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDFyZW0sIDR2dywgMS41cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjM0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIGgyLFxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBoMiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19jcmVhdGUsXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fY3JlYXRlIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuODVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiA+IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19lcnJvciB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjdyZW0gMC44cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSkgIWltcG9ydGFudDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLWNvZGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLWNvZGUgaW5wdXQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWluLWhlaWdodDogMy4zcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZS1jb2RlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW0gMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZS1jb2RlIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLWNvZGUgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjM1cmVtLCA2dncsIDJyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjg3NXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogNC41cmVtO1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDAuODc1cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yKSwgcmdiYSh2YXIoLS1pb24tY29sb3ItdGVydGlhcnktcmdiLCAxMDYsIDQ1LCAyMjYpLCAwLjEpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWJsYWNrLXR1cm4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4yOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNSUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4xNCksIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMSkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtZmluaXNoZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjQyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNSksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTgpLCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjEyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1maW5pc2hlZCAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MsICMyZGQzNmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMzVyZW0gMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBzdHJvbmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuMDVyZW0sIDR2dywgMS40NXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHAge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDEycmVtO1xuICAgICAgICBtYXgtd2lkdGg6IG1pbigyMHJlbSwgNDIlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC40NXJlbSAwLjdyZW0gMC40NXJlbSAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWxpZ2h0LXJnYiwgMjQ0LCAyNDUsIDI0OCksIDAuNzIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGZsZXg6IDAgMCAycmVtO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuMDVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmb250LXNpemU6IDAuOTJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjEyO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjM3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gaDIsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWxlYXJuLW1vcmUge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIGJ1dHRvbixcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzc1cmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogNS43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjM3NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjEzKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjA4cmVtLCAzdncsIDEuNTVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLW9yaWVudGluZyAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1vcmllbnQtYm9hcmQgMzIwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcC5pcy1maW5pc2hlZCB7XG4gICAgICAgIG92ZXJmbG93LXg6IHZpc2libGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNvb3JkLXNpemU6IDEuMzVyZW07XG4gICAgICAgIC0tY2hlc3NpbWFscy1jb29yZC1nYXA6IDAuNTVyZW07XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tY2hlc3NpbWFscy1jb29yZC1zaXplKSBtaW5tYXgoMCwgMWZyKSB2YXIoLS1jaGVzc2ltYWxzLWNvb3JkLXNpemUpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHZhcigtLWNoZXNzaW1hbHMtY29vcmQtc2l6ZSkgbWlubWF4KDAsIDFmcikgdmFyKC0tY2hlc3NpbWFscy1jb29yZC1zaXplKTtcbiAgICAgICAgZ2FwOiB2YXIoLS1jaGVzc2ltYWxzLWNvb3JkLWdhcCk7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IG1pbigxMDAlLCA0NHJlbSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWZpbGUtbGFiZWxzLFxuICAgICAgLmNoZXNzaW1hbHMtcmFuay1sYWJlbHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpIDgyJSwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC42MnJlbSwgMi4xdncsIDAuNzhyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWZpbGUtbGFiZWxzIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBhbGlnbi1pdGVtczogZW5kO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWZpbGUtbGFiZWxzLS1ib3R0b20ge1xuICAgICAgICBncmlkLXJvdzogMztcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yYW5rLWxhYmVscyB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAxO1xuICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQodmFyKC0tYm9hcmQtc2l6ZSksIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1pdGVtczogZW5kO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yYW5rLWxhYmVscy0tcmlnaHQge1xuICAgICAgICBncmlkLWNvbHVtbjogMztcbiAgICAgICAganVzdGlmeS1pdGVtczogc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KHZhcigtLWJvYXJkLXNpemUpLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KHZhcigtLWJvYXJkLXNpemUpLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC45NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb3JpZW50LWJvYXJkIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDAuMDZyZW0pO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45ODUpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjkyO1xuICAgICAgICAgIGZpbHRlcjogYmx1cigwKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VudGVyLWxpbmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci10b3A6IDAuMDhyZW0gZGFzaGVkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjYyKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgcGFkZGluZzogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAzOCUsIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjgpLCB0cmFuc3BhcmVudCAzMyUpLFxuICAgICAgICAgIHJnYmEoMTMsIDEwLCAxOCwgMC43Mik7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHNwYW4ge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMzJyZW0gMC43cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjY1cmVtLCA4dncsIDNyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuOXJlbSwgM3Z3LCAxLjFyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICBiYWNrZ3JvdW5kIDE2MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxNjBtcyBlYXNlLFxuICAgICAgICAgIHRyYW5zZm9ybSAxNjBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWRhcmstY2VsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtZGFyayk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtc2VsZWN0ZWQge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjI4KSAwIDM2JSwgdHJhbnNwYXJlbnQgNjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkKSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNDIpLFxuICAgICAgICAgIDAgMCAwLjU1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjU2KSxcbiAgICAgICAgICAwIDAgMS41NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbGVnYWw6bm90KC5pcy1jYXB0dXJlKTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwLjM1cmVtO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBib3JkZXI6IDAuMTRyZW0gc29saWQgdmFyKC0tY2hlc3NpbWFscy1tb3ZlKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41NXJlbTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDAuNzQ7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWxhc3Q6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1sZWdhbCk6bm90KC5pcy1jYXB0dXJlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWxhc3QtcmdiKSwgMC4xNikgMCA0MiUsIHRyYW5zcGFyZW50IDY4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjEyKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjJyZW0gdmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlKSxcbiAgICAgICAgICBpbnNldCAwIDAgMC40MnJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpLFxuICAgICAgICAgIGluc2V0IDAgMCAxcmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMjIpLFxuICAgICAgICAgIDAgMCAwLjQycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzQpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1hdXJhIDEuN3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMjhyZW07XG4gICAgICAgIHotaW5kZXg6IDM7XG4gICAgICAgIGJvcmRlcjogMC4xNHJlbSBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjU4cmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjZyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ4KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC44NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1mcmFtZSAxLjZzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1hdXJhIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIGluc2V0IDAgMCAwIDAuMThyZW0gdmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlKSxcbiAgICAgICAgICAgIGluc2V0IDAgMCAwLjM4cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MiksXG4gICAgICAgICAgICBpbnNldCAwIDAgMC44NnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjIpLFxuICAgICAgICAgICAgMCAwIDAuMzRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yOCk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS4yMik7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIGluc2V0IDAgMCAwIDAuMjJyZW0gdmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlKSxcbiAgICAgICAgICAgIGluc2V0IDAgMCAwLjU4cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCksXG4gICAgICAgICAgICBpbnNldCAwIDAgMS4xOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjMpLFxuICAgICAgICAgICAgMCAwIDAuNTJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1tb3Zpbmctc291cmNlIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2Uge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogY2xhbXAoMi4xcmVtLCA3Ljh2dywgMy45NXJlbSk7XG4gICAgICAgIGhlaWdodDogY2xhbXAoMi4xcmVtLCA3Ljh2dywgMy45NXJlbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgI2ZmMDBiMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1maWxsOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWZpbGwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utc2lkZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaWRlKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtbGluZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lOiByZ2JhKDQ3LCA0MiwgNTgsIDAuMTgpO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2UuaXMtYmxhY2sge1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGw6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1zaWRlOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtbGluZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMik7XG4gICAgICAgIGZpbHRlcjogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb3ZpbmctcGllY2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgei1pbmRleDogNjtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIHZhcigtLWJvYXJkLXNpemUpKTtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLyB2YXIoLS1ib2FyZC1zaXplKSk7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICBjYWxjKHZhcigtLWZyb20tY29sKSAqIDEwMCUpLFxuICAgICAgICAgIGNhbGModmFyKC0tZnJvbS1yb3cpICogMTAwJSlcbiAgICAgICAgKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBpZWNlLXRyYXZlbCAzNjBtcyBjdWJpYy1iZXppZXIoMC4yLCAwLjgyLCAwLjI0LCAxKSBib3RoO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcGllY2UtdHJhdmVsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLWZyb20tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLWZyb20tcm93KSAqIDEwMCUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDY4JSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMS4wNyk7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS10by1jb2wpICogMTAwJSksXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fc2lkZSxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19oZWFkLFxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2NvbGxhcixcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19uZWNrLFxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2Jhc2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCk7XG4gICAgICAgIGJvcmRlcjogMC4wNzVyZW0gc29saWQgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fc2lkZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19oZWFkIHtcbiAgICAgICAgdG9wOiAzJTtcbiAgICAgICAgd2lkdGg6IDQ4JTtcbiAgICAgICAgaGVpZ2h0OiA0MiU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1MCUgNDIlIDQyJTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjYpIDAgMzAlLCB0cmFuc3BhcmVudCAzMSUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTAuMDhyZW0gMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZS5pcy1ibGFjayAuY2hlc3NpbWFscy1waWVjZV9faGVhZCB7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMC4yMnJlbSAtMC4xOHJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNyksXG4gICAgICAgICAgaW5zZXQgMCAtMC4wOHJlbSAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIge1xuICAgICAgICB0b3A6IDM5JTtcbiAgICAgICAgd2lkdGg6IDc0JTtcbiAgICAgICAgaGVpZ2h0OiAxOCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IC0wLjE4cmVtIDAuMTRyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMDhyZW0gMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayB7XG4gICAgICAgIHRvcDogNTQlO1xuICAgICAgICB3aWR0aDogNTglO1xuICAgICAgICBoZWlnaHQ6IDMwJTtcbiAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDE2JSAwLCA4NCUgMCwgMTAwJSAxMDAlLCAwIDEwMCUpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IC0wLjE2cmVtIDAuMTZyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fYmFzZSB7XG4gICAgICAgIGJvdHRvbTogMiU7XG4gICAgICAgIHdpZHRoOiA4NCU7XG4gICAgICAgIGhlaWdodDogMjAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW0gMC41cmVtIDAuMjRyZW0gMC4yNHJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xNnJlbSAwLjEycmVtIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdGFyZ2V0IHtcbiAgICAgICAgd2lkdGg6IDAuODVyZW07XG4gICAgICAgIGhlaWdodDogMC44NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW92ZSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAuOXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbW92ZS1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDE4MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxODBtcyBlYXNlLFxuICAgICAgICAgIHRyYW5zZm9ybSAxODBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcgc3BhbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4yOHJlbSAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDJweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjE2KSxcbiAgICAgICAgICAwIDAuOXJlbSAycmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTMpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIHtcbiAgICAgICAgb3BhY2l0eTogMC40MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi43cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuN3JlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZyk7XG4gICAgICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSA5MiUsICMwMDApO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDcyJTtcbiAgICAgICAgaGVpZ2h0OiA3MiU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGZpbHRlcjogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1maWx0ZXIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtc2VsZWN0ZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzQlIDI0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KSwgdHJhbnNwYXJlbnQgMzIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCAjZmZmZmZmLCAjZjBlY2Y3KTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpIDk0JSwgIzAwMCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEoNDcsIDQyLCA1OCwgMC4xMiksXG4gICAgICAgICAgMCAwLjc1cmVtIDEuNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWZpbHRlcik7XG4gICAgICAgIG9wYWNpdHk6IDAuODY7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nLFxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXVzZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nIHtcbiAgICAgICAgb3BhY2l0eTogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtaW1nLW9wYWNpdHkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuNDIpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFyZW0gMi40cmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJQdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAxLjRyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgobWluKDEwMCUsIDEycmVtKSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjBweCkge1xuICAgICAgICAuY2hlc3NpbWFscy1nYW1lIHtcbiAgICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQsXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtYWN0aW9ucyB7XG4gICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHtcbiAgICAgICAgICB3aWR0aDogbWluKDEwMCUsIDQ0cmVtKTtcbiAgICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMTFyZW0sIDAuNjhmcikgbWlubWF4KDAsIDFmcik7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24ge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMmYyYTNhKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgI2ZmMDBiMik7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGFydGljbGUgPiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgaDMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBwLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgdWwge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBwLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgbGkge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzZmNmE3YSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByaW1hcnksXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjYyNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByaW1hcnkge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMS4xMjVyZW0gMi44cmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDU2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLXNpemUsXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC42MjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjdyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC41NXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDQ1ZW07XG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4xcmVtLCA2dncsIDEuNDVyZW0pO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIGRpdiB7XG4gICAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNDVyZW0gMC40cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHNtYWxsIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45MnJlbSwgMy44dncsIDEuMDhyZW0pO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdGlwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQge1xuICAgICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMC43cmVtIDAuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHtcbiAgICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcge1xuICAgICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIGgyIHtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcgc3BhbiB7XG4gICAgICAgICAgcGFkZGluZzogMC4yMnJlbSAwLjQ4cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDQuMjVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjRyZW0gMC4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgICB3aWR0aDogMi4xcmVtO1xuICAgICAgICAgIGhlaWdodDogMi4xcmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNvb3JkLXNpemU6IDEuMDVyZW07XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNvb3JkLWdhcDogMC40MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjpiZWZvcmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YWZ0ZXIsXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vdmluZy1waWVjZSB7XG4gICAgICAgICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1tb3ZpbmctcGllY2Uge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgY2FsYyh2YXIoLS10by1jb2wpICogMTAwJSksXG4gICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGVzc2ltYWxzR2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdWRpbyA9IGluamVjdChSZXRyb0F1ZGlvU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25saW5lID0gaW5qZWN0KENoZXNzaW1hbHNPbmxpbmVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXllclByb2ZpbGVzID0gaW5qZWN0KE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UpO1xuICBwcml2YXRlIGJvYXJkT3JpZW50YXRpb25UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUFuaW1hdGlvblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBib3RUdXJuVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIG9ubGluZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHBlbmRpbmdPbmxpbmVHYW1lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvcGVuaW5nT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb3BlbmVkT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnYm9hcmRBbmNob3InKSBwcml2YXRlIGJvYXJkQW5jaG9yPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgcmVhZG9ubHkgYm9hcmRTaXplczogQ2hlc3NpbWFsc0JvYXJkU2l6ZVtdID0gWzYsIDhdO1xuICByZWFkb25seSBsb2NhbE1vZGVzOiBDaGVzc2ltYWxzTG9jYWxNb2RlW10gPSBbJ29uZS1kZXZpY2UnLCAnYm90J107XG4gIHJlYWRvbmx5IGJvdERpZmZpY3VsdGllczogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHlbXSA9IFsnZWFzeScsICdub3JtYWwnLCAnaGFyZCddO1xuICByZWFkb25seSBhbmltYWxzID0gQU5JTUFMUztcbiAgcmVhZG9ubHkgc2NyZWVuID0gc2lnbmFsPCdob21lJyB8ICdnYW1lJz4oJ2hvbWUnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb2FyZFNpemUgPSBzaWduYWw8Q2hlc3NpbWFsc0JvYXJkU2l6ZT4oNik7XG4gIHJlYWRvbmx5IHNlbGVjdGVkTG9jYWxNb2RlID0gc2lnbmFsPENoZXNzaW1hbHNMb2NhbE1vZGU+KCdvbmUtZGV2aWNlJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm90RGlmZmljdWx0eSA9IHNpZ25hbDxDaGVzc2ltYWxzQm90RGlmZmljdWx0eT4oJ25vcm1hbCcpO1xuICByZWFkb25seSBnYW1lID0gc2lnbmFsPENoZXNzaW1hbHNHYW1lU3RhdGU+KGNyZWF0ZUNoZXNzaW1hbHNHYW1lKDYpKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRQaWVjZUlkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRBbmltYWwgPSBzaWduYWw8Q2hlc3NpbWFsc0FuaW1hbFR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzUnVsZXNNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc0JvYXJkT3JpZW50aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbW92aW5nUGllY2UgPSBzaWduYWw8Q2hlc3NpbWFsc01vdmluZ1BpZWNlVmlldyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgYm90VGhpbmtpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjb25maXJtQWN0aW9uID0gc2lnbmFsPENoZXNzaW1hbHNDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVKb2luQ29kZSA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZUxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBvbmxpbmVFcnJvciA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZVVpZCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJlc3VtZVNwbGFzaFZpc2libGUgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBsb2dnZWRJblVzZXIgPSB0aGlzLmF1dGgudXNlcjtcbiAgcmVhZG9ubHkgbG9jYWxQbGF5ZXJQcm9maWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCkpO1xuICByZWFkb25seSBsb2NhbFBsYXllckF2YXRhciA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCk/LmF2YXRhciA/PyAn8J+MnycpO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJOYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgIGlmICh1c2VyPy5uYW1lPy50cmltKCkpIHJldHVybiB1c2VyLm5hbWUudHJpbSgpO1xuICAgIGlmICh1c2VyPy5lbWFpbD8udHJpbSgpKSByZXR1cm4gdXNlci5lbWFpbC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyUHJvZmlsZXMuZGlzcGxheU5hbWUodGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKSwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllckhhbmRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICBjb25zdCBoYW5kbGUgPSB1c2VyPy5oYW5kbGU/LnRyaW0oKTtcbiAgICBpZiAoaGFuZGxlKSByZXR1cm4gaGFuZGxlLnN0YXJ0c1dpdGgoJ0AnKSA/IGhhbmRsZSA6IGBAJHtoYW5kbGV9YDtcbiAgICBpZiAodXNlcj8udXNlcklkKSByZXR1cm4gYElEICR7dGhpcy5zaG9ydFVzZXJJZCh1c2VyLnVzZXJJZCl9YDtcbiAgICBjb25zdCBwcm9maWxlSWQgPSB0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpPy5pZDtcbiAgICByZXR1cm4gcHJvZmlsZUlkID8gYElEICR7dGhpcy5zaG9ydFVzZXJJZChwcm9maWxlSWQpfWAgOiAnJztcbiAgfSk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllckF2YXRhclByb3BzID0gY29tcHV0ZWQ8VXNlckF2YXRhck1ldGFkYXRhPigoKSA9PiAoe1xuICAgIHVzZXI6IHRoaXMubG9nZ2VkSW5Vc2VyKCksXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgICBib3JkZXJlZDogdHJ1ZSxcbiAgfSkpO1xuXG4gIEBJbnB1dCgpIHNldCBvbmxpbmVHYW1lSWQodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBnYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodmFsdWUgPz8gJycpO1xuICAgIGlmICghZ2FtZUlkKSByZXR1cm47XG4gICAgdGhpcy5wZW5kaW5nT25saW5lR2FtZUlkID0gZ2FtZUlkO1xuICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCAhPT0gZ2FtZUlkICYmIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCAhPT0gZ2FtZUlkKSB7XG4gICAgICB2b2lkIHRoaXMub3Blbk9ubGluZUdhbWUoZ2FtZUlkKTtcbiAgICB9XG4gIH1cblxuICByZWFkb25seSBjdXJyZW50UGxheWVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nYW1lKCkucGxheWVyc1t0aGlzLmdhbWUoKS5jdXJyZW50VHVybl0pO1xuICByZWFkb25seSBsZWdhbE1vdmVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHBpZWNlSWQgPSB0aGlzLnNlbGVjdGVkUGllY2VJZCgpO1xuICAgIGlmICghcGllY2VJZCkgcmV0dXJuIFtdO1xuICAgIGlmICghdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBnZXRDaGVzc2ltYWxzTGVnYWxNb3Zlcyh0aGlzLmdhbWUoKSwgcGllY2VJZCwgdGhpcy5zZWxlY3RlZEFuaW1hbCgpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxlZ2FsTW92ZUtleXMgPSBjb21wdXRlZCgoKSA9PiBuZXcgU2V0KHRoaXMubGVnYWxNb3ZlcygpLm1hcCgobW92ZSkgPT4gcG9zaXRpb25LZXkobW92ZS50bykpKSk7XG4gIHJlYWRvbmx5IGNhcHR1cmVNb3ZlS2V5cyA9IGNvbXB1dGVkKFxuICAgICgpID0+IG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkuZmlsdGVyKChtb3ZlKSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSksXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkUm93cyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZSB9LCAoXywgaW5kZXgpID0+IGluZGV4KSk7XG4gIHJlYWRvbmx5IGJvYXJkQ29scyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZSB9LCAoXywgaW5kZXgpID0+IGluZGV4KSk7XG4gIHJlYWRvbmx5IGRpc3BsYXlSb3dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gWy4uLnRoaXMuYm9hcmRSb3dzKCldLnJldmVyc2UoKSA6IHRoaXMuYm9hcmRSb3dzKCksXG4gICk7XG4gIHJlYWRvbmx5IGRpc3BsYXlDb2xzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gWy4uLnRoaXMuYm9hcmRDb2xzKCldLnJldmVyc2UoKSA6IHRoaXMuYm9hcmRDb2xzKCksXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkT3JpZW50YXRpb25Db2xvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHVpZCA/IHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB1aWQpID8/ICd3aGl0ZScgOiAnd2hpdGUnO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUuY3VycmVudFR1cm47XG4gIH0pO1xuICByZWFkb25seSBvbmxpbmVSb2xlID0gY29tcHV0ZWQoKCk6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciB8ICd3YWl0aW5nJyB8ICdzcGVjdGF0b3InIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoIXVpZCkgcmV0dXJuICdzcGVjdGF0b3InO1xuICAgIGlmICh0aGlzLm9ubGluZS5pc0hvc3RXYWl0aW5nKGdhbWUsIHVpZCkpIHJldHVybiAnd2FpdGluZyc7XG4gICAgcmV0dXJuIHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB1aWQpID8/ICdzcGVjdGF0b3InO1xuICB9KTtcbiAgcmVhZG9ubHkgY2FuUGxheUN1cnJlbnRUdXJuID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUiAmJiAhdGhpcy5ib3RUaGlua2luZygpO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHRoaXMub25saW5lUm9sZSgpID09PSBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgY3VycmVudFR1cm5UaXRsZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdjaGVzc2ltYWxzQ3VycmVudFR1cm4nKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGxheWVyTGFiZWwodGhpcy5nYW1lKCkuY3VycmVudFR1cm4pKSxcbiAgKTtcbiAgcmVhZG9ubHkgd2luVGl0bGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc1dpblRpdGxlJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLndpbm5lciA/PyAnd2hpdGUnKSksXG4gICk7XG4gIHJlYWRvbmx5IHdpbkJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5nYW1lKCkud2lubmVyUmVhc29uID8/ICdwcm9tb3Rpb24nO1xuICAgIGNvbnN0IGtleSA9XG4gICAgICByZWFzb24gPT09ICdlbGltaW5hdGlvbidcbiAgICAgICAgPyAnY2hlc3NpbWFsc1dpbkVsaW1pbmF0aW9uJ1xuICAgICAgICA6IHJlYXNvbiA9PT0gJ3Jlc2lnbmF0aW9uJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNXaW5SZXNpZ25hdGlvbidcbiAgICAgICAgICA6ICdjaGVzc2ltYWxzV2luUHJvbW90aW9uJztcbiAgICByZXR1cm4gdGhpcy50KGtleSk7XG4gIH0pO1xuICByZWFkb25seSB3aW5SZWFzb25MYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByZWFzb24gPSB0aGlzLmdhbWUoKS53aW5uZXJSZWFzb24gPz8gJ3Byb21vdGlvbic7XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIHJlYXNvbiA9PT0gJ2VsaW1pbmF0aW9uJ1xuICAgICAgICA/ICdjaGVzc2ltYWxzUmVhc29uRWxpbWluYXRpb24nXG4gICAgICAgIDogcmVhc29uID09PSAncmVzaWduYXRpb24nXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc1JlYXNvblJlc2lnbmF0aW9uJ1xuICAgICAgICAgIDogJ2NoZXNzaW1hbHNSZWFzb25Qcm9tb3Rpb24nO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KTtcbiAgfSk7XG4gIHJlYWRvbmx5IG1vdmVzU3VtbWFyeSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdjaGVzc2ltYWxzTW92ZXNTdW1tYXJ5JykucmVwbGFjZSgne21vdmVzfScsIGAke3RoaXMuZ2FtZSgpLm1vdmVDb3VudH1gKSxcbiAgKTtcbiAgcmVhZG9ubHkgY29uZmlybVRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXN0YXJ0VGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXNpZ25UaXRsZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtSG9tZVRpdGxlJyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzdGFydEJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXNpZ25Cb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1Ib21lQm9keScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogdGhpcy50KCdjYW5jZWwnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY2FuY2VsJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6XG4gICAgICAgICAgYWN0aW9uID09PSAncmVzaWduJ1xuICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNSZXNpZ24nKVxuICAgICAgICAgICAgOiBhY3Rpb24gPT09ICdyZXN0YXJ0J1xuICAgICAgICAgICAgICA/IHRoaXMudCgncmVzdGFydCcpXG4gICAgICAgICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbmdlTW9kZScpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgdG9rZW46ICdjb25maXJtJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfSk7XG4gIHJlYWRvbmx5IGFjdGlvbkhpbnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGllY2VJZCA9IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gICAgaWYgKCFwaWVjZUlkKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja0FueVBpZWNlJyk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBbmltYWwoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tQb3dlclRhcmdldCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrVGFyZ2V0Jyk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNaW5pR2FtZXMnLCBNSU5JX0dBTUVTX0kxOE4pO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQodHJ1ZSk7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKTtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gICAgY29uc3QgZ2FtZUlkID0gdGhpcy5wZW5kaW5nT25saW5lR2FtZUlkO1xuICAgIGlmIChnYW1lSWQgJiYgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCAmJiB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCkge1xuICAgICAgdm9pZCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01pbmlHYW1lcycpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG9ydFVzZXJJZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmIChub3JtYWxpemVkLmxlbmd0aCA8PSAxMCkgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgcmV0dXJuIGAke25vcm1hbGl6ZWQuc2xpY2UoMCwgNCl94oCmJHtub3JtYWxpemVkLnNsaWNlKC00KX1gO1xuICB9XG5cbiAgc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMuZ2FtZS5zZXQoY3JlYXRlQ2hlc3NpbWFsc0dhbWUodGhpcy5zZWxlY3RlZEJvYXJkU2l6ZSgpKSk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVPbmxpbmVHYW1lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5vbmxpbmVFcnJvci5zZXQoJycpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGdhbWUgPSBhd2FpdCB0aGlzLm9ubGluZS5jcmVhdGVHYW1lKHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUoKSk7XG4gICAgICB0aGlzLm9ubGluZVVpZC5zZXQodGhpcy5vbmxpbmUuY3VycmVudFVpZCk7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IGdhbWUuaWQ7XG4gICAgICB0aGlzLndhdGNoT25saW5lR2FtZShnYW1lLmlkKTtcbiAgICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvbWluaS1nYW1lcy9jaGVzc2ltYWxzLyR7Z2FtZS5pZH1gKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY3JlYXRlIG9ubGluZSBnYW1lIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGpvaW5PbmxpbmVHYW1lQnlDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh0aGlzLm9ubGluZUpvaW5Db2RlKCkpO1xuICAgIGlmICghdGhpcy5vbmxpbmUuaXNWYWxpZEdhbWVJZChnYW1lSWQpKSB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChnYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL21pbmktZ2FtZXMvY2hlc3NpbWFscy8ke2dhbWVJZH1gKTtcbiAgICBhd2FpdCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gIH1cblxuICBhc3luYyBvcGVuT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRHYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQoZ2FtZUlkKTtcbiAgICBpZiAoIXRoaXMub25saW5lLmlzVmFsaWRHYW1lSWQobm9ybWFsaXplZEdhbWVJZCkpIHtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9PT0gbm9ybWFsaXplZEdhbWVJZCB8fCB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPT09IG5vcm1hbGl6ZWRHYW1lSWQpIHJldHVybjtcblxuICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSBub3JtYWxpemVkR2FtZUlkO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5qb2luR2FtZShub3JtYWxpemVkR2FtZUlkKTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gbm9ybWFsaXplZEdhbWVJZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKG5vcm1hbGl6ZWRHYW1lSWQpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIG9wZW4gb25saW5lIGdhbWUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdm9pZCB0aGlzLnJlcXVlc3RPbmxpbmVSZW1hdGNoKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5nYW1lLnNldChjcmVhdGVDaGVzc2ltYWxzR2FtZSh0aGlzLmdhbWUoKS5ib2FyZFNpemUpKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHJlc2V0VG9Ib21lKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9taW5pLWdhbWVzJyk7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQocmV0dXJuSG9tZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHwgZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIGlmICh0aGlzLm1vdmVBbmltYXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKTtcbiAgICB0aGlzLm1vdmVBbmltYXRpb25UaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZ2FtZS5zZXQoY3JlYXRlQ2hlc3NpbWFsc0dhbWUoZ2FtZS5ib2FyZFNpemUpKTtcbiAgICBpZiAocmV0dXJuSG9tZSkgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gIH1cblxuICByZXF1ZXN0UmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzdGFydCcpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdFJlc2V0VG9Ib21lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RSZXNpZ24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc2lnbicpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VDb25maXJtTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgY29uZmlybVBlbmRpbmdBY3Rpb24odG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodG9rZW4gIT09ICdjb25maXJtJykge1xuICAgICAgdGhpcy5jbG9zZUNvbmZpcm1Nb2RhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcblxuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0Jykge1xuICAgICAgdGhpcy5yZXN0YXJ0R2FtZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnaG9tZScpIHtcbiAgICAgIHRoaXMucmVzZXRUb0hvbWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHtcbiAgICAgIHRoaXMucmVzaWduR2FtZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzaWduR2FtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIHZvaWQgdGhpcy5vbmxpbmUucmVzaWduKGdhbWUuaWQpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5nYW1lLnNldChyZXNpZ25DaGVzc2ltYWxzR2FtZShnYW1lLCBnYW1lLmN1cnJlbnRUdXJuKSk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYXVkaW8ud2luKCk7XG4gIH1cblxuICBvcGVuUnVsZXNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUnVsZXNNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VSdWxlc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNSdWxlc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgc2VsZWN0Q2VsbChwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCAhdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fCB0aGlzLm1vdmluZ1BpZWNlKCkpIHJldHVybjtcblxuICAgIGNvbnN0IHBpZWNlID0gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoZ2FtZSwgcG9zaXRpb24pO1xuICAgIGlmIChwaWVjZT8uY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldChwaWVjZS5pZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZSA9IHRoaXMubGVnYWxNb3ZlcygpLmZpbmQoKGl0ZW0pID0+IHBvc2l0aW9uS2V5KGl0ZW0udG8pID09PSBwb3NpdGlvbktleShwb3NpdGlvbikpO1xuICAgIGlmICghbW92ZSkgcmV0dXJuO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKGdhbWUsIG1vdmUpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAgIHZvaWQgdGhpcy5vbmxpbmUubW92ZShnYW1lLmlkLCBtb3ZlKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnBsYXlNb3ZlU291bmQobW92ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFuaW1hdGVNb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuXG4gICAgY29uc3QgbW92aW5nUGllY2UgPSBnYW1lLnBpZWNlcy5maW5kKChwaWVjZSkgPT4gcGllY2UuaWQgPT09IG1vdmUucGllY2VJZCk7XG4gICAgaWYgKCFtb3ZpbmdQaWVjZSkge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh7XG4gICAgICBjb2xvcjogbW92aW5nUGllY2UuY29sb3IsXG4gICAgICBmcm9tUm93OiB0aGlzLmRpc3BsYXlSb3dJbmRleChtb3ZlLmZyb20ucm93KSxcbiAgICAgIGZyb21Db2w6IHRoaXMuZGlzcGxheUNvbEluZGV4KG1vdmUuZnJvbS5jb2wpLFxuICAgICAgdG9Sb3c6IHRoaXMuZGlzcGxheVJvd0luZGV4KG1vdmUudG8ucm93KSxcbiAgICAgIHRvQ29sOiB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLnRvLmNvbCksXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vdmVBbmltYXRpb25UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICB9LCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBbmltYXRlZE1vdmUocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZ2FtZS5zZXQodXBkYXRlZCk7XG4gICAgaWYgKFxuICAgICAgdXBkYXRlZC5jdXJyZW50VHVybiAhPT0gcHJldmlvdXMuY3VycmVudFR1cm4gJiZcbiAgICAgIHVwZGF0ZWQuc3RhdHVzICE9PSAnZmluaXNoZWQnICYmXG4gICAgICAhdGhpcy5zaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYyh1cGRhdGVkKVxuICAgICkge1xuICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgIH1cbiAgICBpZiAodXBkYXRlZC5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHtcbiAgICAgIHRoaXMuYXVkaW8ud2luKCk7XG4gICAgfVxuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcXVldWVCb3RUdXJuSWZOZWVkZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJyB8fFxuICAgICAgZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5ib3RUaGlua2luZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGxheUJvdFR1cm4oKSwgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5Qm90VHVybigpOiB2b2lkIHtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKFxuICAgICAgZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICApIHtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtb3ZlID0gY2hvb3NlQ2hlc3NpbWFsc0JvdE1vdmUoZ2FtZSwgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkoKSk7XG4gICAgaWYgKCFtb3ZlKSB7XG4gICAgICB0aGlzLmdhbWUuc2V0KHJlc2lnbkNoZXNzaW1hbHNHYW1lKGdhbWUsIENIRVNTSU1BTFNfQk9UX0NPTE9SKSk7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmF1ZGlvLndpbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuYW5pbWF0ZU1vdmUoZ2FtZSwgbW92ZSwgdXBkYXRlZCk7XG4gICAgICB0aGlzLnBsYXlNb3ZlU291bmQobW92ZSwgdHJ1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQm90VHVybigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ib3RUdXJuVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvdFR1cm5UaW1lcik7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYygpKSByZXR1cm47XG4gICAgaWYgKHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpO1xuICAgIHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQoZmFsc2UpO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQoZmFsc2UpLCAzNDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYyhnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlID0gdGhpcy5nYW1lKCkpOiBib29sZWFuIHtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0JvYXJkU29vbigpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmJvYXJkQW5jaG9yPy5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcbiAgICAgIH0sIDgwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheU1vdmVTb3VuZChtb3ZlOiBDaGVzc2ltYWxzTW92ZSwgaXNCb3QgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmIChtb3ZlLmFuaW1hbCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzUG93ZXIobW92ZS5hbmltYWwpO1xuICAgICAgaWYgKG1vdmUuY2FwdHVyZXNQaWVjZUlkICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMuYXVkaW8uY2hlc3NpbWFsc0NhcHR1cmUoKSwgMTUwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG1vdmUuY2FwdHVyZXNQaWVjZUlkKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNDYXB0dXJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0JvdCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzQm90TW92ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNNb3ZlKCk7XG4gIH1cblxuICB0b2dnbGVBbmltYWwoYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVmlldyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fCB0aGlzLmJvdFRoaW5raW5nKCkpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zZWxlY3RlZEFuaW1hbCgpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KGN1cnJlbnQgPT09IGFuaW1hbC50eXBlID8gdW5kZWZpbmVkIDogYW5pbWFsLnR5cGUpO1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFBpZWNlSWQoKSkge1xuICAgICAgY29uc3QgZmlyc3RQaWVjZSA9IHRoaXMuZ2FtZSgpLnBpZWNlcy5maW5kKFxuICAgICAgICAocGllY2UpID0+ICFwaWVjZS5jYXB0dXJlZCAmJiBwaWVjZS5jb2xvciA9PT0gdGhpcy5nYW1lKCkuY3VycmVudFR1cm4sXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KGZpcnN0UGllY2U/LmlkKTtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5zaW1vblBhZChhbmltYWwudG9uZSk7XG4gIH1cblxuICBwaWVjZUF0KHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IENoZXNzaW1hbHNQaWVjZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldENoZXNzaW1hbHNQaWVjZUF0KHRoaXMuZ2FtZSgpLCB7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNEYXJrQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHJvdyArIGNvbCkgJSAyID09PSAxO1xuICB9XG5cbiAgaXNTZWxlY3RlZENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGllY2UgPSB0aGlzLnBpZWNlQXQocm93LCBjb2wpO1xuICAgIHJldHVybiAhIXBpZWNlICYmIHBpZWNlLmlkID09PSB0aGlzLnNlbGVjdGVkUGllY2VJZCgpO1xuICB9XG5cbiAgaXNMZWdhbENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGVnYWxNb3ZlS2V5cygpLmhhcyhwb3NpdGlvbktleSh7IHJvdywgY29sIH0pKTtcbiAgfVxuXG4gIGlzQ2FwdHVyZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FwdHVyZU1vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNMYXN0TW92ZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFzdE1vdmUgPSB0aGlzLmdhbWUoKS5sYXN0TW92ZTtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWRQaWVjZUlkKCkgJiYgISFsYXN0TW92ZSAmJiBwb3NpdGlvbktleShsYXN0TW92ZS50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc01vdmluZ1NvdXJjZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbW92aW5nID0gdGhpcy5tb3ZpbmdQaWVjZSgpO1xuICAgIGlmICghbW92aW5nKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheVJvd0luZGV4KHJvdykgPT09IG1vdmluZy5mcm9tUm93ICYmIHRoaXMuZGlzcGxheUNvbEluZGV4KGNvbCkgPT09IG1vdmluZy5mcm9tQ29sO1xuICB9XG5cbiAgZmlsZUxhYmVsKGNvbDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NSArIGNvbCk7XG4gIH1cblxuICByYW5rTGFiZWwocm93OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmdhbWUoKS5ib2FyZFNpemUgLSByb3d9YDtcbiAgfVxuXG4gIHBsYXllckxhYmVsKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHRoaXMudCgnY2hlc3NpbWFsc1doaXRlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCbGFjaycpO1xuICB9XG5cbiAgbW9kZUNoaXBMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2UnKTtcbiAgICB9XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmIChyb2xlID09PSAnd2FpdGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVXYWl0aW5nJyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzU3BlY3RhdG9yJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBsYXllcicpO1xuICB9XG5cbiAgdHVyblRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JyAmJiBnYW1lLmN1cnJlbnRUdXJuID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUikge1xuICAgICAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90VGhpbmtpbmdUaXRsZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFR1cm5UaXRsZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09IGdhbWUuY3VycmVudFR1cm4pIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNZb3VyVHVybicpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDdXJyZW50VHVybicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wbGF5ZXJMYWJlbChnYW1lLmN1cnJlbnRUdXJuKSk7XG4gIH1cblxuICB0dXJuQm9keSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICd3YWl0aW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdCb2R5Jyk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSB7XG4gICAgICByZXR1cm4gZ2FtZS5jdXJyZW50VHVybiA9PT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ0JvZHknKVxuICAgICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdFlvdXJUdXJuQm9keScpO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLm9ubGluZVJvbGUoKSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVWaWV3ZXInKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLm9ubGluZVJvbGUoKSAhPT0gZ2FtZS5jdXJyZW50VHVybikgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUdXJuJyk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNZb3VyVHVybkJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm9hcmRGbGlwcycpO1xuICB9XG5cbiAgbm9ybWFsaXplR2FtZUlkKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgY29weU9ubGluZUxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUuc2hhcmVVcmwodGhpcy5nYW1lKCkuaWQpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkPy53cml0ZVRleHQodXJsKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc0xpbmtDb3BpZWQnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDIyMDAsIHBvc2l0aW9uOiAndG9wJyB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2hhcmVPbmxpbmVMaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkKTtcbiAgICBpZiAobmF2aWdhdG9yLnNoYXJlKSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2hhcmUoeyB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzVGl0bGUnKSwgdGV4dDogdGhpcy50KCdjaGVzc2ltYWxzU2hhcmVUZXh0JyksIHVybCB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5jb3B5T25saW5lTGluaygpO1xuICB9XG5cbiAgYXN5bmMgcmVxdWVzdE9ubGluZVJlbWF0Y2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub25saW5lLnJlcXVlc3RSZW1hdGNoKHRoaXMuZ2FtZSgpLmlkKTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICB1bmxvY2tlZExhYmVsKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdhbWUoKS5wbGF5ZXJzW2NvbG9yXS5wb3dlclVubG9ja2VkID8gdGhpcy50KCdjaGVzc2ltYWxzVW5sb2NrZWQnKSA6IHRoaXMudCgnY2hlc3NpbWFsc0xvY2tlZCcpO1xuICB9XG5cbiAgbG9jYWxNb2RlTGFiZWwobW9kZTogQ2hlc3NpbWFsc0xvY2FsTW9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1vZGUgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZScpIDogdGhpcy50KCdjaGVzc2ltYWxzT25lRGV2aWNlJyk7XG4gIH1cblxuICBsb2NhbE1vZGVEZXNjcmlwdGlvbihtb2RlOiBDaGVzc2ltYWxzTG9jYWxNb2RlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9kZSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlQm9keScpIDogdGhpcy50KCdjaGVzc2ltYWxzT25lRGV2aWNlQm9keScpO1xuICB9XG5cbiAgYm90RGlmZmljdWx0eUxhYmVsKGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5KTogc3RyaW5nIHtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ2Vhc3knKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90RWFzeScpO1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnaGFyZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RIYXJkJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdE5vcm1hbCcpO1xuICB9XG5cbiAgYW5pbWFsTGFiZWwodHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYGNoZXNzaW1hbHNBbmltYWwke3RoaXMuY2FwaXRhbGl6ZSh0eXBlKX1gKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheVJvd0luZGV4KHJvdzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZSAtIDEgLSByb3cgOiByb3c7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlDb2xJbmRleChjb2w6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyB0aGlzLmdhbWUoKS5ib2FyZFNpemUgLSAxIC0gY29sIDogY29sO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaE9ubGluZUdhbWUoZ2FtZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbiA9IHRoaXMub25saW5lLndhdGNoR2FtZShnYW1lSWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoc3RhdGUpID0+IHtcbiAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZ2FtZSgpO1xuICAgICAgICB0aGlzLmdhbWUuc2V0KHN0YXRlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoc3RhdGUuYm9hcmRTaXplKTtcbiAgICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwcmV2aW91cy5jdXJyZW50VHVybiAhPT0gc3RhdGUuY3VycmVudFR1cm4gJiZcbiAgICAgICAgICBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiZcbiAgICAgICAgICAhdGhpcy5zaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYyhzdGF0ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiYgcHJldmlvdXMuc3RhdHVzICE9PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgdGhpcy5hdWRpby53aW4oKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKTtcbiAgfVxufVxuIl19
|
|
1617
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFxQixTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsb0JBQW9CLEdBQ3JCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBWTFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBR3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9E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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb2FUO3dEQSs0Q2lDLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkE4Q1gsWUFBWTtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBhcHBseUNoZXNzaW1hbHNNb3ZlLFxuICBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZSxcbiAgY3JlYXRlQ2hlc3NpbWFsc0dhbWUsXG4gIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzLFxuICBnZXRDaGVzc2ltYWxzUGllY2VBdCxcbiAgcG9zaXRpb25LZXksXG4gIHJlc2lnbkNoZXNzaW1hbHNHYW1lLFxufSBmcm9tICcuL2NoZXNzaW1hbHMtZW5naW5lJztcbmltcG9ydCB7IENoZXNzaW1hbHNPbmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLW9ubGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0xvY2FsTW9kZSxcbiAgQ2hlc3NpbWFsc01vdmUsXG4gIENoZXNzaW1hbHNQaWVjZSxcbiAgQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuICBDaGVzc2ltYWxzUG9zaXRpb24sXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTW9kYWxMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbW9kYWwtbGF5b3V0L21vZGFsLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSB9IGZyb20gJy4vbWluaS1nYW1lLXBsYXllci1wcm9maWxlLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0FuaW1hbFZpZXcge1xuICB0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgYXNzZXRTcmM6IHN0cmluZztcbiAgdG9uZTogbnVtYmVyO1xufVxuXG50eXBlIENoZXNzaW1hbHNDb25maXJtQWN0aW9uID0gJ3Jlc3RhcnQnIHwgJ2hvbWUnIHwgJ3Jlc2lnbic7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHtcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgZnJvbVJvdzogbnVtYmVyO1xuICBmcm9tQ29sOiBudW1iZXI7XG4gIHRvUm93OiBudW1iZXI7XG4gIHRvQ29sOiBudW1iZXI7XG59XG5cbmNvbnN0IENIRVNTSU1BTFNfTU9WRV9BTklNQVRJT05fTVMgPSAzNjA7XG5jb25zdCBDSEVTU0lNQUxTX0JPVF9USElOS0lOR19NUyA9IDYyMDtcbmNvbnN0IENIRVNTSU1BTFNfQk9UX0NPTE9SOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSAnYmxhY2snO1xuXG5jb25zdCBBTklNQUxTOiBDaGVzc2ltYWxzQW5pbWFsVmlld1tdID0gW1xuICB7IHR5cGU6ICdlYWdsZScsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvZWFnbGUucG5nJywgdG9uZTogNjU5LjI1IH0sXG4gIHsgdHlwZTogJ2J1bGwnLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2J1bGwucG5nJywgdG9uZTogMjYxLjYzIH0sXG4gIHsgdHlwZTogJ2thbmdhcm9vJywgYXNzZXRTcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9tYW1tYS5wbmcnLCB0b25lOiA1MjMuMjUgfSxcbiAgeyB0eXBlOiAnbGlvbicsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvbGlvbmVzcy5wbmcnLCB0b25lOiAzOTIgfSxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jaGVzc2ltYWxzLWdhbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uTW9kYWwsIE1vZGFsTGF5b3V0Q29tcG9uZW50LCBVc2VyQXZhdGFyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWFpbiBjbGFzcz1cImNoZXNzaW1hbHMtc2hlbGxcIj5cbiAgICAgIEBpZiAoc2NyZWVuKCkgPT09ICdob21lJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1oZXJvX19pY29uXCI+4pmfPC9zcGFuPlxuICAgICAgICAgIDxoMT57eyB0KCdjaGVzc2ltYWxzVGl0bGUnKSB9fTwvaDE+XG4gICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1N1YnRpdGxlJykgfX08L3A+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcGFuZWxcIj5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtaG93dG9cIj5cbiAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzSG93VG9UaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIb3dUb0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWxlYXJuLW1vcmVcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5SdWxlc01vZGFsKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnbGVhcm5Nb3JlJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNpemVcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvYXJkU2l6ZScpXCI+XG4gICAgICAgICAgICBAZm9yIChzaXplIG9mIGJvYXJkU2l6ZXM7IHRyYWNrIHNpemUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvYXJkU2l6ZSgpID09PSBzaXplXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRCb2FyZFNpemUuc2V0KHNpemUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2l6ZSB9fXh7eyBzaXplIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHNpemUgPT09IDYgPyB0KCdjaGVzc2ltYWxzU2l6ZVNtYWxsJykgOiB0KCdjaGVzc2ltYWxzU2l6ZUxhcmdlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW1vZGVcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc01vZGVUaXRsZScpXCI+XG4gICAgICAgICAgICBAZm9yIChtb2RlIG9mIGxvY2FsTW9kZXM7IHRyYWNrIG1vZGUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZExvY2FsTW9kZSgpID09PSBtb2RlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRMb2NhbE1vZGUuc2V0KG1vZGUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbG9jYWxNb2RlTGFiZWwobW9kZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgbG9jYWxNb2RlRGVzY3JpcHRpb24obW9kZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWRpZmZpY3VsdHlcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvdERpZmZpY3VsdHknKVwiPlxuICAgICAgICAgICAgICBAZm9yIChkaWZmaWN1bHR5IG9mIGJvdERpZmZpY3VsdGllczsgdHJhY2sgZGlmZmljdWx0eSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkQm90RGlmZmljdWx0eSgpID09PSBkaWZmaWN1bHR5XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGRpZmZpY3VsdHkpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBib3REaWZmaWN1bHR5TGFiZWwoZGlmZmljdWx0eSkgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRHYW1lKClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTdGFydCcpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc09ubGluZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzT25saW5lQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKG9ubGluZUVycm9yKCkpIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fZXJyb3JcIj57eyBvbmxpbmVFcnJvcigpIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19jcmVhdGVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlT25saW5lR2FtZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDcmVhdGVPbmxpbmUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDcmVhdGVPbmxpbmVIaW50JykgfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2pvaW5cIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzSm9pbk9ubGluZVRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtY29kZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNKb2luQ29kZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9ubGluZUpvaW5Db2RlKClcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ2NoZXNzaW1hbHNKb2luQ29kZVBsYWNlaG9sZGVyJylcIlxuICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9ubGluZUpvaW5Db2RlLnNldChub3JtYWxpemVHYW1lSWQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSkpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKSB8fCAhb25saW5lSm9pbkNvZGUoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImpvaW5PbmxpbmVHYW1lQnlDb2RlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1nYW1lXCI+XG4gICAgICAgICAgQGlmIChyZXN1bWVTcGxhc2hWaXNpYmxlKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2hcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPuKZnzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUmVzdW1lU3BsYXNoVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUmVzdW1lU3BsYXNoQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGFydGljbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWJsYWNrLXR1cm5dPVwiZ2FtZSgpLmN1cnJlbnRUdXJuID09PSAnYmxhY2snXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1maW5pc2hlZF09XCJnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHlcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcFwiPlxuICAgICAgICAgICAgICAgIHt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB0KCdjaGVzc2ltYWxzRmluaXNoZWRDaGlwJykgOiBtb2RlQ2hpcExhYmVsKCkgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB3aW5UaXRsZSgpIDogdHVyblRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHdpbkJvZHkoKSA6IHR1cm5Cb2R5KCkgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwXCI+XG4gICAgICAgICAgICAgIEBpZiAobG9nZ2VkSW5Vc2VyKCkpIHtcbiAgICAgICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJsb2dnZWRQbGF5ZXJBdmF0YXJQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBsb2NhbFBsYXllckF2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdChsb2dnZWRJblVzZXIoKSA/ICdsb2dnZWRQbGF5ZXInIDogJ2xvY2FsUGxheWVyJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBsb2dnZWRQbGF5ZXJOYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICBAaWYgKGxvZ2dlZFBsYXllckhhbmRsZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbG9nZ2VkUGxheWVySGFuZGxlKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICBAaWYgKGdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiBnYW1lKCkuc3RhdHVzID09PSAnd2FpdGluZycpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUgY2hlc3NpbWFscy1vbmxpbmUtLXdhaXRpbmdcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc1dhaXRpbmdUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzV2FpdGluZ0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWdhbWUtY29kZVwiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzR2FtZUNvZGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBnYW1lKCkuaWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb3B5T25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ29weUxpbmsnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlT25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU2hhcmVMaW5rJykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc3RhdHVzXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc01vdmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5tb3ZlQ291bnQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB0KCdjaGVzc2ltYWxzV2lubmVyJykgOiB0KCdjaGVzc2ltYWxzUG93ZXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyBwbGF5ZXJMYWJlbChnYW1lKCkud2lubmVyID8/ICd3aGl0ZScpIDogdW5sb2NrZWRMYWJlbChnYW1lKCkuY3VycmVudFR1cm4pIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnID8gdCgnY2hlc3NpbWFsc1Jlc3VsdCcpIDogdCgnY2hlc3NpbWFsc1JpdmFsJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB3aW5SZWFzb25MYWJlbCgpIDogcGxheWVyTGFiZWwoZ2FtZSgpLmN1cnJlbnRUdXJuID09PSAnd2hpdGUnID8gJ2JsYWNrJyA6ICd3aGl0ZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1hcmVuYVwiPlxuICAgICAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgICAgI2JvYXJkQW5jaG9yXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC13cmFwXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWZpbmlzaGVkXT1cImdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCdcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtb3JpZW50aW5nXT1cImlzQm9hcmRPcmllbnRpbmcoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWJvYXJkLXNpemVdPVwiZ2FtZSgpLmJvYXJkU2l6ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLWZyYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtZmlsZS1sYWJlbHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkaXNwbGF5Q29scygpOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmlsZUxhYmVsKGNvbCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmFuay1sYWJlbHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHJvdyBvZiBkaXNwbGF5Um93cygpOyB0cmFjayByb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcmFua0xhYmVsKHJvdykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay12aWV3XT1cImdhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb2FyZCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheVJvd3MoKTsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkaXNwbGF5Q29scygpOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZGFyay1jZWxsXT1cImlzRGFya0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJpc1NlbGVjdGVkQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWxlZ2FsXT1cImlzTGVnYWxDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY2FwdHVyZV09XCJpc0NhcHR1cmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbGFzdF09XCJpc0xhc3RNb3ZlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLW1vdmluZy1zb3VyY2VdPVwiaXNNb3ZpbmdTb3VyY2VDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2FtZSgpLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCAhY2FuUGxheUN1cnJlbnRUdXJuKCkgfHwgISFtb3ZpbmdQaWVjZSgpIHx8IGJvdFRoaW5raW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENlbGwoeyByb3csIGNvbCB9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwaWVjZUF0KHJvdywgY29sKTsgYXMgcGllY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFja109XCJwaWVjZS5jb2xvciA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwbGF5ZXJMYWJlbChwaWVjZS5jb2xvcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19zaWRlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9faGVhZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2NvbGxhclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX25lY2tcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19iYXNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChpc0xlZ2FsQ2VsbChyb3csIGNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXRhcmdldFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbnRlci1saW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgQGlmIChtb3ZpbmdQaWVjZSgpOyBhcyBtb3ZpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtbW92aW5nLXBpZWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1mcm9tLXJvd109XCJtb3ZpbmcuZnJvbVJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tZnJvbS1jb2xdPVwibW92aW5nLmZyb21Db2xcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvLXJvd109XCJtb3ZpbmcudG9Sb3dcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvLWNvbF09XCJtb3ZpbmcudG9Db2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VcIiBbY2xhc3MuaXMtYmxhY2tdPVwibW92aW5nLmNvbG9yID09PSAnYmxhY2snXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX3NpZGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2hlYWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2NvbGxhclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fbmVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fYmFzZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc0dhbWVPdmVyJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB3aW5UaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IG1vdmVzU3VtbWFyeSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmFuay1sYWJlbHMgY2hlc3NpbWFscy1yYW5rLWxhYmVscy0tcmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHJvdyBvZiBkaXNwbGF5Um93cygpOyB0cmFjayByb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcmFua0xhYmVsKHJvdykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtZmlsZS1sYWJlbHMgY2hlc3NpbWFscy1maWxlLWxhYmVscy0tYm90dG9tXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgZGlzcGxheUNvbHMoKTsgdHJhY2sgY29sKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbGVMYWJlbChjb2wpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXBvd2Vyc1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1sb2NrZWRdPVwiIWN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXJlYWR5XT1cImN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzQW5pbWFsQ2FyZHMnKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjdXJyZW50UGxheWVyKCkucG93ZXJVbmxvY2tlZCA/IHQoJ2NoZXNzaW1hbHNVbmxvY2tlZCcpIDogdCgnY2hlc3NpbWFsc0xvY2tlZCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxwPnt7IGN1cnJlbnRQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc0NhcmRzUmVhZHknKSA6IHQoJ2NoZXNzaW1hbHNDYXJkc0xvY2tlZCcpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2FyZHNcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChhbmltYWwgb2YgYW5pbWFsczsgdHJhY2sgYW5pbWFsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEFuaW1hbCgpID09PSBhbmltYWwudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy11c2VkXT1cImN1cnJlbnRQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudFBsYXllcigpLnBvd2VyVW5sb2NrZWQgfHwgY3VycmVudFBsYXllcigpLmNhcmRzW2FuaW1hbC50eXBlXS51c2VkIHx8IGdhbWUoKS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHwgIWNhblBsYXlDdXJyZW50VHVybigpIHx8ICEhbW92aW5nUGllY2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbmltYWwoYW5pbWFsKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1hbmltYWwtZmFjZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhbmltYWwuYXNzZXRTcmNcIiBbYWx0XT1cImFuaW1hbExhYmVsKGFuaW1hbC50eXBlKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhbmltYWxMYWJlbChhbmltYWwudHlwZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdWx0XCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgd2luVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB3aW5Cb2R5KCkgfX08L3A+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYWN0aW9uc1wiPlxuICAgICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdFJlc2lnbigpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1Jlc2lnbicpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIG9ubGluZVJvbGUoKSAhPT0gJ3NwZWN0YXRvcicpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0T25saW5lUmVtYXRjaCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1JlbWF0Y2gnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLm1vZGUgIT09ICdvbmxpbmUnKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdFJlc3RhcnRHYW1lKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdyZXN0YXJ0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXNldFRvSG9tZSgpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFuZ2VNb2RlJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgPC9tYWluPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc1J1bGVzTW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VSdWxlc01vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwidCgnY2hlc3NpbWFsc1J1bGVzVGl0bGUnKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cInQoJ2NoZXNzaW1hbHNSdWxlc1N1YnRpdGxlJylcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFtmb290ZXJdPVwiZmFsc2VcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNcIj5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj4xPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUdvYWxUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZUdvYWxCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+Mjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVNb3ZlVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVNb3ZlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjM8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlUG93ZXJzVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVQb3dlcnNCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+NDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVDYXJkc1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUVhZ2xlJykgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPnt7IHQoJ2NoZXNzaW1hbHNSdWxlQnVsbCcpIH19PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUthbmdhcm9vJykgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGlvbicpIH19PC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjU8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGltaXRzVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW1pdHNCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC92YWwtbW9kYWwtbGF5b3V0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiISFjb25maXJtQWN0aW9uKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJjb25maXJtVGl0bGUoKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cImNvbmZpcm1Cb2R5KClcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFthY3Rpb25zXT1cImNvbmZpcm1BY3Rpb25zKClcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlQ29uZmlybU1vZGFsKClcIlxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJjb25maXJtUGVuZGluZ0FjdGlvbigkZXZlbnQuYWN0aW9uPy50b2tlbilcIlxuICAgICAgICAvPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsICNmZmZmZmYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCAjZTdlNGVhKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMmYyYTNhKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjNmY2YTdhKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMDgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICNmZjAwYjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiB2YXIoLS1pb24tY29sb3ItdGVydGlhcnksICM2YTJkZTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQ6ICMyZmZmYTE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2I6IDQ3LCAyNTUsIDE2MTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vdmU6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnksICMzZGMyZmYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW92ZS1yZ2I6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnktcmdiLCA2MSwgMTk0LCAyNTUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZTogIzAwZTZkMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiOiAwLCAyMzAsIDIwODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3Q6ICNiOThjZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0LXJnYjogMTg1LCAxNDAsIDI1NTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1kYXJrOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtZmlsbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNpZGU6IHRyYW5zcGFyZW50O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtbGluZTogcmdiYSg0NywgNDIsIDU4LCAwLjA4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMC4wOHJlbSByZ2JhKDQ3LCA0MiwgNTgsIDAuMzIpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjIycmVtIHJnYmEoNDcsIDQyLCA1OCwgMC4xNikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbDogIzJmMmEzYTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGU6IHRyYW5zcGFyZW50O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMC4wOHJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTgpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4yMnJlbSAwLjI4cmVtIHJnYmEoMCwgMCwgMCwgMC4yNikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmc6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMiUgMjQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODgpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpIDYlLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpIDEzJSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xMnJlbSByZ2JhKDAsIDAsIDAsIDAuMTYpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6IGdyYXlzY2FsZSgwLjIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjcyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMTI1cmVtO1xuICAgICAgICBtYXgtd2lkdGg6IDQ4cmVtO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2gge1xuICAgICAgICBvcmRlcjogMDtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA0MiUsIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTgpLCB0cmFuc3BhcmVudCAyMnJlbSksXG4gICAgICAgICAgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpIDkyJSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMC45cmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDQuNzVyZW07XG4gICAgICAgIGhlaWdodDogNC43NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS42cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3QsICNmZmYpO1xuICAgICAgICBmb250LXNpemU6IDIuMjVyZW07XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMS4yNXJlbSAzcmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMzIpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcmVzdW1lLXB1bHNlIDEuMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2ggc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjU1cmVtLCA1dncsIDIuNHJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoIHAge1xuICAgICAgICBtYXgtd2lkdGg6IDI0cmVtO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXJlc3VtZS1wdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMjVyZW0pIHNjYWxlKDEuMDQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1zaGVsbCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICMyMzFmMmQ7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMyk7XG4gICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiAjZmZmOGZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6IHJnYmEoMjU1LCAyNDgsIDI1NSwgMC42OCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDcpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1saWdodDogIzI0MjAyZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtZGFyazogIzU0NTE1ZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWZpbGw6ICNmZmZhZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaWRlOiB0cmFuc3BhcmVudDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmU6IHJnYmEoNDcsIDQyLCA1OCwgMC4xKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMC4xcmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42MikpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMjRyZW0gcmdiYSgwLCAwLCAwLCAwLjIyKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1maWxsOiAjMTcxMzFmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2lkZTogdHJhbnNwYXJlbnQ7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93OlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAwLjA4cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40NikpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDAuMjhyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMjJyZW0gMC4zNHJlbSByZ2JhKDAsIDAsIDAsIDAuNDIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJnOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzIlIDI0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KSwgdHJhbnNwYXJlbnQgMzAlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCAjZjdmMGZmLCAjZDhkMWU0KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcjogZHJvcC1zaGFkb3coMCAwLjEycmVtIDAuMTZyZW0gcmdiYSgwLCAwLCAwLCAwLjIyKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtZmlsdGVyOlxuICAgICAgICAgIGdyYXlzY2FsZSgwLjMyKVxuICAgICAgICAgIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjU4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgycmVtLCA3dncsIDRyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjIlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUyKSwgdHJhbnNwYXJlbnQgMTYlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpLCB2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeSkpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvX19pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjVyZW0sIDEwdncsIDVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVybyBoMSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgzcmVtLCAxMnZ3LCA1LjVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMC45O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHAsXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byBwLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwIHAsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGFuZWwsXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgxcmVtLCA0dncsIDEuNXJlbSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMzc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMDgpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS0td2FpdGluZyB7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMzQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgaDIsXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19jcmVhdGUgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luID4gc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2Vycm9yIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKSAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtY29kZSBpbnB1dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjNyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLWNvZGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMnJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLWNvZGUgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuMzVyZW0sIDZ2dywgMnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1nYW1lIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg3NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjg3NXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogNC41cmVtO1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDAuODc1cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yKSwgcmdiYSh2YXIoLS1pb24tY29sb3ItdGVydGlhcnktcmdiLCAxMDYsIDQ1LCAyMjYpLCAwLjEpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWJsYWNrLXR1cm4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4yOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNSUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4xNCksIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMSkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtZmluaXNoZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjQyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNSksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTgpLCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjEyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1maW5pc2hlZCAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MsICMyZGQzNmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMzVyZW0gMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBzdHJvbmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuMDVyZW0sIDR2dywgMS40NXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHAge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDEycmVtO1xuICAgICAgICBtYXgtd2lkdGg6IG1pbigyMHJlbSwgNDIlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC40NXJlbSAwLjdyZW0gMC40NXJlbSAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWxpZ2h0LXJnYiwgMjQ0LCAyNDUsIDI0OCksIDAuNzIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGZsZXg6IDAgMCAycmVtO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuMDVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmb250LXNpemU6IDAuOTJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjEyO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICBvcmRlcjogNDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg3NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byxcbiAgICAgIC5jaGVzc2ltYWxzLXRpcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byBoMixcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byBwLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwIHAsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbGVhcm4tbW9yZSB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RhcnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHtcbiAgICAgICAgb3JkZXI6IDM7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIGJ1dHRvbixcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzc1cmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogNS43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjM3NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjEzKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjA4cmVtLCAzdncsIDEuNTVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLW9yaWVudGluZyAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1vcmllbnQtYm9hcmQgMzIwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcC5pcy1maW5pc2hlZCB7XG4gICAgICAgIG92ZXJmbG93LXg6IHZpc2libGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNvb3JkLXNpemU6IDEuMzVyZW07XG4gICAgICAgIC0tY2hlc3NpbWFscy1jb29yZC1nYXA6IDAuNTVyZW07XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tY2hlc3NpbWFscy1jb29yZC1zaXplKSBtaW5tYXgoMCwgMWZyKSB2YXIoLS1jaGVzc2ltYWxzLWNvb3JkLXNpemUpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHZhcigtLWNoZXNzaW1hbHMtY29vcmQtc2l6ZSkgbWlubWF4KDAsIDFmcikgdmFyKC0tY2hlc3NpbWFscy1jb29yZC1zaXplKTtcbiAgICAgICAgZ2FwOiB2YXIoLS1jaGVzc2ltYWxzLWNvb3JkLWdhcCk7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IG1pbigxMDAlLCA0NHJlbSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWZpbGUtbGFiZWxzLFxuICAgICAgLmNoZXNzaW1hbHMtcmFuay1sYWJlbHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpIDgyJSwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC42MnJlbSwgMi4xdncsIDAuNzhyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWZpbGUtbGFiZWxzIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBhbGlnbi1pdGVtczogZW5kO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWZpbGUtbGFiZWxzLS1ib3R0b20ge1xuICAgICAgICBncmlkLXJvdzogMztcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yYW5rLWxhYmVscyB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAxO1xuICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQodmFyKC0tYm9hcmQtc2l6ZSksIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1pdGVtczogZW5kO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yYW5rLWxhYmVscy0tcmlnaHQge1xuICAgICAgICBncmlkLWNvbHVtbjogMztcbiAgICAgICAganVzdGlmeS1pdGVtczogc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KHZhcigtLWJvYXJkLXNpemUpLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KHZhcigtLWJvYXJkLXNpemUpLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC45NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb3JpZW50LWJvYXJkIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDAuMDZyZW0pO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45ODUpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjkyO1xuICAgICAgICAgIGZpbHRlcjogYmx1cigwKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VudGVyLWxpbmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci10b3A6IDAuMDhyZW0gZGFzaGVkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjYyKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgcGFkZGluZzogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAzOCUsIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjgpLCB0cmFuc3BhcmVudCAzMyUpLFxuICAgICAgICAgIHJnYmEoMTMsIDEwLCAxOCwgMC43Mik7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHNwYW4ge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMzJyZW0gMC43cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjY1cmVtLCA4dncsIDNyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuOXJlbSwgM3Z3LCAxLjFyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICBiYWNrZ3JvdW5kIDE2MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxNjBtcyBlYXNlLFxuICAgICAgICAgIHRyYW5zZm9ybSAxNjBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWRhcmstY2VsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtZGFyayk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtc2VsZWN0ZWQge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjI4KSAwIDM2JSwgdHJhbnNwYXJlbnQgNjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkKSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNDIpLFxuICAgICAgICAgIDAgMCAwLjU1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjU2KSxcbiAgICAgICAgICAwIDAgMS41NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbGVnYWw6bm90KC5pcy1jYXB0dXJlKTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwLjM1cmVtO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBib3JkZXI6IDAuMTRyZW0gc29saWQgdmFyKC0tY2hlc3NpbWFscy1tb3ZlKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41NXJlbTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDAuNzQ7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWxhc3Q6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1sZWdhbCk6bm90KC5pcy1jYXB0dXJlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWxhc3QtcmdiKSwgMC4xNikgMCA0MiUsIHRyYW5zcGFyZW50IDY4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjEyKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjJyZW0gdmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlKSxcbiAgICAgICAgICBpbnNldCAwIDAgMC40MnJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpLFxuICAgICAgICAgIGluc2V0IDAgMCAxcmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMjIpLFxuICAgICAgICAgIDAgMCAwLjQycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzQpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1hdXJhIDEuN3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMjhyZW07XG4gICAgICAgIHotaW5kZXg6IDM7XG4gICAgICAgIGJvcmRlcjogMC4xNHJlbSBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjU4cmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjZyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ4KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC44NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1mcmFtZSAxLjZzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1hdXJhIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIGluc2V0IDAgMCAwIDAuMThyZW0gdmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlKSxcbiAgICAgICAgICAgIGluc2V0IDAgMCAwLjM4cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MiksXG4gICAgICAgICAgICBpbnNldCAwIDAgMC44NnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjIpLFxuICAgICAgICAgICAgMCAwIDAuMzRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yOCk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS4yMik7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIGluc2V0IDAgMCAwIDAuMjJyZW0gdmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlKSxcbiAgICAgICAgICAgIGluc2V0IDAgMCAwLjU4cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCksXG4gICAgICAgICAgICBpbnNldCAwIDAgMS4xOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjMpLFxuICAgICAgICAgICAgMCAwIDAuNTJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1tb3Zpbmctc291cmNlIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2Uge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogY2xhbXAoMi4xcmVtLCA3Ljh2dywgMy45NXJlbSk7XG4gICAgICAgIGhlaWdodDogY2xhbXAoMi4xcmVtLCA3Ljh2dywgMy45NXJlbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgI2ZmMDBiMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1maWxsOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWZpbGwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utc2lkZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaWRlKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtbGluZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lOiByZ2JhKDQ3LCA0MiwgNTgsIDAuMTgpO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2UuaXMtYmxhY2sge1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGw6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1zaWRlOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtbGluZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMik7XG4gICAgICAgIGZpbHRlcjogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb3ZpbmctcGllY2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgei1pbmRleDogNjtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIHZhcigtLWJvYXJkLXNpemUpKTtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLyB2YXIoLS1ib2FyZC1zaXplKSk7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICBjYWxjKHZhcigtLWZyb20tY29sKSAqIDEwMCUpLFxuICAgICAgICAgIGNhbGModmFyKC0tZnJvbS1yb3cpICogMTAwJSlcbiAgICAgICAgKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBpZWNlLXRyYXZlbCAzNjBtcyBjdWJpYy1iZXppZXIoMC4yLCAwLjgyLCAwLjI0LCAxKSBib3RoO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcGllY2UtdHJhdmVsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLWZyb20tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLWZyb20tcm93KSAqIDEwMCUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDY4JSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMS4wNyk7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS10by1jb2wpICogMTAwJSksXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fc2lkZSxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19oZWFkLFxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2NvbGxhcixcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19uZWNrLFxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2Jhc2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCk7XG4gICAgICAgIGJvcmRlcjogMC4wNzVyZW0gc29saWQgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fc2lkZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19oZWFkIHtcbiAgICAgICAgdG9wOiAzJTtcbiAgICAgICAgd2lkdGg6IDQ4JTtcbiAgICAgICAgaGVpZ2h0OiA0MiU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1MCUgNDIlIDQyJTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjYpIDAgMzAlLCB0cmFuc3BhcmVudCAzMSUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTAuMDhyZW0gMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZS5pcy1ibGFjayAuY2hlc3NpbWFscy1waWVjZV9faGVhZCB7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMC4yMnJlbSAtMC4xOHJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNyksXG4gICAgICAgICAgaW5zZXQgMCAtMC4wOHJlbSAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIge1xuICAgICAgICB0b3A6IDM5JTtcbiAgICAgICAgd2lkdGg6IDc0JTtcbiAgICAgICAgaGVpZ2h0OiAxOCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IC0wLjE4cmVtIDAuMTRyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMDhyZW0gMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayB7XG4gICAgICAgIHRvcDogNTQlO1xuICAgICAgICB3aWR0aDogNTglO1xuICAgICAgICBoZWlnaHQ6IDMwJTtcbiAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDE2JSAwLCA4NCUgMCwgMTAwJSAxMDAlLCAwIDEwMCUpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IC0wLjE2cmVtIDAuMTZyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fYmFzZSB7XG4gICAgICAgIGJvdHRvbTogMiU7XG4gICAgICAgIHdpZHRoOiA4NCU7XG4gICAgICAgIGhlaWdodDogMjAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW0gMC41cmVtIDAuMjRyZW0gMC4yNHJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xNnJlbSAwLjEycmVtIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdGFyZ2V0IHtcbiAgICAgICAgd2lkdGg6IDAuODVyZW07XG4gICAgICAgIGhlaWdodDogMC44NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW92ZSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAuOXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbW92ZS1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDE4MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxODBtcyBlYXNlLFxuICAgICAgICAgIHRyYW5zZm9ybSAxODBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcgc3BhbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4yOHJlbSAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDJweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjE2KSxcbiAgICAgICAgICAwIDAuOXJlbSAycmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTMpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIHtcbiAgICAgICAgb3BhY2l0eTogMC40MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi43cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuN3JlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZyk7XG4gICAgICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSA5MiUsICMwMDApO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDcyJTtcbiAgICAgICAgaGVpZ2h0OiA3MiU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGZpbHRlcjogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1maWx0ZXIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtc2VsZWN0ZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzQlIDI0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KSwgdHJhbnNwYXJlbnQgMzIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCAjZmZmZmZmLCAjZjBlY2Y3KTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpIDk0JSwgIzAwMCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEoNDcsIDQyLCA1OCwgMC4xMiksXG4gICAgICAgICAgMCAwLjc1cmVtIDEuNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWZpbHRlcik7XG4gICAgICAgIG9wYWNpdHk6IDAuODY7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nLFxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXVzZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nIHtcbiAgICAgICAgb3BhY2l0eTogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtaW1nLW9wYWNpdHkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuNDIpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFyZW0gMi40cmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJQdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAxLjRyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWN0aW9ucyB7XG4gICAgICAgIG9yZGVyOiA2O1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgobWluKDEwMCUsIDEycmVtKSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjBweCkge1xuICAgICAgICAuY2hlc3NpbWFscy1nYW1lIHtcbiAgICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQsXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtYWN0aW9ucyB7XG4gICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHtcbiAgICAgICAgICB3aWR0aDogbWluKDEwMCUsIDQ0cmVtKTtcbiAgICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMTFyZW0sIDAuNjhmcikgbWlubWF4KDAsIDFmcik7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24ge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMmYyYTNhKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgI2ZmMDBiMik7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGFydGljbGUgPiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgaDMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBwLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgdWwge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBwLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgbGkge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzZmNmE3YSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByaW1hcnksXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjYyNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByaW1hcnkge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMS4xMjVyZW0gMi44cmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDU2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLXNpemUsXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC42MjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjdyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC41NXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDQ1ZW07XG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4xcmVtLCA2dncsIDEuNDVyZW0pO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIGRpdiB7XG4gICAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNDVyZW0gMC40cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHNtYWxsIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45MnJlbSwgMy44dncsIDEuMDhyZW0pO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdGlwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQge1xuICAgICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMC43cmVtIDAuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHtcbiAgICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcge1xuICAgICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIGgyIHtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcgc3BhbiB7XG4gICAgICAgICAgcGFkZGluZzogMC4yMnJlbSAwLjQ4cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDQuMjVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjRyZW0gMC4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgICB3aWR0aDogMi4xcmVtO1xuICAgICAgICAgIGhlaWdodDogMi4xcmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNvb3JkLXNpemU6IDEuMDVyZW07XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNvb3JkLWdhcDogMC40MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjpiZWZvcmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YWZ0ZXIsXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vdmluZy1waWVjZSB7XG4gICAgICAgICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1tb3ZpbmctcGllY2Uge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgY2FsYyh2YXIoLS10by1jb2wpICogMTAwJSksXG4gICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGVzc2ltYWxzR2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdWRpbyA9IGluamVjdChSZXRyb0F1ZGlvU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25saW5lID0gaW5qZWN0KENoZXNzaW1hbHNPbmxpbmVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXllclByb2ZpbGVzID0gaW5qZWN0KE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UpO1xuICBwcml2YXRlIGJvYXJkT3JpZW50YXRpb25UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUFuaW1hdGlvblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBib3RUdXJuVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIG9ubGluZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHBlbmRpbmdPbmxpbmVHYW1lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvcGVuaW5nT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb3BlbmVkT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnYm9hcmRBbmNob3InKSBwcml2YXRlIGJvYXJkQW5jaG9yPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgcmVhZG9ubHkgYm9hcmRTaXplczogQ2hlc3NpbWFsc0JvYXJkU2l6ZVtdID0gWzYsIDhdO1xuICByZWFkb25seSBsb2NhbE1vZGVzOiBDaGVzc2ltYWxzTG9jYWxNb2RlW10gPSBbJ29uZS1kZXZpY2UnLCAnYm90J107XG4gIHJlYWRvbmx5IGJvdERpZmZpY3VsdGllczogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHlbXSA9IFsnZWFzeScsICdub3JtYWwnLCAnaGFyZCddO1xuICByZWFkb25seSBhbmltYWxzID0gQU5JTUFMUztcbiAgcmVhZG9ubHkgc2NyZWVuID0gc2lnbmFsPCdob21lJyB8ICdnYW1lJz4oJ2hvbWUnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb2FyZFNpemUgPSBzaWduYWw8Q2hlc3NpbWFsc0JvYXJkU2l6ZT4oNik7XG4gIHJlYWRvbmx5IHNlbGVjdGVkTG9jYWxNb2RlID0gc2lnbmFsPENoZXNzaW1hbHNMb2NhbE1vZGU+KCdvbmUtZGV2aWNlJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm90RGlmZmljdWx0eSA9IHNpZ25hbDxDaGVzc2ltYWxzQm90RGlmZmljdWx0eT4oJ25vcm1hbCcpO1xuICByZWFkb25seSBnYW1lID0gc2lnbmFsPENoZXNzaW1hbHNHYW1lU3RhdGU+KGNyZWF0ZUNoZXNzaW1hbHNHYW1lKDYpKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRQaWVjZUlkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRBbmltYWwgPSBzaWduYWw8Q2hlc3NpbWFsc0FuaW1hbFR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzUnVsZXNNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc0JvYXJkT3JpZW50aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbW92aW5nUGllY2UgPSBzaWduYWw8Q2hlc3NpbWFsc01vdmluZ1BpZWNlVmlldyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgYm90VGhpbmtpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjb25maXJtQWN0aW9uID0gc2lnbmFsPENoZXNzaW1hbHNDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVKb2luQ29kZSA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZUxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBvbmxpbmVFcnJvciA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZVVpZCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJlc3VtZVNwbGFzaFZpc2libGUgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBsb2dnZWRJblVzZXIgPSB0aGlzLmF1dGgudXNlcjtcbiAgcmVhZG9ubHkgbG9jYWxQbGF5ZXJQcm9maWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCkpO1xuICByZWFkb25seSBsb2NhbFBsYXllckF2YXRhciA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCk/LmF2YXRhciA/PyAn8J+MnycpO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJOYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgIGlmICh1c2VyPy5uYW1lPy50cmltKCkpIHJldHVybiB1c2VyLm5hbWUudHJpbSgpO1xuICAgIGlmICh1c2VyPy5lbWFpbD8udHJpbSgpKSByZXR1cm4gdXNlci5lbWFpbC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyUHJvZmlsZXMuZGlzcGxheU5hbWUodGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKSwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllckhhbmRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICBjb25zdCBoYW5kbGUgPSB1c2VyPy5oYW5kbGU/LnRyaW0oKTtcbiAgICBpZiAoaGFuZGxlKSByZXR1cm4gaGFuZGxlLnN0YXJ0c1dpdGgoJ0AnKSA/IGhhbmRsZSA6IGBAJHtoYW5kbGV9YDtcbiAgICBpZiAodXNlcj8udXNlcklkKSByZXR1cm4gYElEICR7dGhpcy5zaG9ydFVzZXJJZCh1c2VyLnVzZXJJZCl9YDtcbiAgICBjb25zdCBwcm9maWxlSWQgPSB0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpPy5pZDtcbiAgICByZXR1cm4gcHJvZmlsZUlkID8gYElEICR7dGhpcy5zaG9ydFVzZXJJZChwcm9maWxlSWQpfWAgOiAnJztcbiAgfSk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllckF2YXRhclByb3BzID0gY29tcHV0ZWQ8VXNlckF2YXRhck1ldGFkYXRhPigoKSA9PiAoe1xuICAgIHVzZXI6IHRoaXMubG9nZ2VkSW5Vc2VyKCksXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgICBib3JkZXJlZDogdHJ1ZSxcbiAgfSkpO1xuXG4gIEBJbnB1dCgpIHNldCBvbmxpbmVHYW1lSWQodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBnYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodmFsdWUgPz8gJycpO1xuICAgIGlmICghZ2FtZUlkKSByZXR1cm47XG4gICAgdGhpcy5wZW5kaW5nT25saW5lR2FtZUlkID0gZ2FtZUlkO1xuICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCAhPT0gZ2FtZUlkICYmIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCAhPT0gZ2FtZUlkKSB7XG4gICAgICB2b2lkIHRoaXMub3Blbk9ubGluZUdhbWUoZ2FtZUlkKTtcbiAgICB9XG4gIH1cblxuICByZWFkb25seSBjdXJyZW50UGxheWVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nYW1lKCkucGxheWVyc1t0aGlzLmdhbWUoKS5jdXJyZW50VHVybl0pO1xuICByZWFkb25seSBsZWdhbE1vdmVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHBpZWNlSWQgPSB0aGlzLnNlbGVjdGVkUGllY2VJZCgpO1xuICAgIGlmICghcGllY2VJZCkgcmV0dXJuIFtdO1xuICAgIGlmICghdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBnZXRDaGVzc2ltYWxzTGVnYWxNb3Zlcyh0aGlzLmdhbWUoKSwgcGllY2VJZCwgdGhpcy5zZWxlY3RlZEFuaW1hbCgpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxlZ2FsTW92ZUtleXMgPSBjb21wdXRlZCgoKSA9PiBuZXcgU2V0KHRoaXMubGVnYWxNb3ZlcygpLm1hcCgobW92ZSkgPT4gcG9zaXRpb25LZXkobW92ZS50bykpKSk7XG4gIHJlYWRvbmx5IGNhcHR1cmVNb3ZlS2V5cyA9IGNvbXB1dGVkKFxuICAgICgpID0+IG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkuZmlsdGVyKChtb3ZlKSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSksXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkUm93cyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZSB9LCAoXywgaW5kZXgpID0+IGluZGV4KSk7XG4gIHJlYWRvbmx5IGJvYXJkQ29scyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZSB9LCAoXywgaW5kZXgpID0+IGluZGV4KSk7XG4gIHJlYWRvbmx5IGRpc3BsYXlSb3dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gWy4uLnRoaXMuYm9hcmRSb3dzKCldLnJldmVyc2UoKSA6IHRoaXMuYm9hcmRSb3dzKCksXG4gICk7XG4gIHJlYWRvbmx5IGRpc3BsYXlDb2xzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gWy4uLnRoaXMuYm9hcmRDb2xzKCldLnJldmVyc2UoKSA6IHRoaXMuYm9hcmRDb2xzKCksXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkT3JpZW50YXRpb25Db2xvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHVpZCA/IHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB1aWQpID8/ICd3aGl0ZScgOiAnd2hpdGUnO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUuY3VycmVudFR1cm47XG4gIH0pO1xuICByZWFkb25seSBvbmxpbmVSb2xlID0gY29tcHV0ZWQoKCk6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciB8ICd3YWl0aW5nJyB8ICdzcGVjdGF0b3InIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoIXVpZCkgcmV0dXJuICdzcGVjdGF0b3InO1xuICAgIGlmICh0aGlzLm9ubGluZS5pc0hvc3RXYWl0aW5nKGdhbWUsIHVpZCkpIHJldHVybiAnd2FpdGluZyc7XG4gICAgcmV0dXJuIHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB1aWQpID8/ICdzcGVjdGF0b3InO1xuICB9KTtcbiAgcmVhZG9ubHkgY2FuUGxheUN1cnJlbnRUdXJuID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUiAmJiAhdGhpcy5ib3RUaGlua2luZygpO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHRoaXMub25saW5lUm9sZSgpID09PSBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgY3VycmVudFR1cm5UaXRsZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdjaGVzc2ltYWxzQ3VycmVudFR1cm4nKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGxheWVyTGFiZWwodGhpcy5nYW1lKCkuY3VycmVudFR1cm4pKSxcbiAgKTtcbiAgcmVhZG9ubHkgd2luVGl0bGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc1dpblRpdGxlJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLndpbm5lciA/PyAnd2hpdGUnKSksXG4gICk7XG4gIHJlYWRvbmx5IHdpbkJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5nYW1lKCkud2lubmVyUmVhc29uID8/ICdwcm9tb3Rpb24nO1xuICAgIGNvbnN0IGtleSA9XG4gICAgICByZWFzb24gPT09ICdlbGltaW5hdGlvbidcbiAgICAgICAgPyAnY2hlc3NpbWFsc1dpbkVsaW1pbmF0aW9uJ1xuICAgICAgICA6IHJlYXNvbiA9PT0gJ3Jlc2lnbmF0aW9uJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNXaW5SZXNpZ25hdGlvbidcbiAgICAgICAgICA6ICdjaGVzc2ltYWxzV2luUHJvbW90aW9uJztcbiAgICByZXR1cm4gdGhpcy50KGtleSk7XG4gIH0pO1xuICByZWFkb25seSB3aW5SZWFzb25MYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByZWFzb24gPSB0aGlzLmdhbWUoKS53aW5uZXJSZWFzb24gPz8gJ3Byb21vdGlvbic7XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIHJlYXNvbiA9PT0gJ2VsaW1pbmF0aW9uJ1xuICAgICAgICA/ICdjaGVzc2ltYWxzUmVhc29uRWxpbWluYXRpb24nXG4gICAgICAgIDogcmVhc29uID09PSAncmVzaWduYXRpb24nXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc1JlYXNvblJlc2lnbmF0aW9uJ1xuICAgICAgICAgIDogJ2NoZXNzaW1hbHNSZWFzb25Qcm9tb3Rpb24nO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KTtcbiAgfSk7XG4gIHJlYWRvbmx5IG1vdmVzU3VtbWFyeSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdjaGVzc2ltYWxzTW92ZXNTdW1tYXJ5JykucmVwbGFjZSgne21vdmVzfScsIGAke3RoaXMuZ2FtZSgpLm1vdmVDb3VudH1gKSxcbiAgKTtcbiAgcmVhZG9ubHkgY29uZmlybVRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXN0YXJ0VGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXNpZ25UaXRsZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtSG9tZVRpdGxlJyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzdGFydEJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXNpZ25Cb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1Ib21lQm9keScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogdGhpcy50KCdjYW5jZWwnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY2FuY2VsJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6XG4gICAgICAgICAgYWN0aW9uID09PSAncmVzaWduJ1xuICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNSZXNpZ24nKVxuICAgICAgICAgICAgOiBhY3Rpb24gPT09ICdyZXN0YXJ0J1xuICAgICAgICAgICAgICA/IHRoaXMudCgncmVzdGFydCcpXG4gICAgICAgICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbmdlTW9kZScpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgdG9rZW46ICdjb25maXJtJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfSk7XG4gIHJlYWRvbmx5IGFjdGlvbkhpbnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGllY2VJZCA9IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gICAgaWYgKCFwaWVjZUlkKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja0FueVBpZWNlJyk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBbmltYWwoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tQb3dlclRhcmdldCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrVGFyZ2V0Jyk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNaW5pR2FtZXMnLCBNSU5JX0dBTUVTX0kxOE4pO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQodHJ1ZSk7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKTtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gICAgY29uc3QgZ2FtZUlkID0gdGhpcy5wZW5kaW5nT25saW5lR2FtZUlkO1xuICAgIGlmIChnYW1lSWQgJiYgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCAmJiB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCkge1xuICAgICAgdm9pZCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01pbmlHYW1lcycpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG9ydFVzZXJJZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmIChub3JtYWxpemVkLmxlbmd0aCA8PSAxMCkgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgcmV0dXJuIGAke25vcm1hbGl6ZWQuc2xpY2UoMCwgNCl94oCmJHtub3JtYWxpemVkLnNsaWNlKC00KX1gO1xuICB9XG5cbiAgc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMuZ2FtZS5zZXQoY3JlYXRlQ2hlc3NpbWFsc0dhbWUodGhpcy5zZWxlY3RlZEJvYXJkU2l6ZSgpKSk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVPbmxpbmVHYW1lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5vbmxpbmVFcnJvci5zZXQoJycpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGdhbWUgPSBhd2FpdCB0aGlzLm9ubGluZS5jcmVhdGVHYW1lKHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUoKSk7XG4gICAgICB0aGlzLm9ubGluZVVpZC5zZXQodGhpcy5vbmxpbmUuY3VycmVudFVpZCk7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IGdhbWUuaWQ7XG4gICAgICB0aGlzLndhdGNoT25saW5lR2FtZShnYW1lLmlkKTtcbiAgICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvbWluaS1nYW1lcy9jaGVzc2ltYWxzLyR7Z2FtZS5pZH1gKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY3JlYXRlIG9ubGluZSBnYW1lIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGpvaW5PbmxpbmVHYW1lQnlDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh0aGlzLm9ubGluZUpvaW5Db2RlKCkpO1xuICAgIGlmICghdGhpcy5vbmxpbmUuaXNWYWxpZEdhbWVJZChnYW1lSWQpKSB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChnYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL21pbmktZ2FtZXMvY2hlc3NpbWFscy8ke2dhbWVJZH1gKTtcbiAgICBhd2FpdCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gIH1cblxuICBhc3luYyBvcGVuT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRHYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQoZ2FtZUlkKTtcbiAgICBpZiAoIXRoaXMub25saW5lLmlzVmFsaWRHYW1lSWQobm9ybWFsaXplZEdhbWVJZCkpIHtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9PT0gbm9ybWFsaXplZEdhbWVJZCB8fCB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPT09IG5vcm1hbGl6ZWRHYW1lSWQpIHJldHVybjtcblxuICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSBub3JtYWxpemVkR2FtZUlkO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5qb2luR2FtZShub3JtYWxpemVkR2FtZUlkKTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gbm9ybWFsaXplZEdhbWVJZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKG5vcm1hbGl6ZWRHYW1lSWQpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIG9wZW4gb25saW5lIGdhbWUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdm9pZCB0aGlzLnJlcXVlc3RPbmxpbmVSZW1hdGNoKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5nYW1lLnNldChjcmVhdGVDaGVzc2ltYWxzR2FtZSh0aGlzLmdhbWUoKS5ib2FyZFNpemUpKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHJlc2V0VG9Ib21lKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9taW5pLWdhbWVzJyk7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQocmV0dXJuSG9tZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHwgZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIGlmICh0aGlzLm1vdmVBbmltYXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKTtcbiAgICB0aGlzLm1vdmVBbmltYXRpb25UaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZ2FtZS5zZXQoY3JlYXRlQ2hlc3NpbWFsc0dhbWUoZ2FtZS5ib2FyZFNpemUpKTtcbiAgICBpZiAocmV0dXJuSG9tZSkgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gIH1cblxuICByZXF1ZXN0UmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzdGFydCcpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdFJlc2V0VG9Ib21lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RSZXNpZ24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc2lnbicpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VDb25maXJtTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgY29uZmlybVBlbmRpbmdBY3Rpb24odG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodG9rZW4gIT09ICdjb25maXJtJykge1xuICAgICAgdGhpcy5jbG9zZUNvbmZpcm1Nb2RhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcblxuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0Jykge1xuICAgICAgdGhpcy5yZXN0YXJ0R2FtZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnaG9tZScpIHtcbiAgICAgIHRoaXMucmVzZXRUb0hvbWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHtcbiAgICAgIHRoaXMucmVzaWduR2FtZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzaWduR2FtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIHZvaWQgdGhpcy5vbmxpbmUucmVzaWduKGdhbWUuaWQpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5nYW1lLnNldChyZXNpZ25DaGVzc2ltYWxzR2FtZShnYW1lLCBnYW1lLmN1cnJlbnRUdXJuKSk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYXVkaW8ud2luKCk7XG4gIH1cblxuICBvcGVuUnVsZXNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUnVsZXNNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VSdWxlc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNSdWxlc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgc2VsZWN0Q2VsbChwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCAhdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fCB0aGlzLm1vdmluZ1BpZWNlKCkpIHJldHVybjtcblxuICAgIGNvbnN0IHBpZWNlID0gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoZ2FtZSwgcG9zaXRpb24pO1xuICAgIGlmIChwaWVjZT8uY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldChwaWVjZS5pZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZSA9IHRoaXMubGVnYWxNb3ZlcygpLmZpbmQoKGl0ZW0pID0+IHBvc2l0aW9uS2V5KGl0ZW0udG8pID09PSBwb3NpdGlvbktleShwb3NpdGlvbikpO1xuICAgIGlmICghbW92ZSkgcmV0dXJuO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKGdhbWUsIG1vdmUpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAgIHZvaWQgdGhpcy5vbmxpbmUubW92ZShnYW1lLmlkLCBtb3ZlKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnBsYXlNb3ZlU291bmQobW92ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFuaW1hdGVNb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuXG4gICAgY29uc3QgbW92aW5nUGllY2UgPSBnYW1lLnBpZWNlcy5maW5kKChwaWVjZSkgPT4gcGllY2UuaWQgPT09IG1vdmUucGllY2VJZCk7XG4gICAgaWYgKCFtb3ZpbmdQaWVjZSkge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh7XG4gICAgICBjb2xvcjogbW92aW5nUGllY2UuY29sb3IsXG4gICAgICBmcm9tUm93OiB0aGlzLmRpc3BsYXlSb3dJbmRleChtb3ZlLmZyb20ucm93KSxcbiAgICAgIGZyb21Db2w6IHRoaXMuZGlzcGxheUNvbEluZGV4KG1vdmUuZnJvbS5jb2wpLFxuICAgICAgdG9Sb3c6IHRoaXMuZGlzcGxheVJvd0luZGV4KG1vdmUudG8ucm93KSxcbiAgICAgIHRvQ29sOiB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLnRvLmNvbCksXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vdmVBbmltYXRpb25UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICB9LCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBbmltYXRlZE1vdmUocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZ2FtZS5zZXQodXBkYXRlZCk7XG4gICAgaWYgKFxuICAgICAgdXBkYXRlZC5jdXJyZW50VHVybiAhPT0gcHJldmlvdXMuY3VycmVudFR1cm4gJiZcbiAgICAgIHVwZGF0ZWQuc3RhdHVzICE9PSAnZmluaXNoZWQnICYmXG4gICAgICAhdGhpcy5zaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYyh1cGRhdGVkKVxuICAgICkge1xuICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgIH1cbiAgICBpZiAodXBkYXRlZC5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHtcbiAgICAgIHRoaXMuYXVkaW8ud2luKCk7XG4gICAgfVxuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcXVldWVCb3RUdXJuSWZOZWVkZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJyB8fFxuICAgICAgZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5ib3RUaGlua2luZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGxheUJvdFR1cm4oKSwgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5Qm90VHVybigpOiB2b2lkIHtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKFxuICAgICAgZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICApIHtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtb3ZlID0gY2hvb3NlQ2hlc3NpbWFsc0JvdE1vdmUoZ2FtZSwgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkoKSk7XG4gICAgaWYgKCFtb3ZlKSB7XG4gICAgICB0aGlzLmdhbWUuc2V0KHJlc2lnbkNoZXNzaW1hbHNHYW1lKGdhbWUsIENIRVNTSU1BTFNfQk9UX0NPTE9SKSk7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmF1ZGlvLndpbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuYW5pbWF0ZU1vdmUoZ2FtZSwgbW92ZSwgdXBkYXRlZCk7XG4gICAgICB0aGlzLnBsYXlNb3ZlU291bmQobW92ZSwgdHJ1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQm90VHVybigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ib3RUdXJuVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvdFR1cm5UaW1lcik7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYygpKSByZXR1cm47XG4gICAgaWYgKHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpO1xuICAgIHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQoZmFsc2UpO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQoZmFsc2UpLCAzNDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYyhnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlID0gdGhpcy5nYW1lKCkpOiBib29sZWFuIHtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0JvYXJkU29vbigpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmJvYXJkQW5jaG9yPy5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcbiAgICAgIH0sIDgwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheU1vdmVTb3VuZChtb3ZlOiBDaGVzc2ltYWxzTW92ZSwgaXNCb3QgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmIChtb3ZlLmFuaW1hbCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzUG93ZXIobW92ZS5hbmltYWwpO1xuICAgICAgaWYgKG1vdmUuY2FwdHVyZXNQaWVjZUlkICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMuYXVkaW8uY2hlc3NpbWFsc0NhcHR1cmUoKSwgMTUwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG1vdmUuY2FwdHVyZXNQaWVjZUlkKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNDYXB0dXJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0JvdCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzQm90TW92ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNNb3ZlKCk7XG4gIH1cblxuICB0b2dnbGVBbmltYWwoYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVmlldyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fCB0aGlzLmJvdFRoaW5raW5nKCkpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zZWxlY3RlZEFuaW1hbCgpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KGN1cnJlbnQgPT09IGFuaW1hbC50eXBlID8gdW5kZWZpbmVkIDogYW5pbWFsLnR5cGUpO1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFBpZWNlSWQoKSkge1xuICAgICAgY29uc3QgZmlyc3RQaWVjZSA9IHRoaXMuZ2FtZSgpLnBpZWNlcy5maW5kKFxuICAgICAgICAocGllY2UpID0+ICFwaWVjZS5jYXB0dXJlZCAmJiBwaWVjZS5jb2xvciA9PT0gdGhpcy5nYW1lKCkuY3VycmVudFR1cm4sXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KGZpcnN0UGllY2U/LmlkKTtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5zaW1vblBhZChhbmltYWwudG9uZSk7XG4gIH1cblxuICBwaWVjZUF0KHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IENoZXNzaW1hbHNQaWVjZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldENoZXNzaW1hbHNQaWVjZUF0KHRoaXMuZ2FtZSgpLCB7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNEYXJrQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHJvdyArIGNvbCkgJSAyID09PSAxO1xuICB9XG5cbiAgaXNTZWxlY3RlZENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGllY2UgPSB0aGlzLnBpZWNlQXQocm93LCBjb2wpO1xuICAgIHJldHVybiAhIXBpZWNlICYmIHBpZWNlLmlkID09PSB0aGlzLnNlbGVjdGVkUGllY2VJZCgpO1xuICB9XG5cbiAgaXNMZWdhbENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGVnYWxNb3ZlS2V5cygpLmhhcyhwb3NpdGlvbktleSh7IHJvdywgY29sIH0pKTtcbiAgfVxuXG4gIGlzQ2FwdHVyZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FwdHVyZU1vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNMYXN0TW92ZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFzdE1vdmUgPSB0aGlzLmdhbWUoKS5sYXN0TW92ZTtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWRQaWVjZUlkKCkgJiYgISFsYXN0TW92ZSAmJiBwb3NpdGlvbktleShsYXN0TW92ZS50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc01vdmluZ1NvdXJjZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbW92aW5nID0gdGhpcy5tb3ZpbmdQaWVjZSgpO1xuICAgIGlmICghbW92aW5nKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheVJvd0luZGV4KHJvdykgPT09IG1vdmluZy5mcm9tUm93ICYmIHRoaXMuZGlzcGxheUNvbEluZGV4KGNvbCkgPT09IG1vdmluZy5mcm9tQ29sO1xuICB9XG5cbiAgZmlsZUxhYmVsKGNvbDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NSArIGNvbCk7XG4gIH1cblxuICByYW5rTGFiZWwocm93OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmdhbWUoKS5ib2FyZFNpemUgLSByb3d9YDtcbiAgfVxuXG4gIHBsYXllckxhYmVsKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHRoaXMudCgnY2hlc3NpbWFsc1doaXRlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCbGFjaycpO1xuICB9XG5cbiAgbW9kZUNoaXBMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2UnKTtcbiAgICB9XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmIChyb2xlID09PSAnd2FpdGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVXYWl0aW5nJyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzU3BlY3RhdG9yJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBsYXllcicpO1xuICB9XG5cbiAgdHVyblRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JyAmJiBnYW1lLmN1cnJlbnRUdXJuID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUikge1xuICAgICAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90VGhpbmtpbmdUaXRsZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFR1cm5UaXRsZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09IGdhbWUuY3VycmVudFR1cm4pIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNZb3VyVHVybicpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDdXJyZW50VHVybicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wbGF5ZXJMYWJlbChnYW1lLmN1cnJlbnRUdXJuKSk7XG4gIH1cblxuICB0dXJuQm9keSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICd3YWl0aW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdCb2R5Jyk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSB7XG4gICAgICByZXR1cm4gZ2FtZS5jdXJyZW50VHVybiA9PT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ0JvZHknKVxuICAgICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdFlvdXJUdXJuQm9keScpO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLm9ubGluZVJvbGUoKSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVWaWV3ZXInKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLm9ubGluZVJvbGUoKSAhPT0gZ2FtZS5jdXJyZW50VHVybikgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUdXJuJyk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNZb3VyVHVybkJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm9hcmRGbGlwcycpO1xuICB9XG5cbiAgbm9ybWFsaXplR2FtZUlkKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgY29weU9ubGluZUxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUuc2hhcmVVcmwodGhpcy5nYW1lKCkuaWQpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkPy53cml0ZVRleHQodXJsKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc0xpbmtDb3BpZWQnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDIyMDAsIHBvc2l0aW9uOiAndG9wJyB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2hhcmVPbmxpbmVMaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkKTtcbiAgICBpZiAobmF2aWdhdG9yLnNoYXJlKSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2hhcmUoeyB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzVGl0bGUnKSwgdGV4dDogdGhpcy50KCdjaGVzc2ltYWxzU2hhcmVUZXh0JyksIHVybCB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5jb3B5T25saW5lTGluaygpO1xuICB9XG5cbiAgYXN5bmMgcmVxdWVzdE9ubGluZVJlbWF0Y2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub25saW5lLnJlcXVlc3RSZW1hdGNoKHRoaXMuZ2FtZSgpLmlkKTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICB1bmxvY2tlZExhYmVsKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdhbWUoKS5wbGF5ZXJzW2NvbG9yXS5wb3dlclVubG9ja2VkID8gdGhpcy50KCdjaGVzc2ltYWxzVW5sb2NrZWQnKSA6IHRoaXMudCgnY2hlc3NpbWFsc0xvY2tlZCcpO1xuICB9XG5cbiAgbG9jYWxNb2RlTGFiZWwobW9kZTogQ2hlc3NpbWFsc0xvY2FsTW9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1vZGUgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZScpIDogdGhpcy50KCdjaGVzc2ltYWxzT25lRGV2aWNlJyk7XG4gIH1cblxuICBsb2NhbE1vZGVEZXNjcmlwdGlvbihtb2RlOiBDaGVzc2ltYWxzTG9jYWxNb2RlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9kZSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlQm9keScpIDogdGhpcy50KCdjaGVzc2ltYWxzT25lRGV2aWNlQm9keScpO1xuICB9XG5cbiAgYm90RGlmZmljdWx0eUxhYmVsKGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5KTogc3RyaW5nIHtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ2Vhc3knKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90RWFzeScpO1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnaGFyZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RIYXJkJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdE5vcm1hbCcpO1xuICB9XG5cbiAgYW5pbWFsTGFiZWwodHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYGNoZXNzaW1hbHNBbmltYWwke3RoaXMuY2FwaXRhbGl6ZSh0eXBlKX1gKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheVJvd0luZGV4KHJvdzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZSAtIDEgLSByb3cgOiByb3c7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlDb2xJbmRleChjb2w6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyB0aGlzLmdhbWUoKS5ib2FyZFNpemUgLSAxIC0gY29sIDogY29sO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaE9ubGluZUdhbWUoZ2FtZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbiA9IHRoaXMub25saW5lLndhdGNoR2FtZShnYW1lSWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoc3RhdGUpID0+IHtcbiAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZ2FtZSgpO1xuICAgICAgICB0aGlzLmdhbWUuc2V0KHN0YXRlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoc3RhdGUuYm9hcmRTaXplKTtcbiAgICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwcmV2aW91cy5jdXJyZW50VHVybiAhPT0gc3RhdGUuY3VycmVudFR1cm4gJiZcbiAgICAgICAgICBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiZcbiAgICAgICAgICAhdGhpcy5zaG91bGRLZWVwQm9hcmRPcmllbnRhdGlvblN0YXRpYyhzdGF0ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiYgcHJldmlvdXMuc3RhdHVzICE9PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgdGhpcy5hdWRpby53aW4oKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKTtcbiAgfVxufVxuIl19
|