valtech-components 4.0.964 → 4.0.965

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.
Files changed (124) hide show
  1. package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +3 -3
  2. package/esm2022/lib/components/atoms/box/box.component.mjs +3 -3
  3. package/esm2022/lib/components/atoms/button/button.component.mjs +3 -3
  4. package/esm2022/lib/components/atoms/display/display.component.mjs +3 -3
  5. package/esm2022/lib/components/atoms/divider/divider.component.mjs +3 -3
  6. package/esm2022/lib/components/atoms/href/href.component.mjs +3 -3
  7. package/esm2022/lib/components/atoms/icon/icon.component.mjs +3 -3
  8. package/esm2022/lib/components/atoms/image/image.component.mjs +3 -3
  9. package/esm2022/lib/components/atoms/notice/notice.component.mjs +3 -3
  10. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +3 -3
  11. package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +3 -3
  12. package/esm2022/lib/components/atoms/rights-footer/rights-footer.component.mjs +2 -2
  13. package/esm2022/lib/components/atoms/text/text.component.mjs +3 -3
  14. package/esm2022/lib/components/atoms/title/title.component.mjs +3 -3
  15. package/esm2022/lib/components/atoms/user-avatar/user-avatar.component.mjs +3 -3
  16. package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +3 -3
  17. package/esm2022/lib/components/molecules/animal-card/animal-card.component.mjs +3 -3
  18. package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +3 -3
  19. package/esm2022/lib/components/molecules/card/card.component.mjs +3 -3
  20. package/esm2022/lib/components/molecules/chat-composer/chat-composer.component.mjs +3 -3
  21. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +3 -3
  22. package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +3 -3
  23. package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +3 -3
  24. package/esm2022/lib/components/molecules/comment/comment.component.mjs +4 -4
  25. package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +3 -3
  26. package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +3 -3
  27. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +5 -5
  28. package/esm2022/lib/components/molecules/date-picker/date-picker.component.mjs +5 -5
  29. package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +3 -3
  30. package/esm2022/lib/components/molecules/docs-search/docs-search.component.mjs +3 -3
  31. package/esm2022/lib/components/molecules/empty-state/empty-state.component.mjs +3 -3
  32. package/esm2022/lib/components/molecules/feedback-form/feedback-form.component.mjs +3 -3
  33. package/esm2022/lib/components/molecules/field-options-editor/field-options-editor.component.mjs +3 -3
  34. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +3 -3
  35. package/esm2022/lib/components/molecules/footer-links/footer-links.component.mjs +3 -3
  36. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +4 -4
  37. package/esm2022/lib/components/molecules/hint/hint.component.mjs +3 -3
  38. package/esm2022/lib/components/molecules/image-crop/image-crop.component.mjs +3 -3
  39. package/esm2022/lib/components/molecules/layered-card/layered-card.component.mjs +3 -3
  40. package/esm2022/lib/components/molecules/link/link.component.mjs +3 -3
  41. package/esm2022/lib/components/molecules/linked-providers/linked-providers.component.mjs +3 -3
  42. package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +3 -3
  43. package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +3 -3
  44. package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +3 -3
  45. package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +3 -3
  46. package/esm2022/lib/components/molecules/option-cards/option-cards.component.mjs +3 -3
  47. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +3 -3
  48. package/esm2022/lib/components/molecules/permission-selector/permission-selector.component.mjs +5 -5
  49. package/esm2022/lib/components/molecules/pill/pill.component.mjs +3 -3
  50. package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +3 -3
  51. package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +3 -3
  52. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +5 -5
  53. package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +3 -3
  54. package/esm2022/lib/components/molecules/rating/rating.component.mjs +3 -3
  55. package/esm2022/lib/components/molecules/request-form/request-form.component.mjs +3 -3
  56. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +3 -3
  57. package/esm2022/lib/components/molecules/section-header/section-header.component.mjs +3 -3
  58. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +3 -3
  59. package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +3 -3
  60. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +4 -4
  61. package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +3 -3
  62. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +3 -3
  63. package/esm2022/lib/components/molecules/ticket-card/ticket-card.component.mjs +3 -3
  64. package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +3 -3
  65. package/esm2022/lib/components/molecules/typing-indicator/typing-indicator.component.mjs +3 -3
  66. package/esm2022/lib/components/molecules/update-banner/update-banner.component.mjs +3 -3
  67. package/esm2022/lib/components/organisms/access-request-view/access-request-view.component.mjs +3 -3
  68. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +5 -5
  69. package/esm2022/lib/components/organisms/article/article.component.mjs +3 -3
  70. package/esm2022/lib/components/organisms/banner/banner.component.mjs +3 -3
  71. package/esm2022/lib/components/organisms/bottom-nav/bottom-nav.component.mjs +3 -3
  72. package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +5 -5
  73. package/esm2022/lib/components/organisms/confirmation-dialog-v2/confirmation-dialog-v2.component.mjs +3 -3
  74. package/esm2022/lib/components/organisms/cookie-settings/cookie-settings.component.mjs +5 -5
  75. package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +3 -3
  76. package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +3 -3
  77. package/esm2022/lib/components/organisms/docs-sidebar/docs-sidebar.component.mjs +3 -3
  78. package/esm2022/lib/components/organisms/field-list/field-list.component.mjs +3 -3
  79. package/esm2022/lib/components/organisms/folder-tabs/folder-tabs.component.mjs +3 -3
  80. package/esm2022/lib/components/organisms/form/form.component.mjs +5 -5
  81. package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +3 -3
  82. package/esm2022/lib/components/organisms/header/header.component.mjs +3 -3
  83. package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +5 -5
  84. package/esm2022/lib/components/organisms/invite-member-modal/invite-member-modal.component.mjs +3 -3
  85. package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +11 -11
  86. package/esm2022/lib/components/organisms/login/login.component.mjs +3 -3
  87. package/esm2022/lib/components/organisms/login-attempt-modal/login-attempt-modal.component.mjs +6 -6
  88. package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.component.mjs +5 -5
  89. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +5 -5
  90. package/esm2022/lib/components/organisms/menu/menu.component.mjs +3 -3
  91. package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +3 -3
  92. package/esm2022/lib/components/organisms/mini-games/bubble-blitz-game.component.mjs +3 -3
  93. package/esm2022/lib/components/organisms/mini-games/memory-game.component.mjs +3 -3
  94. package/esm2022/lib/components/organisms/mini-games/simon-game.component.mjs +3 -3
  95. package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +3 -3
  96. package/esm2022/lib/components/organisms/notification-preferences-view/notification-preferences-view.component.mjs +5 -5
  97. package/esm2022/lib/components/organisms/notifications-view/notifications-view.component.mjs +3 -3
  98. package/esm2022/lib/components/organisms/option-sheet/option-sheet.component.mjs +3 -3
  99. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +3 -3
  100. package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +11 -11
  101. package/esm2022/lib/components/organisms/request-review-panel/request-review-panel.component.mjs +5 -5
  102. package/esm2022/lib/components/organisms/role-manager/role-manager.component.mjs +7 -7
  103. package/esm2022/lib/components/organisms/rotating-text/rotating-text.component.mjs +3 -3
  104. package/esm2022/lib/components/organisms/security-view/security-view.component.mjs +5 -5
  105. package/esm2022/lib/components/organisms/session-list-modal/session-list-modal.component.mjs +3 -3
  106. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +3 -3
  107. package/esm2022/lib/components/organisms/transfer-ownership-modal/transfer-ownership-modal.component.mjs +5 -5
  108. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +3 -3
  109. package/esm2022/lib/components/templates/docs-layout/docs-layout.component.mjs +3 -3
  110. package/esm2022/lib/components/templates/page-content/page-content.component.mjs +3 -3
  111. package/esm2022/lib/components/templates/simple/simple.component.mjs +3 -3
  112. package/esm2022/lib/services/confirmation-dialog/types.mjs +2 -2
  113. package/esm2022/lib/services/content/transformer.mjs +3 -3
  114. package/esm2022/lib/services/markdown-article/beautify-legal-article.mjs +2 -2
  115. package/esm2022/lib/services/markdown-article/markdown-article-parser.mjs +2 -2
  116. package/esm2022/lib/services/modal/types.mjs +2 -2
  117. package/esm2022/lib/version.mjs +2 -2
  118. package/fesm2022/valtech-components.mjs +284 -284
  119. package/fesm2022/valtech-components.mjs.map +1 -1
  120. package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +1 -1
  121. package/lib/version.d.ts +1 -1
  122. package/package.json +1 -1
  123. package/src/lib/components/styles/overrides.scss +4 -4
  124. package/src/lib/components/styles/variables.scss +6 -6
@@ -547,7 +547,7 @@ export class MemoryGameComponent {
547
547
  />
548
548
  </ng-template>
549
549
  </ion-modal>
550
- `, isInline: true, styles: [":host{display:block;min-height:100%;font-size:var(--val-mini-games-font-size, 1rem);--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-dark, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-menu-actions,.memory-profiles{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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"] }] }); }
550
+ `, isInline: true, styles: [":host{display:block;min-height:100%;font-size:var(--val-mini-games-font-size, 1rem);--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-medium, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-menu-actions,.memory-profiles{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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"] }] }); }
551
551
  }
552
552
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MemoryGameComponent, decorators: [{
553
553
  type: Component,
@@ -705,8 +705,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
705
705
  />
706
706
  </ng-template>
707
707
  </ion-modal>
708
- `, styles: [":host{display:block;min-height:100%;font-size:var(--val-mini-games-font-size, 1rem);--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-dark, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-menu-actions,.memory-profiles{grid-template-columns:1fr}}\n"] }]
708
+ `, styles: [":host{display:block;min-height:100%;font-size:var(--val-mini-games-font-size, 1rem);--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-medium, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-menu-actions,.memory-profiles{grid-template-columns:1fr}}\n"] }]
709
709
  }], ctorParameters: () => [], propDecorators: { miniGamesRoute: [{
710
710
  type: Input
711
711
  }] } });
