@sbb-esta/lyne-elements 1.14.0 → 1.15.0

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 (167) hide show
  1. package/autocomplete/autocomplete.d.ts +1 -1
  2. package/autocomplete/autocomplete.d.ts.map +1 -1
  3. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +1 -1
  4. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  5. package/autocomplete-grid/autocomplete-grid.js +6 -6
  6. package/autocomplete.js +20 -19
  7. package/calendar/calendar.d.ts +1 -1
  8. package/calendar/calendar.d.ts.map +1 -1
  9. package/calendar.js +175 -178
  10. package/checkbox/checkbox-panel/checkbox-panel.d.ts +1 -1
  11. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  12. package/checkbox/checkbox-panel.js +5 -5
  13. package/checkbox/common.js +1 -1
  14. package/clock/clock.d.ts +1 -1
  15. package/clock/clock.d.ts.map +1 -1
  16. package/clock.js +2 -2
  17. package/container/sticky-bar/sticky-bar.d.ts +29 -2
  18. package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  19. package/container/sticky-bar.js +69 -31
  20. package/core/controllers/media-matchers-controller.d.ts +32 -0
  21. package/core/controllers/media-matchers-controller.d.ts.map +1 -0
  22. package/core/controllers.d.ts +1 -0
  23. package/core/controllers.d.ts.map +1 -1
  24. package/core/controllers.js +75 -33
  25. package/core/dom/breakpoint.d.ts +2 -1
  26. package/core/dom/breakpoint.d.ts.map +1 -1
  27. package/core/dom.js +7 -7
  28. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  29. package/core/mixins.js +8 -1
  30. package/core/styles/core/mediaqueries.scss +1 -2
  31. package/core/styles/mixins/buttons.scss +5 -5
  32. package/core/testing/event-spy.d.ts +6 -4
  33. package/core/testing/event-spy.d.ts.map +1 -1
  34. package/core/testing.js +82 -55
  35. package/custom-elements.json +650 -74
  36. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  37. package/development/autocomplete/autocomplete.d.ts +1 -1
  38. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  39. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +1 -1
  40. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  41. package/development/autocomplete-grid/autocomplete-grid.js +4 -3
  42. package/development/autocomplete.js +4 -3
  43. package/development/calendar/calendar.d.ts +1 -1
  44. package/development/calendar/calendar.d.ts.map +1 -1
  45. package/development/calendar.js +40 -44
  46. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +1 -1
  47. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  48. package/development/checkbox/checkbox-panel.js +2 -2
  49. package/development/checkbox/common.js +2 -2
  50. package/development/clock/clock.d.ts +1 -1
  51. package/development/clock/clock.d.ts.map +1 -1
  52. package/development/clock.js +3 -3
  53. package/development/container/sticky-bar/sticky-bar.d.ts +29 -2
  54. package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  55. package/development/container/sticky-bar.js +149 -36
  56. package/development/core/controllers/media-matchers-controller.d.ts +32 -0
  57. package/development/core/controllers/media-matchers-controller.d.ts.map +1 -0
  58. package/development/core/controllers.d.ts +1 -0
  59. package/development/core/controllers.d.ts.map +1 -1
  60. package/development/core/controllers.js +65 -1
  61. package/development/core/dom/breakpoint.d.ts +2 -1
  62. package/development/core/dom/breakpoint.d.ts.map +1 -1
  63. package/development/core/dom.js +2 -2
  64. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  65. package/development/core/mixins.js +9 -2
  66. package/development/core/testing/event-spy.d.ts +6 -4
  67. package/development/core/testing/event-spy.d.ts.map +1 -1
  68. package/development/core/testing.js +35 -1
  69. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  70. package/development/datepicker/datepicker.js +1 -1
  71. package/development/dialog/dialog.js +2 -2
  72. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +3 -1
  73. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  74. package/development/expansion-panel/expansion-panel-header.js +8 -4
  75. package/development/file-selector/file-selector.d.ts +5 -0
  76. package/development/file-selector/file-selector.d.ts.map +1 -1
  77. package/development/file-selector.js +8 -1
  78. package/development/flip-card/flip-card/flip-card.d.ts +4 -0
  79. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
  80. package/development/flip-card/flip-card-details.js +4 -6
  81. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
  82. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
  83. package/development/flip-card/flip-card-summary.js +9 -10
  84. package/development/flip-card/flip-card.js +26 -2
  85. package/development/form-field/form-field.js +5 -3
  86. package/development/icon/icon.d.ts +1 -1
  87. package/development/icon.js +1 -1
  88. package/development/image/image.d.ts.map +1 -1
  89. package/development/image.js +3 -19
  90. package/development/map-container.js +3 -2
  91. package/development/menu/menu/menu.d.ts +1 -0
  92. package/development/menu/menu/menu.d.ts.map +1 -1
  93. package/development/menu/menu.js +15 -11
  94. package/development/navigation/navigation-section.js +4 -14
  95. package/development/navigation/navigation.js +2 -7
  96. package/development/notification.js +3 -2
  97. package/development/paginator/paginator/paginator.d.ts +1 -5
  98. package/development/paginator/paginator/paginator.d.ts.map +1 -1
  99. package/development/paginator/paginator.js +19 -27
  100. package/development/popover/popover/popover.d.ts.map +1 -1
  101. package/development/popover/popover.js +9 -16
  102. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +1 -1
  103. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  104. package/development/radio-button/radio-button-panel.js +2 -2
  105. package/development/sbb-tokens-BdGhUJjM.js +33 -0
  106. package/development/select/select.d.ts +6 -5
  107. package/development/select/select.d.ts.map +1 -1
  108. package/development/select.js +23 -14
  109. package/development/slider/slider.d.ts +5 -0
  110. package/development/slider/slider.d.ts.map +1 -1
  111. package/development/slider.js +8 -1
  112. package/development/table/table-wrapper/table-wrapper.d.ts +1 -1
  113. package/development/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  114. package/development/table/table-wrapper.js +1 -1
  115. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +2 -1
  116. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  117. package/development/timetable-occupancy-icon.js +11 -9
  118. package/development/toggle-check/toggle-check.d.ts +1 -1
  119. package/development/toggle-check/toggle-check.d.ts.map +1 -1
  120. package/development/toggle-check.js +2 -2
  121. package/dialog/dialog.js +1 -1
  122. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +3 -1
  123. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  124. package/expansion-panel/expansion-panel-header.js +26 -24
  125. package/file-selector/file-selector.d.ts +5 -0
  126. package/file-selector/file-selector.d.ts.map +1 -1
  127. package/file-selector.js +7 -0
  128. package/flip-card/flip-card/flip-card.d.ts +4 -0
  129. package/flip-card/flip-card/flip-card.d.ts.map +1 -1
  130. package/flip-card/flip-card-details.js +6 -6
  131. package/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
  132. package/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
  133. package/flip-card/flip-card-summary.js +8 -8
  134. package/flip-card/flip-card.js +56 -42
  135. package/icon/icon.d.ts +1 -1
  136. package/image/image.d.ts.map +1 -1
  137. package/image.js +46 -45
  138. package/map-container.js +7 -7
  139. package/menu/menu/menu.d.ts +1 -0
  140. package/menu/menu/menu.d.ts.map +1 -1
  141. package/menu/menu.js +45 -41
  142. package/navigation/navigation-section.js +7 -7
  143. package/navigation/navigation.js +8 -8
  144. package/package.json +2 -2
  145. package/paginator/paginator/paginator.d.ts +1 -5
  146. package/paginator/paginator/paginator.d.ts.map +1 -1
  147. package/paginator/paginator.js +50 -52
  148. package/popover/popover/popover.d.ts.map +1 -1
  149. package/popover/popover.js +42 -46
  150. package/radio-button/radio-button-panel/radio-button-panel.d.ts +1 -1
  151. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  152. package/radio-button/radio-button-panel.js +7 -7
  153. package/sbb-tokens-Dx20OtVg.js +18 -0
  154. package/select/select.d.ts +6 -5
  155. package/select/select.d.ts.map +1 -1
  156. package/select.js +55 -53
  157. package/slider/slider.d.ts +5 -0
  158. package/slider/slider.d.ts.map +1 -1
  159. package/slider.js +12 -5
  160. package/table/table-wrapper/table-wrapper.d.ts +1 -1
  161. package/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  162. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +2 -1
  163. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  164. package/timetable-occupancy-icon.js +45 -44
  165. package/toggle-check/toggle-check.d.ts +1 -1
  166. package/toggle-check/toggle-check.d.ts.map +1 -1
  167. package/toggle-check.js +1 -1
@@ -405,4 +405,4 @@ export {
405
405
  isValid,
406
406
  validateContent
407
407
  };
