tide-design-system 2.0.5 → 2.0.7

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 (85) hide show
  1. package/dist/{IconAccountBalance-8d60a762.js → IconAccountBalance-06eb652e.js} +2 -2
  2. package/dist/{IconAdd-41987be0.js → IconAdd-55ceca8d.js} +2 -2
  3. package/dist/{IconAi-54c9f1f9.js → IconAi-fb273c7b.js} +2 -2
  4. package/dist/{IconAlignSpace-0dbce580.js → IconAlignSpace-9a4e57ef.js} +2 -2
  5. package/dist/{IconApplePay-0aac1e20.js → IconApplePay-4891e912.js} +2 -2
  6. package/dist/{IconArrowBack-942e8c4c.js → IconArrowBack-da935079.js} +2 -2
  7. package/dist/{IconArrowForward-4b5bcc17.js → IconArrowForward-3636bb09.js} +2 -2
  8. package/dist/{IconArrowRight-143abfe9.js → IconArrowRight-9aa4ad3c.js} +2 -2
  9. package/dist/{IconAssignment-28546363.js → IconAssignment-235293cf.js} +2 -2
  10. package/dist/{IconAwardStar-e260b61a.js → IconAwardStar-d8e874b8.js} +2 -2
  11. package/dist/{IconBookmark-2df361a1.js → IconBookmark-579af717.js} +2 -2
  12. package/dist/{IconCalendarMonth-1331bb2e.js → IconCalendarMonth-134fc1b7.js} +2 -2
  13. package/dist/{IconCall-bfb28d23.js → IconCall-89643189.js} +2 -2
  14. package/dist/{IconCheck-4f7c55bb.js → IconCheck-4cd8cfb3.js} +2 -2
  15. package/dist/{IconChevronLeft-111444b3.js → IconChevronLeft-e08cba3c.js} +2 -2
  16. package/dist/{IconChevronRight-f3e73764.js → IconChevronRight-a083acd4.js} +2 -2
  17. package/dist/{IconClear-7f6472ed.js → IconClear-fe4a746a.js} +2 -2
  18. package/dist/{IconClose-fe46270f.js → IconClose-5f428000.js} +2 -2
  19. package/dist/{IconCycle-1c670925.js → IconCycle-d0a27f53.js} +2 -2
  20. package/dist/{IconDelete-40861e3a.js → IconDelete-2f3e7f08.js} +2 -2
  21. package/dist/{IconDiamond-92bc3c14.js → IconDiamond-eec6dd38.js} +2 -2
  22. package/dist/{IconEdit-2ce79ec9.js → IconEdit-6de14bc7.js} +2 -2
  23. package/dist/{IconError-9d150afa.js → IconError-d0375661.js} +2 -2
  24. package/dist/{IconExpandContent-4611f59a.js → IconExpandContent-d19db336.js} +2 -2
  25. package/dist/{IconExpandLess-97dbbba2.js → IconExpandLess-2f67af25.js} +2 -2
  26. package/dist/{IconExpandMore-74cf7746.js → IconExpandMore-da40cea8.js} +2 -2
  27. package/dist/{IconFacebook-5177a43e.js → IconFacebook-9f2904bb.js} +2 -2
  28. package/dist/{IconFavorite-b8b2232b.js → IconFavorite-42adc438.js} +2 -2
  29. package/dist/{IconFavoriteFilled-a03c18b0.js → IconFavoriteFilled-0c034bb0.js} +2 -2
  30. package/dist/{IconFormatBold-fe01c0d0.js → IconFormatBold-25479a8d.js} +2 -2
  31. package/dist/{IconFormatItalic-2b3d0f32.js → IconFormatItalic-4900d91e.js} +2 -2
  32. package/dist/{IconFormatListBulleted-9f4f5f29.js → IconFormatListBulleted-0ab8ec7f.js} +2 -2
  33. package/dist/{IconForum-ad13c05f.js → IconForum-3d5a7675.js} +2 -2
  34. package/dist/{IconGoogle-1661c713.js → IconGoogle-bbc6e150.js} +2 -2
  35. package/dist/{IconGooglePay-c55f25e8.js → IconGooglePay-adeae60c.js} +2 -2
  36. package/dist/{IconGrid-1a6868d2.js → IconGrid-c538878f.js} +2 -2
  37. package/dist/{IconHelp-1d25fcc1.js → IconHelp-3b881a9b.js} +2 -2
  38. package/dist/{IconInfo-25020d15.js → IconInfo-4a163f85.js} +2 -2
  39. package/dist/{IconInsertText-a93ea55d.js → IconInsertText-1b1fe79c.js} +2 -2
  40. package/dist/{IconInstagram-393a91c5.js → IconInstagram-c70e56ba.js} +2 -2
  41. package/dist/{IconIosShare-10a2497c.js → IconIosShare-0af57d94.js} +2 -2
  42. package/dist/{IconLayout-b486c56c.js → IconLayout-39860564.js} +2 -2
  43. package/dist/{IconLinkedIn-ed3a304e.js → IconLinkedIn-c91068df.js} +2 -2
  44. package/dist/{IconLocalShipping-21673087.js → IconLocalShipping-67dcfdd7.js} +2 -2
  45. package/dist/{IconLock-c7d18ae6.js → IconLock-706a2485.js} +2 -2
  46. package/dist/{IconMail-3a6fb81c.js → IconMail-5daaba91.js} +2 -2
  47. package/dist/{IconMenu-27e0ea03.js → IconMenu-f93848c2.js} +2 -2
  48. package/dist/{IconMoreHoriz-97b1974a.js → IconMoreHoriz-c7b18bef.js} +2 -2
  49. package/dist/{IconNotifications-11566098.js → IconNotifications-9612e653.js} +2 -2
  50. package/dist/{IconOpenInNew-e89309cc.js → IconOpenInNew-1a365551.js} +2 -2
  51. package/dist/{IconPalette-7b39c00b.js → IconPalette-cd9b0a55.js} +2 -2
  52. package/dist/{IconPaypal-581e5de8.js → IconPaypal-f2b65986.js} +2 -2
  53. package/dist/{IconPerson-7b5fc958.js → IconPerson-cca15a20.js} +2 -2
  54. package/dist/{IconPhotoCamera-dd25e6de.js → IconPhotoCamera-db1a2525.js} +2 -2
  55. package/dist/{IconPinterest-f8569b8c.js → IconPinterest-f1f45db9.js} +2 -2
  56. package/dist/{IconPlayArrow-a7538942.js → IconPlayArrow-07887739.js} +2 -2
  57. package/dist/{IconRemove-c19ef592.js → IconRemove-b2783b95.js} +2 -2
  58. package/dist/{IconRoundedCorners-501a2efe.js → IconRoundedCorners-cd483708.js} +2 -2
  59. package/dist/{IconSearch-c2acd4ec.js → IconSearch-8ec692de.js} +2 -2
  60. package/dist/{IconSell-8a47939b.js → IconSell-ac2caa92.js} +2 -2
  61. package/dist/{IconShare-a8e26193.js → IconShare-18403586.js} +2 -2
  62. package/dist/{IconShoppingCart-78a14827.js → IconShoppingCart-725478d8.js} +2 -2
  63. package/dist/{IconSms-3a93e423.js → IconSms-0d712802.js} +2 -2
  64. package/dist/{IconStar-8c8f1bb4.js → IconStar-a87d7afd.js} +2 -2
  65. package/dist/{IconSwapVert-066694ed.js → IconSwapVert-da402a5a.js} +2 -2
  66. package/dist/{IconThreeDRotation-7823ddb5.js → IconThreeDRotation-255a2fdd.js} +2 -2
  67. package/dist/{IconTune-43f405a5.js → IconTune-7514244c.js} +2 -2
  68. package/dist/{IconTwitter-2bc0ee2b.js → IconTwitter-2117705e.js} +2 -2
  69. package/dist/{IconVideocam-7deb4ac7.js → IconVideocam-9b0daa99.js} +2 -2
  70. package/dist/{IconViewInAr-bf12af3e.js → IconViewInAr-3a507ad4.js} +2 -2
  71. package/dist/{IconVisibility-f6ca5bb6.js → IconVisibility-862dfc95.js} +2 -2
  72. package/dist/{IconWarning-7a1f76a9.js → IconWarning-e6564830.js} +2 -2
  73. package/dist/{IconYoutube-6e789d14.js → IconYoutube-46a81634.js} +2 -2
  74. package/dist/css/grid-layout.css +64 -0
  75. package/dist/css/main.css +1 -1
  76. package/dist/css/storybook.css +4 -0
  77. package/dist/css/utilities.css +3 -0
  78. package/dist/index-164651b2.js +2081 -0
  79. package/dist/style.css +1 -1
  80. package/dist/tide-design-system.js +1 -1
  81. package/dist/types/Orientation.ts +6 -0
  82. package/dist/types/Styles.ts +4 -0
  83. package/package.json +1 -3
  84. package/dist/css/page-layout.css +0 -53
  85. package/dist/index-1042d93b.js +0 -2055