712
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWdhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL21lbW9yeS1nYW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7O0FBRzNGLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUs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QUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxLQUFLLElBQUksU0FBUyxDQUFDLENBQUM7UUFDNUYsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RixrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckMsTUFBTSxHQUFHLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUN6QixPQUFPLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFDTSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RyxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUks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O3dEQWltQlEsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uSWNvbiwgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgbXVzaWNhbE5vdGVzT3V0bGluZSxcbiAgcmVmcmVzaE91dGxpbmUsXG4gIHRyb3BoeU91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuL21pbmktZ2FtZS1wbGF5ZXItcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbW9yeUdhbWVDYXJkLCBNZW1vcnlHYW1lRGlmZmljdWx0eSwgTWVtb3J5R2FtZU1vZGUsIE1lbW9yeUdhbWVQcm9maWxlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tb2RhbC1sYXlvdXQvbW9kYWwtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuYWRkSWNvbnMoeyBtdXNpY2FsTm90ZXNPdXRsaW5lLCByZWZyZXNoT3V0bGluZSwgdHJvcGh5T3V0bGluZSB9KTtcblxuY29uc3QgU1lNQk9MUyA9IFsn4q2QJywgJ/CfmoAnLCAn8J+OtScsICfimqEnLCAn8J+MmScsICfwn5KOJywgJ/CfjognLCAn8J+NgCcsICfwn6epJywgJ/CfjrInLCAn8J+MiCcsICfwn5SlJywgJ/CfjZMnLCAn8J+mhCcsICfwn46BJywgJ+KYgO+4jyddO1xuXG5jb25zdCBQUk9GSUxFX0NPTkZJRzogUmVjb3JkPFxuICBNZW1vcnlHYW1lUHJvZmlsZSxcbiAge1xuICAgIHBhaXJzOiBudW1iZXI7XG4gICAgdGltZWRTZWNvbmRzPzogbnVtYmVyO1xuICAgIG1pc21hdGNoRGVsYXk6IG51bWJlcjtcbiAgICBib2FyZENsYXNzOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIGtpZDoge1xuICAgIHBhaXJzOiA0LFxuICAgIG1pc21hdGNoRGVsYXk6IDE0MDAsXG4gICAgYm9hcmRDbGFzczogJ21lbW9yeS1ib2FyZC0ta2lkJyxcbiAgfSxcbiAgY2xhc3NpYzoge1xuICAgIHBhaXJzOiA4LFxuICAgIG1pc21hdGNoRGVsYXk6IDkwMCxcbiAgICBib2FyZENsYXNzOiAnbWVtb3J5LWJvYXJkLS1jbGFzc2ljJyxcbiAgfSxcbiAgbmluamE6IHtcbiAgICBwYWlyczogMTYsXG4gICAgdGltZWRTZWNvbmRzOiAxNTAsXG4gICAgbWlzbWF0Y2hEZWxheTogNTYwLFxuICAgIGJvYXJkQ2xhc3M6ICdtZW1vcnktYm9hcmQtLW5pbmphJyxcbiAgfSxcbn07XG5cbnR5cGUgTWVtb3J5R2FtZVBoYXNlID0gJ2hvbWUnIHwgJ3BsYXlpbmcnIHwgJ3dvbicgfCAnbG9zdCc7XG5cbmludGVyZmFjZSBNZW1vcnlMZWFkZXJib2FyZEVudHJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvZmlsZT86IE1lbW9yeUdhbWVQcm9maWxlO1xuICBwbGF5ZXJOYW1lPzogc3RyaW5nO1xuICBwbGF5ZXJBdmF0YXI/OiBzdHJpbmc7XG4gIG1lZGFsPzogTWVtb3J5TWVkYWw7XG4gIGRpZmZpY3VsdHk6IE1lbW9yeUdhbWVEaWZmaWN1bHR5O1xuICBtb2RlOiBNZW1vcnlHYW1lTW9kZTtcbiAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgc2Vjb25kczogbnVtYmVyO1xuICBjb21wbGV0ZWRBdDogc3RyaW5nO1xufVxuXG5jb25zdCBMRUFERVJCT0FSRF9LRVkgPSAndmFsLW1pbmktZ2FtZXMtbWVtb3J5LWxlYWRlcmJvYXJkOnYxJztcblxudHlwZSBNZW1vcnlNZWRhbCA9ICdnb2xkJyB8ICdzaWx2ZXInIHwgJ2Jyb256ZScgfCAnc3BhcmsnO1xudHlwZSBNZW1vcnlDb25maXJtQWN0aW9uID0gJ3Jlc3RhcnQnIHwgJ21vZGUnIHwgJ2dhbWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW1lbW9yeS1nYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkljb24sIElvbk1vZGFsLCBNb2RhbExheW91dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1haW4gY2xhc3M9XCJtZW1vcnktc2hlbGxcIj5cbiAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LWhlcm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWhlcm9fX2JhZGdlXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm11c2ljYWwtbm90ZXMtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICB7eyB0KCdtZW1vcnlUaXRsZScpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGgxPnt7IHQoJ2hvbWVUaXRsZScpIH19PC9oMT5cbiAgICAgICAgICA8cD57eyB0KCdob21lU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LXBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1vcHRpb25zXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cIm1lbW9yeS1ob3d0b1wiPlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnaW5zdHJ1Y3Rpb25zVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2luc3RydWN0aW9uc0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGgyPnt7IHQoJ3Byb2ZpbGVUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktcHJvZmlsZXNcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncHJvZmlsZVRpdGxlJylcIj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBwcm9maWxlczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInByb2ZpbGUoKSA9PT0gaXRlbVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJvZmlsZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KGl0ZW0pIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdChpdGVtICsgJ0Rlc2NyaXB0aW9uJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbW9yeS1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydCgpXCI+e3sgdCgnc3RhcnRHYW1lJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktbWVudS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1nYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1zY29yZVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdhdHRlbXB0cycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBhdHRlbXB0cygpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3BhaXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IG1hdGNoZWRQYWlycygpIH19L3t7IHBhaXJDb3VudCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQodGltZUxhYmVsKCkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBmb3JtYXR0ZWRUaW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnc3RyZWFrJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0cmVhaygpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWJvYXJkXCIgW2NsYXNzXT1cImJvYXJkQ2xhc3MoKVwiPlxuICAgICAgICAgICAgQGZvciAoY2FyZCBvZiBjYXJkcygpOyB0cmFjayBjYXJkLmlkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbW9yeS1jYXJkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZmxpcHBlZF09XCJjYXJkLmZsaXBwZWQgfHwgY2FyZC5tYXRjaGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbWF0Y2hlZF09XCJjYXJkLm1hdGNoZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjYXJkLm1hdGNoZWQgfHwgbG9ja0JvYXJkKCkgfHwgZmFpbGVkKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJmbGlwKGNhcmQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtb3J5LWNhcmRfX2JhY2tcIj4/PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtb3J5LWNhcmRfX2Zyb250XCI+e3sgY2FyZC5zeW1ib2wgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChwaGFzZSgpID09PSAnd29uJykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS13aW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1jb25mZXR0aVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHBpZWNlIG9mIGNvbmZldHRpUGllY2VzOyB0cmFjayBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3dpblRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgd2luQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXJlc3VsdFwiIFtzdHlsZS4tLXBsYXllci1jb2xvcl09XCJhY3RpdmVQbGF5ZXJDb2xvcigpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgYWN0aXZlUGxheWVyQXZhdGFyKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBwbGF5ZXJOYW1lKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtZWRhbEljb24ocmVzdWx0TWVkYWwoKSkgfX0ge3sgdChyZXN1bHRNZWRhbCgpKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2xvc3QnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXdpbiBtZW1vcnktd2luLS1mYWlsZWRcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdsb3NlVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB0KCdsb3NlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPnt7IHQoJ2JhY2tUb1NldHVwJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+e3sgdCgnY2hhbmdlR2FtZScpIH19PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXN0YXJ0R2FtZSgpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicmVmcmVzaC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAge3sgdCgncmVzdGFydCcpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1sZWFkZXJib2FyZFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiAvPlxuICAgICAgICAgIDxoMj57eyBsZWFkZXJib2FyZEhlYWRpbmcoKSB9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKHByb2ZpbGVMZWFkZXJib2FyZCgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxwPnt7IHQoJ2xlYWRlcmJvYXJkRW1wdHknKSB9fTwvcD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG9sPlxuICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgcHJvZmlsZUxlYWRlcmJvYXJkKCk7IHRyYWNrIGVudHJ5LmlkOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGluZGV4ICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxlYWRlcmJvYXJkVGl0bGUoZW50cnkpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxlYWRlcmJvYXJkTGluZShlbnRyeSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvb2w+XG4gICAgICAgIH1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L21haW4+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cIiEhY29uZmlybUFjdGlvbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZUNvbmZpcm1Nb2RhbERpc21pc3NlZCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXZhbC1taW5pLWdhbWVzLWZvbnQtc2l6ZSwgMXJlbSk7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmZmZmKTtcbiAgICAgICAgLS1tZW1vcnktcGFuZWwtc3Ryb25nOiAjZjhmNmZiO1xuICAgICAgICAtLW1lbW9yeS1ib3JkZXI6IHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICAtLW1lbW9yeS10ZXh0OiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzJmMmEzYSk7XG4gICAgICAgIC0tbWVtb3J5LW11dGVkOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzZmNmE3YSk7XG4gICAgICAgIC0tbWVtb3J5LXNvZnQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMDgpO1xuICAgICAgICAtLW1lbW9yeS1yb3c6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4wNCk7XG4gICAgICAgIC0tbWVtb3J5LXByaW1hcnk6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjZmYwMGIyKTtcbiAgICAgICAgLS1tZW1vcnktc2Vjb25kYXJ5OiB2YXIoLS1pb24tY29sb3ItdGVydGlhcnksICM2YTJkZTIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZm9udC1zbWFsbCkge1xuICAgICAgICAtLXZhbC1taW5pLWdhbWVzLWZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5mb250LWxhcmdlKSB7XG4gICAgICAgIC0tdmFsLW1pbmktZ2FtZXMtZm9udC1zaXplOiAxLjE4NzVyZW07XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkge1xuICAgICAgICAtLW1lbW9yeS1wYW5lbDogIzIzMWYyZDtcbiAgICAgICAgLS1tZW1vcnktcGFuZWwtc3Ryb25nOiAjMmYyOTM5O1xuICAgICAgICAtLW1lbW9yeS1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMyk7XG4gICAgICAgIC0tbWVtb3J5LXRleHQ6ICNmZmY4ZmY7XG4gICAgICAgIC0tbWVtb3J5LW11dGVkOiByZ2JhKDI1NSwgMjQ4LCAyNTUsIDAuNjgpO1xuICAgICAgICAtLW1lbW9yeS1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQ1KTtcbiAgICAgICAgLS1tZW1vcnktcm93OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDU1KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zaGVsbCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMjBweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMjBweDtcbiAgICAgICAgcGFkZGluZzogMThweCAwIDMycHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjhweDtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMjhweCwgOHZ3LCA1MnB4KSAyMHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDIwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMyKSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1tZW1vcnktcHJpbWFyeSksIHZhcigtLW1lbW9yeS1zZWNvbmRhcnkpKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAyNHB4IDcwcHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yNSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybzo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiBhdXRvIC0yMCUgLTQyJSAtMjAlO1xuICAgICAgICBoZWlnaHQ6IDU1JTtcbiAgICAgICAgYmFja2dyb3VuZDogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICA5MGRlZyxcbiAgICAgICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTgpIDAgMTBweCxcbiAgICAgICAgICB0cmFuc3BhcmVudCAxMHB4IDIwcHhcbiAgICAgICAgKTtcbiAgICAgICAgb3BhY2l0eTogMC4xODtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTRkZWcpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm9fX2JhZGdlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNik7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvIGgxIHtcbiAgICAgICAgbWFyZ2luOiAxNHB4IDAgNnB4O1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDIuMjVyZW0sIDl2dywgMy42MjVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMC45NTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvIHAge1xuICAgICAgICBtYXgtd2lkdGg6IDUyMHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxcmVtLCAzdncsIDEuMjVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgICAgb3BhY2l0eTogMC44ODtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wYW5lbCxcbiAgICAgIC5tZW1vcnktZ2FtZSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgxNnB4LCA0dncsIDI4cHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktb3B0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ob3d0byB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LW9wdGlvbnMgaDIsXG4gICAgICAubWVtb3J5LWhvd3RvIGgyLFxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBoMiB7XG4gICAgICAgIG1hcmdpbjogOHB4IDAgMDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhvd3RvIGgyLFxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ob3d0byBwLFxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgYnV0dG9uLFxuICAgICAgLm1lbW9yeS1zZWNvbmRhcnkge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIGJ1dHRvbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDkycHg7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA1cHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMThweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDEuMDJyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24uaXMtc2VsZWN0ZWQgc21hbGwge1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcmltYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogNThweDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3QsICNmZmYpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBib3gtc2hhZG93OiAwIDE4cHggNDVweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjI4KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcmltYXJ5IGlvbi1pY29uIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIHdpZHRoOiAxLjI1ZW07XG4gICAgICAgIGhlaWdodDogMS4yNWVtO1xuICAgICAgICBmb250LXNpemU6IDEuMjVlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zY29yZSBzcGFuIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDtcbiAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXJvdyk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zY29yZSBzbWFsbCxcbiAgICAgIC5tZW1vcnktd2luIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zY29yZSBzbWFsbCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc3Ryb25nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ib2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCg1OHB4LCAxZnIpKTtcbiAgICAgICAgZ2FwOiBjbGFtcCg4cHgsIDJ2dywgMTJweCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQtLWtpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCg1OHB4LCAxZnIpKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ib2FyZC0tY2xhc3NpYyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCg1OHB4LCAxZnIpKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ib2FyZC0tbmluamEge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCBtaW5tYXgoNDBweCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGNsYW1wKDE0cHgsIDR2dywgMjJweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBwZXJzcGVjdGl2ZTogODAwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMjRweCwgN3Z3LCA0MnB4KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkX19iYWNrLFxuICAgICAgLm1lbW9yeS1jYXJkX19mcm9udCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjhzIGVhc2UsIGJveC1zaGFkb3cgMC4ycyBlYXNlLCBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkX19iYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMyJSAyOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1tZW1vcnktc2Vjb25kYXJ5KSwgdmFyKC0tbWVtb3J5LXByaW1hcnkpKTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAyNHB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMik7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wYW5lbC1zdHJvbmcpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmQuaXMtZmxpcHBlZCAubWVtb3J5LWNhcmRfX2JhY2sge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkLmlzLWZsaXBwZWQgLm1lbW9yeS1jYXJkX19mcm9udCB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgzNjBkZWcpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmQuaXMtbWF0Y2hlZCAubWVtb3J5LWNhcmRfX2Zyb250IHtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgM3B4IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjEyKTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXdpbiBpb24taWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDAgYXV0byA4cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4gc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjM1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXdpbiBwIHtcbiAgICAgICAgbWFyZ2luOiA0cHggMCAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXJlc3VsdCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTBweCAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgY29sb3I6ICMyZjJhM2E7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAubWVtb3J5LXJlc3VsdCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLm1lbW9yeS1yZXN1bHQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcmVzdWx0ID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzOHB4O1xuICAgICAgICBoZWlnaHQ6IDM4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wbGF5ZXItY29sb3IsIHZhcigtLW1lbW9yeS1wcmltYXJ5KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXJlc3VsdCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXJlc3VsdCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW4ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTE2cHg7XG4gICAgICAgIGxlZnQ6IDglO1xuICAgICAgICB3aWR0aDogOXB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBhbmltYXRpb246IG1lbW9yeS1jb25mZXR0aS1mYWxsIDEuNXMgZWFzZS1vdXQgZm9yd2FyZHM7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDIwZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCgybikge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktc2Vjb25kYXJ5KTtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjA4cztcbiAgICAgICAgbGVmdDogMjAlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDNuKSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmNmM2Y7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4xNnM7XG4gICAgICAgIGxlZnQ6IDM4JTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCg0bikge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMmRkMzZmO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMjRzO1xuICAgICAgICBsZWZ0OiA1NSU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoNW4pIHtcbiAgICAgICAgbGVmdDogNzIlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDZuKSB7XG4gICAgICAgIGxlZnQ6IDg2JTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4tLWZhaWxlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYWN0aW9ucyB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICAgIGJvdHRvbTogMTBweDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFuc3BhcmVudCwgdmFyKC0tbWVtb3J5LXBhbmVsKSAyOCUpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LW1lbnUtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoOXJlbSwgMWZyKSk7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiA1OHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweDtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMTZweCwgNHZ3LCAyMnB4KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZF9fdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmRfX3RpdGxlIGlvbi1pY29uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgb2wge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIGxpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzOHB4IDFmcjtcbiAgICAgICAgZ2FwOiAycHggMTBweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXJvdyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgbGkgPiBzcGFuIHtcbiAgICAgICAgZ3JpZC1yb3c6IHNwYW4gMjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM0cHg7XG4gICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTgpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45OHJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciBoMixcbiAgICAgIC5tZW1vcnktcGxheWVyIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIgbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIgaW5wdXQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWluLWhlaWdodDogNTJweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDE4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYXZhdGFyLWxpc3QsXG4gICAgICAubWVtb3J5LWNvbG9yLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWF2YXRhci1saXN0IGJ1dHRvbixcbiAgICAgIC5tZW1vcnktY29sb3ItbGlzdCBidXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogNDRweDtcbiAgICAgICAgaGVpZ2h0OiA0NHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1hdmF0YXItbGlzdCBidXR0b24uaXMtc2VsZWN0ZWQsXG4gICAgICAubWVtb3J5LWNvbG9yLWxpc3QgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IGJ1dHRvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBsYXllci1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgbWVtb3J5LWNvbmZldHRpLWZhbGwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG4gICAgICAgIDE4JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNzBweCkgcm90YXRlKDMwMGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDUyMHB4KSB7XG4gICAgICAgIC5tZW1vcnktc2NvcmUge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgICAgIH1cblxuICAgICAgICAubWVtb3J5LWJvYXJkLS1uaW5qYSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDU0cHgsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1lbW9yeS1hY3Rpb25zLFxuICAgICAgICAubWVtb3J5LW1lbnUtYWN0aW9ucyxcbiAgICAgICAgLm1lbW9yeS1wcm9maWxlcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNZW1vcnlHYW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwbGF5ZXJQcm9maWxlcyA9IGluamVjdChNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgYXVkaW8gPSBpbmplY3QoUmV0cm9BdWRpb1NlcnZpY2UpO1xuXG4gIEBJbnB1dCgpIG1pbmlHYW1lc1JvdXRlID0gJy9taW5pLWdhbWVzJztcblxuICByZWFkb25seSBwcm9maWxlczogTWVtb3J5R2FtZVByb2ZpbGVbXSA9IFsna2lkJywgJ2NsYXNzaWMnLCAnbmluamEnXTtcbiAgcmVhZG9ubHkgY29uZmV0dGlQaWVjZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxNCB9LCAoXywgaW5kZXgpID0+IGluZGV4KTtcblxuICByZWFkb25seSBwaGFzZSA9IHNpZ25hbDxNZW1vcnlHYW1lUGhhc2U+KCdob21lJyk7XG4gIHJlYWRvbmx5IHByb2ZpbGUgPSBzaWduYWw8TWVtb3J5R2FtZVByb2ZpbGU+KCdraWQnKTtcbiAgcmVhZG9ubHkgZGlmZmljdWx0eSA9IHNpZ25hbDxNZW1vcnlHYW1lRGlmZmljdWx0eT4oJ2Vhc3knKTtcbiAgcmVhZG9ubHkgbW9kZSA9IHNpZ25hbDxNZW1vcnlHYW1lTW9kZT4oJ2NsYXNzaWMnKTtcbiAgcmVhZG9ubHkgcGxheWluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNhcmRzID0gc2lnbmFsPE1lbW9yeUdhbWVDYXJkW10+KFtdKTtcbiAgcmVhZG9ubHkgYXR0ZW1wdHMgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IHN0cmVhayA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgYmVzdFN0cmVhayA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgZWxhcHNlZCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgcmVtYWluaW5nID0gc2lnbmFsKDApO1xuICByZWFkb25seSBmYWlsZWQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBsb2NrQm9hcmQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBsZWFkZXJib2FyZCA9IHNpZ25hbDxNZW1vcnlMZWFkZXJib2FyZEVudHJ5W10+KHRoaXMucmVhZExlYWRlcmJvYXJkKCkpO1xuICByZWFkb25seSBjb25maXJtQWN0aW9uID0gc2lnbmFsPE1lbW9yeUNvbmZpcm1BY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybWVkQWN0aW9uID0gc2lnbmFsPE1lbW9yeUNvbmZpcm1BY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSB0aW1lcj86IG51bWJlcjtcbiAgcHJpdmF0ZSBmaXJzdFBpY2s/OiBNZW1vcnlHYW1lQ2FyZDtcblxuICByZWFkb25seSBwcm9maWxlQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4gUFJPRklMRV9DT05GSUdbdGhpcy5wcm9maWxlKCldKTtcbiAgcmVhZG9ubHkgcGFpckNvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9maWxlQ29uZmlnKCkucGFpcnMpO1xuICByZWFkb25seSBib2FyZENsYXNzID0gY29tcHV0ZWQoKCkgPT4gYG1lbW9yeS1ib2FyZCAke3RoaXMucHJvZmlsZUNvbmZpZygpLmJvYXJkQ2xhc3N9YCk7XG4gIHJlYWRvbmx5IHByb2ZpbGVMZWFkZXJib2FyZCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5sZWFkZXJib2FyZCgpXG4gICAgICAuZmlsdGVyKChlbnRyeSkgPT4gdGhpcy5lbnRyeVByb2ZpbGUoZW50cnkpID09PSB0aGlzLnByb2ZpbGUoKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnNlY29uZHMgLSBiLnNlY29uZHMgfHwgYS5hdHRlbXB0cyAtIGIuYXR0ZW1wdHMpXG4gICAgICAuc2xpY2UoMCwgNSlcbiAgKTtcbiAgcmVhZG9ubHkgbWF0Y2hlZFBhaXJzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jYXJkcygpLmZpbHRlcigoY2FyZCkgPT4gY2FyZC5tYXRjaGVkKS5sZW5ndGggLyAyKTtcbiAgcmVhZG9ubHkgd29uID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gIXRoaXMuZmFpbGVkKCkgJiYgdGhpcy5wbGF5aW5nKCkgJiYgdGhpcy5jYXJkcygpLmxlbmd0aCA+IDAgJiYgdGhpcy5tYXRjaGVkUGFpcnMoKSA9PT0gdGhpcy5wYWlyQ291bnQoKVxuICApO1xuICByZWFkb25seSBwbGF5ZXJOYW1lID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnBsYXllclByb2ZpbGVzLmRpc3BsYXlOYW1lKHRoaXMucGxheWVyUHJvZmlsZXMuYWN0aXZlUHJvZmlsZSgpLCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJykpXG4gICk7XG4gIHJlYWRvbmx5IGFjdGl2ZVBsYXllckF2YXRhciA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGxheWVyUHJvZmlsZXMuYWN0aXZlUHJvZmlsZSgpPy5hdmF0YXIgPz8gJ/CfjJ8nKTtcbiAgcmVhZG9ubHkgYWN0aXZlUGxheWVyQ29sb3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKT8uY29sb3IgPz8gJyNmZjAwYjInKTtcbiAgcmVhZG9ubHkgdGltZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/ICd0aW1lTGVmdCcgOiAndGltZScpKTtcbiAgcmVhZG9ubHkgZm9ybWF0dGVkVGltZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy5wcm9maWxlQ29uZmlnKCkudGltZWRTZWNvbmRzID8gdGhpcy5yZW1haW5pbmcoKSA6IHRoaXMuZWxhcHNlZCgpO1xuICAgIGNvbnN0IG1pbiA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICBjb25zdCBzZWMgPSBzZWNvbmRzICUgNjA7XG4gICAgcmV0dXJuIGAke21pbn06JHtTdHJpbmcoc2VjKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gIH0pO1xuICByZWFkb25seSByZXN1bHRNZWRhbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2FsY3VsYXRlTWVkYWwodGhpcy5hdHRlbXB0cygpLCB0aGlzLnJlc3VsdFNlY29uZHMoKSwgdGhpcy5iZXN0U3RyZWFrKCkpKTtcbiAgcmVhZG9ubHkgcmVzdWx0U2Vjb25kcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5wcm9maWxlQ29uZmlnKCkudGltZWRTZWNvbmRzID8gdGhpcy5wcm9maWxlQ29uZmlnKCkudGltZWRTZWNvbmRzIC0gdGhpcy5yZW1haW5pbmcoKSA6IHRoaXMuZWxhcHNlZCgpXG4gICk7XG4gIHJlYWRvbmx5IHdpbkJvZHkgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnd2luQm9keScpXG4gICAgICAucmVwbGFjZSgne2F0dGVtcHRzfScsIFN0cmluZyh0aGlzLmF0dGVtcHRzKCkpKVxuICAgICAgLnJlcGxhY2UoJ3t0aW1lfScsIHRoaXMuZm9ybWF0U2Vjb25kcyh0aGlzLnJlc3VsdFNlY29uZHMoKSkpXG4gICAgICAucmVwbGFjZSgne3N0cmVha30nLCBTdHJpbmcodGhpcy5iZXN0U3RyZWFrKCkpKVxuICApO1xuICByZWFkb25seSBjb25maXJtVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjb25maXJtUmVzdGFydFRpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY29uZmlybUdhbWVzVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjb25maXJtTW9kZVRpdGxlJyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1SZXN0YXJ0Qm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1HYW1lc0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjb25maXJtTW9kZUJvZHknKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb25zID0gY29tcHV0ZWQ8QnV0dG9uTWV0YWRhdGFbXT4oKCkgPT4gW1xuICAgIHtcbiAgICAgIHRleHQ6IHRoaXMudCgnY2FuY2VsJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICB0b2tlbjogJ2NhbmNlbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB0ZXh0OlxuICAgICAgICB0aGlzLmNvbmZpcm1BY3Rpb24oKSA9PT0gJ3Jlc3RhcnQnXG4gICAgICAgICAgPyB0aGlzLnQoJ3Jlc3RhcnQnKVxuICAgICAgICAgIDogdGhpcy5jb25maXJtQWN0aW9uKCkgPT09ICdnYW1lcydcbiAgICAgICAgICAgID8gdGhpcy50KCdjaGFuZ2VHYW1lJylcbiAgICAgICAgICAgIDogdGhpcy50KCdiYWNrVG9TZXR1cCcpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjb25maXJtJyxcbiAgICB9LFxuICBdKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnTWluaUdhbWVzJywgTUlOSV9HQU1FU19JMThOKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuYXVkaW8uc3RhcnRNZW51TXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpLCAwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNaW5pR2FtZXMnKTtcbiAgfVxuXG4gIHNlbGVjdFByb2ZpbGUocHJvZmlsZTogTWVtb3J5R2FtZVByb2ZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLnByb2ZpbGUuc2V0KHByb2ZpbGUpO1xuICAgIGlmIChwcm9maWxlID09PSAna2lkJykge1xuICAgICAgdGhpcy5kaWZmaWN1bHR5LnNldCgnZWFzeScpO1xuICAgICAgdGhpcy5tb2RlLnNldCgncmVsYXhlZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocHJvZmlsZSA9PT0gJ25pbmphJykge1xuICAgICAgdGhpcy5kaWZmaWN1bHR5LnNldCgnaGFyZCcpO1xuICAgICAgdGhpcy5tb2RlLnNldCgndGltZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaWZmaWN1bHR5LnNldCgnbWVkaXVtJyk7XG4gICAgdGhpcy5tb2RlLnNldCgnY2xhc3NpYycpO1xuICB9XG5cbiAgc3RhcnQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3ltYm9scyA9IFNZTUJPTFMuc2xpY2UoMCwgdGhpcy5wYWlyQ291bnQoKSk7XG4gICAgY29uc3QgZGVjayA9IHRoaXMuc2h1ZmZsZShbLi4uc3ltYm9scywgLi4uc3ltYm9sc10pLm1hcCgoc3ltYm9sLCBpbmRleCkgPT4gKHtcbiAgICAgIGlkOiBgJHtzeW1ib2x9LSR7aW5kZXh9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9YCxcbiAgICAgIHN5bWJvbCxcbiAgICAgIG1hdGNoZWQ6IGZhbHNlLFxuICAgICAgZmxpcHBlZDogZmFsc2UsXG4gICAgfSkpO1xuICAgIHRoaXMuY2FyZHMuc2V0KGRlY2spO1xuICAgIHRoaXMuZmlyc3RQaWNrID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXR0ZW1wdHMuc2V0KDApO1xuICAgIHRoaXMuc3RyZWFrLnNldCgwKTtcbiAgICB0aGlzLmJlc3RTdHJlYWsuc2V0KDApO1xuICAgIHRoaXMuZWxhcHNlZC5zZXQoMCk7XG4gICAgdGhpcy5yZW1haW5pbmcuc2V0KHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/PyAwKTtcbiAgICB0aGlzLmZhaWxlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMubG9ja0JvYXJkLnNldChmYWxzZSk7XG4gICAgdGhpcy5waGFzZS5zZXQoJ3BsYXlpbmcnKTtcbiAgICB0aGlzLnBsYXlpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuc3RhcnRUaW1lcigpO1xuICAgIHZvaWQgdGhpcy5hdWRpby5zdGFydEdhbWVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIH1cblxuICByZXNldFRvU2V0dXAoKTogdm9pZCB7XG4gICAgdGhpcy5wbGF5aW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5jYXJkcy5zZXQoW10pO1xuICAgIHRoaXMuZmlyc3RQaWNrID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmFpbGVkLnNldChmYWxzZSk7XG4gICAgdGhpcy5waGFzZS5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgIHZvaWQgdGhpcy5hdWRpby5zdGFydE1lbnVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIH1cblxuICByZXF1ZXN0UmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzdGFydCcpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnbW9kZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZUdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnZ2FtZXMnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlQ29uZmlybU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGhhbmRsZUNvbmZpcm1Nb2RhbERpc21pc3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtZWRBY3Rpb24oKTtcbiAgICB0aGlzLmNvbmZpcm1lZEFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICBpZiAoIWFjdGlvbikgcmV0dXJuO1xuXG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSB7XG4gICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdtb2RlJykge1xuICAgICAgdGhpcy5yZXNldFRvU2V0dXAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykge1xuICAgICAgdGhpcy5yZXNldFRvR2FtZXNNZW51KCk7XG4gICAgfVxuICB9XG5cbiAgY29uZmlybVBlbmRpbmdBY3Rpb24odG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodG9rZW4gIT09ICdjb25maXJtJykge1xuICAgICAgdGhpcy5jbG9zZUNvbmZpcm1Nb2RhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICB0aGlzLmNvbmZpcm1lZEFjdGlvbi5zZXQoYWN0aW9uKTtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBmbGlwKGNhcmQ6IE1lbW9yeUdhbWVDYXJkKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9ja0JvYXJkKCkgfHwgY2FyZC5mbGlwcGVkIHx8IGNhcmQubWF0Y2hlZCB8fCB0aGlzLndvbigpIHx8IHRoaXMuZmFpbGVkKCkpIHJldHVybjtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmNhcmRzLnVwZGF0ZSgoY2FyZHMpID0+IGNhcmRzLm1hcCgoaXRlbSkgPT4gKGl0ZW0uaWQgPT09IGNhcmQuaWQgPyB7IC4uLml0ZW0sIGZsaXBwZWQ6IHRydWUgfSA6IGl0ZW0pKSk7XG4gICAgY29uc3QgdXBkYXRlZCA9IHRoaXMuY2FyZHMoKS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBjYXJkLmlkKTtcbiAgICBpZiAoIXVwZGF0ZWQpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuZmlyc3RQaWNrKSB7XG4gICAgICB0aGlzLmZpcnN0UGljayA9IHVwZGF0ZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdHRlbXB0cy51cGRhdGUoKHZhbHVlKSA9PiB2YWx1ZSArIDEpO1xuICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5maXJzdFBpY2s7XG4gICAgdGhpcy5maXJzdFBpY2sgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGZpcnN0LnN5bWJvbCA9PT0gdXBkYXRlZC5zeW1ib2wpIHtcbiAgICAgIHRoaXMuc3RyZWFrLnVwZGF0ZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9IHZhbHVlICsgMTtcbiAgICAgICAgdGhpcy5iZXN0U3RyZWFrLnVwZGF0ZSgoYmVzdCkgPT4gTWF0aC5tYXgoYmVzdCwgbmV4dCkpO1xuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jYXJkcy51cGRhdGUoKGNhcmRzKSA9PlxuICAgICAgICBjYXJkcy5tYXAoKGl0ZW0pID0+IChpdGVtLmlkID09PSBmaXJzdC5pZCB8fCBpdGVtLmlkID09PSB1cGRhdGVkLmlkID8geyAuLi5pdGVtLCBtYXRjaGVkOiB0cnVlIH0gOiBpdGVtKSlcbiAgICAgICk7XG4gICAgICB0aGlzLmF1ZGlvLm1hdGNoKCk7XG4gICAgICBpZiAodGhpcy5jYXJkcygpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5tYXRjaGVkKS5sZW5ndGggPT09IHRoaXMuY2FyZHMoKS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICAgICAgdGhpcy5waGFzZS5zZXQoJ3dvbicpO1xuICAgICAgICB0aGlzLnNhdmVTY29yZSgpO1xuICAgICAgICB0aGlzLmF1ZGlvLndpbigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9ja0JvYXJkLnNldCh0cnVlKTtcbiAgICB0aGlzLnN0cmVhay5zZXQoMCk7XG4gICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jYXJkcy51cGRhdGUoKGNhcmRzKSA9PlxuICAgICAgICBjYXJkcy5tYXAoKGl0ZW0pID0+IChpdGVtLmlkID09PSBmaXJzdC5pZCB8fCBpdGVtLmlkID09PSB1cGRhdGVkLmlkID8geyAuLi5pdGVtLCBmbGlwcGVkOiBmYWxzZSB9IDogaXRlbSkpXG4gICAgICApO1xuICAgICAgdGhpcy5sb2NrQm9hcmQuc2V0KGZhbHNlKTtcbiAgICB9LCB0aGlzLnByb2ZpbGVDb25maWcoKS5taXNtYXRjaERlbGF5KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRUaW1lcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgIHRoaXMudGltZXIgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMpIHtcbiAgICAgICAgdGhpcy5lbGFwc2VkLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlICsgMSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtYWluaW5nLnVwZGF0ZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9IE1hdGgubWF4KDAsIHZhbHVlIC0gMSk7XG4gICAgICAgIGlmIChuZXh0ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5mYWlsZWQuc2V0KHRydWUpO1xuICAgICAgICAgIHRoaXMucGhhc2Uuc2V0KCdsb3N0Jyk7XG4gICAgICAgICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICAgICAgICB0aGlzLmF1ZGlvLmxvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgIH0pO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgdGhpcy50aW1lciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0VG9HYW1lc01lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldFRvU2V0dXAoKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgbWluaUdhbWVzQmFzZVJvdXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGUgPSAodGhpcy5taW5pR2FtZXNSb3V0ZSB8fCAnL21pbmktZ2FtZXMnKS50cmltKCk7XG4gICAgcmV0dXJuIGAvJHtyb3V0ZS5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJykgfHwgJ21pbmktZ2FtZXMnfWA7XG4gIH1cblxuICBwcml2YXRlIHNodWZmbGU8VD4oaXRlbXM6IFRbXSk6IFRbXSB7XG4gICAgY29uc3QgY29weSA9IFsuLi5pdGVtc107XG4gICAgZm9yIChsZXQgaSA9IGNvcHkubGVuZ3RoIC0gMTsgaSA+IDA7IGkgLT0gMSkge1xuICAgICAgY29uc3QgaiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChpICsgMSkpO1xuICAgICAgW2NvcHlbaV0sIGNvcHlbal1dID0gW2NvcHlbal0sIGNvcHlbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWFkZXJib2FyZExpbmUoZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vdmVzID0gdGhpcy50KCdsZWFkZXJib2FyZE1vdmVzJykucmVwbGFjZSgne21vdmVzfScsIFN0cmluZyhlbnRyeS5hdHRlbXB0cykpO1xuICAgIGNvbnN0IHRpbWUgPSB0aGlzLnQoJ2xlYWRlcmJvYXJkVGltZScpLnJlcGxhY2UoJ3t0aW1lfScsIHRoaXMuZm9ybWF0U2Vjb25kcyhlbnRyeS5zZWNvbmRzKSk7XG4gICAgcmV0dXJuIGAke21vdmVzfSDCtyAke3RpbWV9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWFkZXJib2FyZFRpdGxlKGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lID0gZW50cnkucGxheWVyTmFtZSB8fCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJyk7XG4gICAgaWYgKGVudHJ5LnByb2ZpbGUpIHJldHVybiBgJHtlbnRyeS5wbGF5ZXJBdmF0YXIgfHwgJ+KtkCd9ICR7bmFtZX0gwrcgJHt0aGlzLnQoZW50cnkucHJvZmlsZSl9YDtcbiAgICByZXR1cm4gYCR7dGhpcy50KGVudHJ5LmRpZmZpY3VsdHkpfSDCtyAke3RoaXMudChlbnRyeS5tb2RlKX1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxlYWRlcmJvYXJkSGVhZGluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2xlYWRlcmJvYXJkUHJvZmlsZVRpdGxlJykucmVwbGFjZSgne3Byb2ZpbGV9JywgdGhpcy50KHRoaXMucHJvZmlsZSgpKSk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVTY29yZSgpOiB2b2lkIHtcbiAgICBjb25zdCBtZWRhbCA9IHRoaXMuY2FsY3VsYXRlTWVkYWwodGhpcy5hdHRlbXB0cygpLCB0aGlzLnJlc3VsdFNlY29uZHMoKSwgdGhpcy5iZXN0U3RyZWFrKCkpO1xuICAgIGNvbnN0IGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5ID0ge1xuICAgICAgaWQ6IGAke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9YCxcbiAgICAgIHByb2ZpbGU6IHRoaXMucHJvZmlsZSgpLFxuICAgICAgcGxheWVyTmFtZTogdGhpcy5wbGF5ZXJOYW1lKCksXG4gICAgICBwbGF5ZXJBdmF0YXI6IHRoaXMuYWN0aXZlUGxheWVyQXZhdGFyKCksXG4gICAgICBtZWRhbCxcbiAgICAgIGRpZmZpY3VsdHk6IHRoaXMuZGlmZmljdWx0eSgpLFxuICAgICAgbW9kZTogdGhpcy5tb2RlKCksXG4gICAgICBhdHRlbXB0czogdGhpcy5hdHRlbXB0cygpLFxuICAgICAgc2Vjb25kczogdGhpcy5yZXN1bHRTZWNvbmRzKCksXG4gICAgICBjb21wbGV0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gICAgY29uc3QgbmV4dCA9IHRoaXMubGltaXRMZWFkZXJib2FyZChbLi4udGhpcy5sZWFkZXJib2FyZCgpLCBlbnRyeV0pO1xuICAgIHRoaXMubGVhZGVyYm9hcmQuc2V0KG5leHQpO1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMRUFERVJCT0FSRF9LRVksIEpTT04uc3RyaW5naWZ5KG5leHQpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGxvY2FsU3RvcmFnZSBwdWVkZSBubyBlc3RhciBkaXNwb25pYmxlIGVuIFNTUi90ZXN0cy5cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRMZWFkZXJib2FyZCgpOiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5W10ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMRUFERVJCT0FSRF9LRVkpO1xuICAgICAgaWYgKCFyYXcpIHJldHVybiBbXTtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBKU09OLnBhcnNlKHJhdykgYXMgTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXR1cm4gW107XG4gICAgICByZXR1cm4gdGhpcy5saW1pdExlYWRlcmJvYXJkKFxuICAgICAgICBlbnRyaWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Py5kaWZmaWN1bHR5ICYmIGVudHJ5Py5tb2RlICYmIE51bWJlci5pc0Zpbml0ZShlbnRyeT8uYXR0ZW1wdHMpKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpbWl0TGVhZGVyYm9hcmQoZW50cmllczogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdKTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlcy5mbGF0TWFwKChwcm9maWxlKSA9PlxuICAgICAgZW50cmllc1xuICAgICAgICAuZmlsdGVyKChlbnRyeSkgPT4gdGhpcy5lbnRyeVByb2ZpbGUoZW50cnkpID09PSBwcm9maWxlKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5zZWNvbmRzIC0gYi5zZWNvbmRzIHx8IGEuYXR0ZW1wdHMgLSBiLmF0dGVtcHRzKVxuICAgICAgICAuc2xpY2UoMCwgNSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnRyeVByb2ZpbGUoZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkpOiBNZW1vcnlHYW1lUHJvZmlsZSB7XG4gICAgaWYgKGVudHJ5LnByb2ZpbGUpIHJldHVybiBlbnRyeS5wcm9maWxlO1xuICAgIGlmIChlbnRyeS5tb2RlID09PSAndGltZWQnIHx8IGVudHJ5LmRpZmZpY3VsdHkgPT09ICdoYXJkJykgcmV0dXJuICduaW5qYSc7XG4gICAgaWYgKGVudHJ5Lm1vZGUgPT09ICdyZWxheGVkJyB8fCBlbnRyeS5kaWZmaWN1bHR5ID09PSAnZWFzeScpIHJldHVybiAna2lkJztcbiAgICByZXR1cm4gJ2NsYXNzaWMnO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVNZWRhbChhdHRlbXB0czogbnVtYmVyLCBzZWNvbmRzOiBudW1iZXIsIGJlc3RTdHJlYWs6IG51bWJlcik6IE1lbW9yeU1lZGFsIHtcbiAgICBjb25zdCBwYWlycyA9IHRoaXMucGFpckNvdW50KCk7XG4gICAgY29uc3QgcGVyZmVjdGlzaCA9IGF0dGVtcHRzIDw9IHBhaXJzICsgTWF0aC5jZWlsKHBhaXJzICogMC4zNSk7XG4gICAgY29uc3Qgc29saWQgPSBhdHRlbXB0cyA8PSBwYWlycyAqIDI7XG4gICAgY29uc3QgZmFzdCA9ICF0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgfHwgc2Vjb25kcyA8PSBNYXRoLm1heCgzMCwgcGFpcnMgKiA4KTtcbiAgICBpZiAocGVyZmVjdGlzaCAmJiBmYXN0ICYmIGJlc3RTdHJlYWsgPj0gTWF0aC5jZWlsKHBhaXJzICogMC40NSkpIHJldHVybiAnZ29sZCc7XG4gICAgaWYgKHNvbGlkICYmIGJlc3RTdHJlYWsgPj0gTWF0aC5jZWlsKHBhaXJzICogMC4yNSkpIHJldHVybiAnc2lsdmVyJztcbiAgICBpZiAoc29saWQpIHJldHVybiAnYnJvbnplJztcbiAgICByZXR1cm4gJ3NwYXJrJztcbiAgfVxuXG4gIHByb3RlY3RlZCBtZWRhbEljb24obWVkYWw6IE1lbW9yeU1lZGFsKTogc3RyaW5nIHtcbiAgICBpZiAobWVkYWwgPT09ICdnb2xkJykgcmV0dXJuICfwn6WHJztcbiAgICBpZiAobWVkYWwgPT09ICdzaWx2ZXInKSByZXR1cm4gJ/CfpYgnO1xuICAgIGlmIChtZWRhbCA9PT0gJ2Jyb256ZScpIHJldHVybiAn8J+liSc7XG4gICAgcmV0dXJuICfinKgnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRTZWNvbmRzKHNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbWluID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IHNlYyA9IHNlY29uZHMgJSA2MDtcbiAgICByZXR1cm4gYCR7bWlufToke1N0cmluZyhzZWMpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgfVxufVxuIl19
712
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWdhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL21lbW9yeS1nYW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7O0FBRzNGLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUs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QUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxLQUFLLElBQUksU0FBUyxDQUFDLENBQUM7UUFDNUYsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RixrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckMsTUFBTSxHQUFHLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUN6QixPQUFPLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFDTSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RyxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUks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O3dEQWltQlEsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uSWNvbiwgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgbXVzaWNhbE5vdGVzT3V0bGluZSxcbiAgcmVmcmVzaE91dGxpbmUsXG4gIHRyb3BoeU91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuL21pbmktZ2FtZS1wbGF5ZXItcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbW9yeUdhbWVDYXJkLCBNZW1vcnlHYW1lRGlmZmljdWx0eSwgTWVtb3J5R2FtZU1vZGUsIE1lbW9yeUdhbWVQcm9maWxlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tb2RhbC1sYXlvdXQvbW9kYWwtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuYWRkSWNvbnMoeyBtdXNpY2FsTm90ZXNPdXRsaW5lLCByZWZyZXNoT3V0bGluZSwgdHJvcGh5T3V0bGluZSB9KTtcblxuY29uc3QgU1lNQk9MUyA9IFsn4q2QJywgJ/CfmoAnLCAn8J+OtScsICfimqEnLCAn8J+MmScsICfwn5KOJywgJ/CfjognLCAn8J+NgCcsICfwn6epJywgJ/CfjrInLCAn8J+MiCcsICfwn5SlJywgJ/CfjZMnLCAn8J+mhCcsICfwn46BJywgJ+KYgO+4jyddO1xuXG5jb25zdCBQUk9GSUxFX0NPTkZJRzogUmVjb3JkPFxuICBNZW1vcnlHYW1lUHJvZmlsZSxcbiAge1xuICAgIHBhaXJzOiBudW1iZXI7XG4gICAgdGltZWRTZWNvbmRzPzogbnVtYmVyO1xuICAgIG1pc21hdGNoRGVsYXk6IG51bWJlcjtcbiAgICBib2FyZENsYXNzOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIGtpZDoge1xuICAgIHBhaXJzOiA0LFxuICAgIG1pc21hdGNoRGVsYXk6IDE0MDAsXG4gICAgYm9hcmRDbGFzczogJ21lbW9yeS1ib2FyZC0ta2lkJyxcbiAgfSxcbiAgY2xhc3NpYzoge1xuICAgIHBhaXJzOiA4LFxuICAgIG1pc21hdGNoRGVsYXk6IDkwMCxcbiAgICBib2FyZENsYXNzOiAnbWVtb3J5LWJvYXJkLS1jbGFzc2ljJyxcbiAgfSxcbiAgbmluamE6IHtcbiAgICBwYWlyczogMTYsXG4gICAgdGltZWRTZWNvbmRzOiAxNTAsXG4gICAgbWlzbWF0Y2hEZWxheTogNTYwLFxuICAgIGJvYXJkQ2xhc3M6ICdtZW1vcnktYm9hcmQtLW5pbmphJyxcbiAgfSxcbn07XG5cbnR5cGUgTWVtb3J5R2FtZVBoYXNlID0gJ2hvbWUnIHwgJ3BsYXlpbmcnIHwgJ3dvbicgfCAnbG9zdCc7XG5cbmludGVyZmFjZSBNZW1vcnlMZWFkZXJib2FyZEVudHJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvZmlsZT86IE1lbW9yeUdhbWVQcm9maWxlO1xuICBwbGF5ZXJOYW1lPzogc3RyaW5nO1xuICBwbGF5ZXJBdmF0YXI/OiBzdHJpbmc7XG4gIG1lZGFsPzogTWVtb3J5TWVkYWw7XG4gIGRpZmZpY3VsdHk6IE1lbW9yeUdhbWVEaWZmaWN1bHR5O1xuICBtb2RlOiBNZW1vcnlHYW1lTW9kZTtcbiAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgc2Vjb25kczogbnVtYmVyO1xuICBjb21wbGV0ZWRBdDogc3RyaW5nO1xufVxuXG5jb25zdCBMRUFERVJCT0FSRF9LRVkgPSAndmFsLW1pbmktZ2FtZXMtbWVtb3J5LWxlYWRlcmJvYXJkOnYxJztcblxudHlwZSBNZW1vcnlNZWRhbCA9ICdnb2xkJyB8ICdzaWx2ZXInIHwgJ2Jyb256ZScgfCAnc3BhcmsnO1xudHlwZSBNZW1vcnlDb25maXJtQWN0aW9uID0gJ3Jlc3RhcnQnIHwgJ21vZGUnIHwgJ2dhbWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW1lbW9yeS1nYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkljb24sIElvbk1vZGFsLCBNb2RhbExheW91dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1haW4gY2xhc3M9XCJtZW1vcnktc2hlbGxcIj5cbiAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LWhlcm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWhlcm9fX2JhZGdlXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm11c2ljYWwtbm90ZXMtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICB7eyB0KCdtZW1vcnlUaXRsZScpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGgxPnt7IHQoJ2hvbWVUaXRsZScpIH19PC9oMT5cbiAgICAgICAgICA8cD57eyB0KCdob21lU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LXBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1vcHRpb25zXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cIm1lbW9yeS1ob3d0b1wiPlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnaW5zdHJ1Y3Rpb25zVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2luc3RydWN0aW9uc0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGgyPnt7IHQoJ3Byb2ZpbGVUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktcHJvZmlsZXNcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncHJvZmlsZVRpdGxlJylcIj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBwcm9maWxlczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInByb2ZpbGUoKSA9PT0gaXRlbVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJvZmlsZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KGl0ZW0pIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdChpdGVtICsgJ0Rlc2NyaXB0aW9uJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbW9yeS1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydCgpXCI+e3sgdCgnc3RhcnRHYW1lJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktbWVudS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1nYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1zY29yZVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdhdHRlbXB0cycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBhdHRlbXB0cygpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3BhaXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IG1hdGNoZWRQYWlycygpIH19L3t7IHBhaXJDb3VudCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQodGltZUxhYmVsKCkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBmb3JtYXR0ZWRUaW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnc3RyZWFrJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0cmVhaygpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWJvYXJkXCIgW2NsYXNzXT1cImJvYXJkQ2xhc3MoKVwiPlxuICAgICAgICAgICAgQGZvciAoY2FyZCBvZiBjYXJkcygpOyB0cmFjayBjYXJkLmlkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbW9yeS1jYXJkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZmxpcHBlZF09XCJjYXJkLmZsaXBwZWQgfHwgY2FyZC5tYXRjaGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbWF0Y2hlZF09XCJjYXJkLm1hdGNoZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjYXJkLm1hdGNoZWQgfHwgbG9ja0JvYXJkKCkgfHwgZmFpbGVkKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJmbGlwKGNhcmQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtb3J5LWNhcmRfX2JhY2tcIj4/PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtb3J5LWNhcmRfX2Zyb250XCI+e3sgY2FyZC5zeW1ib2wgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChwaGFzZSgpID09PSAnd29uJykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS13aW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1jb25mZXR0aVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHBpZWNlIG9mIGNvbmZldHRpUGllY2VzOyB0cmFjayBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3dpblRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgd2luQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXJlc3VsdFwiIFtzdHlsZS4tLXBsYXllci1jb2xvcl09XCJhY3RpdmVQbGF5ZXJDb2xvcigpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgYWN0aXZlUGxheWVyQXZhdGFyKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBwbGF5ZXJOYW1lKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtZWRhbEljb24ocmVzdWx0TWVkYWwoKSkgfX0ge3sgdChyZXN1bHRNZWRhbCgpKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2xvc3QnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXdpbiBtZW1vcnktd2luLS1mYWlsZWRcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdsb3NlVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB0KCdsb3NlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPnt7IHQoJ2JhY2tUb1NldHVwJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+e3sgdCgnY2hhbmdlR2FtZScpIH19PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXN0YXJ0R2FtZSgpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicmVmcmVzaC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAge3sgdCgncmVzdGFydCcpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1sZWFkZXJib2FyZFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiAvPlxuICAgICAgICAgIDxoMj57eyBsZWFkZXJib2FyZEhlYWRpbmcoKSB9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKHByb2ZpbGVMZWFkZXJib2FyZCgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxwPnt7IHQoJ2xlYWRlcmJvYXJkRW1wdHknKSB9fTwvcD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG9sPlxuICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgcHJvZmlsZUxlYWRlcmJvYXJkKCk7IHRyYWNrIGVudHJ5LmlkOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGluZGV4ICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxlYWRlcmJvYXJkVGl0bGUoZW50cnkpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxlYWRlcmJvYXJkTGluZShlbnRyeSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvb2w+XG4gICAgICAgIH1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L21haW4+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cIiEhY29uZmlybUFjdGlvbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZUNvbmZpcm1Nb2RhbERpc21pc3NlZCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXZhbC1taW5pLWdhbWVzLWZvbnQtc2l6ZSwgMXJlbSk7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmZmZmKTtcbiAgICAgICAgLS1tZW1vcnktcGFuZWwtc3Ryb25nOiAjZjhmNmZiO1xuICAgICAgICAtLW1lbW9yeS1ib3JkZXI6IHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICAtLW1lbW9yeS10ZXh0OiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzJmMmEzYSk7XG4gICAgICAgIC0tbWVtb3J5LW11dGVkOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjNmY2YTdhKTtcbiAgICAgICAgLS1tZW1vcnktc29mdDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4wOCk7XG4gICAgICAgIC0tbWVtb3J5LXJvdzogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjA0KTtcbiAgICAgICAgLS1tZW1vcnktcHJpbWFyeTogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICNmZjAwYjIpO1xuICAgICAgICAtLW1lbW9yeS1zZWNvbmRhcnk6IHZhcigtLWlvbi1jb2xvci10ZXJ0aWFyeSwgIzZhMmRlMik7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5mb250LXNtYWxsKSB7XG4gICAgICAgIC0tdmFsLW1pbmktZ2FtZXMtZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmZvbnQtbGFyZ2UpIHtcbiAgICAgICAgLS12YWwtbWluaS1nYW1lcy1mb250LXNpemU6IDEuMTg3NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSB7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsOiAjMjMxZjJkO1xuICAgICAgICAtLW1lbW9yeS1wYW5lbC1zdHJvbmc6ICMyZjI5Mzk7XG4gICAgICAgIC0tbWVtb3J5LWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKTtcbiAgICAgICAgLS1tZW1vcnktdGV4dDogI2ZmZjhmZjtcbiAgICAgICAgLS1tZW1vcnktbXV0ZWQ6IHJnYmEoMjU1LCAyNDgsIDI1NSwgMC42OCk7XG4gICAgICAgIC0tbWVtb3J5LXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNDUpO1xuICAgICAgICAtLW1lbW9yeS1yb3c6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNTUpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNoZWxsIHtcbiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDEyMHB4KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAyMHB4O1xuICAgICAgICBwYWRkaW5nOiAxOHB4IDAgMzJweDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyOHB4O1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgyOHB4LCA4dncsIDUycHgpIDIwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxOCUgMjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzIpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW1lbW9yeS1wcmltYXJ5KSwgdmFyKC0tbWVtb3J5LXNlY29uZGFyeSkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDI0cHggNzBweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjI1KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IGF1dG8gLTIwJSAtNDIlIC0yMCU7XG4gICAgICAgIGhlaWdodDogNTUlO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgIDkwZGVnLFxuICAgICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xOCkgMCAxMHB4LFxuICAgICAgICAgIHRyYW5zcGFyZW50IDEwcHggMjBweFxuICAgICAgICApO1xuICAgICAgICBvcGFjaXR5OiAwLjE4O1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVyb19fYmFkZ2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm8gaDEge1xuICAgICAgICBtYXJnaW46IDE0cHggMCA2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMi4yNXJlbSwgOXZ3LCAzLjYyNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwLjk1O1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm8gcCB7XG4gICAgICAgIG1heC13aWR0aDogNTIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDFyZW0sIDN2dywgMS4yNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgICBvcGFjaXR5OiAwLjg4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBhbmVsLFxuICAgICAgLm1lbW9yeS1nYW1lIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDE2cHgsIDR2dywgMjhweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1vcHRpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhvd3RvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktb3B0aW9ucyBoMixcbiAgICAgIC5tZW1vcnktaG93dG8gaDIsXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIGgyIHtcbiAgICAgICAgbWFyZ2luOiA4cHggMCAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaG93dG8gaDIsXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhvd3RvIHAsXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24sXG4gICAgICAubWVtb3J5LXNlY29uZGFyeSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogOTJweDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDVweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxOHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wMnJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIGJ1dHRvbi5pcy1zZWxlY3RlZCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByaW1hcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiA1OHB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMThweCA0NXB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByaW1hcnkgaW9uLWljb24ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgd2lkdGg6IDEuMjVlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjI1ZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zY29yZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHNwYW4ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcm93KTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHNtYWxsLFxuICAgICAgLm1lbW9yeS13aW4gcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHNtYWxsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zY29yZSBzdHJvbmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjM1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWJvYXJkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDU4cHgsIDFmcikpO1xuICAgICAgICBnYXA6IGNsYW1wKDhweCwgMnZ3LCAxMnB4KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ib2FyZC0ta2lkIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDU4cHgsIDFmcikpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWJvYXJkLS1jbGFzc2ljIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDU4cHgsIDFmcikpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWJvYXJkLS1uaW5qYSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDgsIG1pbm1heCg0MHB4LCAxZnIpKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogY2xhbXAoMTRweCwgNHZ3LCAyMnB4KTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHBlcnNwZWN0aXZlOiA4MDBweDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyNHB4LCA3dncsIDQycHgpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmRfX2JhY2ssXG4gICAgICAubWVtb3J5LWNhcmRfX2Zyb250IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yOHMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2UsIG9wYWNpdHkgMC4ycyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmRfX2JhY2sge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzIlIDI4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW1lbW9yeS1zZWNvbmRhcnkpLCB2YXIoLS1tZW1vcnktcHJpbWFyeSkpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDI0cHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkX19mcm9udCB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsLXN0cm9uZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZC5pcy1mbGlwcGVkIC5tZW1vcnktY2FyZF9fYmFjayB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmQuaXMtZmxpcHBlZCAubWVtb3J5LWNhcmRfX2Zyb250IHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDM2MGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZC5pcy1tYXRjaGVkIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAzcHggdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXdpbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTIpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIGlvbi1pY29uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvIDhweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLCAjMmRkMzZmKTtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXdpbiBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIHAge1xuICAgICAgICBtYXJnaW46IDRweCAwIDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcmVzdWx0IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpO1xuICAgICAgICBjb2xvcjogIzJmMmEzYTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5tZW1vcnktcmVzdWx0LFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAubWVtb3J5LXJlc3VsdCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQgPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM4cHg7XG4gICAgICAgIGhlaWdodDogMzhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBsYXllci1jb2xvciwgdmFyKC0tbWVtb3J5LXByaW1hcnkpKTtcbiAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcmVzdWx0IGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcmVzdWx0IHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMTZweDtcbiAgICAgICAgbGVmdDogOCU7XG4gICAgICAgIHdpZHRoOiA5cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIGFuaW1hdGlvbjogbWVtb3J5LWNvbmZldHRpLWZhbGwgMS41cyBlYXNlLW91dCBmb3J3YXJkcztcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMjBkZWcpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDJuKSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1zZWNvbmRhcnkpO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMDhzO1xuICAgICAgICBsZWZ0OiAyMCU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoM24pIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmY2YzZjtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjE2cztcbiAgICAgICAgbGVmdDogMzglO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDRuKSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMyZGQzNmY7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4yNHM7XG4gICAgICAgIGxlZnQ6IDU1JTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCg1bikge1xuICAgICAgICBsZWZ0OiA3MiU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoNm4pIHtcbiAgICAgICAgbGVmdDogODYlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXdpbi0tZmFpbGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50LCB2YXIoLS1tZW1vcnktcGFuZWwpIDI4JSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbWVudS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgxNnB4LCA0dncsIDIycHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZF9fdGl0bGUgaW9uLWljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBvbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgbGkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDM4cHggMWZyO1xuICAgICAgICBnYXA6IDJweCAxMHB4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcm93KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBsaSA+IHNwYW4ge1xuICAgICAgICBncmlkLXJvdzogc3BhbiAyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzRweDtcbiAgICAgICAgaGVpZ2h0OiAzNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xOCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk4cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDE0cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIGgyLFxuICAgICAgLm1lbW9yeS1wbGF5ZXIgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIgcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciBsYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciBpbnB1dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiA1MnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMThweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1hdmF0YXItbGlzdCxcbiAgICAgIC5tZW1vcnktY29sb3ItbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYXZhdGFyLWxpc3QgYnV0dG9uLFxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IGJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgICAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWF2YXRhci1saXN0IGJ1dHRvbi5pcy1zZWxlY3RlZCxcbiAgICAgIC5tZW1vcnktY29sb3ItbGlzdCBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbG9yLWxpc3QgYnV0dG9uIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGxheWVyLWNvbG9yKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBtZW1vcnktY29uZmV0dGktZmFsbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSByb3RhdGUoMGRlZyk7XG4gICAgICAgIH1cbiAgICAgICAgMTglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE3MHB4KSByb3RhdGUoMzAwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNTIwcHgpIHtcbiAgICAgICAgLm1lbW9yeS1zY29yZSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tZW1vcnktYm9hcmQtLW5pbmphIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNTRweCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAubWVtb3J5LWFjdGlvbnMsXG4gICAgICAgIC5tZW1vcnktbWVudS1hY3Rpb25zLFxuICAgICAgICAubWVtb3J5LXByb2ZpbGVzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lbW9yeUdhbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXllclByb2ZpbGVzID0gaW5qZWN0KE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UpO1xuICByZWFkb25seSBhdWRpbyA9IGluamVjdChSZXRyb0F1ZGlvU2VydmljZSk7XG5cbiAgQElucHV0KCkgbWluaUdhbWVzUm91dGUgPSAnL21pbmktZ2FtZXMnO1xuXG4gIHJlYWRvbmx5IHByb2ZpbGVzOiBNZW1vcnlHYW1lUHJvZmlsZVtdID0gWydraWQnLCAnY2xhc3NpYycsICduaW5qYSddO1xuICByZWFkb25seSBjb25mZXR0aVBpZWNlcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDE0IH0sIChfLCBpbmRleCkgPT4gaW5kZXgpO1xuXG4gIHJlYWRvbmx5IHBoYXNlID0gc2lnbmFsPE1lbW9yeUdhbWVQaGFzZT4oJ2hvbWUnKTtcbiAgcmVhZG9ubHkgcHJvZmlsZSA9IHNpZ25hbDxNZW1vcnlHYW1lUHJvZmlsZT4oJ2tpZCcpO1xuICByZWFkb25seSBkaWZmaWN1bHR5ID0gc2lnbmFsPE1lbW9yeUdhbWVEaWZmaWN1bHR5PignZWFzeScpO1xuICByZWFkb25seSBtb2RlID0gc2lnbmFsPE1lbW9yeUdhbWVNb2RlPignY2xhc3NpYycpO1xuICByZWFkb25seSBwbGF5aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgY2FyZHMgPSBzaWduYWw8TWVtb3J5R2FtZUNhcmRbXT4oW10pO1xuICByZWFkb25seSBhdHRlbXB0cyA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgc3RyZWFrID0gc2lnbmFsKDApO1xuICByZWFkb25seSBiZXN0U3RyZWFrID0gc2lnbmFsKDApO1xuICByZWFkb25seSBlbGFwc2VkID0gc2lnbmFsKDApO1xuICByZWFkb25seSByZW1haW5pbmcgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IGZhaWxlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxvY2tCb2FyZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxlYWRlcmJvYXJkID0gc2lnbmFsPE1lbW9yeUxlYWRlcmJvYXJkRW50cnlbXT4odGhpcy5yZWFkTGVhZGVyYm9hcmQoKSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb24gPSBzaWduYWw8TWVtb3J5Q29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtZWRBY3Rpb24gPSBzaWduYWw8TWVtb3J5Q29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHRpbWVyPzogbnVtYmVyO1xuICBwcml2YXRlIGZpcnN0UGljaz86IE1lbW9yeUdhbWVDYXJkO1xuXG4gIHJlYWRvbmx5IHByb2ZpbGVDb25maWcgPSBjb21wdXRlZCgoKSA9PiBQUk9GSUxFX0NPTkZJR1t0aGlzLnByb2ZpbGUoKV0pO1xuICByZWFkb25seSBwYWlyQ291bnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb2ZpbGVDb25maWcoKS5wYWlycyk7XG4gIHJlYWRvbmx5IGJvYXJkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiBgbWVtb3J5LWJvYXJkICR7dGhpcy5wcm9maWxlQ29uZmlnKCkuYm9hcmRDbGFzc31gKTtcbiAgcmVhZG9ubHkgcHJvZmlsZUxlYWRlcmJvYXJkID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmxlYWRlcmJvYXJkKClcbiAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiB0aGlzLmVudHJ5UHJvZmlsZShlbnRyeSkgPT09IHRoaXMucHJvZmlsZSgpKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEuc2Vjb25kcyAtIGIuc2Vjb25kcyB8fCBhLmF0dGVtcHRzIC0gYi5hdHRlbXB0cylcbiAgICAgIC5zbGljZSgwLCA1KVxuICApO1xuICByZWFkb25seSBtYXRjaGVkUGFpcnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhcmRzKCkuZmlsdGVyKChjYXJkKSA9PiBjYXJkLm1hdGNoZWQpLmxlbmd0aCAvIDIpO1xuICByZWFkb25seSB3b24gPSBjb21wdXRlZChcbiAgICAoKSA9PiAhdGhpcy5mYWlsZWQoKSAmJiB0aGlzLnBsYXlpbmcoKSAmJiB0aGlzLmNhcmRzKCkubGVuZ3RoID4gMCAmJiB0aGlzLm1hdGNoZWRQYWlycygpID09PSB0aGlzLnBhaXJDb3VudCgpXG4gICk7XG4gIHJlYWRvbmx5IHBsYXllck5hbWUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucGxheWVyUHJvZmlsZXMuZGlzcGxheU5hbWUodGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCksIHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSlcbiAgKTtcbiAgcmVhZG9ubHkgYWN0aXZlUGxheWVyQXZhdGFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCk/LmF2YXRhciA/PyAn8J+MnycpO1xuICByZWFkb25seSBhY3RpdmVQbGF5ZXJDb2xvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGxheWVyUHJvZmlsZXMuYWN0aXZlUHJvZmlsZSgpPy5jb2xvciA/PyAnI2ZmMDBiMicpO1xuICByZWFkb25seSB0aW1lTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5wcm9maWxlQ29uZmlnKCkudGltZWRTZWNvbmRzID8gJ3RpbWVMZWZ0JyA6ICd0aW1lJykpO1xuICByZWFkb25seSBmb3JtYXR0ZWRUaW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPyB0aGlzLnJlbWFpbmluZygpIDogdGhpcy5lbGFwc2VkKCk7XG4gICAgY29uc3QgbWluID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IHNlYyA9IHNlY29uZHMgJSA2MDtcbiAgICByZXR1cm4gYCR7bWlufToke1N0cmluZyhzZWMpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgfSk7XG4gIHJlYWRvbmx5IHJlc3VsdE1lZGFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jYWxjdWxhdGVNZWRhbCh0aGlzLmF0dGVtcHRzKCksIHRoaXMucmVzdWx0U2Vjb25kcygpLCB0aGlzLmJlc3RTdHJlYWsoKSkpO1xuICByZWFkb25seSByZXN1bHRTZWNvbmRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPyB0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgLSB0aGlzLnJlbWFpbmluZygpIDogdGhpcy5lbGFwc2VkKClcbiAgKTtcbiAgcmVhZG9ubHkgd2luQm9keSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCd3aW5Cb2R5JylcbiAgICAgIC5yZXBsYWNlKCd7YXR0ZW1wdHN9JywgU3RyaW5nKHRoaXMuYXR0ZW1wdHMoKSkpXG4gICAgICAucmVwbGFjZSgne3RpbWV9JywgdGhpcy5mb3JtYXRTZWNvbmRzKHRoaXMucmVzdWx0U2Vjb25kcygpKSlcbiAgICAgIC5yZXBsYWNlKCd7c3RyZWFrfScsIFN0cmluZyh0aGlzLmJlc3RTdHJlYWsoKSkpXG4gICk7XG4gIHJlYWRvbmx5IGNvbmZpcm1UaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1SZXN0YXJ0VGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjb25maXJtR2FtZXNUaXRsZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1Nb2RlVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1Cb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY29uZmlybVJlc3RhcnRCb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY29uZmlybUdhbWVzQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1Nb2RlQm9keScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiBbXG4gICAge1xuICAgICAgdGV4dDogdGhpcy50KCdjYW5jZWwnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIHRva2VuOiAnY2FuY2VsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRleHQ6XG4gICAgICAgIHRoaXMuY29uZmlybUFjdGlvbigpID09PSAncmVzdGFydCdcbiAgICAgICAgICA/IHRoaXMudCgncmVzdGFydCcpXG4gICAgICAgICAgOiB0aGlzLmNvbmZpcm1BY3Rpb24oKSA9PT0gJ2dhbWVzJ1xuICAgICAgICAgICAgPyB0aGlzLnQoJ2NoYW5nZUdhbWUnKVxuICAgICAgICAgICAgOiB0aGlzLnQoJ2JhY2tUb1NldHVwJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICB0b2tlbjogJ2NvbmZpcm0nLFxuICAgIH0sXG4gIF0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNaW5pR2FtZXMnLCBNSU5JX0dBTUVTX0kxOE4pO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5hdWRpby5zdGFydE1lbnVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCksIDApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01pbmlHYW1lcycpO1xuICB9XG5cbiAgc2VsZWN0UHJvZmlsZShwcm9maWxlOiBNZW1vcnlHYW1lUHJvZmlsZSk6IHZvaWQge1xuICAgIHRoaXMucHJvZmlsZS5zZXQocHJvZmlsZSk7XG4gICAgaWYgKHByb2ZpbGUgPT09ICdraWQnKSB7XG4gICAgICB0aGlzLmRpZmZpY3VsdHkuc2V0KCdlYXN5Jyk7XG4gICAgICB0aGlzLm1vZGUuc2V0KCdyZWxheGVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwcm9maWxlID09PSAnbmluamEnKSB7XG4gICAgICB0aGlzLmRpZmZpY3VsdHkuc2V0KCdoYXJkJyk7XG4gICAgICB0aGlzLm1vZGUuc2V0KCd0aW1lZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpZmZpY3VsdHkuc2V0KCdtZWRpdW0nKTtcbiAgICB0aGlzLm1vZGUuc2V0KCdjbGFzc2ljJyk7XG4gIH1cblxuICBzdGFydCgpOiB2b2lkIHtcbiAgICBjb25zdCBzeW1ib2xzID0gU1lNQk9MUy5zbGljZSgwLCB0aGlzLnBhaXJDb3VudCgpKTtcbiAgICBjb25zdCBkZWNrID0gdGhpcy5zaHVmZmxlKFsuLi5zeW1ib2xzLCAuLi5zeW1ib2xzXSkubWFwKChzeW1ib2wsIGluZGV4KSA9PiAoe1xuICAgICAgaWQ6IGAke3N5bWJvbH0tJHtpbmRleH0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKX1gLFxuICAgICAgc3ltYm9sLFxuICAgICAgbWF0Y2hlZDogZmFsc2UsXG4gICAgICBmbGlwcGVkOiBmYWxzZSxcbiAgICB9KSk7XG4gICAgdGhpcy5jYXJkcy5zZXQoZGVjayk7XG4gICAgdGhpcy5maXJzdFBpY2sgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdHRlbXB0cy5zZXQoMCk7XG4gICAgdGhpcy5zdHJlYWsuc2V0KDApO1xuICAgIHRoaXMuYmVzdFN0cmVhay5zZXQoMCk7XG4gICAgdGhpcy5lbGFwc2VkLnNldCgwKTtcbiAgICB0aGlzLnJlbWFpbmluZy5zZXQodGhpcy5wcm9maWxlQ29uZmlnKCkudGltZWRTZWNvbmRzID8/IDApO1xuICAgIHRoaXMuZmFpbGVkLnNldChmYWxzZSk7XG4gICAgdGhpcy5sb2NrQm9hcmQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnBoYXNlLnNldCgncGxheWluZycpO1xuICAgIHRoaXMucGxheWluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5zdGFydFRpbWVyKCk7XG4gICAgdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0R2FtZU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHJlc2V0VG9TZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLnBsYXlpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNhcmRzLnNldChbXSk7XG4gICAgdGhpcy5maXJzdFBpY2sgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5mYWlsZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnBoYXNlLnNldCgnaG9tZScpO1xuICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0TWVudU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHJlcXVlc3RSZXN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdyZXN0YXJ0Jyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdtb2RlJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlR2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdnYW1lcycpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VDb25maXJtTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgaGFuZGxlQ29uZmlybU1vZGFsRGlzbWlzc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1lZEFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybWVkQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGlmICghYWN0aW9uKSByZXR1cm47XG5cbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ21vZGUnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9TZXR1cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9HYW1lc01lbnUoKTtcbiAgICB9XG4gIH1cblxuICBjb25maXJtUGVuZGluZ0FjdGlvbih0b2tlbj86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0b2tlbiAhPT0gJ2NvbmZpcm0nKSB7XG4gICAgICB0aGlzLmNsb3NlQ29uZmlybU1vZGFsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybWVkQWN0aW9uLnNldChhY3Rpb24pO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGZsaXAoY2FyZDogTWVtb3J5R2FtZUNhcmQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2NrQm9hcmQoKSB8fCBjYXJkLmZsaXBwZWQgfHwgY2FyZC5tYXRjaGVkIHx8IHRoaXMud29uKCkgfHwgdGhpcy5mYWlsZWQoKSkgcmV0dXJuO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuY2FyZHMudXBkYXRlKChjYXJkcykgPT4gY2FyZHMubWFwKChpdGVtKSA9PiAoaXRlbS5pZCA9PT0gY2FyZC5pZCA/IHsgLi4uaXRlbSwgZmxpcHBlZDogdHJ1ZSB9IDogaXRlbSkpKTtcbiAgICBjb25zdCB1cGRhdGVkID0gdGhpcy5jYXJkcygpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGNhcmQuaWQpO1xuICAgIGlmICghdXBkYXRlZCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5maXJzdFBpY2spIHtcbiAgICAgIHRoaXMuZmlyc3RQaWNrID0gdXBkYXRlZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmF0dGVtcHRzLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlICsgMSk7XG4gICAgY29uc3QgZmlyc3QgPSB0aGlzLmZpcnN0UGljaztcbiAgICB0aGlzLmZpcnN0UGljayA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZmlyc3Quc3ltYm9sID09PSB1cGRhdGVkLnN5bWJvbCkge1xuICAgICAgdGhpcy5zdHJlYWsudXBkYXRlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gdmFsdWUgKyAxO1xuICAgICAgICB0aGlzLmJlc3RTdHJlYWsudXBkYXRlKChiZXN0KSA9PiBNYXRoLm1heChiZXN0LCBuZXh0KSk7XG4gICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNhcmRzLnVwZGF0ZSgoY2FyZHMpID0+XG4gICAgICAgIGNhcmRzLm1hcCgoaXRlbSkgPT4gKGl0ZW0uaWQgPT09IGZpcnN0LmlkIHx8IGl0ZW0uaWQgPT09IHVwZGF0ZWQuaWQgPyB7IC4uLml0ZW0sIG1hdGNoZWQ6IHRydWUgfSA6IGl0ZW0pKVxuICAgICAgKTtcbiAgICAgIHRoaXMuYXVkaW8ubWF0Y2goKTtcbiAgICAgIGlmICh0aGlzLmNhcmRzKCkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLm1hdGNoZWQpLmxlbmd0aCA9PT0gdGhpcy5jYXJkcygpLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgICAgICB0aGlzLnBoYXNlLnNldCgnd29uJyk7XG4gICAgICAgIHRoaXMuc2F2ZVNjb3JlKCk7XG4gICAgICAgIHRoaXMuYXVkaW8ud2luKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2NrQm9hcmQuc2V0KHRydWUpO1xuICAgIHRoaXMuc3RyZWFrLnNldCgwKTtcbiAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhcmRzLnVwZGF0ZSgoY2FyZHMpID0+XG4gICAgICAgIGNhcmRzLm1hcCgoaXRlbSkgPT4gKGl0ZW0uaWQgPT09IGZpcnN0LmlkIHx8IGl0ZW0uaWQgPT09IHVwZGF0ZWQuaWQgPyB7IC4uLml0ZW0sIGZsaXBwZWQ6IGZhbHNlIH0gOiBpdGVtKSlcbiAgICAgICk7XG4gICAgICB0aGlzLmxvY2tCb2FyZC5zZXQoZmFsc2UpO1xuICAgIH0sIHRoaXMucHJvZmlsZUNvbmZpZygpLm1pc21hdGNoRGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFRpbWVyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgdGhpcy50aW1lciA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcykge1xuICAgICAgICB0aGlzLmVsYXBzZWQudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUgKyAxKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW1haW5pbmcudXBkYXRlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gTWF0aC5tYXgoMCwgdmFsdWUgLSAxKTtcbiAgICAgICAgaWYgKG5leHQgPT09IDApIHtcbiAgICAgICAgICB0aGlzLmZhaWxlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5waGFzZS5zZXQoJ2xvc3QnKTtcbiAgICAgICAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgICAgICAgIHRoaXMuYXVkaW8ubG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgfSk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICB0aGlzLnRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRUb0dhbWVzTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0VG9TZXR1cCgpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtaW5pR2FtZXNCYXNlUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1pbmlHYW1lc1JvdXRlIHx8ICcvbWluaS1nYW1lcycpLnRyaW0oKTtcbiAgICByZXR1cm4gYC8ke3JvdXRlLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCAnbWluaS1nYW1lcyd9YDtcbiAgfVxuXG4gIHByaXZhdGUgc2h1ZmZsZTxUPihpdGVtczogVFtdKTogVFtdIHtcbiAgICBjb25zdCBjb3B5ID0gWy4uLml0ZW1zXTtcbiAgICBmb3IgKGxldCBpID0gY29weS5sZW5ndGggLSAxOyBpID4gMDsgaSAtPSAxKSB7XG4gICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGkgKyAxKSk7XG4gICAgICBbY29weVtpXSwgY29weVtqXV0gPSBbY29weVtqXSwgY29weVtpXV07XG4gICAgfVxuICAgIHJldHVybiBjb3B5O1xuICB9XG5cbiAgcHJvdGVjdGVkIGxlYWRlcmJvYXJkTGluZShlbnRyeTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeSk6IHN0cmluZyB7XG4gICAgY29uc3QgbW92ZXMgPSB0aGlzLnQoJ2xlYWRlcmJvYXJkTW92ZXMnKS5yZXBsYWNlKCd7bW92ZXN9JywgU3RyaW5nKGVudHJ5LmF0dGVtcHRzKSk7XG4gICAgY29uc3QgdGltZSA9IHRoaXMudCgnbGVhZGVyYm9hcmRUaW1lJykucmVwbGFjZSgne3RpbWV9JywgdGhpcy5mb3JtYXRTZWNvbmRzKGVudHJ5LnNlY29uZHMpKTtcbiAgICByZXR1cm4gYCR7bW92ZXN9IMK3ICR7dGltZX1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxlYWRlcmJvYXJkVGl0bGUoZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5hbWUgPSBlbnRyeS5wbGF5ZXJOYW1lIHx8IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKTtcbiAgICBpZiAoZW50cnkucHJvZmlsZSkgcmV0dXJuIGAke2VudHJ5LnBsYXllckF2YXRhciB8fCAn4q2QJ30gJHtuYW1lfSDCtyAke3RoaXMudChlbnRyeS5wcm9maWxlKX1gO1xuICAgIHJldHVybiBgJHt0aGlzLnQoZW50cnkuZGlmZmljdWx0eSl9IMK3ICR7dGhpcy50KGVudHJ5Lm1vZGUpfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgbGVhZGVyYm9hcmRIZWFkaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudCgnbGVhZGVyYm9hcmRQcm9maWxlVGl0bGUnKS5yZXBsYWNlKCd7cHJvZmlsZX0nLCB0aGlzLnQodGhpcy5wcm9maWxlKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZVNjb3JlKCk6IHZvaWQge1xuICAgIGNvbnN0IG1lZGFsID0gdGhpcy5jYWxjdWxhdGVNZWRhbCh0aGlzLmF0dGVtcHRzKCksIHRoaXMucmVzdWx0U2Vjb25kcygpLCB0aGlzLmJlc3RTdHJlYWsoKSk7XG4gICAgY29uc3QgZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkgPSB7XG4gICAgICBpZDogYCR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKX1gLFxuICAgICAgcHJvZmlsZTogdGhpcy5wcm9maWxlKCksXG4gICAgICBwbGF5ZXJOYW1lOiB0aGlzLnBsYXllck5hbWUoKSxcbiAgICAgIHBsYXllckF2YXRhcjogdGhpcy5hY3RpdmVQbGF5ZXJBdmF0YXIoKSxcbiAgICAgIG1lZGFsLFxuICAgICAgZGlmZmljdWx0eTogdGhpcy5kaWZmaWN1bHR5KCksXG4gICAgICBtb2RlOiB0aGlzLm1vZGUoKSxcbiAgICAgIGF0dGVtcHRzOiB0aGlzLmF0dGVtcHRzKCksXG4gICAgICBzZWNvbmRzOiB0aGlzLnJlc3VsdFNlY29uZHMoKSxcbiAgICAgIGNvbXBsZXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5saW1pdExlYWRlcmJvYXJkKFsuLi50aGlzLmxlYWRlcmJvYXJkKCksIGVudHJ5XSk7XG4gICAgdGhpcy5sZWFkZXJib2FyZC5zZXQobmV4dCk7XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExFQURFUkJPQVJEX0tFWSwgSlNPTi5zdHJpbmdpZnkobmV4dCkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbG9jYWxTdG9yYWdlIHB1ZWRlIG5vIGVzdGFyIGRpc3BvbmlibGUgZW4gU1NSL3Rlc3RzLlxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVhZExlYWRlcmJvYXJkKCk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnlbXSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExFQURFUkJPQVJEX0tFWSk7XG4gICAgICBpZiAoIXJhdykgcmV0dXJuIFtdO1xuICAgICAgY29uc3QgZW50cmllcyA9IEpTT04ucGFyc2UocmF3KSBhcyBNZW1vcnlMZWFkZXJib2FyZEVudHJ5W107XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZW50cmllcykpIHJldHVybiBbXTtcbiAgICAgIHJldHVybiB0aGlzLmxpbWl0TGVhZGVyYm9hcmQoXG4gICAgICAgIGVudHJpZXMuZmlsdGVyKChlbnRyeSkgPT4gZW50cnk/LmRpZmZpY3VsdHkgJiYgZW50cnk/Lm1vZGUgJiYgTnVtYmVyLmlzRmluaXRlKGVudHJ5Py5hdHRlbXB0cykpXG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGltaXRMZWFkZXJib2FyZChlbnRyaWVzOiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5W10pOiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5W10ge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGVzLmZsYXRNYXAoKHByb2ZpbGUpID0+XG4gICAgICBlbnRyaWVzXG4gICAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiB0aGlzLmVudHJ5UHJvZmlsZShlbnRyeSkgPT09IHByb2ZpbGUpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnNlY29uZHMgLSBiLnNlY29uZHMgfHwgYS5hdHRlbXB0cyAtIGIuYXR0ZW1wdHMpXG4gICAgICAgIC5zbGljZSgwLCA1KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGVudHJ5UHJvZmlsZShlbnRyeTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeSk6IE1lbW9yeUdhbWVQcm9maWxlIHtcbiAgICBpZiAoZW50cnkucHJvZmlsZSkgcmV0dXJuIGVudHJ5LnByb2ZpbGU7XG4gICAgaWYgKGVudHJ5Lm1vZGUgPT09ICd0aW1lZCcgfHwgZW50cnkuZGlmZmljdWx0eSA9PT0gJ2hhcmQnKSByZXR1cm4gJ25pbmphJztcbiAgICBpZiAoZW50cnkubW9kZSA9PT0gJ3JlbGF4ZWQnIHx8IGVudHJ5LmRpZmZpY3VsdHkgPT09ICdlYXN5JykgcmV0dXJuICdraWQnO1xuICAgIHJldHVybiAnY2xhc3NpYyc7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZU1lZGFsKGF0dGVtcHRzOiBudW1iZXIsIHNlY29uZHM6IG51bWJlciwgYmVzdFN0cmVhazogbnVtYmVyKTogTWVtb3J5TWVkYWwge1xuICAgIGNvbnN0IHBhaXJzID0gdGhpcy5wYWlyQ291bnQoKTtcbiAgICBjb25zdCBwZXJmZWN0aXNoID0gYXR0ZW1wdHMgPD0gcGFpcnMgKyBNYXRoLmNlaWwocGFpcnMgKiAwLjM1KTtcbiAgICBjb25zdCBzb2xpZCA9IGF0dGVtcHRzIDw9IHBhaXJzICogMjtcbiAgICBjb25zdCBmYXN0ID0gIXRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyB8fCBzZWNvbmRzIDw9IE1hdGgubWF4KDMwLCBwYWlycyAqIDgpO1xuICAgIGlmIChwZXJmZWN0aXNoICYmIGZhc3QgJiYgYmVzdFN0cmVhayA+PSBNYXRoLmNlaWwocGFpcnMgKiAwLjQ1KSkgcmV0dXJuICdnb2xkJztcbiAgICBpZiAoc29saWQgJiYgYmVzdFN0cmVhayA+PSBNYXRoLmNlaWwocGFpcnMgKiAwLjI1KSkgcmV0dXJuICdzaWx2ZXInO1xuICAgIGlmIChzb2xpZCkgcmV0dXJuICdicm9uemUnO1xuICAgIHJldHVybiAnc3BhcmsnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1lZGFsSWNvbihtZWRhbDogTWVtb3J5TWVkYWwpOiBzdHJpbmcge1xuICAgIGlmIChtZWRhbCA9PT0gJ2dvbGQnKSByZXR1cm4gJ/CfpYcnO1xuICAgIGlmIChtZWRhbCA9PT0gJ3NpbHZlcicpIHJldHVybiAn8J+liCc7XG4gICAgaWYgKG1lZGFsID09PSAnYnJvbnplJykgcmV0dXJuICfwn6WJJztcbiAgICByZXR1cm4gJ+KcqCc7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFNlY29uZHMoc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBtaW4gPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgY29uc3Qgc2VjID0gc2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHttaW59OiR7U3RyaW5nKHNlYykucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9XG59XG4iXX0=