408
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ljb24vaWNvbi12YWxpZGF0ZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tcmVxdWVzdC50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tYmFzZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24udHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaWNvbi9pY29uLW5hbWUtbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNTdHIgPSAodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xuXG4vKipcbiAqIFNhbml0aXplcyB0aGUgU1ZHIGVsZW1lbnQgYW5kIGFsbCBpdHMgY2hpbGQgbm9kZXMuXG4gKiBEb2VzIG5vdCBhbGxvdyBgPHNjcmlwdD5gIGVsZW1lbnRzLCBvciBhbnkgYXR0cmlidXRlcyB0aGF0IHN0YXJ0IHdpdGggYG9uYCwgc3VjaCBhcyBgb25jbGlja2AuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkID0gKGVsbTogSFRNTEVsZW1lbnQpOiBib29sZWFuID0+IHtcbiAgaWYgKGVsbS5ub2RlVHlwZSA9PT0gMSkge1xuICAgIC8vIGlzIGFuIEVsZW1lbnQgbm9kZSBsaWtlIDxkaXY+LCA8cD4gb3IgPHN2Zz5cbiAgICBpZiAoZWxtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzY3JpcHQnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZG8gbm90IGFsbG93IGF0dHJpYnV0ZXMgc3RhcnRpbmcgd2l0aCBgb25gXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbG0uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdmFsID0gZWxtLmF0dHJpYnV0ZXNbaV0ubmFtZTtcbiAgICAgIGlmIChpc1N0cih2YWwpICYmIHZhbC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ29uJykgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxtLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNWYWxpZChlbG0uY2hpbGROb2Rlc1tpXSBhcyBhbnkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgU1ZHIGNvbnRlbnQgYnkgY2hlY2tpbmcgdGhhdCBpdCBoYXMgb25seSBvbmUgcm9vdCBlbGVtZW50IGA8c3ZnPmAsXG4gKiBhZGRpbmcgdGhlIGBjb2xvci1pbW11dGFibGVgIGNsYXNzIGlmIHRoZSBgY29sb3JJbW11dGFibGVgIG9wdGlvbiBpcyBzZXQgdG8gYHRydWVgLFxuICogYW5kIHNhbml0aXppbmcgdGhlIHByb3ZpZGVkIGNvbnRlbnQgYXMgbG9uZyBhcyB0aGUgYHNhbml0aXplYCBwcm9wZXJ0eSBpcyBub3QgZXhwbGljaXRseSBzZXQgdG8gYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlQ29udGVudCA9IChcbiAgc3ZnQ29udGVudDogc3RyaW5nLFxuICBzYW5pdGl6ZSA9IHRydWUsXG4gIGNvbG9ySW1tdXRhYmxlID0gZmFsc2UsXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlubmVySFRNTCA9IHN2Z0NvbnRlbnQ7XG5cbiAgZm9yIChsZXQgaSA9IGRpdi5jaGlsZE5vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGRpdi5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdzdmcnKSB7XG4gICAgICBkaXYucmVtb3ZlQ2hpbGQoZGl2LmNoaWxkTm9kZXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3Qgb25seSBoYXZlIDEgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHN2Z0VsbSA9IGRpdi5maXJzdEVsZW1lbnRDaGlsZDtcblxuICBpZiAoc3ZnRWxtICYmIHN2Z0VsbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc3ZnJykge1xuICAgIGlmIChjb2xvckltbXV0YWJsZSAmJiAhc3ZnRWxtLmNsYXNzTGlzdC5jb250YWlucygnY29sb3ItaW1tdXRhYmxlJykpIHtcbiAgICAgIHN2Z0VsbS5jbGFzc0xpc3QuYWRkKCdjb2xvci1pbW11dGFibGUnKTtcbiAgICB9XG5cbiAgICAvLyBkbyBub3Qgc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKHNhbml0aXplID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gICAgfVxuXG4gICAgLy8gc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKGlzVmFsaWQoc3ZnRWxtIGFzIGFueSkpIHtcbiAgICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59O1xuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkljb25Db25maWcgfSBmcm9tICcuLi9jb3JlL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9jb25maWcuanMnO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZUNvbnRlbnQgfSBmcm9tICcuL2ljb24tdmFsaWRhdGUuanMnO1xuXG5jb25zdCBpY29uQ2RuID0gJ2h0dHBzOi8vaWNvbnMuYXBwLnNiYi5jaC8nO1xuXG5jb25zdCBpY29uTmFtZXNwYWNlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KClcbiAgLnNldCgnZGVmYXVsdCcsIGAke2ljb25DZG59aWNvbnMvYClcbiAgLnNldCgncGljdG8nLCBgJHtpY29uQ2RufXBpY3RvL2ApO1xuY29uc3QgcmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxhbnk+PigpO1xuXG4vKiogRmV0Y2hlcyBpY29uIHN2ZyBjb250ZW50IGZyb20gcHJvdmlkZXJzIGFuZCBhc3NlcnRzIG9ubHkgb25lIHJlcXVlc3QgcGVyIGljb24gaXMgbWFkZS4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdmdDb250ZW50ID0gKFxuICBuYW1lc3BhY2U6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICBzYW5pdGl6ZTogYm9vbGVhbixcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGNvbmZpZzogU2JiSWNvbkNvbmZpZyA9IHJlYWRDb25maWcoKS5pY29uID8/IHt9O1xuXG4gIGNvbnN0IHJlc29sdmVkTmFtZXNwYWNlID0gY29uZmlnLm5hbWVzcGFjZXM/LmdldChuYW1lc3BhY2UpID8/IGljb25OYW1lc3BhY2VzLmdldChuYW1lc3BhY2UpO1xuICBpZiAocmVzb2x2ZWROYW1lc3BhY2UgPT0gbnVsbCkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYFVuYWJsZSB0byBmaW5kIHRoZSBuYW1lc3BhY2UgXCIke25hbWVzcGFjZX1cIi4gUGxlYXNlIHJlZ2lzdGVyIHlvdXIgY3VzdG9tIG5hbWVzcGFjZS5gLFxuICAgICk7XG4gIH1cbiAgY29uc3QgdXJsID0gYCR7cmVzb2x2ZWROYW1lc3BhY2V9JHtuYW1lfS5zdmdgO1xuXG4gIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHJlcXVlc3QgZm9yIHRoaXMgdXJsXG4gIGxldCByZXEgPSByZXF1ZXN0cy5nZXQodXJsKTtcblxuICBpZiAoIXJlcSkge1xuICAgIC8vIFdlIGNhbm5vdCBzdXBwb3J0IHNlcnZlciBzaWRlIHJlbmRlcmVkIGljb25zICh5ZXQpLCBhcyB0aGUgdmFsaWRhdGlvblxuICAgIC8vIGlzIGRvbmUgdmlhIERPTSwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgU1NSLlxuICAgIGlmICh0eXBlb2YgZmV0Y2ggIT09ICd1bmRlZmluZWQnICYmICFpc1NlcnZlcikge1xuICAgICAgY29uc3QgaW50ZXJjZXB0b3IgPSBjb25maWcuaW50ZXJjZXB0b3IgPz8gKChpKSA9PiBpLnJlcXVlc3QoKSk7XG5cbiAgICAgIHJlcSA9IGludGVyY2VwdG9yKHtcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBuYW1lLFxuICAgICAgICB1cmwsXG4gICAgICAgIHJlcXVlc3Q6ICgpID0+XG4gICAgICAgICAgZmV0Y2godXJsKVxuICAgICAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGljb24gJyArIG5hbWVzcGFjZSArICc6JyArIG5hbWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbnRlbnQoYXdhaXQgcmVzcG9uc2UudGV4dCgpLCBzYW5pdGl6ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgLy8gQ2FjaGUgZm9yIHRoZSBzYW1lIHJlcXVlc3RzXG4gICAgICByZXF1ZXN0cy5zZXQodXJsLCByZXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNvbHZlIHByb21pc2UgZm9yIHNzciBzY2VuYXJpb3NcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXE7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RpdmVSZXN1bHQgfSBmcm9tICdsaXQvZGlyZWN0aXZlLmpzJztcbmltcG9ydCB0eXBlIHsgVW5zYWZlSFRNTERpcmVjdGl2ZSB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3Vuc2FmZS1odG1sLmpzJztcbmltcG9ydCB7IHVuc2FmZUhUTUwgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy91bnNhZmUtaHRtbC5qcyc7XG5pbXBvcnQgeyB1bnRpbCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3VudGlsLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlLCBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGdldFN2Z0NvbnRlbnQgfSBmcm9tICcuL2ljb24tcmVxdWVzdC5qcyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9pY29uLnNjc3M/bGl0JmlubGluZSc7XG5cbmNvbnN0IGRlZmF1bHROYW1lc3BhY2UgPSAnZGVmYXVsdCc7XG5cbi8qKlxuICogQGNzc3Byb3AgWy0tc2JiLWljb24tc3ZnLXdpZHRoPWF1dG9dIC0gQ2FuIGJlIHVzZWQgdG8gc2V0IGEgY3VzdG9tIHdpZHRoLlxuICogQGNzc3Byb3AgWy0tc2JiLWljb24tc3ZnLWhlaWdodD1hdXRvXSAtIENhbiBiZSB1c2VkIHRvIHNldCBhIGN1c3RvbSBoZWlnaHQuXG4gKi9cbmV4cG9ydFxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgJ2RhdGEtbmFtZXNwYWNlJzogZGVmYXVsdE5hbWVzcGFjZSxcbiAgJ2RhdGEtZW1wdHknOiAnJyxcbn0pXG5hYnN0cmFjdCBjbGFzcyBTYmJJY29uQmFzZSBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9zdmdOYW1lc3BhY2UgPSBkZWZhdWx0TmFtZXNwYWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiBzdmcgY29udGVudCByZW5kZXJlZCBvbiB0aGUgcGFnZTogPHN2Zz4uLi48L3N2Zz4uXG4gICAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9zdmdJY29uOiBQcm9taXNlPERpcmVjdGl2ZVJlc3VsdDx0eXBlb2YgVW5zYWZlSFRNTERpcmVjdGl2ZT4+IHwgbnVsbCA9XG4gICAgbnVsbDtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCBTVkcgY29udGVudCB0aGF0IGlzIEhUVFAgZmV0Y2hlZCB3aWxsIG5vdCBiZSBjaGVja2VkXG4gICAqIGlmIHRoZSByZXNwb25zZSBTVkcgY29udGVudCBoYXMgYW55IGA8c2NyaXB0PmAgZWxlbWVudHMsIG9yIGFueSBhdHRyaWJ1dGVzXG4gICAqIHRoYXQgc3RhcnQgd2l0aCBgb25gLCBzdWNoIGFzIGBvbmNsaWNrYC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICduby1zYW5pdGl6ZScsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIG5vU2FuaXRpemU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgYXN5bmMgbG9hZFN2Z0ljb24oaWNvbk5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghaWNvbk5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBbbmFtZXNwYWNlLCBuYW1lXSA9IHRoaXMuX3NwbGl0SWNvbk5hbWUoaWNvbk5hbWUpO1xuICAgIHRoaXMuX3N2Z05hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS1uYW1lc3BhY2UnLCB0aGlzLl9zdmdOYW1lc3BhY2UpO1xuXG4gICAgY29uc3Qgc3ZnSWNvbiA9IHRoaXMuZmV0Y2hTdmdJY29uKHRoaXMuX3N2Z05hbWVzcGFjZSwgbmFtZSk7XG4gICAgdGhpcy5fc3ZnSWNvbiA9IHN2Z0ljb24udGhlbigodikgPT4gdW5zYWZlSFRNTCh2KSk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWVtcHR5JywgIShhd2FpdCBzdmdJY29uKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1lbXB0eScsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBmZXRjaFN2Z0ljb24obmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IGdldFN2Z0NvbnRlbnQobmFtZXNwYWNlLCBuYW1lLCAhdGhpcy5ub1Nhbml0aXplKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NwbGl0SWNvbk5hbWUoaWNvbk5hbWU6IHN0cmluZyk6IFtzdHJpbmcsIHN0cmluZ10ge1xuICAgIGlmICghaWNvbk5hbWUpIHtcbiAgICAgIHJldHVybiBbJycsICcnXTtcbiAgICB9XG4gICAgY29uc3QgcGFydHMgPSBpY29uTmFtZS5zcGxpdCgnOicpO1xuICAgIHN3aXRjaCAocGFydHMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIC8vIFVzZSBkZWZhdWx0IG5hbWVzcGFjZSBpZiBlbXB0eS5cbiAgICAgICAgcmV0dXJuIFtkZWZhdWx0TmFtZXNwYWNlLCBwYXJ0c1swXV07XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBwYXJ0cyBhcyBbc3RyaW5nLCBzdHJpbmddO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaWNvbiBuYW1lOiBcIiR7aWNvbk5hbWV9XCJgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgncm9sZScsIHRoaXMuZ2V0QXR0cmlidXRlKCdyb2xlJykgPz8gJ2ltZycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItaWNvbi1pbm5lclwiXG4gICAgICA+JHt1bnRpbChcbiAgICAgICAgdGhpcy5fc3ZnSWNvbixcbiAgICAgICAgLy8gVG8gcmVzZXJ2ZSBzcGFjZSwgd2UgbmVlZCBhbiBlbXB0eSBzdmcgdG8gYXBwbHkgZGltZW5zaW9uIHRvLlxuICAgICAgICBodG1sYDxzdmcgd2lkdGg9XCIwXCIgaGVpZ2h0PVwiMFwiPjwvc3ZnPmAsXG4gICAgICApfTwvc3BhblxuICAgID5gO1xuICB9XG59XG4iLCJpbXBvcnQgeyBodG1sLCB0eXBlIFByb3BlcnR5VmFsdWVzLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlLCBvbWl0RW1wdHlDb252ZXJ0ZXIgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJJY29uQmFzZSB9IGZyb20gJy4vaWNvbi1iYXNlLmpzJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpY29uIGxvYWRlZCBmcm9tIGEgcmVnaXN0ZXJlZCBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1pY29uJylcbmNsYXNzIFNiYkljb25FbGVtZW50IGV4dGVuZHMgU2JiSWNvbkJhc2Uge1xuICAvKipcbiAgICogV2UgbmVlZCB0byBhZGRpdGlvbmFsbHkgb2JzZXJ2ZSB0aGUgc3ZnaWNvbiBhdHRyaWJ1dGVcbiAgICogZm9yIHNiYi1hbmd1bGFyIGNvbXBhdGliaWxpdHkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gc3VwZXIub2JzZXJ2ZWRBdHRyaWJ1dGVzLmNvbmNhdCgnc3ZnaWNvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlZCBuYW1lIGNvbnNpc3Rpbmcgb2YgdGhlIG5hbWVzcGFjZSBhbmQgdGhlIG5hbWUgb2YgdGhlIGljb24uXG4gICAqIElmIHRoZSBuYW1lc3BhY2UgaXMgbWlzc2luZywgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIFwic2JiXCIgd2lsbCBiZSB1c2VkLlxuICAgKiBFLmcuIGBuYW1lYCAod2lsbCB1c2UgXCJzYmJcIiBhcyBuYW1lc3BhY2UpIG9yIGBuYW1lc3BhY2U6bmFtZWAuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgY29udmVydGVyOiBvbWl0RW1wdHlDb252ZXJ0ZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIG5hbWU6IHN0cmluZyA9ICcnO1xuXG4gIHByaXZhdGUgX2RlZmF1bHRBcmlhTGFiZWwgPSAnJztcblxuICAvKipcbiAgICogVGhlIHNiYi1hbmd1bGFyIGxpYnJhcnkgaGFzIGEgc2JiLWljb24gY29tcG9uZW50IGFzIHdlbGwuIEluIG9yZGVyIHRvIHByb3ZpZGVcbiAgICogY29tcGF0aWJpbGl0eSB3aXRoIGl0IChhcyBzb21lIGljb25zIGFyZSB1c2VkIGludGVybmFsbHkgaW5zaWRlIHRoZSBvdGhlciBzYmItYW5ndWxhclxuICAgKiBjb21wb25lbnRzKSB3ZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGF0dHJpYnV0ZSBzdmdpY29uIGlzIHVzZWQuXG4gICAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9zYmJBbmd1bGFyQ29tcGF0aWJpbGl0eSA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBmZXRjaFN2Z0ljb24obmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8gSWYgdGhlIGljb24gaXMgY2hhbmdpbmcsIGFuZCB3ZSB3ZXJlIHVzaW5nIHRoZSBkZWZhdWx0QXJpYUxhYmVsLCByZXNldCBpdFxuICAgIGlmICh0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpID09PSB0aGlzLl9kZWZhdWx0QXJpYUxhYmVsKSB7XG4gICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpO1xuICAgIH1cblxuICAgIHRoaXMuX2RlZmF1bHRBcmlhTGFiZWwgPSBgSWNvbiAke25hbWUucmVwbGFjZSgvLS9nLCAnICcpfWA7XG5cbiAgICAvLyBnZW5lcmF0ZSBhIGRlZmF1bHQgbGFiZWwgaW4gY2FzZSB1c2VyIGRvZXMgbm90IHByb3ZpZGUgdGhlaXIgb3duXG4gICAgLy8gYW5kIGFyaWEtaGlkZGVuIGlzIHNldCB0byBcImZhbHNlXCJcbiAgICBpZiAodGhpcy5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykgPT09ICdmYWxzZScgJiYgIXRoaXMuaGFzQXR0cmlidXRlKCdhcmlhLWxhYmVsJykgJiYgbmFtZSkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLl9kZWZhdWx0QXJpYUxhYmVsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuZmV0Y2hTdmdJY29uKG5hbWVzcGFjZSwgbmFtZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25hbWUnKSAmJiB0aGlzLm5hbWUpIHtcbiAgICAgIHRoaXMubG9hZFN2Z0ljb24odGhpcy5uYW1lKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBfb2xkOiBzdHJpbmcgfCBudWxsLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuICApOiB2b2lkIHtcbiAgICBpZiAobmFtZSA9PT0gJ3N2Z2ljb24nKSB7XG4gICAgICB0aGlzLl9zYmJBbmd1bGFyQ29tcGF0aWJpbGl0eSA9ICEhdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhuYW1lLCBfb2xkLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLmhhc0F0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gdGhpcy5fc2JiQW5ndWxhckNvbXBhdGliaWxpdHkgPyBodG1sYDxzbG90Pjwvc2xvdD5gIDogc3VwZXIucmVuZGVyKCk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1pY29uJzogU2JiSWNvbkVsZW1lbnQ7XG4gIH1cbn1cbiIsImltcG9ydCB7IGh0bWwsIHR5cGUgTGl0RWxlbWVudCwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlLCBvbWl0RW1wdHlDb252ZXJ0ZXIgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vY29yZS9taXhpbnMuanMnO1xuXG5pbXBvcnQgJy4vaWNvbi5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkljb25OYW1lTWl4aW5UeXBlIHtcbiAgcHVibGljIGFjY2Vzc29yIGljb25OYW1lOiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZW5kZXJJY29uU2xvdChjbGFzc25hbWU/OiBzdHJpbmcpOiBUZW1wbGF0ZVJlc3VsdDtcbn1cblxuLyoqXG4gKiBFbmhhbmNlIHlvdXIgY29tcG9uZW50IHdpdGggYW4gaWNvbk5hbWUgcHJvcGVydHkgYW5kIHByb3ZpZGVzIGEgdGVtcGxhdGUgZm9yIHRoZSBpY29uIHNsb3QuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJJY29uTmFtZU1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiSWNvbk5hbWVNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkljb25OYW1lRWxlbWVudCBleHRlbmRzIHN1cGVyQ2xhc3MgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkljb25OYW1lTWl4aW5UeXBlPiB7XG4gICAgLyoqXG4gICAgICogVGhlIGljb24gbmFtZSB3ZSB3YW50IHRvIHVzZSwgY2hvb3NlIGZyb20gdGhlIHNtYWxsIGljb24gdmFyaWFudHNcbiAgICAgKiBmcm9tIHRoZSB1aS1pY29ucyBjYXRlZ29yeSBmcm9tIGhlcmVcbiAgICAgKiBodHRwczovL2ljb25zLmFwcC5zYmIuY2guXG4gICAgICovXG4gICAgQGZvcmNlVHlwZSgpXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaWNvbi1uYW1lJywgcmVmbGVjdDogdHJ1ZSwgY29udmVydGVyOiBvbWl0RW1wdHlDb252ZXJ0ZXIgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgaWNvbk5hbWU6IHN0cmluZyA9ICcnO1xuXG4gICAgcHJvdGVjdGVkIHJlbmRlckljb25TbG90KGNsYXNzbmFtZT86IHN0cmluZyk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2xvdCBuYW1lPVwiaWNvblwiPlxuICAgICAgICAgICR7dGhpcy5pY29uTmFtZVxuICAgICAgICAgICAgPyBodG1sYDxzYmItaWNvbiBuYW1lPSR7dGhpcy5pY29uTmFtZX0gY2xhc3M9JHtjbGFzc25hbWUgfHwgbm90aGluZ30+PC9zYmItaWNvbj5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDwvc2xvdD5cbiAgICAgIGA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFNiYkljb25OYW1lRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiSWNvbk5hbWVNaXhpblR5cGU+ICYgVDtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxNQUFNLFFBQVEsQ0FBQyxRQUE0QixPQUFPLFFBQVE7QUFNN0MsTUFBQSxVQUFVLENBQUMsUUFBNkI7QUFDL0MsTUFBQSxJQUFJLGFBQWEsR0FBRztBQUV0QixRQUFJLElBQUksU0FBUyxZQUFhLE1BQUssVUFBVTtB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
408
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ljb24vaWNvbi12YWxpZGF0ZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tcmVxdWVzdC50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tYmFzZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24udHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaWNvbi9pY29uLW5hbWUtbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNTdHIgPSAodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xuXG4vKipcbiAqIFNhbml0aXplcyB0aGUgU1ZHIGVsZW1lbnQgYW5kIGFsbCBpdHMgY2hpbGQgbm9kZXMuXG4gKiBEb2VzIG5vdCBhbGxvdyBgPHNjcmlwdD5gIGVsZW1lbnRzLCBvciBhbnkgYXR0cmlidXRlcyB0aGF0IHN0YXJ0IHdpdGggYG9uYCwgc3VjaCBhcyBgb25jbGlja2AuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkID0gKGVsbTogSFRNTEVsZW1lbnQpOiBib29sZWFuID0+IHtcbiAgaWYgKGVsbS5ub2RlVHlwZSA9PT0gMSkge1xuICAgIC8vIGlzIGFuIEVsZW1lbnQgbm9kZSBsaWtlIDxkaXY+LCA8cD4gb3IgPHN2Zz5cbiAgICBpZiAoZWxtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzY3JpcHQnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZG8gbm90IGFsbG93IGF0dHJpYnV0ZXMgc3RhcnRpbmcgd2l0aCBgb25gXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbG0uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdmFsID0gZWxtLmF0dHJpYnV0ZXNbaV0ubmFtZTtcbiAgICAgIGlmIChpc1N0cih2YWwpICYmIHZhbC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ29uJykgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxtLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNWYWxpZChlbG0uY2hpbGROb2Rlc1tpXSBhcyBhbnkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgU1ZHIGNvbnRlbnQgYnkgY2hlY2tpbmcgdGhhdCBpdCBoYXMgb25seSBvbmUgcm9vdCBlbGVtZW50IGA8c3ZnPmAsXG4gKiBhZGRpbmcgdGhlIGBjb2xvci1pbW11dGFibGVgIGNsYXNzIGlmIHRoZSBgY29sb3JJbW11dGFibGVgIG9wdGlvbiBpcyBzZXQgdG8gYHRydWVgLFxuICogYW5kIHNhbml0aXppbmcgdGhlIHByb3ZpZGVkIGNvbnRlbnQgYXMgbG9uZyBhcyB0aGUgYHNhbml0aXplYCBwcm9wZXJ0eSBpcyBub3QgZXhwbGljaXRseSBzZXQgdG8gYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlQ29udGVudCA9IChcbiAgc3ZnQ29udGVudDogc3RyaW5nLFxuICBzYW5pdGl6ZSA9IHRydWUsXG4gIGNvbG9ySW1tdXRhYmxlID0gZmFsc2UsXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlubmVySFRNTCA9IHN2Z0NvbnRlbnQ7XG5cbiAgZm9yIChsZXQgaSA9IGRpdi5jaGlsZE5vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGRpdi5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdzdmcnKSB7XG4gICAgICBkaXYucmVtb3ZlQ2hpbGQoZGl2LmNoaWxkTm9kZXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3Qgb25seSBoYXZlIDEgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHN2Z0VsbSA9IGRpdi5maXJzdEVsZW1lbnRDaGlsZDtcblxuICBpZiAoc3ZnRWxtICYmIHN2Z0VsbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc3ZnJykge1xuICAgIGlmIChjb2xvckltbXV0YWJsZSAmJiAhc3ZnRWxtLmNsYXNzTGlzdC5jb250YWlucygnY29sb3ItaW1tdXRhYmxlJykpIHtcbiAgICAgIHN2Z0VsbS5jbGFzc0xpc3QuYWRkKCdjb2xvci1pbW11dGFibGUnKTtcbiAgICB9XG5cbiAgICAvLyBkbyBub3Qgc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKHNhbml0aXplID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gICAgfVxuXG4gICAgLy8gc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKGlzVmFsaWQoc3ZnRWxtIGFzIGFueSkpIHtcbiAgICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59O1xuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkljb25Db25maWcgfSBmcm9tICcuLi9jb3JlL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9jb25maWcuanMnO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZUNvbnRlbnQgfSBmcm9tICcuL2ljb24tdmFsaWRhdGUuanMnO1xuXG5jb25zdCBpY29uQ2RuID0gJ2h0dHBzOi8vaWNvbnMuYXBwLnNiYi5jaC8nO1xuXG5jb25zdCBpY29uTmFtZXNwYWNlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KClcbiAgLnNldCgnZGVmYXVsdCcsIGAke2ljb25DZG59aWNvbnMvYClcbiAgLnNldCgncGljdG8nLCBgJHtpY29uQ2RufXBpY3RvL2ApO1xuY29uc3QgcmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxhbnk+PigpO1xuXG4vKiogRmV0Y2hlcyBpY29uIHN2ZyBjb250ZW50IGZyb20gcHJvdmlkZXJzIGFuZCBhc3NlcnRzIG9ubHkgb25lIHJlcXVlc3QgcGVyIGljb24gaXMgbWFkZS4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdmdDb250ZW50ID0gKFxuICBuYW1lc3BhY2U6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICBzYW5pdGl6ZTogYm9vbGVhbixcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGNvbmZpZzogU2JiSWNvbkNvbmZpZyA9IHJlYWRDb25maWcoKS5pY29uID8/IHt9O1xuXG4gIGNvbnN0IHJlc29sdmVkTmFtZXNwYWNlID0gY29uZmlnLm5hbWVzcGFjZXM/LmdldChuYW1lc3BhY2UpID8/IGljb25OYW1lc3BhY2VzLmdldChuYW1lc3BhY2UpO1xuICBpZiAocmVzb2x2ZWROYW1lc3BhY2UgPT0gbnVsbCkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYFVuYWJsZSB0byBmaW5kIHRoZSBuYW1lc3BhY2UgXCIke25hbWVzcGFjZX1cIi4gUGxlYXNlIHJlZ2lzdGVyIHlvdXIgY3VzdG9tIG5hbWVzcGFjZS5gLFxuICAgICk7XG4gIH1cbiAgY29uc3QgdXJsID0gYCR7cmVzb2x2ZWROYW1lc3BhY2V9JHtuYW1lfS5zdmdgO1xuXG4gIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHJlcXVlc3QgZm9yIHRoaXMgdXJsXG4gIGxldCByZXEgPSByZXF1ZXN0cy5nZXQodXJsKTtcblxuICBpZiAoIXJlcSkge1xuICAgIC8vIFdlIGNhbm5vdCBzdXBwb3J0IHNlcnZlciBzaWRlIHJlbmRlcmVkIGljb25zICh5ZXQpLCBhcyB0aGUgdmFsaWRhdGlvblxuICAgIC8vIGlzIGRvbmUgdmlhIERPTSwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgU1NSLlxuICAgIGlmICh0eXBlb2YgZmV0Y2ggIT09ICd1bmRlZmluZWQnICYmICFpc1NlcnZlcikge1xuICAgICAgY29uc3QgaW50ZXJjZXB0b3IgPSBjb25maWcuaW50ZXJjZXB0b3IgPz8gKChpKSA9PiBpLnJlcXVlc3QoKSk7XG5cbiAgICAgIHJlcSA9IGludGVyY2VwdG9yKHtcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBuYW1lLFxuICAgICAgICB1cmwsXG4gICAgICAgIHJlcXVlc3Q6ICgpID0+XG4gICAgICAgICAgZmV0Y2godXJsKVxuICAgICAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGljb24gJyArIG5hbWVzcGFjZSArICc6JyArIG5hbWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbnRlbnQoYXdhaXQgcmVzcG9uc2UudGV4dCgpLCBzYW5pdGl6ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgLy8gQ2FjaGUgZm9yIHRoZSBzYW1lIHJlcXVlc3RzXG4gICAgICByZXF1ZXN0cy5zZXQodXJsLCByZXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNvbHZlIHByb21pc2UgZm9yIHNzciBzY2VuYXJpb3NcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXE7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RpdmVSZXN1bHQgfSBmcm9tICdsaXQvZGlyZWN0aXZlLmpzJztcbmltcG9ydCB0eXBlIHsgVW5zYWZlSFRNTERpcmVjdGl2ZSB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3Vuc2FmZS1odG1sLmpzJztcbmltcG9ydCB7IHVuc2FmZUhUTUwgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy91bnNhZmUtaHRtbC5qcyc7XG5pbXBvcnQgeyB1bnRpbCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3VudGlsLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlLCBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGdldFN2Z0NvbnRlbnQgfSBmcm9tICcuL2ljb24tcmVxdWVzdC5qcyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9pY29uLnNjc3M/bGl0JmlubGluZSc7XG5cbmNvbnN0IGRlZmF1bHROYW1lc3BhY2UgPSAnZGVmYXVsdCc7XG5cbi8qKlxuICogQGNzc3Byb3AgWy0tc2JiLWljb24tc3ZnLXdpZHRoPWF1dG9dIC0gQ2FuIGJlIHVzZWQgdG8gc2V0IGEgY3VzdG9tIHdpZHRoLlxuICogQGNzc3Byb3AgWy0tc2JiLWljb24tc3ZnLWhlaWdodD1hdXRvXSAtIENhbiBiZSB1c2VkIHRvIHNldCBhIGN1c3RvbSBoZWlnaHQuXG4gKi9cbmV4cG9ydFxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgJ2RhdGEtbmFtZXNwYWNlJzogZGVmYXVsdE5hbWVzcGFjZSxcbiAgJ2RhdGEtZW1wdHknOiAnJyxcbn0pXG5hYnN0cmFjdCBjbGFzcyBTYmJJY29uQmFzZSBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9zdmdOYW1lc3BhY2UgPSBkZWZhdWx0TmFtZXNwYWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiBzdmcgY29udGVudCByZW5kZXJlZCBvbiB0aGUgcGFnZTogPHN2Zz4uLi48L3N2Zz4uXG4gICAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9zdmdJY29uOiBQcm9taXNlPERpcmVjdGl2ZVJlc3VsdDx0eXBlb2YgVW5zYWZlSFRNTERpcmVjdGl2ZT4+IHwgbnVsbCA9XG4gICAgbnVsbDtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCBTVkcgY29udGVudCB0aGF0IGlzIEhUVFAgZmV0Y2hlZCB3aWxsIG5vdCBiZSBjaGVja2VkXG4gICAqIGlmIHRoZSByZXNwb25zZSBTVkcgY29udGVudCBoYXMgYW55IGA8c2NyaXB0PmAgZWxlbWVudHMsIG9yIGFueSBhdHRyaWJ1dGVzXG4gICAqIHRoYXQgc3RhcnQgd2l0aCBgb25gLCBzdWNoIGFzIGBvbmNsaWNrYC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICduby1zYW5pdGl6ZScsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIG5vU2FuaXRpemU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgYXN5bmMgbG9hZFN2Z0ljb24oaWNvbk5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghaWNvbk5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBbbmFtZXNwYWNlLCBuYW1lXSA9IHRoaXMuX3NwbGl0SWNvbk5hbWUoaWNvbk5hbWUpO1xuICAgIHRoaXMuX3N2Z05hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS1uYW1lc3BhY2UnLCB0aGlzLl9zdmdOYW1lc3BhY2UpO1xuXG4gICAgY29uc3Qgc3ZnSWNvbiA9IHRoaXMuZmV0Y2hTdmdJY29uKHRoaXMuX3N2Z05hbWVzcGFjZSwgbmFtZSk7XG4gICAgdGhpcy5fc3ZnSWNvbiA9IHN2Z0ljb24udGhlbigodikgPT4gdW5zYWZlSFRNTCh2KSk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWVtcHR5JywgIShhd2FpdCBzdmdJY29uKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1lbXB0eScsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBmZXRjaFN2Z0ljb24obmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IGdldFN2Z0NvbnRlbnQobmFtZXNwYWNlLCBuYW1lLCAhdGhpcy5ub1Nhbml0aXplKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NwbGl0SWNvbk5hbWUoaWNvbk5hbWU6IHN0cmluZyk6IFtzdHJpbmcsIHN0cmluZ10ge1xuICAgIGlmICghaWNvbk5hbWUpIHtcbiAgICAgIHJldHVybiBbJycsICcnXTtcbiAgICB9XG4gICAgY29uc3QgcGFydHMgPSBpY29uTmFtZS5zcGxpdCgnOicpO1xuICAgIHN3aXRjaCAocGFydHMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIC8vIFVzZSBkZWZhdWx0IG5hbWVzcGFjZSBpZiBlbXB0eS5cbiAgICAgICAgcmV0dXJuIFtkZWZhdWx0TmFtZXNwYWNlLCBwYXJ0c1swXV07XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBwYXJ0cyBhcyBbc3RyaW5nLCBzdHJpbmddO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaWNvbiBuYW1lOiBcIiR7aWNvbk5hbWV9XCJgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgncm9sZScsIHRoaXMuZ2V0QXR0cmlidXRlKCdyb2xlJykgPz8gJ2ltZycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItaWNvbi1pbm5lclwiXG4gICAgICA+JHt1bnRpbChcbiAgICAgICAgdGhpcy5fc3ZnSWNvbixcbiAgICAgICAgLy8gVG8gcmVzZXJ2ZSBzcGFjZSwgd2UgbmVlZCBhbiBlbXB0eSBzdmcgdG8gYXBwbHkgZGltZW5zaW9uIHRvLlxuICAgICAgICBodG1sYDxzdmcgd2lkdGg9XCIwXCIgaGVpZ2h0PVwiMFwiPjwvc3ZnPmAsXG4gICAgICApfTwvc3BhblxuICAgID5gO1xuICB9XG59XG4iLCJpbXBvcnQgeyBodG1sLCB0eXBlIFByb3BlcnR5VmFsdWVzLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlLCBvbWl0RW1wdHlDb252ZXJ0ZXIgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJJY29uQmFzZSB9IGZyb20gJy4vaWNvbi1iYXNlLmpzJztcblxuLyoqXG4gKiBEaXNwbGF5cyBhbiBpY29uIGxvYWRlZCBmcm9tIGEgcmVnaXN0ZXJlZCBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1pY29uJylcbmNsYXNzIFNiYkljb25FbGVtZW50IGV4dGVuZHMgU2JiSWNvbkJhc2Uge1xuICAvKipcbiAgICogV2UgbmVlZCB0byBhZGRpdGlvbmFsbHkgb2JzZXJ2ZSB0aGUgc3ZnaWNvbiBhdHRyaWJ1dGVcbiAgICogZm9yIHNiYi1hbmd1bGFyIGNvbXBhdGliaWxpdHkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gc3VwZXIub2JzZXJ2ZWRBdHRyaWJ1dGVzLmNvbmNhdCgnc3ZnaWNvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlZCBuYW1lIGNvbnNpc3Rpbmcgb2YgdGhlIG5hbWVzcGFjZSBhbmQgdGhlIG5hbWUgb2YgdGhlIGljb24uXG4gICAqIElmIHRoZSBuYW1lc3BhY2UgaXMgbWlzc2luZywgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIFwic2JiXCIgd2lsbCBiZSB1c2VkLlxuICAgKiBFLmcuIGBuYW1lYCAod2lsbCB1c2UgXCJzYmJcIiBhcyBuYW1lc3BhY2UpIG9yIGBuYW1lc3BhY2U6bmFtZWAuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgY29udmVydGVyOiBvbWl0RW1wdHlDb252ZXJ0ZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIG5hbWU6IHN0cmluZyA9ICcnO1xuXG4gIHByaXZhdGUgX2RlZmF1bHRBcmlhTGFiZWwgPSAnJztcblxuICAvKipcbiAgICogVGhlIHNiYi1hbmd1bGFyIGxpYnJhcnkgaGFzIGEgc2JiLWljb24gY29tcG9uZW50IGFzIHdlbGwuIEluIG9yZGVyIHRvIHByb3ZpZGVcbiAgICogY29tcGF0aWJpbGl0eSB3aXRoIGl0IChhcyBzb21lIGljb25zIGFyZSB1c2VkIGludGVybmFsbHkgaW5zaWRlIHRoZSBvdGhlciBzYmItYW5ndWxhclxuICAgKiBjb21wb25lbnRzKSB3ZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGF0dHJpYnV0ZSBzdmdpY29uIGlzIHVzZWQuXG4gICAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9zYmJBbmd1bGFyQ29tcGF0aWJpbGl0eSA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBmZXRjaFN2Z0ljb24obmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8gSWYgdGhlIGljb24gaXMgY2hhbmdpbmcsIGFuZCB3ZSB3ZXJlIHVzaW5nIHRoZSBkZWZhdWx0QXJpYUxhYmVsLCByZXNldCBpdFxuICAgIGlmICh0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpID09PSB0aGlzLl9kZWZhdWx0QXJpYUxhYmVsKSB7XG4gICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpO1xuICAgIH1cblxuICAgIHRoaXMuX2RlZmF1bHRBcmlhTGFiZWwgPSBgSWNvbiAke25hbWUucmVwbGFjZSgvLS9nLCAnICcpfWA7XG5cbiAgICAvLyBnZW5lcmF0ZSBhIGRlZmF1bHQgbGFiZWwgaW4gY2FzZSB1c2VyIGRvZXMgbm90IHByb3ZpZGUgdGhlaXIgb3duXG4gICAgLy8gYW5kIGFyaWEtaGlkZGVuIGlzIHNldCB0byBcImZhbHNlXCJcbiAgICBpZiAodGhpcy5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykgPT09ICdmYWxzZScgJiYgIXRoaXMuaGFzQXR0cmlidXRlKCdhcmlhLWxhYmVsJykgJiYgbmFtZSkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLl9kZWZhdWx0QXJpYUxhYmVsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuZmV0Y2hTdmdJY29uKG5hbWVzcGFjZSwgbmFtZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25hbWUnKSAmJiB0aGlzLm5hbWUpIHtcbiAgICAgIHRoaXMubG9hZFN2Z0ljb24odGhpcy5uYW1lKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBfb2xkOiBzdHJpbmcgfCBudWxsLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuICApOiB2b2lkIHtcbiAgICBpZiAobmFtZSA9PT0gJ3N2Z2ljb24nKSB7XG4gICAgICB0aGlzLl9zYmJBbmd1bGFyQ29tcGF0aWJpbGl0eSA9ICEhdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhuYW1lLCBfb2xkLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLmhhc0F0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gdGhpcy5fc2JiQW5ndWxhckNvbXBhdGliaWxpdHkgPyBodG1sYDxzbG90Pjwvc2xvdD5gIDogc3VwZXIucmVuZGVyKCk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1pY29uJzogU2JiSWNvbkVsZW1lbnQ7XG4gIH1cbn1cbiIsImltcG9ydCB7IGh0bWwsIHR5cGUgTGl0RWxlbWVudCwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlLCBvbWl0RW1wdHlDb252ZXJ0ZXIgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vY29yZS9taXhpbnMuanMnO1xuXG5pbXBvcnQgJy4vaWNvbi5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkljb25OYW1lTWl4aW5UeXBlIHtcbiAgcHVibGljIGFjY2Vzc29yIGljb25OYW1lOiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZW5kZXJJY29uU2xvdChjbGFzc25hbWU/OiBzdHJpbmcpOiBUZW1wbGF0ZVJlc3VsdDtcbn1cblxuLyoqXG4gKiBFbmhhbmNlIHlvdXIgY29tcG9uZW50IHdpdGggYW4gaWNvbk5hbWUgcHJvcGVydHkgYW5kIHByb3ZpZGVzIGEgdGVtcGxhdGUgZm9yIHRoZSBpY29uIHNsb3QuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJJY29uTmFtZU1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiSWNvbk5hbWVNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkljb25OYW1lRWxlbWVudCBleHRlbmRzIHN1cGVyQ2xhc3MgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkljb25OYW1lTWl4aW5UeXBlPiB7XG4gICAgLyoqXG4gICAgICogVGhlIGljb24gbmFtZSB3ZSB3YW50IHRvIHVzZSwgY2hvb3NlIGZyb20gdGhlIHNtYWxsIGljb24gdmFyaWFudHNcbiAgICAgKiBmcm9tIHRoZSB1aS1pY29ucyBjYXRlZ29yeSBmcm9tIGhlcmVcbiAgICAgKiBodHRwczovL2ljb25zLmFwcC5zYmIuY2guXG4gICAgICovXG4gICAgQGZvcmNlVHlwZSgpXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaWNvbi1uYW1lJywgcmVmbGVjdDogdHJ1ZSwgY29udmVydGVyOiBvbWl0RW1wdHlDb252ZXJ0ZXIgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgaWNvbk5hbWU6IHN0cmluZyA9ICcnO1xuXG4gICAgcHJvdGVjdGVkIHJlbmRlckljb25TbG90KGNsYXNzbmFtZT86IHN0cmluZyk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2xvdCBuYW1lPVwiaWNvblwiPlxuICAgICAgICAgICR7dGhpcy5pY29uTmFtZVxuICAgICAgICAgICAgPyBodG1sYDxzYmItaWNvbiBuYW1lPSR7dGhpcy5pY29uTmFtZX0gY2xhc3M9JHtjbGFzc25hbWUgfHwgbm90aGluZ30+PC9zYmItaWNvbj5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDwvc2xvdD5cbiAgICAgIGA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFNiYkljb25OYW1lRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiSWNvbk5hbWVNaXhpblR5cGU+ICYgVDtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxNQUFNLFFBQVEsQ0FBQyxRQUE0QixPQUFPLFFBQVE7QUFNN0MsTUFBQSxVQUFVLENBQUMsUUFBNkI7QUFDL0MsTUFBQSxJQUFJLGFBQWEsR0FBRztBQUV0QixRQUFJLElBQUksU0FBUyxZQUFhLE1BQUssVUFBVTtBQUNw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
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../../src/elements/image/image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../../src/elements/image/image.ts"],"names":[],"mappings":"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"}
@@ -6,26 +6,12 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
6
6
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
7
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
8
  import { __esDecorate, __runInitializers } from "tslib";
9
+ import { S as SbbTypoScaleDefault, a as SbbBreakpointZeroMin, b as SbbBreakpointZeroMax, c as SbbBreakpointMicroMin, d as SbbBreakpointMicroMax, e as SbbBreakpointSmallMin, f as SbbBreakpointSmallMax, g as SbbBreakpointMediumMin, h as SbbBreakpointMediumMax, i as SbbBreakpointLargeMin, j as SbbBreakpointLargeMax, k as SbbBreakpointWideMin, l as SbbBreakpointWideMax, m as SbbBreakpointUltraMin, n as SbbBreakpointUltraMax } from "./sbb-tokens-BdGhUJjM.js";
9
10
  import { css, html, nothing, LitElement } from "lit";
10
11
  import { customElement, property, eventOptions } from "lit/decorators.js";
11
12
  import { ref } from "lit/directives/ref.js";
12
13
  import { forceType } from "./core/decorators.js";
13
14
  import { hostContext } from "./core/dom.js";