@@ -1,2055 +0,0 @@
1
- import { openBlock as l, createElementBlock as r, normalizeClass as i, unref as t, defineComponent as v, ref as A, watch as Q, defineAsyncComponent as ue, markRaw as Re, createBlock as S, resolveDynamicComponent as z, createCommentVNode as N, toDisplayString as L, onMounted as ee, createElementVNode as c, createVNode as G, renderSlot as X, withCtx as Z, computed as F, Fragment as $, renderList as j, createTextVNode as ce, onUnmounted as Oe, onUpdated as Ae, normalizeStyle as J, onBeforeUnmount as Ne, getCurrentInstance as te, withDirectives as se, vModelSelect as Le, withModifiers as Ee, vModelDynamic as pe, vModelText as ve, Teleport as Fe, Transition as _e, vShow as De } from "vue";
2
- const e = {
3
- ALIGN: {
4
- X: {
5
- CENTER: "tide-text-center",
6
- LEFT: "tide-text-left",
7
- RIGHT: "tide-text-right"
8
- },
9
- Y: {
10
- MIDDLE: "tide-align-middle"
11
- }
12
- },
13
- AXIS1: {
14
- AROUND: "tide-axis1-around",
15
- BETWEEN: "tide-axis1-between",
16
- CENTER: "tide-axis1-center",
17
- END: "tide-axis1-end",
18
- START: "tide-axis1-start"
19
- },
20
- AXIS2: {
21
- AROUND: "tide-axis2-around",
22
- CENTER: "tide-axis2-center",
23
- END: "tide-axis2-end",
24
- START: "tide-axis2-start"
25
- },
26
- BG: {
27
- ERROR: "tide-bg-error",
28
- INFO: "tide-bg-info",
29
- PRIMARY: "tide-bg-primary",
30
- SECONDARY: "tide-bg-secondary",
31
- SUCCESS: "tide-bg-success",
32
- SURFACE: {
33
- ACCENT: "tide-bg-surface-accent",
34
- ACCENT_VARIANT: "tide-bg-surface-accent-variant",
35
- BRAND: "tide-bg-surface-brand",
36
- DEFAULT: "tide-bg-surface",
37
- ERROR: "tide-bg-surface-error",
38
- FLOATING: "tide-bg-surface-floating",
39
- GRADIENT: "tide-bg-surface-gradient",
40
- INFO: "tide-bg-surface-info",
41
- SUCCESS: "tide-bg-surface-success",
42
- VARIANT: "tide-bg-surface-variant",
43
- WARNING: "tide-bg-surface-warning"
44
- },
45
- WARNING: "tide-bg-warning"
46
- },
47
- BORDER: {
48
- BOTTOM: {
49
- ONE: "tide-border-bottom-1",
50
- TWO: "tide-border-bottom-2"
51
- },
52
- COLOR: {
53
- DEFAULT: "tide-border",
54
- FLOATING: "tide-border-floating",
55
- HIGH: "tide-border-high",
56
- LOW: "tide-border-low",
57
- PRIMARY: "tide-border-primary"
58
- },
59
- FULL: {
60
- ONE: "tide-border-1",
61
- TWO: "tide-border-2"
62
- },
63
- LEFT: {
64
- ONE: "tide-border-left-1",
65
- TWO: "tide-border-left-2"
66
- },
67
- RADIUS: {
68
- FULL: "tide-radius-full",
69
- HALF: "tide-radius-1/2",
70
- ONE: "tide-radius-1",
71
- QUARTER: "tide-radius-1/4"
72
- },
73
- RIGHT: {
74
- ONE: "tide-border-right-1",
75
- TWO: "tide-border-right-2"
76
- },
77
- TOP: {
78
- ONE: "tide-border-top-1",
79
- TWO: "tide-border-top-2"
80
- }
81
- },
82
- BOX_SIZING: {
83
- BORDER_BOX: "tide-box-border",
84
- CONTENT_BOX: "tide-box-content"
85
- },
86
- BREAK_WORD: {
87
- ON: "tide-break-word"
88
- },
89
- CURSOR: {
90
- NOT_ALLOWED: "tide-cursor-not-allowed",
91
- POINTER: "tide-cursor-pointer",
92
- TEXT: "tide-cursor-text"
93
- },
94
- DISPLAY: {
95
- BLOCK: "tide-display-block",
96
- CONTENTS: "tide-contents",
97
- FLEX: "tide-display-flex",
98
- GRID: "tide-display-grid",
99
- INITIAL: "initial",
100
- INLINE: "tide-display-inline",
101
- INLINE_BLOCK: "tide-display-inline-block",
102
- INLINE_FLEX: "tide-display-inline-flex",
103
- NONE: "tide-display-none"
104
- },
105
- FLEX: {
106
- DIRECTION: {
107
- COLUMN: "tide-flex-column",
108
- COLUMN_REVERSE: "tide-flex-column-reverse",
109
- ROW: "tide-flex-row",
110
- ROW_REVERSE: "tide-row-reverse"
111
- },
112
- GROW: {
113
- OFF: "tide-grow-none",
114
- ON: "tide-grow"
115
- },
116
- SHRINK: {
117
- OFF: "tide-shrink-none",
118
- ON: "tide-shrink"
119
- },
120
- WRAP: "tide-flex-wrap"
121
- },
122
- FONT: {
123
- COLOR: {
124
- PRIMARY: "tide-font-on-primary",
125
- SECONDARY: "tide-font-on-secondary",
126
- SURFACE: {
127
- BRAND: "tide-font-on-surface-brand",
128
- DEFAULT: "tide-font-on-surface",
129
- INVERSE: "tide-font-on-surface-inverse",
130
- VARIANT: "tide-font-on-surface-variant",
131
- VARIANT_INVERSE: "tide-font-on-surface-variant-inverse"
132
- }
133
- },
134
- SIZE: {
135
- FOURTEEN: "tide-font-14",
136
- SIXTEEN: "tide-font-16",
137
- THIRTY_TWO: "tide-font-32",
138
- TWELVE: "tide-font-12",
139
- TWENTY: "tide-font-20",
140
- TWENTY_FOUR: "tide-font-24"
141
- },
142
- WEIGHT: {
143
- FIVE_HUNDRED: "tide-font-500",
144
- FOUR_HUNDRED: "tide-font-400",
145
- SEVEN_HUNDRED: "tide-font-700",
146
- SIX_HUNDRED: "tide-font-600"
147
- }
148
- },
149
- GAP: {
150
- FOUR: "tide-gap-4",
151
- HALF: "tide-gap-1/2",
152
- ONE: "tide-gap-1",
153
- QUARTER: "tide-gap-1/4",
154
- TWO: "tide-gap-2"
155
- },
156
- HEIGHT: {
157
- FULL: "tide-height-full"
158
- },
159
- LIST_BULLETS: {
160
- OFF: "tide-list-none"
161
- },
162
- MARGIN: {
163
- BOTTOM: {
164
- FOUR: "tide-margin-bottom-4",
165
- HALF: "tide-margin-bottom-1/2",
166
- ONE: "tide-margin-bottom-1",
167
- QUARTER: "tide-margin-bottom-1/4",
168
- TWO: "tide-margin-bottom-2"
169
- },
170
- FULL: {
171
- FOUR: "tide-margin-4",
172
- HALF: "tide-margin-1/2",
173
- ONE: "tide-margin-1",
174
- QUARTER: "tide-margin-1/4",
175
- TWO: "tide-margin-2"
176
- },
177
- LEFT: {
178
- AUTO: "tide-margin-left-auto",
179
- FOUR: "tide-margin-left-4",
180
- HALF: "tide-margin-left-1/2",
181
- ONE: "tide-margin-left-1",
182
- QUARTER: "tide-margin-left-1/4",
183
- TWO: "tide-margin-left-2"
184
- },
185
- RIGHT: {
186
- AUTO: "tide-margin-right-auto",
187
- FOUR: "tide-margin-right-4",
188
- HALF: "tide-margin-right-1/2",
189
- ONE: "tide-margin-right-1",
190
- QUARTER: "tide-margin-right-1/4",
191
- TWO: "tide-margin-right-2"
192
- },
193
- TOP: {
194
- FOUR: "tide-margin-top-4",
195
- HALF: "tide-margin-top-1/2",
196
- ONE: "tide-margin-top-1",
197
- QUARTER: "tide-margin-top-1/4",
198
- TWO: "tide-margin-top-2"
199
- },
200
- X: {
201
- AUTO: "tide-margin-x-auto",
202
- FOUR: "tide-margin-x-4",
203
- HALF: "tide-margin-x-1/2",
204
- ONE: "tide-margin-x-1",
205
- QUARTER: "tide-margin-x-1/4",
206
- TWO: "tide-margin-x-2"
207
- },
208
- Y: {
209
- FOUR: "tide-margin-y-4",
210
- HALF: "tide-margin-y-1/2",
211
- ONE: "tide-margin-y-1",
212
- QUARTER: "tide-margin-y-1/4",
213
- TWO: "tide-margin-y-2"
214
- }
215
- },
216
- OBJECT: {
217
- CENTER: "tide-object-center",
218
- CONTAIN: "tide-object-contain",
219
- COVER: "tide-object-cover",
220
- SCALE_DOWN: "tide-object-scale-down"
221
- },
222
- OVERFLOW: {
223
- X: {
224
- AUTO: "tide-x-auto",
225
- HIDDEN: "tide-x-hidden",
226
- SCROLL: "tide-x-scroll"
227
- },
228
- XY: {
229
- AUTO: "tide-xy-auto",
230
- HIDDEN: "tide-xy-hidden"
231
- },
232
- Y: {
233
- AUTO: "tide-y-auto",
234
- HIDDEN: "tide-y-hidden"
235
- }
236
- },
237
- PADDING: {
238
- BOTTOM: {
239
- FOUR: "tide-padding-bottom-4",
240
- HALF: "tide-padding-bottom-1/2",
241
- ONE: "tide-padding-bottom-1",
242
- QUARTER: "tide-padding-bottom-1/4",
243
- TWO: "tide-padding-bottom-2"
244
- },
245
- FULL: {
246
- FOUR: "tide-padding-4",
247
- HALF: "tide-padding-1/2",
248
- ONE: "tide-padding-1",
249
- QUARTER: "tide-padding-1/4",
250
- TWO: "tide-padding-2"
251
- },
252
- LEFT: {
253
- FOUR: "tide-padding-left-4",
254
- HALF: "tide-padding-left-1/2",
255
- ONE: "tide-padding-left-1",
256
- QUARTER: "tide-padding-left-1/4",
257
- TWO: "tide-padding-left-2"
258
- },
259
- RIGHT: {
260
- FOUR: "tide-padding-right-4",
261
- HALF: "tide-padding-right-1/2",
262
- ONE: "tide-padding-right-1",
263
- QUARTER: "tide-padding-right-1/4",
264
- TWO: "tide-padding-right-2"
265
- },
266
- TOP: {
267
- FOUR: "tide-padding-top-4",
268
- HALF: "tide-padding-top-1/2",
269
- ONE: "tide-padding-top-1",
270
- QUARTER: "tide-padding-top-1/4",
271
- TWO: "tide-padding-top-2"
272
- },
273
- X: {
274
- FOUR: "tide-padding-x-4",
275
- HALF: "tide-padding-x-1/2",
276
- ONE: "tide-padding-x-1",
277
- QUARTER: "tide-padding-x-1/4",
278
- TWO: "tide-padding-x-2"
279
- },
280
- Y: {
281
- FOUR: "tide-padding-y-4",
282
- HALF: "tide-padding-y-1/2",
283
- ONE: "tide-padding-y-1",
284
- QUARTER: "tide-padding-y-1/4",
285
- TWO: "tide-padding-y-2"
286
- }
287
- },
288
- POINTER_EVENTS: {
289
- OFF: "tide-pointer-events-none",
290
- ON: "tide-pointer-events"
291
- },
292
- POSITION: {
293
- ABSOLUTE: "tide-position-absolute",
294
- FIXED: "tide-position-fixed",
295
- RELATIVE: "tide-position-relative",
296
- STICKY: "tide-sticky"
297
- },
298
- POSITIONING: {
299
- BOTTOM_0: "tide-bottom-0",
300
- LEFT_0: "tide-left-0",
301
- RIGHT_0: "tide-right-0",
302
- TOP_0: "tide-top-0"
303
- },
304
- SCROLLBAR: {
305
- OFF: "tide-scrollbar-none"
306
- },
307
- SHADOW: {
308
- BOTTOM: "tide-shadow-bottom",
309
- TOP: "tide-shadow-top"
310
- },
311
- SNAP: {
312
- ON: "tide-snap"
313
- },
314
- SNAP_ALIGN: {
315
- START: "tide-snap-start"
316
- },
317
- TEXT_TRANSFORM: {
318
- LOWER: "tide-text-transform-lower",
319
- NONE: "tide-text-transform-none",
320
- UPPER: "tide-text-transform-upper"
321
- },
322
- UNDERLINE: {
323
- HOVER: "tide-underline-hover",
324
- OFF: "tide-underline-none",
325
- ON: "tide-underline"
326
- },
327
- VISIBILITY: {
328
- OFF: "tide-visible-none",
329
- ON: "tide-visible"
330
- },
331
- WHITESPACE_WRAP: {
332
- OFF: "tide-whitespace-nowrap"
333
- },
334
- WIDTH: {
335
- FULL: "tide-width-full",
336
- MAX_FULL: "tide-max-width-full"
337
- }
338
- };
339
- e.DISPLAY.BLOCK, e.DISPLAY.CONTENTS, e.DISPLAY.FLEX, e.DISPLAY.GRID, e.DISPLAY.NONE, e.DISPLAY.INITIAL, e.DISPLAY.INLINE, e.DISPLAY.INLINE_BLOCK, e.DISPLAY.INLINE_FLEX, e.AXIS1.AROUND, e.AXIS1.BETWEEN, e.AXIS1.CENTER, e.AXIS1.END, e.AXIS1.START, e.AXIS2.AROUND, e.AXIS2.CENTER, e.AXIS2.END, e.AXIS2.START, e.FLEX.DIRECTION.COLUMN, e.FLEX.DIRECTION.COLUMN_REVERSE, e.FLEX.DIRECTION.ROW, e.FLEX.DIRECTION.ROW_REVERSE, e.GAP.ONE, e.GAP.HALF, e.GAP.QUARTER, e.GAP.TWO, e.GAP.FOUR, e.FLEX.GROW.ON, e.FLEX.GROW.OFF, e.FLEX.SHRINK.ON, e.FLEX.SHRINK.OFF, e.FLEX.WRAP, e.POSITION.ABSOLUTE, e.POSITION.FIXED, e.POSITION.RELATIVE, e.POSITION.STICKY, e.POSITIONING.TOP_0, e.POSITIONING.RIGHT_0, e.POSITIONING.BOTTOM_0, e.POSITIONING.LEFT_0, e.BOX_SIZING.BORDER_BOX, e.BOX_SIZING.CONTENT_BOX, e.MARGIN.FULL.ONE, e.MARGIN.FULL.HALF, e.MARGIN.FULL.QUARTER, e.MARGIN.FULL.TWO, e.MARGIN.FULL.FOUR, e.MARGIN.Y.ONE, e.MARGIN.Y.HALF, e.MARGIN.Y.QUARTER, e.MARGIN.Y.TWO, e.MARGIN.Y.FOUR, e.MARGIN.TOP.ONE, e.MARGIN.TOP.HALF, e.MARGIN.TOP.QUARTER, e.MARGIN.TOP.TWO, e.MARGIN.TOP.FOUR, e.MARGIN.X.ONE, e.MARGIN.X.HALF, e.MARGIN.X.QUARTER, e.MARGIN.X.TWO, e.MARGIN.X.FOUR, e.MARGIN.X.AUTO, e.MARGIN.RIGHT.ONE, e.MARGIN.RIGHT.HALF, e.MARGIN.RIGHT.QUARTER, e.MARGIN.RIGHT.TWO, e.MARGIN.RIGHT.FOUR, e.MARGIN.RIGHT.AUTO, e.MARGIN.BOTTOM.ONE, e.MARGIN.BOTTOM.HALF, e.MARGIN.BOTTOM.QUARTER, e.MARGIN.BOTTOM.TWO, e.MARGIN.BOTTOM.FOUR, e.MARGIN.LEFT.ONE, e.MARGIN.LEFT.HALF, e.MARGIN.LEFT.QUARTER, e.MARGIN.LEFT.TWO, e.MARGIN.LEFT.FOUR, e.MARGIN.LEFT.AUTO, e.BORDER.FULL.ONE, e.BORDER.FULL.TWO, e.BORDER.TOP.ONE, e.BORDER.TOP.TWO, e.BORDER.RIGHT.ONE, e.BORDER.RIGHT.TWO, e.BORDER.BOTTOM.ONE, e.BORDER.BOTTOM.TWO, e.BORDER.LEFT.ONE, e.BORDER.LEFT.TWO, e.BORDER.RADIUS.ONE, e.BORDER.RADIUS.HALF, e.BORDER.RADIUS.QUARTER, e.BORDER.RADIUS.FULL, e.PADDING.FULL.ONE, e.PADDING.FULL.HALF, e.PADDING.FULL.QUARTER, e.PADDING.FULL.TWO, e.PADDING.FULL.FOUR, e.PADDING.Y.ONE, e.PADDING.Y.HALF, e.PADDING.Y.QUARTER, e.PADDING.Y.TWO, e.PADDING.Y.FOUR, e.PADDING.TOP.ONE, e.PADDING.TOP.HALF, e.PADDING.TOP.QUARTER, e.PADDING.TOP.TWO, e.PADDING.TOP.FOUR, e.PADDING.X.ONE, e.PADDING.X.HALF, e.PADDING.X.QUARTER, e.PADDING.X.TWO, e.PADDING.X.FOUR, e.PADDING.RIGHT.ONE, e.PADDING.RIGHT.HALF, e.PADDING.RIGHT.QUARTER, e.PADDING.RIGHT.TWO, e.PADDING.RIGHT.FOUR, e.PADDING.BOTTOM.ONE, e.PADDING.BOTTOM.HALF, e.PADDING.BOTTOM.QUARTER, e.PADDING.BOTTOM.TWO, e.PADDING.BOTTOM.FOUR, e.PADDING.LEFT.ONE, e.PADDING.LEFT.HALF, e.PADDING.LEFT.QUARTER, e.PADDING.LEFT.TWO, e.PADDING.LEFT.FOUR, e.WIDTH.MAX_FULL, e.WIDTH.FULL, e.HEIGHT.FULL, e.ALIGN.Y.MIDDLE, e.BREAK_WORD, e.CURSOR.NOT_ALLOWED, e.CURSOR.POINTER, e.FONT.SIZE.TWELVE, e.FONT.SIZE.FOURTEEN, e.FONT.SIZE.SIXTEEN, e.FONT.SIZE.TWENTY, e.FONT.SIZE.TWENTY_FOUR, e.FONT.SIZE.THIRTY_TWO, e.FONT.WEIGHT.FOUR_HUNDRED, e.FONT.WEIGHT.FIVE_HUNDRED, e.FONT.WEIGHT.SIX_HUNDRED, e.FONT.WEIGHT.SEVEN_HUNDRED, e.LIST_BULLETS.OFF, e.OBJECT.CENTER, e.OBJECT.CONTAIN, e.OBJECT.COVER, e.OBJECT.SCALE_DOWN, e.POINTER_EVENTS.ON, e.POINTER_EVENTS.OFF, e.SCROLLBAR.OFF, e.SHADOW.BOTTOM, e.SHADOW.TOP, e.SNAP.ON, e.SNAP_ALIGN.START, e.ALIGN.X.LEFT, e.ALIGN.X.CENTER, e.ALIGN.X.RIGHT, e.TEXT_TRANSFORM.LOWER, e.TEXT_TRANSFORM.NONE, e.TEXT_TRANSFORM.UPPER, e.UNDERLINE, e.UNDERLINE.HOVER, e.UNDERLINE.OFF, e.VISIBILITY.ON, e.VISIBILITY.OFF, e.WHITESPACE_WRAP.OFF, e.OVERFLOW.XY.AUTO, e.OVERFLOW.XY.HIDDEN, e.OVERFLOW.X.AUTO, e.OVERFLOW.X.HIDDEN, e.OVERFLOW.X.SCROLL, e.OVERFLOW.Y.AUTO, e.OVERFLOW.Y.HIDDEN;
340
- const de = {
341
- __name: "TideDivider",
342
- setup(n) {
343
- return (s, a) => (l(), r("div", {
344
- class: i([t(e).BORDER.COLOR.LOW, t(e).MARGIN.Y.HALF, t(e).BORDER.BOTTOM.ONE])
345
- }, null, 2));
346
- }
347
- }, Se = (n, s) => {
348
- const a = n[s];
349
- return a ? typeof a == "function" ? a() : Promise.resolve(a) : new Promise((o, d) => {
350
- (typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(d.bind(null, new Error("Unknown variable dynamic import: " + s)));
351
- });
352
- }, y = {
353
- LARGE: "large",
354
- SMALL: "small"
355
- }, fe = (n) => n && typeof n == "string" ? n.replace(/([a-z]{1})([A-Z]{1})/g, "$1 $2").replace(/[\s_-]/g, " ").toLowerCase().split(" ").map((s) => s.slice(0, 1).toUpperCase() + s.slice(1)).join("") : n, Ue = ["data-icon"], me = /* @__PURE__ */ v({
356
- __name: "TideIcon",
357
- props: {
358
- icon: {},
359
- size: { default: y.SMALL }
360
- },
361
- setup(n) {
362
- const s = n, a = A();
363
- return Q(
364
- () => s.icon,
365
- () => {
366
- const o = s.icon, d = fe(o), T = ue(() => Se(/* @__PURE__ */ Object.assign({ "../assets/svg/icons/IconAccountBalance.vue": () => import("./IconAccountBalance-8d60a762.js"), "../assets/svg/icons/IconAdd.vue": () => import("./IconAdd-41987be0.js"), "../assets/svg/icons/IconAi.vue": () => import("./IconAi-54c9f1f9.js"), "../assets/svg/icons/IconAlignSpace.vue": () => import("./IconAlignSpace-0dbce580.js"), "../assets/svg/icons/IconApplePay.vue": () => import("./IconApplePay-0aac1e20.js"), "../assets/svg/icons/IconArrowBack.vue": () => import("./IconArrowBack-942e8c4c.js"), "../assets/svg/icons/IconArrowForward.vue": () => import("./IconArrowForward-4b5bcc17.js"), "../assets/svg/icons/IconArrowRight.vue": () => import("./IconArrowRight-143abfe9.js"), "../assets/svg/icons/IconAssignment.vue": () => import("./IconAssignment-28546363.js"), "../assets/svg/icons/IconAwardStar.vue": () => import("./IconAwardStar-e260b61a.js"), "../assets/svg/icons/IconBookmark.vue": () => import("./IconBookmark-2df361a1.js"), "../assets/svg/icons/IconCalendarMonth.vue": () => import("./IconCalendarMonth-1331bb2e.js"), "../assets/svg/icons/IconCall.vue": () => import("./IconCall-bfb28d23.js"), "../assets/svg/icons/IconCheck.vue": () => import("./IconCheck-4f7c55bb.js"), "../assets/svg/icons/IconChevronLeft.vue": () => import("./IconChevronLeft-111444b3.js"), "../assets/svg/icons/IconChevronRight.vue": () => import("./IconChevronRight-f3e73764.js"), "../assets/svg/icons/IconClear.vue": () => import("./IconClear-7f6472ed.js"), "../assets/svg/icons/IconClose.vue": () => import("./IconClose-fe46270f.js"), "../assets/svg/icons/IconCycle.vue": () => import("./IconCycle-1c670925.js"), "../assets/svg/icons/IconDelete.vue": () => import("./IconDelete-40861e3a.js"), "../assets/svg/icons/IconDiamond.vue": () => import("./IconDiamond-92bc3c14.js"), "../assets/svg/icons/IconEdit.vue": () => import("./IconEdit-2ce79ec9.js"), "../assets/svg/icons/IconError.vue": () => import("./IconError-9d150afa.js"), "../assets/svg/icons/IconExpandContent.vue": () => import("./IconExpandContent-4611f59a.js"), "../assets/svg/icons/IconExpandLess.vue": () => import("./IconExpandLess-97dbbba2.js"), "../assets/svg/icons/IconExpandMore.vue": () => import("./IconExpandMore-74cf7746.js"), "../assets/svg/icons/IconFacebook.vue": () => import("./IconFacebook-5177a43e.js"), "../assets/svg/icons/IconFavorite.vue": () => import("./IconFavorite-b8b2232b.js"), "../assets/svg/icons/IconFavoriteFilled.vue": () => import("./IconFavoriteFilled-a03c18b0.js"), "../assets/svg/icons/IconFormatBold.vue": () => import("./IconFormatBold-fe01c0d0.js"), "../assets/svg/icons/IconFormatItalic.vue": () => import("./IconFormatItalic-2b3d0f32.js"), "../assets/svg/icons/IconFormatListBulleted.vue": () => import("./IconFormatListBulleted-9f4f5f29.js"), "../assets/svg/icons/IconForum.vue": () => import("./IconForum-ad13c05f.js"), "../assets/svg/icons/IconGoogle.vue": () => import("./IconGoogle-1661c713.js"), "../assets/svg/icons/IconGooglePay.vue": () => import("./IconGooglePay-c55f25e8.js"), "../assets/svg/icons/IconGrid.vue": () => import("./IconGrid-1a6868d2.js"), "../assets/svg/icons/IconHelp.vue": () => import("./IconHelp-1d25fcc1.js"), "../assets/svg/icons/IconInfo.vue": () => import("./IconInfo-25020d15.js"), "../assets/svg/icons/IconInsertText.vue": () => import("./IconInsertText-a93ea55d.js"), "../assets/svg/icons/IconInstagram.vue": () => import("./IconInstagram-393a91c5.js"), "../assets/svg/icons/IconIosShare.vue": () => import("./IconIosShare-10a2497c.js"), "../assets/svg/icons/IconLayout.vue": () => import("./IconLayout-b486c56c.js"), "../assets/svg/icons/IconLinkedIn.vue": () => import("./IconLinkedIn-ed3a304e.js"), "../assets/svg/icons/IconLocalShipping.vue": () => import("./IconLocalShipping-21673087.js"), "../assets/svg/icons/IconLock.vue": () => import("./IconLock-c7d18ae6.js"), "../assets/svg/icons/IconMail.vue": () => import("./IconMail-3a6fb81c.js"), "../assets/svg/icons/IconMenu.vue": () => import("./IconMenu-27e0ea03.js"), "../assets/svg/icons/IconMoreHoriz.vue": () => import("./IconMoreHoriz-97b1974a.js"), "../assets/svg/icons/IconNotifications.vue": () => import("./IconNotifications-11566098.js"), "../assets/svg/icons/IconOpenInNew.vue": () => import("./IconOpenInNew-e89309cc.js"), "../assets/svg/icons/IconPalette.vue": () => import("./IconPalette-7b39c00b.js"), "../assets/svg/icons/IconPaypal.vue": () => import("./IconPaypal-581e5de8.js"), "../assets/svg/icons/IconPerson.vue": () => import("./IconPerson-7b5fc958.js"), "../assets/svg/icons/IconPhotoCamera.vue": () => import("./IconPhotoCamera-dd25e6de.js"), "../assets/svg/icons/IconPinterest.vue": () => import("./IconPinterest-f8569b8c.js"), "../assets/svg/icons/IconPlayArrow.vue": () => import("./IconPlayArrow-a7538942.js"), "../assets/svg/icons/IconRemove.vue": () => import("./IconRemove-c19ef592.js"), "../assets/svg/icons/IconRoundedCorners.vue": () => import("./IconRoundedCorners-501a2efe.js"), "../assets/svg/icons/IconSearch.vue": () => import("./IconSearch-c2acd4ec.js"), "../assets/svg/icons/IconSell.vue": () => import("./IconSell-8a47939b.js"), "../assets/svg/icons/IconShare.vue": () => import("./IconShare-a8e26193.js"), "../assets/svg/icons/IconShoppingCart.vue": () => import("./IconShoppingCart-78a14827.js"), "../assets/svg/icons/IconSms.vue": () => import("./IconSms-3a93e423.js"), "../assets/svg/icons/IconStar.vue": () => import("./IconStar-8c8f1bb4.js"), "../assets/svg/icons/IconSwapVert.vue": () => import("./IconSwapVert-066694ed.js"), "../assets/svg/icons/IconThreeDRotation.vue": () => import("./IconThreeDRotation-7823ddb5.js"), "../assets/svg/icons/IconTune.vue": () => import("./IconTune-43f405a5.js"), "../assets/svg/icons/IconTwitter.vue": () => import("./IconTwitter-2bc0ee2b.js"), "../assets/svg/icons/IconVideocam.vue": () => import("./IconVideocam-7deb4ac7.js"), "../assets/svg/icons/IconViewInAr.vue": () => import("./IconViewInAr-bf12af3e.js"), "../assets/svg/icons/IconVisibility.vue": () => import("./IconVisibility-f6ca5bb6.js"), "../assets/svg/icons/IconWarning.vue": () => import("./IconWarning-7a1f76a9.js"), "../assets/svg/icons/IconYoutube.vue": () => import("./IconYoutube-6e789d14.js") }), `../assets/svg/icons/Icon${d}.vue`));
367
- a.value = Re(T);
368
- },
369
- { immediate: !0 }
370
- ), (o, d) => (l(), r("div", {
371
- class: i(["tide-icon", s.size])
372
- }, [
373
- (l(), r("svg", {
374
- class: i([t(e).DISPLAY.BLOCK]),
375
- "data-icon": o.icon,
376
- fill: "currentColor",
377
- viewBox: "0 0 24 24",
378
- xmlns: "http://www.w3.org/2000/svg"
379
- }, [
380
- a.value ? (l(), S(z(a.value), { key: 0 })) : N("", !0)
381
- ], 10, Ue))
382
- ], 2));
383
- }
384
- });
385
- const C = (n, s) => {
386
- const a = n.__vccOpts || n;
387
- for (const [o, d] of s)
388
- a[o] = d;
389
- return a;
390
- }, U = /* @__PURE__ */ C(me, [["__scopeId", "data-v-30daad21"]]), ge = /* @__PURE__ */ v({
391
- __name: "TideIndicator",
392
- props: {
393
- label: { default: void 0 }
394
- },
395
- setup(n) {
396
- const s = n;
397
- return (a, o) => (l(), r("div", {
398
- class: i([
399
- s.label ? "tide-indicator-label" : "tide-indicator",
400
- "border-white",
401
- t(e).BG.SURFACE.ACCENT,
402
- t(e).BORDER.FULL.ONE,
403
- t(e).BORDER.RADIUS.FULL,
404
- s.label ? [t(e).POSITION.RELATIVE, t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT] : []
405
- ])
406
- }, [
407
- s.label ? (l(), r("div", {
408
- key: 0,
409
- class: i([
410
- t(e).POSITION.ABSOLUTE,
411
- t(e).POSITIONING.TOP_0,
412
- t(e).DISPLAY.FLEX,
413
- t(e).AXIS1.CENTER,
414
- t(e).AXIS2.CENTER,
415
- t(e).WIDTH.FULL,
416
- t(e).HEIGHT.FULL
417
- ])
418
- }, L(s.label), 3)) : N("", !0)
419
- ], 2));
420
- }
421
- });
422
- const Ce = /* @__PURE__ */ C(ge, [["__scopeId", "data-v-b3905972"]]), _ = {
423
- ACCOUNT_BALANCE: "account-balance",
424
- ADD: "add",
425
- AI: "ai",
426
- ALIGN_SPACE: "align-space",
427
- APPLE_PAY: "apple-pay",
428
- ARROW_BACK: "arrow-back",
429
- ARROW_FORWARD: "arrow-forward",
430
- ARROW_RIGHT: "arrow-right",
431
- ASSIGNMENT: "assignment",
432
- AWARD_STAR: "award-star",
433
- BOOKMARK: "bookmark",
434
- CALENDAR_MONTH: "calendar-month",
435
- CALL: "call",
436
- CHECK: "check",
437
- CHEVRON_LEFT: "chevron-left",
438
- CHEVRON_RIGHT: "chevron-right",
439
- CLEAR: "clear",
440
- CLOSE: "close",
441
- CYCLE: "cycle",
442
- DELETE: "delete",
443
- DIAMOND: "diamond",
444
- EDIT: "edit",
445
- ERROR: "error",
446
- EXPAND_CONTENT: "expand-content",
447
- EXPAND_LESS: "expand-less",
448
- EXPAND_MORE: "expand-more",
449
- FACEBOOK: "facebook",
450
- FAVORITE: "favorite",
451
- FAVORITE_FILLED: "favorite-filled",
452
- FORMAT_BOLD: "format-bold",
453
- FORMAT_ITALIC: "format-italic",
454
- FORMAT_LIST_BULLETED: "format-list-bulleted",
455
- FORUM: "forum",
456
- GOOGLE: "google",
457
- GOOGLE_PAY: "google-pay",
458
- GRID: "grid",
459
- HELP: "help",
460
- INFO: "info",
461
- INSERT_TEXT: "insert-text",
462
- INSTAGRAM: "instagram",
463
- IOS_SHARE: "ios-share",
464
- LAYOUT: "layout",
465
- LINKED_IN: "linked in",
466
- LOCAL_SHIPPING: "local-shipping",
467
- LOCK: "lock",
468
- MAIL: "mail",
469
- MENU: "menu",
470
- MORE_HORIZ: "more-horiz",
471
- NOTIFICATIONS: "notifications",
472
- OPEN_IN_NEW: "open-in-new",
473
- PALETTE: "palette",
474
- PAYPAL: "paypal",
475
- PERSON: "person",
476
- PHOTO_CAMERA: "photo-camera",
477
- PINTEREST: "pinterest",
478
- PLAY_ARROW: "play-arrow",
479
- REMOVE: "remove",
480
- ROUNDED_CORNERS: "rounded-corners",
481
- SEARCH: "search",
482
- SELL: "sell",
483
- SHARE: "share",
484
- SHOPPING_CART: "shopping-cart",
485
- SMS: "sms",
486
- STAR: "star",
487
- SWAP_VERT: "swap-vert",
488
- THREE_D_ROTATION: "three-d-rotation",
489
- TUNE: "tune",
490
- TWITTER: "twitter",
491
- VIDEOCAM: "videocam",
492
- VIEW_IN_AR: "view-in-ar",
493
- VISIBILITY: "visibility",
494
- WARNING: "warning",
495
- YOUTUBE: "youtube"
496
- }, Pe = { class: "tide-accordion-item" }, Ge = /* @__PURE__ */ v({
497
- __name: "TideAccordionItem",
498
- props: {
499
- hasBottomDivider: {
500
- default: !1,
501
- required: !1,
502
- type: Boolean
503
- },
504
- hasTopDivider: {
505
- default: !1,
506
- required: !1,
507
- type: Boolean
508
- },
509
- isActive: {
510
- default: !1,
511
- required: !1,
512
- type: Boolean
513
- },
514
- isExpandedInitial: {
515
- default: !1,
516
- required: !1,
517
- type: Boolean
518
- },
519
- isOptional: {
520
- default: !1,
521
- required: !1,
522
- type: Boolean
523
- },
524
- label: {
525
- default: "",
526
- required: !0,
527
- type: String
528
- }
529
- },
530
- setup(n) {
531
- const s = n, a = A(s.isExpandedInitial);
532
- let o = A();
533
- const d = () => {
534
- const T = o.value;
535
- a.value = !a.value, T.style.gridTemplateRows = a.value ? "1fr" : "0fr";
536
- };
537
- return ee(() => {
538
- const T = o.value;
539
- T.style.gridTemplateRows = a.value ? "1fr" : "0fr";
540
- }), (T, I) => (l(), r("div", Pe, [
541
- s.hasTopDivider ? (l(), S(de, { key: 0 })) : N("", !0),
542
- c("div", {
543
- class: i(["tide-accordion-head", t(e).DISPLAY.FLEX, t(e).AXIS1.BETWEEN, t(e).PADDING.Y.HALF, t(e).CURSOR.POINTER]),
544
- onClick: d
545
- }, [
546
- c("div", {
547
- class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
548
- }, [
549
- c("span", null, L(s.label), 1),
550
- s.isOptional ? (l(), r("span", {
551
- key: 0,
552
- class: i([t(e).FONT.COLOR.SURFACE.VARIANT])
553
- }, " (optional) ", 2)) : N("", !0),
554
- s.isActive ? (l(), S(Ce, { key: 1 })) : N("", !0)
555
- ], 2),
556
- G(U, {
557
- icon: a.value ? t(_).EXPAND_LESS : t(_).EXPAND_MORE
558
- }, null, 8, ["icon"])
559
- ], 2),
560
- c("div", {
561
- class: i(["tide-accordion-body", t(e).DISPLAY.GRID]),
562
- ref_key: "accordionBody",
563
- ref: o
564
- }, [
565
- c("div", {
566
- class: i([t(e).OVERFLOW.Y.HIDDEN])
567
- }, [
568
- c("div", {
569
- class: i([t(e).MARGIN.Y.ONE, t(e).FONT.WEIGHT.FOUR_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
570
- }, [
571
- X(T.$slots, "default", {}, void 0, !0)
572
- ], 2)
573
- ], 2)
574
- ], 2),
575
- s.hasBottomDivider ? (l(), S(de, { key: 1 })) : N("", !0)
576
- ]));
577
- }
578
- });
579
- const Dt = /* @__PURE__ */ C(Ge, [["__scopeId", "data-v-ad283103"]]), D = {
580
- BUTTON: "button",
581
- LINK: "a"
582
- }, x = {
583
- BUTTON: "button",
584
- DIV: "div",
585
- LINK: "a"
586
- }, w = {
587
- PRIMARY: "primary",
588
- SECONDARY: "secondary",
589
- TERTIARY: "tertiary",
590
- QUATERNARY: "quaternary",
591
- FLOATING: "floating"
592
- }, W = {
593
- BLANK: "_blank",
594
- SELF: void 0
595
- }, q = /* @__PURE__ */ v({
596
- __name: "TideButtonIcon",
597
- props: {
598
- disabled: { type: Boolean, default: !1 },
599
- element: { default: D.BUTTON },
600
- href: { default: void 0 },
601
- icon: { default: void 0 },
602
- isNewTab: { type: Boolean, default: !1 },
603
- priority: { default: w.PRIMARY }
604
- },
605
- setup(n) {
606
- const s = n;
607
- return (a, o) => (l(), S(z(s.element === t(D).LINK ? "a" : "button"), {
608
- "aria-label": s.icon,
609
- class: i([
610
- s.element === t(D).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
611
- s.priority && s.priority,
612
- [t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
613
- s.element === t(D).LINK ? [t(e).UNDERLINE.OFF] : ""
614
- ]),
615
- disabled: s.element === t(D).BUTTON && s.disabled,
616
- href: s.element === t(D).LINK && s.href ? s.href : void 0,
617
- target: s.element === t(D).LINK && s.isNewTab ? t(W).BLANK : t(W).SELF
618
- }, {
619
- default: Z(() => [
620
- s.icon ? (l(), S(U, {
621
- key: 0,
622
- icon: s.icon,
623
- size: t(y).LARGE
624
- }, null, 8, ["icon", "size"])) : N("", !0)
625
- ]),
626
- _: 1
627
- }, 8, ["aria-label", "class", "disabled", "href", "target"]));
628
- }
629
- }), H = {
630
- ERROR: "error",
631
- INFO: "info",
632
- SUCCESS: "success",
633
- WARNING: "warning"
634
- }, he = /* @__PURE__ */ v({
635
- __name: "TideAlert",
636
- props: {
637
- heading: { default: void 0 },
638
- isToast: { type: Boolean, default: !1 },
639
- type: { default: H.INFO }
640
- },
641
- setup(n) {
642
- const s = n, a = F(() => {
643
- let o = _.VIEW_IN_AR;
644
- switch (s.type) {
645
- case H.ERROR:
646
- o = _.ERROR;
647
- break;
648
- default:
649
- case H.INFO:
650
- o = _.INFO;
651
- break;
652
- case H.SUCCESS:
653
- o = _.CHECK;
654
- break;
655
- case H.WARNING:
656
- o = _.WARNING;
657
- break;
658
- }
659
- return o;
660
- });
661
- return (o, d) => (l(), r("div", {
662
- class: i([
663
- s.type,
664
- "tide-alert",
665
- t(e).DISPLAY.GRID,
666
- t(e).BORDER.RADIUS.HALF,
667
- t(e).PADDING.FULL.ONE,
668
- s.type === t(H).ERROR && t(e).BG.SURFACE.ERROR,
669
- s.type === t(H).INFO && t(e).BG.SURFACE.INFO,
670
- s.type === t(H).SUCCESS && t(e).BG.SURFACE.SUCCESS,
671
- s.type === t(H).WARNING && t(e).BG.SURFACE.WARNING,
672
- s.isToast ? t(e).SHADOW.BOTTOM : ""
673
- ])
674
- }, [
675
- c("div", {
676
- class: i(["tide-alert-icon", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
677
- }, [
678
- G(U, {
679
- class: i([
680
- s.type,
681
- t(e).BORDER.RADIUS.FULL,
682
- t(e).PADDING.FULL.HALF,
683
- t(e).FONT.COLOR.SURFACE.INVERSE,
684
- s.type === t(H).ERROR && t(e).BG.ERROR,
685
- s.type === t(H).INFO && t(e).BG.INFO,
686
- s.type === t(H).SUCCESS && t(e).BG.SUCCESS,
687
- s.type === t(H).WARNING && t(e).BG.WARNING
688
- ]),
689
- icon: a.value
690
- }, null, 8, ["class", "icon"])
691
- ], 2),
692
- c("div", {
693
- class: i(["tide-alert-heading", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
694
- }, [
695
- c("h2", {
696
- class: i([t(e).FONT.SIZE.SIXTEEN, t(e).FONT.WEIGHT.SIX_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
697
- }, L(s.heading), 3)
698
- ], 2),
699
- G(q, {
700
- class: i(["tide-alert-close", t(e).AXIS2.CENTER, t(e).FONT.COLOR.SURFACE.DEFAULT]),
701
- icon: t(_).CLOSE,
702
- priority: t(w).QUATERNARY,
703
- "aria-label": "Close alert"
704
- }, null, 8, ["class", "icon", "priority"]),
705
- c("div", {
706
- class: i(["tide-alert-body", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT])
707
- }, [
708
- X(o.$slots, "default", {}, void 0, !0)
709
- ], 2)
710
- ], 2));
711
- }
712
- });
713
- const St = /* @__PURE__ */ C(he, [["__scopeId", "data-v-279a5605"]]), ft = /* @__PURE__ */ v({
714
- __name: "TideBadge",
715
- props: {
716
- label: {}
717
- },
718
- setup(n) {
719
- const s = n;
720
- return (a, o) => (l(), r("div", {
721
- class: i([
722
- "tide-badge",
723
- t(e).FONT.COLOR.SURFACE.DEFAULT,
724
- t(e).BG.SURFACE.FLOATING,
725
- t(e).DISPLAY.INLINE_FLEX,
726
- t(e).AXIS2.CENTER,
727
- t(e).GAP.QUARTER,
728
- t(e).BORDER.RADIUS.QUARTER,
729
- t(e).PADDING.Y.QUARTER,
730
- t(e).PADDING.X.HALF,
731
- t(e).FONT.SIZE.FOURTEEN
732
- ])
733
- }, L(s.label), 3));
734
- }
735
- }), Ut = /* @__PURE__ */ v({
736
- __name: "TideBadgePremium",
737
- props: {
738
- label: {}
739
- },
740
- setup(n) {
741
- const s = n;
742
- return (a, o) => (l(), r("div", {
743
- class: i([
744
- "tide-badge",
745
- t(e).FONT.COLOR.SURFACE.DEFAULT,
746
- t(e).BG.SURFACE.VARIANT,
747
- t(e).DISPLAY.INLINE_FLEX,
748
- t(e).GAP.QUARTER,
749
- t(e).BORDER.RADIUS.QUARTER,
750
- t(e).PADDING.Y.QUARTER,
751
- t(e).PADDING.X.HALF,
752
- t(e).FONT.SIZE.TWELVE
753
- ])
754
- }, L(s.label), 3));
755
- }
756
- }), mt = {
757
- JUST_LISTED: "Just listed",
758
- NATIONWIDE: "Nationwide",
759
- REDUCED: "Reduced",
760
- UPDATED: "Updated"
761
- }, gt = {
762
- PREMIUM: "Premium",
763
- PREMIUM_SELECT: "Premium SELECT"
764
- }, be = {
765
- YEARS_10: "10",
766
- YEARS_15: "15",
767
- YEARS_5: "5"
768
- }, He = {
769
- class: /* @__PURE__ */ i([])
770
- }, Ct = /* @__PURE__ */ v({
771
- __name: "TideBadgeTrustedPartner",
772
- props: {
773
- years: { default: be.YEARS_5 }
774
- },
775
- setup(n) {
776
- const s = n;
777
- return (a, o) => (l(), r("div", {
778
- class: i([
779
- "tide-badge-trusted-partner",
780
- t(e).FONT.COLOR.SURFACE.BRAND,
781
- t(e).DISPLAY.INLINE_FLEX,
782
- t(e).AXIS2.CENTER,
783
- t(e).GAP.QUARTER,
784
- t(e).PADDING.Y.QUARTER,
785
- t(e).PADDING.X.HALF,
786
- t(e).FONT.SIZE.FOURTEEN
787
- ])
788
- }, [
789
- G(U, {
790
- icon: t(_).VIEW_IN_AR
791
- }, null, 8, ["icon"]),
792
- c("div", He, [
793
- c("span", null, L(s.years) + " year trusted partner", 1)
794
- ])
795
- ], 2));
796
- }
797
- }), ye = ["data-track", "href"], Be = ["data-track"], Xe = { key: 0 }, Pt = /* @__PURE__ */ v({
798
- __name: "TideBreadCrumbs",
799
- props: {
800
- breadCrumbs: {
801
- default: void 0,
802
- required: !0,
803
- type: Object
804
- }
805
- },
806
- setup(n) {
807
- const s = n;
808
- return (a, o) => (l(), r("ul", {
809
- class: i(["tide-bread-crumbs", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
810
- }, [
811
- (l(!0), r($, null, j(s.breadCrumbs, (d, T) => (l(), r($, {
812
- key: d.label
813
- }, [
814
- c("li", {
815
- class: i([t(e).FONT.SIZE.FOURTEEN])
816
- }, [
817
- d.url ? (l(), r("a", {
818
- key: 0,
819
- class: i([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT]),
820
- "data-track": d.dataTrack || void 0,
821
- href: d.url
822
- }, L(d.label), 11, ye)) : (l(), r("span", {
823
- key: 1,
824
- class: i([t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT]),
825
- "data-track": d.dataTrack || void 0
826
- }, L(d.label), 11, Be))
827
- ], 2),
828
- s.breadCrumbs && T < s.breadCrumbs.length - 1 ? (l(), r("li", Xe, [
829
- G(U, {
830
- icon: t(_).ARROW_RIGHT,
831
- size: t(y).SMALL
832
- }, null, 8, ["icon", "size"])
833
- ])) : N("", !0)
834
- ], 64))), 128))
835
- ], 2));
836
- }
837
- }), Gt = /* @__PURE__ */ v({
838
- __name: "TideButton",
839
- props: {
840
- disabled: { type: Boolean, default: !1 },
841
- element: { default: D.BUTTON },
842
- href: { default: void 0 },
843
- iconLeading: { default: void 0 },
844
- iconTrailing: { default: void 0 },
845
- isNewTab: { type: Boolean, default: !1 },
846
- label: { default: void 0 },
847
- priority: { default: w.PRIMARY }
848
- },
849
- setup(n) {
850
- const s = n;
851
- return (a, o) => (l(), S(z(s.element === t(D).LINK ? t(D).LINK : t(D).BUTTON), {
852
- class: i([
853
- s.element === t(D).LINK ? "tide-link-as-button" : "tide-button",
854
- s.priority && s.priority,
855
- s.element === t(D).LINK ? [t(e).DISPLAY.INLINE_FLEX] : [t(e).DISPLAY.FLEX],
856
- [t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.HALF, t(e).BORDER.RADIUS.HALF],
857
- s.element === t(D).LINK ? t(e).UNDERLINE.OFF : "",
858
- t(e).PADDING.Y.ONE,
859
- t(e).PADDING.X.TWO,
860
- t(e).FONT.WEIGHT.SIX_HUNDRED
861
- ]),
862
- disabled: s.element === t(D).BUTTON && s.disabled,
863
- href: s.element === t(D).LINK && s.href ? s.href : void 0,
864
- target: s.element === t(D).LINK && s.isNewTab ? t(W).BLANK : t(W).SELF
865
- }, {
866
- default: Z(() => [
867
- s.iconLeading ? (l(), S(U, {
868
- key: 0,
869
- icon: s.iconLeading,
870
- size: t(y).LARGE
871
- }, null, 8, ["icon", "size"])) : N("", !0),
872
- ce(" " + L(s.label) + " ", 1),
873
- s.iconTrailing ? (l(), S(U, {
874
- key: 1,
875
- icon: s.iconTrailing,
876
- size: t(y).LARGE
877
- }, null, 8, ["icon", "size"])) : N("", !0)
878
- ]),
879
- _: 1
880
- }, 8, ["class", "disabled", "href", "target"]));
881
- }
882
- }), We = /* @__PURE__ */ v({
883
- __name: "TideButtonPagination",
884
- props: {
885
- disabled: { type: Boolean, default: !1 },
886
- element: { default: x.BUTTON },
887
- href: { default: void 0 },
888
- label: { default: void 0 }
889
- },
890
- setup(n) {
891
- const s = n;
892
- return (a, o) => (l(), S(z(
893
- s.element === t(x).LINK ? "a" : s.element === t(x).BUTTON ? "button" : "div"
894
- ), {
895
- class: i([
896
- s.element === t(x).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
897
- [t(e).DISPLAY.INLINE_BLOCK, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
898
- s.element === t(x).LINK ? [t(e).UNDERLINE.OFF] : "",
899
- s.element === t(x).DIV ? [t(e).CURSOR.POINTER] : "",
900
- [t(e).FONT.WEIGHT.SEVEN_HUNDRED]
901
- ]),
902
- disabled: s.element === t(x).BUTTON && s.disabled,
903
- href: s.element === t(x).LINK && s.href ? s.href : void 0
904
- }, {
905
- default: Z(() => [
906
- c("span", {
907
- class: i(["label", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER])
908
- }, L(s.label), 3)
909
- ]),
910
- _: 1
911
- }, 8, ["class", "disabled", "href"]));
912
- }
913
- });
914
- const Me = /* @__PURE__ */ C(We, [["__scopeId", "data-v-0710b4ab"]]), ht = /* @__PURE__ */ v({
915
- __name: "TideCard",
916
- setup(n) {
917
- return (s, a) => (l(), r("div", {
918
- class: i([
919
- "tide-card",
920
- t(e).HEIGHT.FULL,
921
- t(e).BORDER.RADIUS.HALF,
922
- t(e).BG.SURFACE.DEFAULT,
923
- t(e).SHADOW.BOTTOM,
924
- t(e).FONT.COLOR.SURFACE.DEFAULT,
925
- t(e).SNAP_ALIGN.START
926
- ])
927
- }, [
928
- X(s.$slots, "default")
929
- ], 2));
930
- }
931
- }), re = 16, bt = /* @__PURE__ */ v({
932
- __name: "TideCarousel",
933
- props: {
934
- isTouchscreen: { type: Boolean },
935
- offsetX: { default: 0 }
936
- },
937
- emits: ["change"],
938
- setup(n, { emit: s }) {
939
- const a = n;
940
- let o = A(), d = A(), T = A(), I = A();
941
- const E = A(), O = A(), p = A(), u = A(0), g = () => {
942
- const R = Array.from(E.value.children).map((P) => P.offsetLeft);
943
- if (R.length === 0)
944
- return;
945
- const f = R.reduce((P, V) => Math.abs(V - O.value.scrollLeft) < Math.abs(P - O.value.scrollLeft) ? V : P);
946
- u.value = R.indexOf(f);
947
- }, h = () => {
948
- o.value = E.value.scrollWidth, d.value = O.value.clientWidth, T.value = o.value > d.value, I.value = O.value.scrollWidth - O.value.clientWidth, p.value = T.value && !a.isTouchscreen, g();
949
- }, M = () => {
950
- h();
951
- }, Y = (R) => {
952
- O.value.scrollTo({
953
- behavior: "smooth",
954
- left: E.value.children[R].offsetLeft
955
- });
956
- }, k = () => {
957
- const R = E.value.scrollWidth, f = O.value.scrollLeft + O.value.clientWidth;
958
- if (f > R)
959
- O.value.scrollTo({
960
- behavior: "smooth",
961
- left: R
962
- });
963
- else {
964
- const P = a.offsetX && u.value === 0, ae = f === R ? 0 : P ? 2 : u.value + 1;
965
- Y(ae);
966
- }
967
- }, b = () => {
968
- const R = a.offsetX ? 1 : 0, f = u.value - 1 === R, V = u.value <= R ? E.value.children.length - 1 : f ? 0 : u.value - 1;
969
- Y(V);
970
- };
971
- return window.addEventListener("resize", h), ee(() => {
972
- h();
973
- }), Oe(() => {
974
- window.removeEventListener("resize", h);
975
- }), Ae(() => {
976
- h();
977
- }), Q(u, () => {
978
- s("change", u.value);
979
- }), (R, f) => (l(), r("section", {
980
- class: i(["tide-carousel", t(e).POSITION.RELATIVE, t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).WIDTH.FULL]),
981
- ref: "carouselRef"
982
- }, [
983
- c("div", {
984
- class: i([t(e).SCROLLBAR.OFF, t(e).SNAP.ON, t(e).OVERFLOW.X.SCROLL]),
985
- ref_key: "frameRef",
986
- ref: O,
987
- onScroll: M
988
- }, [
989
- c("ul", {
990
- class: i([a.isTouchscreen ? [t(e).OVERFLOW.X.AUTO] : "", t(e).DISPLAY.FLEX, t(e).GAP.ONE, t(e).LIST_BULLETS.OFF]),
991
- ref_key: "contentRef",
992
- ref: E
993
- }, [
994
- a.offsetX ? (l(), r("li", {
995
- key: 0,
996
- class: i([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
997
- style: J({ width: `${a.offsetX - re}px` })
998
- }, null, 6)) : N("", !0),
999
- X(R.$slots, "default"),
1000
- a.offsetX ? (l(), r("li", {
1001
- key: 1,
1002
- class: i([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
1003
- style: J({ width: `${a.offsetX - re}px` })
1004
- }, null, 6)) : N("", !0)
1005
- ], 2)
1006
- ], 34),
1007
- p.value ? (l(), r("div", {
1008
- key: 0,
1009
- class: i([
1010
- t(e).POSITION.ABSOLUTE,
1011
- t(e).DISPLAY.FLEX,
1012
- t(e).AXIS1.BETWEEN,
1013
- t(e).AXIS2.CENTER,
1014
- t(e).WIDTH.FULL,
1015
- t(e).HEIGHT.FULL,
1016
- t(e).POINTER_EVENTS.OFF
1017
- ])
1018
- }, [
1019
- G(q, {
1020
- class: i([t(e).MARGIN.LEFT.ONE, t(e).POINTER_EVENTS.ON]),
1021
- icon: t(_).CHEVRON_LEFT,
1022
- priority: t(w).QUATERNARY,
1023
- onClick: b
1024
- }, null, 8, ["class", "icon", "priority"]),
1025
- G(q, {
1026
- class: i([t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.ON]),
1027
- icon: t(_).CHEVRON_RIGHT,
1028
- priority: t(w).QUATERNARY,
1029
- onClick: k
1030
- }, null, 8, ["class", "icon", "priority"])
1031
- ], 2)) : N("", !0)
1032
- ], 2));
1033
- }
1034
- }), Ye = ["href", "target"], ke = /* @__PURE__ */ v({
1035
- __name: "TideChipAction",
1036
- props: {
1037
- href: {},
1038
- isNewTab: { type: Boolean, default: !1 },
1039
- label: {}
1040
- },
1041
- setup(n) {
1042
- const s = n;
1043
- return (a, o) => (l(), r("a", {
1044
- class: i([
1045
- "tide-chip-action",
1046
- t(e).AXIS2.CENTER,
1047
- t(e).GAP.HALF,
1048
- t(e).BORDER.FULL.ONE,
1049
- t(e).BORDER.RADIUS.FULL,
1050
- t(e).PADDING.X.ONE,
1051
- t(e).PADDING.Y.HALF,
1052
- t(e).BG.SURFACE.DEFAULT,
1053
- t(e).FONT.SIZE.FOURTEEN,
1054
- t(e).FONT.WEIGHT.FIVE_HUNDRED,
1055
- t(e).FONT.COLOR.SURFACE.DEFAULT,
1056
- t(e).UNDERLINE.OFF
1057
- ]),
1058
- href: s.href,
1059
- target: s.isNewTab ? t(W).BLANK : t(W).SELF
1060
- }, [
1061
- G(U, {
1062
- icon: t(_).SEARCH
1063
- }, null, 8, ["icon"]),
1064
- c("span", null, L(s.label), 1)
1065
- ], 10, Ye));
1066
- }
1067
- });
1068
- const Ht = /* @__PURE__ */ C(ke, [["__scopeId", "data-v-99f83e8d"]]), Ve = /* @__PURE__ */ v({
1069
- __name: "TideChipFilter",
1070
- props: {
1071
- isActive: { type: Boolean },
1072
- label: {}
1073
- },
1074
- setup(n) {
1075
- const s = n;
1076
- return (a, o) => (l(), r("button", {
1077
- class: i([
1078
- "tide-chip-filter",
1079
- s.isActive ? [t(e).BG.SECONDARY, t(e).FONT.COLOR.SECONDARY] : [t(e).BG.SURFACE.VARIANT, t(e).FONT.COLOR.SURFACE.DEFAULT],
1080
- t(e).DISPLAY.FLEX,
1081
- t(e).AXIS2.CENTER,
1082
- t(e).GAP.HALF,
1083
- t(e).BORDER.FULL.ONE,
1084
- t(e).BORDER.RADIUS.FULL,
1085
- t(e).PADDING.X.ONE,
1086
- t(e).PADDING.Y.HALF,
1087
- t(e).FONT.SIZE.FOURTEEN,
1088
- t(e).FONT.WEIGHT.FIVE_HUNDRED,
1089
- s.isActive ? "active" : ""
1090
- ])
1091
- }, [
1092
- X(a.$slots, "default", {}, void 0, !0),
1093
- c("div", {
1094
- class: i([t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.HALF])
1095
- }, [
1096
- c("span", {
1097
- class: i([s.isActive ? "" : "icon-spacing", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).WHITESPACE_WRAP.OFF])
1098
- }, L(s.label), 3)
1099
- ], 2)
1100
- ], 2));
1101
- }
1102
- });
1103
- const yt = /* @__PURE__ */ C(Ve, [["__scopeId", "data-v-c07faf14"]]), xe = /* @__PURE__ */ v({
1104
- __name: "TideChipInput",
1105
- props: {
1106
- label: {}
1107
- },
1108
- setup(n) {
1109
- const s = n;
1110
- return (a, o) => (l(), r("button", {
1111
- class: i([
1112
- "tide-chip-input",
1113
- t(e).BG.SURFACE.VARIANT,
1114
- t(e).FONT.COLOR.SURFACE,
1115
- t(e).DISPLAY.FLEX,
1116
- t(e).AXIS2.CENTER,
1117
- t(e).GAP.HALF,
1118
- t(e).BORDER.FULL.ONE,
1119
- t(e).BORDER.RADIUS.FULL,
1120
- t(e).PADDING.X.ONE,
1121
- t(e).PADDING.Y.HALF,
1122
- t(e).FONT.SIZE.FOURTEEN,
1123
- t(e).FONT.WEIGHT.FIVE_HUNDRED
1124
- ])
1125
- }, [
1126
- c("span", null, L(s.label), 1),
1127
- G(U, {
1128
- icon: t(_).CLOSE
1129
- }, null, 8, ["icon"])
1130
- ], 2));
1131
- }
1132
- });
1133
- const Bt = /* @__PURE__ */ C(xe, [["__scopeId", "data-v-62b9f1c0"]]), we = { class: "tide-columns" }, $e = { class: "tide-columns-column" }, Qe = { class: "tide-columns-column" }, Ke = { class: "tide-columns-column" }, qe = { class: "tide-columns-column" }, ze = /* @__PURE__ */ v({
1134
- __name: "TideColumns",
1135
- props: {
1136
- heading: { default: "" }
1137
- },
1138
- setup(n) {
1139
- const s = n;
1140
- return (a, o) => (l(), r("section", we, [
1141
- c("h2", {
1142
- class: i([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
1143
- }, L(s.heading), 3),
1144
- c("ul", {
1145
- class: i([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
1146
- }, [
1147
- c("li", $e, [
1148
- X(a.$slots, "section1", {}, void 0, !0)
1149
- ]),
1150
- c("li", Qe, [
1151
- X(a.$slots, "section2", {}, void 0, !0)
1152
- ]),
1153
- c("li", Ke, [
1154
- X(a.$slots, "section3", {}, void 0, !0)
1155
- ]),
1156
- c("li", qe, [
1157
- X(a.$slots, "section4", {}, void 0, !0)
1158
- ])
1159
- ], 2)
1160
- ]));
1161
- }
1162
- });
1163
- const Xt = /* @__PURE__ */ C(ze, [["__scopeId", "data-v-14ad0455"]]), Ze = ["alt", "src"], Wt = /* @__PURE__ */ v({
1164
- __name: "TideImage",
1165
- props: {
1166
- alt: { default: "" },
1167
- cdn: { default: void 0 },
1168
- isLazy: { type: Boolean, default: !0 },
1169
- offset: { default: 0 },
1170
- src: { default: void 0 }
1171
- },
1172
- setup(n, { expose: s }) {
1173
- const a = n, o = A(), d = `${a.cdn}/image-coming-soon-512.png`, T = () => {
1174
- if (a.src) {
1175
- const p = new Image();
1176
- p.onload = E, p.onerror = I, p.src = a.src;
1177
- }
1178
- }, I = () => {
1179
- o.value.src = d;
1180
- }, E = () => {
1181
- o.value.src = a.src;
1182
- };
1183
- s(o.value);
1184
- const O = new IntersectionObserver((p, u) => {
1185
- p.forEach(
1186
- (g) => {
1187
- g.isIntersecting && (T(), u.unobserve(g.target));
1188
- },
1189
- {
1190
- rootMargin: `${a.offset}px`
1191
- }
1192
- );
1193
- });
1194
- return ee(() => {
1195
- a.isLazy ? O.observe(o.value) : T();
1196
- }), Ne(() => {
1197
- O.unobserve(o.value);
1198
- }), (p, u) => (l(), r("img", {
1199
- alt: p.alt,
1200
- class: i(["tide-image", t(e).OBJECT.CENTER, t(e).OBJECT.COVER]),
1201
- ref_key: "tideImage",
1202
- ref: o,
1203
- src: p.isLazy && p.src ? p.src : d
1204
- }, null, 10, Ze));
1205
- }
1206
- }), je = ["checked", "id"], Je = ["for"], et = /* @__PURE__ */ v({
1207
- __name: "TideInputRadio",
1208
- props: {
1209
- checked: { type: Boolean, default: !1 },
1210
- dataTrack: { default: "" },
1211
- disabled: { type: Boolean, default: !1 },
1212
- inputId: { default: void 0 },
1213
- label: { default: void 0 },
1214
- name: {}
1215
- },
1216
- setup(n) {
1217
- const s = n, a = A(s.checked), o = F(() => {
1218
- var d;
1219
- return s.inputId ? s.inputId : `text-input-${((d = te()) == null ? void 0 : d.uid) || ""}`;
1220
- });
1221
- return Q(s, (d, T) => {
1222
- (d.checked !== T.checked || d.checked !== a.value) && (a.value = s.checked);
1223
- }), (d, T) => (l(), r("div", {
1224
- class: i(["tide-input-radio", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, s.disabled && "disabled"])
1225
- }, [
1226
- c("input", {
1227
- checked: a.value,
1228
- class: i([t(e).DISPLAY.NONE]),
1229
- id: o.value,
1230
- name: "",
1231
- type: "radio",
1232
- value: ""
1233
- }, null, 10, je),
1234
- c("div", {
1235
- class: i([
1236
- "tide-input-radio-custom",
1237
- t(e).POSITION.RELATIVE,
1238
- t(e).DISPLAY.FLEX,
1239
- t(e).AXIS1.CENTER,
1240
- t(e).AXIS2.CENTER,
1241
- t(e).BORDER.FULL.ONE,
1242
- a.value ? t(e).BORDER.COLOR.HIGH : t(e).BORDER.COLOR.DEFAULT,
1243
- t(e).BORDER.RADIUS.FULL,
1244
- a.value && "checked"
1245
- ])
1246
- }, [
1247
- c("div", {
1248
- class: i(["tide-input-radio-check", t(e).BORDER.RADIUS.FULL, s.checked && t(e).BG.SECONDARY])
1249
- }, null, 2)
1250
- ], 2),
1251
- c("label", {
1252
- class: i(t(e).FONT.WEIGHT.FOUR_HUNDRED),
1253
- for: o.value
1254
- }, L(s.label), 11, Je)
1255
- ], 2));
1256
- }
1257
- });
1258
- const Mt = /* @__PURE__ */ C(et, [["__scopeId", "data-v-c820007d"]]), Te = "Please enter a valid value.", oe = (n, s) => typeof n == "string" && n.length > 0 ? n : typeof s == "string" && s.length > 0 ? s : Te, ne = (n, s) => n !== !1 || s !== !1, tt = ({ maxlength: n, minlength: s, value: a }) => {
1259
- const o = n && a.length > n, d = s && a.length < s;
1260
- return !o && !d;
1261
- }, Ie = ({
1262
- error: n,
1263
- errorFromProps: s,
1264
- maxlength: a,
1265
- minlength: o,
1266
- validators: d,
1267
- value: T
1268
- }) => {
1269
- if (n.value = s || !1, !n.value && d) {
1270
- const I = at(T.value, d);
1271
- I.valid || (n.value = I.message);
1272
- }
1273
- if (!n.value && (a || o)) {
1274
- const I = st({
1275
- maxlength: a,
1276
- minlength: o,
1277
- value: T.value
1278
- });
1279
- I.valid || (n.value = I.message);
1280
- }
1281
- }, st = ({ maxlength: n, minlength: s, value: a }) => {
1282
- const o = {
1283
- message: "",
1284
- valid: !0
1285
- };
1286
- return o.valid = tt({
1287
- maxlength: n,
1288
- minlength: s,
1289
- value: a
1290
- }), o.valid || (o.message = Te, n && s ? o.message = `Please enter a value between ${s} and ${n} characters in length.` : n ? o.message = `Please enter a value no more than ${n} characters in length.` : s && (o.message = `Please enter a value no less than ${s} characters in length.`)), o;
1291
- };
1292
- function at(n, s) {
1293
- for (const a of s) {
1294
- const o = a(n);
1295
- if (!o.valid)
1296
- return o;
1297
- }
1298
- return {
1299
- message: "",
1300
- valid: !0
1301
- };
1302
- }
1303
- const it = ["for"], ot = ["disabled", "name", "required", "id"], nt = ["selected", "value"], lt = /* @__PURE__ */ v({
1304
- __name: "TideInputSelect",
1305
- props: {
1306
- inputId: { default: void 0 },
1307
- supportingText: { default: void 0 },
1308
- options: {},
1309
- disabled: { type: Boolean, default: !1 },
1310
- error: { type: [String, Boolean], default: !1 },
1311
- label: { default: void 0 },
1312
- name: {},
1313
- required: { type: Boolean, default: !1 },
1314
- value: { default: "" }
1315
- },
1316
- setup(n, { expose: s }) {
1317
- const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(a.required), E = A(a.value), O = F(() => oe(a.error, o.value)), p = F(() => a.required ? `${a.label} *` : a.label), u = F(() => a.required && !E.value || ne(o.value, a.error)), g = F(() => d.value || !h.value), h = F(() => E.value === ""), M = F(() => {
1318
- var R;
1319
- return a.inputId ? a.inputId : `text-input-${((R = te()) == null ? void 0 : R.uid) || ""}`;
1320
- }), Y = () => {
1321
- var f;
1322
- const R = new MouseEvent("mousedown");
1323
- (f = T == null ? void 0 : T.value) == null || f.dispatchEvent(R);
1324
- }, k = () => {
1325
- d.value = !0;
1326
- }, b = () => {
1327
- d.value = !1;
1328
- };
1329
- return Q(a, (R, f) => {
1330
- (R.value !== f.value || R.value !== E.value) && (E.value = a.value);
1331
- }), s({ error: o, value: E }), (R, f) => (l(), r("div", {
1332
- class: i([
1333
- "tide-input-select",
1334
- t(e).DISPLAY.FLEX,
1335
- t(e).FLEX.DIRECTION.COLUMN,
1336
- t(e).GAP.QUARTER,
1337
- R.disabled && "disabled",
1338
- u.value && "error"
1339
- ])
1340
- }, [
1341
- c("div", {
1342
- class: i([
1343
- "tide-input-border",
1344
- t(e).POSITION.RELATIVE,
1345
- t(e).DISPLAY.FLEX,
1346
- t(e).AXIS2.CENTER,
1347
- t(e).GAP.HALF,
1348
- t(e).BORDER.RADIUS.HALF,
1349
- a.disabled ? t(e).CURSOR.NOT_ALLOWED : "",
1350
- t(e).OVERFLOW.XY.HIDDEN
1351
- ]),
1352
- onClick: Y
1353
- }, [
1354
- c("div", {
1355
- class: i([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL])
1356
- }, [
1357
- R.label ? (l(), r("label", {
1358
- key: 0,
1359
- class: i([
1360
- g.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1361
- t(e).POSITION.ABSOLUTE,
1362
- t(e).POSITIONING.LEFT_0,
1363
- t(e).MARGIN.TOP.HALF,
1364
- t(e).MARGIN.LEFT.ONE,
1365
- !u.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1366
- t(e).FONT.WEIGHT.FIVE_HUNDRED
1367
- ]),
1368
- for: M.value
1369
- }, L(p.value), 11, it)) : N("", !0),
1370
- se(c("select", {
1371
- class: i([t(e).PADDING.BOTTOM.HALF, t(e).PADDING.X.ONE, t(e).WIDTH.FULL, R.disabled && t(e).CURSOR.NOT_ALLOWED]),
1372
- disabled: R.disabled,
1373
- name: R.name,
1374
- ref_key: "input",
1375
- ref: T,
1376
- required: I.value,
1377
- onFocus: k,
1378
- onFocusout: b,
1379
- id: M.value,
1380
- "onUpdate:modelValue": f[0] || (f[0] = (P) => E.value = P)
1381
- }, [
1382
- (l(!0), r($, null, j(R.options, (P) => (l(), r("option", {
1383
- class: i([t(e).WIDTH.FULL, t(e).BG.SURFACE.DEFAULT]),
1384
- key: P.value,
1385
- selected: E.value === P.value ? !0 : void 0,
1386
- value: P.value
1387
- }, L(P.label), 11, nt))), 128))
1388
- ], 42, ot), [
1389
- [Le, E.value]
1390
- ])
1391
- ], 2),
1392
- G(U, {
1393
- class: i([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT_0, t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.OFF]),
1394
- icon: t(_).EXPAND_MORE,
1395
- size: t(y).SMALL
1396
- }, null, 8, ["class", "icon", "size"])
1397
- ], 2),
1398
- a.supportingText || u.value ? (l(), r("div", {
1399
- key: 0,
1400
- class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1401
- }, [
1402
- u.value ? (l(), S(U, {
1403
- key: 0,
1404
- class: i([]),
1405
- icon: t(_).ERROR,
1406
- size: t(y).SMALL
1407
- }, null, 8, ["icon", "size"])) : N("", !0),
1408
- c("div", {
1409
- class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1410
- }, L(u.value ? O.value : a.supportingText), 3)
1411
- ], 2)) : N("", !0)
1412
- ], 2));
1413
- }
1414
- });
1415
- const Yt = /* @__PURE__ */ C(lt, [["__scopeId", "data-v-c500c562"]]), K = {
1416
- DATE: "date",
1417
- DATETIME_LOCAL: "datetime-local",
1418
- EMAIL: "email",
1419
- MONTH: "month",
1420
- NUMBER: "number",
1421
- PASSWORD: "password",
1422
- SEARCH: "search",
1423
- TEL: "tel",
1424
- TEXT: "text",
1425
- TIME: "time",
1426
- URL: "url",
1427
- WEEK: "week"
1428
- }, dt = ["for"], rt = ["autocomplete", "data-track", "disabled", "maxlength", "minlength", "name", "required", "type", "id"], ct = /* @__PURE__ */ v({
1429
- __name: "TideInputText",
1430
- props: {
1431
- autocomplete: { type: Boolean, default: !1 },
1432
- dataTrack: { default: "" },
1433
- disabled: { type: Boolean, default: !1 },
1434
- error: { type: [String, Boolean], default: !1 },
1435
- hasClear: { type: Boolean, default: !1 },
1436
- iconLeading: { default: void 0 },
1437
- inputId: { default: void 0 },
1438
- label: { default: void 0 },
1439
- maxlength: { default: void 0 },
1440
- minlength: { default: void 0 },
1441
- name: {},
1442
- prefix: { default: void 0 },
1443
- required: { type: Boolean, default: !1 },
1444
- suffix: { default: void 0 },
1445
- supportingText: { default: void 0 },
1446
- transformValue: { type: Function, default: void 0 },
1447
- type: { default: K.TEXT },
1448
- validators: { default: void 0 },
1449
- value: { default: "" }
1450
- },
1451
- setup(n, { expose: s }) {
1452
- const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(!1), E = A(a.value), O = F(() => oe(a.error, o.value)), p = F(() => a.required && a.label ? `${a.label} *` : a.label), u = F(() => a.hasClear && E.value), g = F(() => a.required && !E.value || ne(o.value, a.error)), h = F(() => d.value || !M.value), M = F(() => E.value === ""), Y = F(
1453
- () => a.type === K.PASSWORD && I.value === !0 ? K.TEXT : a.type
1454
- ), k = F(() => {
1455
- var m;
1456
- return a.inputId ? a.inputId : `text-input-${((m = te()) == null ? void 0 : m.uid) || ""}`;
1457
- }), b = () => {
1458
- var m;
1459
- E.value = "", (m = T.value) == null || m.focus();
1460
- }, R = () => {
1461
- d.value = !0;
1462
- }, f = () => {
1463
- d.value = !1, V();
1464
- }, P = () => {
1465
- var m;
1466
- if (a.transformValue) {
1467
- const B = ((m = E.value.match(/\d/g)) == null ? void 0 : m.join("")) || void 0;
1468
- E.value = B ? a.transformValue(B) : "";
1469
- }
1470
- }, V = () => {
1471
- Ie({
1472
- error: o,
1473
- errorFromProps: a.error,
1474
- maxlength: a.maxlength,
1475
- minlength: a.minlength,
1476
- validators: a.validators,
1477
- value: E
1478
- });
1479
- }, ae = (m) => {
1480
- E.value = m;
1481
- };
1482
- return Q(
1483
- a,
1484
- (m, B) => {
1485
- (m.value !== B.value || m.value !== E.value) && (E.value = a.value);
1486
- },
1487
- { deep: !0 }
1488
- ), s({ error: o, updateValue: ae, value: E }), (m, B) => (l(), r("div", {
1489
- class: i([
1490
- "tide-input-text",
1491
- t(e).DISPLAY.FLEX,
1492
- t(e).FLEX.DIRECTION.COLUMN,
1493
- t(e).GAP.QUARTER,
1494
- m.disabled && "disabled",
1495
- g.value && "error"
1496
- ])
1497
- }, [
1498
- c("div", {
1499
- class: i([
1500
- "tide-input-border",
1501
- t(e).DISPLAY.FLEX,
1502
- t(e).AXIS2.CENTER,
1503
- t(e).GAP.HALF,
1504
- t(e).POSITION.RELATIVE,
1505
- t(e).BORDER.RADIUS.HALF,
1506
- u.value ? [t(e).PADDING.RIGHT.HALF, t(e).PADDING.LEFT.ONE] : [t(e).PADDING.X.ONE],
1507
- t(e).PADDING.Y.HALF,
1508
- a.disabled ? t(e).CURSOR.NOT_ALLOWED : t(e).CURSOR.TEXT
1509
- ])
1510
- }, [
1511
- a.iconLeading ? (l(), S(U, {
1512
- key: 0,
1513
- icon: a.iconLeading,
1514
- size: t(y).SMALL
1515
- }, null, 8, ["icon", "size"])) : N("", !0),
1516
- c("div", {
1517
- class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
1518
- }, [
1519
- a.prefix ? (l(), r("div", {
1520
- key: 0,
1521
- class: i(["tide-input-text-prefix", !g.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
1522
- }, L(a.prefix), 3)) : N("", !0),
1523
- c("div", {
1524
- class: i([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL]),
1525
- onClick: B[1] || (B[1] = Ee((ie) => {
1526
- var le;
1527
- return (le = T.value) == null ? void 0 : le.focus();
1528
- }, ["prevent"]))
1529
- }, [
1530
- m.label ? (l(), r("label", {
1531
- key: 0,
1532
- class: i([
1533
- h.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1534
- !g.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1535
- t(e).FONT.WEIGHT.FIVE_HUNDRED,
1536
- t(e).CURSOR.TEXT
1537
- ]),
1538
- for: k.value
1539
- }, L(p.value), 11, dt)) : N("", !0),
1540
- se(c("input", {
1541
- autocomplete: m.autocomplete ? "on" : "off",
1542
- class: i([t(e).WIDTH.FULL, m.disabled && t(e).CURSOR.NOT_ALLOWED]),
1543
- "data-track": a.dataTrack,
1544
- disabled: a.disabled,
1545
- maxlength: a.maxlength,
1546
- minlength: a.minlength,
1547
- name: a.name,
1548
- ref_key: "input",
1549
- ref: T,
1550
- required: a.required,
1551
- type: Y.value,
1552
- onChange: V,
1553
- onFocus: R,
1554
- onFocusout: f,
1555
- onInput: P,
1556
- id: k.value,
1557
- "onUpdate:modelValue": B[0] || (B[0] = (ie) => E.value = ie)
1558
- }, null, 42, rt), [
1559
- [pe, E.value]
1560
- ])
1561
- ], 2),
1562
- a.suffix ? (l(), r("div", {
1563
- key: 1,
1564
- class: i(["tide-input-text-suffix", !g.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
1565
- }, L(a.suffix), 3)) : N("", !0)
1566
- ], 2),
1567
- u.value && a.type !== t(K).PASSWORD ? (l(), S(U, {
1568
- key: 1,
1569
- class: i([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
1570
- icon: t(_).CLOSE,
1571
- size: t(y).SMALL,
1572
- onClick: b
1573
- }, null, 8, ["class", "icon", "size"])) : N("", !0),
1574
- a.type === t(K).PASSWORD ? (l(), S(U, {
1575
- key: 2,
1576
- class: i([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
1577
- icon: t(_).VISIBILITY,
1578
- size: t(y).SMALL,
1579
- onClick: B[2] || (B[2] = (ie) => I.value = !I.value)
1580
- }, null, 8, ["class", "icon", "size"])) : N("", !0)
1581
- ], 2),
1582
- a.supportingText || g.value ? (l(), r("div", {
1583
- key: 0,
1584
- class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1585
- }, [
1586
- g.value ? (l(), S(U, {
1587
- key: 0,
1588
- class: i([]),
1589
- icon: t(_).ERROR,
1590
- size: t(y).SMALL
1591
- }, null, 8, ["icon", "size"])) : N("", !0),
1592
- c("div", {
1593
- class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1594
- }, L(g.value ? O.value : a.supportingText), 3)
1595
- ], 2)) : N("", !0)
1596
- ], 2));
1597
- }
1598
- });
1599
- const kt = /* @__PURE__ */ C(ct, [["__scopeId", "data-v-b8328f68"]]), Et = ["for"], Tt = ["data-track", "maxlength", "minlength", "name", "required", "rows", "id"], It = /* @__PURE__ */ v({
1600
- __name: "TideInputTextarea",
1601
- props: {
1602
- dataTrack: { default: "" },
1603
- error: { type: [String, Boolean], default: !1 },
1604
- inputId: { default: void 0 },
1605
- label: { default: void 0 },
1606
- maxlength: { default: void 0 },
1607
- minlength: { default: void 0 },
1608
- name: { default: void 0 },
1609
- required: { type: Boolean, default: !1 },
1610
- rows: { default: 8 },
1611
- supportingText: { default: void 0 },
1612
- value: { default: "" }
1613
- },
1614
- setup(n, { expose: s }) {
1615
- const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(a.value), E = F(() => oe(a.error, o.value)), O = F(() => a.required ? `${a.label} *` : a.label), p = F(() => a.required && !I.value || ne(o.value, a.error)), u = F(() => d.value || !g.value), g = F(() => I.value === ""), h = F(() => {
1616
- var b;
1617
- return a.inputId ? a.inputId : `text-input-${((b = te()) == null ? void 0 : b.uid) || ""}`;
1618
- }), M = () => {
1619
- d.value = !0;
1620
- }, Y = () => {
1621
- d.value = !1;
1622
- }, k = () => Ie({
1623
- error: o,
1624
- errorFromProps: a.error,
1625
- maxlength: a.maxlength,
1626
- minlength: a.minlength,
1627
- value: I
1628
- });
1629
- return Q(a, (b, R) => {
1630
- (b.value !== R.value || b.value !== I.value) && (I.value = a.value);
1631
- }), s({ error: o, value: I }), (b, R) => (l(), r("div", {
1632
- class: i(["tide-input-textarea", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, p.value && "error"])
1633
- }, [
1634
- c("div", {
1635
- class: i([
1636
- "tide-input-textarea-field",
1637
- t(e).GAP.HALF,
1638
- t(e).POSITION.RELATIVE,
1639
- t(e).BORDER.RADIUS.HALF,
1640
- t(e).PADDING.LEFT.ONE,
1641
- t(e).PADDING.TOP.HALF,
1642
- t(e).OVERFLOW.XY.HIDDEN
1643
- ])
1644
- }, [
1645
- b.label ? (l(), r("label", {
1646
- key: 0,
1647
- class: i([
1648
- u.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1649
- !p.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1650
- t(e).FONT.WEIGHT.FIVE_HUNDRED,
1651
- t(e).CURSOR.TEXT
1652
- ]),
1653
- for: h.value,
1654
- ref: "label"
1655
- }, L(O.value), 11, Et)) : N("", !0),
1656
- se(c("textarea", {
1657
- class: i([t(e).WIDTH.FULL]),
1658
- "data-track": a.dataTrack,
1659
- maxlength: a.maxlength,
1660
- minlength: a.minlength,
1661
- name: a.name,
1662
- ref_key: "input",
1663
- ref: T,
1664
- required: a.required,
1665
- rows: a.rows,
1666
- onChange: k,
1667
- onFocus: M,
1668
- onFocusout: Y,
1669
- id: h.value,
1670
- "onUpdate:modelValue": R[0] || (R[0] = (f) => I.value = f)
1671
- }, null, 42, Tt), [
1672
- [ve, I.value]
1673
- ])
1674
- ], 2),
1675
- a.supportingText || p.value ? (l(), r("div", {
1676
- key: 0,
1677
- class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1678
- }, [
1679
- p.value ? (l(), S(U, {
1680
- key: 0,
1681
- icon: t(_).ERROR,
1682
- size: t(y).SMALL
1683
- }, null, 8, ["icon", "size"])) : N("", !0),
1684
- c("div", {
1685
- class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1686
- }, L(p.value ? E.value : a.supportingText), 3)
1687
- ], 2)) : N("", !0)
1688
- ], 2));
1689
- }
1690
- });
1691
- const Vt = /* @__PURE__ */ C(It, [["__scopeId", "data-v-022c8af4"]]), xt = /* @__PURE__ */ v({
1692
- __name: "TideLink",
1693
- props: {
1694
- element: { default: D.LINK },
1695
- href: { default: void 0 },
1696
- iconLeading: { default: void 0 },
1697
- iconTrailing: { default: void 0 },
1698
- isNewTab: { type: Boolean, default: !1 },
1699
- label: { default: void 0 }
1700
- },
1701
- setup(n) {
1702
- const s = n, a = F(() => s.iconLeading || s.iconTrailing);
1703
- return (o, d) => (l(), S(z(s.element === t(D).LINK ? t(D).LINK : t(D).BUTTON), {
1704
- class: i([
1705
- s.element === t(D).LINK ? "tide-button-as-link" : "tide-link",
1706
- a.value ? [t(e).DISPLAY.INLINE_FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF] : [t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).UNDERLINE.ON]
1707
- ]),
1708
- href: s.href,
1709
- target: s.isNewTab ? t(W).BLANK : t(W).SELF
1710
- }, {
1711
- default: Z(() => [
1712
- s.iconLeading ? (l(), S(U, {
1713
- key: 0,
1714
- icon: s.iconLeading
1715
- }, null, 8, ["icon"])) : N("", !0),
1716
- a.value ? (l(), r("div", {
1717
- key: 1,
1718
- class: i([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).UNDERLINE.ON])
1719
- }, L(s.label), 3)) : (l(), r($, { key: 2 }, [
1720
- ce(L(s.label), 1)
1721
- ], 64)),
1722
- s.iconTrailing ? (l(), S(U, {
1723
- key: 3,
1724
- icon: s.iconTrailing
1725
- }, null, 8, ["icon"])) : N("", !0)
1726
- ]),
1727
- _: 1
1728
- }, 8, ["class", "href", "target"]));
1729
- }
1730
- }), ut = ["onClick"], Rt = /* @__PURE__ */ v({
1731
- __name: "TideModal",
1732
- props: {
1733
- isOpen: { type: Boolean },
1734
- modalStyle: {},
1735
- style: {},
1736
- title: {},
1737
- width: {}
1738
- },
1739
- emits: ["close"],
1740
- setup(n, { emit: s }) {
1741
- const a = n, o = A(a.isOpen), d = A(null), T = (u) => {
1742
- o.value = !1, I(), s("close", u);
1743
- }, I = () => {
1744
- o.value ? (d.value = window.scrollY, document.body.style.overflow = "hidden", d.value && window.scrollTo(0, d.value), O()) : (document.body.style.overflow = "", p());
1745
- }, E = (u) => {
1746
- u.key === "Escape" && (u.stopPropagation(), T(u));
1747
- }, O = () => {
1748
- window.addEventListener("keydown", E);
1749
- }, p = () => {
1750
- window.removeEventListener("keydown", E);
1751
- };
1752
- return ee(() => {
1753
- I();
1754
- }), Q(a, (u) => {
1755
- o.value = u.isOpen, I();
1756
- }), (u, g) => (l(), S(Fe, { to: "body" }, [
1757
- G(_e, null, {
1758
- default: Z(() => [
1759
- se(c("div", {
1760
- class: i([
1761
- "tide-modal-wrapper",
1762
- t(e).POSITION.ABSOLUTE,
1763
- t(e).DISPLAY.FLEX,
1764
- t(e).AXIS1.CENTER,
1765
- t(e).AXIS2.CENTER,
1766
- t(e).POSITIONING.TOP_0,
1767
- t(e).POSITIONING.LEFT_0,
1768
- t(e).WIDTH.FULL,
1769
- t(e).HEIGHT.FULL
1770
- ])
1771
- }, [
1772
- c("div", {
1773
- class: i(["tide-modal-bg", t(e).POSITION.ABSOLUTE, t(e).WIDTH.FULL, t(e).HEIGHT.FULL]),
1774
- style: J({ "--tide-modal-width": a.width, ...u.style }),
1775
- onClick: Ee(T, ["self"])
1776
- }, null, 14, ut),
1777
- c("div", {
1778
- class: i([
1779
- "tide-modal",
1780
- t(e).BG.SURFACE.FLOATING,
1781
- t(e).FONT.COLOR.SURFACE.DEFAULT,
1782
- t(e).POSITION.ABSOLUTE,
1783
- t(e).DISPLAY.FLEX,
1784
- t(e).FLEX.DIRECTION.COLUMN,
1785
- t(e).BORDER.RADIUS.HALF,
1786
- t(e).OVERFLOW.XY.HIDDEN
1787
- ]),
1788
- style: J({ ...u.modalStyle })
1789
- }, [
1790
- c("header", {
1791
- class: i(["modal-header", t(e).POSITION.RELATIVE, t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).PADDING.X.TWO])
1792
- }, [
1793
- u.title ? (l(), r("div", {
1794
- key: 0,
1795
- class: i([t(e).FLEX.GROW.ON, t(e).FONT.SIZE.TWENTY, t(e).ALIGN.X.CENTER, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
1796
- }, L(u.title), 3)) : N("", !0),
1797
- c("button", {
1798
- class: i([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT_0, t(e).MARGIN.RIGHT.TWO]),
1799
- onClick: T,
1800
- title: "Close"
1801
- }, [
1802
- G(U, {
1803
- icon: t(_).CLOSE
1804
- }, null, 8, ["icon"])
1805
- ], 2)
1806
- ], 2),
1807
- c("div", {
1808
- class: i(["model-content", t(e).OVERFLOW.Y.AUTO])
1809
- }, [
1810
- X(u.$slots, "default", {}, void 0, !0)
1811
- ], 2),
1812
- u.$slots.footer ? (l(), r("footer", {
1813
- key: 0,
1814
- class: i([
1815
- "tide-bg-surface",
1816
- t(e).POSITION.STICKY,
1817
- t(e).POSITIONING.LEFT_0,
1818
- t(e).POSITIONING.BOTTOM_0,
1819
- t(e).DISPLAY.FLEX,
1820
- t(e).AXIS1.END,
1821
- t(e).GAP.ONE,
1822
- t(e).PADDING.X.TWO,
1823
- t(e).PADDING.Y.HALF
1824
- ])
1825
- }, [
1826
- X(u.$slots, "footer", {}, void 0, !0)
1827
- ], 2)) : N("", !0)
1828
- ], 6)
1829
- ], 2), [
1830
- [De, o.value]
1831
- ])
1832
- ]),
1833
- _: 3
1834
- })
1835
- ]));
1836
- }
1837
- });
1838
- const wt = /* @__PURE__ */ C(Rt, [["__scopeId", "data-v-44481316"]]), $t = /* @__PURE__ */ v({
1839
- __name: "TidePagination",
1840
- props: {
1841
- pageCurrent: { default: 1 },
1842
- pageTotal: { default: 1 }
1843
- },
1844
- emits: ["change"],
1845
- setup(n, { emit: s }) {
1846
- const a = n, o = A(a.pageCurrent), d = F(() => new Array(a.pageTotal).fill("").map((I, E) => E + 1)), T = (I, E) => {
1847
- o.value = E, s("change", I, E);
1848
- };
1849
- return (I, E) => (l(), r("section", {
1850
- class: i(["tide-pagination", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
1851
- }, [
1852
- G(q, {
1853
- disabled: o.value === 1,
1854
- icon: t(_).CHEVRON_LEFT,
1855
- priority: t(w).QUATERNARY,
1856
- onClick: E[0] || (E[0] = (O) => T(O, o.value - 1))
1857
- }, null, 8, ["disabled", "icon", "priority"]),
1858
- c("ul", {
1859
- class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
1860
- }, [
1861
- (l(!0), r($, null, j(d.value, (O) => (l(), r("li", { key: O }, [
1862
- G(Me, {
1863
- disabled: o.value === O,
1864
- label: O,
1865
- priority: t(w).QUATERNARY,
1866
- onClick: (p) => T(p, O)
1867
- }, null, 8, ["disabled", "label", "priority", "onClick"])
1868
- ]))), 128))
1869
- ], 2),
1870
- G(q, {
1871
- disabled: o.value === d.value[d.value.length - 1],
1872
- icon: t(_).CHEVRON_RIGHT,
1873
- priority: t(w).QUATERNARY,
1874
- onClick: E[1] || (E[1] = (O) => T(O, o.value + 1))
1875
- }, null, 8, ["disabled", "icon", "priority"])
1876
- ], 2));
1877
- }
1878
- }), Ot = { class: "tide-seo-links" }, At = ["href", "target"], Nt = /* @__PURE__ */ v({
1879
- __name: "TideSeoLinks",
1880
- props: {
1881
- heading: { default: "" },
1882
- links: {}
1883
- },
1884
- setup(n) {
1885
- const s = n;
1886
- return (a, o) => (l(), r("section", Ot, [
1887
- c("h2", {
1888
- class: i([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
1889
- }, L(s.heading), 3),
1890
- c("ul", {
1891
- class: i([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
1892
- }, [
1893
- (l(!0), r($, null, j(s.links, (d) => (l(), r("li", {
1894
- class: i(["tide-seo-link", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, t(e).FONT.SIZE.FOURTEEN]),
1895
- key: d.label
1896
- }, [
1897
- c("a", {
1898
- class: i([t(e).UNDERLINE.OFF]),
1899
- href: d.url,
1900
- target: d.isNewTab ? t(W).BLANK : t(W).SELF
1901
- }, L(d.label), 11, At)
1902
- ], 2))), 128))
1903
- ], 2)
1904
- ]));
1905
- }
1906
- });
1907
- const Qt = /* @__PURE__ */ C(Nt, [["__scopeId", "data-v-d62373f1"]]), Lt = ["data-track", "onClick"], pt = /* @__PURE__ */ v({
1908
- __name: "TideTabs",
1909
- props: {
1910
- activeTabInitial: { default: 0 },
1911
- tabs: {}
1912
- },
1913
- emits: ["change"],
1914
- setup(n, { emit: s }) {
1915
- const a = n, o = A(a.activeTabInitial), d = (T, I) => {
1916
- o.value = I, s("change", T, I);
1917
- };
1918
- return (T, I) => (l(), r("div", {
1919
- class: i([
1920
- "tide-tabs",
1921
- t(e).BG.SURFACE.VARIANT,
1922
- t(e).DISPLAY.FLEX,
1923
- t(e).GAP.QUARTER,
1924
- t(e).BORDER.RADIUS.HALF,
1925
- t(e).PADDING.FULL.QUARTER,
1926
- t(e).OVERFLOW.XY.HIDDEN,
1927
- t(e).WIDTH.FULL
1928
- ])
1929
- }, [
1930
- (l(!0), r($, null, j(a.tabs, (E, O) => (l(), r("button", {
1931
- class: i([
1932
- "tide-tabs-tab",
1933
- O === o.value ? [t(e).BG.SURFACE.DEFAULT, t(e).FONT.COLOR.SURFACE.DEFAULT, t(e).SHADOW.BOTTOM] : ["inactive", t(e).FONT.COLOR.SURFACE.VARIANT],
1934
- t(e).FLEX.GROW.ON,
1935
- t(e).BORDER.RADIUS.QUARTER,
1936
- t(e).PADDING.Y.QUARTER,
1937
- t(e).WIDTH.FULL,
1938
- t(e).FONT.WEIGHT.SIX_HUNDRED,
1939
- t(e).WHITESPACE_WRAP.OFF
1940
- ]),
1941
- "data-track": E.dataTrack || void 0,
1942
- key: E.label,
1943
- onClick: (p) => d(p, O)
1944
- }, [
1945
- c("span", {
1946
- class: i([t(e).FONT.WEIGHT.SIX_HUNDRED])
1947
- }, L(E.label), 3),
1948
- E.count && E.count > 0 ? (l(), r("span", {
1949
- key: 0,
1950
- class: i([t(e).FONT.WEIGHT.SIX_HUNDRED])
1951
- }, " (" + L(E.count) + ") ", 3)) : N("", !0)
1952
- ], 10, Lt))), 128))
1953
- ], 2));
1954
- }
1955
- });
1956
- const Kt = /* @__PURE__ */ C(pt, [["__scopeId", "data-v-894fc638"]]), vt = ["disabled"], Ft = /* @__PURE__ */ v({
1957
- __name: "TideToggle",
1958
- props: {
1959
- disabled: {
1960
- default: !1,
1961
- required: !1,
1962
- type: Boolean
1963
- },
1964
- isActive: {
1965
- required: !0,
1966
- type: Boolean
1967
- }
1968
- },
1969
- emits: ["change"],
1970
- setup(n, { emit: s }) {
1971
- const a = n, o = A(a.isActive), d = (T) => {
1972
- a.disabled || (o.value = !o.value, s("change", T, o.value));
1973
- };
1974
- return (T, I) => (l(), r("button", {
1975
- class: i([
1976
- "tide-toggle",
1977
- t(e).DISPLAY.FLEX,
1978
- t(e).AXIS2.CENTER,
1979
- t(e).BORDER.RADIUS.FULL,
1980
- t(e).OVERFLOW.XY.HIDDEN,
1981
- a.isActive ? t(e).BG.SECONDARY : t(e).BG.SURFACE.VARIANT
1982
- ]),
1983
- disabled: a.disabled,
1984
- onClick: d,
1985
- "aria-label": "Toggle"
1986
- }, [
1987
- c("div", {
1988
- class: i([
1989
- "tide-toggle-indicator",
1990
- t(e).BG.SURFACE.DEFAULT,
1991
- a.isActive ? "active" : "",
1992
- t(e).POSITION.RELATIVE,
1993
- t(e).BORDER.RADIUS.FULL,
1994
- t(e).SHADOW.BOTTOM
1995
- ])
1996
- }, null, 2)
1997
- ], 10, vt));
1998
- }
1999
- });
2000
- const qt = /* @__PURE__ */ C(Ft, [["__scopeId", "data-v-2c5da028"]]), zt = {
2001
- AERO: "aero",
2002
- ATV: "atv",
2003
- BOATMART: "boatmart",
2004
- CYCLE: "cycle",
2005
- EQUIP: "equip",
2006
- PWC: "pwc",
2007
- RV: "rv",
2008
- SNOW: "snow",
2009
- TRUCK: "truck"
2010
- };
2011
- export {
2012
- H as A,
2013
- mt as B,
2014
- e as C,
2015
- xt as D,
2016
- D as E,
2017
- wt as F,
2018
- $t as G,
2019
- Qt as H,
2020
- _ as I,
2021
- Kt as J,
2022
- qt as K,
2023
- w as P,
2024
- zt as R,
2025
- y as S,
2026
- W as T,
2027
- C as _,
2028
- gt as a,
2029
- be as b,
2030
- x as c,
2031
- Dt as d,
2032
- St as e,
2033
- ft as f,
2034
- Ut as g,
2035
- Ct as h,
2036
- Pt as i,
2037
- Gt as j,
2038
- q as k,
2039
- Me as l,
2040
- ht as m,
2041
- bt as n,
2042
- Ht as o,
2043
- yt as p,
2044
- Bt as q,
2045
- Xt as r,
2046
- de as s,
2047
- U as t,
2048
- Wt as u,
2049
- Ce as v,
2050
- Mt as w,
2051
- Yt as x,
2052
- kt as y,
2053
- Vt as z
2054
- };
2055
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtMTA0MmQ5M2IuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy9TdHlsZXMudHMiLCIuLi9zcmMvdHlwZXMvU2l6ZS50cyIsIi4uL3NyYy91dGlsaXRpZXMvZm9ybWF0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUljb24udnVlIiwiLi4vc3JjL3R5cGVzL0ljb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWNjb3JkaW9uSXRlbS52dWUiLCIuLi9zcmMvdHlwZXMvRWxlbWVudC50cyIsIi4uL3NyYy90eXBlcy9Qcmlvcml0eS50cyIsIi4uL3NyYy90eXBlcy9UYXJnZXQudHMiLCIuLi9zcmMvdHlwZXMvQWxlcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlIiwiLi4vc3JjL3R5cGVzL0JhZGdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3QudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUYWJzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUb2dnbGUudnVlIiwiLi4vc3JjL3R5cGVzL1JlYWxtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBMRUZUOiAndGlkZS10ZXh0LWxlZnQnLFxuICAgICAgUklHSFQ6ICd0aWRlLXRleHQtcmlnaHQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICB9LFxuICBCRzoge1xuICAgIEVSUk9SOiAndGlkZS1iZy1lcnJvcicsXG4gICAgSU5GTzogJ3RpZGUtYmctaW5mbycsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1Y2Nlc3MnLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQUNDRU5UX1ZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50LXZhcmlhbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBJTkZPOiAndGlkZS1iZy1zdXJmYWNlLWluZm8nLFxuICAgICAgU1VDQ0VTUzogJ3RpZGUtYmctc3VyZmFjZS1zdWNjZXNzJyxcbiAgICAgIFZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICBXQVJOSU5HOiAndGlkZS1iZy1zdXJmYWNlLXdhcm5pbmcnLFxuICAgIH0sXG4gICAgV0FSTklORzogJ3RpZGUtYmctd2FybmluZycsXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIEJPVFRPTToge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgQ09MT1I6IHtcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJvcmRlcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYm9yZGVyLWZsb2F0aW5nJyxcbiAgICAgIEhJR0g6ICd0aWRlLWJvcmRlci1oaWdoJyxcbiAgICAgIExPVzogJ3RpZGUtYm9yZGVyLWxvdycsXG4gICAgICBQUklNQVJZOiAndGlkZS1ib3JkZXItcHJpbWFyeScsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLTInLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSQURJVVM6IHtcbiAgICAgIEZVTEw6ICd0aWRlLXJhZGl1cy1mdWxsJyxcbiAgICAgIEhBTEY6ICd0aWRlLXJhZGl1cy0xLzInLFxuICAgICAgT05FOiAndGlkZS1yYWRpdXMtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1yYWRpdXMtMS80JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPTjogJ3RpZGUtYnJlYWstd29yZCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ2luaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBGTEVYOiB7XG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgUFJJTUFSWTogJ3RpZGUtZm9udC1vbi1wcmltYXJ5JyxcbiAgICAgIFNFQ09OREFSWTogJ3RpZGUtZm9udC1vbi1zZWNvbmRhcnknLFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBCUkFORDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWJyYW5kJyxcbiAgICAgICAgREVGQVVMVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlJyxcbiAgICAgICAgSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgICBWQVJJQU5UOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICAgIFZBUklBTlRfSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQtaW52ZXJzZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgU0laRToge1xuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUSElSVFlfVFdPOiAndGlkZS1mb250LTMyJyxcbiAgICAgIFRXRUxWRTogJ3RpZGUtZm9udC0xMicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgIH0sXG4gICAgV0VJR0hUOiB7XG4gICAgICBGSVZFX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNTAwJyxcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgICAgU0lYX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNjAwJyxcbiAgICB9LFxuICB9LFxuICBHQVA6IHtcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gICAgSEFMRjogJ3RpZGUtZ2FwLTEvMicsXG4gICAgT05FOiAndGlkZS1nYXAtMScsXG4gICAgUVVBUlRFUjogJ3RpZGUtZ2FwLTEvNCcsXG4gICAgVFdPOiAndGlkZS1nYXAtMicsXG4gIH0sXG4gIEhFSUdIVDoge1xuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgfSxcbiAgTElTVF9CVUxMRVRTOiB7XG4gICAgT0ZGOiAndGlkZS1saXN0LW5vbmUnLFxuICB9LFxuICBNQVJHSU46IHtcbiAgICBCT1RUT006IHtcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tbGVmdC0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1yaWdodC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tcmlnaHQtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tcmlnaHQtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tdG9wLTQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXgtYXV0bycsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXgtMicsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi15LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXktMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPVkVSRkxPVzoge1xuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLXgtYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXgtaGlkZGVuJyxcbiAgICAgIFNDUk9MTDogJ3RpZGUteC1zY3JvbGwnLFxuICAgIH0sXG4gICAgWFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXh5LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14eS1oaWRkZW4nLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgQVVUTzogJ3RpZGUteS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteS1oaWRkZW4nLFxuICAgIH0sXG4gIH0sXG4gIFBBRERJTkc6IHtcbiAgICBCT1RUT006IHtcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1ib3R0b20tMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0yJyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctbGVmdC0yJyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXRvcC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy10b3AtMicsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteC0yJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy15LTInLFxuICAgIH0sXG4gIH0sXG4gIFBPSU5URVJfRVZFTlRTOiB7XG4gICAgT0ZGOiAndGlkZS1wb2ludGVyLWV2ZW50cy1ub25lJyxcbiAgICBPTjogJ3RpZGUtcG9pbnRlci1ldmVudHMnLFxuICB9LFxuICBQT1NJVElPTjoge1xuICAgIEFCU09MVVRFOiAndGlkZS1wb3NpdGlvbi1hYnNvbHV0ZScsXG4gICAgRklYRUQ6ICd0aWRlLXBvc2l0aW9uLWZpeGVkJyxcbiAgICBSRUxBVElWRTogJ3RpZGUtcG9zaXRpb24tcmVsYXRpdmUnLFxuICAgIFNUSUNLWTogJ3RpZGUtc3RpY2t5JyxcbiAgfSxcbiAgUE9TSVRJT05JTkc6IHtcbiAgICBCT1RUT01fMDogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlRfMDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVF8wOiAndGlkZS1yaWdodC0wJyxcbiAgICBUT1BfMDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBTQ1JPTExCQVI6IHtcbiAgICBPRkY6ICd0aWRlLXNjcm9sbGJhci1ub25lJyxcbiAgfSxcbiAgU0hBRE9XOiB7XG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICB9LFxuICBTTkFQOiB7XG4gICAgT046ICd0aWRlLXNuYXAnLFxuICB9LFxuICBTTkFQX0FMSUdOOiB7XG4gICAgU1RBUlQ6ICd0aWRlLXNuYXAtc3RhcnQnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICB9LFxufTtcblxuZXhwb3J0IHR5cGUgQ3NzVXRpbGl0eSA9ICh0eXBlb2YgQ1NTKVtrZXlvZiB0eXBlb2YgQ1NTXTtcblxuZXhwb3J0IGNvbnN0IGNzc1NvcnRPcmRlciA9IFtcbiAgQ1NTLkRJU1BMQVkuQkxPQ0ssXG4gIENTUy5ESVNQTEFZLkNPTlRFTlRTLFxuICBDU1MuRElTUExBWS5GTEVYLFxuICBDU1MuRElTUExBWS5HUklELFxuICBDU1MuRElTUExBWS5OT05FLFxuICBDU1MuRElTUExBWS5JTklUSUFMLFxuICBDU1MuRElTUExBWS5JTkxJTkUsXG4gIENTUy5ESVNQTEFZLklOTElORV9CTE9DSyxcbiAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gIENTUy5BWElTMS5BUk9VTkQsXG4gIENTUy5BWElTMS5CRVRXRUVOLFxuICBDU1MuQVhJUzEuQ0VOVEVSLFxuICBDU1MuQVhJUzEuRU5ELFxuICBDU1MuQVhJUzEuU1RBUlQsXG4gIENTUy5BWElTMi5BUk9VTkQsXG4gIENTUy5BWElTMi5DRU5URVIsXG4gIENTUy5BWElTMi5FTkQsXG4gIENTUy5BWElTMi5TVEFSVCxcbiAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTl9SRVZFUlNFLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XX1JFVkVSU0UsXG4gIENTUy5HQVAuT05FLFxuICBDU1MuR0FQLkhBTEYsXG4gIENTUy5HQVAuUVVBUlRFUixcbiAgQ1NTLkdBUC5UV08sXG4gIENTUy5HQVAuRk9VUixcbiAgQ1NTLkZMRVguR1JPVy5PTixcbiAgQ1NTLkZMRVguR1JPVy5PRkYsXG4gIENTUy5GTEVYLlNIUklOSy5PTixcbiAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgQ1NTLkZMRVguV1JBUCxcbiAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICBDU1MuUE9TSVRJT04uRklYRUQsXG4gIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgQ1NTLlBPU0lUSU9OLlNUSUNLWSxcbiAgQ1NTLlBPU0lUSU9OSU5HLlRPUF8wLFxuICBDU1MuUE9TSVRJT05JTkcuUklHSFRfMCxcbiAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTV8wLFxuICBDU1MuUE9TSVRJT05JTkcuTEVGVF8wLFxuICBDU1MuQk9YX1NJWklORy5CT1JERVJfQk9YLFxuICBDU1MuQk9YX1NJWklORy5DT05URU5UX0JPWCxcbiAgQ1NTLk1BUkdJTi5GVUxMLk9ORSxcbiAgQ1NTLk1BUkdJTi5GVUxMLkhBTEYsXG4gIENTUy5NQVJHSU4uRlVMTC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLkZVTEwuVFdPLFxuICBDU1MuTUFSR0lOLkZVTEwuRk9VUixcbiAgQ1NTLk1BUkdJTi5ZLk9ORSxcbiAgQ1NTLk1BUkdJTi5ZLkhBTEYsXG4gIENTUy5NQVJHSU4uWS5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLlkuVFdPLFxuICBDU1MuTUFSR0lOLlkuRk9VUixcbiAgQ1NTLk1BUkdJTi5UT1AuT05FLFxuICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICBDU1MuTUFSR0lOLlRPUC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLlRPUC5UV08sXG4gIENTUy5NQVJHSU4uVE9QLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5PTkUsXG4gIENTUy5NQVJHSU4uWC5IQUxGLFxuICBDU1MuTUFSR0lOLlguUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5YLlRXTyxcbiAgQ1NTLk1BUkdJTi5YLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5BVVRPLFxuICBDU1MuTUFSR0lOLlJJR0hULk9ORSxcbiAgQ1NTLk1BUkdJTi5SSUdIVC5IQUxGLFxuICBDU1MuTUFSR0lOLlJJR0hULlFVQVJURVIsXG4gIENTUy5NQVJHSU4uUklHSFQuVFdPLFxuICBDU1MuTUFSR0lOLlJJR0hULkZPVVIsXG4gIENTUy5NQVJHSU4uUklHSFQuQVVUTyxcbiAgQ1NTLk1BUkdJTi5CT1RUT00uT05FLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5IQUxGLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5UV08sXG4gIENTUy5NQVJHSU4uQk9UVE9NLkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gIENTUy5NQVJHSU4uTEVGVC5IQUxGLFxuICBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5MRUZULlRXTyxcbiAgQ1NTLk1BUkdJTi5MRUZULkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5BVVRPLFxuICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICBDU1MuQk9SREVSLlRPUC5PTkUsXG4gIENTUy5CT1JERVIuVE9QLlRXTyxcbiAgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsXG4gIENTUy5CT1JERVIuUklHSFQuVFdPLFxuICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gIENTUy5CT1JERVIuQk9UVE9NLlRXTyxcbiAgQ1NTLkJPUkRFUi5MRUZULk9ORSxcbiAgQ1NTLkJPUkRFUi5MRUZULlRXTyxcbiAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLFxuICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gIENTUy5QQURESU5HLkZVTEwuVFdPLFxuICBDU1MuUEFERElORy5GVUxMLkZPVVIsXG4gIENTUy5QQURESU5HLlkuT05FLFxuICBDU1MuUEFERElORy5ZLkhBTEYsXG4gIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuWS5UV08sXG4gIENTUy5QQURESU5HLlkuRk9VUixcbiAgQ1NTLlBBRERJTkcuVE9QLk9ORSxcbiAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gIENTUy5QQURESU5HLlRPUC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5UT1AuVFdPLFxuICBDU1MuUEFERElORy5UT1AuRk9VUixcbiAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gIENTUy5QQURESU5HLlguSEFMRixcbiAgQ1NTLlBBRERJTkcuWC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5YLlRXTyxcbiAgQ1NTLlBBRERJTkcuWC5GT1VSLFxuICBDU1MuUEFERElORy5SSUdIVC5PTkUsXG4gIENTUy5QQURESU5HLlJJR0hULkhBTEYsXG4gIENTUy5QQURESU5HLlJJR0hULlFVQVJURVIsXG4gIENTUy5QQURESU5HLlJJR0hULlRXTyxcbiAgQ1NTLlBBRERJTkcuUklHSFQuRk9VUixcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSxcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gIENTUy5QQURESU5HLkJPVFRPTS5RVUFSVEVSLFxuICBDU1MuUEFERElORy5CT1RUT00uVFdPLFxuICBDU1MuUEFERElORy5CT1RUT00uRk9VUixcbiAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gIENTUy5QQURESU5HLkxFRlQuSEFMRixcbiAgQ1NTLlBBRERJTkcuTEVGVC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5MRUZULlRXTyxcbiAgQ1NTLlBBRERJTkcuTEVGVC5GT1VSLFxuICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gIENTUy5XSURUSC5GVUxMLFxuICBDU1MuSEVJR0hULkZVTEwsXG4gIENTUy5BTElHTi5ZLk1JRERMRSxcbiAgQ1NTLkJSRUFLX1dPUkQsXG4gIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgQ1NTLkZPTlQuU0laRS5UV0VMVkUsXG4gIENTUy5GT05ULlNJWkUuRk9VUlRFRU4sXG4gIENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgQ1NTLkZPTlQuU0laRS5UV0VOVFksXG4gIENTUy5GT05ULlNJWkUuVFdFTlRZX0ZPVVIsXG4gIENTUy5GT05ULlNJWkUuVEhJUlRZX1RXTyxcbiAgQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCxcbiAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gIENTUy5PQkpFQ1QuQ0VOVEVSLFxuICBDU1MuT0JKRUNULkNPTlRBSU4sXG4gIENTUy5PQkpFQ1QuQ09WRVIsXG4gIENTUy5PQkpFQ1QuU0NBTEVfRE9XTixcbiAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICBDU1MuU0NST0xMQkFSLk9GRixcbiAgQ1NTLlNIQURPVy5CT1RUT00sXG4gIENTUy5TSEFET1cuVE9QLFxuICBDU1MuU05BUC5PTixcbiAgQ1NTLlNOQVBfQUxJR04uU1RBUlQsXG4gIENTUy5BTElHTi5YLkxFRlQsXG4gIENTUy5BTElHTi5YLkNFTlRFUixcbiAgQ1NTLkFMSUdOLlguUklHSFQsXG4gIENTUy5URVhUX1RSQU5TRk9STS5MT1dFUixcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLk5PTkUsXG4gIENTUy5URVhUX1RSQU5TRk9STS5VUFBFUixcbiAgQ1NTLlVOREVSTElORSxcbiAgQ1NTLlVOREVSTElORS5IT1ZFUixcbiAgQ1NTLlVOREVSTElORS5PRkYsXG4gIENTUy5WSVNJQklMSVRZLk9OLFxuICBDU1MuVklTSUJJTElUWS5PRkYsXG4gIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgQ1NTLk9WRVJGTE9XLlguQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gIENTUy5PVkVSRkxPVy5ZLkhJRERFTixcbl07XG4iLCJleHBvcnQgY29uc3QgU0laRSA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZSA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFNpemUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IGZvcm1hdFBhc2NhbENhc2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gcHJvcHMuaWNvbiBhcyB1bmtub3duIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IG5hbWUgPSBmb3JtYXRQYXNjYWxDYXNlKGlkKTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9JY29uJHtuYW1lfS52dWVgKSk7XG5cbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaWNvbicsIHByb3BzLnNpemVdXCI+XG4gICAgPHN2Z1xuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6ZGF0YS1pY29uPVwiaWNvblwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgPlxuICAgICAgPENvbXBvbmVudFxuICAgICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICAgIHYtaWY9XCJpbm5lclNWR1wiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWljb24gc3ZnIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCBzdmcge1xuICAgIHdpZHRoOiAxLjI1cmVtO1xuICAgIGhlaWdodDogMS4yNXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBJQ09OID0ge1xuICBBQ0NPVU5UX0JBTEFOQ0U6ICdhY2NvdW50LWJhbGFuY2UnLFxuICBBREQ6ICdhZGQnLFxuICBBSTogJ2FpJyxcbiAgQUxJR05fU1BBQ0U6ICdhbGlnbi1zcGFjZScsXG4gIEFQUExFX1BBWTogJ2FwcGxlLXBheScsXG4gIEFSUk9XX0JBQ0s6ICdhcnJvdy1iYWNrJyxcbiAgQVJST1dfRk9SV0FSRDogJ2Fycm93LWZvcndhcmQnLFxuICBBUlJPV19SSUdIVDogJ2Fycm93LXJpZ2h0JyxcbiAgQVNTSUdOTUVOVDogJ2Fzc2lnbm1lbnQnLFxuICBBV0FSRF9TVEFSOiAnYXdhcmQtc3RhcicsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDSEVDSzogJ2NoZWNrJyxcbiAgQ0hFVlJPTl9MRUZUOiAnY2hldnJvbi1sZWZ0JyxcbiAgQ0hFVlJPTl9SSUdIVDogJ2NoZXZyb24tcmlnaHQnLFxuICBDTEVBUjogJ2NsZWFyJyxcbiAgQ0xPU0U6ICdjbG9zZScsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBERUxFVEU6ICdkZWxldGUnLFxuICBESUFNT05EOiAnZGlhbW9uZCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRVJST1I6ICdlcnJvcicsXG4gIEVYUEFORF9DT05URU5UOiAnZXhwYW5kLWNvbnRlbnQnLFxuICBFWFBBTkRfTEVTUzogJ2V4cGFuZC1sZXNzJyxcbiAgRVhQQU5EX01PUkU6ICdleHBhbmQtbW9yZScsXG4gIEZBQ0VCT09LOiAnZmFjZWJvb2snLFxuICBGQVZPUklURTogJ2Zhdm9yaXRlJyxcbiAgRkFWT1JJVEVfRklMTEVEOiAnZmF2b3JpdGUtZmlsbGVkJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHT09HTEU6ICdnb29nbGUnLFxuICBHT09HTEVfUEFZOiAnZ29vZ2xlLXBheScsXG4gIEdSSUQ6ICdncmlkJyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElOU0VSVF9URVhUOiAnaW5zZXJ0LXRleHQnLFxuICBJTlNUQUdSQU06ICdpbnN0YWdyYW0nLFxuICBJT1NfU0hBUkU6ICdpb3Mtc2hhcmUnLFxuICBMQVlPVVQ6ICdsYXlvdXQnLFxuICBMSU5LRURfSU46ICdsaW5rZWQgaW4nLFxuICBMT0NBTF9TSElQUElORzogJ2xvY2FsLXNoaXBwaW5nJyxcbiAgTE9DSzogJ2xvY2snLFxuICBNQUlMOiAnbWFpbCcsXG4gIE1FTlU6ICdtZW51JyxcbiAgTU9SRV9IT1JJWjogJ21vcmUtaG9yaXonLFxuICBOT1RJRklDQVRJT05TOiAnbm90aWZpY2F0aW9ucycsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBIT1RPX0NBTUVSQTogJ3Bob3RvLWNhbWVyYScsXG4gIFBJTlRFUkVTVDogJ3BpbnRlcmVzdCcsXG4gIFBMQVlfQVJST1c6ICdwbGF5LWFycm93JyxcbiAgUkVNT1ZFOiAncmVtb3ZlJyxcbiAgUk9VTkRFRF9DT1JORVJTOiAncm91bmRlZC1jb3JuZXJzJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTVM6ICdzbXMnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNXQVBfVkVSVDogJ3N3YXAtdmVydCcsXG4gIFRIUkVFX0RfUk9UQVRJT046ICd0aHJlZS1kLXJvdGF0aW9uJyxcbiAgVFVORTogJ3R1bmUnLFxuICBUV0lUVEVSOiAndHdpdHRlcicsXG4gIFZJREVPQ0FNOiAndmlkZW9jYW0nLFxuICBWSUVXX0lOX0FSOiAndmlldy1pbi1hcicsXG4gIFZJU0lCSUxJVFk6ICd2aXNpYmlsaXR5JyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBJY29uID0gKHR5cGVvZiBJQ09OKVtrZXlvZiB0eXBlb2YgSUNPTl07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5kaWNhdG9yIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XG4gICAgaGFzQm90dG9tRGl2aWRlcjoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgaGFzVG9wRGl2aWRlcjoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgaXNBY3RpdmU6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGlzRXhwYW5kZWRJbml0aWFsOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBpc09wdGlvbmFsOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgZGVmYXVsdDogJycsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBpc0V4cGFuZGVkID0gcmVmKHByb3BzLmlzRXhwYW5kZWRJbml0aWFsKTtcblxuICBsZXQgYWNjb3JkaW9uQm9keSA9IHJlZigpO1xuXG4gIGNvbnN0IHRvZ2dsZUlzRXhwYW5kZWQgPSAoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFjY29yZGlvbkJvZHkudmFsdWUgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpc0V4cGFuZGVkLnZhbHVlID0gIWlzRXhwYW5kZWQudmFsdWU7XG5cbiAgICBlbGVtZW50LnN0eWxlLmdyaWRUZW1wbGF0ZVJvd3MgPSBpc0V4cGFuZGVkLnZhbHVlID8gJzFmcicgOiAnMGZyJztcbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhY2NvcmRpb25Cb2R5LnZhbHVlIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgZWxlbWVudC5zdHlsZS5ncmlkVGVtcGxhdGVSb3dzID0gaXNFeHBhbmRlZC52YWx1ZSA/ICcxZnInIDogJzBmcic7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJ0b2dnbGVJc0V4cGFuZGVkXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEYsIENTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVEXVwiPlxuICAgICAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuaXNPcHRpb25hbFwiXG4gICAgICAgID5cbiAgICAgICAgICAob3B0aW9uYWwpXG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8VGlkZUluZGljYXRvciB2LWlmPVwicHJvcHMuaXNBY3RpdmVcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvbiA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBDU1MuRElTUExBWS5HUklEXVwiXG4gICAgICByZWY9XCJhY2NvcmRpb25Cb2R5XCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuT1ZFUkZMT1cuWS5ISURERU5dXCI+XG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5NQVJHSU4uWS5PTkUsIENTUy5GT05ULldFSUdIVC5GT1VSX0hVTkRSRUQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNCb3R0b21EaXZpZGVyXCIgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hY2NvcmRpb24tYm9keSB7XG4gICAgdHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1yb3dzIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEFMRVJUIH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBpY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBpY29uOiBJY29uID0gSUNPTi5WSUVXX0lOX0FSO1xuXG4gICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG4gICAgICBjYXNlIEFMRVJULkVSUk9SOlxuICAgICAgICBpY29uID0gSUNPTi5FUlJPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBBTEVSVC5JTkZPOlxuICAgICAgICBpY29uID0gSUNPTi5JTkZPO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQUxFUlQuU1VDQ0VTUzpcbiAgICAgICAgaWNvbiA9IElDT04uQ0hFQ0s7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBTEVSVC5XQVJOSU5HOlxuICAgICAgICBpY29uID0gSUNPTi5XQVJOSU5HO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gaWNvbjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiAmJiBDU1MuQkcuU1VSRkFDRS5FUlJPUixcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gJiYgQ1NTLkJHLlNVUkZBQ0UuSU5GTyxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLlNVUkZBQ0UuU1VDQ0VTUyxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULldBUk5JTkcgJiYgQ1NTLkJHLlNVUkZBQ0UuV0FSTklORyxcbiAgICAgIHByb3BzLmlzVG9hc3QgPyBDU1MuU0hBRE9XLkJPVFRPTSA6ICcnLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtaWNvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgIHByb3BzLnR5cGUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gICAgICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFLFxuICAgICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SICYmIENTUy5CRy5FUlJPUixcbiAgICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5JTkZPLFxuICAgICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLlNVQ0NFU1MsXG4gICAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORyAmJiBDU1MuQkcuV0FSTklORyxcbiAgICAgICAgXVwiXG4gICAgICAgIDppY29uPVwiaWNvblwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtaGVhZGluZycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICA8aDIgOmNsYXNzPVwiW0NTUy5GT05ULlNJWkUuU0lYVEVFTiwgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICAgIDwvaDI+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGFsZXJ0XCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtYm9keScsIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIj5cbiAgICAgIDxzbG90IC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWxlcnQge1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAnaWNvbiBoZWFkaW5nIGNsb3NlJ1xuICAgICAgJy4gYm9keSAuJztcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyIGF1dG87XG4gICAgZ3JpZC1jb2x1bW4tZ2FwOiAwLjVyZW07XG4gICAgbWF4LXdpZHRoOiA0MHJlbTtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWljb24ge1xuICAgIGdyaWQtYXJlYTogaWNvbjtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWhlYWRpbmcge1xuICAgIGdyaWQtYXJlYTogaGVhZGluZztcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWNsb3NlIHtcbiAgICBncmlkLWFyZWE6IGNsb3NlO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtYm9keSB7XG4gICAgZ3JpZC1hcmVhOiBib2R5O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IEJBREdFID0ge1xuICBKVVNUX0xJU1RFRDogJ0p1c3QgbGlzdGVkJyxcbiAgTkFUSU9OV0lERTogJ05hdGlvbndpZGUnLFxuICBSRURVQ0VEOiAnUmVkdWNlZCcsXG4gIFVQREFURUQ6ICdVcGRhdGVkJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9QUkVNSVVNID0ge1xuICBQUkVNSVVNOiAnUHJlbWl1bScsXG4gIFBSRU1JVU1fU0VMRUNUOiAnUHJlbWl1bSBTRUxFQ1QnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfNTogJzUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQmFkZ2UgPSAodHlwZW9mIEJBREdFKVtrZXlvZiB0eXBlb2YgQkFER0VdO1xuZXhwb3J0IHR5cGUgQmFkZ2VQcmVtaXVtID0gKHR5cGVvZiBCQURHRV9QUkVNSVVNKVtrZXlvZiB0eXBlb2YgQkFER0VfUFJFTUlVTV07XG5leHBvcnQgdHlwZSBCYWRnZVRydXN0ZWRZZWFycyA9ICh0eXBlb2YgQkFER0VfVFJVU1RFRClba2V5b2YgdHlwZW9mIEJBREdFX1RSVVNURURdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25Nb3VudGVkLCBvblVubW91bnRlZCwgb25VcGRhdGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc1RvdWNoc2NyZWVuPzogYm9vbGVhbjtcbiAgICBvZmZzZXRYPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb2Zmc2V0WDogMCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGxldCBjb250ZW50V2lkdGggPSByZWYoKTtcbiAgbGV0IGZyYW1lV2lkdGggPSByZWYoKTtcbiAgbGV0IGhhc092ZXJmbG93ID0gcmVmKCk7XG4gIGxldCBsYXN0UG9zaXRpb24gPSByZWYoKTtcblxuICBjb25zdCBjb250ZW50UmVmID0gcmVmKCk7XG4gIGNvbnN0IGZyYW1lUmVmID0gcmVmKCk7XG4gIGNvbnN0IHNob3dCdXR0b25zID0gcmVmKCk7XG4gIGNvbnN0IGN1cnJlbnRTbGlkZSA9IHJlZigwKTtcblxuICBjb25zdCBnYXAgPSAxNjtcblxuICAvKipcbiAgICogTWVhc3VyZSB0aGUgY3VycmVudCBzbGlkZSBiYXNlZCBvbiB0aGUgc2Nyb2xsXG4gICAqIHBvc2l0aW9uIG9mIHRoZSBmcmFtZS4gVGhlIGN1cnJlbnQgc2xpZGUgaXNcbiAgICogdGhlIHNsaWRlIHRoYXQgaXMgY2xvc2VzdCB0byB0aGUgbGVmdCBlZGdlIG9mXG4gICAqIHRoZSBmcmFtZS5cbiAgICovXG4gIGNvbnN0IG1lYXN1cmVDdXJyZW50U2xpZGUgPSAoKSA9PiB7XG4gICAgLy8gZ2V0IGxlZnQgb2Zmc2V0cyBvZiBlYWNoIHNsaWRlXG4gICAgY29uc3Qgc2xpZGVPZmZzZXRzID0gQXJyYXkuZnJvbShjb250ZW50UmVmLnZhbHVlLmNoaWxkcmVuKS5tYXAoKHNsaWRlOiBhbnkpID0+IHNsaWRlLm9mZnNldExlZnQpO1xuXG4gICAgaWYgKHNsaWRlT2Zmc2V0cy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIC8vIGdldCB2YWx1ZSBjbG9zZXN0IHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uXG4gICAgY29uc3QgY2xvc2VzdFNsaWRlT2Zmc2V0ID0gc2xpZGVPZmZzZXRzLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgcmV0dXJuIE1hdGguYWJzKGN1cnIgLSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0KSA8IE1hdGguYWJzKHByZXYgLSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0KSA/IGN1cnIgOiBwcmV2O1xuICAgIH0pO1xuXG4gICAgLy8gc2V0IGN1cnJlbnQgc2xpZGUgdG8gaW5kZXggb2YgY2xvc2VzdCBzbGlkZVxuICAgIGN1cnJlbnRTbGlkZS52YWx1ZSA9IHNsaWRlT2Zmc2V0cy5pbmRleE9mKGNsb3Nlc3RTbGlkZU9mZnNldCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBjb250ZW50V2lkdGgudmFsdWUgPSBjb250ZW50UmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGZyYW1lV2lkdGgudmFsdWUgPSBmcmFtZVJlZi52YWx1ZS5jbGllbnRXaWR0aDtcbiAgICBoYXNPdmVyZmxvdy52YWx1ZSA9IGNvbnRlbnRXaWR0aC52YWx1ZSA+IGZyYW1lV2lkdGgudmFsdWU7XG4gICAgbGFzdFBvc2l0aW9uLnZhbHVlID0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsV2lkdGggLSBmcmFtZVJlZi52YWx1ZS5jbGllbnRXaWR0aDtcbiAgICBzaG93QnV0dG9ucy52YWx1ZSA9IGhhc092ZXJmbG93LnZhbHVlICYmICFwcm9wcy5pc1RvdWNoc2NyZWVuO1xuXG4gICAgbWVhc3VyZUN1cnJlbnRTbGlkZSgpO1xuICB9O1xuXG4gIC8vIFRPRE86IGRlYm91bmNlIHRoaXNcbiAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgfTtcblxuICAvKipcbiAgICogU2Nyb2xscyB0byB0aGUgc2xpZGUgYXQgdGhlIGdpdmVuIGluZGV4LCBvclxuICAgKiB0byB0aGUgZmlyc3Qgb3IgbGFzdCBzbGlkZSBpZiB0aGUgZ2l2ZW4gaW5kZXhcbiAgICogaXMgb3V0IG9mIGJvdW5kcy5cbiAgICogQHBhcmFtIHNsaWRlSW5kZXggVGhlIGluZGV4IG9mIHRoZSBzbGlkZSB0byBzY3JvbGwgdG9cbiAgICovXG4gIGNvbnN0IHNjcm9sbFRvU2xpZGUgPSAoc2xpZGVJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgZnJhbWVSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogY29udGVudFJlZi52YWx1ZS5jaGlsZHJlbltzbGlkZUluZGV4XS5vZmZzZXRMZWZ0LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0U2xpZGUgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudFdpZHRoID0gY29udGVudFJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBjb25zdCBjb250ZW50UmlnaHRFZGdlID0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCArIGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuXG4gICAgaWYgKGNvbnRlbnRSaWdodEVkZ2UgPiBjb250ZW50V2lkdGgpIHtcbiAgICAgIGZyYW1lUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICBsZWZ0OiBjb250ZW50V2lkdGgsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXNGaXJzdFNsaWRlV2l0aE9mZnNldCA9IHByb3BzLm9mZnNldFggJiYgY3VycmVudFNsaWRlLnZhbHVlID09PSAwO1xuICAgICAgY29uc3QgaXNMYXN0U2xpZGUgPSBjb250ZW50UmlnaHRFZGdlID09PSBjb250ZW50V2lkdGg7XG4gICAgICBjb25zdCBuZXh0U2xpZGUgPSBpc0xhc3RTbGlkZSA/IDAgOiBpc0ZpcnN0U2xpZGVXaXRoT2Zmc2V0ID8gMiA6IGN1cnJlbnRTbGlkZS52YWx1ZSArIDE7XG5cbiAgICAgIHNjcm9sbFRvU2xpZGUobmV4dFNsaWRlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzU2xpZGUgPSAoKSA9PiB7XG4gICAgY29uc3QgZmlyc3RTbGlkZSA9IHByb3BzLm9mZnNldFggPyAxIDogMDtcbiAgICBjb25zdCBpc0ZpcnN0U2xpZGUgPSBjdXJyZW50U2xpZGUudmFsdWUgLSAxID09PSBmaXJzdFNsaWRlO1xuICAgIGNvbnN0IGlzU2Vjb25kU2xpZGUgPSBjdXJyZW50U2xpZGUudmFsdWUgPD0gZmlyc3RTbGlkZTtcbiAgICBjb25zdCBwcmV2aW91c1NsaWRlID0gaXNTZWNvbmRTbGlkZVxuICAgICAgPyBjb250ZW50UmVmLnZhbHVlLmNoaWxkcmVuLmxlbmd0aCAtIDFcbiAgICAgIDogaXNGaXJzdFNsaWRlXG4gICAgICA/IDBcbiAgICAgIDogY3VycmVudFNsaWRlLnZhbHVlIC0gMTtcblxuICAgIHNjcm9sbFRvU2xpZGUocHJldmlvdXNTbGlkZSk7XG4gIH07XG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICB9KTtcblxuICBvblVwZGF0ZWQoKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgfSk7XG5cbiAgd2F0Y2goY3VycmVudFNsaWRlLCAoKSA9PiB7XG4gICAgZW1pdCgnY2hhbmdlJywgY3VycmVudFNsaWRlLnZhbHVlKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIlsndGlkZS1jYXJvdXNlbCcsIENTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICByZWY9XCJjYXJvdXNlbFJlZlwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLlNDUk9MTEJBUi5PRkYsIENTUy5TTkFQLk9OLCBDU1MuT1ZFUkZMT1cuWC5TQ1JPTExdXCJcbiAgICAgIHJlZj1cImZyYW1lUmVmXCJcbiAgICAgIEBzY3JvbGw9XCJoYW5kbGVTY3JvbGxcIlxuICAgID5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbcHJvcHMuaXNUb3VjaHNjcmVlbiA/IFtDU1MuT1ZFUkZMT1cuWC5BVVRPXSA6ICcnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuR0FQLk9ORSwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCJcbiAgICAgICAgcmVmPVwiY29udGVudFJlZlwiXG4gICAgICA+XG4gICAgICAgIDxsaVxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuU05BUF9BTElHTi5TVEFSVF1cIlxuICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGAke3Byb3BzLm9mZnNldFggLSBnYXB9cHhgIH1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5vZmZzZXRYXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c2xvdCAvPlxuXG4gICAgICAgIDxsaVxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuU05BUF9BTElHTi5TVEFSVF1cIlxuICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGAke3Byb3BzLm9mZnNldFggLSBnYXB9cHhgIH1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5vZmZzZXRYXCJcbiAgICAgICAgLz5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBdXCJcbiAgICAgIHYtaWY9XCJzaG93QnV0dG9uc1wiXG4gICAgPlxuICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICBAY2xpY2s9XCJzaG93UHJldmlvdXNTbGlkZVwiXG4gICAgICAvPlxuXG4gICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgQGNsaWNrPVwic2hvd05leHRTbGlkZVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25Nb3VudGVkLCBvbkJlZm9yZVVubW91bnQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGNkbj86IHN0cmluZztcbiAgICBpc0xhenk/OiBib29sZWFuO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICBzcmM/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhbHQ6ICcnLFxuICAgIGNkbjogdW5kZWZpbmVkLFxuICAgIGlzTGF6eTogdHJ1ZSxcbiAgICBvZmZzZXQ6IDAsXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHRpZGVJbWFnZSA9IHJlZigpO1xuXG4gIGNvbnN0IGltYWdlRGVmYXVsdCA9IGAke3Byb3BzLmNkbn0vaW1hZ2UtY29taW5nLXNvb24tNTEyLnBuZ2A7XG5cbiAgY29uc3QgbG9hZEltYWdlID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5zcmMpIHtcbiAgICAgIGNvbnN0IGltYWdlTG9hZGVyID0gbmV3IEltYWdlKCk7XG5cbiAgICAgIGltYWdlTG9hZGVyLm9ubG9hZCA9IHNldEltYWdlRnJvbVNyYztcbiAgICAgIGltYWdlTG9hZGVyLm9uZXJyb3IgPSBzZXRJbWFnZUZyb21EZWZhdWx0O1xuICAgICAgaW1hZ2VMb2FkZXIuc3JjID0gcHJvcHMuc3JjO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIHRpZGVJbWFnZS52YWx1ZS5zcmMgPSBpbWFnZURlZmF1bHQ7XG4gIH07XG5cbiAgY29uc3Qgc2V0SW1hZ2VGcm9tU3JjID0gKCkgPT4ge1xuICAgIHRpZGVJbWFnZS52YWx1ZS5zcmMgPSBwcm9wcy5zcmM7XG4gIH07XG5cbiAgZGVmaW5lRXhwb3NlKHRpZGVJbWFnZS52YWx1ZSk7XG5cbiAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMsIG9ic2VydmVyKSA9PiB7XG4gICAgZW50cmllcy5mb3JFYWNoKFxuICAgICAgKGVudHJ5KSA9PiB7XG4gICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIGxvYWRJbWFnZSgpO1xuICAgICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShlbnRyeS50YXJnZXQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICByb290TWFyZ2luOiBgJHtwcm9wcy5vZmZzZXR9cHhgLFxuICAgICAgfVxuICAgICk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzTGF6eSkge1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aWRlSW1hZ2UudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkSW1hZ2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgb2JzZXJ2ZXIudW5vYnNlcnZlKHRpZGVJbWFnZS52YWx1ZSk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGltZ1xuICAgIDphbHQ9XCJhbHRcIlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5PQkpFQ1QuQ0VOVEVSLCBDU1MuT0JKRUNULkNPVkVSXVwiXG4gICAgcmVmPVwidGlkZUltYWdlXCJcbiAgICA6c3JjPVwiaXNMYXp5ICYmIHNyYyA/IHNyYyA6IGltYWdlRGVmYXVsdFwiXG4gIC8+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgZ2V0Q3VycmVudEluc3RhbmNlLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICBjb25zdCB1bmlxdWVJZCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5pbnB1dElkID8gcHJvcHMuaW5wdXRJZCA6IGB0ZXh0LWlucHV0LSR7Z2V0Q3VycmVudEluc3RhbmNlKCk/LnVpZCB8fCAnJ31gKSk7XG5cbiAgd2F0Y2gocHJvcHMsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICBpZiAobmV3VmFsdWUuY2hlY2tlZCAhPT0gb2xkVmFsdWUuY2hlY2tlZCB8fCBuZXdWYWx1ZS5jaGVja2VkICE9PSBjaGVja2VkLnZhbHVlKSB7XG4gICAgICBjaGVja2VkLnZhbHVlID0gcHJvcHMuY2hlY2tlZDtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEYsIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCddXCI+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDppZD1cInVuaXF1ZUlkXCJcbiAgICAgIG5hbWU9XCJcIlxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHZhbHVlPVwiXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1yYWRpby1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGNoZWNrZWQgPyBDU1MuQk9SREVSLkNPTE9SLkhJR0ggOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRFwiXG4gICAgICA6Zm9yPVwidW5pcXVlSWRcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICAgIGhlaWdodDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMXJlbTtcbiAgICBoZWlnaHQ6IDFyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmltcG9ydCB0eXBlIHsgUmFuZ2VEYXRhIH0gZnJvbSAnQC90eXBlcy9GYWNldFJhbmdlJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBTdHJpbmdJbnB1dCB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuaW1wb3J0IHsgcHJpY2VUb051bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlLic7XG5cbmV4cG9ydCBjb25zdCBub0Vycm9yID0ge1xuICBtZXNzYWdlOiAnJyxcbiAgdmFsaWQ6IHRydWUsXG59IGFzIFJlYWRvbmx5PFZhbGlkYXRpb25SZXN1bHQ+O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHApID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IG5vRXJyb3I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKHR5cGVvZiBlcnJvckZyb21Qcm9wcyA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUHJvcHMubGVuZ3RoID4gMCkgcmV0dXJuIGVycm9yRnJvbVByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgZXJyb3JGcm9tUmVmID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21SZWYubGVuZ3RoID4gMCA/IGVycm9yRnJvbVJlZiA6IGVycm9yTWVzc2FnZURlZmF1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRIYXNFcnJvciA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT5cbiAgZXJyb3JGcm9tUHJvcHMgIT09IGZhbHNlIHx8IGVycm9yRnJvbVJlZiAhPT0gZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCB0b29TaG9ydCA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IHRvb0xvbmcgPSBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhdG9vU2hvcnQgJiYgIXRvb0xvbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWF4UmFuZ2VJc1ZhbGlkID0gKHsgbWluIH06IFBpY2s8UmFuZ2VEYXRhLCAnbWluJz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNYXg6IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01heCA9ICFpc05hTihuZXdNYXgpID8gbmV3TWF4IDogbnVsbDtcbiAgICBpZiAobWluICYmIG5ld01heCkge1xuICAgICAgaWYgKG5ld01heCA+PSBtaW4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWluUmFuZ2VJc1ZhbGlkID0gKHsgbWF4IH06IFBpY2s8UmFuZ2VEYXRhLCAnbWF4Jz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNaW46IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01pbiA9ICFpc05hTihuZXdNaW4pID8gbmV3TWluIDogbnVsbDtcbiAgICBpZiAobWF4ICYmIG5ld01pbikge1xuICAgICAgaWYgKG5ld01pbiA8PSBtYXgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgbGVzcyB0aGFuIG1heGAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0T3B0aW9uc0Zyb21TdHJpbmdzID0gKHN0cmluZ3M6IHN0cmluZ1tdKSA9PlxuICBzdHJpbmdzLm1hcChcbiAgICAob3B0aW9uKSA9PlxuICAgICAgKHtcbiAgICAgICAgbGFiZWw6IG9wdGlvbixcbiAgICAgICAgdmFsdWU6IG9wdGlvbixcbiAgICAgIH0gYXMgU2VsZWN0T3B0aW9uKVxuICApO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlRmllbGRWYWxpZGF0aW9uID0gKHtcbiAgZXJyb3IsXG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yOiBSZWY8VmFsaWRhdGlvbkVycm9yPjtcbiAgZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvcjtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU6IFJlZjxzdHJpbmc+O1xufSkgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuXG4gIGVycm9yLnZhbHVlID0gZXJyb3JGcm9tUHJvcHMgPyBlcnJvckZyb21Qcm9wcyA6IGZhbHNlO1xuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlLnZhbHVlLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkpIHtcbiAgICBjb25zdCBsZW5ndGh2YWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGh2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGxlbmd0aHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkc0Zyb21SZWZzKGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBSZWY8U3RyaW5nSW5wdXQgfCBudWxsPiB9KSB7XG4gIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzKSB7XG4gICAgaWYgKGZpZWxkc1trZXldLnZhbHVlPy5yZXF1aXJlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XS52YWx1ZT8udmFsdWU7XG4gICAgICB2YWxpZCA9IHZhbGlkICYmICEhdmFsdWUgJiYgdmFsdWUudHJpbSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpZWxkc1trZXldLnZhbHVlPy5lcnJvcjtcbiAgICB2YWxpZCA9IHZhbGlkICYmICFlcnJvcjtcbiAgfVxuXG4gIHJldHVybiB2YWxpZDtcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7bWlubGVuZ3RofSBhbmQgJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBtb3JlIHRoYW4gJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBsZXNzIHRoYW4gJHttaW5sZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGdldEN1cnJlbnRJbnN0YW5jZSwgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0RmllbGQgfSBmcm9tICdAL3R5cGVzL0ZpZWxkJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBnZXRGaWVsZEhhc0Vycm9yLCBnZXRFcnJvck1lc3NhZ2UgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBTZWxlY3RGaWVsZCB7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCByZXF1aXJlZCA9IHJlZihwcm9wcy5yZXF1aXJlZCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycpO1xuXG4gIGNvbnN0IHVuaXF1ZUlkID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmlucHV0SWQgPyBwcm9wcy5pbnB1dElkIDogYHRleHQtaW5wdXQtJHtnZXRDdXJyZW50SW5zdGFuY2UoKT8udWlkIHx8ICcnfWApKTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIGlucHV0Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgd2F0Y2gocHJvcHMsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICBpZiAobmV3VmFsdWUudmFsdWUgIT09IG9sZFZhbHVlLnZhbHVlIHx8IG5ld1ZhbHVlLnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSBwcm9wcy52YWx1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5TSVpFLlRXRUxWRV0gOiBDU1MuRk9OVC5TSVpFLlNJWFRFRU4sXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVF8wLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6Zm9yPVwidW5pcXVlSWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsIENTUy5QQURESU5HLlguT05FLCBDU1MuV0lEVEguRlVMTCwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJ1bmlxdWVJZFwiXG4gICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFRfMCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTUFSR0lOLkxFRlQuT05FXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5TSVpFLlRXRUxWRSwgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRF1cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itb24tc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Igb3B0aW9uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6IDI3cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVEVYVF9JTlBVVF9UWVBFID0ge1xuICBEQVRFOiAnZGF0ZScsXG4gIERBVEVUSU1FX0xPQ0FMOiAnZGF0ZXRpbWUtbG9jYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTU9OVEg6ICdtb250aCcsXG4gIE5VTUJFUjogJ251bWJlcicsXG4gIFBBU1NXT1JEOiAncGFzc3dvcmQnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFRJTUU6ICd0aW1lJyxcbiAgVVJMOiAndXJsJyxcbiAgV0VFSzogJ3dlZWsnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGV4dElucHV0VHlwZSA9ICh0eXBlb2YgVEVYVF9JTlBVVF9UWVBFKVtrZXlvZiB0eXBlb2YgVEVYVF9JTlBVVF9UWVBFXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBnZXRDdXJyZW50SW5zdGFuY2UsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiAnJyxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgcHJvcHMubGFiZWwgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNDbGVhciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmhhc0NsZWFyICYmIHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCB0eXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG4gIGNvbnN0IHVuaXF1ZUlkID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmlucHV0SWQgPyBwcm9wcy5pbnB1dElkIDogYHRleHQtaW5wdXQtJHtnZXRDdXJyZW50SW5zdGFuY2UoKT8udWlkIHx8ICcnfWApKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGhhbmRsZVZhbGlkYXRpb24oKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dCA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMudHJhbnNmb3JtVmFsdWUpIHtcbiAgICAgIGNvbnN0IGRpZ2l0cyA9IHZhbHVlLnZhbHVlLm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcblxuICAgICAgdmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVWYWx1ZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICBwcm9wcyxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUudmFsdWUgIT09IG9sZFZhbHVlLnZhbHVlIHx8IG5ld1ZhbHVlLnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IHByb3BzLnZhbHVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2UoeyBlcnJvciwgdXBkYXRlVmFsdWUsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXRleHQnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIGhhc0NsZWFyID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCddXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMucHJlZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnByZWZpeCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICAgICAgQGNsaWNrLnByZXZlbnQ9XCJpbnB1dD8uZm9jdXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5TSVpFLlRXRUxWRV0gOiBDU1MuRk9OVC5TSVpFLlNJWFRFRU4sXG4gICAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgOmZvcj1cInVuaXF1ZUlkXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF1cIlxuICAgICAgICAgICAgOmRhdGEtdHJhY2s9XCJwcm9wcy5kYXRhVHJhY2tcIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cInByb3BzLm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwicHJvcHMubWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJwcm9wcy5yZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cInR5cGVcIlxuICAgICAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgQGlucHV0PVwiaGFuZGxlSW5wdXRcIlxuICAgICAgICAgICAgOmlkPVwidW5pcXVlSWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHQtc3VmZml4JywgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCwgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0J11cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuUEFERElORy5GVUxMLkhBTEYsIENTUy5DVVJTT1IuUE9JTlRFUl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHYtaWY9XCJoYXNDbGVhciAmJiBwcm9wcy50eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgLz5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5ZLkhBTEYsIENTUy5QQURESU5HLkZVTEwuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3N3b3JkID0gIXNob3dQYXNzd29yZFwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5NQVJHSU4uTEVGVC5PTkVdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlNJWkUuVFdFTFZFLCBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVEXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgZ2V0Q3VycmVudEluc3RhbmNlLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRhdGFUcmFjaz86IHN0cmluZztcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRhdGFUcmFjazogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiAnJyxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKSk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHVuaXF1ZUlkID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmlucHV0SWQgPyBwcm9wcy5pbnB1dElkIDogYHRleHQtaW5wdXQtJHtnZXRDdXJyZW50SW5zdGFuY2UoKT8udWlkIHx8ICcnfWApKTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2gocHJvcHMsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICBpZiAobmV3VmFsdWUudmFsdWUgIT09IG9sZFZhbHVlLnZhbHVlIHx8IG5ld1ZhbHVlLnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSBwcm9wcy52YWx1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIGhhc0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGxhYmVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlNJWkUuVFdFTFZFXSA6IENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsXG4gICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICBdXCJcbiAgICAgICAgOmZvcj1cInVuaXF1ZUlkXCJcbiAgICAgICAgcmVmPVwibGFiZWxcIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gICAgICAgIDptYXhsZW5ndGg9XCJwcm9wcy5tYXhsZW5ndGhcIlxuICAgICAgICA6bWlubGVuZ3RoPVwicHJvcHMubWlubGVuZ3RoXCJcbiAgICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJwcm9wcy5yZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicHJvcHMucm93c1wiXG4gICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cInVuaXF1ZUlkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTUFSR0lOLkxFRlQuT05FXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuU0laRS5UV0VMVkUsIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRURdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG48L3N0eWxlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGljb25UcmFpbGluZz86IEljb247XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGhhc0ljb24gPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5pY29uTGVhZGluZyB8fCBwcm9wcy5pY29uVHJhaWxpbmcpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/ICd0aWRlLWJ1dHRvbi1hcy1saW5rJyA6ICd0aWRlLWxpbmsnLFxuICAgICAgaGFzSWNvblxuICAgICAgICA/IFtDU1MuRElTUExBWS5JTkxJTkVfRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGXVxuICAgICAgICA6IFtDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCwgQ1NTLlVOREVSTElORS5PTl0sXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOmlzPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gRUxFTUVOVC5MSU5LIDogRUxFTUVOVC5CVVRUT05cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCwgQ1NTLlVOREVSTElORS5PTl1cIlxuICAgICAgdi1pZj1cImhhc0ljb25cIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9kaXY+XG5cbiAgICA8dGVtcGxhdGUgdi1lbHNlPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIHJlZiwgd2F0Y2gsIHR5cGUgQ1NTUHJvcGVydGllcyB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIC8vIFRPRE86IHJlcGxhY2UgYm9keSBzY3JvbGwgbG9jayB3aXRoIGEgZ2xvYmFsIG1peGluXG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgbW9kYWxTdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gICAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2xvc2UnXSk7XG5cbiAgY29uc3QgaXNPcGVuID0gcmVmKHByb3BzLmlzT3Blbik7XG4gIGNvbnN0IHNhdmVkU2Nyb2xsUG9zaXRpb24gPSByZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG5cbiAgICB1cGRhdGVNb2RhbERpc3BsYXkoKTtcbiAgICBlbWl0KCdjbG9zZScsIGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVNb2RhbERpc3BsYXkgPSAoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSAmJiB3aW5kb3cuc2Nyb2xsVG8oMCwgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSk7XG5cbiAgICAgIGFkZE9wZW5MaXN0ZW5lcnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICcnO1xuXG4gICAgICByZW1vdmVPcGVuTGlzdGVuZXJzKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBoYW5kbGVDbG9zZShldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZE9wZW5MaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVPcGVuTGlzdGVuZXJzID0gKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bik7XG4gIH07XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICB1cGRhdGVNb2RhbERpc3BsYXkoKTtcbiAgfSk7XG5cbiAgd2F0Y2gocHJvcHMsIChuZXdWYWx1ZSkgPT4ge1xuICAgIGlzT3Blbi52YWx1ZSA9IG5ld1ZhbHVlLmlzT3BlbjtcblxuICAgIHVwZGF0ZU1vZGFsRGlzcGxheSgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCB0bz1cImJvZHlcIj5cbiAgICA8VHJhbnNpdGlvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLXdyYXBwZXInLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuVE9QXzAsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlRfMCxcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgICB2LXNob3c9XCJpc09wZW5cIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsLWJnJywgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuV0lEVEguRlVMTCwgQ1NTLkhFSUdIVC5GVUxMXVwiXG4gICAgICAgICAgOnN0eWxlPVwieyAnLS10aWRlLW1vZGFsLXdpZHRoJzogcHJvcHMud2lkdGgsIC4uLnN0eWxlIH1cIlxuICAgICAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQ2xvc2VcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtbW9kYWwnLFxuICAgICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuRkxPQVRJTkcsXG4gICAgICAgICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpzdHlsZT1cInsgLi4ubW9kYWxTdHlsZSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgIDpjbGFzcz1cIlsnbW9kYWwtaGVhZGVyJywgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuUEFERElORy5YLlRXT11cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT04sIENTUy5GT05ULlNJWkUuVFdFTlRZLCBDU1MuQUxJR04uWC5DRU5URVIsIENTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVEXVwiXG4gICAgICAgICAgICAgIHYtaWY9XCJ0aXRsZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFRfMCwgQ1NTLk1BUkdJTi5SSUdIVC5UV09dXCJcbiAgICAgICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xvc2VcIlxuICAgICAgICAgICAgICB0aXRsZT1cIkNsb3NlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5DTE9TRVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgIDxkaXYgOmNsYXNzPVwiWydtb2RlbC1jb250ZW50JywgQ1NTLk9WRVJGTE9XLlkuQVVUT11cIj5cbiAgICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIiRzbG90cy5mb290ZXJcIj5cbiAgICAgICAgICAgIDxmb290ZXJcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgICAgICAgICAgIENTUy5QT1NJVElPTi5TVElDS1ksXG4gICAgICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlRfMCxcbiAgICAgICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NXzAsXG4gICAgICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgICAgICBDU1MuQVhJUzEuRU5ELFxuICAgICAgICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgICAgICAgIENTUy5QQURESU5HLlguVFdPLFxuICAgICAgICAgICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIiAvPlxuICAgICAgICAgICAgPC9mb290ZXI+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L1RyYW5zaXRpb24+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG4gIC50aWRlLW1vZGFsLWJnIHtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZHJvcC1maWx0ZXIgMC4zcyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG4gIH1cblxuICAudGlkZS1tb2RhbCB7XG4gICAgd2lkdGg6IHZhcigtLXRpZGUtbW9kYWwtd2lkdGgpO1xuICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMnJlbSk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMnJlbSk7XG4gICAgYm94LXNoYWRvdzogMHB4IDEwcHggMjVweCAwcHggcmdiYSgxOCwgNDMsIDU4LCAwLjIpO1xuICAgIGFuaW1hdGlvbjogbW9kYWxPcGVuIDMwMG1zIGVhc2U7XG4gIH1cblxuICAubW9kYWwtaGVhZGVyIHtcbiAgICBtaW4taGVpZ2h0OiA1cmVtO1xuICB9XG5cbiAgLm1vZGFsLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAycmVtIDFmciAycmVtO1xuXG4gICAgJjpkZWVwKD4gKikge1xuICAgICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgfVxuICB9XG5cbiAgLnYtZW50ZXItZnJvbSxcbiAgLnYtbGVhdmUtdG8ge1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7XG5cbiAgICAmIC50aWRlLW1vZGFsIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDB2aCk7XG4gICAgfVxuICB9XG5cbiAgLnYtZW50ZXItYWN0aXZlLFxuICAudi1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IGJhY2tkcm9wLWZpbHRlciB2YXIoLS10aWRlLWFuaW1hdGUpLCBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG5cbiAgICAmIC50aWRlLW1vZGFsIHtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIH1cbiAgfVxuXG4gIC52LWVudGVyLXRvLFxuICAudi1sZWF2ZS1mcm9tIHtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG5cbiAgICAmIC50aWRlLW1vZGFsIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlQnV0dG9uUGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvblBhZ2luYXRpb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIHBhZ2VDdXJyZW50PzogbnVtYmVyO1xuICAgIHBhZ2VUb3RhbD86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHBhZ2VDdXJyZW50OiAxLFxuICAgIHBhZ2VUb3RhbDogMSxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IHBhZ2VDdXJyZW50ID0gcmVmKHByb3BzLnBhZ2VDdXJyZW50KTtcblxuICBjb25zdCBwYWdpbmF0aW9uQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IG5ldyBBcnJheShwcm9wcy5wYWdlVG90YWwpLmZpbGwoJycpLm1hcCgoZW1wdHksIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBwYWdlQ3VycmVudC52YWx1ZSA9IGluZGV4O1xuXG4gICAgZW1pdCgnY2hhbmdlJywgZXZlbnQsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLXBhZ2luYXRpb24nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiXG4gID5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSAxXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCIoZXZlbnQ6IEV2ZW50KSA9PiBoYW5kbGVDbGljayhldmVudCwgcGFnZUN1cnJlbnQgLSAxKVwiXG4gICAgLz5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaVxuICAgICAgICA6a2V5PVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgIHYtZm9yPVwicGFnaW5hdGlvbkJ1dHRvbiBpbiBwYWdpbmF0aW9uQnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uUGFnaW5hdGlvblxuICAgICAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSBwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6bGFiZWw9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCIoZXZlbnQ6IEV2ZW50KSA9PiBoYW5kbGVDbGljayhldmVudCwgcGFnaW5hdGlvbkJ1dHRvbilcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvbnNbcGFnaW5hdGlvbkJ1dHRvbnMubGVuZ3RoIC0gMV1cIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCIoZXZlbnQ6IEV2ZW50KSA9PiBoYW5kbGVDbGljayhldmVudCwgcGFnZUN1cnJlbnQgKyAxKVwiXG4gICAgLz5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhY3RpdmVUYWJJbml0aWFsPzogbnVtYmVyO1xuICAgIHRhYnM6IFRhYltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWN0aXZlVGFiSW5pdGlhbDogMCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGFjdGl2ZVRhYiA9IHJlZihwcm9wcy5hY3RpdmVUYWJJbml0aWFsKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBhY3RpdmVUYWIudmFsdWUgPSBpbmRleDtcblxuICAgIGVtaXQoJ2NoYW5nZScsIGV2ZW50LCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtdGFicycsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgXVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLXRhYnMtdGFiJyxcbiAgICAgICAgaW5kZXggPT09IGFjdGl2ZVRhYlxuICAgICAgICAgID8gW0NTUy5CRy5TVVJGQUNFLkRFRkFVTFQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLlNIQURPVy5CT1RUT01dXG4gICAgICAgICAgOiBbJ2luYWN0aXZlJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELFxuICAgICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICAgIF1cIlxuICAgICAgOmRhdGEtdHJhY2s9XCJ0YWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgIEBjbGljaz1cIihldmVudDogRXZlbnQpID0+IGhhbmRsZUNsaWNrKGV2ZW50LCBpbmRleClcIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gcHJvcHMudGFic1wiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULldFSUdIVC5TSVhfSFVORFJFRF1cIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVEXVwiXG4gICAgICAgIHYtaWY9XCJ0YWIuY291bnQgJiYgdGFiLmNvdW50ID4gMFwiXG4gICAgICA+XG4gICAgICAgICh7eyB0YWIuY291bnQgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtdGFicyB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICB9XG5cbiAgLnRpZGUtdGFicy10YWIge1xuICAgIGZsZXg6IDE7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLmluYWN0aXZlOm5vdCg6aG92ZXIpIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAuaW5hY3RpdmU6aG92ZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICAgIGRpc2FibGVkOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBpc0FjdGl2ZToge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IHJlZihwcm9wcy5pc0FjdGl2ZSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG5cbiAgICAgIGVtaXQoJ2NoYW5nZScsIGV2ZW50LCBpc0FjdGl2ZS52YWx1ZSk7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXRvZ2dsZScsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU0VDT05EQVJZIDogQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJUb2dnbGVcIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS10b2dnbGUtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnYWN0aXZlJyA6ICcnLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgXVwiXG4gICAgLz5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS10b2dnbGUge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS10b2dnbGU6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuMzI7XG4gIH1cblxuICAudGlkZS10b2dnbGUtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiA0cHg7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHRyYW5zaXRpb246IGxlZnQgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC5hY3RpdmUge1xuICAgIGxlZnQ6IDM2cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgUkVBTE0gPSB7XG4gIEFFUk86ICdhZXJvJyxcbiAgQVRWOiAnYXR2JyxcbiAgQk9BVE1BUlQ6ICdib2F0bWFydCcsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBFUVVJUDogJ2VxdWlwJyxcbiAgUFdDOiAncHdjJyxcbiAgUlY6ICdydicsXG4gIFNOT1c6ICdzbm93JyxcbiAgVFJVQ0s6ICd0cnVjaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW2tleW9mIHR5cGVvZiBSRUFMTV07XG4iXSwibmFtZXMiOlsiQ1NTIiwiU0laRSIsImZvcm1hdFBhc2NhbENhc2UiLCJpbnB1dCIsIndvcmQiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwicHJvcHMiLCJpZCIsIm5hbWUiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJJQ09OIiwiaXNFeHBhbmRlZCIsImFjY29yZGlvbkJvZHkiLCJ0b2dnbGVJc0V4cGFuZGVkIiwiZWxlbWVudCIsIm9uTW91bnRlZCIsIkVMRU1FTlQiLCJFTEVNRU5UX1RFWFRfQVNfSUNPTiIsIlBSSU9SSVRZIiwiVEFSR0VUIiwiQUxFUlQiLCJpY29uIiwiY29tcHV0ZWQiLCJCQURHRSIsIkJBREdFX1BSRU1JVU0iLCJCQURHRV9UUlVTVEVEIiwiZ2FwIiwiY29udGVudFdpZHRoIiwiZnJhbWVXaWR0aCIsImhhc092ZXJmbG93IiwibGFzdFBvc2l0aW9uIiwiY29udGVudFJlZiIsImZyYW1lUmVmIiwic2hvd0J1dHRvbnMiLCJjdXJyZW50U2xpZGUiLCJtZWFzdXJlQ3VycmVudFNsaWRlIiwic2xpZGVPZmZzZXRzIiwic2xpZGUiLCJjbG9zZXN0U2xpZGVPZmZzZXQiLCJwcmV2IiwiY3VyciIsIm1lYXN1cmVEb20iLCJoYW5kbGVTY3JvbGwiLCJzY3JvbGxUb1NsaWRlIiwic2xpZGVJbmRleCIsInNob3dOZXh0U2xpZGUiLCJjb250ZW50UmlnaHRFZGdlIiwiaXNGaXJzdFNsaWRlV2l0aE9mZnNldCIsIm5leHRTbGlkZSIsInNob3dQcmV2aW91c1NsaWRlIiwiZmlyc3RTbGlkZSIsImlzRmlyc3RTbGlkZSIsInByZXZpb3VzU2xpZGUiLCJvblVubW91bnRlZCIsIm9uVXBkYXRlZCIsImVtaXQiLCJ0aWRlSW1hZ2UiLCJpbWFnZURlZmF1bHQiLCJsb2FkSW1hZ2UiLCJpbWFnZUxvYWRlciIsInNldEltYWdlRnJvbVNyYyIsInNldEltYWdlRnJvbURlZmF1bHQiLCJfX2V4cG9zZSIsIm9ic2VydmVyIiwiZW50cmllcyIsImVudHJ5Iiwib25CZWZvcmVVbm1vdW50IiwiY2hlY2tlZCIsInVuaXF1ZUlkIiwiX2EiLCJnZXRDdXJyZW50SW5zdGFuY2UiLCJuZXdWYWx1ZSIsIm9sZFZhbHVlIiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVByb3BzIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImdldEZpZWxkTGVuZ3RoSXNWYWxpZCIsIm1heGxlbmd0aCIsIm1pbmxlbmd0aCIsInZhbHVlIiwidG9vU2hvcnQiLCJ0b29Mb25nIiwiaGFuZGxlRmllbGRWYWxpZGF0aW9uIiwiZXJyb3IiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGh2YWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsImhhc0ZvY3VzIiwicmVxdWlyZWQiLCJlcnJvck1lc3NhZ2UiLCJmb3JtYXR0ZWRMYWJlbCIsImhhc0Vycm9yIiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJldmVudCIsImhhbmRsZUZvY3VzIiwiaGFuZGxlRm9jdXNPdXQiLCJURVhUX0lOUFVUX1RZUEUiLCJzaG93UGFzc3dvcmQiLCJoYXNDbGVhciIsInR5cGUiLCJoYW5kbGVDbGVhciIsImhhbmRsZVZhbGlkYXRpb24iLCJoYW5kbGVJbnB1dCIsImRpZ2l0cyIsInVwZGF0ZVZhbHVlIiwiaGFzSWNvbiIsImlzT3BlbiIsInNhdmVkU2Nyb2xsUG9zaXRpb24iLCJoYW5kbGVDbG9zZSIsInVwZGF0ZU1vZGFsRGlzcGxheSIsImFkZE9wZW5MaXN0ZW5lcnMiLCJyZW1vdmVPcGVuTGlzdGVuZXJzIiwiaGFuZGxlS2V5RG93biIsInBhZ2VDdXJyZW50IiwicGFnaW5hdGlvbkJ1dHRvbnMiLCJlbXB0eSIsImluZGV4IiwiaGFuZGxlQ2xpY2siLCJhY3RpdmVUYWIiLCJpc0FjdGl2ZSIsIlJFQUxNIl0sIm1hcHBpbmdzIjoiO0FBQU8sTUFBTUEsSUFBTTtBQUFBLEVBQ2pCLE9BQU87QUFBQSxJQUNMLEdBQUc7QUFBQSxNQUNELFFBQVE7QUFBQSxNQUNSLE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsSUFDVjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULFFBQVE7QUFBQSxJQUNSLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxPQUFPO0FBQUEsSUFDTCxRQUFRO0FB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QSxLQUFLO0FBQUEsSUFDSCxNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixLQUFLO0FBQUEsSUFDTCxTQUFTO0FBQUEsSUFDVCxLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sTUFBTTtBQUFBLEVBQ1I7QUFBQSxFQUNBLGNBQWM7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixRQUFRO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsS0FBSztBQUFBLE1BQ0gsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxFQUNkO0FBQUEsRUFDQSxVQUFVO0FBQUEsSUFDUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsSUFDVjtBQUFBLElBQ0EsSUFBSTtBQUFBLE1BQ0YsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLElBQ1Y7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUNWO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsUUFBUTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFD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QSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxNQUNmQSxFQUFJLE9BQU8sSUFBSSxTQUNmQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxNQUNmQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sRUFBRSxTQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxNQUFNLFNBQ2pCQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxNQUFNLE1BQ2pCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxPQUFPLFNBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssU0FDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssTUFDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLE1BQU0sS0FDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxPQUFPLE1BQ2xCQSxFQUFJLE9BQU8sT0FBTyxTQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxNQUNqQkEsRUFBSSxRQUFRLEtBQUssU0FDakJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxNQUNqQkEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsTUFDZEEsRUFBSSxRQUFRLEVBQUUsU0FDZEEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsTUFDZEEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLE1BQ2hCQSxFQUFJLFFBQVEsSUFBSSxTQUNoQkEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLE1BQ2hCQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsRUFBRSxTQUNkQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sTUFDbEJBLEVBQUksUUFBUSxNQUFNLFNBQ2xCQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sTUFDbEJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxNQUNuQkEsRUFBSSxRQUFRLE9BQU8sU0FDbkJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxNQUNuQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLFFBQVEsS0FBSyxTQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLE1BQU0sVUFDVkEsRUFBSSxNQUFNLE1BQ1ZBLEVBQUksT0FBTyxNQUNYQSxFQUFJLE1BQU0sRUFBRSxRQUNaQSxFQUFJLFlBQ0pBLEVBQUksT0FBTyxhQUNYQSxFQUFJLE9BQU8sU0FDWEEsRUFBSSxLQUFLLEtBQUss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QSxHQUFBLDZDQUFBLE1BQUEsT0FBQSxpQ0FBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLDhDQUFBLE1BQUEsT0FBQSxrQ0FBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLDRDQUFBLE1BQUEsT0FBQSxnQ0FBQSxHQUFBLGtEQUFBLE1BQUEsT0FBQSxzQ0FBQSxHQUFBLHFDQUFBLE1BQUEsT0FBQSx5QkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLDZDQUFBLE1BQUEsT0FBQSxpQ0FBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLDZDQUFBLE1BQUEsT0FBQSxpQ0FBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHVDQUFBLE1BQUEsT0FBQSwyQkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLDJDQUFBLE1BQUEsT0FBQSwrQkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHND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