14
- const SbbBreakpointZeroMin = 0;
15
- const SbbBreakpointZeroMax = 359;
16
- const SbbBreakpointMicroMin = 360;
17
- const SbbBreakpointMicroMax = 599;
18
- const SbbBreakpointSmallMin = 600;
19
- const SbbBreakpointSmallMax = 839;
20
- const SbbBreakpointMediumMin = 840;
21
- const SbbBreakpointMediumMax = 1023;
22
- const SbbBreakpointLargeMin = 1024;
23
- const SbbBreakpointLargeMax = 1279;
24
- const SbbBreakpointWideMin = 1280;
25
- const SbbBreakpointWideMax = 1439;
26
- const SbbBreakpointUltraMin = 1440;
27
- const SbbBreakpointUltraMax = 2579;
28
- const SbbTypoScaleDefault = 16;
29
15
  const style = css`*,
30
16
  ::before,
31
17
  ::after {
@@ -207,9 +193,7 @@ const eventListenerOptions = {
207
193
  once: true,
208
194
  passive: true
209
195
  };
210
- const pxToRem = (px) => {
211
- return px / SbbTypoScaleDefault;
212
- };
196
+ const pxToRem = (px) => px / SbbTypoScaleDefault;
213
197
  const breakpointMap = {
214
198
  "sbb-breakpoint-zero-min": pxToRem(SbbBreakpointZeroMin),
215
199
  "sbb-breakpoint-zero-max": pxToRem(SbbBreakpointZeroMax),
@@ -906,4 +890,4 @@ let SbbImageElement = (() => {
906
890
  export {
907
891
  SbbImageElement
908
892
  };
909
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ac2JiLWVzdGEvbHluZS1kZXNpZ24tdG9rZW5zL2Rpc3QvanMvc2JiLXRva2Vucy5tanMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaW1hZ2UvaW1hZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEbyBub3QgZWRpdCBkaXJlY3RseVxuICogR2VuZXJhdGVkIG9uIE1vbiwgMjEgT2N0IDIwMjQgMDY6MzQ6MjIgR01UXG4gKi9cblxuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uMXggPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjJ4ID0gODA7XG5leHBvcnQgY29uc3QgU2JiQW5pbWF0aW9uRHVyYXRpb24zeCA9IDEyMDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjR4ID0gMTYwO1xuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uNXggPSAyMDA7XG5leHBvcnQgY29uc3QgU2JiQW5pbWF0aW9uRHVyYXRpb242eCA9IDI0MDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjEyeCA9IDQ4MDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25FYXNpbmcgPSBcImN1YmljLWJlemllciguNDcsIC4xLCAxLCAuNjMpXCI7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyV2lkdGgxeCA9IDE7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyV2lkdGgyeCA9IDI7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyV2lkdGgzeCA9IDM7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyUmFkaXVzMXggPSAyO1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlclJhZGl1czJ4ID0gNDtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXM0eCA9IDg7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyUmFkaXVzNnggPSAxMjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXM4eCA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlclJhZGl1czE2eCA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRaZXJvTWluID0gMDtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50WmVyb01heCA9IDM1OTtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50TWljcm9NaW4gPSAzNjA7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludE1pY3JvTWF4ID0gNTk5O1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRTbWFsbE1pbiA9IDYwMDtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50U21hbGxNYXggPSA4Mzk7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludE1lZGl1bU1pbiA9IDg0MDtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50TWVkaXVtTWF4ID0gMTAyMztcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50TGFyZ2VNaW4gPSAxMDI0O1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRMYXJnZU1heCA9IDEyNzk7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludFdpZGVNaW4gPSAxMjgwO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRXaWRlTWF4ID0gMTQzOTtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50VWx0cmFNaW4gPSAxNDQwO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRVbHRyYU1heCA9IDI1Nzk7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFjayA9IFwiIzAwMDAwMFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQmxhY2tBbHBoYTAgPSBcInJnYmEoMCwgMCwgMCwgMClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckJsYWNrQWxwaGExMCA9IFwicmdiYSgwLCAwLCAwLCAwLjEpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFja0FscGhhMTUgPSBcInJnYmEoMCwgMCwgMCwgMC4xNSlcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckJsYWNrQWxwaGEyMCA9IFwicmdiYSgwLCAwLCAwLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFja0FscGhhMzAgPSBcInJnYmEoMCwgMCwgMCwgMC4zKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQmxhY2tBbHBoYTQwID0gXCJyZ2JhKDAsIDAsIDAsIDAuNClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckJsYWNrQWxwaGE1MCA9IFwicmdiYSgwLCAwLCAwLCAwLjUpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFja0FscGhhNjAgPSBcInJnYmEoMCwgMCwgMCwgMC42KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQmxhY2tBbHBoYTcwID0gXCJyZ2JhKDAsIDAsIDAsIDAuNylcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck1pZG5pZ2h0ID0gXCIjMTUxNTE1XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbHVlID0gXCIjMmQzMjdkXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDaGFyY29hbCA9IFwiIzIxMjEyMVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9ySXJvbiA9IFwiIzQ0NDQ0NFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQW50aHJhY2l0ZSA9IFwiIzVhNWE1YVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yR3Jhbml0ZSA9IFwiIzY4Njg2OFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTWV0YWwgPSBcIiM3Njc2NzZcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck1ldGFsQWxwaGEwID0gXCJyZ2JhKDExOCwgMTE4LCAxMTgsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JNZXRhbEFscGhhMjAgPSBcInJnYmEoMTE4LCAxMTgsIDExOCwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU21va2UgPSBcIiM4ZDhkOGRcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclNtb2tlQWxwaGEwID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JTbW9rZUFscGhhNSA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjA1KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU21va2VBbHBoYTEwID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMSlcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclNtb2tlQWxwaGEyMCA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JTdG9ybSA9IFwiI2E4YThhOFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yR3JhcGhpdGUgPSBcIiNiN2I3YjdcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckNlbWVudCA9IFwiI2JkYmRiZFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQ2VtZW50QWxwaGEwID0gXCJyZ2JhKDE4OSwgMTg5LCAxODksIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDZW1lbnRBbHBoYTIwID0gXCJyZ2JhKDE4OSwgMTg5LCAxODksIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclBsYXRpbnVtID0gXCIjY2RjZGNkXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JQbGF0aW51bUFscGhhMCA9IFwicmdiYSgyMDUsIDIwNSwgMjA1LCAwKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUGxhdGludW1BbHBoYTIwID0gXCJyZ2JhKDIwNSwgMjA1LCAyMDUsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckFsdW1pbml1bSA9IFwiI2QyZDJkMlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU2lsdmVyID0gXCIjZGNkY2RjXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDbG91ZCA9IFwiI2U1ZTVlNVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQ2xvdWRBbHBoYTgwID0gXCJyZ2JhKDIyOSwgMjI5LCAyMjksIDAuOClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck1pbGsgPSBcIiNmNmY2ZjZcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZCA9IFwiI2ViMDAwMFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkQWxwaGEwID0gXCJyZ2JhKDIzNSwgMCwgMCwgMClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZEFscGhhMjAgPSBcInJnYmEoMjM1LCAwLCAwLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSZWRBbHBoYTkwID0gXCJyZ2JhKDIzNSwgMCwgMCwgMC45KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkTW9kZURhcmsgPSBcIiNmZjM4MzhcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZDEyNSA9IFwiI2M2MDAxOFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkMTI1QWxwaGEwID0gXCJyZ2JhKDE5OCwgMCwgMjQsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSZWQxMjVBbHBoYTIwID0gXCJyZ2JhKDE5OCwgMCwgMjQsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZDE1MCA9IFwiI2EyMDAxM1wiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUm95YWwgPSBcIiMwNjM0OGJcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJveWFsMTI1ID0gXCIjMDMyNjY4XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSb3lhbDE1MCA9IFwiIzAyMWM0ZVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yV2hpdGUgPSBcIiNmZmZmZmZcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvcldoaXRlQWxwaGEwID0gXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JXaGl0ZUFscGhhMjAgPSBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yV2hpdGVBbHBoYTMwID0gXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMylcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvcldoaXRlQWxwaGE1MCA9IFwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JXaGl0ZUFscGhhNjAgPSBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yV2hpdGVBbHBoYTcwID0gXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNylcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclNreSA9IFwiIzAwNzljN1wiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTmlnaHQgPSBcIiMxNDNhODVcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclZpb2xldCA9IFwiIzZmMjI4MlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUGluayA9IFwiI2NmNDA4MlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQXV0dW1uID0gXCIjZTg0ZTEwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JPcmFuZ2UgPSBcIiNmMjdlMDBcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclBlYWNoID0gXCIjZmNiYjAwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JMZW1vbiA9IFwiI2ZmZGUxNVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQnJvd24gPSBcIiNiNzYwMDBcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckdyZWVuID0gXCIjMDA4YTM2XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JUdXJxdW9pc2UgPSBcIiMwMGE1OWJcIjtcbmV4cG9ydCBjb25zdCBTYmJGb2N1c091dGxpbmVPZmZzZXQgPSAzO1xuZXhwb3J0IGNvbnN0IFNiYkhvdmVySW1hZ2VCcmlnaHRuZXNzID0gMS4wNzU7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRDb2x1bW5zWmVybyA9IDQ7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRDb2x1bW5zTWljcm8gPSA0O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc1NtYWxsID0gNDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZENvbHVtbnNNZWRpdW0gPSA4O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc0xhcmdlID0gODtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZENvbHVtbnNXaWRlID0gMTI7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRDb2x1bW5zVWx0cmEgPSAxNjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZEd1dHRlclJlc3BvbnNpdmVaZXJvID0gMTY7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRHdXR0ZXJSZXNwb25zaXZlTWljcm8gPSAxNjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZEd1dHRlclJlc3BvbnNpdmVTbWFsbCA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkR3V0dGVyUmVzcG9uc2l2ZU1lZGl1bSA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkR3V0dGVyUmVzcG9uc2l2ZUxhcmdlID0gMzI7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRHdXR0ZXJSZXNwb25zaXZlV2lkZSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkR3V0dGVyUmVzcG9uc2l2ZVVsdHJhID0gMzI7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVaZXJvID0gMTY7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVNaWNybyA9IDIwO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VPZmZzZXRSZXNwb25zaXZlU21hbGwgPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlT2Zmc2V0UmVzcG9uc2l2ZU1lZGl1bSA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VPZmZzZXRSZXNwb25zaXZlTGFyZ2UgPSA2NDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlT2Zmc2V0UmVzcG9uc2l2ZVdpZGUgPSA3MjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlT2Zmc2V0UmVzcG9uc2l2ZVVsdHJhID0gMTIwO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VQYWdlTWF4V2lkdGggPSAxMjAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NoYWRvdzFPZmZzZXRYID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cxT2Zmc2V0WSA9IDI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MUJsdXIgPSAxNjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cxU3ByZWFkID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cyT2Zmc2V0WCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93Mk9mZnNldFkgPSAxO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NoYWRvdzJCbHVyID0gNDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cyU3ByZWFkID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTb2Z0MUNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMDUpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU29mdDJDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjEpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU29mdE5lZ2F0aXZlMUNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMTUpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU29mdE5lZ2F0aXZlMkNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNIYXJkMUNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNIYXJkMkNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNIYXJkTmVnYXRpdmUxQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC4zKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM0hhcmROZWdhdGl2ZTJDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjQpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93MU9mZnNldFggPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzFPZmZzZXRZID0gNDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cxQmx1ciA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzFTcHJlYWQgPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzJPZmZzZXRYID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cyT2Zmc2V0WSA9IDE7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93MkJsdXIgPSA4O1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzJTcHJlYWQgPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNvZnQxQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4wNSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTb2Z0MkNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTb2Z0TmVnYXRpdmUxQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC4xNSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTb2Z0TmVnYXRpdmUyQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNUhhcmQxQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4xKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNUhhcmQyQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNUhhcmROZWdhdGl2ZTFDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjMpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1SGFyZE5lZ2F0aXZlMkNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuNClcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTaGFkb3cxT2Zmc2V0WCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MU9mZnNldFkgPSAxNjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTaGFkb3cxQmx1ciA9IDEyODtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTaGFkb3cxU3ByZWFkID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTaGFkb3cyT2Zmc2V0WCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93Mk9mZnNldFkgPSA0O1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzJCbHVyID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MlNwcmVhZCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U29mdDFDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjA1KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNvZnQyQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4xKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNvZnROZWdhdGl2ZTFDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjE1KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNvZnROZWdhdGl2ZTJDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5SGFyZDFDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjEpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5SGFyZDJDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5SGFyZE5lZ2F0aXZlMUNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMylcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlIYXJkTmVnYXRpdmUyQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC40KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cxT2Zmc2V0WCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMVNoYWRvdzFPZmZzZXRZID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMVNoYWRvdzFCbHVyID0gMTkyO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cxU3ByZWFkID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93Mk9mZnNldFggPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyT2Zmc2V0WSA9IDQ7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMVNoYWRvdzJCbHVyID0gNjQ7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMVNoYWRvdzJTcHJlYWQgPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTb2Z0MUNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMDUpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMVNvZnQyQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4xKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTb2Z0TmVnYXRpdmUxQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC4xNSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU29mdE5lZ2F0aXZlMkNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExSGFyZDFDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjEpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMUhhcmQyQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFIYXJkTmVnYXRpdmUxQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC4zKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFIYXJkTmVnYXRpdmUyQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC40KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHh4c1plcm8gPSAyODtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4eHNNaWNybyA9IDI4O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHh4c1NtYWxsID0gMjg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHhzTWVkaXVtID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHhzTGFyZ2UgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4eHNXaWRlID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHhzVWx0cmEgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4c1plcm8gPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4c01pY3JvID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHNTbWFsbCA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHhzTWVkaXVtID0gMzY7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHNMYXJnZSA9IDM2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHhzV2lkZSA9IDM2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHhzVWx0cmEgPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzWmVybyA9IDM2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHNNaWNybyA9IDM2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHNTbWFsbCA9IDM2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHNNZWRpdW0gPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzTGFyZ2UgPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzV2lkZSA9IDQwO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHNVbHRyYSA9IDQwO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U1plcm8gPSA0NDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFNNaWNybyA9IDQ0O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U1NtYWxsID0gNDQ7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRTTWVkaXVtID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRTTGFyZ2UgPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFNXaWRlID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRTVWx0cmEgPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1aZXJvID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRNTWljcm8gPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1TbWFsbCA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TU1lZGl1bSA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TUxhcmdlID0gNTY7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRNV2lkZSA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TVVsdHJhID0gNTY7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRMWmVybyA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TE1pY3JvID0gNTY7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRMU21hbGwgPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudExNZWRpdW0gPSA2NDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudExMYXJnZSA9IDY0O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TFdpZGUgPSA2NDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudExVbHRyYSA9IDY0O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVJY29uVWlTbWFsbCA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVJY29uVWlNZWRpdW0gPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplSWNvblVpTGFyZ2UgPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQxeCA9IDQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMnggPSA4O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDN4ID0gMTI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkNHggPSAxNjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQ1eCA9IDIwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDZ4ID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkN3ggPSAyODtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQ4eCA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDl4ID0gMzY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMTB4ID0gNDA7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMTJ4ID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMTR4ID0gNTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMTZ4ID0gNjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMTh4ID0gNzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMjB4ID0gODA7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMjR4ID0gOTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMzB4ID0gMTIwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHh4c1plcm8gPSAxMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4eHNNaWNybyA9IDEyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHh4c1NtYWxsID0gMTI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHhzTWVkaXVtID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHhzTGFyZ2UgPSAxNjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4eHNXaWRlID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHhzVWx0cmEgPSAxNjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4c1plcm8gPSAxNjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4c01pY3JvID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHNTbWFsbCA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhzTWVkaXVtID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHNMYXJnZSA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhzV2lkZSA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhzVWx0cmEgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzWmVybyA9IDIwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHNNaWNybyA9IDIwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHNTbWFsbCA9IDIwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHNNZWRpdW0gPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzTGFyZ2UgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzV2lkZSA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHNVbHRyYSA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU1plcm8gPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVNNaWNybyA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU1NtYWxsID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVTTWVkaXVtID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVTTGFyZ2UgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVNXaWRlID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVTVWx0cmEgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZU1aZXJvID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVNTWljcm8gPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZU1TbWFsbCA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTU1lZGl1bSA9IDQwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTUxhcmdlID0gNDA7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVNV2lkZSA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTVVsdHJhID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMWmVybyA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTE1pY3JvID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMU21hbGwgPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZUxNZWRpdW0gPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZUxMYXJnZSA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTFdpZGUgPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZUxVbHRyYSA9IDY0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxaZXJvID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYbE1pY3JvID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYbFNtYWxsID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYbE1lZGl1bSA9IDY0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxMYXJnZSA9IDgwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxXaWRlID0gODA7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYbFVsdHJhID0gOTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeGxaZXJvID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeGxNaWNybyA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsU21hbGwgPSA3MjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4bE1lZGl1bSA9IDgwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsTGFyZ2UgPSA5NjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4bFdpZGUgPSA5NjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4bFVsdHJhID0gMTIwO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9Gb250RmFtaWx5ID0gXCJcXFwiU0JCXFxcIiwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9MZXR0ZXJTcGFjaW5nVGl0bGVzID0gXCIwXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb0xldHRlclNwYWNpbmdCb2R5VGV4dCA9IFwiMC4wM2VtXCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb0xpbmVIZWlnaHRUaXRsZXMgPSBcIjEuM1wiO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9MaW5lSGVpZ2h0Qm9keVRleHQgPSBcIjEuNzVcIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUwNzV4ID0gMTI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMDgxMjV4ID0gMTM7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMDg3NXggPSAxNDtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGVEZWZhdWx0ID0gMTY7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMTEyNXggPSAxODtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUxMjV4ID0gMjA7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMTV4ID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMnggPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUyNXggPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUzeCA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTM1eCA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTR4ID0gNjQ7XG4iLCJpbXBvcnQge1xuICBTYmJCcmVha3BvaW50WmVyb01pbixcbiAgU2JiQnJlYWtwb2ludFplcm9NYXgsXG4gIFNiYkJyZWFrcG9pbnRNaWNyb01pbixcbiAgU2JiQnJlYWtwb2ludE1pY3JvTWF4LFxuICBTYmJCcmVha3BvaW50U21hbGxNaW4sXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1heCxcbiAgU2JiQnJlYWtwb2ludE1lZGl1bU1pbixcbiAgU2JiQnJlYWtwb2ludE1lZGl1bU1heCxcbiAgU2JiQnJlYWtwb2ludExhcmdlTWluLFxuICBTYmJCcmVha3BvaW50TGFyZ2VNYXgsXG4gIFNiYkJyZWFrcG9pbnRXaWRlTWluLFxuICBTYmJCcmVha3BvaW50V2lkZU1heCxcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWluLFxuICBTYmJCcmVha3BvaW50VWx0cmFNYXgsXG4gIFNiYlR5cG9TY2FsZURlZmF1bHQsXG59IGZyb20gJ0BzYmItZXN0YS9seW5lLWRlc2lnbi10b2tlbnMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIGV2ZW50T3B0aW9ucywgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaG9zdENvbnRleHQgfSBmcm9tICcuLi9jb3JlL2RvbS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2ltYWdlLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWcge1xuICBicmVha3BvaW50czogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50IHtcbiAgaW1hZ2U6IHtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICB9O1xuICBtZWRpYVF1ZXJpZXM6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeSB7XG4gIGNvbmRpdGlvbkZlYXR1cmU6IHN0cmluZztcbiAgY29uZGl0aW9uRmVhdHVyZVZhbHVlOiB7XG4gICAgbHluZURlc2lnblRva2VuOiBib29sZWFuO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGNvbmRpdGlvbk9wZXJhdG9yOiBmYWxzZTtcbn1cblxuLyoqXG4gKiB3ZSBjaGVjayB0aGUgc3RydWN0dXJlIG9mIHRoZSBkYXRhIG1hbnVhbGx5LCBzbyBpdCdzIHNhZmUgdG8gdXNlIGBhbnlgIGFzIHJldHVybiB0eXBlXG4gKi9cbmNvbnN0IGltYWdlSGVscGVyR2V0QnJlYWtwb2ludHMgPSAoXG4gIGpzb25TdHJpbmc6IHN0cmluZyxcbik6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnQnJlYWtwb2ludFtdID0+IHtcbiAgaWYgKCFqc29uU3RyaW5nIHx8IGpzb25TdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBgYnJlYWtwb2ludHNgIGtleSBpbiBvYmplY3RcbiAgY29uc3QgbG9nV2FybmluZyA9IGltcG9ydC5tZXRhLmVudi5ERVZcbiAgICA/ICgpID0+XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnc2JiLWltYWdlIGVycm9yOiBhdHRyaWJ1dGUgYnJlYWtwb2ludHMgaGFzIHdyb25nIGRhdGEgZm9ybWF0LiBSZWZlcmVuY2UgdGhlIGRvY3VtZW50YXRpb24gdG8gc2VlIGhvdyB5b3Ugc2hvdWxkIGZvcm1hdCB0aGUgZGF0YSBmb3IgdGhpcyBhdHRyaWJ1dGUuJyxcbiAgICAgICAgKVxuICAgIDogbnVsbDtcbiAgbGV0IGpzb25PYmplY3Q6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnO1xuXG4gIHRyeSB7XG4gICAganNvbk9iamVjdCA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG4gIH0gY2F0Y2gge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmICghanNvbk9iamVjdC5icmVha3BvaW50cyB8fCBqc29uT2JqZWN0LmJyZWFrcG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB3ZSBnZXQgYW4gYXJyYXkgb2YgYnJlYWtwb2ludHNcbiAgaWYgKCFBcnJheS5pc0FycmF5KGpzb25PYmplY3QuYnJlYWtwb2ludHMpKSB7XG4gICAgbG9nV2FybmluZz8uKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIDEuIG1ha2Ugc3VyZSB0aGF0IGVhY2ggZW50cnkgd2l0aGluIHRoZSBicmVha3BvaW50cyBvYmplY3QgY29udGFpbnMgb25seSBhbGxvd2VkIGtleXNcbiAgICogMi4gbWFrZSBzdXJlIHRoYXQgYWxsIG5lY2Vzc2FyeSBrZXlzIGFyZSBwcmVzZW50XG4gICAqL1xuICBsZXQgd3JvbmdLZXlEZXRlY3RlZCA9IGZhbHNlO1xuICBsZXQgbWlzc2luZ0tleURldGVjdGVkID0gZmFsc2U7XG5cbiAgY29uc3QgYWxsb3dlZEtleXMgPSBbJ2ltYWdlJywgJ21lZGlhUXVlcmllcyddO1xuXG4gIGpzb25PYmplY3QuYnJlYWtwb2ludHMuZm9yRWFjaCgoYnJlYWtwb2ludCkgPT4ge1xuICAgIGNvbnN0IGJyZWFrcG9pbnRLZXlzID0gT2JqZWN0LmtleXMoYnJlYWtwb2ludCk7XG5cbiAgICBicmVha3BvaW50S2V5cy5mb3JFYWNoKChicmVha3BvaW50S2V5KSA9PiB7XG4gICAgICBpZiAoIWFsbG93ZWRLZXlzLmluY2x1ZGVzKGJyZWFrcG9pbnRLZXkpKSB7XG4gICAgICAgIHdyb25nS2V5RGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWxsb3dlZEtleXMuZm9yRWFjaCgoYWxsb3dlZEtleSkgPT4ge1xuICAgICAgaWYgKCFicmVha3BvaW50S2V5cy5pbmNsdWRlcyhhbGxvd2VkS2V5KSkge1xuICAgICAgICBtaXNzaW5nS2V5RGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpZiAod3JvbmdLZXlEZXRlY3RlZCB8fCBtaXNzaW5nS2V5RGV0ZWN0ZWQpIHtcbiAgICBsb2dXYXJuaW5nPy4oKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4ganNvbk9iamVjdC5icmVha3BvaW50cztcbn07XG5cbmNvbnN0IGV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICBvbmNlOiB0cnVlLFxuICBwYXNzaXZlOiB0cnVlLFxufTtcblxuY29uc3QgcHhUb1JlbSA9IChweDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIHB4IC8gU2JiVHlwb1NjYWxlRGVmYXVsdDtcbn07XG5cbmNvbnN0IGJyZWFrcG9pbnRNYXA6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gICdzYmItYnJlYWtwb2ludC16ZXJvLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFplcm9NaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtemVyby1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRaZXJvTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LW1pY3JvLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludE1pY3JvTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LW1pY3JvLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludE1pY3JvTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LXNtYWxsLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFNtYWxsTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LXNtYWxsLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFNtYWxsTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LW1lZGl1bS1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRNZWRpdW1NaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtbWVkaXVtLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludE1lZGl1bU1heCksXG4gICdzYmItYnJlYWtwb2ludC1sYXJnZS1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRMYXJnZU1pbiksXG4gICdzYmItYnJlYWtwb2ludC1sYXJnZS1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRMYXJnZU1heCksXG4gICdzYmItYnJlYWtwb2ludC13aWRlLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFdpZGVNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtd2lkZS1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRXaWRlTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LXVsdHJhLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFVsdHJhTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LXVsdHJhLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFVsdHJhTWF4KSxcbn07XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaW1hZ2UuXG4gKlxuICogQGV2ZW50IHtFdmVudH0gbG9hZCAtIEVtaXRzIHdoZW4gdGhlIGltYWdlIGhhcyBiZWVuIGxvYWRlZC5cbiAqIEBldmVudCB7RXZlbnR9IGVycm9yIC0gRW1pdHMgd2hlbiB0aGUgaW1hZ2UgbG9hZGluZyBlbmRlZCBpbiBhbiBlcnJvci5cbiAqIEBjc3Nwcm9wIFstLXNiYi1pbWFnZS1hc3BlY3QtcmF0aW89YXV0b10gLSBDYW4gYmUgdXNlZCB0byBvdmVycmlkZSBgYXNwZWN0UmF0aW9gIHByb3BlcnR5LlxuICogVGhpcyB3YXkgd2UgY2FuIGhhdmUsIGZvciBleGFtcGxlLCBhbiBpbWFnZSBjb21wb25lbnQgd2l0aCBhbiBhc3BlY3RcbiAqIHJhdGlvIG9mIDQvMyBpbiBzbWFsbGVyIHZpZXdwb3J0cyBhbmQgMTYvOSBpbiBsYXJnZXIgdmlld3BvcnRzLlxuICogQGNzc3Byb3AgWy0tc2JiLWltYWdlLWJvcmRlci1yYWRpdXM9dmFyKC0tc2JiLWJvcmRlci1yYWRpdXMtNHgpXSAtIENhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZVxuICogYGJvcmRlclJhZGl1c2AgcHJvcGVydHkgaW4gY2FzZSBvZiBkaWZmZXJlbnQgdmFsdWVzIGZvciBkaWZmZXJlbnQgdmlld3BvcnRzLlxuICogQGNzc3Byb3AgWy0tc2JiLWltYWdlLW9iamVjdC1wb3NpdGlvbl0gLSBDYW4gYmUgdXNlZCB0byBzZXQgdGhlIG9iamVjdC1wb3NpdGlvbiBjc3MgcHJvcGVydHkgb2YgdGhlIGltYWdlIGl0c2VsZiBpZiB0aGUgaW1hZ2UgaXRzZWxmIGlzIGNyb3BwZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItaW1hZ2Utb2JqZWN0LWZpdD1jb3Zlcl0gLSBDYW4gYmUgdXNlZCB0byBzZXQgdGhlIG9iamVjdC1maXQgY3NzIHByb3BlcnR5IG9mIHRoZSBpbWFnZSBpdHNlbGYgaWYgdGhlIGltYWdlIGl0c2VsZiBpcyBjcm9wcGVkLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItaW1hZ2UnKVxuY2xhc3MgU2JiSW1hZ2VFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBlcnJvcjogJ2Vycm9yJyxcbiAgICBsb2FkOiAnbG9hZCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgcHJpdmF0ZSBfY2FwdGlvbkVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfbGlua3NJbkNhcHRpb24/OiBOb2RlTGlzdE9mPEhUTUxMaW5rRWxlbWVudD47XG4gIHByaXZhdGUgX2NvbmZpZyA9IHtcbiAgICBub25SZXRpbmFRdWFsaXR5OiAnNDUnLFxuICAgIHJldGluYVF1YWxpdHk6ICcyMCcsXG4gIH07XG5cbiAgLyoqXG4gICAqIEFuIGFsdCB0ZXh0IGlzIG5vdCBhbHdheXMgbmVjZXNzYXJ5IChlLmcuIGluIHRlYXNlciBjYXJkcyB3aGVuXG4gICAqIGFkZGl0aW9uYWwgbGluayB0ZXh0IGlzIHByb3ZpZGVkKS4gSW4gdGhpcyBjYXNlIHdlIGNhbiBsZWF2ZVxuICAgKiB0aGUgdmFsdWUgb2YgdGhlIGFsdCBhdHRyaWJ1dGUgYmxhbmssIGJ1dCB0aGUgYXR0cmlidXRlIGl0c2VsZlxuICAgKiBzdGlsbCBuZWVkcyB0byBiZSBwcmVzZW50LiBUaGF0IHdheSB3ZSBjYW4gc2lnbmFsIGFzc2lzdGl2ZVxuICAgKiB0ZWNobm9sb2d5LCB0aGF0IHRoZXkgY2FuIHNraXAgdGhlIGltYWdlLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBhY2Nlc3NvciBhbHQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gZmFsc2UsIHdlIHNob3cgYSBibHVycmVkIHZlcnNpb24gb2YgdGhlIGltYWdlIGFzXG4gICAqIHBsYWNlaG9sZGVyIGJlZm9yZSB0aGUgYWN0dWFsIGltYWdlIHNob3dzIHVwLiBUaGlzIHdpbGwgaGVscFxuICAgKiB0byBpbXByb3ZlIHRoZSBwZXJjZWl2ZWQgbG9hZGluZyBwZXJmb3JtYW5jZS4gUmVhZCBtb3JlIGFib3V0XG4gICAqIHRoZSBpZGVhIG9mIGxxaXAgaGVyZTpcbiAgICogaHR0cHM6Ly9tZWRpdW0uY29tL0BpbWdpeC9scWlwLXlvdXItaW1hZ2VzLWZvci1mYXN0LWxvYWRpbmctMjUyM2Q5ZWU0YTYyXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2tpcC1scWlwJywgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2tpcExxaXA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBjYXB0aW9uIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwgY29udGV4dCB0byB0aGUgaW1hZ2UgKGUuZy5cbiAgICogZGVzY3JpcHRpb25zIGFuZCB0aGUgbGlrZSkuXG4gICAqIExpbmtzIHdpbGwgYXV0b21hdGljYWxseSByZWNlaXZlIHRhYmluZGV4PS0xIGlmIGhpZGVGcm9tU2NyZWVucmVhZGVyXG4gICAqIGlzIHNldCB0byB0cnVlLiBUaGF0IHdheSB0aGV5IHdpbGwgbm8gbG9uZ2VyIGJlY29tZSBmb2N1c2FibGUuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIGNhcHRpb246IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBJZiBhIGNvcHlyaWdodCB0ZXh0IGlzIHByb3ZpZGVkLCB3ZSB3aWxsIGFkZCBpdCB0byB0aGUgY2FwdGlvblxuICAgKiBhbmQgY3JlYXRlIGEgc3RydWN0dXJlZCBkYXRhIGpzb24tbGQgYmxvY2sgd2l0aCB0aGUgY29weXJpZ2h0XG4gICAqIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBhY2Nlc3NvciBjb3B5cmlnaHQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBDb3B5cmlnaHQgaG9sZGVyIGNhbiBlaXRoZXIgYmUgYW4gT3JnYW5pemF0aW9uIG9yIGEgUGVyc29uXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdjb3B5cmlnaHQtaG9sZGVyJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgY29weXJpZ2h0SG9sZGVyOiAnT3JnYW5pemF0aW9uJyB8ICdQZXJzb24nID0gJ09yZ2FuaXphdGlvbic7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUsIGlmIHlvdSB3YW50IHRvIHBhc3MgYSBjdXN0b20gZm9jYWwgcG9pbnRcbiAgICogZm9yIHRoZSBpbWFnZS4gU2VlIGZ1bGwgZG9jdW1lbnRhdGlvbiBoZXJlOlxuICAgKiBodHRwczovL2RvY3MuaW1naXguY29tL2FwaXMvcmVuZGVyaW5nL2ZvY2FscG9pbnQtY3JvcFxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2N1c3RvbS1mb2NhbC1wb2ludCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGN1c3RvbUZvY2FsUG9pbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSWYgdGhlIGxhenkgcHJvcGVydHkgaXMgc2V0IHRvIHRydWUsIHRoZSBtb2R1bGUgd2lsbCBhdXRvbWF0aWNhbGx5XG4gICAqIGNoYW5nZSB0aGUgZGVjb2RpbmcgdG8gYXN5bmMsIG90aGVyd2lzZSB0aGUgZGVjb2RpbmcgaXMgc2V0IHRvIGF1dG9cbiAgICogd2hpY2ggbGVhdmVzIHRoZSBoYW5kbGluZyB1cCB0byB0aGUgYnJvd3Nlci4gUmVhZCBtb3JlIGFib3V0IHRoZVxuICAgKiBkZWNvZGluZyBhdHRyaWJ1dGUgaGVyZTpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxJbWFnZUVsZW1lbnQvZGVjb2RpbmdcbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBkZWNvZGluZzogJ3N5bmMnIHwgJ2FzeW5jJyB8ICdhdXRvJyA9ICdhdXRvJztcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSwgdG8gcmVjZWl2ZSB2aXN1YWwgZ3VpZGFuY2Ugd2hlcmUgdGhlIGN1c3RvbSBmb2NhbFxuICAgKiBwb2ludCBpcyBjdXJyZW50bHkgc2V0LlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZvY2FsLXBvaW50LWRlYnVnJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZm9jYWxQb2ludERlYnVnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYSBmbG9hdGluZyBudW1iZXIgYmV0d2VlbiAwIChsZWZ0KSBhbmQgMSAocmlnaHQpLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZvY2FsLXBvaW50LXgnLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGZvY2FsUG9pbnRYOiBudW1iZXIgPSAxO1xuXG4gIC8qKlxuICAgKiBQYXNzIGluIGEgZmxvYXRpbmcgbnVtYmVyIGJldHdlZW4gMCAodG9wKSBhbmQgMSAoYm90dG9tKS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmb2NhbC1wb2ludC15JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmb2NhbFBvaW50WTogbnVtYmVyID0gMTtcblxuICAvKipcbiAgICogUmlnaHQgbm93IHRoZSBtb2R1bGUgaXMgaGVhdmlseSBjb3VwbGVkIHdpdGggdGhlIGltYWdlIGRlbGl2ZXJ5XG4gICAqIHNlcnZpY2UgaW1naXggYW5kIGRlcGVuZHMgb24gdGhlIG9yaWdpbmFsIGZpbGVzIGJlaW5nIHN0b3JlZFxuICAgKiBpbnNpZGUgQUVNLiBZb3UgY2FuIHBhc3MgaW4gYW55IGh0dHBzOi8vY2RuLmltZy5zYmIuY2ggaW1nXG4gICAqIHNyYyBhZGRyZXNzIHlvdSBmaW5kIG9uIHNiYi5jaCB0byBwbGF5IGFyb3VuZCB3aXRoIGl0LiBKdXN0XG4gICAqIHN0cmlwIHRoZSB1cmwgcGFyYW1ldGVycyBhbmQgcGFzdGUgaW4gdGhlIHBsYWluIGZpbGUgYWRkcmVzcy5cbiAgICogSWYgeW91IHdhbnQgdG8ga25vdyBob3cgdG8gYmVzdCB3b3JrIHdpdGggdGhpcyBtb2R1bGUgd2l0aFxuICAgKiBpbWFnZXMgY29taW5nIGZyb20gYSBkaWZmZXJlbnQgc291cmNlLCBwbGVhc2UgY29udGFjdCB0aGVcbiAgICogTFlORSBDb3JlIFRlYW0uXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaW1hZ2Utc3JjJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaW1hZ2VTcmM6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgaW1wb3J0YW5jZSBhdHRyaWJ1dGUgaXMgZmFpcmx5IG5ldyBhdHRyaWJ1dGUgd2hpY2ggc2hvdWxkXG4gICAqIGhlbHAgdGhlIGJyb3dzZXIgZGVjaWRlIHdoaWNoIHJlc291cmNlcyBpdCBzaG91bGQgcHJpb3JpdGlzZVxuICAgKiBkdXJpbmcgcGFnZSBsb2FkLiBXZSB3aWxsIHNldCB0aGUgYXR0cmlidXRlIHZhbHVlIGJhc2VkIG9uIHRoZVxuICAgKiB2YWx1ZSwgd2UgcmVjZWl2ZSBpbiB0aGUgbG9hZGluZyBhdHRyaWJ1dGUuICdlYWdlcicsIHdoaWNoIHdlIHVzZVxuICAgKiBmb3IgdGhlIGxhcmdlc3QgaW1hZ2Ugd2l0aGluIHRoZSBpbml0aWFsIHZpZXdwb3J0LCB3aWxsIHNldCB0aGVcbiAgICogYXR0cmlidXRlIHZhbHVlIHRvICdoaWdoJy4gJ2xhenknLCB3aGljaCB3ZSB1c2UgZm9yIGltYWdlcyBiZWxvd1xuICAgKiB0aGUgZm9sZCwgd2lsbCBzZXQgdGhlIGF0dHJpYnV0ZSB2YWx1ZSB0byAnbG93Jy5cbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBpbXBvcnRhbmNlOiAnYXV0bycgfCAnaGlnaCcgfCAnbG93JyA9ICdoaWdoJztcblxuICAvKipcbiAgICogV2l0aCB0aGUgc3VwcG9ydCBvZiBuYXRpdmUgaW1hZ2UgbGF6eSBsb2FkaW5nLCB3ZSBjYW4gbm93XG4gICAqIGRlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gbG9hZCB0aGUgaW1hZ2UgaW1tZWRpYXRlbHkgb3Igb25seVxuICAgKiBvbmNlIGl0IGlzIGNsb3NlIHRvIHRoZSB2aXNpYmxlIHZpZXdwb3J0LiBUaGUgdmFsdWUgZWFnZXIgaXNcbiAgICogYmVzdCB1c2VkIGZvciBpbWFnZXMgd2l0aGluIHRoZSBpbml0aWFsIHZpZXdwb3J0LiBXZSB3YW50IHRvXG4gICAqIGxvYWQgdGhlc2UgaW1hZ2VzIGFzIGZhc3QgYXMgcG9zc2libGUgdG8gaW1wcm92ZSB0aGUgQ29yZSBXZWJcbiAgICogVml0YWxzIHZhbHVlcy4gbGF6eSBvbiB0aGUgb3RoZXIgaGFuZCB3b3JrcyBiZXN0IGZvciBpbWFnZXNcbiAgICogd2hpY2ggYXJlIGZ1cnRoZXIgZG93biB0aGUgcGFnZSBvciBpbnZpc2libGUgZHVyaW5nIHRoZSBsb2FkaW5nXG4gICAqIG9mIHRoZSBpbml0aWFsIHZpZXdwb3J0LlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIGxvYWRpbmc6ICdlYWdlcicgfCAnbGF6eScgPSAnZWFnZXInO1xuXG4gIC8qKlxuICAgKiBXaXRoIHBlcmZvcm1hbmNlLm1hcmsgeW91IGNhbiBsb2cgYSB0aW1lc3RhbXAgYXNzb2NpYXRlZCB3aXRoXG4gICAqIHRoZSBuYW1lIHlvdSBkZWZpbmUgaW4gcGVyZm9ybWFuY2VNYXJrIHdoZW4gYSBjZXJ0YWluIGV2ZW50IGlzXG4gICAqIGhhcHBlbmluZy4gSW4gb3VyIGNhc2Ugd2Ugd2lsbCBsb2cgdGhlIHBlcmZvcm1hbmNlLm1hcmsgaW50b1xuICAgKiB0aGUgUGVyZm9ybWFuY2VFbnRyeSBBUEkgb25jZSB0aGUgaW1hZ2UgaXMgZnVsbHkgbG9hZGVkLlxuICAgKiBQZXJmb3JtYW5jZSBtb25pdG9yaW5nIHRvb2xzIGxpa2UgU3BlZWRDdXJ2ZSBvciBMaWdodGhvdXNlIGFyZVxuICAgKiB0aGVuIGFibGUgdG8gZ3JhYiB0aGVzZSBlbnRyaWVzIGZyb20gdGhlIFBlcmZvcm1hbmNlRW50cnkgQVBJXG4gICAqIGFuZCBnaXZlIHVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYW5kIGluc2lnaHRzIGFib3V0IG91ciBwYWdlXG4gICAqIGxvYWRpbmcgYmVoYXZpb3VyLiBXZSBhcmUgdGhlbiBhbHNvIGFibGUgdG8gbW9uaXRvciB0aGVzZVxuICAgKiB2YWx1ZXMgb3ZlciBhIGxvbmcgcGVyaW9kIHRvIHNlZSBpZiBvdXIgcGVyZm9ybWFuY2VcbiAgICogaW5jcmVhc2VzIG9yIGRlY3JlYXNlcyBvdmVyIHRpbWUuIEJlc3QgdG8gdXNlIGxvd2VyY2FzZSBzdHJpbmdzXG4gICAqIGhlcmUsIHNlcGFyYXRlIHdvcmRzIHdpdGggdW5kZXJzY29yZXMgb3IgZGFzaGVzLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3BlcmZvcm1hbmNlLW1hcmsnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBwZXJmb3JtYW5jZU1hcms6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBXaXRoIHRoZSBwaWN0dXJlU2l6ZXNDb25maWcgb2JqZWN0LCB5b3UgY2FuIHBhc3MgaW4gaW5mb3JtYXRpb25cbiAgICogaW50byBpbWFnZSBhYm91dCB3aGF0IGtpbmQgb2Ygc291cmNlIGVsZW1lbnRzIHNob3VsZCBnZXRcbiAgICogcmVuZGVyZWQuIG1lZGlhUXVlcmllcyBhY2NlcHRzIG11bHRpcGxlIE1lZGlhIFF1ZXJ5IGVudHJpZXNcbiAgICogd2hpY2ggY2FuIGdldCBjb21iaW5lZCBieSBkZWZpbmluZyBhIGNvbmRpdGlvbk9wZXJhdG9yLlxuICAgKiBUeXBlIGlzOiBzdHJpbmdpZmllZCBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZy1PYmplY3RcbiAgICogQW4gZXhhbXBsZSBjb3VsZCBsb29rIGxpa2UgdGhpczpcbiAgICoge1xuICAgKiAgICBcImJyZWFrcG9pbnRzXCI6IFtcbiAgICogICAgICB7XG4gICAqICAgICAgICBcImltYWdlXCI6IHtcbiAgICogICAgICAgICAgXCJoZWlnaHRcIjogXCI2NzVcIixcbiAgICogICAgICAgICAgXCJ3aWR0aFwiOiBcIjEyMDBcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbGFyZ2UtbWluXCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICogICAgICAgICAgfVxuICAgKiAgICAgICAgXVxuICAgKiAgICAgIH0sXG4gICAqICAgICAge1xuICAgKiAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAqICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiNTQ5XCIsXG4gICAqICAgICAgICAgIFwid2lkdGhcIjogXCI5NzZcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtc21hbGwtbWluXCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICogICAgICAgICAgfVxuICAgKiAgICAgICAgXVxuICAgKiAgICAgIH0sXG4gICAqICAgICAge1xuICAgKiAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAqICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiMTgwXCIsXG4gICAqICAgICAgICAgIFwid2lkdGhcIjogXCIzMjBcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1heC13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbWljcm8tbWF4XCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogXCJhbmRcIlxuICAgKiAgICAgICAgICB9LFxuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwib3JpZW50YXRpb25cIixcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAqICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiBmYWxzZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJsYW5kc2NhcGVcIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgKiAgICAgICAgICB9XG4gICAqICAgICAgICBdXG4gICAqICAgICAgfVxuICAgKiAgICBdXG4gICAqICB9XG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncGljdHVyZS1zaXplcy1jb25maWcnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBwaWN0dXJlU2l6ZXNDb25maWc6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBCb3JkZXIgcmFkaXVzIG9mIHRoZSBpbWFnZS4gQ2hvb3NlIGJldHdlZW4gYSBkZWZhdWx0IHJhZGl1cywgbm8gcmFkaXVzIGFuZCBhIGNvbXBsZXRlbHkgcm91bmQgaW1hZ2UuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdib3JkZXItcmFkaXVzJywgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3IgYm9yZGVyUmFkaXVzOlxuICAgIHwgJ2RlZmF1bHQnXG4gICAgfCAnbm9uZSdcbiAgICB8ICdyb3VuZCcgPSAnZGVmYXVsdCc7XG5cbiAgLyoqXG4gICAqIFNldCBhbiBhc3BlY3QgcmF0aW9cbiAgICogZGVmYXVsdCBpcyAnMTYtOScgKDE2LzkpXG4gICAqIG90aGVyIHZhbHVlczogJ2ZyZWUnLCAnMS0xJywgJzEtMicsICcyLTEnLCAnMi0zJywgJzMtMicsICczLTQnLCAnNC0zJywgJzQtNScsICc1LTQnLCAnOS0xNidcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FzcGVjdC1yYXRpbycsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGFzcGVjdFJhdGlvOlxuICAgIHwgJ2ZyZWUnXG4gICAgfCAnMS0xJ1xuICAgIHwgJzEtMidcbiAgICB8ICcyLTEnXG4gICAgfCAnMi0zJ1xuICAgIHwgJzMtMidcbiAgICB8ICczLTQnXG4gICAgfCAnNC0zJ1xuICAgIHwgJzQtNSdcbiAgICB8ICc1LTQnXG4gICAgfCAnOS0xNidcbiAgICB8ICcxNi05JyA9ICcxNi05JztcblxuICAvKiogV2hldGhlciB0aGUgaW1hZ2UgaXMgZmluaXNoZWQgbG9hZGluZyBvciBmYWlsZWQgdG8gbG9hZC4gKi9cbiAgcHVibGljIGdldCBjb21wbGV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy48SFRNTEltYWdlRWxlbWVudD4oJy5zYmItaW1hZ2VfX2ltZycpPy5jb21wbGV0ZSA/PyBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgbmVzdGVkIGluIGFuIGA8c2JiLXRlYXNlci1oZXJvPmAgZWxlbWVudCBvbiBpbiBhbiBgPHNiYi10ZWFzZXItcGFpZD5gIGVsZW1lbnQuXG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS10ZWFzZXInLFxuICAgICAgISFob3N0Q29udGV4dCgnc2JiLXRlYXNlci1oZXJvJywgdGhpcykgfHwgISF0aGlzLmNsb3Nlc3QoJ3NiYi10ZWFzZXItcGFpZCcpLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci51cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy5fY2FwdGlvbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9saW5rc0luQ2FwdGlvbiA9IHRoaXMuX2NhcHRpb25FbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTExpbmtFbGVtZW50PignYScpO1xuXG4gICAgaWYgKCF0aGlzLl9saW5rc0luQ2FwdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2FkZEZvY3VzQWJpbGl0eVRvTGlua3NJbkNhcHRpb24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGltYWdlIGhhcyBhbHJlYWR5IGJlZW4gY29tcGxldGVseSBsb2FkZWQuXG4gICAgYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZTtcbiAgICBpZiAodGhpcy5jb21wbGV0ZSkge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbG9hZGVkJywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbG9nUGVyZm9ybWFuY2VNYXJrcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wZXJmb3JtYW5jZU1hcmspIHtcbiAgICAgIHBlcmZvcm1hbmNlLmNsZWFyTWFya3ModGhpcy5wZXJmb3JtYW5jZU1hcmspO1xuICAgICAgcGVyZm9ybWFuY2UubWFyayh0aGlzLnBlcmZvcm1hbmNlTWFyayk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbWF0Y2hNZWRpYVF1ZXJ5RGVzaWduVG9rZW4oYnJlYWtwb2ludFNpemVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gYnJlYWtwb2ludE1hcFticmVha3BvaW50U2l6ZU5hbWVdO1xuICAgIHJldHVybiB2YWx1ZSA/IGAke3ZhbHVlfXJlbWAgOiAnJztcbiAgfVxuXG4gIHByaXZhdGUgX2FkZEZvY3VzQWJpbGl0eVRvTGlua3NJbkNhcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fbGlua3NJbkNhcHRpb24/LmZvckVhY2goKGxpbmspID0+IHtcbiAgICAgIGxpbmsucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlcGFyZUltYWdlVXJsKGJhc2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZCwgbHF1aXAgPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgaWYgKCFiYXNlVXJsIHx8IGJhc2VVcmwgPT09ICcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRpbmcgYW4gVVJMIHdpdGhvdXQgYSBzY2hlbWEgd2lsbCBmYWlsLCBidXQgaXMgYSB2YWxpZCBpbnB1dCBmb3IgYmFzZVVybC5cbiAgICAvLyBlLmcuIGltYWdlLXNyYyBjYW4gYmUgaHR0cHM6Ly9leGFtcGxlLmNvbS9teS1pbWFnZS5wbmcgb3IgL215LWltYWdlLnBuZ1xuICAgIGNvbnN0IGlzRnVsbHlRdWFsaWZpZWRVcmwgPSAhIWJhc2VVcmwubWF0Y2goL15cXHcrOlxcL1xcLy8pO1xuICAgIGNvbnN0IGltYWdlVXJsT2JqID0gaXNGdWxseVF1YWxpZmllZFVybCA/IG5ldyBVUkwoYmFzZVVybCkgOiBuZXcgVVJMKGBodHRwOi8vbm9vcC8ke2Jhc2VVcmx9YCk7XG5cbiAgICBpZiAobHF1aXApIHtcbiAgICAgIC8vIGJsdXIgYW5kIHNpemU6ID9ibHVyPTEwMCZ3PTEwMCZoPTU2XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdibHVyJywgJzEwMCcpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgndycsICcxMDAnKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2gnLCAnNTYnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ0ROIEluZm9ybWF0aW9uOiBodHRwczovL2RvY3MuaW1naXguY29tL2FwaXMvcmVuZGVyaW5nXG4gICAgICAvLyBwYXJhbS5hdXRvOiA/YXV0bz1mb3JtYXQsY29tcHJlc3MsY3M9dGlueXNyZ2JcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2F1dG8nLCAnZm9ybWF0LGNvbXByZXNzLGNzPXRpbnlzcmdiJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VzdG9tRm9jYWxQb2ludCkge1xuICAgICAgLy8gY3JvcDogYCZmaXQ9Y3JvcCZjcm9wPWZvY2FscG9pbnQmZnAteD0ke3RoaXMuZm9jYWxQb2ludFh9JmZwLXk9JHt0aGlzLmZvY2FsUG9pbnRZfSZmcC16PTFgLFxuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZml0JywgJ2Nyb3AnKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2Nyb3AnLCAnZm9jYWxwb2ludCcpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZnAteCcsIHRoaXMuZm9jYWxQb2ludFgudG9TdHJpbmcoMTApKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZwLXknLCB0aGlzLmZvY2FsUG9pbnRZLnRvU3RyaW5nKDEwKSk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmcC16JywgJzEnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb2NhbFBvaW50RGVidWcpIHtcbiAgICAgIC8vIGZvY2FsUG9pbnREZWJ1ZzogJyZmcC1kZWJ1Zz10cnVlJ1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZnAtZGVidWcnLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIC8vIEluIGNhc2Ugb2YgXCJub29wXCIgaG9zdCwgd2UgZG9uJ3QgcmV0dXJuIHRoZSBob3N0IGFuZCBtdXN0IHJlbW92ZSB0aGVcbiAgICAvLyBzdGFydGluZyBgL2Agb2YgdGhlIHBhdGhuYW1lLlxuICAgIHJldHVybiBpc0Z1bGx5UXVhbGlmaWVkVXJsXG4gICAgICA/IGltYWdlVXJsT2JqLmhyZWZcbiAgICAgIDogaW1hZ2VVcmxPYmoucGF0aG5hbWUuc3Vic3RyaW5nKDEpICsgaW1hZ2VVcmxPYmouc2VhcmNoO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlcGFyZVBpY3R1cmVTaXplQ29uZmlncygpOiBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZ0JyZWFrcG9pbnRbXSB7XG4gICAgbGV0IHBpY3R1cmVTaXplc0NvbmZpZztcblxuICAgIGlmICh0aGlzLnBpY3R1cmVTaXplc0NvbmZpZykge1xuICAgICAgcGljdHVyZVNpemVzQ29uZmlnID0gdGhpcy5waWN0dXJlU2l6ZXNDb25maWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGRlZmF1bHQgY29uZmlnXG4gICAgICBwaWN0dXJlU2l6ZXNDb25maWcgPSBge1xuICAgICAgICBcImJyZWFrcG9pbnRzXCI6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImltYWdlXCI6IHtcbiAgICAgICAgICAgICAgXCJoZWlnaHRcIjogNjc1LFxuICAgICAgICAgICAgICBcIndpZHRoXCI6IDEyMDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1lZGlhUXVlcmllc1wiOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJtaW4td2lkdGhcIixcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAgICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcInNiYi1icmVha3BvaW50LWxhcmdlLW1pblwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiaW1hZ2VcIjoge1xuICAgICAgICAgICAgICBcImhlaWdodFwiOiA1NDksXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogOTc2XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWluLXdpZHRoXCIsXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgICAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1taWNyby1taW5cIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImltYWdlXCI6IHtcbiAgICAgICAgICAgICAgXCJoZWlnaHRcIjogMTgwLFxuICAgICAgICAgICAgICBcIndpZHRoXCI6IDMyMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1heC13aWR0aFwiLFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtemVyby1tYXhcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1hZ2VIZWxwZXJHZXRCcmVha3BvaW50cyhwaWN0dXJlU2l6ZXNDb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlTWVkaWFRdWVyeVN0cmluZyhcbiAgICBtZWRpYVF1ZXJpZXM6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeVtdLFxuICApOiBzdHJpbmcge1xuICAgIGxldCBtZWRpYVF1ZXJ5ID0gJyc7XG5cbiAgICBtZWRpYVF1ZXJpZXMuZm9yRWFjaCgobXEpID0+IHtcbiAgICAgIGNvbnN0IG1xQ29uZGl0aW9uID0gbXEuY29uZGl0aW9uRmVhdHVyZTtcbiAgICAgIGxldCBtcVZhbHVlO1xuXG4gICAgICBpZiAobXEuY29uZGl0aW9uRmVhdHVyZVZhbHVlLmx5bmVEZXNpZ25Ub2tlbikge1xuICAgICAgICBtcVZhbHVlID0gdGhpcy5fbWF0Y2hNZWRpYVF1ZXJ5RGVzaWduVG9rZW4obXEuY29uZGl0aW9uRmVhdHVyZVZhbHVlLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1xVmFsdWUgPSBtcS5jb25kaXRpb25GZWF0dXJlVmFsdWUudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1xQ29tYmluZXIgPSBtcS5jb25kaXRpb25PcGVyYXRvciA/IGAgJHttcS5jb25kaXRpb25PcGVyYXRvcn0gYCA6ICcnO1xuXG4gICAgICBtZWRpYVF1ZXJ5ICs9IGAoJHttcUNvbmRpdGlvbn06ICR7bXFWYWx1ZX0pJHttcUNvbWJpbmVyfWA7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVkaWFRdWVyeTtcbiAgfVxuXG4gIEBldmVudE9wdGlvbnMoZXZlbnRMaXN0ZW5lck9wdGlvbnMpXG4gIHByaXZhdGUgX2ltYWdlTG9hZGVkKCk6IHZvaWQge1xuICAgIHRoaXMuX2xvZ1BlcmZvcm1hbmNlTWFya3MoKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1sb2FkZWQnLCB0cnVlKTtcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdsb2FkJykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgbGV0IHsgY2FwdGlvbiB9ID0gdGhpcztcbiAgICBsZXQgc2NoZW1hRGF0YSA9ICcnO1xuXG4gICAgY29uc3QgaW1hZ2VVcmxMUUlQID0gdGhpcy5fcHJlcGFyZUltYWdlVXJsKHRoaXMuaW1hZ2VTcmMsIHRydWUpO1xuICAgIGNvbnN0IGltYWdlVXJsV2l0aFBhcmFtcyA9IHRoaXMuX3ByZXBhcmVJbWFnZVVybCh0aGlzLmltYWdlU3JjLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5sb2FkaW5nID09PSAnbGF6eScpIHtcbiAgICAgIHRoaXMuZGVjb2RpbmcgPSAnYXN5bmMnO1xuICAgICAgdGhpcy5pbXBvcnRhbmNlID0gJ2xvdyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29weXJpZ2h0KSB7XG4gICAgICBjYXB0aW9uID0gYCR7dGhpcy5jYXB0aW9ufSDCqSR7dGhpcy5jb3B5cmlnaHR9YDtcbiAgICAgIHNjaGVtYURhdGEgPSBge1xuICAgICAgICBcIkBjb250ZXh0XCI6IFwiaHR0cHM6Ly9zY2hlbWEub3JnXCIsXG4gICAgICAgIFwiQHR5cGVcIjogXCJQaG90b2dyYXBoXCIsXG4gICAgICAgIFwiaW1hZ2VcIjogXCIke3RoaXMuaW1hZ2VTcmN9XCIsXG4gICAgICAgIFwiY29weXJpZ2h0SG9sZGVyXCI6IHtcbiAgICAgICAgICBcIkB0eXBlXCI6IFwiJHt0aGlzLmNvcHlyaWdodEhvbGRlcn1cIixcbiAgICAgICAgICBcIm5hbWVcIjogXCIke3RoaXMuY29weXJpZ2h0fVwiXG4gICAgICAgIH1cbiAgICAgIH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHBpY3R1cmVTaXplQ29uZmlncyA9IHRoaXMuX3ByZXBhcmVQaWN0dXJlU2l6ZUNvbmZpZ3MoKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBhbHQgYXR0cmlidXRlIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCBmb3IgdGhlIGltZyBlbGVtZW50LlxuICAgICAqIElmIGl0IGhhcyBhbiBlbXB0eSBzdHJpbmcgYXMgaXRzIHZhbHVlLCBpdCBpcyBzaW1wbHkgaWdub3JlZFxuICAgICAqIGJ5IGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMuIElmIHdlIGxlYXZlIGl0IG91dCBjb21wbGV0ZWx5LFxuICAgICAqIHRoZXkgbWlnaHQgdHJ5IHRvIGludGVycHJldCB0aGUgaW1nIGVsZW1lbnQuXG4gICAgICovXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZmlndXJlIGNsYXNzPVwic2JiLWltYWdlX19maWd1cmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1pbWFnZV9fd3JhcHBlclwiPlxuICAgICAgICAgICR7IXRoaXMuc2tpcExxaXBcbiAgICAgICAgICAgID8gaHRtbGA8aW1nXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1pbWFnZV9fYmx1cnJlZFwiXG4gICAgICAgICAgICAgICAgc3JjPSR7aW1hZ2VVcmxMUUlQfVxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwMFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTYyXCJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPSR7dGhpcy5sb2FkaW5nID8/IG5vdGhpbmd9XG4gICAgICAgICAgICAgICAgZGVjb2Rpbmc9JHt0aGlzLmRlY29kaW5nID8/IG5vdGhpbmd9XG4gICAgICAgICAgICAgIC8+YFxuICAgICAgICAgICAgOiBub3RoaW5nfVxuXG4gICAgICAgICAgPHBpY3R1cmU+XG4gICAgICAgICAgICA8IS0tIHJlbmRlciBwaWN0dXJlIGVsZW1lbnQgc291cmNlcyAtLT5cbiAgICAgICAgICAgICR7cGljdHVyZVNpemVDb25maWdzLm1hcCgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGltYWdlSGVpZ2h0ID0gY29uZmlnLmltYWdlLmhlaWdodDtcbiAgICAgICAgICAgICAgY29uc3QgaW1hZ2VXaWR0aCA9IGNvbmZpZy5pbWFnZS53aWR0aDtcbiAgICAgICAgICAgICAgY29uc3QgbWVkaWFRdWVyeSA9IHRoaXMuX2NyZWF0ZU1lZGlhUXVlcnlTdHJpbmcoY29uZmlnLm1lZGlhUXVlcmllcyk7XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgaHRtbGAgPHNvdXJjZVxuICAgICAgICAgICAgICAgICAgbWVkaWE9JHtgJHttZWRpYVF1ZXJ5fWB9XG4gICAgICAgICAgICAgICAgICBzaXplcz0ke2Ake2ltYWdlV2lkdGh9cHhgfVxuICAgICAgICAgICAgICAgICAgc3Jjc2V0PSR7XG4gICAgICAgICAgICAgICAgICAgIGAke2ltYWdlVXJsV2l0aFBhcmFtc30mdz0ke2ltYWdlV2lkdGh9Jmg9JHtpbWFnZUhlaWdodH0mcT0ke3RoaXMuX2NvbmZpZy5ub25SZXRpbmFRdWFsaXR5fSAke2ltYWdlV2lkdGh9dywgYCArXG4gICAgICAgICAgICAgICAgICAgIGAke2ltYWdlVXJsV2l0aFBhcmFtc30mdz0ke2ltYWdlV2lkdGggKiAyfSZoPSR7aW1hZ2VIZWlnaHQgKiAyfSZxPSR7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uZmlnLnJldGluYVF1YWxpdHlcbiAgICAgICAgICAgICAgICAgICAgfSAke2ltYWdlV2lkdGggKiAyfXdgXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPjwvc291cmNlPmAsXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgYWx0PSR7dGhpcy5hbHQgfHwgJyd9XG4gICAgICAgICAgICAgIEBsb2FkPSR7dGhpcy5faW1hZ2VMb2FkZWR9XG4gICAgICAgICAgICAgIEBlcnJvcj0keygpID0+IHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2Vycm9yJykpfVxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1pbWFnZV9faW1nXCJcbiAgICAgICAgICAgICAgc3JjPSR7dGhpcy5pbWFnZVNyYyF9XG4gICAgICAgICAgICAgIHdpZHRoPVwiMTAwMFwiXG4gICAgICAgICAgICAgIGhlaWdodD1cIjU2MlwiXG4gICAgICAgICAgICAgIGxvYWRpbmc9JHt0aGlzLmxvYWRpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgZGVjb2Rpbmc9JHt0aGlzLmRlY29kaW5nID8/IG5vdGhpbmd9XG4gICAgICAgICAgICAgIC5mZXRjaFByaW9yaXR5PSR7dGhpcy5pbXBvcnRhbmNlID8/IG5vdGhpbmd9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvcGljdHVyZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICR7Y2FwdGlvblxuICAgICAgICAgID8gaHRtbGA8ZmlnY2FwdGlvblxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1pbWFnZV9fY2FwdGlvblwiXG4gICAgICAgICAgICAgIC5pbm5lckhUTUw9JHtjYXB0aW9ufVxuICAgICAgICAgICAgICAke3JlZigoZWwpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYXB0aW9uRWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgID48L2ZpZ2NhcHRpb24+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgJHtzY2hlbWFEYXRhXG4gICAgICAgICAgPyBodG1sYDxzY3JpcHQgdHlwZT1cImFwcGxpY2F0aW9uL2xkK2pzb25cIiAuaW5uZXJIVE1MPSR7c2NoZW1hRGF0YX0+PC9zY3JpcHQ+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgIDwvZmlndXJlPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1pbWFnZSc6IFNiYkltYWdlRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBc0JPLE1BQU0sdUJBQXVCO0FBQzdCLE1BQU0sdUJBQXVCO0FBQzdCLE1BQU0sd0JBQXdCO0FBQzlCLE1BQU0sd0JBQXdCO0FBQzlCLE1BQU0sd0JBQXdCO0FBQzlCLE1BQU0sd0JBQXdCO0FBQzlCLE1BQU0seUJBQXlCO0FBQy9CLE1BQU0seUJBQXlCO0FBQy9CLE1BQU0sd0JBQXdCO0FBQzlCLE1BQU0sd0JBQXdCO0FBQzlCLE1BQU0sdUJBQXVCO0FBQzdCLE1BQU0sdUJBQXVCO0FBQzdCLE1BQU0sd0JBQXdCO0FBQzlCLE1BQU0sd0JBQXdCO0FBMFI5QixNQUFNLHNCQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BRbkMsTUFBTSw0QkFBNEIsQ0FDaEMsZUFDbUQ7QUFDbkQsTUFBSSxDQUFDLGNBQWMsV0FBVyxXQUFXLEdBQUc7QUFDMUMsV0FBTzs7QUFJSCxRQUFBLGFBQ0YsTUFDRSxRQUFRLEtBQ04scUpBQXFKO0FBR3pKLE1BQUE7QUFFQSxNQUFBO0FBQ1csaUJBQUEsS0FBSyxNQUFNLFVBQVU7QUFBQSxFQUFBLFFBQzVCOztBQUVOLFdBQU87O0FBR1QsTUFBSSxDQUFDLFdBQVcsZUFBZSxXQUFXLFlBQVksV0FBVyxHQUFHOztBQUVsRSxXQUFPOztBQUlULE1BQUksQ0FBQyxNQUFNLFFBQVEsV0FBVyxXQUFXLEdBQUc7O0FBRTFDLFdBQU87O0FBT1QsTUFBSSxtQkFBbUI7QUFDdkIsTUFBSSxxQkFBcUI7QUFFbkIsUUFBQSxjQUFjLENBQUMsU0FBUyxjQUFjO0FBRWpDLGFBQUEsWUFBWSxRQUFRLENBQUMsZUFBYztBQUN0QyxVQUFBLGlCQUFpQixPQUFPLEtBQUssVUFBVTtBQUU5QixtQkFBQSxRQUFRLENBQUMsa0JBQWlCO0FBQ3ZDLFVBQUksQ0FBQyxZQUFZLFNBQVMsYUFBYSxHQUFHO0FBQ3JCLDJCQUFBO0FBQUEsTUFBQTtBQUFBLElBQ3JCLENBQ0Q7QUFFVyxnQkFBQSxRQUFRLENBQUMsZUFBYztBQUNqQyxVQUFJLENBQUMsZUFBZSxTQUFTLFVBQVUsR0FBRztBQUNuQiw2QkFBQTtBQUFBLE1BQUE7QUFBQSxJQUN2QixDQUNEO0FBQUEsRUFBQSxDQUNGO0FBRUQsTUFBSSxvQkFBb0Isb0JBQW9COztBQUUxQyxXQUFPOztBQUdULFNBQU8sV0FBVztBQUNwQjtBQUVBLE1BQU0sdUJBQXVCO0FBQUEsRUFDM0IsTUFBTTtBQUFBLEVBQ04sU0FBUzs7QUFHWCxNQUFNLFVBQVUsQ0FBQyxPQUFzQjtBQUNyQyxTQUFPLEtBQUs7QUFDZDtBQUVBLE1BQU0sZ0JBQXdDO0FBQUEsRUFDNUMsMkJBQTJCLFFBQVEsb0JBQW9CO0FBQUEsRUFDdkQsMkJBQTJCLFFBQVEsb0JBQW9CO0FBQUEsRUFDdkQsNEJBQTRCLFFBQVEscUJBQXFCO0FBQUEsRUFDekQsNEJBQTRCLFFBQVEscUJBQXFCO0FBQUEsRUFDekQsNEJBQTRCLFFBQVEscUJBQXFCO0FBQUEsRUFDekQsNEJBQTRCLFFBQVEscUJBQXFCO0FBQUEsRUFDekQsNkJBQTZCLFFBQVEsc0JBQXNCO0FBQUEsRUFDM0QsNkJBQTZCLFFBQVEsc0JBQXNCO0FBQUEsRUFDM0QsNEJBQTRCLFFBQVEscUJBQXFCO0FBQUEsRUFDekQsNEJBQTRCLFFBQVEscUJBQXFCO0FBQUEsRUFDekQsMkJBQTJCLFFBQVEsb0JBQW9CO0FBQUEsRUFDdkQsMkJBQTJCLFFBQVEsb0JBQW9CO0FBQUEsRUFDdkQsNEJBQTRCLFFBQVEscUJBQXFCO0FBQUEsRUFDekQsNEJBQTRCLFFBQVEscUJBQXFCOztJQWtCckQsbUJBQWUsTUFBQTs7MEJBRHBCLGNBQWMsV0FBVyxDQUFDOzs7O29CQUNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBUixFQUFBQSxNQUFBLGNBQVEsWUFBVTtBQUFBOztBQXVCdEM7QUFXQTtBQVVBO0FBU0E7QUFNQTtBQVNBO0FBU1k7QUFRWjtBQU9BO0FBT0E7QUFjQTtBQVdZO0FBWUE7QUFpQlo7QUF3RUE7QUFLeUQ7QUFXekQ7QUExT3VCLFdBQUEsa0JBUG5CO0FBU0ksV0FBQSxVQUFVO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsZUFBZTtBQUFBO0FBWUQseUJBQUEsdUJBQUEsa0JBQUEsTUFBQSxtQkFBYyxFQUFFO0FBV2hCLHlCQUFBLDZCQUFBLGtCQUFBLE1BQUEsc0JBQUEsR0FBQSxrQkFBQSxNQUFBLHdCQUFvQixLQUFLO0FBVXpCLHlCQUFBLDRCQUFBLGtCQUFBLE1BQUEsMkJBQUEsR0FBQSxrQkFBQSxNQUFBLHVCQUFrQixFQUFFO0FBU3BCLHlCQUFBLDhCQUFBLGtCQUFBLE1BQUEsMEJBQUEsR0FBQSxrQkFBQSxNQUFBLHlCQUFvQixFQUFFO0FBTXRCLHlCQUFBLG9DQUFBLGtCQUFBLE1BQUEsNEJBQUEsR0FBQSxrQkFBQSxNQUFBLCtCQUE2QyxjQUFjO0FBUzNELHlCQUFBLHFDQUFBLGtCQUFBLE1BQUEsa0NBQUEsR0FBQSxrQkFBQSxNQUFBLGdDQUE0QixLQUFLO0FBU3JCLHlCQUFBLDZCQUFBLGtCQUFBLE1BQUEsbUNBQUEsR0FBQSxrQkFBQSxNQUFBLHdCQUFzQyxNQUFNO0FBUXhELHlCQUFBLG9DQUFBLGtCQUFBLE1BQUEsMkJBQUEsR0FBQSxrQkFBQSxNQUFBLCtCQUEyQixLQUFLO0FBT2hDLHlCQUFBLGdDQUFBLGtCQUFBLE1BQUEsa0NBQUEsR0FBQSxrQkFBQSxNQUFBLDJCQUFzQixDQUFDO0FBT3ZCLHlCQUFBLGdDQUFBLGtCQUFBLE1BQUEsOEJBQUEsR0FBQSxrQkFBQSxNQUFBLDJCQUFzQixDQUFDO0FBY3ZCLHlCQUFBLDZCQUFBLGtCQUFBLE1BQUEsOEJBQUEsR0FBQSxrQkFBQSxNQUFBLHdCQUFtQixFQUFFO0FBV1QseUJBQUEsK0JBQUEsa0JBQUEsTUFBQSwyQkFBQSxHQUFBLGtCQUFBLE1BQUEsMEJBQXNDLE1BQU07QUFZNUMseUJBQUEsNEJBQUEsa0JBQUEsTUFBQSw2QkFBQSxHQUFBLGtCQUFBLE1BQUEsdUJBQTRCLE9BQU87QUFpQi9DLHlCQUFBLG9DQUFBLGtCQUFBLE1BQUEsMEJBQUEsR0FBQSxrQkFBQSxNQUFBLCtCQUEwQixFQUFFO0FBd0U1Qix5QkFBQSx1Q0FBQSxrQkFBQSxNQUFBLGtDQUFBLEdBQUEsa0JBQUEsTUFBQSxrQ0FBNkIsRUFBRTtBQUswQix5QkFBQSxpQ0FBQSxrQkFBQSxNQUFBLHFDQUFBLEdBQUEsa0JBQUEsTUFBQSw0QkFHM0QsU0FBUztBQVFQLHlCQUFBLGdDQUFBLGtCQUFBLE1BQUEsK0JBQUEsR0FBQSxrQkFBQSxNQUFBLDJCQVlILE1BQU07Ozs7Ozs7Ozs7SUF0T25CLElBQWdCLE1BQWlCO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFqQyxJQUFnQixJQUFpQixPQUFBO0FBQUEseUJBQUEsdUJBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQVdqQyxJQUFnQixXQUEwQjtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBMUMsSUFBZ0IsU0FBMEIsT0FBQTtBQUFBLHlCQUFBLDRCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBVTFDLElBQWdCLFVBQXFCO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFyQyxJQUFnQixRQUFxQixPQUFBO0FBQUEseUJBQUEsMkJBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBU3JDLElBQWdCLFlBQXVCO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUF2QyxJQUFnQixVQUF1QixPQUFBO0FBQUEseUJBQUEsNkJBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFNdkMsSUFBZ0Isa0JBQTREO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUE1RSxJQUFnQixnQkFBNEQsT0FBQTtBQUFBLHlCQUFBLG1DQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQVM1RSxJQUFnQixtQkFBa0M7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQWxELElBQWdCLGlCQUFrQyxPQUFBO0FBQUEseUJBQUEsb0NBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQVN0QyxJQUFnQixXQUE2QztBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBN0QsSUFBZ0IsU0FBNkMsT0FBQTtBQUFBLHlCQUFBLDRCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFRekUsSUFBZ0Isa0JBQWlDO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFqRCxJQUFnQixnQkFBaUMsT0FBQTtBQUFBLHlCQUFBLG1DQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBT2pELElBQWdCLGNBQXdCO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUF4QyxJQUFnQixZQUF3QixPQUFBO0FBQUEseUJBQUEsK0JBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFPeEMsSUFBZ0IsY0FBd0I7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXhDLElBQWdCLFlBQXdCLE9BQUE7QUFBQSx5QkFBQSwrQkFBQTtBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBY3hDLElBQWdCLFdBQXNCO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUF0QyxJQUFnQixTQUFzQixPQUFBO0FBQUEseUJBQUEsNEJBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFXMUIsSUFBZ0IsYUFBNkM7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQTdELElBQWdCLFdBQTZDLE9BQUE7QUFBQSx5QkFBQSw4QkFBQTtBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBWTdELElBQWdCLFVBQW9DO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFwRCxJQUFnQixRQUFvQyxPQUFBO0FBQUEseUJBQUEsMkJBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQWlCaEUsSUFBZ0Isa0JBQTZCO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUE3QyxJQUFnQixnQkFBNkIsT0FBQTtBQUFBLHlCQUFBLG1DQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQXdFN0MsSUFBZ0IscUJBQWdDO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFoRCxJQUFnQixtQkFBZ0MsT0FBQTtBQUFBLHlCQUFBLHNDQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBS1MsSUFBZ0IsZUFHakQ7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBSGlDLElBQWdCLGFBR2pELE9BQUE7QUFBQSx5QkFBQSxnQ0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFReEIsSUFBZ0IsY0FZSTtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFacEIsSUFBZ0IsWUFZSSxPQUFBO0FBQUEseUJBQUEsK0JBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUdwQixJQUFXLFdBQVE7O0FBQ2pCLGVBQU8sWUFBQUEsTUFBQSxLQUFLLGVBQUwsZ0JBQUFBLElBQWlCLGtCQUFqQix3QkFBQUEsS0FBbUQsdUJBQW5ELG1CQUF1RSxhQUFZO0FBQUEsSUFBQTtBQUFBLElBRzVFLG9CQUFpQjtBQUMvQixZQUFNLGtCQUFpQjtBQUV2QixXQUFLLGdCQUNILGVBQ0EsQ0FBQyxDQUFDLFlBQVksbUJBQW1CLElBQUksS0FBSyxDQUFDLENBQUMsS0FBSyxRQUFRLGlCQUFpQixDQUFDO0FBQUEsSUFBQTtBQUFBLElBSTVELFFBQVEsbUJBQXVDO0FBQ2hFLFlBQU0sUUFBUSxpQkFBaUI7QUFFM0IsVUFBQSxDQUFDLEtBQUssaUJBQWlCO0FBQ3pCO0FBQUEsTUFBQTtBQUdGLFdBQUssa0JBQWtCLEtBQUssZ0JBQWdCLGlCQUFrQyxHQUFHO0FBRTdFLFVBQUEsQ0FBQyxLQUFLLGlCQUFpQjtBQUN6QjtBQUFBLE1BQUE7QUFHRixXQUFLLGlDQUFnQztBQUFBLElBQUE7QUFBQSxJQUdwQixNQUFNLGFBQWEsbUJBQXVDO0FBQzNFLFlBQU0sYUFBYSxpQkFBaUI7QUFHcEMsWUFBTSxLQUFLO0FBQ1gsVUFBSSxLQUFLLFVBQVU7QUFDWixhQUFBLGdCQUFnQixlQUFlLElBQUk7QUFBQSxNQUFBO0FBQUEsSUFDMUM7QUFBQSxJQUdNLHVCQUFvQjtBQUMxQixVQUFJLEtBQUssaUJBQWlCO0FBQ1osb0JBQUEsV0FBVyxLQUFLLGVBQWU7QUFDL0Isb0JBQUEsS0FBSyxLQUFLLGVBQWU7QUFBQSxNQUFBO0FBQUEsSUFDdkM7QUFBQSxJQUdNLDRCQUE0QixvQkFBMEI7QUFDdEQsWUFBQSxRQUFRLGNBQWMsa0JBQWtCO0FBQ3ZDLGFBQUEsUUFBUSxHQUFHLEtBQUssUUFBUTtBQUFBLElBQUE7QUFBQSxJQUd6QixtQ0FBZ0M7O0FBQ2pDLE9BQUFBLE1BQUEsS0FBQSxvQkFBQSxnQkFBQUEsSUFBaUIsUUFBUSxDQUFDLFNBQVE7QUFDckMsYUFBSyxnQkFBZ0IsVUFBVTtBQUFBLE1BQUE7QUFBQSxJQUNoQztBQUFBLElBR0ssaUJBQWlCLFNBQTZCLFFBQVEsT0FBSztBQUM3RCxVQUFBLENBQUMsV0FBVyxZQUFZLElBQUk7QUFDdkIsZUFBQTtBQUFBLE1BQUE7QUFLVCxZQUFNLHNCQUFzQixDQUFDLENBQUMsUUFBUSxNQUFNLFdBQVc7QUFDakQsWUFBQSxjQUFjLHNCQUFzQixJQUFJLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxlQUFlLE9BQU8sRUFBRTtBQUU3RixVQUFJLE9BQU87QUFFRyxvQkFBQSxhQUFhLE9BQU8sUUFBUSxLQUFLO0FBQ2pDLG9CQUFBLGFBQWEsT0FBTyxLQUFLLEtBQUs7QUFDOUIsb0JBQUEsYUFBYSxPQUFPLEtBQUssSUFBSTtBQUFBLE1BQUEsT0FDcEM7QUFHTyxvQkFBQSxhQUFhLE9BQU8sUUFBUSw2QkFBNkI7QUFBQSxNQUFBO0FBR3ZFLFVBQUksS0FBSyxrQkFBa0I7QUFFYixvQkFBQSxhQUFhLE9BQU8sT0FBTyxNQUFNO0FBQ2pDLG9CQUFBLGFBQWEsT0FBTyxRQUFRLFlBQVk7QUFDcEQsb0JBQVksYUFBYSxPQUFPLFFBQVEsS0FBSyxZQUFZLFNBQVMsRUFBRSxDQUFDO0FBQ3JFLG9CQUFZLGFBQWEsT0FBTyxRQUFRLEtBQUssWUFBWSxTQUFTLEVBQUUsQ0FBQztBQUN6RCxvQkFBQSxhQUFhLE9BQU8sUUFBUSxHQUFHO0FBQUEsTUFBQTtBQUc3QyxVQUFJLEtBQUssaUJBQWlCO0FBRVosb0JBQUEsYUFBYSxPQUFPLFlBQVksTUFBTTtBQUFBLE1BQUE7QUFLN0MsYUFBQSxzQkFDSCxZQUFZLE9BQ1osWUFBWSxTQUFTLFVBQVUsQ0FBQyxJQUFJLFlBQVk7QUFBQSxJQUFBO0FBQUEsSUFHOUMsNkJBQTBCO0FBQzVCLFVBQUE7QUFFSixVQUFJLEtBQUssb0JBQW9CO0FBQzNCLDZCQUFxQixLQUFLO0FBQUEsTUFBQSxPQUNyQjtBQUVnQiw2QkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BQUE7QUFzRHZCLGFBQU8sMEJBQTBCLGtCQUFrQjtBQUFBLElBQUE7QUFBQSxJQUc3Qyx3QkFDTixjQUE2RDtBQUU3RCxVQUFJLGFBQWE7QUFFSixtQkFBQSxRQUFRLENBQUMsT0FBTTtBQUMxQixjQUFNLGNBQWMsR0FBRztBQUNuQixZQUFBO0FBRUEsWUFBQSxHQUFHLHNCQUFzQixpQkFBaUI7QUFDNUMsb0JBQVUsS0FBSyw0QkFBNEIsR0FBRyxzQkFBc0IsS0FBSztBQUFBLFFBQUEsT0FDcEU7QUFDTCxvQkFBVSxHQUFHLHNCQUFzQjtBQUFBLFFBQUE7QUFHckMsY0FBTSxhQUFhLEdBQUcsb0JBQW9CLElBQUksR0FBRyxpQkFBaUIsTUFBTTtBQUV4RSxzQkFBYyxJQUFJLFdBQVcsS0FBSyxPQUFPLElBQUksVUFBVTtBQUFBLE1BQUEsQ0FDeEQ7QUFFTSxhQUFBO0FBQUEsSUFBQTtBQUFBLElBSUQsZUFBWTtBQUNsQixXQUFLLHFCQUFvQjtBQUNwQixXQUFBLGdCQUFnQixlQUFlLElBQUk7QUFDeEMsV0FBSyxjQUFjLElBQUksTUFBTSxNQUFNLENBQUM7QUFBQSxJQUFBO0FBQUEsSUFHbkIsU0FBTTtBQUNuQixVQUFBLEVBQUUsWUFBWTtBQUNsQixVQUFJLGFBQWE7QUFFakIsWUFBTSxlQUFlLEtBQUssaUJBQWlCLEtBQUssVUFBVSxJQUFJO0FBQzlELFlBQU0scUJBQXFCLEtBQUssaUJBQWlCLEtBQUssVUFBVSxLQUFLO0FBRWpFLFVBQUEsS0FBSyxZQUFZLFFBQVE7QUFDM0IsYUFBSyxXQUFXO0FBQ2hCLGFBQUssYUFBYTtBQUFBLE1BQUE7QUFHcEIsVUFBSSxLQUFLLFdBQVc7QUFDbEIsa0JBQVUsR0FBRyxLQUFLLE9BQU8sS0FBSyxLQUFLLFNBQVM7QUFDL0IscUJBQUE7QUFBQTtBQUFBO0FBQUEsb0JBR0MsS0FBSyxRQUFRO0FBQUE7QUFBQSxzQkFFWCxLQUFLLGVBQWU7QUFBQSxxQkFDckIsS0FBSyxTQUFTO0FBQUE7QUFBQTtBQUFBLE1BQUE7QUFLekIsWUFBQSxxQkFBcUIsS0FBSztBQVF6QixhQUFBO0FBQUE7QUFBQTtBQUFBLFlBR0MsQ0FBQyxLQUFLLFdBQ0o7QUFBQTtBQUFBO0FBQUEsc0JBR1EsWUFBWTtBQUFBO0FBQUE7QUFBQSwwQkFHUixLQUFLLFdBQVcsT0FBTztBQUFBLDJCQUN0QixLQUFLLFlBQVksT0FBTztBQUFBLG9CQUVyQyxPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FJUCxtQkFBbUIsSUFBSSxDQUFDLFdBQVU7QUFDNUIsY0FBQSxjQUFjLE9BQU8sTUFBTTtBQUMzQixjQUFBLGFBQWEsT0FBTyxNQUFNO0FBQ2hDLGNBQU0sYUFBYSxLQUFLLHdCQUF3QixPQUFPLFlBQVk7QUFDNUQsZUFBQTtBQUFBLFVBQ0w7QUFBQSwwQkFDVSxHQUFHLFVBQVUsRUFBRTtBQUFBLDBCQUNmLEdBQUcsVUFBVSxJQUFJO0FBQUEsMkJBRXZCLEdBQUcsa0JBQWtCLE1BQU0sVUFBVSxNQUFNLFdBQVcsTUFBTSxLQUFLLFFBQVEsZ0JBQWdCLElBQUksVUFBVSxNQUNwRyxrQkFBa0IsTUFBTSxhQUFhLENBQUMsTUFBTSxjQUFjLENBQUMsTUFDNUQsS0FBSyxRQUFRLGFBQ2YsSUFBSSxhQUFhLENBQUMsR0FDcEI7QUFBQTtBQUFBO09BR0wsQ0FBQztBQUFBO0FBQUEsb0JBRU0sS0FBSyxPQUFPLEVBQUU7QUFBQSxzQkFDWixLQUFLLFlBQVk7QUFBQSx1QkFDaEIsTUFBTSxLQUFLLGNBQWMsSUFBSSxNQUFNLE9BQU8sQ0FBQyxDQUFDO0FBQUE7QUFBQSxvQkFFL0MsS0FBSyxRQUFTO0FBQUE7QUFBQTtBQUFBLHdCQUdWLEtBQUssV0FBVyxPQUFPO0FBQUEseUJBQ3RCLEtBQUssWUFBWSxPQUFPO0FBQUEsK0JBQ2xCLEtBQUssY0FBYyxPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFJL0MsVUFDRTtBQUFBO0FBQUEsMkJBRWUsT0FBTztBQUFBLGdCQUNsQixJQUFJLENBQUMsT0FBWTtBQUNqQixhQUFLLGtCQUFrQjtBQUFBLE1BQUEsQ0FDeEIsQ0FBQztBQUFBLDhCQUVKLE9BQU87QUFBQSxVQUNULGFBQ0UsS0FBQSxPQUFBLEtBQUksV0FBMkQsQ0FBQSxrREFBQSxhQUFBLENBQUEsSUFBVixjQUNyRCxPQUFPO0FBQUE7QUFBQTtBQUFBLElBQUE7QUFBQSxLQXRnQmpCLHVDQVdBLDRDQVVBLDJDQVNBLDZDQU1BLG1EQVNBLG9EQVNZLDRDQVFaLG1EQU9BLCtDQU9BLCtDQWNBLDRDQVdZLDhDQVlBLDJDQWlCWixtREF3RUEsc0RBS3lELGdEQVd6RDs7dUJBNU5DLGFBQ0EsVUFBVTtBQVVWLDJCQUFBLENBQUEsYUFDQSxTQUFTLEVBQUUsV0FBVyxhQUFhLE1BQU0sU0FBUyxTQUFTLEtBQU0sQ0FBQSxDQUFDOzJCQVNsRSxhQUNBLFVBQVU7NkJBUVYsYUFDQSxVQUFVO0FBTVYsa0NBQUEsQ0FBQSxTQUFTLEVBQUUsV0FBVyxtQkFBb0IsQ0FBQSxDQUFDO0FBUTNDLG1DQUFBLENBQUEsVUFBVyxHQUNYLFNBQVMsRUFBRSxXQUFXLHNCQUFzQixNQUFNLFNBQVMsQ0FBQztBQVU1RCwyQkFBQSxDQUFBLFVBQVU7QUFNVixrQ0FBQSxDQUFBLFVBQVcsR0FDWCxTQUFTLEVBQUUsV0FBVyxxQkFBcUIsTUFBTSxTQUFTLENBQUM7QUFNM0QsOEJBQUEsQ0FBQSxVQUFXLEdBQ1gsU0FBUyxFQUFFLFdBQVcsaUJBQWlCLE1BQU0sUUFBUSxDQUFDO0FBTXRELDhCQUFBLENBQUEsVUFBVyxHQUNYLFNBQVMsRUFBRSxXQUFXLGlCQUFpQixNQUFNLFFBQVEsQ0FBQzs0QkFhdEQsYUFDQSxTQUFTLEVBQUUsV0FBVyxZQUFBLENBQWEsQ0FBQztBQVlwQyw2QkFBQSxDQUFBLFVBQVU7QUFZViwwQkFBQSxDQUFBLFVBQVU7bUNBZVYsYUFDQSxTQUFTLEVBQUUsV0FBVyxtQkFBQSxDQUFvQixDQUFDO3NDQXVFM0MsYUFDQSxTQUFTLEVBQUUsV0FBVyx1QkFBQSxDQUF3QixDQUFDO2dDQU0vQyxTQUFTLEVBQUUsV0FBVyxpQkFBaUIsU0FBUyxLQUFBLENBQU0sQ0FBQzsrQkFVdkQsU0FBUyxFQUFFLFdBQVcsZ0JBQWdCLFNBQVMsS0FBQSxDQUFNLENBQUM7Z0NBME10RCxhQUFhLG9CQUFvQixDQUFDO0FBbmFuQixpQkFBQUEsS0FBQSxNQUFBLGlCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsT0FBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxTQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxLQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLE1BQWlCO0FBQUEsU0FBQSxVQUFBLGFBQUEsbUJBQUEsc0JBQUE7QUFXakIsaUJBQUFBLEtBQUEsTUFBQSxzQkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLFlBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsY0FBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQUEsVUFBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBQSxXQUEwQjtBQUFBLFNBQUEsVUFBQSxhQUFBLHdCQUFBLDJCQUFBO0FBVTFCLGlCQUFBQSxLQUFBLE1BQUEscUJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxXQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGFBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLFNBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUEsVUFBcUI7QUFBQSxTQUFBLFVBQUEsYUFBQSx1QkFBQSwwQkFBQTtBQVNyQixpQkFBQUEsS0FBQSxNQUFBLHVCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsYUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxlQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxXQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLFlBQXVCO0FBQUEsU0FBQSxVQUFBLGFBQUEseUJBQUEsNEJBQUE7QUFNdkIsaUJBQUFBLEtBQUEsTUFBQSw2QkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLG1CQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLHFCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxpQkFBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBQSxrQkFBNEQ7QUFBQSxTQUFBLFVBQUEsYUFBQSwrQkFBQSxrQ0FBQTtBQVM1RCxpQkFBQUEsS0FBQSxNQUFBLDhCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsb0JBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsc0JBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLGtCQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLG1CQUFrQztBQUFBLFNBQUEsVUFBQSxhQUFBLGdDQUFBLG1DQUFBO0FBU3RCLGlCQUFBQSxLQUFBLE1BQUEsc0JBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxZQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGNBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLFVBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUEsV0FBNkM7QUFBQSxTQUFBLFVBQUEsYUFBQSx3QkFBQSwyQkFBQTtBQVF6RCxpQkFBQUEsS0FBQSxNQUFBLDZCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsbUJBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEscUJBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLGlCQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLGtCQUFpQztBQUFBLFNBQUEsVUFBQSxhQUFBLCtCQUFBLGtDQUFBO0FBT2pDLGlCQUFBQSxLQUFBLE1BQUEseUJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxlQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGlCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxhQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLGNBQXdCO0FBQUEsU0FBQSxVQUFBLGFBQUEsMkJBQUEsOEJBQUE7QUFPeEIsaUJBQUFBLEtBQUEsTUFBQSx5QkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLGVBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsaUJBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLGFBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUEsY0FBd0I7QUFBQSxTQUFBLFVBQUEsYUFBQSwyQkFBQSw4QkFBQTtBQWN4QixpQkFBQUEsS0FBQSxNQUFBLHNCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsWUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxjQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxVQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLFdBQXNCO0FBQUEsU0FBQSxVQUFBLGFBQUEsd0JBQUEsMkJBQUE7QUFXVixpQkFBQUEsS0FBQSxNQUFBLHdCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsY0FBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxnQkFBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQUEsWUFBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBQSxhQUE2QztBQUFBLFNBQUEsVUFBQSxhQUFBLDBCQUFBLDZCQUFBO0FBWTdDLGlCQUFBQSxLQUFBLE1BQUEscUJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxXQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGFBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLFNBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUEsVUFBb0M7QUFBQSxTQUFBLFVBQUEsYUFBQSx1QkFBQSwwQkFBQTtBQWlCaEQsaUJBQUFBLEtBQUEsTUFBQSw2QkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLG1CQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLHFCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxpQkFBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBQSxrQkFBNkI7QUFBQSxTQUFBLFVBQUEsYUFBQSwrQkFBQSxrQ0FBQTtBQXdFN0IsaUJBQUFBLEtBQUEsTUFBQSxnQ0FBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLHNCQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLHdCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxvQkFBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBQSxxQkFBZ0M7QUFBQSxTQUFBLFVBQUEsYUFBQSxrQ0FBQSxxQ0FBQTtBQUt5QixpQkFBQUEsS0FBQSxNQUFBLDBCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsZ0JBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsa0JBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLGNBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUEsZUFHakQ7QUFBQSxTQUFBLFVBQUEsYUFBQSw0QkFBQSwrQkFBQTtBQVFSLGlCQUFBQSxLQUFBLE1BQUEseUJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxlQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGlCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxhQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLGNBWUk7QUFBQSxTQUFBLFVBQUEsYUFBQSwyQkFBQSw4QkFBQTtBQThMcEIsaUJBQUFBLEtBQUEsTUFBQSwwQkFBQSxFQUFBLE1BQUEsVUFBQSxNQUFBLGdCQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGtCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBUSxhQUlQLEdBQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSwwQkFBQTtBQS9iSCxpQkFpaUJDLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFoaUJ3QkEsSUFBTSxTQUFtQixPQUN6QkEsSUFBQSxTQUFTO0FBQUEsSUFDOUIsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLEVBQ0UsR0FMTixrQkFBZSxZQUFBLHVCQUFBLEdBQUNBOzs7IiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdfQ==
893
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pbWFnZS9pbWFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTYmJCcmVha3BvaW50WmVyb01pbixcbiAgU2JiQnJlYWtwb2ludFplcm9NYXgsXG4gIFNiYkJyZWFrcG9pbnRNaWNyb01pbixcbiAgU2JiQnJlYWtwb2ludE1pY3JvTWF4LFxuICBTYmJCcmVha3BvaW50U21hbGxNaW4sXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1heCxcbiAgU2JiQnJlYWtwb2ludE1lZGl1bU1pbixcbiAgU2JiQnJlYWtwb2ludE1lZGl1bU1heCxcbiAgU2JiQnJlYWtwb2ludExhcmdlTWluLFxuICBTYmJCcmVha3BvaW50TGFyZ2VNYXgsXG4gIFNiYkJyZWFrcG9pbnRXaWRlTWluLFxuICBTYmJCcmVha3BvaW50V2lkZU1heCxcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWluLFxuICBTYmJCcmVha3BvaW50VWx0cmFNYXgsXG4gIFNiYlR5cG9TY2FsZURlZmF1bHQsXG59IGZyb20gJ0BzYmItZXN0YS9seW5lLWRlc2lnbi10b2tlbnMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIGV2ZW50T3B0aW9ucywgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaG9zdENvbnRleHQgfSBmcm9tICcuLi9jb3JlL2RvbS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2ltYWdlLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWcge1xuICBicmVha3BvaW50czogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50IHtcbiAgaW1hZ2U6IHtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICB9O1xuICBtZWRpYVF1ZXJpZXM6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeSB7XG4gIGNvbmRpdGlvbkZlYXR1cmU6IHN0cmluZztcbiAgY29uZGl0aW9uRmVhdHVyZVZhbHVlOiB7XG4gICAgbHluZURlc2lnblRva2VuOiBib29sZWFuO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGNvbmRpdGlvbk9wZXJhdG9yOiBmYWxzZTtcbn1cblxuLyoqXG4gKiB3ZSBjaGVjayB0aGUgc3RydWN0dXJlIG9mIHRoZSBkYXRhIG1hbnVhbGx5LCBzbyBpdCdzIHNhZmUgdG8gdXNlIGBhbnlgIGFzIHJldHVybiB0eXBlXG4gKi9cbmNvbnN0IGltYWdlSGVscGVyR2V0QnJlYWtwb2ludHMgPSAoXG4gIGpzb25TdHJpbmc6IHN0cmluZyxcbik6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnQnJlYWtwb2ludFtdID0+IHtcbiAgaWYgKCFqc29uU3RyaW5nIHx8IGpzb25TdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBgYnJlYWtwb2ludHNgIGtleSBpbiBvYmplY3RcbiAgY29uc3QgbG9nV2FybmluZyA9IGltcG9ydC5tZXRhLmVudi5ERVZcbiAgICA/ICgpID0+XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnc2JiLWltYWdlIGVycm9yOiBhdHRyaWJ1dGUgYnJlYWtwb2ludHMgaGFzIHdyb25nIGRhdGEgZm9ybWF0LiBSZWZlcmVuY2UgdGhlIGRvY3VtZW50YXRpb24gdG8gc2VlIGhvdyB5b3Ugc2hvdWxkIGZvcm1hdCB0aGUgZGF0YSBmb3IgdGhpcyBhdHRyaWJ1dGUuJyxcbiAgICAgICAgKVxuICAgIDogbnVsbDtcbiAgbGV0IGpzb25PYmplY3Q6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnO1xuXG4gIHRyeSB7XG4gICAganNvbk9iamVjdCA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG4gIH0gY2F0Y2gge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmICghanNvbk9iamVjdC5icmVha3BvaW50cyB8fCBqc29uT2JqZWN0LmJyZWFrcG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB3ZSBnZXQgYW4gYXJyYXkgb2YgYnJlYWtwb2ludHNcbiAgaWYgKCFBcnJheS5pc0FycmF5KGpzb25PYmplY3QuYnJlYWtwb2ludHMpKSB7XG4gICAgbG9nV2FybmluZz8uKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIDEuIG1ha2Ugc3VyZSB0aGF0IGVhY2ggZW50cnkgd2l0aGluIHRoZSBicmVha3BvaW50cyBvYmplY3QgY29udGFpbnMgb25seSBhbGxvd2VkIGtleXNcbiAgICogMi4gbWFrZSBzdXJlIHRoYXQgYWxsIG5lY2Vzc2FyeSBrZXlzIGFyZSBwcmVzZW50XG4gICAqL1xuICBsZXQgd3JvbmdLZXlEZXRlY3RlZCA9IGZhbHNlO1xuICBsZXQgbWlzc2luZ0tleURldGVjdGVkID0gZmFsc2U7XG5cbiAgY29uc3QgYWxsb3dlZEtleXMgPSBbJ2ltYWdlJywgJ21lZGlhUXVlcmllcyddO1xuXG4gIGpzb25PYmplY3QuYnJlYWtwb2ludHMuZm9yRWFjaCgoYnJlYWtwb2ludCkgPT4ge1xuICAgIGNvbnN0IGJyZWFrcG9pbnRLZXlzID0gT2JqZWN0LmtleXMoYnJlYWtwb2ludCk7XG5cbiAgICBicmVha3BvaW50S2V5cy5mb3JFYWNoKChicmVha3BvaW50S2V5KSA9PiB7XG4gICAgICBpZiAoIWFsbG93ZWRLZXlzLmluY2x1ZGVzKGJyZWFrcG9pbnRLZXkpKSB7XG4gICAgICAgIHdyb25nS2V5RGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWxsb3dlZEtleXMuZm9yRWFjaCgoYWxsb3dlZEtleSkgPT4ge1xuICAgICAgaWYgKCFicmVha3BvaW50S2V5cy5pbmNsdWRlcyhhbGxvd2VkS2V5KSkge1xuICAgICAgICBtaXNzaW5nS2V5RGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpZiAod3JvbmdLZXlEZXRlY3RlZCB8fCBtaXNzaW5nS2V5RGV0ZWN0ZWQpIHtcbiAgICBsb2dXYXJuaW5nPy4oKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4ganNvbk9iamVjdC5icmVha3BvaW50cztcbn07XG5cbmNvbnN0IGV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICBvbmNlOiB0cnVlLFxuICBwYXNzaXZlOiB0cnVlLFxufTtcblxuY29uc3QgcHhUb1JlbSA9IChweDogbnVtYmVyKTogbnVtYmVyID0+IHB4IC8gU2JiVHlwb1NjYWxlRGVmYXVsdDtcblxuY29uc3QgYnJlYWtwb2ludE1hcDogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgJ3NiYi1icmVha3BvaW50LXplcm8tbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50WmVyb01pbiksXG4gICdzYmItYnJlYWtwb2ludC16ZXJvLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFplcm9NYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtbWljcm8tbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50TWljcm9NaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtbWljcm8tbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50TWljcm9NYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtc21hbGwtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50U21hbGxNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtc21hbGwtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50U21hbGxNYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtbWVkaXVtLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludE1lZGl1bU1pbiksXG4gICdzYmItYnJlYWtwb2ludC1tZWRpdW0tbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50TWVkaXVtTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LWxhcmdlLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludExhcmdlTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LWxhcmdlLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludExhcmdlTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LXdpZGUtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50V2lkZU1pbiksXG4gICdzYmItYnJlYWtwb2ludC13aWRlLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFdpZGVNYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtdWx0cmEtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50VWx0cmFNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtdWx0cmEtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50VWx0cmFNYXgpLFxufTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpbWFnZS5cbiAqXG4gKiBAZXZlbnQge0V2ZW50fSBsb2FkIC0gRW1pdHMgd2hlbiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkLlxuICogQGV2ZW50IHtFdmVudH0gZXJyb3IgLSBFbWl0cyB3aGVuIHRoZSBpbWFnZSBsb2FkaW5nIGVuZGVkIGluIGFuIGVycm9yLlxuICogQGNzc3Byb3AgWy0tc2JiLWltYWdlLWFzcGVjdC1yYXRpbz1hdXRvXSAtIENhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIGBhc3BlY3RSYXRpb2AgcHJvcGVydHkuXG4gKiBUaGlzIHdheSB3ZSBjYW4gaGF2ZSwgZm9yIGV4YW1wbGUsIGFuIGltYWdlIGNvbXBvbmVudCB3aXRoIGFuIGFzcGVjdFxuICogcmF0aW8gb2YgNC8zIGluIHNtYWxsZXIgdmlld3BvcnRzIGFuZCAxNi85IGluIGxhcmdlciB2aWV3cG9ydHMuXG4gKiBAY3NzcHJvcCBbLS1zYmItaW1hZ2UtYm9yZGVyLXJhZGl1cz12YXIoLS1zYmItYm9yZGVyLXJhZGl1cy00eCldIC0gQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlXG4gKiBgYm9yZGVyUmFkaXVzYCBwcm9wZXJ0eSBpbiBjYXNlIG9mIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGRpZmZlcmVudCB2aWV3cG9ydHMuXG4gKiBAY3NzcHJvcCBbLS1zYmItaW1hZ2Utb2JqZWN0LXBvc2l0aW9uXSAtIENhbiBiZSB1c2VkIHRvIHNldCB0aGUgb2JqZWN0LXBvc2l0aW9uIGNzcyBwcm9wZXJ0eSBvZiB0aGUgaW1hZ2UgaXRzZWxmIGlmIHRoZSBpbWFnZSBpdHNlbGYgaXMgY3JvcHBlZC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1pbWFnZS1vYmplY3QtZml0PWNvdmVyXSAtIENhbiBiZSB1c2VkIHRvIHNldCB0aGUgb2JqZWN0LWZpdCBjc3MgcHJvcGVydHkgb2YgdGhlIGltYWdlIGl0c2VsZiBpZiB0aGUgaW1hZ2UgaXRzZWxmIGlzIGNyb3BwZWQuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1pbWFnZScpXG5jbGFzcyBTYmJJbWFnZUVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGVycm9yOiAnZXJyb3InLFxuICAgIGxvYWQ6ICdsb2FkJyxcbiAgfSBhcyBjb25zdDtcblxuICBwcml2YXRlIF9jYXB0aW9uRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9saW5rc0luQ2FwdGlvbj86IE5vZGVMaXN0T2Y8SFRNTExpbmtFbGVtZW50PjtcbiAgcHJpdmF0ZSBfY29uZmlnID0ge1xuICAgIG5vblJldGluYVF1YWxpdHk6ICc0NScsXG4gICAgcmV0aW5hUXVhbGl0eTogJzIwJyxcbiAgfTtcblxuICAvKipcbiAgICogQW4gYWx0IHRleHQgaXMgbm90IGFsd2F5cyBuZWNlc3NhcnkgKGUuZy4gaW4gdGVhc2VyIGNhcmRzIHdoZW5cbiAgICogYWRkaXRpb25hbCBsaW5rIHRleHQgaXMgcHJvdmlkZWQpLiBJbiB0aGlzIGNhc2Ugd2UgY2FuIGxlYXZlXG4gICAqIHRoZSB2YWx1ZSBvZiB0aGUgYWx0IGF0dHJpYnV0ZSBibGFuaywgYnV0IHRoZSBhdHRyaWJ1dGUgaXRzZWxmXG4gICAqIHN0aWxsIG5lZWRzIHRvIGJlIHByZXNlbnQuIFRoYXQgd2F5IHdlIGNhbiBzaWduYWwgYXNzaXN0aXZlXG4gICAqIHRlY2hub2xvZ3ksIHRoYXQgdGhleSBjYW4gc2tpcCB0aGUgaW1hZ2UuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIGFsdDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byBmYWxzZSwgd2Ugc2hvdyBhIGJsdXJyZWQgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgYXNcbiAgICogcGxhY2Vob2xkZXIgYmVmb3JlIHRoZSBhY3R1YWwgaW1hZ2Ugc2hvd3MgdXAuIFRoaXMgd2lsbCBoZWxwXG4gICAqIHRvIGltcHJvdmUgdGhlIHBlcmNlaXZlZCBsb2FkaW5nIHBlcmZvcm1hbmNlLiBSZWFkIG1vcmUgYWJvdXRcbiAgICogdGhlIGlkZWEgb2YgbHFpcCBoZXJlOlxuICAgKiBodHRwczovL21lZGl1bS5jb20vQGltZ2l4L2xxaXAteW91ci1pbWFnZXMtZm9yLWZhc3QtbG9hZGluZy0yNTIzZDllZTRhNjJcbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdza2lwLWxxaXAnLCB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBza2lwTHFpcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGNhcHRpb24gY2FuIHByb3ZpZGUgYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSBpbWFnZSAoZS5nLlxuICAgKiBkZXNjcmlwdGlvbnMgYW5kIHRoZSBsaWtlKS5cbiAgICogTGlua3Mgd2lsbCBhdXRvbWF0aWNhbGx5IHJlY2VpdmUgdGFiaW5kZXg9LTEgaWYgaGlkZUZyb21TY3JlZW5yZWFkZXJcbiAgICogaXMgc2V0IHRvIHRydWUuIFRoYXQgd2F5IHRoZXkgd2lsbCBubyBsb25nZXIgYmVjb21lIGZvY3VzYWJsZS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgY2FwdGlvbjogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIElmIGEgY29weXJpZ2h0IHRleHQgaXMgcHJvdmlkZWQsIHdlIHdpbGwgYWRkIGl0IHRvIHRoZSBjYXB0aW9uXG4gICAqIGFuZCBjcmVhdGUgYSBzdHJ1Y3R1cmVkIGRhdGEganNvbi1sZCBibG9jayB3aXRoIHRoZSBjb3B5cmlnaHRcbiAgICogaW5mb3JtYXRpb24uXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIGNvcHlyaWdodDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIENvcHlyaWdodCBob2xkZXIgY2FuIGVpdGhlciBiZSBhbiBPcmdhbml6YXRpb24gb3IgYSBQZXJzb25cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2NvcHlyaWdodC1ob2xkZXInIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBjb3B5cmlnaHRIb2xkZXI6ICdPcmdhbml6YXRpb24nIHwgJ1BlcnNvbicgPSAnT3JnYW5pemF0aW9uJztcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSwgaWYgeW91IHdhbnQgdG8gcGFzcyBhIGN1c3RvbSBmb2NhbCBwb2ludFxuICAgKiBmb3IgdGhlIGltYWdlLiBTZWUgZnVsbCBkb2N1bWVudGF0aW9uIGhlcmU6XG4gICAqIGh0dHBzOi8vZG9jcy5pbWdpeC5jb20vYXBpcy9yZW5kZXJpbmcvZm9jYWxwb2ludC1jcm9wXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY3VzdG9tLWZvY2FsLXBvaW50JywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgY3VzdG9tRm9jYWxQb2ludDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgbGF6eSBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vZHVsZSB3aWxsIGF1dG9tYXRpY2FsbHlcbiAgICogY2hhbmdlIHRoZSBkZWNvZGluZyB0byBhc3luYywgb3RoZXJ3aXNlIHRoZSBkZWNvZGluZyBpcyBzZXQgdG8gYXV0b1xuICAgKiB3aGljaCBsZWF2ZXMgdGhlIGhhbmRsaW5nIHVwIHRvIHRoZSBicm93c2VyLiBSZWFkIG1vcmUgYWJvdXQgdGhlXG4gICAqIGRlY29kaW5nIGF0dHJpYnV0ZSBoZXJlOlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEltYWdlRWxlbWVudC9kZWNvZGluZ1xuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIGRlY29kaW5nOiAnc3luYycgfCAnYXN5bmMnIHwgJ2F1dG8nID0gJ2F1dG8nO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0byB0cnVlLCB0byByZWNlaXZlIHZpc3VhbCBndWlkYW5jZSB3aGVyZSB0aGUgY3VzdG9tIGZvY2FsXG4gICAqIHBvaW50IGlzIGN1cnJlbnRseSBzZXQuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZm9jYWwtcG9pbnQtZGVidWcnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmb2NhbFBvaW50RGVidWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogUGFzcyBpbiBhIGZsb2F0aW5nIG51bWJlciBiZXR3ZWVuIDAgKGxlZnQpIGFuZCAxIChyaWdodCkuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZm9jYWwtcG9pbnQteCcsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZm9jYWxQb2ludFg6IG51bWJlciA9IDE7XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYSBmbG9hdGluZyBudW1iZXIgYmV0d2VlbiAwICh0b3ApIGFuZCAxIChib3R0b20pLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZvY2FsLXBvaW50LXknLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGZvY2FsUG9pbnRZOiBudW1iZXIgPSAxO1xuXG4gIC8qKlxuICAgKiBSaWdodCBub3cgdGhlIG1vZHVsZSBpcyBoZWF2aWx5IGNvdXBsZWQgd2l0aCB0aGUgaW1hZ2UgZGVsaXZlcnlcbiAgICogc2VydmljZSBpbWdpeCBhbmQgZGVwZW5kcyBvbiB0aGUgb3JpZ2luYWwgZmlsZXMgYmVpbmcgc3RvcmVkXG4gICAqIGluc2lkZSBBRU0uIFlvdSBjYW4gcGFzcyBpbiBhbnkgaHR0cHM6Ly9jZG4uaW1nLnNiYi5jaCBpbWdcbiAgICogc3JjIGFkZHJlc3MgeW91IGZpbmQgb24gc2JiLmNoIHRvIHBsYXkgYXJvdW5kIHdpdGggaXQuIEp1c3RcbiAgICogc3RyaXAgdGhlIHVybCBwYXJhbWV0ZXJzIGFuZCBwYXN0ZSBpbiB0aGUgcGxhaW4gZmlsZSBhZGRyZXNzLlxuICAgKiBJZiB5b3Ugd2FudCB0byBrbm93IGhvdyB0byBiZXN0IHdvcmsgd2l0aCB0aGlzIG1vZHVsZSB3aXRoXG4gICAqIGltYWdlcyBjb21pbmcgZnJvbSBhIGRpZmZlcmVudCBzb3VyY2UsIHBsZWFzZSBjb250YWN0IHRoZVxuICAgKiBMWU5FIENvcmUgVGVhbS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdpbWFnZS1zcmMnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBpbWFnZVNyYzogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbXBvcnRhbmNlIGF0dHJpYnV0ZSBpcyBmYWlybHkgbmV3IGF0dHJpYnV0ZSB3aGljaCBzaG91bGRcbiAgICogaGVscCB0aGUgYnJvd3NlciBkZWNpZGUgd2hpY2ggcmVzb3VyY2VzIGl0IHNob3VsZCBwcmlvcml0aXNlXG4gICAqIGR1cmluZyBwYWdlIGxvYWQuIFdlIHdpbGwgc2V0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgYmFzZWQgb24gdGhlXG4gICAqIHZhbHVlLCB3ZSByZWNlaXZlIGluIHRoZSBsb2FkaW5nIGF0dHJpYnV0ZS4gJ2VhZ2VyJywgd2hpY2ggd2UgdXNlXG4gICAqIGZvciB0aGUgbGFyZ2VzdCBpbWFnZSB3aXRoaW4gdGhlIGluaXRpYWwgdmlld3BvcnQsIHdpbGwgc2V0IHRoZVxuICAgKiBhdHRyaWJ1dGUgdmFsdWUgdG8gJ2hpZ2gnLiAnbGF6eScsIHdoaWNoIHdlIHVzZSBmb3IgaW1hZ2VzIGJlbG93XG4gICAqIHRoZSBmb2xkLCB3aWxsIHNldCB0aGUgYXR0cmlidXRlIHZhbHVlIHRvICdsb3cnLlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIGltcG9ydGFuY2U6ICdhdXRvJyB8ICdoaWdoJyB8ICdsb3cnID0gJ2hpZ2gnO1xuXG4gIC8qKlxuICAgKiBXaXRoIHRoZSBzdXBwb3J0IG9mIG5hdGl2ZSBpbWFnZSBsYXp5IGxvYWRpbmcsIHdlIGNhbiBub3dcbiAgICogZGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBsb2FkIHRoZSBpbWFnZSBpbW1lZGlhdGVseSBvciBvbmx5XG4gICAqIG9uY2UgaXQgaXMgY2xvc2UgdG8gdGhlIHZpc2libGUgdmlld3BvcnQuIFRoZSB2YWx1ZSBlYWdlciBpc1xuICAgKiBiZXN0IHVzZWQgZm9yIGltYWdlcyB3aXRoaW4gdGhlIGluaXRpYWwgdmlld3BvcnQuIFdlIHdhbnQgdG9cbiAgICogbG9hZCB0aGVzZSBpbWFnZXMgYXMgZmFzdCBhcyBwb3NzaWJsZSB0byBpbXByb3ZlIHRoZSBDb3JlIFdlYlxuICAgKiBWaXRhbHMgdmFsdWVzLiBsYXp5IG9uIHRoZSBvdGhlciBoYW5kIHdvcmtzIGJlc3QgZm9yIGltYWdlc1xuICAgKiB3aGljaCBhcmUgZnVydGhlciBkb3duIHRoZSBwYWdlIG9yIGludmlzaWJsZSBkdXJpbmcgdGhlIGxvYWRpbmdcbiAgICogb2YgdGhlIGluaXRpYWwgdmlld3BvcnQuXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgbG9hZGluZzogJ2VhZ2VyJyB8ICdsYXp5JyA9ICdlYWdlcic7XG5cbiAgLyoqXG4gICAqIFdpdGggcGVyZm9ybWFuY2UubWFyayB5b3UgY2FuIGxvZyBhIHRpbWVzdGFtcCBhc3NvY2lhdGVkIHdpdGhcbiAgICogdGhlIG5hbWUgeW91IGRlZmluZSBpbiBwZXJmb3JtYW5jZU1hcmsgd2hlbiBhIGNlcnRhaW4gZXZlbnQgaXNcbiAgICogaGFwcGVuaW5nLiBJbiBvdXIgY2FzZSB3ZSB3aWxsIGxvZyB0aGUgcGVyZm9ybWFuY2UubWFyayBpbnRvXG4gICAqIHRoZSBQZXJmb3JtYW5jZUVudHJ5IEFQSSBvbmNlIHRoZSBpbWFnZSBpcyBmdWxseSBsb2FkZWQuXG4gICAqIFBlcmZvcm1hbmNlIG1vbml0b3JpbmcgdG9vbHMgbGlrZSBTcGVlZEN1cnZlIG9yIExpZ2h0aG91c2UgYXJlXG4gICAqIHRoZW4gYWJsZSB0byBncmFiIHRoZXNlIGVudHJpZXMgZnJvbSB0aGUgUGVyZm9ybWFuY2VFbnRyeSBBUElcbiAgICogYW5kIGdpdmUgdXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhbmQgaW5zaWdodHMgYWJvdXQgb3VyIHBhZ2VcbiAgICogbG9hZGluZyBiZWhhdmlvdXIuIFdlIGFyZSB0aGVuIGFsc28gYWJsZSB0byBtb25pdG9yIHRoZXNlXG4gICAqIHZhbHVlcyBvdmVyIGEgbG9uZyBwZXJpb2QgdG8gc2VlIGlmIG91ciBwZXJmb3JtYW5jZVxuICAgKiBpbmNyZWFzZXMgb3IgZGVjcmVhc2VzIG92ZXIgdGltZS4gQmVzdCB0byB1c2UgbG93ZXJjYXNlIHN0cmluZ3NcbiAgICogaGVyZSwgc2VwYXJhdGUgd29yZHMgd2l0aCB1bmRlcnNjb3JlcyBvciBkYXNoZXMuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncGVyZm9ybWFuY2UtbWFyaycgfSlcbiAgcHVibGljIGFjY2Vzc29yIHBlcmZvcm1hbmNlTWFyazogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFdpdGggdGhlIHBpY3R1cmVTaXplc0NvbmZpZyBvYmplY3QsIHlvdSBjYW4gcGFzcyBpbiBpbmZvcm1hdGlvblxuICAgKiBpbnRvIGltYWdlIGFib3V0IHdoYXQga2luZCBvZiBzb3VyY2UgZWxlbWVudHMgc2hvdWxkIGdldFxuICAgKiByZW5kZXJlZC4gbWVkaWFRdWVyaWVzIGFjY2VwdHMgbXVsdGlwbGUgTWVkaWEgUXVlcnkgZW50cmllc1xuICAgKiB3aGljaCBjYW4gZ2V0IGNvbWJpbmVkIGJ5IGRlZmluaW5nIGEgY29uZGl0aW9uT3BlcmF0b3IuXG4gICAqIFR5cGUgaXM6IHN0cmluZ2lmaWVkIEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnLU9iamVjdFxuICAgKiBBbiBleGFtcGxlIGNvdWxkIGxvb2sgbGlrZSB0aGlzOlxuICAgKiB7XG4gICAqICAgIFwiYnJlYWtwb2ludHNcIjogW1xuICAgKiAgICAgIHtcbiAgICogICAgICAgIFwiaW1hZ2VcIjoge1xuICAgKiAgICAgICAgICBcImhlaWdodFwiOiBcIjY3NVwiLFxuICAgKiAgICAgICAgICBcIndpZHRoXCI6IFwiMTIwMFwiXG4gICAqICAgICAgICB9LFxuICAgKiAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWluLXdpZHRoXCIsXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgKiAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1sYXJnZS1taW5cIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgKiAgICAgICAgICB9XG4gICAqICAgICAgICBdXG4gICAqICAgICAgfSxcbiAgICogICAgICB7XG4gICAqICAgICAgICBcImltYWdlXCI6IHtcbiAgICogICAgICAgICAgXCJoZWlnaHRcIjogXCI1NDlcIixcbiAgICogICAgICAgICAgXCJ3aWR0aFwiOiBcIjk3NlwiXG4gICAqICAgICAgICB9LFxuICAgKiAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWluLXdpZHRoXCIsXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgKiAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1zbWFsbC1taW5cIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgKiAgICAgICAgICB9XG4gICAqICAgICAgICBdXG4gICAqICAgICAgfSxcbiAgICogICAgICB7XG4gICAqICAgICAgICBcImltYWdlXCI6IHtcbiAgICogICAgICAgICAgXCJoZWlnaHRcIjogXCIxODBcIixcbiAgICogICAgICAgICAgXCJ3aWR0aFwiOiBcIjMyMFwiXG4gICAqICAgICAgICB9LFxuICAgKiAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWF4LXdpZHRoXCIsXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgKiAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1taWNyby1tYXhcIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBcImFuZFwiXG4gICAqICAgICAgICAgIH0sXG4gICAqICAgICAgICAgIHtcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJvcmllbnRhdGlvblwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IGZhbHNlLFxuICAgKiAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcImxhbmRzY2FwZVwiXG4gICAqICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAqICAgICAgICAgIH1cbiAgICogICAgICAgIF1cbiAgICogICAgICB9XG4gICAqICAgIF1cbiAgICogIH1cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwaWN0dXJlLXNpemVzLWNvbmZpZycgfSlcbiAgcHVibGljIGFjY2Vzc29yIHBpY3R1cmVTaXplc0NvbmZpZzogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEJvcmRlciByYWRpdXMgb2YgdGhlIGltYWdlLiBDaG9vc2UgYmV0d2VlbiBhIGRlZmF1bHQgcmFkaXVzLCBubyByYWRpdXMgYW5kIGEgY29tcGxldGVseSByb3VuZCBpbWFnZS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2JvcmRlci1yYWRpdXMnLCByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBib3JkZXJSYWRpdXM6XG4gICAgfCAnZGVmYXVsdCdcbiAgICB8ICdub25lJ1xuICAgIHwgJ3JvdW5kJyA9ICdkZWZhdWx0JztcblxuICAvKipcbiAgICogU2V0IGFuIGFzcGVjdCByYXRpb1xuICAgKiBkZWZhdWx0IGlzICcxNi05JyAoMTYvOSlcbiAgICogb3RoZXIgdmFsdWVzOiAnZnJlZScsICcxLTEnLCAnMS0yJywgJzItMScsICcyLTMnLCAnMy0yJywgJzMtNCcsICc0LTMnLCAnNC01JywgJzUtNCcsICc5LTE2J1xuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXNwZWN0LXJhdGlvJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYXNwZWN0UmF0aW86XG4gICAgfCAnZnJlZSdcbiAgICB8ICcxLTEnXG4gICAgfCAnMS0yJ1xuICAgIHwgJzItMSdcbiAgICB8ICcyLTMnXG4gICAgfCAnMy0yJ1xuICAgIHwgJzMtNCdcbiAgICB8ICc0LTMnXG4gICAgfCAnNC01J1xuICAgIHwgJzUtNCdcbiAgICB8ICc5LTE2J1xuICAgIHwgJzE2LTknID0gJzE2LTknO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpbWFnZSBpcyBmaW5pc2hlZCBsb2FkaW5nIG9yIGZhaWxlZCB0byBsb2FkLiAqL1xuICBwdWJsaWMgZ2V0IGNvbXBsZXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LjxIVE1MSW1hZ2VFbGVtZW50PignLnNiYi1pbWFnZV9faW1nJyk/LmNvbXBsZXRlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBuZXN0ZWQgaW4gYW4gYDxzYmItdGVhc2VyLWhlcm8+YCBlbGVtZW50IG9uIGluIGFuIGA8c2JiLXRlYXNlci1wYWlkPmAgZWxlbWVudC5cbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLXRlYXNlcicsXG4gICAgICAhIWhvc3RDb250ZXh0KCdzYmItdGVhc2VyLWhlcm8nLCB0aGlzKSB8fCAhIXRoaXMuY2xvc2VzdCgnc2JiLXRlYXNlci1wYWlkJyksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLl9jYXB0aW9uRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xpbmtzSW5DYXB0aW9uID0gdGhpcy5fY2FwdGlvbkVsZW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MTGlua0VsZW1lbnQ+KCdhJyk7XG5cbiAgICBpZiAoIXRoaXMuX2xpbmtzSW5DYXB0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYWRkRm9jdXNBYmlsaXR5VG9MaW5rc0luQ2FwdGlvbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgLy8gV2UgbmVlZCB0byB3YWl0IHVudGlsIHRoZSB1cGRhdGUgaXMgY29tcGxldGUgdG8gY2hlY2sgd2hldGhlciB0aGUgaW1hZ2UgaGFzIGFscmVhZHkgYmVlbiBjb21wbGV0ZWx5IGxvYWRlZC5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlO1xuICAgIGlmICh0aGlzLmNvbXBsZXRlKSB7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1sb2FkZWQnLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9sb2dQZXJmb3JtYW5jZU1hcmtzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBlcmZvcm1hbmNlTWFyaykge1xuICAgICAgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyh0aGlzLnBlcmZvcm1hbmNlTWFyayk7XG4gICAgICBwZXJmb3JtYW5jZS5tYXJrKHRoaXMucGVyZm9ybWFuY2VNYXJrKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9tYXRjaE1lZGlhUXVlcnlEZXNpZ25Ub2tlbihicmVha3BvaW50U2l6ZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSBicmVha3BvaW50TWFwW2JyZWFrcG9pbnRTaXplTmFtZV07XG4gICAgcmV0dXJuIHZhbHVlID8gYCR7dmFsdWV9cmVtYCA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkRm9jdXNBYmlsaXR5VG9MaW5rc0luQ2FwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9saW5rc0luQ2FwdGlvbj8uZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgbGluay5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9wcmVwYXJlSW1hZ2VVcmwoYmFzZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkLCBscXVpcCA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBpZiAoIWJhc2VVcmwgfHwgYmFzZVVybCA9PT0gJycpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyBDcmVhdGluZyBhbiBVUkwgd2l0aG91dCBhIHNjaGVtYSB3aWxsIGZhaWwsIGJ1dCBpcyBhIHZhbGlkIGlucHV0IGZvciBiYXNlVXJsLlxuICAgIC8vIGUuZy4gaW1hZ2Utc3JjIGNhbiBiZSBodHRwczovL2V4YW1wbGUuY29tL215LWltYWdlLnBuZyBvciAvbXktaW1hZ2UucG5nXG4gICAgY29uc3QgaXNGdWxseVF1YWxpZmllZFVybCA9ICEhYmFzZVVybC5tYXRjaCgvXlxcdys6XFwvXFwvLyk7XG4gICAgY29uc3QgaW1hZ2VVcmxPYmogPSBpc0Z1bGx5UXVhbGlmaWVkVXJsID8gbmV3IFVSTChiYXNlVXJsKSA6IG5ldyBVUkwoYGh0dHA6Ly9ub29wLyR7YmFzZVVybH1gKTtcblxuICAgIGlmIChscXVpcCkge1xuICAgICAgLy8gYmx1ciBhbmQgc2l6ZTogP2JsdXI9MTAwJnc9MTAwJmg9NTZcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2JsdXInLCAnMTAwJyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCd3JywgJzEwMCcpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnaCcsICc1NicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDRE4gSW5mb3JtYXRpb246IGh0dHBzOi8vZG9jcy5pbWdpeC5jb20vYXBpcy9yZW5kZXJpbmdcbiAgICAgIC8vIHBhcmFtLmF1dG86ID9hdXRvPWZvcm1hdCxjb21wcmVzcyxjcz10aW55c3JnYlxuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnYXV0bycsICdmb3JtYXQsY29tcHJlc3MsY3M9dGlueXNyZ2InKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXN0b21Gb2NhbFBvaW50KSB7XG4gICAgICAvLyBjcm9wOiBgJmZpdD1jcm9wJmNyb3A9Zm9jYWxwb2ludCZmcC14PSR7dGhpcy5mb2NhbFBvaW50WH0mZnAteT0ke3RoaXMuZm9jYWxQb2ludFl9JmZwLXo9MWAsXG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmaXQnLCAnY3JvcCcpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnY3JvcCcsICdmb2NhbHBvaW50Jyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmcC14JywgdGhpcy5mb2NhbFBvaW50WC50b1N0cmluZygxMCkpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZnAteScsIHRoaXMuZm9jYWxQb2ludFkudG9TdHJpbmcoMTApKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZwLXonLCAnMScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvY2FsUG9pbnREZWJ1Zykge1xuICAgICAgLy8gZm9jYWxQb2ludERlYnVnOiAnJmZwLWRlYnVnPXRydWUnXG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmcC1kZWJ1ZycsICd0cnVlJyk7XG4gICAgfVxuXG4gICAgLy8gSW4gY2FzZSBvZiBcIm5vb3BcIiBob3N0LCB3ZSBkb24ndCByZXR1cm4gdGhlIGhvc3QgYW5kIG11c3QgcmVtb3ZlIHRoZVxuICAgIC8vIHN0YXJ0aW5nIGAvYCBvZiB0aGUgcGF0aG5hbWUuXG4gICAgcmV0dXJuIGlzRnVsbHlRdWFsaWZpZWRVcmxcbiAgICAgID8gaW1hZ2VVcmxPYmouaHJlZlxuICAgICAgOiBpbWFnZVVybE9iai5wYXRobmFtZS5zdWJzdHJpbmcoMSkgKyBpbWFnZVVybE9iai5zZWFyY2g7XG4gIH1cblxuICBwcml2YXRlIF9wcmVwYXJlUGljdHVyZVNpemVDb25maWdzKCk6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnQnJlYWtwb2ludFtdIHtcbiAgICBsZXQgcGljdHVyZVNpemVzQ29uZmlnO1xuXG4gICAgaWYgKHRoaXMucGljdHVyZVNpemVzQ29uZmlnKSB7XG4gICAgICBwaWN0dXJlU2l6ZXNDb25maWcgPSB0aGlzLnBpY3R1cmVTaXplc0NvbmZpZztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZGVmYXVsdCBjb25maWdcbiAgICAgIHBpY3R1cmVTaXplc0NvbmZpZyA9IGB7XG4gICAgICAgIFwiYnJlYWtwb2ludHNcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiaW1hZ2VcIjoge1xuICAgICAgICAgICAgICBcImhlaWdodFwiOiA2NzUsXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogMTIwMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbGFyZ2UtbWluXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDU0OSxcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiA5NzZcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1lZGlhUXVlcmllc1wiOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJtaW4td2lkdGhcIixcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAgICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcInNiYi1icmVha3BvaW50LW1pY3JvLW1pblwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiaW1hZ2VcIjoge1xuICAgICAgICAgICAgICBcImhlaWdodFwiOiAxODAsXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogMzIwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWF4LXdpZHRoXCIsXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgICAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC16ZXJvLW1heFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1gO1xuICAgIH1cblxuICAgIHJldHVybiBpbWFnZUhlbHBlckdldEJyZWFrcG9pbnRzKHBpY3R1cmVTaXplc0NvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVNZWRpYVF1ZXJ5U3RyaW5nKFxuICAgIG1lZGlhUXVlcmllczogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdNZWRpYVF1ZXJ5W10sXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IG1lZGlhUXVlcnkgPSAnJztcblxuICAgIG1lZGlhUXVlcmllcy5mb3JFYWNoKChtcSkgPT4ge1xuICAgICAgY29uc3QgbXFDb25kaXRpb24gPSBtcS5jb25kaXRpb25GZWF0dXJlO1xuICAgICAgbGV0IG1xVmFsdWU7XG5cbiAgICAgIGlmIChtcS5jb25kaXRpb25GZWF0dXJlVmFsdWUubHluZURlc2lnblRva2VuKSB7XG4gICAgICAgIG1xVmFsdWUgPSB0aGlzLl9tYXRjaE1lZGlhUXVlcnlEZXNpZ25Ub2tlbihtcS5jb25kaXRpb25GZWF0dXJlVmFsdWUudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXFWYWx1ZSA9IG1xLmNvbmRpdGlvbkZlYXR1cmVWYWx1ZS52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbXFDb21iaW5lciA9IG1xLmNvbmRpdGlvbk9wZXJhdG9yID8gYCAke21xLmNvbmRpdGlvbk9wZXJhdG9yfSBgIDogJyc7XG5cbiAgICAgIG1lZGlhUXVlcnkgKz0gYCgke21xQ29uZGl0aW9ufTogJHttcVZhbHVlfSkke21xQ29tYmluZXJ9YDtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZWRpYVF1ZXJ5O1xuICB9XG5cbiAgQGV2ZW50T3B0aW9ucyhldmVudExpc3RlbmVyT3B0aW9ucylcbiAgcHJpdmF0ZSBfaW1hZ2VMb2FkZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9nUGVyZm9ybWFuY2VNYXJrcygpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWxvYWRlZCcsIHRydWUpO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2xvYWQnKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBsZXQgeyBjYXB0aW9uIH0gPSB0aGlzO1xuICAgIGxldCBzY2hlbWFEYXRhID0gJyc7XG5cbiAgICBjb25zdCBpbWFnZVVybExRSVAgPSB0aGlzLl9wcmVwYXJlSW1hZ2VVcmwodGhpcy5pbWFnZVNyYywgdHJ1ZSk7XG4gICAgY29uc3QgaW1hZ2VVcmxXaXRoUGFyYW1zID0gdGhpcy5fcHJlcGFyZUltYWdlVXJsKHRoaXMuaW1hZ2VTcmMsIGZhbHNlKTtcblxuICAgIGlmICh0aGlzLmxvYWRpbmcgPT09ICdsYXp5Jykge1xuICAgICAgdGhpcy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICB0aGlzLmltcG9ydGFuY2UgPSAnbG93JztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb3B5cmlnaHQpIHtcbiAgICAgIGNhcHRpb24gPSBgJHt0aGlzLmNhcHRpb259IMKpJHt0aGlzLmNvcHlyaWdodH1gO1xuICAgICAgc2NoZW1hRGF0YSA9IGB7XG4gICAgICAgIFwiQGNvbnRleHRcIjogXCJodHRwczovL3NjaGVtYS5vcmdcIixcbiAgICAgICAgXCJAdHlwZVwiOiBcIlBob3RvZ3JhcGhcIixcbiAgICAgICAgXCJpbWFnZVwiOiBcIiR7dGhpcy5pbWFnZVNyY31cIixcbiAgICAgICAgXCJjb3B5cmlnaHRIb2xkZXJcIjoge1xuICAgICAgICAgIFwiQHR5cGVcIjogXCIke3RoaXMuY29weXJpZ2h0SG9sZGVyfVwiLFxuICAgICAgICAgIFwibmFtZVwiOiBcIiR7dGhpcy5jb3B5cmlnaHR9XCJcbiAgICAgICAgfVxuICAgICAgfWA7XG4gICAgfVxuXG4gICAgY29uc3QgcGljdHVyZVNpemVDb25maWdzID0gdGhpcy5fcHJlcGFyZVBpY3R1cmVTaXplQ29uZmlncygpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGFsdCBhdHRyaWJ1dGUgc2hvdWxkIGFsd2F5cyBiZSBwcmVzZW50IGZvciB0aGUgaW1nIGVsZW1lbnQuXG4gICAgICogSWYgaXQgaGFzIGFuIGVtcHR5IHN0cmluZyBhcyBpdHMgdmFsdWUsIGl0IGlzIHNpbXBseSBpZ25vcmVkXG4gICAgICogYnkgYXNzaXN0aXZlIHRlY2hub2xvZ2llcy4gSWYgd2UgbGVhdmUgaXQgb3V0IGNvbXBsZXRlbHksXG4gICAgICogdGhleSBtaWdodCB0cnkgdG8gaW50ZXJwcmV0IHRoZSBpbWcgZWxlbWVudC5cbiAgICAgKi9cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxmaWd1cmUgY2xhc3M9XCJzYmItaW1hZ2VfX2ZpZ3VyZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWltYWdlX193cmFwcGVyXCI+XG4gICAgICAgICAgJHshdGhpcy5za2lwTHFpcFxuICAgICAgICAgICAgPyBodG1sYDxpbWdcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLWltYWdlX19ibHVycmVkXCJcbiAgICAgICAgICAgICAgICBzcmM9JHtpbWFnZVVybExRSVB9XG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAwXCJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCI1NjJcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9JHt0aGlzLmxvYWRpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgICBkZWNvZGluZz0ke3RoaXMuZGVjb2RpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgLz5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG5cbiAgICAgICAgICA8cGljdHVyZT5cbiAgICAgICAgICAgIDwhLS0gcmVuZGVyIHBpY3R1cmUgZWxlbWVudCBzb3VyY2VzIC0tPlxuICAgICAgICAgICAgJHtwaWN0dXJlU2l6ZUNvbmZpZ3MubWFwKChjb25maWcpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaW1hZ2VIZWlnaHQgPSBjb25maWcuaW1hZ2UuaGVpZ2h0O1xuICAgICAgICAgICAgICBjb25zdCBpbWFnZVdpZHRoID0gY29uZmlnLmltYWdlLndpZHRoO1xuICAgICAgICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gdGhpcy5fY3JlYXRlTWVkaWFRdWVyeVN0cmluZyhjb25maWcubWVkaWFRdWVyaWVzKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBodG1sYCA8c291cmNlXG4gICAgICAgICAgICAgICAgICBtZWRpYT0ke2Ake21lZGlhUXVlcnl9YH1cbiAgICAgICAgICAgICAgICAgIHNpemVzPSR7YCR7aW1hZ2VXaWR0aH1weGB9XG4gICAgICAgICAgICAgICAgICBzcmNzZXQ9JHtcbiAgICAgICAgICAgICAgICAgICAgYCR7aW1hZ2VVcmxXaXRoUGFyYW1zfSZ3PSR7aW1hZ2VXaWR0aH0maD0ke2ltYWdlSGVpZ2h0fSZxPSR7dGhpcy5fY29uZmlnLm5vblJldGluYVF1YWxpdHl9ICR7aW1hZ2VXaWR0aH13LCBgICtcbiAgICAgICAgICAgICAgICAgICAgYCR7aW1hZ2VVcmxXaXRoUGFyYW1zfSZ3PSR7aW1hZ2VXaWR0aCAqIDJ9Jmg9JHtpbWFnZUhlaWdodCAqIDJ9JnE9JHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb25maWcucmV0aW5hUXVhbGl0eVxuICAgICAgICAgICAgICAgICAgICB9ICR7aW1hZ2VXaWR0aCAqIDJ9d2BcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA+PC9zb3VyY2U+YCxcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBhbHQ9JHt0aGlzLmFsdCB8fCAnJ31cbiAgICAgICAgICAgICAgQGxvYWQ9JHt0aGlzLl9pbWFnZUxvYWRlZH1cbiAgICAgICAgICAgICAgQGVycm9yPSR7KCkgPT4gdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnZXJyb3InKSl9XG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLWltYWdlX19pbWdcIlxuICAgICAgICAgICAgICBzcmM9JHt0aGlzLmltYWdlU3JjIX1cbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAwXCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiNTYyXCJcbiAgICAgICAgICAgICAgbG9hZGluZz0ke3RoaXMubG9hZGluZyA/PyBub3RoaW5nfVxuICAgICAgICAgICAgICBkZWNvZGluZz0ke3RoaXMuZGVjb2RpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgLmZldGNoUHJpb3JpdHk9JHt0aGlzLmltcG9ydGFuY2UgPz8gbm90aGluZ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgJHtjYXB0aW9uXG4gICAgICAgICAgPyBodG1sYDxmaWdjYXB0aW9uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLWltYWdlX19jYXB0aW9uXCJcbiAgICAgICAgICAgICAgLmlubmVySFRNTD0ke2NhcHRpb259XG4gICAgICAgICAgICAgICR7cmVmKChlbCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhcHRpb25FbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPjwvZmlnY2FwdGlvbj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAke3NjaGVtYURhdGFcbiAgICAgICAgICA/IGh0bWxgPHNjcmlwdCB0eXBlPVwiYXBwbGljYXRpb24vbGQranNvblwiIC5pbm5lckhUTUw9JHtzY2hlbWFEYXRhfT48L3NjcmlwdD5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9maWd1cmU+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWltYWdlJzogU2JiSW1hZ2VFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeURBLE1BQU0sNEJBQTRCLENBQ2hDLGVBQ21EO0FBQ25ELE1BQUksQ0FBQyxjQUFjLFdBQVcsV0FBVyxHQUFHO0FBQzFDLFdBQU87O0FBSUgsUUFBQSxhQUNGLE1BQ0UsUUFBUSxLQUNOLHFKQUFxSjtBQUd6SixNQUFBO0FBRUEsTUFBQTtBQUNXLGlCQUFBLEtBQUssTUFBTSxVQUFVO0FBQUEsRUFBQSxRQUM1Qjs7QUFFTixXQUFPOztBQUdULE1BQUksQ0FBQyxXQUFXLGVBQWUsV0FBVyxZQUFZLFdBQVcsR0FBRzs7QUFFbEUsV0FBTzs7QUFJVCxNQUFJLENBQUMsTUFBTSxRQUFRLFdBQVcsV0FBVyxHQUFHOztBQUUxQyxXQUFPOztBQU9ULE1BQUksbUJBQW1CO0FBQ3ZCLE1BQUkscUJBQXFCO0FBRW5CLFFBQUEsY0FBYyxDQUFDLFNBQVMsY0FBYztBQUVqQyxhQUFBLFlBQVksUUFBUSxDQUFDLGVBQWM7QUFDdEMsVUFBQSxpQkFBaUIsT0FBTyxLQUFLLFVBQVU7QUFFOUIsbUJBQUEsUUFBUSxDQUFDLGtCQUFpQjtBQUN2QyxVQUFJLENBQUMsWUFBWSxTQUFTLGFBQWEsR0FBRztBQUNyQiwyQkFBQTtBQUFBLE1BQUE7QUFBQSxJQUNyQixDQUNEO0FBRVcsZ0JBQUEsUUFBUSxDQUFDLGVBQWM7QUFDakMsVUFBSSxDQUFDLGVBQWUsU0FBUyxVQUFVLEdBQUc7QUFDbkIsNkJBQUE7QUFB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
@@ -55,7 +55,8 @@ const style = css`*,
55
55
  @media (min-width: calc(52.5rem)) {
56
56
  .sbb-map-container {
57
57
  grid-template-columns: max(var(--sbb-map-container-sidebar-width)) calc(100% - var(--sbb-map-container-sidebar-width));
58
- height: calc(100vh - var(--sbb-map-container-margin-start, var(--sbb-header-height)));
58
+ position: fixed;
59
+ inset: var(--sbb-map-container-margin-start, var(--sbb-header-height)) 0 0 0;
59
60
  }
60
61
  }
61
62
 
@@ -280,4 +281,4 @@ let SbbMapContainerElement = (() => {
280
281
  export {
281
282
  SbbMapContainerElement
282
283
  };
283
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRhaW5lci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL21hcC1jb250YWluZXIvbWFwLWNvbnRhaW5lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcnNlY3Rpb25Db250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9pbnRlcnNlY3Rpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGkxOG5NYXBDb250YWluZXJCdXR0b25MYWJlbCB9IGZyb20gJy4uL2NvcmUvaTE4bi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL21hcC1jb250YWluZXIuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi9idXR0b24vdGVydGlhcnktYnV0dG9uLmpzJztcblxuLyoqXG4gKiBJdCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3IgbWFwcy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBzaWRlYmFyLlxuICogQHNsb3QgbWFwIC0gVXNlZCBmb3Igc2xvdHRpbmcgdGhlIG1hcC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1tYXAtY29udGFpbmVyLW1hcmdpbi1zdGFydD12YXIoLS1zYmItaGVhZGVyLWhlaWdodCldIC0gVGhlIGNvbXBvbmVudFxuICogY29tZXMgYWxvbmcgd2l0aCBhIGhlaWdodCBjYWxjdWxhdGlvbiB0aGF0IHN1YnRyYWN0cyB0aGUgaGVpZ2h0IG9mIHRoZSBoZWFkZXIuXG4gKiBGb3Igc3BlY2lmaWMgdXNlIGNhc2VzLCB0aGlzIHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgcHJlc2V0IGhlaWdodC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1tYXAtY29udGFpbmVyLXNpZGViYXItd2lkdGg9emVyby1sYXJnZTo0MDBweDt3aWRlLXVsdHJhOjQ4MHB4XSAtIENhbiBiZSB1c2VkXG4gKiB0byBtb2RpZnkgdGhlIHdpZHRoIG9mIHRoZSBsZWZ0IHNpZGViYXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItbWFwLWNvbnRhaW5lci1tb2JpbGUtc3RpY2t5LWJsb2NrLXN0YXJ0PTBdIC0gSWYgZS5nLiBhIGhlYWRlciB3aXRoIGEgZml4ZWQgaGVpZ2h0XG4gKiBpcyBwbGFjZWQgYmVmb3JlIHRoZSBtYXAtY29udGFpbmVyLCB0aGUgbWFwIHNob3VsZCBiZSBzdGlja3kgcmVzcGVjdGluZ1xuICogdGhpcyBvZmZzZXQgZnJvbSB0aGUgZG9jdW1lbnQncyB0b3AuIE9ubHkgYXBwbGllZCBvbiBtb2JpbGUgdmlld3MuXG4gKiBNb3N0IGNvbW1vbmx5IGl0IGNhbiBiZSBzZXQgdG8gYHZhcigtLXNiYi1oZWFkZXItaGVpZ2h0KWAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1tYXAtY29udGFpbmVyJylcbmNsYXNzIFNiYk1hcENvbnRhaW5lckVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIEZsYWcgdG8gc2hvdy9oaWRlIHRoZSBzY3JvbGwgdXAgYnV0dG9uIGluc2lkZSB0aGUgc2lkZWJhciBvbiBtb2JpbGUuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoaWRlLXNjcm9sbC11cC1idXR0b24nLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBoaWRlU2Nyb2xsVXBCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9zY3JvbGxVcEJ1dHRvblZpc2libGUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX29ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBjYWxsYmFjazogKGVudHJpZXMpID0+IHRoaXMuX3RvZ2dsZUJ1dHRvblZpc2liaWxpdHlPbkludGVyc2VjdChlbnRyaWVzKSxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdoaWRlU2Nyb2xsVXBCdXR0b24nKSkge1xuICAgICAgY29uc3QgaW50ZXJzZWN0b3JFbGVtZW50ID0gdGhpcy5faW50ZXJzZWN0b3IoKTtcblxuICAgICAgaWYgKCF0aGlzLmhpZGVTY3JvbGxVcEJ1dHRvbiAmJiBpbnRlcnNlY3RvckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZShpbnRlcnNlY3RvckVsZW1lbnQpO1xuICAgICAgfSBlbHNlIGlmIChpbnRlcnNlY3RvckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5fb2JzZXJ2ZXIudW5vYnNlcnZlKGludGVyc2VjdG9yRWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGlmICghdGhpcy5oaWRlU2Nyb2xsVXBCdXR0b24pIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5faW50ZXJzZWN0b3IoKSEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2ludGVyc2VjdG9yKCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcignI2ludGVyc2VjdG9yJykgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdXR0b24gY2xpY2sgY2FsbGJhY2sgdG8gdHJpZ2dlciB0aGUgc2Nyb2xsIHRvIGNvbnRhaW5lciB0b3BcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX29uU2Nyb2xsQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcnNlY3Rpb24gY2FsbGJhY2suIFRvZ2dsZXMgdGhlIHZpc2liaWxpdHkuXG4gICAqIEBwYXJhbSBlbnRyaWVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF90b2dnbGVCdXR0b25WaXNpYmlsaXR5T25JbnRlcnNlY3QoZW50cmllczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdKTogdm9pZCB7XG4gICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgbWFwSXNIaWRkZW4gPSAhZW50cnkuaXNJbnRlcnNlY3Rpbmc7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zY3JvbGwtdXAtYnV0dG9uLXZpc2libGUnLCBtYXBJc0hpZGRlbik7XG4gICAgICB0aGlzLl9zY3JvbGxVcEJ1dHRvblZpc2libGUgPSBtYXBJc0hpZGRlbjtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1tYXAtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbWFwLWNvbnRhaW5lcl9fbWFwXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cIm1hcFwiPjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbWFwLWNvbnRhaW5lcl9fc2lkZWJhclwiPlxuICAgICAgICAgIDxzcGFuIGlkPVwiaW50ZXJzZWN0b3JcIj48L3NwYW4+XG5cbiAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG5cbiAgICAgICAgICAkeyF0aGlzLmhpZGVTY3JvbGxVcEJ1dHRvblxuICAgICAgICAgICAgPyBodG1sYDxzYmItdGVydGlhcnktYnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItbWFwLWNvbnRhaW5lcl9fc2lkZWJhci1idXR0b25cIlxuICAgICAgICAgICAgICAgIHNpemU9XCJsXCJcbiAgICAgICAgICAgICAgICBpY29uLW5hbWU9XCJsb2NhdGlvbi1waW4tbWFwLXNtYWxsXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9vblNjcm9sbEJ1dHRvbkNsaWNrKCl9XG4gICAgICAgICAgICAgICAgP2luZXJ0PSR7IXRoaXMuX3Njcm9sbFVwQnV0dG9uVmlzaWJsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICR7aTE4bk1hcENvbnRhaW5lckJ1dHRvbkxhYmVsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgICA8L3NiYi10ZXJ0aWFyeS1idXR0b24+YFxuICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1tYXAtY29udGFpbmVyJzogU2JiTWFwQ29udGFpbmVyRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUE4Qk0sMEJBQXNCLE1BQUE7OzBCQUQzQixjQUFjLG1CQUFtQixDQUFDOzs7O29CQUNFOzs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUFVO0FBQUE7O0FBTTdDO0FBRVM7QUFGTyx5QkFBQSxzQ0FBQSxrQkFBQSxNQUFBLGtDQUE4QixLQUFLO0FBRXpCLHlCQUFBLDJDQUFBLGtCQUFBLE1BQUEscUNBQUEsR0FBQSxrQkFBQSxNQUFBLHNDQUF5QixLQUFLO0FBRWhELFdBQUEsaUZBQVksSUFBSSxzQkFBc0IsSUFBSTtBQUMxQyxXQUFBLFlBQVksSUFBSSx1QkFBdUIsTUFBTTtBQUFBLFFBQ25ELFFBQVE7QUFBQSxRQUNSLFVBQVUsQ0FBQyxZQUFZLEtBQUssbUNBQW1DLE9BQU87QUFBQSxNQUFBLENBQ3ZFO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFSRCxJQUFnQixxQkFBb0M7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXBELElBQWdCLG1CQUFvQyxPQUFBO0FBQUEs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
284
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRhaW5lci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL21hcC1jb250YWluZXIvbWFwLWNvbnRhaW5lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcnNlY3Rpb25Db250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9pbnRlcnNlY3Rpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGkxOG5NYXBDb250YWluZXJCdXR0b25MYWJlbCB9IGZyb20gJy4uL2NvcmUvaTE4bi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL21hcC1jb250YWluZXIuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi9idXR0b24vdGVydGlhcnktYnV0dG9uLmpzJztcblxuLyoqXG4gKiBJdCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3IgbWFwcy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBzaWRlYmFyLlxuICogQHNsb3QgbWFwIC0gVXNlZCBmb3Igc2xvdHRpbmcgdGhlIG1hcC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1tYXAtY29udGFpbmVyLW1hcmdpbi1zdGFydD12YXIoLS1zYmItaGVhZGVyLWhlaWdodCldIC0gVGhlIGNvbXBvbmVudFxuICogY29tZXMgYWxvbmcgd2l0aCBhIGhlaWdodCBjYWxjdWxhdGlvbiB0aGF0IHN1YnRyYWN0cyB0aGUgaGVpZ2h0IG9mIHRoZSBoZWFkZXIuXG4gKiBGb3Igc3BlY2lmaWMgdXNlIGNhc2VzLCB0aGlzIHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgcHJlc2V0IGhlaWdodC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1tYXAtY29udGFpbmVyLXNpZGViYXItd2lkdGg9emVyby1sYXJnZTo0MDBweDt3aWRlLXVsdHJhOjQ4MHB4XSAtIENhbiBiZSB1c2VkXG4gKiB0byBtb2RpZnkgdGhlIHdpZHRoIG9mIHRoZSBsZWZ0IHNpZGViYXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItbWFwLWNvbnRhaW5lci1tb2JpbGUtc3RpY2t5LWJsb2NrLXN0YXJ0PTBdIC0gSWYgZS5nLiBhIGhlYWRlciB3aXRoIGEgZml4ZWQgaGVpZ2h0XG4gKiBpcyBwbGFjZWQgYmVmb3JlIHRoZSBtYXAtY29udGFpbmVyLCB0aGUgbWFwIHNob3VsZCBiZSBzdGlja3kgcmVzcGVjdGluZ1xuICogdGhpcyBvZmZzZXQgZnJvbSB0aGUgZG9jdW1lbnQncyB0b3AuIE9ubHkgYXBwbGllZCBvbiBtb2JpbGUgdmlld3MuXG4gKiBNb3N0IGNvbW1vbmx5IGl0IGNhbiBiZSBzZXQgdG8gYHZhcigtLXNiYi1oZWFkZXItaGVpZ2h0KWAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1tYXAtY29udGFpbmVyJylcbmNsYXNzIFNiYk1hcENvbnRhaW5lckVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIEZsYWcgdG8gc2hvdy9oaWRlIHRoZSBzY3JvbGwgdXAgYnV0dG9uIGluc2lkZSB0aGUgc2lkZWJhciBvbiBtb2JpbGUuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoaWRlLXNjcm9sbC11cC1idXR0b24nLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBoaWRlU2Nyb2xsVXBCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9zY3JvbGxVcEJ1dHRvblZpc2libGUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX29ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBjYWxsYmFjazogKGVudHJpZXMpID0+IHRoaXMuX3RvZ2dsZUJ1dHRvblZpc2liaWxpdHlPbkludGVyc2VjdChlbnRyaWVzKSxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdoaWRlU2Nyb2xsVXBCdXR0b24nKSkge1xuICAgICAgY29uc3QgaW50ZXJzZWN0b3JFbGVtZW50ID0gdGhpcy5faW50ZXJzZWN0b3IoKTtcblxuICAgICAgaWYgKCF0aGlzLmhpZGVTY3JvbGxVcEJ1dHRvbiAmJiBpbnRlcnNlY3RvckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZShpbnRlcnNlY3RvckVsZW1lbnQpO1xuICAgICAgfSBlbHNlIGlmIChpbnRlcnNlY3RvckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5fb2JzZXJ2ZXIudW5vYnNlcnZlKGludGVyc2VjdG9yRWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGlmICghdGhpcy5oaWRlU2Nyb2xsVXBCdXR0b24pIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5faW50ZXJzZWN0b3IoKSEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2ludGVyc2VjdG9yKCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcignI2ludGVyc2VjdG9yJykgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdXR0b24gY2xpY2sgY2FsbGJhY2sgdG8gdHJpZ2dlciB0aGUgc2Nyb2xsIHRvIGNvbnRhaW5lciB0b3BcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX29uU2Nyb2xsQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcnNlY3Rpb24gY2FsbGJhY2suIFRvZ2dsZXMgdGhlIHZpc2liaWxpdHkuXG4gICAqIEBwYXJhbSBlbnRyaWVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF90b2dnbGVCdXR0b25WaXNpYmlsaXR5T25JbnRlcnNlY3QoZW50cmllczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdKTogdm9pZCB7XG4gICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgbWFwSXNIaWRkZW4gPSAhZW50cnkuaXNJbnRlcnNlY3Rpbmc7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zY3JvbGwtdXAtYnV0dG9uLXZpc2libGUnLCBtYXBJc0hpZGRlbik7XG4gICAgICB0aGlzLl9zY3JvbGxVcEJ1dHRvblZpc2libGUgPSBtYXBJc0hpZGRlbjtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1tYXAtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbWFwLWNvbnRhaW5lcl9fbWFwXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cIm1hcFwiPjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbWFwLWNvbnRhaW5lcl9fc2lkZWJhclwiPlxuICAgICAgICAgIDxzcGFuIGlkPVwiaW50ZXJzZWN0b3JcIj48L3NwYW4+XG5cbiAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG5cbiAgICAgICAgICAkeyF0aGlzLmhpZGVTY3JvbGxVcEJ1dHRvblxuICAgICAgICAgICAgPyBodG1sYDxzYmItdGVydGlhcnktYnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItbWFwLWNvbnRhaW5lcl9fc2lkZWJhci1idXR0b25cIlxuICAgICAgICAgICAgICAgIHNpemU9XCJsXCJcbiAgICAgICAgICAgICAgICBpY29uLW5hbWU9XCJsb2NhdGlvbi1waW4tbWFwLXNtYWxsXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9vblNjcm9sbEJ1dHRvbkNsaWNrKCl9XG4gICAgICAgICAgICAgICAgP2luZXJ0PSR7IXRoaXMuX3Njcm9sbFVwQnV0dG9uVmlzaWJsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICR7aTE4bk1hcENvbnRhaW5lckJ1dHRvbkxhYmVsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgICA8L3NiYi10ZXJ0aWFyeS1idXR0b24+YFxuICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1tYXAtY29udGFpbmVyJzogU2JiTWFwQ29udGFpbmVyRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBOEJNLDBCQUFzQixNQUFBOzswQkFEM0IsY0FBYyxtQkFBbUIsQ0FBQzs7OztvQkFDRTs7Ozs7OztBQUFSLEVBQUEsbUJBQVEsWUFBVTtBQUFBOztBQU03QztBQUVTO0FBRk8seUJBQUEsc0NBQUEsa0JBQUEsTUFBQSxrQ0FBOEIsS0FBSztBQUV6Qix5QkFBQSwyQ0FBQSxrQkFBQSxNQUFBLHFDQUFBLEdBQUEsa0JBQUEsTUFBQSxzQ0FBeUIsS0FBSztBQUVoRCxXQUFBLGlGQUFZLElBQUksc0JBQXNCLElBQUk7QUFDMUMsV0FBQSxZQUFZLElBQUksdUJBQXVCLE1BQU07QUFBQSxRQUNuRCxRQUFRO0FBQUEsUUFDUixVQUFVLENBQUMsWUFBWSxLQUFLLG1DQUFtQyxPQUFPO0FBQUEsTUFBQSxDQUN2RTtBQUFBLElBQUE7QUFBQTtBQUFBLElBUkQsSUFBZ0IscUJBQW9DO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFwRCxJQUFnQixtQkFBb0MsT0FBQTtBQUFB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
@@ -39,6 +39,7 @@ export declare class SbbMenuElement extends SbbMenuElement_base {
39
39
  private _focusHandler;
40
40
  private _scrollHandler;
41
41
  private _inertController;
42
+ private _mediaMatcher;
42
43
  /**
43
44
  * Opens the menu on trigger click.
44
45
  */
@@ -1 +1 @@
1
- {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../../../src/elements/menu/menu/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAYrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAWtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;AAkB1D;;;;;;;;;;;GAWG;AACH,qBAEM,cAAe,SAAQ,mBAGH;IACxB,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,mBAA4B,mBAAmB,WAAwC;IAEvF;;;OAGG;IACH,IACW,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,EAIpD;IACD,IAAW,OAAO,IAAI,MAAM,GAAG,WAAW,GAAG,IAAI,CAEhD;IACD,OAAO,CAAC,QAAQ,CAAqC;IAErD;;;OAGG;IACH,SAEgB,sBAAsB,EAAE,MAAM,CAAM;IAEpD,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,yBAAyB,CAAkB;IACnD,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,gBAAgB,CAAgC;IAExD;;OAEG;IACI,IAAI,IAAI,IAAI;IAmBnB;;OAEG;IACI,KAAK,IAAI,IAAI;IAapB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,cAAc;YAqBR,eAAe;IAY7B,OAAO,CAAC,2BAA2B;IAWnB,iBAAiB,IAAI,IAAI;IAgBzB,oBAAoB,IAAI,IAAI;IAQ5C,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,+BAA+B;IAQvC,OAAO,CAAC,oBAAoB,CAE1B;IAGF,OAAO,CAAC,qBAAqB,CAI3B;IAMF,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;cAyBL,MAAM,IAAI,cAAc;CAqB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../../../src/elements/menu/menu/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAYrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAgBtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;AAkB1D;;;;;;;;;;;GAWG;AACH,qBAEM,cAAe,SAAQ,mBAGH;IACxB,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,mBAA4B,mBAAmB,WAAwC;IAEvF;;;OAGG;IACH,IACW,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,EAIpD;IACD,IAAW,OAAO,IAAI,MAAM,GAAG,WAAW,GAAG,IAAI,CAEhD;IACD,OAAO,CAAC,QAAQ,CAAqC;IAErD;;;OAGG;IACH,SAEgB,sBAAsB,EAAE,MAAM,CAAM;IAEpD,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,yBAAyB,CAAkB;IACnD,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,aAAa,CAQlB;IAEH;;OAEG;IACI,IAAI,IAAI,IAAI;IAmBnB;;OAEG;IACI,KAAK,IAAI,IAAI;IAapB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,cAAc;YAqBR,eAAe;IAY7B,OAAO,CAAC,2BAA2B;IAWnB,iBAAiB,IAAI,IAAI;IAgBzB,oBAAoB,IAAI,IAAI;IAQ5C,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,+BAA+B;IAQvC,OAAO,CAAC,oBAAoB,CAE1B;IAGF,OAAO,CAAC,qBAAqB,CAI3B;IAMF,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;cAyBL,MAAM,IAAI,cAAc;CAqB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}