@pipeline-builder/api-core 5.2.6 → 5.2.8

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 (189) hide show
  1. package/lib/constants/ai-providers.js +1 -1
  2. package/lib/constants/http-status.js +1 -1
  3. package/lib/constants/index.js +1 -1
  4. package/lib/constants/time.js +1 -1
  5. package/lib/errors/app-errors.js +1 -1
  6. package/lib/errors/index.js +1 -1
  7. package/lib/helpers/access-helpers.d.ts +19 -0
  8. package/lib/helpers/access-helpers.js +24 -4
  9. package/lib/helpers/content-disposition.js +1 -1
  10. package/lib/helpers/crud-helpers.js +1 -1
  11. package/lib/helpers/index.d.ts +1 -1
  12. package/lib/helpers/index.js +2 -2
  13. package/lib/helpers/org-hierarchy-http.js +1 -1
  14. package/lib/helpers/org-hierarchy.js +1 -1
  15. package/lib/helpers/restore-helpers.js +1 -1
  16. package/lib/helpers/sse-helpers.js +13 -2
  17. package/lib/helpers/support-calendar.js +1 -1
  18. package/lib/index.js +1 -1
  19. package/lib/middleware/ask-provenance.js +1 -1
  20. package/lib/middleware/assurance.js +1 -1
  21. package/lib/middleware/auth.js +3 -2
  22. package/lib/middleware/client-version.d.ts +45 -0
  23. package/lib/middleware/client-version.js +97 -0
  24. package/lib/middleware/deferred-quota-check.js +1 -1
  25. package/lib/middleware/ecosystem-guard.js +1 -1
  26. package/lib/middleware/index.d.ts +1 -0
  27. package/lib/middleware/index.js +2 -1
  28. package/lib/middleware/jwt-verify.js +1 -1
  29. package/lib/middleware/mongo-sanitize.js +1 -1
  30. package/lib/middleware/on-behalf.js +1 -1
  31. package/lib/middleware/permission-gates.js +1 -1
  32. package/lib/middleware/quota-exempt-routes.js +1 -1
  33. package/lib/middleware/revocation.js +1 -1
  34. package/lib/middleware/route-table.js +16 -1
  35. package/lib/middleware/service-tokens.js +1 -1
  36. package/lib/middleware/step-up.js +1 -1
  37. package/lib/middleware/system-org.d.ts +18 -5
  38. package/lib/middleware/system-org.js +19 -6
  39. package/lib/openapi/extend-zod.js +1 -1
  40. package/lib/openapi/index.js +1 -1
  41. package/lib/openapi/registry.js +1 -1
  42. package/lib/openapi/routes/ask-routes.js +1 -1
  43. package/lib/openapi/routes/billing-routes.js +1 -1
  44. package/lib/openapi/routes/image-registry-routes.js +1 -1
  45. package/lib/openapi/routes/index.js +1 -1
  46. package/lib/openapi/routes/message-routes.js +1 -1
  47. package/lib/openapi/routes/pipeline-routes.js +1 -1
  48. package/lib/openapi/routes/pipeline-template-routes.js +1 -1
  49. package/lib/openapi/routes/plugin-routes.js +1 -1
  50. package/lib/openapi/routes/quota-routes.js +1 -1
  51. package/lib/openapi/schema-registry.js +1 -1
  52. package/lib/routes/health.js +1 -1
  53. package/lib/routes/index.js +1 -1
  54. package/lib/services/ai-call-weight.js +1 -1
  55. package/lib/services/alert-delivery.js +1 -1
  56. package/lib/services/api-key-exchange.d.ts +4 -2
  57. package/lib/services/api-key-exchange.js +15 -8
  58. package/lib/services/audit-context.d.ts +3 -0
  59. package/lib/services/audit-context.js +2 -1
  60. package/lib/services/audit-spool.js +1 -1
  61. package/lib/services/cache-service.js +1 -1
  62. package/lib/services/circuit-breaker.js +1 -1
  63. package/lib/services/compliance-client.js +1 -1
  64. package/lib/services/compliance-event-subscriber.js +1 -1
  65. package/lib/services/durable-event-bus.js +1 -1
  66. package/lib/services/ecosystem-notify-client.d.ts +7 -1
  67. package/lib/services/ecosystem-notify-client.js +9 -3
  68. package/lib/services/entity-events.js +1 -1
  69. package/lib/services/env-redis.js +1 -1
  70. package/lib/services/http-client.js +19 -3
  71. package/lib/services/index.d.ts +1 -1
  72. package/lib/services/index.js +2 -2
  73. package/lib/services/jwks-cache.js +1 -1
  74. package/lib/services/leader-lock.js +1 -1
  75. package/lib/services/notification-channels.js +1 -1
  76. package/lib/services/org-ai-client.js +1 -1
  77. package/lib/services/pagerduty-inbound.js +1 -1
  78. package/lib/services/pagerduty.js +1 -1
  79. package/lib/services/quota-increment-batcher.js +1 -1
  80. package/lib/services/quota.js +1 -1
  81. package/lib/services/remote-audit-client.js +1 -1
  82. package/lib/services/retry-forever.js +1 -1
  83. package/lib/services/retry-strategy.js +1 -1
  84. package/lib/services/s3-client.js +1 -1
  85. package/lib/services/scheduler.js +1 -1
  86. package/lib/services/service-boot.js +1 -1
  87. package/lib/services/service-keys.js +2 -2
  88. package/lib/services/sse-ticket-store.js +1 -1
  89. package/lib/services/system-notification.js +1 -1
  90. package/lib/services/token-revocation.js +1 -1
  91. package/lib/services/version-vuln-policy.d.ts +11 -0
  92. package/lib/services/version-vuln-policy.js +33 -7
  93. package/lib/types/ai-catalog.js +1 -1
  94. package/lib/types/ask-proposals.d.ts +23 -0
  95. package/lib/types/ask-proposals.js +29 -1
  96. package/lib/types/audit-events.js +1 -1
  97. package/lib/types/build-catalog.d.ts +65 -0
  98. package/lib/types/build-catalog.js +95 -1
  99. package/lib/types/catalog-metadata.js +1 -1
  100. package/lib/types/common.js +1 -1
  101. package/lib/types/compliance-exemption.js +1 -1
  102. package/lib/types/ecosystem-notifications.d.ts +9 -0
  103. package/lib/types/ecosystem-notifications.js +15 -6
  104. package/lib/types/ecosystem.d.ts +1 -6
  105. package/lib/types/ecosystem.js +18 -5
  106. package/lib/types/error-codes.d.ts +3 -0
  107. package/lib/types/error-codes.js +6 -1
  108. package/lib/types/feature-flags.d.ts +17 -1
  109. package/lib/types/feature-flags.js +1 -1
  110. package/lib/types/http.js +1 -1
  111. package/lib/types/index.d.ts +3 -3
  112. package/lib/types/index.js +4 -4
  113. package/lib/types/metadata-keys.js +1 -1
  114. package/lib/types/permissions.d.ts +60 -13
  115. package/lib/types/permissions.js +63 -14
  116. package/lib/types/pipeline-template.js +1 -1
  117. package/lib/types/pipeline.js +1 -1
  118. package/lib/types/plugin-catalog.js +1 -1
  119. package/lib/types/plugin-health.js +1 -1
  120. package/lib/types/plugin-scan.d.ts +69 -0
  121. package/lib/types/plugin-scan.js +77 -1
  122. package/lib/types/quota-catalog.js +15 -2
  123. package/lib/types/quota-tiers.d.ts +27 -160
  124. package/lib/types/quota-tiers.js +47 -255
  125. package/lib/types/remote-audit-actions.d.ts +1 -1
  126. package/lib/types/remote-audit-actions.js +9 -1
  127. package/lib/types/reserved-tags.js +1 -1
  128. package/lib/types/tier-limits.d.ts +210 -0
  129. package/lib/types/tier-limits.js +254 -0
  130. package/lib/types/usage-projection.js +1 -1
  131. package/lib/types/visibility.js +1 -1
  132. package/lib/types/wire-vocabulary.d.ts +7 -0
  133. package/lib/types/wire-vocabulary.js +7 -1
  134. package/lib/utils/alias-resolver.js +1 -1
  135. package/lib/utils/api-key.js +1 -1
  136. package/lib/utils/audit.js +1 -1
  137. package/lib/utils/aws-scrub.js +1 -1
  138. package/lib/utils/compliance-attributes.js +1 -1
  139. package/lib/utils/concurrency-gate.d.ts +98 -0
  140. package/lib/utils/concurrency-gate.js +110 -0
  141. package/lib/utils/concurrency.js +1 -1
  142. package/lib/utils/crash-handlers.js +1 -1
  143. package/lib/utils/date.js +1 -1
  144. package/lib/utils/dsse.js +1 -1
  145. package/lib/utils/env.d.ts +11 -0
  146. package/lib/utils/env.js +14 -1
  147. package/lib/utils/headers.js +1 -1
  148. package/lib/utils/identity.js +1 -1
  149. package/lib/utils/index.d.ts +2 -0
  150. package/lib/utils/index.js +3 -1
  151. package/lib/utils/jwk.js +2 -2
  152. package/lib/utils/logger.js +1 -1
  153. package/lib/utils/metric-emitter.js +1 -1
  154. package/lib/utils/object.js +1 -1
  155. package/lib/utils/params.js +1 -1
  156. package/lib/utils/plugin-compliance.d.ts +9 -1
  157. package/lib/utils/plugin-compliance.js +1 -1
  158. package/lib/utils/proof-of-work.js +1 -1
  159. package/lib/utils/response.js +1 -1
  160. package/lib/utils/retention.js +1 -1
  161. package/lib/utils/safe-require.js +1 -1
  162. package/lib/utils/secret-encryption.js +1 -1
  163. package/lib/utils/secret-rotation.js +1 -1
  164. package/lib/utils/secure-compare.js +1 -1
  165. package/lib/utils/semver.d.ts +18 -0
  166. package/lib/utils/semver.js +120 -0
  167. package/lib/utils/sensitive-patterns.js +1 -1
  168. package/lib/utils/service-registry.js +1 -1
  169. package/lib/utils/ssrf.js +1 -1
  170. package/lib/validation/ai-schemas.js +1 -1
  171. package/lib/validation/common-schemas.js +1 -1
  172. package/lib/validation/dockerfile-static.js +1 -1
  173. package/lib/validation/index.d.ts +1 -1
  174. package/lib/validation/index.js +2 -2
  175. package/lib/validation/message-schemas.d.ts +73 -0
  176. package/lib/validation/message-schemas.js +63 -2
  177. package/lib/validation/middleware.js +1 -1
  178. package/lib/validation/pipeline-schemas.js +1 -1
  179. package/lib/validation/pipeline-template-schemas.js +1 -1
  180. package/lib/validation/plugin-base-images.js +1 -1
  181. package/lib/validation/plugin-catalog-detect.js +1 -1
  182. package/lib/validation/plugin-catalog-metadata.js +1 -1
  183. package/lib/validation/plugin-heuristics.js +1 -1
  184. package/lib/validation/plugin-lint.js +1 -1
  185. package/lib/validation/plugin-name-confusable.js +1 -1
  186. package/lib/validation/plugin-schemas.js +1 -1
  187. package/lib/validation/plugin-spec-schema.js +1 -1
  188. package/lib/validation/plugin-template-contract.js +1 -1
  189. package/package.json +11 -4
@@ -0,0 +1,254 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * A tier key as product copy: `developer` → "Developer", `pro_plus` → "Pro Plus".
5
+ *
6
+ * Lives here, with the other tier facts, because three callers want it: the
7
+ * default `QUOTA_TIERS` label, the shared test fixture's labels (which kept a
8
+ * second `titleCase` of its own), and the browser.
9
+ *
10
+ * It will NOT guess at an acronym (`sso` → "Sso") or a stylized name ("Pro+"),
11
+ * and deliberately takes no formatting options: the cases it cannot derive need
12
+ * a human writing copy, which is what `QUOTA_TIER_<TIER>_LABEL` is for. A mode
13
+ * flag would add surface without reaching any of them, and a mid-sentence phrase
14
+ * ("… — new version") is a different FACT from a standalone label rather than
15
+ * another style of one — `quota-catalog.ts` carries `label` and `labelPlural` as
16
+ * separate named fields for exactly that reason.
17
+ */
18
+ export function tierLabel(tier) {
19
+ return tier
20
+ .split(/[_-]/)
21
+ .filter(Boolean)
22
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
23
+ .join(' ');
24
+ }
25
+ /**
26
+ * Preset limits for each tier. -1 means unlimited.
27
+ *
28
+ * AI calls are sized much smaller than `apiCalls` because each call has
29
+ * external provider cost (~$0.01$0.10/call). Developer tier allows light
30
+ * exploration (50/period); Pro lifts to 2,500; Enterprise is capped high
31
+ * (25,000) — fair-use, not literally unlimited.
32
+ *
33
+ * `storageBytes` is the aggregate registry cap per org. Sized
34
+ * around plugin-image realities: a typical plugin image is 200500 MB;
35
+ * Developer's 2 GB holds ~4 versions × ~500 MB, Pro's 25 GB covers a
36
+ * mature catalog. Operators can override per-org via the quota CRUD API.
37
+ */
38
+ const GB = 1024 * 1024 * 1024;
39
+ /**
40
+ * How the `automationCalls` defaults are sized — written down so the next
41
+ * person to touch them argues with the arithmetic, not with the numbers.
42
+ *
43
+ * Every call an org's automation keys make in one pipeline RUN, itemized (the
44
+ * earlier sizing counted only the plugin lookups and hand-waved the rest as
45
+ * "×2"):
46
+ *
47
+ * plugin lookups 12 one per plugin step (self-mutating pipeline)
48
+ * synth 1 the synth step fetching the pipeline config
49
+ * runtime check 1 the pre-deploy runtime-check call
50
+ * security-report upload 1 the scan step posting its report
51
+ * registry register 1 pipeline-register stamping the deployed version
52
+ * reporting ingest batches 12 the event forwarder posts ~one batch per action
53
+ * --
54
+ * 28 calls per run
55
+ *
56
+ * Per default period (`QUOTA_RESET_DAYS`, 3 days) one active pipeline running
57
+ * hourly makes 28 × 24 × 3 = 2,016 calls. An org keeps far more pipelines alive
58
+ * than it CREATES in a period (`pipelines` is a creation rate), so active
59
+ * pipelines are taken as 4× the tier's `pipelines`. On top sits a per-ORG
60
+ * constant that does not scale with pipelines: the ingest-health heartbeat
61
+ * (≤ 1/minute → 1,440/day → 4,320/period). The sum gets 25% headroom (retries,
62
+ * registry pushes, ad-hoc CI scripts on keys) and rounds UP to the next 10,000:
63
+ *
64
+ * developer 2×4×2016 + 4320 = 20,448 × 1.25 = 25,560 → 30,000
65
+ * pro 5×4×2016 + 4320 = 44,640 × 1.25 = 55,800 → 60,000
66
+ * team 10×4×2016 + 4320 = 84,960 × 1.25 = 106,200 → 110,000
67
+ * business 20×4×2016 + 4320 = 165,600 × 1.25 = 207,000 → 210,000
68
+ * enterprise 30×4×2016 + 4320 = 246,240 × 1.25 = 307,800 → 310,000
69
+ *
70
+ * {@link automationCallsFor} computes exactly this, and the tier tests hold the
71
+ * table to it. Over the cap the 429 is SOFT for a band ({@link quotaGracePct}):
72
+ * a self-mutating pipeline that hard-stopped at 100% stayed stopped until the
73
+ * period reset, up to 3 days. The limits are PER PERIOD: an operator who
74
+ * lengthens `QUOTA_RESET_DAYS` should scale `QUOTA_TIER_<TIER>_AUTOMATION_CALLS`
75
+ * by the same factor.
76
+ */
77
+ export const AUTOMATION_CALLS_SIZING = {
78
+ callsPerRun: {
79
+ pluginLookups: 12,
80
+ synth: 1,
81
+ runtimeCheck: 1,
82
+ securityReportUpload: 1,
83
+ registryRegister: 1,
84
+ ingestBatches: 12,
85
+ },
86
+ runsPerDay: 24,
87
+ activePipelinesPerCreation: 4,
88
+ /** Ingest-health heartbeats per org per day (≤ one a minute). */
89
+ heartbeatsPerDay: 1440,
90
+ /** Multiplier on the itemized total. */
91
+ headroom: 1.25,
92
+ /** Defaults round UP to a multiple of this. */
93
+ roundTo: 10_000,
94
+ };
95
+ /** The {@link AUTOMATION_CALLS_SIZING} formula for a tier creating `pipelines` per period. */
96
+ export function automationCallsFor(pipelines, periodDays = 3) {
97
+ const s = AUTOMATION_CALLS_SIZING;
98
+ const perRun = Object.values(s.callsPerRun).reduce((a, b) => a + b, 0);
99
+ const perPipeline = perRun * s.runsPerDay * periodDays;
100
+ const total = (pipelines * s.activePipelinesPerCreation * perPipeline + s.heartbeatsPerDay * periodDays) * s.headroom;
101
+ return Math.ceil(total / s.roundTo) * s.roundTo;
102
+ }
103
+ /**
104
+ * Code-default limits per tier — the fallback when no env override is set.
105
+ *
106
+ * SERVER CODE WANTS `getTierLimits(tier)` / `QUOTA_TIERS[tier].limits`, not this
107
+ * table: those carry the deployment's `QUOTA_TIER_*` overrides, and this is what
108
+ * they fall back to. It is exported for the BROWSER, which has no env to overlay
109
+ * and gets the deployment's effective figures from `/config` instead.
110
+ * -1 means unlimited. (Counts sized to "comfortably enough for one team, not
111
+ * script spam": 20 dashboards, 50 alert rules, 10 destinations, 1 IdP config
112
+ * for Developer; scaled up for Pro; -1 (uncapped) for the cheap count-quotas
113
+ * on Team/Enterprise while cost-driving quotas — incl. apiCalls — stay finite.)
114
+ */
115
+ export const DEFAULT_TIER_LIMITS = {
116
+ // Free tier: single seat, 2 pipelines, apiCalls CAPPED (was unlimited — a
117
+ // DoS/abuse hole on a shared resource); aiCalls small (each has ~$0.01-0.10
118
+ // external cost). Lean base — growth happens by upgrading, not stacking here.
119
+ developer: {
120
+ plugins: 10,
121
+ pipelines: 2,
122
+ apiCalls: 25_000,
123
+ automationCalls: 30_000,
124
+ aiCalls: 20,
125
+ cpuCredits: 4_500,
126
+ storageBytes: 2 * GB,
127
+ dashboards: 20,
128
+ alertRules: 50,
129
+ alertDestinations: 10,
130
+ idpConfigs: 1,
131
+ listings: 3,
132
+ seats: 1,
133
+ supportContacts: 0,
134
+ supportPremiumContacts: 0,
135
+ eventRetentionDays: 30,
136
+ doraRetentionDays: 180,
137
+ },
138
+ // Pro = individual power user, single seat, individual pricing. A 2nd seat (or
139
+ // team collaboration) requires the Team tier — the `seat` add-on is Team+ only,
140
+ // keeping Team the collaboration tier. Pro's value over Developer is its richer
141
+ // call/storage/plugin ceilings + feature add-ons (SSO/audit/DORA), not seats.
142
+ pro: {
143
+ plugins: 25,
144
+ pipelines: 5,
145
+ apiCalls: 100_000,
146
+ automationCalls: 60_000,
147
+ aiCalls: 200,
148
+ cpuCredits: 11_250,
149
+ storageBytes: 25 * GB,
150
+ dashboards: 200,
151
+ alertRules: 500,
152
+ alertDestinations: 50,
153
+ idpConfigs: 5,
154
+ listings: 10,
155
+ seats: 1,
156
+ supportContacts: 0,
157
+ supportPremiumContacts: 0,
158
+ eventRetentionDays: 30,
159
+ doraRetentionDays: 180,
160
+ },
161
+ // Team = collaboration tier; the seat limit (3) is the real differentiator over
162
+ // Pro (single-seat) — it's the multi-seat collaboration floor. Lean base ($79):
163
+ // growth rides the seat/pipeline/etc add-ons (land-and-expand). Limits sit
164
+ // between Pro and Enterprise.
165
+ team: {
166
+ plugins: 50,
167
+ pipelines: 10,
168
+ apiCalls: 300_000,
169
+ automationCalls: 110_000,
170
+ aiCalls: 600,
171
+ cpuCredits: 22_500,
172
+ storageBytes: 60 * GB,
173
+ dashboards: -1,
174
+ alertRules: -1,
175
+ alertDestinations: -1,
176
+ idpConfigs: 5,
177
+ listings: 25,
178
+ seats: 3,
179
+ supportContacts: 0,
180
+ supportPremiumContacts: 0,
181
+ eventRetentionDays: 30,
182
+ doraRetentionDays: 180,
183
+ },
184
+ // Business ($249): the step the $79 -> $599 cliff was missing. 8 seats, 20
185
+ // pipelines, and DORA (advanced_reporting) included rather than an add-on.
186
+ // Every cost driver is 100,000 apiCalls and 200 aiCalls PER SEAT, the same
187
+ // per-seat rate as Pro/Team/Enterprise, so the ladder reads consistently to a
188
+ // buyer who divides by headcount. Count-quotas that Team already uncaps stay
189
+ // -1; `idpConfigs` sits between Team's 5 and Enterprise's unlimited.
190
+ business: {
191
+ plugins: 100,
192
+ pipelines: 20,
193
+ apiCalls: 800_000,
194
+ automationCalls: 210_000,
195
+ aiCalls: 1_600,
196
+ cpuCredits: 45_000,
197
+ storageBytes: 120 * GB,
198
+ dashboards: -1,
199
+ alertRules: -1,
200
+ alertDestinations: -1,
201
+ idpConfigs: 10,
202
+ listings: 50,
203
+ seats: 8,
204
+ supportContacts: 0,
205
+ supportPremiumContacts: 0,
206
+ eventRetentionDays: 30,
207
+ doraRetentionDays: 180,
208
+ },
209
+ // Enterprise ($599, held): the all-inclusive tier — 15 seats, 30 pipelines, ALL
210
+ // premium features included (see TIER_FEATURES). FAIR-USE — cost drivers (apiCalls,
211
+ // aiCalls, storageBytes) capped so one account can't run up unbounded
212
+ // compute/provider/storage cost on a flat price; cheap count-quotas stay -1.
213
+ enterprise: {
214
+ plugins: 150,
215
+ pipelines: 30,
216
+ apiCalls: 1_500_000,
217
+ automationCalls: 310_000,
218
+ aiCalls: 3_000,
219
+ cpuCredits: 67_500,
220
+ storageBytes: 250 * GB,
221
+ dashboards: -1,
222
+ alertRules: -1,
223
+ alertDestinations: -1,
224
+ idpConfigs: -1,
225
+ listings: 100,
226
+ seats: 15,
227
+ supportContacts: 0,
228
+ supportPremiumContacts: 0,
229
+ eventRetentionDays: 30,
230
+ doraRetentionDays: 180,
231
+ },
232
+ // Unlimited: EVERY quota uncapped (-1). The default when billing is disabled
233
+ // (no enforcement surface) — never shown/selectable when billing is enabled.
234
+ unlimited: {
235
+ plugins: -1,
236
+ pipelines: -1,
237
+ apiCalls: -1,
238
+ automationCalls: -1,
239
+ aiCalls: -1,
240
+ cpuCredits: -1,
241
+ storageBytes: -1,
242
+ dashboards: -1,
243
+ alertRules: -1,
244
+ alertDestinations: -1,
245
+ idpConfigs: -1,
246
+ listings: -1,
247
+ seats: -1,
248
+ supportContacts: -1,
249
+ supportPremiumContacts: -1,
250
+ eventRetentionDays: -1,
251
+ doraRetentionDays: -1,
252
+ },
253
+ };
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGllci1saW1pdHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy90aWVyLWxpbWl0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBNEJ0Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBWTtJQUNwQyxPQUFPLElBQUk7U0FDUixLQUFLLENBQUMsTUFBTSxDQUFDO1NBQ2IsTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUNmLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUM7QUFzR0Q7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxXQUFXLEVBQUU7UUFDWCxhQUFhLEVBQUUsRUFBRTtRQUNqQixLQUFLLEVBQUUsQ0FBQztRQUNSLFlBQVksRUFBRSxDQUFDO1FBQ2Ysb0JBQW9CLEVBQUUsQ0FBQztRQUN2QixnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLGFBQWEsRUFBRSxFQUFFO0tBQ2xCO0lBQ0QsVUFBVSxFQUFFLEVBQUU7SUFDZCwwQkFBMEIsRUFBRSxDQUFDO0lBQzdCLGlFQUFpRTtJQUNqRSxnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCLHdDQUF3QztJQUN4QyxRQUFRLEVBQUUsSUFBSTtJQUNkLCtDQUErQztJQUMvQyxPQUFPLEVBQUUsTUFBTTtDQUNQLENBQUM7QUFFWCw4RkFBOEY7QUFDOUYsTUFBTSxVQUFV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Q2IsS0FBSyxFQUFFLEVBQUU7UUFDVCxlQUFlLEVBQUUsQ0FBQztRQUNsQixzQkFBc0IsRUFBRSxDQUFDO1FBQ3pCLGtCQUFrQixFQUFFLEVBQUU7UUFDdEIsaUJBQWlCLEVBQUUsR0FBRztLQUN2QjtJQUNELDZFQUE2RTtJQUM3RSw2RUFBNkU7SUFDN0UsU0FBUyxFQUFFO1FBQ1QsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNYLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDYixRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ1osZUFBZSxFQUFFLENBQUMsQ0FBQztRQUNuQixPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ1gsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNkLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDaEIsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNkLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDZCxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDckIsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNkLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDWixLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUNuQixzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFDMUIsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLGlCQUFpQixFQUFFLENBQUMsQ0FBQztLQUN0QjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBXaGF0IGEgdGllciBHSVZFUyB5b3UsIGFzIERBVEEgT05MWSDigJQgdGhlIGxpbWl0cyBzaGFwZSwgdGhlIGNvZGUtZGVmYXVsdFxuICogbnVtYmVyIGZvciBldmVyeSB0aWVyIHggcXVvdGEgdHlwZSwgYW5kIHRoZSBhcml0aG1ldGljIHRob3NlIG51bWJlcnMgd2VyZVxuICogZGVyaXZlZCBmcm9tLlxuICpcbiAqIERlcGVuZGVuY3ktZnJlZSBhbmQgZW52LWZyZWUgc28gdGhlIGJyb3dzZXIgaW1wb3J0cyBpdCBkaXJlY3RseVxuICogKGBAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZS90aWVyLWxpbWl0c2ApLiBJdHMgb25seSBpbXBvcnQgaXMgYSB0eXBlLCB3aGljaFxuICogaXMgZXJhc2VkIGF0IGNvbXBpbGUgdGltZSwgc28gbm90aGluZyBvZiB0aGUgc2VydmVyIGdyYXBoIHJlYWNoZXMgdGhlIGJ1bmRsZS5cbiAqIFRoZSBlbnYgT1ZFUkxBWSAoYFFVT1RBX1RJRVJfPFRJRVI+XzxMSU1JVD5gKSBkZWxpYmVyYXRlbHkgc3RheXMgaW5cbiAqIGBxdW90YS10aWVycy50c2A6IGl0IHJlYWRzIGBwcm9jZXNzLmVudmAsIHdoaWNoIGlzIHdoYXQga2VwdCB0aGlzIHRhYmxlIG91dCBvZlxuICogdGhlIGJyb3dzZXIncyByZWFjaCBpbiB0aGUgZmlyc3QgcGxhY2UuXG4gKlxuICogV0hZIElUIEVYSVNUUy4gVGhlIGZyb250ZW5kIGtlcHQgYSBoYW5kLXdyaXR0ZW4gY29weSBvZiB0aGlzIHRhYmxlXG4gKiAoYGZyb250ZW5kL3NyYy9jb21wb25lbnRzL3F1b3Rhcy9jb25zdGFudHMudHNgLCB1bmRlciBhIFwia2VlcCBpbiBzeW5jXCJcbiAqIGNvbW1lbnQpIGJlY2F1c2UgaW1wb3J0aW5nIHRoZSByZWFsIG9uZSBtZWFudCBpbXBvcnRpbmcgYSBtb2R1bGUgd2l0aCBzaXh0ZWVuXG4gKiBlbnYgcmVhZHMuIFRoZSBjb3B5IHByZWZpbGxzIHRoZSBxdW90YS1hZG1pbiBlZGl0b3IncyBwZXItdGllciBwcmVzZXRzLCBzbyBhXG4gKiBkcmlmdGVkIGNvcHkgZGlkIG5vdCBicmVhayB0aGUgcGFnZSDigJQgYW4gYWRtaW4gY2xpY2tlZCBhIHByZXNldCBhbmQgU0FWRURcbiAqIG51bWJlcnMgdGhhdCB3ZXJlIG5vIGxvbmdlciB0aGUgcHJvZHVjdCdzLCB3aXRoIG5vdGhpbmcgYW55d2hlcmUgcmVwb3J0aW5nIGl0LlxuICogQSB0ZXN0IHBhcnNlZCBCT1RIIGZpbGVzJyBzb3VyY2UgdGV4dCB0byBob2xkIHRoZW0gZXF1YWwsIHdoaWNoIGlzIHRoZSBzaGFwZVxuICogeW91IHJlYWNoIGZvciB3aGVuIHRoZSB2YWx1ZXMgY2Fubm90IGJlIHNoYXJlZC4gTm93IHRoZXkgY2FuIGJlOiB0aGUgZnJvbnRlbmRcbiAqIGltcG9ydHMgdGhpcyB0YWJsZSwgdGhlIGNvcHkgaXMgZ29uZSwgYW5kIHRoZSBkcmlmdCBpdCBndWFyZGVkIGlzIG5vdFxuICogZXhwcmVzc2libGUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBRdW90YVRpZXIgfSBmcm9tICcuL3F1b3RhLXRpZXJzLmpzJztcblxuLyoqXG4gKiBBIHRpZXIga2V5IGFzIHByb2R1Y3QgY29weTogYGRldmVsb3BlcmAg4oaSIFwiRGV2ZWxvcGVyXCIsIGBwcm9fcGx1c2Ag4oaSIFwiUHJvIFBsdXNcIi5cbiAqXG4gKiBMaXZlcyBoZXJlLCB3aXRoIHRoZSBvdGhlciB0aWVyIGZhY3RzLCBiZWNhdXNlIHRocmVlIGNhbGxlcnMgd2FudCBpdDogdGhlXG4gKiBkZWZhdWx0IGBRVU9UQV9USUVSU2AgbGFiZWwsIHRoZSBzaGFyZWQgdGVzdCBmaXh0dXJlJ3MgbGFiZWxzICh3aGljaCBrZXB0IGFcbiAqIHNlY29uZCBgdGl0bGVDYXNlYCBvZiBpdHMgb3duKSwgYW5kIHRoZSBicm93c2VyLlxuICpcbiAqIEl0IHdpbGwgTk9UIGd1ZXNzIGF0IGFuIGFjcm9ueW0gKGBzc29gIOKGkiBcIlNzb1wiKSBvciBhIHN0eWxpemVkIG5hbWUgKFwiUHJvK1wiKSxcbiAqIGFuZCBkZWxpYmVyYXRlbHkgdGFrZXMgbm8gZm9ybWF0dGluZyBvcHRpb25zOiB0aGUgY2FzZXMgaXQgY2Fubm90IGRlcml2ZSBuZWVkXG4gKiBhIGh1bWFuIHdyaXRpbmcgY29weSwgd2hpY2ggaXMgd2hhdCBgUVVPVEFfVElFUl88VElFUj5fTEFCRUxgIGlzIGZvci4gQSBtb2RlXG4gKiBmbGFnIHdvdWxkIGFkZCBzdXJmYWNlIHdpdGhvdXQgcmVhY2hpbmcgYW55IG9mIHRoZW0sIGFuZCBhIG1pZC1zZW50ZW5jZSBwaHJhc2VcbiAqIChcIuKApiDigJQgbmV3IHZlcnNpb25cIikgaXMgYSBkaWZmZXJlbnQgRkFDVCBmcm9tIGEgc3RhbmRhbG9uZSBsYWJlbCByYXRoZXIgdGhhblxuICogYW5vdGhlciBzdHlsZSBvZiBvbmUg4oCUIGBxdW90YS1jYXRhbG9nLnRzYCBjYXJyaWVzIGBsYWJlbGAgYW5kIGBsYWJlbFBsdXJhbGAgYXNcbiAqIHNlcGFyYXRlIG5hbWVkIGZpZWxkcyBmb3IgZXhhY3RseSB0aGF0IHJlYXNvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpZXJMYWJlbCh0aWVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGllclxuICAgIC5zcGxpdCgvW18tXS8pXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgIC5qb2luKCcgJyk7XG59XG5cbi8qKiBMaW1pdCB2YWx1ZXMgZm9yIGVhY2ggcXVvdGEgdHlwZSB3aXRoaW4gYSB0aWVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdW90YVRpZXJMaW1pdHMge1xuICBwbHVnaW5zOiBudW1iZXI7XG4gIHBpcGVsaW5lczogbnVtYmVyO1xuICBhcGlDYWxsczogbnVtYmVyO1xuICAvKipcbiAgICogTWV0ZXJlZCBBUEkgY2FsbHMgbWFkZSBieSBPUkcgU0VSVklDRSBBQ0NPVU5UUyAoYXV0b21hdGlvbiksIGNvdW50ZWRcbiAgICogaW5zdGVhZCBvZiBgYXBpQ2FsbHNgIHNvIHBpcGVsaW5lcyBjYW4ndCBzdGFydmUgdGhlIG9yZydzIHBlb3BsZS4gU2VlXG4gICAqIHtAbGluayBBVVRPTUFUSU9OX0NBTExTX1NJWklOR30gZm9yIGhvdyB0aGUgZGVmYXVsdHMgYXJlIGRlcml2ZWQuXG4gICAqL1xuICBhdXRvbWF0aW9uQ2FsbHM6IG51bWJlcjtcbiAgYWlDYWxsczogbnVtYmVyO1xuICAvKipcbiAgICogQWdncmVnYXRlIHJlZ2lzdHJ5IHN0b3JhZ2UgY2FwIGluIEJZVEVTLiBDb3VudGVkIGFjcm9zcyBldmVyeSByZXBvXG4gICAqIHVuZGVyIHRoZSBvcmcncyBgb3JnLXtvcmdJZH0vYCBuYW1lc3BhY2UuIC0xIG1lYW5zIHVubGltaXRlZC5cbiAgICogcHVzaC1nYXRlIHJlYWRzIHRoaXM7IHRoZSBpbWFnZS1yZWdpc3RyeSByZWplY3RzIHRva2VuIGlzc3VhbmNlIGZvclxuICAgKiBgcHVzaGAgc2NvcGUgd2hlbiB0aGUgb3JnJ3MgbWVhc3VyZWQgdXNhZ2UgZXhjZWVkcyB0aGUgbGltaXQuXG4gICAqL1xuICBzdG9yYWdlQnl0ZXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIHZDUFUtTUlOVVRFUyBvZiBwbHVnaW4tYnVpbGQgY29tcHV0ZSBwZXIgTU9OVEgg4oCUIHRoZSBvbmUgcXVvdGEgb24gYSBwZXJpb2RcbiAgICogb2YgaXRzIG93biAoZXZlcnkgb3RoZXIgZmxvdyBxdW90YSByb2xscyBvbiBgUVVPVEFfUkVTRVRfREFZU2AsIDMgZGF5cykuXG4gICAqXG4gICAqIERlcml2ZWQgZnJvbSB0aGUgYHBsdWdpbnNgIGNhcCByYXRoZXIgdGhhbiBndWVzc2VkOiBgcGx1Z2lucyB4IDEwYCBidWlsZHMgYVxuICAgKiBtb250aCwgYXQgYSBmbGF0IDMwIHdhbGwtbWludXRlcyBhIGJ1aWxkIGFuZCAxLjUgdkNQVSBvZiBidWlsZGtpdGQsIHNvXG4gICAqIGBjcmVkaXRzID0gYnVpbGRzIHggNDVgLiBUaGUgZmxhdCBwZXItYnVpbGQgZmlndXJlIGlzIGRlbGliZXJhdGUg4oCUIHNjYWxpbmdcbiAgICogQk9USCB0aGUgYnVpbGQgY291bnQgYW5kIHRoZSBwZXItYnVpbGQgY29zdCBieSB0aWVyIG1hZGUgY3JlZGl0c1xuICAgKiBzdXBlcmxpbmVhciBpbiB0aWVyIG9uIHRoZSBzdHJlbmd0aCBvZiBhbiB1bm1lYXN1cmVkIGNsYWltLCBhbmQgaXQgbWFkZSBhXG4gICAqIHBhY2sncyBjcmVkaXQgZ3JhbnQgdGllci1kZXBlbmRlbnQsIHdoaWNoIHRoZSBjYXRhbG9ndWUncyBncmFudCBzaGFwZSBjYW5ub3RcbiAgICogZXhwcmVzcy5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgZmlyc3QgZGltZW5zaW9uIHdpdGggZ2VudWluZSBwZXItdW5pdCBtYXJnaW5hbCBjb3N0OiBldmVyeSBvdGhlclxuICAgKiBxdW90YSBpcyBhIHJhdGUgbGltaXQgcHJvdGVjdGluZyBzaGFyZWQgaW5mcmFzdHJ1Y3R1cmUsIHRoaXMgb25lIGlzIGNvbXB1dGVcbiAgICogdGhlIHBsYXRmb3JtIHBheXMgZm9yLiBTZWUgYGRvY3MvcGxhbnMvY3B1LWNyZWRpdHMubWRgLlxuICAgKi9cbiAgY3B1Q3JlZGl0czogbnVtYmVyO1xuICAvKiogQ291bnQtcXVvdGFzIG9uIHRoZSB1c2VyLWVkaXRhYmxlIGZlYXR1cmUgdGFibGVzIGFkZGVkIHRvIGNsb3NlIHBlci1vcmdcbiAgICogIERvUyB2aWEgc3BhbS4gLTEgbWVhbnMgdW5saW1pdGVkLiAqL1xuICBkYXNoYm9hcmRzOiBudW1iZXI7XG4gIGFsZXJ0UnVsZXM6IG51bWJlcjtcbiAgYWxlcnREZXN0aW5hdGlvbnM6IG51bWJlcjtcbiAgaWRwQ29uZmlnczogbnVtYmVyO1xuICAvKipcbiAgICogQWN0aXZlLCBub24tc3VzcGVuZGVkIHBsdWdpbi1lY29zeXN0ZW0gbGlzdGluZ3MgdGhlIG9yZyBwdWJsaXNoZXNcbiAgICogKGRvY3MvcGx1Z2luLWluc3RhbGxpbmcubWQpLiBBIENPVU5UIHF1b3RhIOKAlCBpbnN0YWxscyBuZXZlclxuICAgKiBjb3VudC4gLTEgPSB1bmxpbWl0ZWQuIEV4dGVuZGFibGUgdmlhIHRoZSBgbGlzdGluZ19wYWNrYCBhZGQtb24gYnVuZGxlLlxuICAgKi9cbiAgbGlzdGluZ3M6IG51bWJlcjtcbiAgLyoqXG4gICAqIE1heCBvcmcgbWVtYmVycyAoYWN0aXZlIHVzZXJzIC8gc2VhdHMpLiAtMSA9IHVubGltaXRlZC4gVGhpcyBpcyB0aGUgXCJUZWFtXCJcbiAgICogdGllciBkaWZmZXJlbnRpYXRvciDigJQgZW5mb3JjZWQgYXQgbWVtYmVyLWludml0ZSB0aW1lIChhbiBpbnZpdGUgaXMgYmxvY2tlZFxuICAgKiB3aGVuIGFjdGl2ZSBtZW1iZXJzICsgcGVuZGluZyBpbnZpdGVzIHdvdWxkIGV4Y2VlZCB0aGlzKS5cbiAgICovXG4gIHNlYXRzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBNYXggZGVzaWduYXRlZCBTVVBQT1JUIENPTlRBQ1RTIOKAlCB0aGUgbWVtYmVycyBhdXRob3Jpc2VkIHRvIG9wZW4gc3VwcG9ydFxuICAgKiBjYXNlcy4gLTEgPSB1bmxpbWl0ZWQuIEJhc2UgaXMgKiowIG9uIGV2ZXJ5IHRpZXIqKjogc3VwcG9ydCBpcyBhbiBhZGQtb24gYXRcbiAgICogZXZlcnkgdGllciBhbmQgaW5jbHVkZWQgaW4gbm9uZSwgc28gYW4gb3JnIHdpdGggbm8gc3VwcG9ydCBidW5kbGUgaGFzIG5vXG4gICAqIGNvbnRhY3RzIGFuZCBjYW5ub3Qgb3BlbiBhIGNhc2UuIFRoYXQgbWFrZXMgdGhlIHN1cHBvcnQgcGF5d2FsbCBhIHF1b3RhXG4gICAqIGNoZWNrIHJhdGhlciB0aGFuIGEgZmVhdHVyZSBmbGFnLlxuICAgKlxuICAgKiBMaWtlIGBzZWF0c2AgdGhpcyBpcyBhIHRpZXIgTElNSVQsIG5vdCBhIHRyYWNrZWQgY291bnRlciDigJQgZW5mb3JjZWQgbGl2ZSBhdFxuICAgKiBkZXNpZ25hdGlvbiB0aW1lIGFnYWluc3QgY3VycmVudCBkZXNpZ25hdGlvbnMgYWNyb3NzIHRoZSBvcmcgc3VidHJlZS5cbiAgICogRXh0ZW5kZWQgcGVyIHVuaXQgYnkgdGhlIGBzdXBwb3J0X3N0YW5kYXJkYCAvIGBzdXBwb3J0X3ByaW9yaXR5YCBCQVNFTElORVxuICAgKiBidW5kbGVzLCB3aGljaCBhcmUgcHJpY2VkIHBlciBjb250YWN0LlxuICAgKi9cbiAgc3VwcG9ydENvbnRhY3RzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBIb3cgbWFueSBvZiB0aG9zZSBjb250YWN0cyBtYXkgYmUgVVBHUkFERUQgdG8gcHJlbWl1bSAoMjTDlzcsIDgtaG91clxuICAgKiByZXNwb25zZSwgYW5kIHRoZSBvbmx5IG9uZXMgd2hvIG1heSBkZWNsYXJlIGB1cmdlbnRgKS5cbiAgICpcbiAgICogQSBzZWNvbmQgZGltZW5zaW9uIHJhdGhlciB0aGFuIGEgdGhpcmQgYmFzZWxpbmUgbGV2ZWwsIGJlY2F1c2UgcHJlbWl1bSBpcyBhblxuICAgKiBVUEdSQURFIGFuZCBub3QgYW4gYWx0ZXJuYXRpdmUuIFRoZSBzaGFwZSBpdCBlbmNvZGVzOiBhbiBvcmcgYnV5cyBOIGJhc2VsaW5lXG4gICAqIGNvbnRhY3RzIGFuZCB1cGdyYWRlcyBNIG9mIHRoZW0sIE0g4omkIE4uIFRoYXQgaXMgd2hhdCBsZXRzIGEgMTAwLXNlYXRcbiAgICogY3VzdG9tZXIgZ2l2ZSBidXNpbmVzcy1ob3VycyBzdXBwb3J0IHRvIGl0cyB0aHJlZSBuYW1lZCBjb250YWN0cyBhbmQgMjTDlzdcbiAgICogdG8gdGhlIG9uZSB3aG8gY2FycmllcyB0aGUgcGFnZXIg4oCUIHRoZSBjYXNlIHRoZSBtdXR1YWxseS1leGNsdXNpdmUgbGFkZGVyXG4gICAqIGNvdWxkIG5vdCBleHByZXNzIGF0IGFsbCwgd2hlcmUgYnV5aW5nIFwiOTkgc3RhbmRhcmQgKyAxIHByZW1pdW1cIiBjaGFyZ2VkIGZvclxuICAgKiAxMDAgdW5pdHMgYW5kIGdyYW50ZWQgb25lIGNvbnRhY3QuXG4gICAqXG4gICAqIEFERElUSVZFLCBkZWxpYmVyYXRlbHkuIEEgcHJlbWl1bSBjb250YWN0IGNvc3RzIHRoZSBiYXNlbGluZSB1bml0IFBMVVMgdGhlXG4gICAqIHVwZ3JhZGUgKCQxOS45OSArICQ5OS45OSksIGJlY2F1c2UgaXQgaXMgc2VydmVkIGR1cmluZyBidXNpbmVzcyBob3Vyc1xuICAgKiB0aHJvdWdoIHRoZSBiYXNlbGluZSBhbmQgb3Zlcm5pZ2h0IHRocm91Z2ggdGhlIHVwZ3JhZGU7IHByaWNpbmcgdGhlIHVwZ3JhZGVcbiAgICogYXMgYSBkZWx0YSB3b3VsZCBwcmV0ZW5kIHRoZSBiYXNlbGluZSB3ZXJlIGZyZWUuIEJhc2UgMCBvbiBldmVyeSB0aWVyLCBsaWtlXG4gICAqIGBzdXBwb3J0Q29udGFjdHNgLCBzbyB0aGUgcGF5d2FsbCBzdGF5cyBhIHF1b3RhIGNoZWNrLlxuICAgKi9cbiAgc3VwcG9ydFByZW1pdW1Db250YWN0czogbnVtYmVyO1xuICAvKipcbiAgICogUmVwb3J0aW5nIHJldGVudGlvbiBpbiBEQVlTIOKAlCBOT1QgYSBmbG93IHF1b3RhIChuZXZlciBkZWNyZW1lbnRlZCwgYWJzZW50XG4gICAqIGZyb20gYFZBTElEX1FVT1RBX1RZUEVTYCk6IHRoZXNlIHJpZGUgdGhlIHRpZXItYmFzZWxpbmUgKyBidW5kbGUtZ3JhbnQgbWF0aFxuICAgKiBwdXJlbHkgYXMgYW4gZW50aXRsZW1lbnQgdGhlIGJpbGxpbmcgc2VydmljZSBzeW5jcyB0byByZXBvcnRpbmcnc1xuICAgKiBgZG9yYV9zZXR0aW5nc2AuIC0xID0gdW5saW1pdGVkICh0aGUgc3dlZXAgc2tpcHMgdGhlIG9yZyBlbnRpcmVseSkuXG4gICAqICAgYGV2ZW50UmV0ZW50aW9uRGF5c2Ag4oCUIG5vbi1kZXBsb3kgYHBpcGVsaW5lX2V2ZW50c2AgKFNUQUdFL0FDVElPTi9idWlsZCkuXG4gICAqICAgYGRvcmFSZXRlbnRpb25EYXlzYCAg4oCUIGRlcGxveSBldmVudHMgKyBgZGVwbG95bWVudF9vdXRjb21lc2AgKyBgaW5jaWRlbnRzYCxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgcGVyLW9yZyByZXBvcnQtcXVlcnkgd2luZG93IGZvciBET1JBIHJvdXRlcy5cbiAgICogRXh0ZW5kYWJsZSB2aWEgdGhlIGByZXRlbnRpb25fcGFja2AgLyBgZG9yYV9oaXN0b3J5X3BhY2tgIGFkZC1vbiBidW5kbGVzLlxuICAgKi9cbiAgZXZlbnRSZXRlbnRpb25EYXlzOiBudW1iZXI7XG4gIGRvcmFSZXRlbnRpb25EYXlzOiBudW1iZXI7XG59XG5cbi8qKlxuICogUHJlc2V0IGxpbWl0cyBmb3IgZWFjaCB0aWVyLiAtMSBtZWFucyB1bmxpbWl0ZWQuXG4gKlxuICogQUkgY2FsbHMgYXJlIHNpemVkIG11Y2ggc21hbGxlciB0aGFuIGBhcGlDYWxsc2AgYmVjYXVzZSBlYWNoIGNhbGwgaGFzXG4gKiBleHRlcm5hbCBwcm92aWRlciBjb3N0ICh+JDAuMDEkMC4xMC9jYWxsKS4gRGV2ZWxvcGVyIHRpZXIgYWxsb3dzIGxpZ2h0XG4gKiBleHBsb3JhdGlvbiAoNTAvcGVyaW9kKTsgUHJvIGxpZnRzIHRvIDIsNTAwOyBFbnRlcnByaXNlIGlzIGNhcHBlZCBoaWdoXG4gKiAoMjUsMDAwKSDigJQgZmFpci11c2UsIG5vdCBsaXRlcmFsbHkgdW5saW1pdGVkLlxuICpcbiAqIGBzdG9yYWdlQnl0ZXNgIGlzIHRoZSBhZ2dyZWdhdGUgcmVnaXN0cnkgY2FwIHBlciBvcmcuIFNpemVkXG4gKiBhcm91bmQgcGx1Z2luLWltYWdlIHJlYWxpdGllczogYSB0eXBpY2FsIHBsdWdpbiBpbWFnZSBpcyAyMDA1MDAgTUI7XG4gKiBEZXZlbG9wZXIncyAyIEdCIGhvbGRzIH40IHZlcnNpb25zIMOXIH41MDAgTUIsIFBybydzIDI1IEdCIGNvdmVycyBhXG4gKiBtYXR1cmUgY2F0YWxvZy4gT3BlcmF0b3JzIGNhbiBvdmVycmlkZSBwZXItb3JnIHZpYSB0aGUgcXVvdGEgQ1JVRCBBUEkuXG4gKi9cbmNvbnN0IEdCID0gMTAyNCAqIDEwMjQgKiAxMDI0O1xuXG4vKipcbiAqIEhvdyB0aGUgYGF1dG9tYXRpb25DYWxsc2AgZGVmYXVsdHMgYXJlIHNpemVkIOKAlCB3cml0dGVuIGRvd24gc28gdGhlIG5leHRcbiAqIHBlcnNvbiB0byB0b3VjaCB0aGVtIGFyZ3VlcyB3aXRoIHRoZSBhcml0aG1ldGljLCBub3Qgd2l0aCB0aGUgbnVtYmVycy5cbiAqXG4gKiBFdmVyeSBjYWxsIGFuIG9yZydzIGF1dG9tYXRpb24ga2V5cyBtYWtlIGluIG9uZSBwaXBlbGluZSBSVU4sIGl0ZW1pemVkICh0aGVcbiAqIGVhcmxpZXIgc2l6aW5nIGNvdW50ZWQgb25seSB0aGUgcGx1Z2luIGxvb2t1cHMgYW5kIGhhbmQtd2F2ZWQgdGhlIHJlc3QgYXNcbiAqIFwiw5cyXCIpOlxuICpcbiAqICAgcGx1Z2luIGxvb2t1cHMgICAgICAgICAgICAxMiAgIG9uZSBwZXIgcGx1Z2luIHN0ZXAgKHNlbGYtbXV0YXRpbmcgcGlwZWxpbmUpXG4gKiAgIHN5bnRoICAgICAgICAgICAgICAgICAgICAgIDEgICB0aGUgc3ludGggc3RlcCBmZXRjaGluZyB0aGUgcGlwZWxpbmUgY29uZmlnXG4gKiAgIHJ1bnRpbWUgY2hlY2sgICAgICAgICAgICAgIDEgICB0aGUgcHJlLWRlcGxveSBydW50aW1lLWNoZWNrIGNhbGxcbiAqICAgc2VjdXJpdHktcmVwb3J0IHVwbG9hZCAgICAgMSAgIHRoZSBzY2FuIHN0ZXAgcG9zdGluZyBpdHMgcmVwb3J0XG4gKiAgIHJlZ2lzdHJ5IHJlZ2lzdGVyICAgICAgICAgIDEgICBwaXBlbGluZS1yZWdpc3RlciBzdGFtcGluZyB0aGUgZGVwbG95ZWQgdmVyc2lvblxuICogICByZXBvcnRpbmcgaW5nZXN0IGJhdGNoZXMgIDEyICAgdGhlIGV2ZW50IGZvcndhcmRlciBwb3N0cyB+b25lIGJhdGNoIHBlciBhY3Rpb25cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4ICAgY2FsbHMgcGVyIHJ1blxuICpcbiAqIFBlciBkZWZhdWx0IHBlcmlvZCAoYFFVT1RBX1JFU0VUX0RBWVNgLCAzIGRheXMpIG9uZSBhY3RpdmUgcGlwZWxpbmUgcnVubmluZ1xuICogaG91cmx5IG1ha2VzIDI4IMOXIDI0IMOXIDMgPSAyLDAxNiBjYWxscy4gQW4gb3JnIGtlZXBzIGZhciBtb3JlIHBpcGVsaW5lcyBhbGl2ZVxuICogdGhhbiBpdCBDUkVBVEVTIGluIGEgcGVyaW9kIChgcGlwZWxpbmVzYCBpcyBhIGNyZWF0aW9uIHJhdGUpLCBzbyBhY3RpdmVcbiAqIHBpcGVsaW5lcyBhcmUgdGFrZW4gYXMgNMOXIHRoZSB0aWVyJ3MgYHBpcGVsaW5lc2AuIE9uIHRvcCBzaXRzIGEgcGVyLU9SR1xuICogY29uc3RhbnQgdGhhdCBkb2VzIG5vdCBzY2FsZSB3aXRoIHBpcGVsaW5lczogdGhlIGluZ2VzdC1oZWFsdGggaGVhcnRiZWF0XG4gKiAo4omkIDEvbWludXRlIOKGkiAxLDQ0MC9kYXkg4oaSIDQsMzIwL3BlcmlvZCkuIFRoZSBzdW0gZ2V0cyAyNSUgaGVhZHJvb20gKHJldHJpZXMsXG4gKiByZWdpc3RyeSBwdXNoZXMsIGFkLWhvYyBDSSBzY3JpcHRzIG9uIGtleXMpIGFuZCByb3VuZHMgVVAgdG8gdGhlIG5leHQgMTAsMDAwOlxuICpcbiAqICAgZGV2ZWxvcGVyICAgMsOXNMOXMjAxNiArIDQzMjAgPSAgMjAsNDQ4IMOXIDEuMjUgPSAgMjUsNTYwIOKGkiAgMzAsMDAwXG4gKiAgIHBybyAgICAgICAgIDXDlzTDlzIwMTYgKyA0MzIwID0gIDQ0LDY0MCDDlyAxLjI1ID0gIDU1LDgwMCDihpIgIDYwLDAwMFxuICogICB0ZWFtICAgICAgIDEww5c0w5cyMDE2ICsgNDMyMCA9ICA4NCw5NjAgw5cgMS4yNSA9IDEwNiwyMDAg4oaSIDExMCwwMDBcbiAqICAgYnVzaW5lc3MgICAyMMOXNMOXMjAxNiArIDQzMjAgPSAxNjUsNjAwIMOXIDEuMjUgPSAyMDcsMDAwIOKGkiAyMTAsMDAwXG4gKiAgIGVudGVycHJpc2UgMzDDlzTDlzIwMTYgKyA0MzIwID0gMjQ2LDI0MCDDlyAxLjI1ID0gMzA3LDgwMCDihpIgMzEwLDAwMFxuICpcbiAqIHtAbGluayBhdXRvbWF0aW9uQ2FsbHNGb3J9IGNvbXB1dGVzIGV4YWN0bHkgdGhpcywgYW5kIHRoZSB0aWVyIHRlc3RzIGhvbGQgdGhlXG4gKiB0YWJsZSB0byBpdC4gT3ZlciB0aGUgY2FwIHRoZSA0MjkgaXMgU09GVCBmb3IgYSBiYW5kICh7QGxpbmsgcXVvdGFHcmFjZVBjdH0pOlxuICogYSBzZWxmLW11dGF0aW5nIHBpcGVsaW5lIHRoYXQgaGFyZC1zdG9wcGVkIGF0IDEwMCUgc3RheWVkIHN0b3BwZWQgdW50aWwgdGhlXG4gKiBwZXJpb2QgcmVzZXQsIHVwIHRvIDMgZGF5cy4gVGhlIGxpbWl0cyBhcmUgUEVSIFBFUklPRDogYW4gb3BlcmF0b3Igd2hvXG4gKiBsZW5ndGhlbnMgYFFVT1RBX1JFU0VUX0RBWVNgIHNob3VsZCBzY2FsZSBgUVVPVEFfVElFUl88VElFUj5fQVVUT01BVElPTl9DQUxMU2BcbiAqIGJ5IHRoZSBzYW1lIGZhY3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IEFVVE9NQVRJT05fQ0FMTFNfU0laSU5HID0ge1xuICBjYWxsc1BlclJ1bjoge1xuICAgIHBsdWdpbkxvb2t1cHM6IDEyLFxuICAgIHN5bnRoOiAxLFxuICAgIHJ1bnRpbWVDaGVjazogMSxcbiAgICBzZWN1cml0eVJlcG9ydFVwbG9hZDogMSxcbiAgICByZWdpc3RyeVJlZ2lzdGVyOiAxLFxuICAgIGluZ2VzdEJhdGNoZXM6IDEyLFxuICB9LFxuICBydW5zUGVyRGF5OiAyNCxcbiAgYWN0aXZlUGlwZWxpbmVzUGVyQ3JlYXRpb246IDQsXG4gIC8qKiBJbmdlc3QtaGVhbHRoIGhlYXJ0YmVhdHMgcGVyIG9yZyBwZXIgZGF5ICjiiaQgb25lIGEgbWludXRlKS4gKi9cbiAgaGVhcnRiZWF0c1BlckRheTogMTQ0MCxcbiAgLyoqIE11bHRpcGxpZXIgb24gdGhlIGl0ZW1pemVkIHRvdGFsLiAqL1xuICBoZWFkcm9vbTogMS4yNSxcbiAgLyoqIERlZmF1bHRzIHJvdW5kIFVQIHRvIGEgbXVsdGlwbGUgb2YgdGhpcy4gKi9cbiAgcm91bmRUbzogMTBfMDAwLFxufSBhcyBjb25zdDtcblxuLyoqIFRoZSB7QGxpbmsgQVVUT01BVElPTl9DQUxMU19TSVpJTkd9IGZvcm11bGEgZm9yIGEgdGllciBjcmVhdGluZyBgcGlwZWxpbmVzYCBwZXIgcGVyaW9kLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1dG9tYXRpb25DYWxsc0ZvcihwaXBlbGluZXM6IG51bWJlciwgcGVyaW9kRGF5czogbnVtYmVyID0gMyk6IG51bWJlciB7XG4gIGNvbnN0IHMgPSBBVVRPTUFUSU9OX0NBTExTX1NJWklORztcbiAgY29uc3QgcGVyUnVuID0gT2JqZWN0LnZhbHVlcyhzLmNhbGxzUGVyUnVuKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcbiAgY29uc3QgcGVyUGlwZWxpbmUgPSBwZXJSdW4gKiBzLnJ1bnNQZXJEYXkgKiBwZXJpb2REYXlzO1xuICBjb25zdCB0b3RhbCA9IChwaXBlbGluZXMgKiBzLmFjdGl2ZVBpcGVsaW5lc1BlckNyZWF0aW9uICogcGVyUGlwZWxpbmUgKyBzLmhlYXJ0YmVhdHNQZXJEYXkgKiBwZXJpb2REYXlzKSAqIHMuaGVhZHJvb207XG4gIHJldHVybiBNYXRoLmNlaWwodG90YWwgLyBzLnJvdW5kVG8pICogcy5yb3VuZFRvO1xufVxuXG4vKipcbiAqIENvZGUtZGVmYXVsdCBsaW1pdHMgcGVyIHRpZXIg4oCUIHRoZSBmYWxsYmFjayB3aGVuIG5vIGVudiBvdmVycmlkZSBpcyBzZXQuXG4gKlxuICogU0VSVkVSIENPREUgV0FOVFMgYGdldFRpZXJMaW1pdHModGllcilgIC8gYFFVT1RBX1RJRVJTW3RpZXJdLmxpbWl0c2AsIG5vdCB0aGlzXG4gKiB0YWJsZTogdGhvc2UgY2FycnkgdGhlIGRlcGxveW1lbnQncyBgUVVPVEFfVElFUl8qYCBvdmVycmlkZXMsIGFuZCB0aGlzIGlzIHdoYXRcbiAqIHRoZXkgZmFsbCBiYWNrIHRvLiBJdCBpcyBleHBvcnRlZCBmb3IgdGhlIEJST1dTRVIsIHdoaWNoIGhhcyBubyBlbnYgdG8gb3ZlcmxheVxuICogYW5kIGdldHMgdGhlIGRlcGxveW1lbnQncyBlZmZlY3RpdmUgZmlndXJlcyBmcm9tIGAvY29uZmlnYCBpbnN0ZWFkLlxuICogLTEgbWVhbnMgdW5saW1pdGVkLiAoQ291bnRzIHNpemVkIHRvIFwiY29tZm9ydGFibHkgZW5vdWdoIGZvciBvbmUgdGVhbSwgbm90XG4gKiBzY3JpcHQgc3BhbVwiOiAyMCBkYXNoYm9hcmRzLCA1MCBhbGVydCBydWxlcywgMTAgZGVzdGluYXRpb25zLCAxIElkUCBjb25maWdcbiAqIGZvciBEZXZlbG9wZXI7IHNjYWxlZCB1cCBmb3IgUHJvOyAtMSAodW5jYXBwZWQpIGZvciB0aGUgY2hlYXAgY291bnQtcXVvdGFzXG4gKiBvbiBUZWFtL0VudGVycHJpc2Ugd2hpbGUgY29zdC1kcml2aW5nIHF1b3RhcyDigJQgaW5jbC4gYXBpQ2FsbHMg4oCUIHN0YXkgZmluaXRlLilcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElFUl9MSU1JVFM6IFJlY29yZDxRdW90YVRpZXIsIFF1b3RhVGllckxpbWl0cz4gPSB7XG4gIC8vIEZyZWUgdGllcjogc2luZ2xlIHNlYXQsIDIgcGlwZWxpbmVzLCBhcGlDYWxscyBDQVBQRUQgKHdhcyB1bmxpbWl0ZWQg4oCUIGFcbiAgLy8gRG9TL2FidXNlIGhvbGUgb24gYSBzaGFyZWQgcmVzb3VyY2UpOyBhaUNhbGxzIHNtYWxsIChlYWNoIGhhcyB+JDAuMDEtMC4xMFxuICAvLyBleHRlcm5hbCBjb3N0KS4gTGVhbiBiYXNlIOKAlCBncm93dGggaGFwcGVucyBieSB1cGdyYWRpbmcsIG5vdCBzdGFja2luZyBoZXJlLlxuICBkZXZlbG9wZXI6IHtcbiAgICBwbHVnaW5zOiAxMCxcbiAgICBwaXBlbGluZXM6IDIsXG4gICAgYXBpQ2FsbHM6IDI1XzAwMCxcbiAgICBhdXRvbWF0aW9uQ2FsbHM6IDMwXzAwMCxcbiAgICBhaUNhbGxzOiAyMCxcbiAgICBjcHVDcmVkaXRzOiA0XzUwMCxcbiAgICBzdG9yYWdlQnl0ZXM6IDIgKiBHQixcbiAgICBkYXNoYm9hcmRzOiAyMCxcbiAgICBhbGVydFJ1bGVzOiA1MCxcbiAgICBhbGVydERlc3RpbmF0aW9uczogMTAsXG4gICAgaWRwQ29uZmlnczogMSxcbiAgICBsaXN0aW5nczogMyxcbiAgICBzZWF0czogMSxcbiAgICBzdXBwb3J0Q29udGFjdHM6IDAsXG4gICAgc3VwcG9ydFByZW1pdW1Db250YWN0czogMCxcbiAgICBldmVudFJldGVudGlvbkRheXM6IDMwLFxuICAgIGRvcmFSZXRlbnRpb25EYXlzOiAxODAsXG4gIH0sXG4gIC8vIFBybyA9IGluZGl2aWR1YWwgcG93ZXIgdXNlciwgc2luZ2xlIHNlYXQsIGluZGl2aWR1YWwgcHJpY2luZy4gQSAybmQgc2VhdCAob3JcbiAgLy8gdGVhbSBjb2xsYWJvcmF0aW9uKSByZXF1aXJlcyB0aGUgVGVhbSB0aWVyIOKAlCB0aGUgYHNlYXRgIGFkZC1vbiBpcyBUZWFtKyBvbmx5LFxuICAvLyBrZWVwaW5nIFRlYW0gdGhlIGNvbGxhYm9yYXRpb24gdGllci4gUHJvJ3MgdmFsdWUgb3ZlciBEZXZlbG9wZXIgaXMgaXRzIHJpY2hlclxuICAvLyBjYWxsL3N0b3JhZ2UvcGx1Z2luIGNlaWxpbmdzICsgZmVhdHVyZSBhZGQtb25zIChTU08vYXVkaXQvRE9SQSksIG5vdCBzZWF0cy5cbiAgcHJvOiB7XG4gICAgcGx1Z2luczogMjUsXG4gICAgcGlwZWxpbmVzOiA1LFxuICAgIGFwaUNhbGxzOiAxMDBfMDAwLFxuICAgIGF1dG9tYXRpb25DYWxsczogNjBfMDAwLFxuICAgIGFpQ2FsbHM6IDIwMCxcbiAgICBjcHVDcmVkaXRzOiAxMV8yNTAsXG4gICAgc3RvcmFnZUJ5dGVzOiAyNSAqIEdCLFxuICAgIGRhc2hib2FyZHM6IDIwMCxcbiAgICBhbGVydFJ1bGVzOiA1MDAsXG4gICAgYWxlcnREZXN0aW5hdGlvbnM6IDUwLFxuICAgIGlkcENvbmZpZ3M6IDUsXG4gICAgbGlzdGluZ3M6IDEwLFxuICAgIHNlYXRzOiAxLFxuICAgIHN1cHBvcnRDb250YWN0czogMCxcbiAgICBzdXBwb3J0UHJlbWl1bUNvbnRhY3RzOiAwLFxuICAgIGV2ZW50UmV0ZW50aW9uRGF5czogMzAsXG4gICAgZG9yYVJldGVudGlvbkRheXM6IDE4MCxcbiAgfSxcbiAgLy8gVGVhbSA9IGNvbGxhYm9yYXRpb24gdGllcjsgdGhlIHNlYXQgbGltaXQgKDMpIGlzIHRoZSByZWFsIGRpZmZlcmVudGlhdG9yIG92ZXJcbiAgLy8gUHJvIChzaW5nbGUtc2VhdCkg4oCUIGl0J3MgdGhlIG11bHRpLXNlYXQgY29sbGFib3JhdGlvbiBmbG9vci4gTGVhbiBiYXNlICgkNzkpOlxuICAvLyBncm93dGggcmlkZXMgdGhlIHNlYXQvcGlwZWxpbmUvZXRjIGFkZC1vbnMgKGxhbmQtYW5kLWV4cGFuZCkuIExpbWl0cyBzaXRcbiAgLy8gYmV0d2VlbiBQcm8gYW5kIEVudGVycHJpc2UuXG4gIHRlYW06IHtcbiAgICBwbHVnaW5zOiA1MCxcbiAgICBwaXBlbGluZXM6IDEwLFxuICAgIGFwaUNhbGxzOiAzMDBfMDAwLFxuICAgIGF1dG9tYXRpb25DYWxsczogMTEwXzAwMCxcbiAgICBhaUNhbGxzOiA2MDAsXG4gICAgY3B1Q3JlZGl0czogMjJfNTAwLFxuICAgIHN0b3JhZ2VCeXRlczogNjAgKiBHQixcbiAgICBkYXNoYm9hcmRzOiAtMSxcbiAgICBhbGVydFJ1bGVzOiAtMSxcbiAgICBhbGVydERlc3RpbmF0aW9uczogLTEsXG4gICAgaWRwQ29uZmlnczogNSxcbiAgICBsaXN0aW5nczogMjUsXG4gICAgc2VhdHM6IDMsXG4gICAgc3VwcG9ydENvbnRhY3RzOiAwLFxuICAgIHN1cHBvcnRQcmVtaXVtQ29udGFjdHM6IDAsXG4gICAgZXZlbnRSZXRlbnRpb25EYXlzOiAzMCxcbiAgICBkb3JhUmV0ZW50aW9uRGF5czogMTgwLFxuICB9LFxuICAvLyBCdXNpbmVzcyAoJDI0OSk6IHRoZSBzdGVwIHRoZSAkNzkgLT4gJDU5OSBjbGlmZiB3YXMgbWlzc2luZy4gOCBzZWF0cywgMjBcbiAgLy8gcGlwZWxpbmVzLCBhbmQgRE9SQSAoYWR2YW5jZWRfcmVwb3J0aW5nKSBpbmNsdWRlZCByYXRoZXIgdGhhbiBhbiBhZGQtb24uXG4gIC8vIEV2ZXJ5IGNvc3QgZHJpdmVyIGlzIDEwMCwwMDAgYXBpQ2FsbHMgYW5kIDIwMCBhaUNhbGxzIFBFUiBTRUFULCB0aGUgc2FtZVxuICAvLyBwZXItc2VhdCByYXRlIGFzIFByby9UZWFtL0VudGVycHJpc2UsIHNvIHRoZSBsYWRkZXIgcmVhZHMgY29uc2lzdGVudGx5IHRvIGFcbiAgLy8gYnV5ZXIgd2hvIGRpdmlkZXMgYnkgaGVhZGNvdW50LiBDb3VudC1xdW90YXMgdGhhdCBUZWFtIGFscmVhZHkgdW5jYXBzIHN0YXlcbiAgLy8gLTE7IGBpZHBDb25maWdzYCBzaXRzIGJldHdlZW4gVGVhbSdzIDUgYW5kIEVudGVycHJpc2UncyB1bmxpbWl0ZWQuXG4gIGJ1c2luZXNzOiB7XG4gICAgcGx1Z2luczogMTAwLFxuICAgIHBpcGVsaW5lczogMjAsXG4gICAgYXBpQ2FsbHM6IDgwMF8wMDAsXG4gICAgYXV0b21hdGlvbkNhbGxzOiAyMTBfMDAwLFxuICAgIGFpQ2FsbHM6IDFfNjAwLFxuICAgIGNwdUNyZWRpdHM6IDQ1XzAwMCxcbiAgICBzdG9yYWdlQnl0ZXM6IDEyMCAqIEdCLFxuICAgIGRhc2hib2FyZHM6IC0xLFxuICAgIGFsZXJ0UnVsZXM6IC0xLFxuICAgIGFsZXJ0RGVzdGluYXRpb25zOiAtMSxcbiAgICBpZHBDb25maWdzOiAxMCxcbiAgICBsaXN0aW5nczogNTAsXG4gICAgc2VhdHM6IDgsXG4gICAgc3VwcG9ydENvbnRhY3RzOiAwLFxuICAgIHN1cHBvcnRQcmVtaXVtQ29udGFjdHM6IDAsXG4gICAgZXZlbnRSZXRlbnRpb25EYXlzOiAzMCxcbiAgICBkb3JhUmV0ZW50aW9uRGF5czogMTgwLFxuICB9LFxuICAvLyBFbnRlcnByaXNlICgkNTk5LCBoZWxkKTogdGhlIGFsbC1pbmNsdXNpdmUgdGllciDigJQgMTUgc2VhdHMsIDMwIHBpcGVsaW5lcywgQUxMXG4gIC8vIHByZW1pdW0gZmVhdHVyZXMgaW5jbHVkZWQgKHNlZSBUSUVSX0ZFQVRVUkVTKS4gRkFJUi1VU0Ug4oCUIGNvc3QgZHJpdmVycyAoYXBpQ2FsbHMsXG4gIC8vIGFpQ2FsbHMsIHN0b3JhZ2VCeXRlcykgY2FwcGVkIHNvIG9uZSBhY2NvdW50IGNhbid0IHJ1biB1cCB1bmJvdW5kZWRcbiAgLy8gY29tcHV0ZS9wcm92aWRlci9zdG9yYWdlIGNvc3Qgb24gYSBmbGF0IHByaWNlOyBjaGVhcCBjb3VudC1xdW90YXMgc3RheSAtMS5cbiAgZW50ZXJwcmlzZToge1xuICAgIHBsdWdpbnM6IDE1MCxcbiAgICBwaXBlbGluZXM6IDMwLFxuICAgIGFwaUNhbGxzOiAxXzUwMF8wMDAsXG4gICAgYXV0b21hdGlvbkNhbGxzOiAzMTBfMDAwLFxuICAgIGFpQ2FsbHM6IDNfMDAwLFxuICAgIGNwdUNyZWRpdHM6IDY3XzUwMCxcbiAgICBzdG9yYWdlQnl0ZXM6IDI1MCAqIEdCLFxuICAgIGRhc2hib2FyZHM6IC0xLFxuICAgIGFsZXJ0UnVsZXM6IC0xLFxuICAgIGFsZXJ0RGVzdGluYXRpb25zOiAtMSxcbiAgICBpZHBDb25maWdzOiAtMSxcbiAgICBsaXN0aW5nczogMTAwLFxuICAgIHNlYXRzOiAxNSxcbiAgICBzdXBwb3J0Q29udGFjdHM6IDAsXG4gICAgc3VwcG9ydFByZW1pdW1Db250YWN0czogMCxcbiAgICBldmVudFJldGVudGlvbkRheXM6IDMwLFxuICAgIGRvcmFSZXRlbnRpb25EYXlzOiAxODAsXG4gIH0sXG4gIC8vIFVubGltaXRlZDogRVZFUlkgcXVvdGEgdW5jYXBwZWQgKC0xKS4gVGhlIGRlZmF1bHQgd2hlbiBiaWxsaW5nIGlzIGRpc2FibGVkXG4gIC8vIChubyBlbmZvcmNlbWVudCBzdXJmYWNlKSDigJQgbmV2ZXIgc2hvd24vc2VsZWN0YWJsZSB3aGVuIGJpbGxpbmcgaXMgZW5hYmxlZC5cbiAgdW5saW1pdGVkOiB7XG4gICAgcGx1Z2luczogLTEsXG4gICAgcGlwZWxpbmVzOiAtMSxcbiAgICBhcGlDYWxsczogLTEsXG4gICAgYXV0b21hdGlvbkNhbGxzOiAtMSxcbiAgICBhaUNhbGxzOiAtMSxcbiAgICBjcHVDcmVkaXRzOiAtMSxcbiAgICBzdG9yYWdlQnl0ZXM6IC0xLFxuICAgIGRhc2hib2FyZHM6IC0xLFxuICAgIGFsZXJ0UnVsZXM6IC0xLFxuICAgIGFsZXJ0RGVzdGluYXRpb25zOiAtMSxcbiAgICBpZHBDb25maWdzOiAtMSxcbiAgICBsaXN0aW5nczogLTEsXG4gICAgc2VhdHM6IC0xLFxuICAgIHN1cHBvcnRDb250YWN0czogLTEsXG4gICAgc3VwcG9ydFByZW1pdW1Db250YWN0czogLTEsXG4gICAgZXZlbnRSZXRlbnRpb25EYXlzOiAtMSxcbiAgICBkb3JhUmV0ZW50aW9uRGF5czogLTEsXG4gIH0sXG59O1xuIl19
@@ -95,4 +95,4 @@ export function daysToExhaustion(input) {
95
95
  return null;
96
96
  return Math.max(0, (limit - used) / perDay);
97
97
  }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNhZ2UtcHJvamVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy91c2FnZS1wcm9qZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILHFGQUFxRjtBQUNyRixNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFhbkM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBTzVCO0lBQ0MsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEYsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQy9DLDJFQUEyRTtJQUMzRSx1REFBdUQ7SUFDdkQsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUVsRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwQyxNQUFNLEtBQUssR0FBRyxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQ2xDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDNUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUNsQywyRUFBMkU7SUFDM0UsaUVBQWlFO0lBQ2pFLElBQUksT0FBTyxJQUFJLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUU5QixvRUFBb0U7SUFDcEUsc0VBQXNFO0lBQ3RFLE1BQU0sS0FBSyxHQUFHLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztJQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQztJQUMzQyxPQUFPO1FBQ0wsU0FBUztRQUNULEtBQUssRUFBRSxTQUFTLEdBQUcsS0FBSztRQUN4QixVQUFVLEVBQUUsU0FBUyxHQUFHLEtBQUs7UUFDN0IsZUFBZSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FDOUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFFM0Msc0VBQXNFO0FBQ3RFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxDQUF5QjtJQUM5RCxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSx1QkFBdUIsQ0FBQztBQUMxRCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FNaEM7SUFDQyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDckMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQy9CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFdoZXJlIGEgcXVvdGEgY291bnRlciBpcyBIRUFERUQsIGZyb20gd2hlcmUgaXQgaXMgbm93LlxuICpcbiAqIEV4dHJhY3RlZCBvdXQgb2YgYGZyb250ZW5kL3NyYy9jb21wb25lbnRzL3F1b3Rhcy9RdW90YUNhcmQudHN4YCwgd2hpY2ggb3duZWRcbiAqIHRoaXMgcHJpdmF0ZWx5IChkb2NzL3BsYW5zL3NhbGVzLWFnZW50Lm1kLCBQaGFzZSAwIGdyb3VuZHdvcmspLiBUaHJlZSBjYWxsZXJzXG4gKiBuZWVkIHRoZSBzYW1lIGFuc3dlciBhbmQgd2VyZSBnb2luZyB0byBjb21wdXRlIGl0IHRocmVlIHdheXM6XG4gKlxuICogIC0gdGhlIHF1b3RhIGNhcmQncyBmb3JlY2FzdCByb3csIHdoaWNoIGlzIHdoZXJlIGl0IHN0YXJ0ZWQ7XG4gKiAgLSB0aGUgdGhyZXNob2xkIG5vdGljZSwgd2hpY2ggZGVjaWRlcyB3aGV0aGVyIHRvIHdhcm47XG4gKiAgLSB0aGUgdXNhZ2UgcHJvZmlsZSdzIFRSQUpFQ1RPUlkgc2lnbmFsIChENCBDbGFzcyAyKSwgd2hpY2ggaXMgdGhlIHdob2xlXG4gKiAgICBiYXNpcyBmb3IgXCJ3aGVuIHdpbGwgdGhleSBydW4gb3V0XCIgcmF0aGVyIHRoYW4gXCJhcmUgdGhleSBvdXRcIi5cbiAqXG4gKiBBIHByb2plY3Rpb24gdGhhdCBkaXNhZ3JlZWQgYmV0d2VlbiB0aGUgcGFnZSBhbmQgdGhlIG9mZmVyIHdvdWxkIGJlIHRoZSB3b3JzdFxuICogcG9zc2libGUgc3BsaXQ6IHRoZSBhY2NvdW50IHJlYWRzIG9uZSBudW1iZXIgb24gdGhlIGNhcmQgYW5kIGdldHMgYW4gb2ZmZXJcbiAqIGFyZ3VlZCBmcm9tIGFub3RoZXIuXG4gKlxuICogREVQRU5ERU5DWS1GUkVFLCBzbyB0aGUgYnJvd3NlciBpbXBvcnRzIGl0IHRocm91Z2ggdGhlIGAuL3VzYWdlLXByb2plY3Rpb25gXG4gKiBzdWJwYXRoIHJhdGhlciB0aGFuIGtlZXBpbmcgdGhlIGNvcHkgaXQgaGFzIG5vdy5cbiAqL1xuXG4vKiogTWlsbGlzZWNvbmRzIGluIGEgZGF5LCBuYW1lZCBiZWNhdXNlIHRoZSBhcml0aG1ldGljIGJlbG93IHJlYWRzIGJldHRlciBmb3IgaXQuICovXG5jb25zdCBEQVlfTVMgPSAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzYWdlUHJvamVjdGlvbiB7XG4gIC8qKiBVbml0cyB0aGUgY291bnRlciBpcyBwYWNpbmcgdG8gcmVhY2ggYnkgYHJlc2V0QXRgLiAqL1xuICBwcm9qZWN0ZWQ6IG51bWJlcjtcbiAgLyoqIGBwcm9qZWN0ZWQgLyBsaW1pdGAuIEFib3ZlIDEgbWVhbnMgdGhlIGNhcCBpcyByZWFjaGVkIGJlZm9yZSB0aGUgcmVzZXQuICovXG4gIHJhdGlvOiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIHRoZSBwYWNlIGV4aGF1c3RzIHRoZSBsaW1pdCBiZWZvcmUgdGhlIHBlcmlvZCBlbmRzLiAqL1xuICB3aWxsQnJlYWNoOiBib29sZWFuO1xuICAvKiogRnJhY3Rpb24gb2YgdGhlIHBlcmlvZCBhbHJlYWR5IGVsYXBzZWQsIDDigJMxLiAqL1xuICBlbGFwc2VkRnJhY3Rpb246IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcm9qZWN0IGEgZmxvdyBjb3VudGVyIHRvIGl0cyBwZXJpb2QgZW5kLCBvciBgbnVsbGAgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvXG4gKiBwcm9qZWN0IGZyb20uXG4gKlxuICogUmV0dXJucyBudWxsIHJhdGhlciB0aGFuIHplcm8gZm9yIGV2ZXJ5IHVucHJvamVjdGFibGUgY2FzZSDigJQgbm8gdXNhZ2UgeWV0LCBhblxuICogdW5saW1pdGVkIG9yIGFic2VudCBsaW1pdCwgYSBwZXJpb2QgdGhhdCBoYXMgbm90IHN0YXJ0ZWQsIGFuIHVucGFyc2VhYmxlXG4gKiByZXNldCDigJQgYmVjYXVzZSB6ZXJvIGlzIGEgRk9SRUNBU1QgYW5kIFwiY2Fubm90IHNheVwiIGlzIG5vdCBvbmUuIEEgY2FsbGVyIHRoYXRcbiAqIHRyZWF0ZWQgdGhlIHR3byBhbGlrZSB3b3VsZCB3YXJuIGFuIGFjY291bnQgYXQgMCUgYW5kIG9mZmVyIGFnYWluc3QgYVxuICogdHJhamVjdG9yeSBub2JvZHkgbWVhc3VyZWQuXG4gKlxuICogVGhlIGJ1cm4gcmF0ZSBpcyBMSU5FQVIsIGFuZCB0aGF0IGlzIGEgZGVsaWJlcmF0ZSBmbG9vciByYXRoZXIgdGhhbiBhIG1vZGVsOlxuICogcmVhbCB3b3JrbG9hZHMgc3Bpa2UsIGJ1dCBhIHN0cmFpZ2h0IGxpbmUgc3RpbGwgY2F0Y2hlcyBcInBhY2luZyB0aHJlZSB0aW1lc1xuICogYWhlYWQgb2YgcGxhblwiLCB3aGljaCBpcyB0aGUgY2FzZSB3b3J0aCBhY3Rpbmcgb24uIEFueXRoaW5nIGNsZXZlcmVyIHdhbnRzIHRoZVxuICogaGlzdG9yeSB0aGUgcHJvZmlsZSBzdG9yZSBrZWVwcyAoRDE2KSwgbm90IGEgYmV0dGVyIGZvcm11bGEgaGVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RVc2FnZShpbnB1dDoge1xuICB1c2VkOiBudW1iZXI7XG4gIGxpbWl0OiBudW1iZXI7XG4gIHJlc2V0QXQ6IHN0cmluZyB8IERhdGU7XG4gIHBlcmlvZERheXM6IG51bWJlcjtcbiAgLyoqIERlZmF1bHRzIHRvIG5vdzsgaW5qZWN0YWJsZSBzbyBhIGNhbGxlciBjYW4gcHJvamVjdCBhcyBvZiBhIHBlcmlvZCdzIGVuZC4gKi9cbiAgbm93PzogbnVtYmVyO1xufSk6IFVzYWdlUHJvamVjdGlvbiB8IG51bGwge1xuICBjb25zdCB7IHVzZWQsIGxpbWl0LCBwZXJpb2REYXlzIH0gPSBpbnB1dDtcbiAgY29uc3QgcmVzZXQgPSBpbnB1dC5yZXNldEF0IGluc3RhbmNlb2YgRGF0ZSA/IGlucHV0LnJlc2V0QXQgOiBuZXcgRGF0ZShpbnB1dC5yZXNldEF0KTtcbiAgaWYgKE51bWJlci5pc05hTihyZXNldC5nZXRUaW1lKCkpKSByZXR1cm4gbnVsbDtcbiAgLy8gYGxpbWl0IDw9IDBgIGNvdmVycyBib3RoIGFuIHVuc2V0IGNhcCBhbmQgdGhlIGAtMWAgdGhhdCBtZWFucyB1bmxpbWl0ZWQ6XG4gIC8vIG5laXRoZXIgaGFzIGEgcmF0aW8sIGFuZCB0aGVyZSBpcyBub3RoaW5nIHRvIGJyZWFjaC5cbiAgaWYgKCEobGltaXQgPiAwKSB8fCAhKHVzZWQgPiAwKSB8fCAhKHBlcmlvZERheXMgPiAwKSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3Qgbm93ID0gaW5wdXQubm93ID8/IERhdGUubm93KCk7XG4gIGNvbnN0IHRvdGFsID0gcGVyaW9kRGF5cyAqIERBWV9NUztcbiAgY29uc3QgcGVyaW9kU3RhcnQgPSByZXNldC5nZXRUaW1lKCkgLSB0b3RhbDtcbiAgY29uc3QgZWxhcHNlZCA9IG5vdyAtIHBlcmlvZFN0YXJ0O1xuICAvLyBCZWZvcmUgdGhlIHBlcmlvZCBvcGVuZWQsIG9yIGV4YWN0bHkgYXQgaXRzIGJvdW5kYXJ5OiBubyBlbGFwc2VkIHRpbWUgdG9cbiAgLy8gZGl2aWRlIGJ5LCBhbmQgZXh0cmFwb2xhdGluZyBmcm9tIHplcm8gZWxhcHNlZCBnaXZlcyBpbmZpbml0eS5cbiAgaWYgKGVsYXBzZWQgPD0gMCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gUGFzdCB0aGUgcmVzZXQgdGhlIHBlcmlvZCBpcyBvdmVyOyB0aGUgcGFjZSBJUyB0aGUgdXNhZ2UsIHdpdGggbm9cbiAgLy8gZXh0cmFwb2xhdGlvbiwgcmF0aGVyIHRoYW4gYSBmaWd1cmUgc2NhbGVkIGJ5IGEgZnJhY3Rpb24gYWJvdmUgb25lLlxuICBjb25zdCBzY2FsZSA9IGVsYXBzZWQgPj0gdG90YWwgPyAxIDogdG90YWwgLyBlbGFwc2VkO1xuICBjb25zdCBwcm9qZWN0ZWQgPSBNYXRoLnJvdW5kKHVzZWQgKiBzY2FsZSk7XG4gIHJldHVybiB7XG4gICAgcHJvamVjdGVkLFxuICAgIHJhdGlvOiBwcm9qZWN0ZWQgLyBsaW1pdCxcbiAgICB3aWxsQnJlYWNoOiBwcm9qZWN0ZWQgPiBsaW1pdCxcbiAgICBlbGFwc2VkRnJhY3Rpb246IE1hdGgubWluKDEsIGVsYXBzZWQgLyB0b3RhbCksXG4gIH07XG59XG5cbi8qKlxuICogVGhlIGJhbmQgYXQgd2hpY2ggYSBwcm9qZWN0aW9uIGlzIHdvcnRoIHNob3dpbmcgYSBwZXJzb24uXG4gKlxuICogU2hhcmVkIHNvIHRoZSBjYXJkJ3MgZm9yZWNhc3Qgcm93IGFuZCB0aGUgcHJvZmlsZSdzIHByZXNzdXJlIHNpZ25hbCBhZ3JlZSBvblxuICogd2hhdCBcImFwcHJvYWNoaW5nXCIgbWVhbnMuIEJlbG93IGl0IHRoZXJlIGlzIGEgcHJvamVjdGlvbiBidXQgbm8gcmVhc29uIHRvIHNheVxuICogYW55dGhpbmcsIHdoaWNoIGlzIGEgZGlmZmVyZW50IHN0YXRlIGZyb20gaGF2aW5nIG5vIHByb2plY3Rpb24gYXQgYWxsLlxuICovXG5leHBvcnQgY29uc3QgUFJPSkVDVElPTl9OT1RJQ0VfUkFUSU8gPSAwLjc7XG5cbi8qKiBXaGV0aGVyIGEgcHJvamVjdGlvbiBoYXMgY3Jvc3NlZCBpbnRvIHRoZSBiYW5kIHdvcnRoIHN1cmZhY2luZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0aW9uV29ydGhTaG93aW5nKHA6IFVzYWdlUHJvamVjdGlvbiB8IG51bGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIHAgIT09IG51bGwgJiYgcC5yYXRpbyA+PSBQUk9KRUNUSU9OX05PVElDRV9SQVRJTztcbn1cblxuLyoqXG4gKiBEYXlzIHVudGlsIHRoZSBjb3VudGVyIHJlYWNoZXMgaXRzIGxpbWl0IGF0IHRoZSBjdXJyZW50IHBhY2UsIG9yIGBudWxsYCB3aGVuXG4gKiBpdCBkb2VzIG5vdCByZWFjaCBpdCBpbnNpZGUgdGhlIHBlcmlvZC5cbiAqXG4gKiBUaGUgVFJBSkVDVE9SWSBzaWduYWwncyBhY3R1YWwgcXVlc3Rpb24gKEQ0IENsYXNzIDIpIOKAlCBcImhvdyBsb25nIGhhdmUgdGhleVxuICogZ290XCIgaXMgd2hhdCBkZWNpZGVzIHdoZXRoZXIgYW4gb2ZmZXIgaXMgdGltZWx5LCB3aGVyZSB0aGUgcHJvamVjdGVkIHRvdGFsXG4gKiBvbmx5IHNheXMgd2hldGhlciBpdCBpcyB3YXJyYW50ZWQuIEZyYWN0aW9uYWwgZGF5cyBhcmUga2VwdDogcm91bmRpbmcgdXAgdG8gYVxuICogd2hvbGUgZGF5IGxvc2VzIGV4YWN0bHkgdGhlIHVyZ2VuY3kgdGhlIHNpZ25hbCBpcyBmb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXlzVG9FeGhhdXN0aW9uKGlucHV0OiB7XG4gIHVzZWQ6IG51bWJlcjtcbiAgbGltaXQ6IG51bWJlcjtcbiAgcmVzZXRBdDogc3RyaW5nIHwgRGF0ZTtcbiAgcGVyaW9kRGF5czogbnVtYmVyO1xuICBub3c/OiBudW1iZXI7XG59KTogbnVtYmVyIHwgbnVsbCB7XG4gIGNvbnN0IHAgPSBwcm9qZWN0VXNhZ2UoaW5wdXQpO1xuICBpZiAoIXAgfHwgIXAud2lsbEJyZWFjaCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHsgdXNlZCwgbGltaXQsIHBlcmlvZERheXMgfSA9IGlucHV0O1xuICBjb25zdCBwZXJEYXkgPSB1c2VkIC8gKHAuZWxhcHNlZEZyYWN0aW9uICogcGVyaW9kRGF5cyk7XG4gIGlmICghKHBlckRheSA+IDApKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIChsaW1pdCAtIHVzZWQpIC8gcGVyRGF5KTtcbn1cbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNhZ2UtcHJvamVjdGlvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3VzYWdlLXByb2plY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgscUZBQXFGO0FBQ3JGLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQWFuQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FPNUI7SUFDQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDMUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDL0MsMkVBQTJFO0lBQzNFLHVEQUF1RDtJQUN2RCxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRWxFLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLFVBQVUsR0FBRyxNQUFNLENBQUM7SUFDbEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUM1QyxNQUFNLE9BQU8sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLDJFQUEyRTtJQUMzRSxpRUFBaUU7SUFDakUsSUFBSSxPQUFPLElBQUksQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRTlCLG9FQUFvRTtJQUNwRSxzRUFBc0U7SUFDdEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO0lBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzNDLE9BQU87UUFDTCxTQUFTO1FBQ1QsS0FBSyxFQUFFLFNBQVMsR0FBRyxLQUFLO1FBQ3hCLFVBQVUsRUFBRSxTQUFTLEdBQUcsS0FBSztRQUM3QixlQUFlLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLEtBQUssQ0FBQztLQUM5QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUUzQyxzRUFBc0U7QUFDdEUsTUFBTSxVQUFVLHNCQUFzQixDQUFDLENBQXlCO0lBQzlELE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLHVCQUF1QixDQUFDO0FBQzFELENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQU1oQztJQUNDLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVU7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNyQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUN2RCxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogV2hlcmUgYSBxdW90YSBjb3VudGVyIGlzIEhFQURFRCwgZnJvbSB3aGVyZSBpdCBpcyBub3cuXG4gKlxuICogRXh0cmFjdGVkIG91dCBvZiBgZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvcXVvdGFzL1F1b3RhQ2FyZC50c3hgLCB3aGljaCBvd25lZFxuICogdGhpcyBwcml2YXRlbHkgKGRvY3MvcGxhbnMvc2FsZXMtYWdlbnQubWQsIFBoYXNlIDAgZ3JvdW5kd29yaykuIFRocmVlIGNhbGxlcnNcbiAqIG5lZWQgdGhlIHNhbWUgYW5zd2VyIGFuZCB3ZXJlIGdvaW5nIHRvIGNvbXB1dGUgaXQgdGhyZWUgd2F5czpcbiAqXG4gKiAgLSB0aGUgcXVvdGEgY2FyZCdzIGZvcmVjYXN0IHJvdywgd2hpY2ggaXMgd2hlcmUgaXQgc3RhcnRlZDtcbiAqICAtIHRoZSB0aHJlc2hvbGQgbm90aWNlLCB3aGljaCBkZWNpZGVzIHdoZXRoZXIgdG8gd2FybjtcbiAqICAtIHRoZSB1c2FnZSBwcm9maWxlJ3MgVFJBSkVDVE9SWSBzaWduYWwgKEQ0IENsYXNzIDIpLCB3aGljaCBpcyB0aGUgd2hvbGVcbiAqICAgIGJhc2lzIGZvciBcIndoZW4gd2lsbCB0aGV5IHJ1biBvdXRcIiByYXRoZXIgdGhhbiBcImFyZSB0aGV5IG91dFwiLlxuICpcbiAqIEEgcHJvamVjdGlvbiB0aGF0IGRpc2FncmVlZCBiZXR3ZWVuIHRoZSBwYWdlIGFuZCB0aGUgb2ZmZXIgd291bGQgYmUgdGhlIHdvcnN0XG4gKiBwb3NzaWJsZSBzcGxpdDogdGhlIGFjY291bnQgcmVhZHMgb25lIG51bWJlciBvbiB0aGUgY2FyZCBhbmQgZ2V0cyBhbiBvZmZlclxuICogYXJndWVkIGZyb20gYW5vdGhlci5cbiAqXG4gKiBERVBFTkRFTkNZLUZSRUUsIHNvIHRoZSBicm93c2VyIGltcG9ydHMgaXQgdGhyb3VnaCB0aGUgYC4vdXNhZ2UtcHJvamVjdGlvbmBcbiAqIHN1YnBhdGggcmF0aGVyIHRoYW4ga2VlcGluZyB0aGUgY29weSBpdCBoYXMgbm93LlxuICovXG5cbi8qKiBNaWxsaXNlY29uZHMgaW4gYSBkYXksIG5hbWVkIGJlY2F1c2UgdGhlIGFyaXRobWV0aWMgYmVsb3cgcmVhZHMgYmV0dGVyIGZvciBpdC4gKi9cbmNvbnN0IERBWV9NUyA9IDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNhZ2VQcm9qZWN0aW9uIHtcbiAgLyoqIFVuaXRzIHRoZSBjb3VudGVyIGlzIHBhY2luZyB0byByZWFjaCBieSBgcmVzZXRBdGAuICovXG4gIHByb2plY3RlZDogbnVtYmVyO1xuICAvKiogYHByb2plY3RlZCAvIGxpbWl0YC4gQWJvdmUgMSBtZWFucyB0aGUgY2FwIGlzIHJlYWNoZWQgYmVmb3JlIHRoZSByZXNldC4gKi9cbiAgcmF0aW86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdGhlIHBhY2UgZXhoYXVzdHMgdGhlIGxpbWl0IGJlZm9yZSB0aGUgcGVyaW9kIGVuZHMuICovXG4gIHdpbGxCcmVhY2g6IGJvb2xlYW47XG4gIC8qKiBGcmFjdGlvbiBvZiB0aGUgcGVyaW9kIGFscmVhZHkgZWxhcHNlZCwgMOKAkzEuICovXG4gIGVsYXBzZWRGcmFjdGlvbjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb2plY3QgYSBmbG93IGNvdW50ZXIgdG8gaXRzIHBlcmlvZCBlbmQsIG9yIGBudWxsYCB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG9cbiAqIHByb2plY3QgZnJvbS5cbiAqXG4gKiBSZXR1cm5zIG51bGwgcmF0aGVyIHRoYW4gemVybyBmb3IgZXZlcnkgdW5wcm9qZWN0YWJsZSBjYXNlIOKAlCBubyB1c2FnZSB5ZXQsIGFuXG4gKiB1bmxpbWl0ZWQgb3IgYWJzZW50IGxpbWl0LCBhIHBlcmlvZCB0aGF0IGhhcyBub3Qgc3RhcnRlZCwgYW4gdW5wYXJzZWFibGVcbiAqIHJlc2V0IOKAlCBiZWNhdXNlIHplcm8gaXMgYSBGT1JFQ0FTVCBhbmQgXCJjYW5ub3Qgc2F5XCIgaXMgbm90IG9uZS4gQSBjYWxsZXIgdGhhdFxuICogdHJlYXRlZCB0aGUgdHdvIGFsaWtlIHdvdWxkIHdhcm4gYW4gYWNjb3VudCBhdCAwJSBhbmQgb2ZmZXIgYWdhaW5zdCBhXG4gKiB0cmFqZWN0b3J5IG5vYm9keSBtZWFzdXJlZC5cbiAqXG4gKiBUaGUgYnVybiByYXRlIGlzIExJTkVBUiwgYW5kIHRoYXQgaXMgYSBkZWxpYmVyYXRlIGZsb29yIHJhdGhlciB0aGFuIGEgbW9kZWw6XG4gKiByZWFsIHdvcmtsb2FkcyBzcGlrZSwgYnV0IGEgc3RyYWlnaHQgbGluZSBzdGlsbCBjYXRjaGVzIFwicGFjaW5nIHRocmVlIHRpbWVzXG4gKiBhaGVhZCBvZiBwbGFuXCIsIHdoaWNoIGlzIHRoZSBjYXNlIHdvcnRoIGFjdGluZyBvbi4gQW55dGhpbmcgY2xldmVyZXIgd2FudHMgdGhlXG4gKiBoaXN0b3J5IHRoZSBwcm9maWxlIHN0b3JlIGtlZXBzIChEMTYpLCBub3QgYSBiZXR0ZXIgZm9ybXVsYSBoZXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdFVzYWdlKGlucHV0OiB7XG4gIHVzZWQ6IG51bWJlcjtcbiAgbGltaXQ6IG51bWJlcjtcbiAgcmVzZXRBdDogc3RyaW5nIHwgRGF0ZTtcbiAgcGVyaW9kRGF5czogbnVtYmVyO1xuICAvKiogRGVmYXVsdHMgdG8gbm93OyBpbmplY3RhYmxlIHNvIGEgY2FsbGVyIGNhbiBwcm9qZWN0IGFzIG9mIGEgcGVyaW9kJ3MgZW5kLiAqL1xuICBub3c/OiBudW1iZXI7XG59KTogVXNhZ2VQcm9qZWN0aW9uIHwgbnVsbCB7XG4gIGNvbnN0IHsgdXNlZCwgbGltaXQsIHBlcmlvZERheXMgfSA9IGlucHV0O1xuICBjb25zdCByZXNldCA9IGlucHV0LnJlc2V0QXQgaW5zdGFuY2VvZiBEYXRlID8gaW5wdXQucmVzZXRBdCA6IG5ldyBEYXRlKGlucHV0LnJlc2V0QXQpO1xuICBpZiAoTnVtYmVyLmlzTmFOKHJlc2V0LmdldFRpbWUoKSkpIHJldHVybiBudWxsO1xuICAvLyBgbGltaXQgPD0gMGAgY292ZXJzIGJvdGggYW4gdW5zZXQgY2FwIGFuZCB0aGUgYC0xYCB0aGF0IG1lYW5zIHVubGltaXRlZDpcbiAgLy8gbmVpdGhlciBoYXMgYSByYXRpbywgYW5kIHRoZXJlIGlzIG5vdGhpbmcgdG8gYnJlYWNoLlxuICBpZiAoIShsaW1pdCA+IDApIHx8ICEodXNlZCA+IDApIHx8ICEocGVyaW9kRGF5cyA+IDApKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBub3cgPSBpbnB1dC5ub3cgPz8gRGF0ZS5ub3coKTtcbiAgY29uc3QgdG90YWwgPSBwZXJpb2REYXlzICogREFZX01TO1xuICBjb25zdCBwZXJpb2RTdGFydCA9IHJlc2V0LmdldFRpbWUoKSAtIHRvdGFsO1xuICBjb25zdCBlbGFwc2VkID0gbm93IC0gcGVyaW9kU3RhcnQ7XG4gIC8vIEJlZm9yZSB0aGUgcGVyaW9kIG9wZW5lZCwgb3IgZXhhY3RseSBhdCBpdHMgYm91bmRhcnk6IG5vIGVsYXBzZWQgdGltZSB0b1xuICAvLyBkaXZpZGUgYnksIGFuZCBleHRyYXBvbGF0aW5nIGZyb20gemVybyBlbGFwc2VkIGdpdmVzIGluZmluaXR5LlxuICBpZiAoZWxhcHNlZCA8PSAwKSByZXR1cm4gbnVsbDtcblxuICAvLyBQYXN0IHRoZSByZXNldCB0aGUgcGVyaW9kIGlzIG92ZXI7IHRoZSBwYWNlIElTIHRoZSB1c2FnZSwgd2l0aCBub1xuICAvLyBleHRyYXBvbGF0aW9uLCByYXRoZXIgdGhhbiBhIGZpZ3VyZSBzY2FsZWQgYnkgYSBmcmFjdGlvbiBhYm92ZSBvbmUuXG4gIGNvbnN0IHNjYWxlID0gZWxhcHNlZCA+PSB0b3RhbCA/IDEgOiB0b3RhbCAvIGVsYXBzZWQ7XG4gIGNvbnN0IHByb2plY3RlZCA9IE1hdGgucm91bmQodXNlZCAqIHNjYWxlKTtcbiAgcmV0dXJuIHtcbiAgICBwcm9qZWN0ZWQsXG4gICAgcmF0aW86IHByb2plY3RlZCAvIGxpbWl0LFxuICAgIHdpbGxCcmVhY2g6IHByb2plY3RlZCA+IGxpbWl0LFxuICAgIGVsYXBzZWRGcmFjdGlvbjogTWF0aC5taW4oMSwgZWxhcHNlZCAvIHRvdGFsKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGUgYmFuZCBhdCB3aGljaCBhIHByb2plY3Rpb24gaXMgd29ydGggc2hvd2luZyBhIHBlcnNvbi5cbiAqXG4gKiBTaGFyZWQgc28gdGhlIGNhcmQncyBmb3JlY2FzdCByb3cgYW5kIHRoZSBwcm9maWxlJ3MgcHJlc3N1cmUgc2lnbmFsIGFncmVlIG9uXG4gKiB3aGF0IFwiYXBwcm9hY2hpbmdcIiBtZWFucy4gQmVsb3cgaXQgdGhlcmUgaXMgYSBwcm9qZWN0aW9uIGJ1dCBubyByZWFzb24gdG8gc2F5XG4gKiBhbnl0aGluZywgd2hpY2ggaXMgYSBkaWZmZXJlbnQgc3RhdGUgZnJvbSBoYXZpbmcgbm8gcHJvamVjdGlvbiBhdCBhbGwuXG4gKi9cbmV4cG9ydCBjb25zdCBQUk9KRUNUSU9OX05PVElDRV9SQVRJTyA9IDAuNztcblxuLyoqIFdoZXRoZXIgYSBwcm9qZWN0aW9uIGhhcyBjcm9zc2VkIGludG8gdGhlIGJhbmQgd29ydGggc3VyZmFjaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3Rpb25Xb3J0aFNob3dpbmcocDogVXNhZ2VQcm9qZWN0aW9uIHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gcCAhPT0gbnVsbCAmJiBwLnJhdGlvID49IFBST0pFQ1RJT05fTk9USUNFX1JBVElPO1xufVxuXG4vKipcbiAqIERheXMgdW50aWwgdGhlIGNvdW50ZXIgcmVhY2hlcyBpdHMgbGltaXQgYXQgdGhlIGN1cnJlbnQgcGFjZSwgb3IgYG51bGxgIHdoZW5cbiAqIGl0IGRvZXMgbm90IHJlYWNoIGl0IGluc2lkZSB0aGUgcGVyaW9kLlxuICpcbiAqIFRoZSBUUkFKRUNUT1JZIHNpZ25hbCdzIGFjdHVhbCBxdWVzdGlvbiAoRDQgQ2xhc3MgMikg4oCUIFwiaG93IGxvbmcgaGF2ZSB0aGV5XG4gKiBnb3RcIiBpcyB3aGF0IGRlY2lkZXMgd2hldGhlciBhbiBvZmZlciBpcyB0aW1lbHksIHdoZXJlIHRoZSBwcm9qZWN0ZWQgdG90YWxcbiAqIG9ubHkgc2F5cyB3aGV0aGVyIGl0IGlzIHdhcnJhbnRlZC4gRnJhY3Rpb25hbCBkYXlzIGFyZSBrZXB0OiByb3VuZGluZyB1cCB0byBhXG4gKiB3aG9sZSBkYXkgbG9zZXMgZXhhY3RseSB0aGUgdXJnZW5jeSB0aGUgc2lnbmFsIGlzIGZvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRheXNUb0V4aGF1c3Rpb24oaW5wdXQ6IHtcbiAgdXNlZDogbnVtYmVyO1xuICBsaW1pdDogbnVtYmVyO1xuICByZXNldEF0OiBzdHJpbmcgfCBEYXRlO1xuICBwZXJpb2REYXlzOiBudW1iZXI7XG4gIG5vdz86IG51bWJlcjtcbn0pOiBudW1iZXIgfCBudWxsIHtcbiAgY29uc3QgcCA9IHByb2plY3RVc2FnZShpbnB1dCk7XG4gIGlmICghcCB8fCAhcC53aWxsQnJlYWNoKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyB1c2VkLCBsaW1pdCwgcGVyaW9kRGF5cyB9ID0gaW5wdXQ7XG4gIGNvbnN0IHBlckRheSA9IHVzZWQgLyAocC5lbGFwc2VkRnJhY3Rpb24gKiBwZXJpb2REYXlzKTtcbiAgaWYgKCEocGVyRGF5ID4gMCkpIHJldHVybiBudWxsO1xuICByZXR1cm4gTWF0aC5tYXgoMCwgKGxpbWl0IC0gdXNlZCkgLyBwZXJEYXkpO1xufVxuIl19
@@ -19,4 +19,4 @@
19
19
  * `requireVisibilityWriteAccess` gates the writes.
20
20
  */
21
21
  export const VISIBILITIES = ['private', 'org', 'public'];
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy92aXNpYmlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBzaW5nbGUgc2hhcmluZyBtb2RlbCBmb3IgZXZlcnkgY2F0YWxvZyBlbnRpdHk6IHBpcGVsaW5lcywgcGx1Z2lucyxcbiAqIHBpcGVsaW5lIHRlbXBsYXRlcywgYW5kIGRhc2hib2FyZHMuXG4gKlxuICogVGhyZWUgcnVuZ3MsIHdpZGVuaW5nIGxlZnQgdG8gcmlnaHQ6XG4gKlxuICogLSBgcHJpdmF0ZWAg4oCUIG9ubHkgdGhlIEFVVEhPUiAoYGNyZWF0ZWRCeWApIGNhbiBzZWUgb3IgZWRpdCBpdC4gQSBwZXJzb25hbFxuICogICBkcmFmdDogc29tZXdoZXJlIHRvIGl0ZXJhdGUgYmVmb3JlIGFueW9uZSBlbHNlIGlzIGFmZmVjdGVkLlxuICogLSBgb3JnYCAgICAg4oCUIGV2ZXJ5b25lIGluIHRoZSBvd25pbmcgb3JnIGNhbiBzZWUgaXQ7IHRoZSByZXNvdXJjZSdzIGA6d3JpdGVgXG4gKiAgIHBlcm1pc3Npb24gZWRpdHMgaXQuIFRoaXMgaXMgdGhlIGRlZmF1bHQgd29ya2luZyBzdGF0ZSBmb3Igc2hhcmVkIGNvbnRlbnQuXG4gKiAtIGBwdWJsaWNgICDigJQgc2hhcmVkIGJleW9uZCB0aGUgb3JnOiBhIHRlYW0gYWxzbyBzZWVzIGl0cyBwYXJlbnQgb3JnJ3MgcHVibGljXG4gKiAgIHJvd3MsIGFuZCB0aGUgc3lzdGVtIG9yZydzIHB1YmxpYyByb3dzIGFyZSB0aGUgc2hhcmVkIGNhdGFsb2cgZXZlcnkgb3JnXG4gKiAgIHNlZXMuIFJlcXVpcmVzIHRoZSByZXNvdXJjZSdzIGA6cHVibGlzaGAgcGVybWlzc2lvbi5cbiAqXG4gKiBFbmZvcmNlbWVudCBsaXZlcyBpbiBleGFjdGx5IHR3byBwbGFjZXMsIHNvIG5vIGVudGl0eSBjYW4gZHJpZnQ6XG4gKiBgQWNjZXNzQ29udHJvbFF1ZXJ5QnVpbGRlcmAgYnVpbGRzIHRoZSByZWFkIHByZWRpY2F0ZSwgYW5kXG4gKiBgcmVxdWlyZVZpc2liaWxpdHlXcml0ZUFjY2Vzc2AgZ2F0ZXMgdGhlIHdyaXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFZJU0lCSUxJVElFUyA9IFsncHJpdmF0ZScsICdvcmcnLCAncHVibGljJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBWaXNpYmlsaXR5ID0gKHR5cGVvZiBWSVNJQklMSVRJRVMpW251bWJlcl07XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJpbGl0eS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3Zpc2liaWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHNpbmdsZSBzaGFyaW5nIG1vZGVsIGZvciBldmVyeSBjYXRhbG9nIGVudGl0eTogcGlwZWxpbmVzLCBwbHVnaW5zLFxuICogcGlwZWxpbmUgdGVtcGxhdGVzLCBhbmQgZGFzaGJvYXJkcy5cbiAqXG4gKiBUaHJlZSBydW5ncywgd2lkZW5pbmcgbGVmdCB0byByaWdodDpcbiAqXG4gKiAtIGBwcml2YXRlYCDigJQgb25seSB0aGUgQVVUSE9SIChgY3JlYXRlZEJ5YCkgY2FuIHNlZSBvciBlZGl0IGl0LiBBIHBlcnNvbmFsXG4gKiAgIGRyYWZ0OiBzb21ld2hlcmUgdG8gaXRlcmF0ZSBiZWZvcmUgYW55b25lIGVsc2UgaXMgYWZmZWN0ZWQuXG4gKiAtIGBvcmdgICAgICDigJQgZXZlcnlvbmUgaW4gdGhlIG93bmluZyBvcmcgY2FuIHNlZSBpdDsgdGhlIHJlc291cmNlJ3MgYDp3cml0ZWBcbiAqICAgcGVybWlzc2lvbiBlZGl0cyBpdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB3b3JraW5nIHN0YXRlIGZvciBzaGFyZWQgY29udGVudC5cbiAqIC0gYHB1YmxpY2AgIOKAlCBzaGFyZWQgYmV5b25kIHRoZSBvcmc6IGEgdGVhbSBhbHNvIHNlZXMgaXRzIHBhcmVudCBvcmcncyBwdWJsaWNcbiAqICAgcm93cywgYW5kIHRoZSBzeXN0ZW0gb3JnJ3MgcHVibGljIHJvd3MgYXJlIHRoZSBzaGFyZWQgY2F0YWxvZyBldmVyeSBvcmdcbiAqICAgc2Vlcy4gUmVxdWlyZXMgdGhlIHJlc291cmNlJ3MgYDpwdWJsaXNoYCBwZXJtaXNzaW9uLlxuICpcbiAqIEVuZm9yY2VtZW50IGxpdmVzIGluIGV4YWN0bHkgdHdvIHBsYWNlcywgc28gbm8gZW50aXR5IGNhbiBkcmlmdDpcbiAqIGBBY2Nlc3NDb250cm9sUXVlcnlCdWlsZGVyYCBidWlsZHMgdGhlIHJlYWQgcHJlZGljYXRlLCBhbmRcbiAqIGByZXF1aXJlVmlzaWJpbGl0eVdyaXRlQWNjZXNzYCBnYXRlcyB0aGUgd3JpdGVzLlxuICovXG5leHBvcnQgY29uc3QgVklTSUJJTElUSUVTID0gWydwcml2YXRlJywgJ29yZycsICdwdWJsaWMnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFZpc2liaWxpdHkgPSAodHlwZW9mIFZJU0lCSUxJVElFUylbbnVtYmVyXTtcbiJdfQ==
@@ -27,6 +27,13 @@ export declare const MESSAGE_TYPES: readonly ['announcement', 'conversation'];
27
27
  export type MessageType = (typeof MESSAGE_TYPES)[number];
28
28
  export declare const MESSAGE_PRIORITIES: readonly ['normal', 'high', 'urgent'];
29
29
  export type MessagePriority = (typeof MESSAGE_PRIORITIES)[number];
30
+ /**
31
+ * Who SENT a root message, relative to the viewer: `me` (the viewing user
32
+ * authored it), `org` (the viewing org sent it — any member), `others` (it
33
+ * arrived from another org, announcements included).
34
+ */
35
+ export declare const MESSAGE_SENT_BY: readonly ['me', 'org', 'others'];
36
+ export type MessageSentBy = (typeof MESSAGE_SENT_BY)[number];
30
37
  export declare const SUBSCRIPTION_STATUSES: readonly ['active', 'canceled', 'past_due', 'trialing', 'incomplete'];
31
38
  export type SubscriptionStatus = (typeof SUBSCRIPTION_STATUSES)[number];
32
39
  export declare const BILLING_INTERVALS: readonly ['monthly', 'annual'];
@@ -37,6 +37,12 @@ export const RULE_SCOPES = ['org', 'published'];
37
37
  // -----------------------------------------------------------------------------
38
38
  export const MESSAGE_TYPES = ['announcement', 'conversation'];
39
39
  export const MESSAGE_PRIORITIES = ['normal', 'high', 'urgent'];
40
+ /**
41
+ * Who SENT a root message, relative to the viewer: `me` (the viewing user
42
+ * authored it), `org` (the viewing org sent it — any member), `others` (it
43
+ * arrived from another org, announcements included).
44
+ */
45
+ export const MESSAGE_SENT_BY = ['me', 'org', 'others'];
40
46
  // -----------------------------------------------------------------------------
41
47
  // Billing
42
48
  // -----------------------------------------------------------------------------
@@ -116,4 +122,4 @@ export const PLUGIN_SECURITY_DIGEST_MODES = ['immediate', 'daily', 'weekly'];
116
122
  // the labels were in a frontend mirror of both. One keyed catalog is importable
117
123
  // by the browser, so the mirror and the test that parsed this package's source
118
124
  // to detect drift are both gone.
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS12b2NhYnVsYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3dpcmUtdm9jYWJ1bGFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7R0FTRztBQUVILGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFHekUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRzVELHVGQUF1RjtBQUN2RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsSUFBSSxFQUFFLEtBQUs7SUFDWCxVQUFVLEVBQUUsYUFBYTtJQUN6QixPQUFPO0lBQ1AsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztJQUN4QixJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVTtJQUNqQyxTQUFTLEVBQUUsU0FBUztJQUNwQixVQUFVLEVBQUUsVUFBVTtDQUNkLENBQUM7QUFHWCxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBNEMsQ0FBQztBQUV2SCwwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFVLENBQUM7QUFHNUQsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQVUsQ0FBQztBQUd6RCxnRkFBZ0Y7QUFDaEYsV0FBVztBQUNYLGdGQUFnRjtBQUVoRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxjQUFjLEVBQUUs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LFVBQVUsRUFBRSxXQUFXLENBQVUsQ0FBQztBQUdwRyxvRkFBb0Y7QUFDcEYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQVUsQ0FBQztBQUc1RixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBR2xGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFHNUUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQVUsQ0FBQztBQUc1Rjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTO0NBQzNHLENBQUM7QUFHWCxnRkFBZ0Y7QUFDaEYsMENBQTBDO0FBQzFDLGdGQUFnRjtBQUVoRjsyRUFDMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFVLENBQUM7QUFHN0Usd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQVUsQ0FBQztBQUd0Riw2RUFBNkU7QUFDN0Usd0VBQXdFO0FBQ3hFLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsZ0ZBQWdGO0FBQ2hGLCtFQUErRTtBQUMvRSxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBDbG9zZWQgc3RyaW5nIHZvY2FidWxhcmllcyB0aGF0IGNyb3NzIHRoZSB3aXJlIGJldHdlZW4gdGhlIHNlcnZpY2VzIGFuZCB0aGVcbiAqIGJyb3dzZXIuIEVhY2ggaXMgYW4gYGFzIGNvbnN0YCBhcnJheSAodGhlIHJ1bnRpbWUgbGlzdCBhIFpvZCBlbnVtLCBhIE1vbmdvb3NlXG4gKiBlbnVtIG9yIGEgZHJpenpsZSBgJHR5cGVgIGJ1aWxkcyBmcm9tKSBwbHVzIHRoZSB1bmlvbiB0eXBlIGRlcml2ZWQgZnJvbSBpdC5cbiAqXG4gKiBEZXBlbmRlbmN5LWZyZWUgb24gcHVycG9zZTogdGhlIGZyb250ZW5kIGltcG9ydHMgdGhlc2UgdHlwZXMsIHNvIGEgdmFsdWUgYWRkZWRcbiAqIGhlcmUgcmVhY2hlcyB0aGUgVUkncyBleGhhdXN0aXZlIGxhYmVsIG1hcHMgYXMgYSBjb21waWxlIGVycm9yIGluc3RlYWQgb2YgYVxuICogc2lsZW50bHkgdW5oYW5kbGVkIHN0cmluZy4gVGhlIFBvc3RncmVzIENIRUNLIGNvbnN0cmFpbnRzIGluIGVhY2ggZGVwbG95XG4gKiB0YXJnZXQncyBgcG9zdGdyZXMtaW5pdC5zcWxgIG1pcnJvciB0aGUgb25lcyBzdG9yZWQgaW4gU1FMLlxuICovXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb21wbGlhbmNlIHJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgUlVMRV9TRVZFUklUSUVTID0gWyd3YXJuaW5nJywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlU2V2ZXJpdHkgPSAodHlwZW9mIFJVTEVfU0VWRVJJVElFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IFJVTEVfVEFSR0VUUyA9IFsncGx1Z2luJywgJ3BpcGVsaW5lJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlVGFyZ2V0ID0gKHR5cGVvZiBSVUxFX1RBUkdFVFMpW251bWJlcl07XG5cbi8qKiBGaWVsZC1ldmFsdWF0aW9uIG9wZXJhdG9yczsgdGhlIGVuZ2luZSdzIGltcGxlbWVudGF0aW9ucyBsaXZlIGluIGFwaS9jb21wbGlhbmNlLiAqL1xuZXhwb3J0IGNvbnN0IFJVTEVfT1BFUkFUT1JTID0gW1xuICAnZXEnLCAnbmVxJyxcbiAgJ2NvbnRhaW5zJywgJ25vdENvbnRhaW5zJyxcbiAgJ3JlZ2V4JyxcbiAgJ2d0JywgJ2d0ZScsICdsdCcsICdsdGUnLFxuICAnaW4nLCAnbm90SW4nLFxuICAnZXhpc3RzJywgJ25vdEV4aXN0cycsICdub3RFbXB0eScsXG4gICdjb3VudEd0JywgJ2NvdW50THQnLFxuICAnbGVuZ3RoR3QnLCAnbGVuZ3RoTHQnLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVPcGVyYXRvciA9ICh0eXBlb2YgUlVMRV9PUEVSQVRPUlMpW251bWJlcl07XG5cbi8qKiBPcGVyYXRvcnMgdGhhdCB0ZXN0IHByZXNlbmNlIG9ubHkgYW5kIHRha2Ugbm8gY29tcGFyaXNvbiB2YWx1ZS4gKi9cbmV4cG9ydCBjb25zdCBWQUxVRUxFU1NfUlVMRV9PUEVSQVRPUlMgPSBbJ2V4aXN0cycsICdub3RFeGlzdHMnLCAnbm90RW1wdHknXSBhcyBjb25zdCBzYXRpc2ZpZXMgcmVhZG9ubHkgUnVsZU9wZXJhdG9yW107XG5cbi8qKiBIb3cgYSBtdWx0aS1jb25kaXRpb24gcnVsZSBjb21iaW5lcyBpdHMgY29uZGl0aW9ucy4gKi9cbmV4cG9ydCBjb25zdCBSVUxFX0NPTkRJVElPTl9NT0RFUyA9IFsnYWxsJywgJ2FueSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZUNvbmRpdGlvbk1vZGUgPSAodHlwZW9mIFJVTEVfQ09ORElUSU9OX01PREVTKVtudW1iZXJdO1xuXG4vKiogYHB1Ymxpc2hlZGAgcnVsZXMgYmVsb25nIHRvIHRoZSBzeXN0ZW0gb3JnIGFuZCBhcHBseSBieSBzdWJzY3JpcHRpb24uICovXG5leHBvcnQgY29uc3QgUlVMRV9TQ09QRVMgPSBbJ29yZycsICdwdWJsaXNoZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVTY29wZSA9ICh0eXBlb2YgUlVMRV9TQ09QRVMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNZXNzYWdlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IE1FU1NBR0VfVFlQRVMgPSBbJ2Fubm91bmNlbWVudCcsICdjb252ZXJzYXRpb24nXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIE1lc3NhZ2VUeXBlID0gKHR5cGVvZiBNRVNTQUdFX1RZUEVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9QUklPUklUSUVTID0gWydub3JtYWwnLCAnaGlnaCcsICd1cmdlbnQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIE1lc3NhZ2VQcmlvcml0eSA9ICh0eXBlb2YgTUVTU0FHRV9QUklPUklUSUVTKVtudW1iZXJdO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmlsbGluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFNVQlNDUklQVElPTl9TVEFUVVNFUyA9IFsnYWN0aXZlJywgJ2NhbmNlbGVkJywgJ3Bhc3RfZHVlJywgJ3RyaWFsaW5nJywgJ2luY29tcGxldGUnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFN1YnNjcmlwdGlvblN0YXR1cyA9ICh0eXBlb2YgU1VCU0NSSVBUSU9OX1NUQVRVU0VTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQklMTElOR19JTlRFUlZBTFMgPSBbJ21vbnRobHknLCAnYW5udWFsJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBCaWxsaW5nSW50ZXJ2YWwgPSAodHlwZW9mIEJJTExJTkdfSU5URVJWQUxTKVtudW1iZXJdO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSWRlbnRpdHlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBPSURDIHByb3ZpZGVycyBhbiBvcmcgSWRQIGNvbmZpZyBjYW4gbmFtZSAoR2l0SHViIGlzIE9BdXRoLW9ubHkgYW5kIHJlZnVzZWQgYnkgdGhlIE9JREMgZW5naW5lKS4gKi9cbmV4cG9ydCBjb25zdCBJRFBfUFJPVklERVJTID0gWydnZW5lcmljLW9pZGMnLCAnY29nbml0bycsICdnb29nbGUnLCAnZ2l0aHViJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJZHBQcm92aWRlciA9ICh0eXBlb2YgSURQX1BST1ZJREVSUylbbnVtYmVyXTtcblxuLyoqIFRoZSBmZWRlcmF0aW9uIHByb3RvY29sIGFuIG9yZyBzaWducyBpbiBvdmVyIOKAlCBvbmUgcGVyIG9yZy4gKi9cbmV4cG9ydCBjb25zdCBJRFBfUFJPVE9DT0xTID0gWydvaWRjJywgJ3NhbWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIElkcFByb3RvY29sID0gKHR5cGVvZiBJRFBfUFJPVE9DT0xTKVtudW1iZXJdO1xuXG4vKipcbiAqIFdoaWNoIFNBTUwgYXNzZXJ0aW9uIGF0dHJpYnV0ZSBjYXJyaWVzIHdoaWNoIGlkZW50aXR5IGZpZWxkLiBBbiBlbXB0eSBuYW1lXG4gKiBtZWFucyBcInVzZSB0aGUgY29tbW9uIHNwZWxsaW5nc1wiIChzaG9ydCBuYW1lcyBwbHVzIHRoZSBFbnRyYS9TaGliYm9sZXRoIFVSSXMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhbWxBdHRyaWJ1dGVNYXBwaW5nIHtcbiAgLyoqIEF0dHJpYnV0ZSBob2xkaW5nIHRoZSB1c2VyJ3MgZW1haWwgYWRkcmVzcy4gKi9cbiAgZW1haWw/OiBzdHJpbmc7XG4gIC8qKiBBdHRyaWJ1dGUgaG9sZGluZyB0aGUgZGlzcGxheSBuYW1lLiAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogQXR0cmlidXRlIGhvbGRpbmcgZ3JvdXAgbWVtYmVyc2hpcHMgKGRyaXZlcyBKSVQgcm9sZSBtYXBwaW5nKS4gKi9cbiAgZ3JvdXBzPzogc3RyaW5nO1xufVxuXG4vKiogVGhlIGNvYXJzZSBncmFudCBhIHBlcm1pc3Npb24gcm9sZSBnaXZlcyBpdHMgbWVtYmVycy4gKi9cbmV4cG9ydCBjb25zdCBST0xFX0dSQU5UUyA9IFsnc3VwZXJhZG1pbicsICdhZG1pbicsICdtZW1iZXInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJvbGVHcmFudCA9ICh0eXBlb2YgUk9MRV9HUkFOVFMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQbHVnaW4gZWNvc3lzdGVtIChlYWNoIG1pcnJvcmVkIGJ5IGEgQ0hFQ0sgaW4gcG9zdGdyZXMtaW5pdC5zcWwpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogUHVibGlzaGVyIHRydXN0IHRpZXIuICovXG5leHBvcnQgY29uc3QgUFVCTElTSEVSX1RJRVJTID0gWydvZmZpY2lhbCcsICd2ZXJpZmllZCcsICdjb21tdW5pdHknLCAndW52ZXJpZmllZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaGVyVGllciA9ICh0eXBlb2YgUFVCTElTSEVSX1RJRVJTKVtudW1iZXJdO1xuXG4vKiogQSBkaXJlY3RvcnkgbGlzdGluZydzIGxpZmVjeWNsZSBzdGF0ZS4gKi9cbmV4cG9ydCBjb25zdCBMSVNUSU5HX1NUQVRFUyA9IFsnbGlzdGVkJywgJ3VubWFpbnRhaW5lZCcsICdzdXNwZW5kZWQnLCAndHJhbnNmZXJyZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIExpc3RpbmdTdGF0ZSA9ICh0eXBlb2YgTElTVElOR19TVEFURVMpW251bWJlcl07XG5cbi8qKiBXaGF0IGEgcHVibGlzaCByZXF1ZXN0IGFza3MgdGhlIHN5c3RlbSBvcmcgdG8gZG8uICovXG5leHBvcnQgY29uc3QgUFVCTElTSF9SRVFVRVNUX0tJTkRTID0gW1xuICAnbmV3X2xpc3RpbmcnLCAnbmV3X3ZlcnNpb24nLCAnbGlzdGluZ191cGRhdGUnLCAneWFuaycsICd1bnBhdXNlJyxcbiAgJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ2Fkdmlzb3J5JywgJ3ZlcmlmeScsICdtb2RlcmF0aW9uJywgJ3N1Ym1pc3Npb24nLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hSZXF1ZXN0S2luZCA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX0tJTkRTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTID0gWydwZW5kaW5nJywgJ3BlbmRpbmdfc2Vjb25kX2FwcHJvdmFsJywgJ2FwcHJvdmVkJywgJ3JlamVjdGVkJywgJ3dpdGhkcmF3biddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaFJlcXVlc3RTdGF0dXMgPSAodHlwZW9mIFBVQkxJU0hfUkVRVUVTVF9TVEFUVVNFUylbbnVtYmVyXTtcblxuLyoqIFRoZSBzdGF0dXNlcyBhIHJlcXVlc3QgaXMgc3RpbGwgXCJvcGVuXCIgaW4gKGRyaXZlcyB0aGUgb25lLW9wZW4tcmVxdWVzdCBpbmRleCkuICovXG5leHBvcnQgY29uc3QgT1BFTl9QVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMgPSBbJ3BlbmRpbmcnLCAncGVuZGluZ19zZWNvbmRfYXBwcm92YWwnXSBhcyBjb25zdCBzYXRpc2ZpZXMgcmVhZG9ubHkgUHVibGlzaFJlcXVlc3RTdGF0dXNbXTtcblxuLyoqIGBzZWN1cml0eWAgcmVxdWVzdHMganVtcCB0aGUgbW9kZXJhdGlvbiBxdWV1ZS4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfTEFORVMgPSBbJ3N0YW5kYXJkJywgJ3NlY3VyaXR5J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoUmVxdWVzdExhbmUgPSAodHlwZW9mIFBVQkxJU0hfUkVRVUVTVF9MQU5FUylbbnVtYmVyXTtcblxuLyoqIEluc3RhbGwgdmVyc2lvbiBwb2xpY3k6IGV4YWN0LCBgfmAsIGBeYCwgb3IgYW55dGhpbmcgbm9uLWJyZWFraW5nLiAqL1xuZXhwb3J0IGNvbnN0IElOU1RBTExfVkVSU0lPTl9QT0xJQ0lFUyA9IFsncGlubmVkJywgJ3BhdGNoJywgJ21pbm9yJywgJ2xhdGVzdCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSW5zdGFsbFZlcnNpb25Qb2xpY3kgPSAodHlwZW9mIElOU1RBTExfVkVSU0lPTl9QT0xJQ0lFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IElOU1RBTExfU1RBVFVTRVMgPSBbJ2FjdGl2ZScsICdwZW5kaW5nX2FwcHJvdmFsJywgJ2RlbmllZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSW5zdGFsbFN0YXR1cyA9ICh0eXBlb2YgSU5TVEFMTF9TVEFUVVNFUylbbnVtYmVyXTtcblxuLyoqIFRoZSBhZHZpc29yeSBzZXZlcml0eSBhdCB3aGljaCBhIGNvbnN1bXB0aW9uIHBvbGljeSBibG9ja3MgaW5zdGFsbHMuICovXG5leHBvcnQgY29uc3QgQkxPQ0tfT05fQURWSVNPUllfTEVWRUxTID0gWydjcml0aWNhbCcsICdoaWdoJywgJ25ldmVyJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBCbG9ja09uQWR2aXNvcnkgPSAodHlwZW9mIEJMT0NLX09OX0FEVklTT1JZX0xFVkVMUylbbnVtYmVyXTtcblxuLyoqIFdoZXRoZXIgb2ZmaWNpYWwgcGx1Z2lucyBuZWVkIGFuIGV4cGxpY2l0IGluc3RhbGwgYmVmb3JlIGEgcGlwZWxpbmUgY2FuIHVzZSB0aGVtLiAqL1xuZXhwb3J0IGNvbnN0IE9GRklDSUFMX0lOU1RBTExTX01PREVTID0gWydpbXBsaWNpdCcsICdleHBsaWNpdCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgT2ZmaWNpYWxJbnN0YWxscyA9ICh0eXBlb2YgT0ZGSUNJQUxfSU5TVEFMTFNfTU9ERVMpW251bWJlcl07XG5cbi8qKlxuICogV2hhdCBoYXBwZW5zIHdoZW4gYW4gb3JnIGRlZmluZXMgYSBwbHVnaW4gTkFNRSB0aGF0IG92ZXJyaWRlcyBzb21ldGhpbmcgaXRcbiAqIHdvdWxkIG90aGVyd2lzZSByZXNvbHZlIOKAlCBhIGxpc3RpbmcsIG9yIChmb3IgYSB0ZWFtKSBpdHMgcGFyZW50IG9yZydzIHBsdWdpbi5cbiAqXG4gKiBgYWxsb3dgIGtlZXBzIHRvZGF5J3MgYmVoYXZpb3VyOiB0aGUgb3ZlcnJpZGUgaXMgc2lsZW50IGJleW9uZCB0aGUgZGFzaGJvYXJkXG4gKiBiYW5uZXIuIGB3YXJuYCBpcyB0aGUgc2FtZSByZXNvbHV0aW9uIHdpdGggdGhlIGZhY3QgcmVjb3JkZWQgcHJvbWluZW50bHkuXG4gKiBgZGVueWAgcmVmdXNlcyB0aGUgdXBsb2FkLCB3aGljaCBpcyB0aGUgb25seSBzZXR0aW5nIHRoYXQgYWN0dWFsbHkgc3RvcHMgYVxuICogdGVhbSByZXBsYWNpbmcgdGhlIE9mZmljaWFsIGB0cml2eWAgZm9yIGV2ZXJ5IHBpcGVsaW5lIHRoYXQgbmFtZXMgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBTSEFET1dJTkdfTU9ERVMgPSBbJ2FsbG93JywgJ3dhcm4nLCAnZGVueSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU2hhZG93aW5nTW9kZSA9ICh0eXBlb2YgU0hBRE9XSU5HX01PREVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgUkVWSUVXX1NUQVRVU0VTID0gWydwdWJsaXNoZWQnLCAnaGVsZCcsICdyZW1vdmVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXZpZXdTdGF0dXMgPSAodHlwZW9mIFJFVklFV19TVEFUVVNFUylbbnVtYmVyXTtcblxuLyoqIFdoeSBhIGhlbGQgcmV2aWV3IGlzIGhlbGQuICovXG5leHBvcnQgY29uc3QgUkVWSUVXX0hPTERfUkVBU09OUyA9IFsncmVwb3J0cycsICdidXJzdCcsICdmaWx0ZXInLCAnc2VjdXJpdHknLCAnbW9kZXJhdG9yJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXZpZXdIb2xkUmVhc29uID0gKHR5cGVvZiBSRVZJRVdfSE9MRF9SRUFTT05TKVtudW1iZXJdO1xuXG4vKiogQSByZXZpZXcgcmVwb3J0J3MgY2F0ZWdvcnk7IGBzZWN1cml0eWAgcm91dGVzIHByaXZhdGVseSB0byB0aGUgYWR2aXNvcnkgcGF0aC4gKi9cbmV4cG9ydCBjb25zdCBSRVZJRVdfUkVQT1JUX0NBVEVHT1JJRVMgPSBbJ3NwYW0nLCAnYWJ1c2UnLCAnb2ZmX3RvcGljJywgJ3NlY3VyaXR5J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXZpZXdSZXBvcnRDYXRlZ29yeSA9ICh0eXBlb2YgUkVWSUVXX1JFUE9SVF9DQVRFR09SSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQURWSVNPUllfU0VWRVJJVElFUyA9IFsnY3JpdGljYWwnLCAnaGlnaCcsICdtZWRpdW0nLCAnbG93J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBBZHZpc29yeVNldmVyaXR5ID0gKHR5cGVvZiBBRFZJU09SWV9TRVZFUklUSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQURWSVNPUllfU1RBVEVTID0gWydkcmFmdCcsICdwdWJsaXNoZWQnLCAnd2l0aGRyYXduJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBBZHZpc29yeVN0YXRlID0gKHR5cGVvZiBBRFZJU09SWV9TVEFURVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBBRFZJU09SWV9TT1VSQ0VTID0gWydwdWJsaXNoZXInLCAnbW9kZXJhdG9yJywgJ2N2ZV9yZXNjYW4nLCAncmV2aWV3J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBBZHZpc29yeVNvdXJjZSA9ICh0eXBlb2YgQURWSVNPUllfU09VUkNFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBBbiBhbm9ueW1vdXMgc3VibWlzc2lvbidzIGxpZmVjeWNsZS4gYHB1Ymxpc2hpbmdgIGlzIHRoZSBzaG9ydCBjbGFpbSBhblxuICogYXBwcm92YWwgdGFrZXMgYmVmb3JlIGl0IGNvcGllcyB0aGUgcXVhcmFudGluZWQgaW1hZ2Ugb3V0LCBzbyBhbiBleHBpcnkgY2FuXG4gKiBuZXZlciBkZWxldGUgdGhlIGFydGlmYWN0cyBvZiBhIHN1Ym1pc3Npb24gdGhhdCBpcyBiZWluZyBwdWJsaXNoZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBTVUJNSVNTSU9OX1NUQVRVU0VTID0gW1xuICAncGVuZGluZ192ZXJpZmljYXRpb24nLCAncGVuZGluZ19yZXZpZXcnLCAncHVibGlzaGluZycsICdnYXRlX2ZhaWxlZCcsICdhcHByb3ZlZCcsICdyZWplY3RlZCcsICdleHBpcmVkJywgJ2NsYWltZWQnLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFN1Ym1pc3Npb25TdGF0dXMgPSAodHlwZW9mIFNVQk1JU1NJT05fU1RBVFVTRVMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQbHVnaW4gc2VjdXJpdHkgbm90aWZpY2F0aW9ucyAocGVyIG9yZylcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBXaG8gcmVjZWl2ZXMgYW4gb3JnJ3MgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXM6IGB3cml0ZXJzYCA9IHRoZSB1cGxvYWRlciBwbHVzXG4gKiAgbWVtYmVycyBob2xkaW5nIGBwbHVnaW5zOndyaXRlYDsgYHVzZXJzYCA9IHRoZSBvcmcncyBjaG9zZW4gbWVtYmVycy4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fU0VDVVJJVFlfUkVDSVBJRU5UX01PREVTID0gWyd3cml0ZXJzJywgJ3VzZXJzJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5TZWN1cml0eVJlY2lwaWVudE1vZGUgPSAodHlwZW9mIFBMVUdJTl9TRUNVUklUWV9SRUNJUElFTlRfTU9ERVMpW251bWJlcl07XG5cbi8qKiBIb3cgcmVzY2FuIGZpbmRpbmdzIChOMzEpIGFyZSBiYXRjaGVkOyBibG9ja2VkIGJ1aWxkcyAoTjMwKSBhcmUgYWx3YXlzIGltbWVkaWF0ZS4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fU0VDVVJJVFlfRElHRVNUX01PREVTID0gWydpbW1lZGlhdGUnLCAnZGFpbHknLCAnd2Vla2x5J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5TZWN1cml0eURpZ2VzdE1vZGUgPSAodHlwZW9mIFBMVUdJTl9TRUNVUklUWV9ESUdFU1RfTU9ERVMpW251bWJlcl07XG5cbi8vIFRoZSBidWlsZCBDTEFTUyBhbmQgU0laRSB2b2NhYnVsYXJpZXMgbGl2ZSBpbiBgYnVpbGQtY2F0YWxvZy50c2AsIHRvZ2V0aGVyXG4vLyB3aXRoIHRoZWlyIGxhYmVscywgY3JlZGl0IG11bHRpcGxpZXJzLCB0aWVyIGZsb29ycyBhbmQgcGVyLWNsYXNzIHNsb3Rcbi8vIGRlZmF1bHRzLiBUaGV5IGFyZSBub3QgaGVyZSBiZWNhdXNlIHRoZSBpZHMgYWxvbmUgd2VyZSBuZXZlciB0aGUgd2hvbGUgZmFjdDpcbi8vIHRoZSBtdWx0aXBsaWVyIHdhcyBpbiB0aGlzIGZpbGUsIHRoZSB0aWVyIGdhdGUgd2FzIGluIGBxdW90YS10aWVycy50c2AsIGFuZFxuLy8gdGhlIGxhYmVscyB3ZXJlIGluIGEgZnJvbnRlbmQgbWlycm9yIG9mIGJvdGguIE9uZSBrZXllZCBjYXRhbG9nIGlzIGltcG9ydGFibGVcbi8vIGJ5IHRoZSBicm93c2VyLCBzbyB0aGUgbWlycm9yIGFuZCB0aGUgdGVzdCB0aGF0IHBhcnNlZCB0aGlzIHBhY2thZ2UncyBzb3VyY2Vcbi8vIHRvIGRldGVjdCBkcmlmdCBhcmUgYm90aCBnb25lLlxuIl19
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS12b2NhYnVsYXJ5LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvd2lyZS12b2NhYnVsYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7OztHQVNHO0FBRUgsZ0ZBQWdGO0FBQ2hGLG1CQUFtQjtBQUNuQixnRkFBZ0Y7QUFFaEYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQVUsQ0FBQztBQUd6RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFHNUQsdUZBQXVGO0FBQ3ZGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixJQUFJLEVBQUUsS0FBSztJQUNYLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLE9BQU87SUFDUCxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO0lBQ3hCLElBQUksRUFBRSxPQUFPO0lBQ2IsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVO0lBQ2pDLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFVBQVUsRUFBRSxVQUFVO0NBQ2QsQ0FBQztBQUdYLHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUE0QyxDQUFDO0FBRXZILDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQVUsQ0FBQztBQUc1RCw0RUFBNEU7QUFDNUUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBVSxDQUFDO0FBR3pELGdGQUFnRjtBQUNoRixXQUFXO0FBQ1gsZ0ZBQWdGO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQVUsQ0FBQztB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cGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIENsb3NlZCBzdHJpbmcgdm9jYWJ1bGFyaWVzIHRoYXQgY3Jvc3MgdGhlIHdpcmUgYmV0d2VlbiB0aGUgc2VydmljZXMgYW5kIHRoZVxuICogYnJvd3Nlci4gRWFjaCBpcyBhbiBgYXMgY29uc3RgIGFycmF5ICh0aGUgcnVudGltZSBsaXN0IGEgWm9kIGVudW0sIGEgTW9uZ29vc2VcbiAqIGVudW0gb3IgYSBkcml6emxlIGAkdHlwZWAgYnVpbGRzIGZyb20pIHBsdXMgdGhlIHVuaW9uIHR5cGUgZGVyaXZlZCBmcm9tIGl0LlxuICpcbiAqIERlcGVuZGVuY3ktZnJlZSBvbiBwdXJwb3NlOiB0aGUgZnJvbnRlbmQgaW1wb3J0cyB0aGVzZSB0eXBlcywgc28gYSB2YWx1ZSBhZGRlZFxuICogaGVyZSByZWFjaGVzIHRoZSBVSSdzIGV4aGF1c3RpdmUgbGFiZWwgbWFwcyBhcyBhIGNvbXBpbGUgZXJyb3IgaW5zdGVhZCBvZiBhXG4gKiBzaWxlbnRseSB1bmhhbmRsZWQgc3RyaW5nLiBUaGUgUG9zdGdyZXMgQ0hFQ0sgY29uc3RyYWludHMgaW4gZWFjaCBkZXBsb3lcbiAqIHRhcmdldCdzIGBwb3N0Z3Jlcy1pbml0LnNxbGAgbWlycm9yIHRoZSBvbmVzIHN0b3JlZCBpbiBTUUwuXG4gKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbXBsaWFuY2UgcnVsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBSVUxFX1NFVkVSSVRJRVMgPSBbJ3dhcm5pbmcnLCAnZXJyb3InLCAnY3JpdGljYWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVTZXZlcml0eSA9ICh0eXBlb2YgUlVMRV9TRVZFUklUSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgUlVMRV9UQVJHRVRTID0gWydwbHVnaW4nLCAncGlwZWxpbmUnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVUYXJnZXQgPSAodHlwZW9mIFJVTEVfVEFSR0VUUylbbnVtYmVyXTtcblxuLyoqIEZpZWxkLWV2YWx1YXRpb24gb3BlcmF0b3JzOyB0aGUgZW5naW5lJ3MgaW1wbGVtZW50YXRpb25zIGxpdmUgaW4gYXBpL2NvbXBsaWFuY2UuICovXG5leHBvcnQgY29uc3QgUlVMRV9PUEVSQVRPUlMgPSBbXG4gICdlcScsICduZXEnLFxuICAnY29udGFpbnMnLCAnbm90Q29udGFpbnMnLFxuICAncmVnZXgnLFxuICAnZ3QnLCAnZ3RlJywgJ2x0JywgJ2x0ZScsXG4gICdpbicsICdub3RJbicsXG4gICdleGlzdHMnLCAnbm90RXhpc3RzJywgJ25vdEVtcHR5JyxcbiAgJ2NvdW50R3QnLCAnY291bnRMdCcsXG4gICdsZW5ndGhHdCcsICdsZW5ndGhMdCcsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZU9wZXJhdG9yID0gKHR5cGVvZiBSVUxFX09QRVJBVE9SUylbbnVtYmVyXTtcblxuLyoqIE9wZXJhdG9ycyB0aGF0IHRlc3QgcHJlc2VuY2Ugb25seSBhbmQgdGFrZSBubyBjb21wYXJpc29uIHZhbHVlLiAqL1xuZXhwb3J0IGNvbnN0IFZBTFVFTEVTU19SVUxFX09QRVJBVE9SUyA9IFsnZXhpc3RzJywgJ25vdEV4aXN0cycsICdub3RFbXB0eSddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBSdWxlT3BlcmF0b3JbXTtcblxuLyoqIEhvdyBhIG11bHRpLWNvbmRpdGlvbiBydWxlIGNvbWJpbmVzIGl0cyBjb25kaXRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IFJVTEVfQ09ORElUSU9OX01PREVTID0gWydhbGwnLCAnYW55J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlQ29uZGl0aW9uTW9kZSA9ICh0eXBlb2YgUlVMRV9DT05ESVRJT05fTU9ERVMpW251bWJlcl07XG5cbi8qKiBgcHVibGlzaGVkYCBydWxlcyBiZWxvbmcgdG8gdGhlIHN5c3RlbSBvcmcgYW5kIGFwcGx5IGJ5IHN1YnNjcmlwdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBSVUxFX1NDT1BFUyA9IFsnb3JnJywgJ3B1Ymxpc2hlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZVNjb3BlID0gKHR5cGVvZiBSVUxFX1NDT1BFUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1lc3NhZ2VzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9UWVBFUyA9IFsnYW5ub3VuY2VtZW50JywgJ2NvbnZlcnNhdGlvbiddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVR5cGUgPSAodHlwZW9mIE1FU1NBR0VfVFlQRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFX1BSSU9SSVRJRVMgPSBbJ25vcm1hbCcsICdoaWdoJywgJ3VyZ2VudCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVByaW9yaXR5ID0gKHR5cGVvZiBNRVNTQUdFX1BSSU9SSVRJRVMpW251bWJlcl07XG5cbi8qKlxuICogV2hvIFNFTlQgYSByb290IG1lc3NhZ2UsIHJlbGF0aXZlIHRvIHRoZSB2aWV3ZXI6IGBtZWAgKHRoZSB2aWV3aW5nIHVzZXJcbiAqIGF1dGhvcmVkIGl0KSwgYG9yZ2AgKHRoZSB2aWV3aW5nIG9yZyBzZW50IGl0IOKAlCBhbnkgbWVtYmVyKSwgYG90aGVyc2AgKGl0XG4gKiBhcnJpdmVkIGZyb20gYW5vdGhlciBvcmcsIGFubm91bmNlbWVudHMgaW5jbHVkZWQpLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9TRU5UX0JZID0gWydtZScsICdvcmcnLCAnb3RoZXJzJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBNZXNzYWdlU2VudEJ5ID0gKHR5cGVvZiBNRVNTQUdFX1NFTlRfQlkpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCaWxsaW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgU1VCU0NSSVBUSU9OX1NUQVRVU0VTID0gWydhY3RpdmUnLCAnY2FuY2VsZWQnLCAncGFzdF9kdWUnLCAndHJpYWxpbmcnLCAnaW5jb21wbGV0ZSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uU3RhdHVzID0gKHR5cGVvZiBTVUJTQ1JJUFRJT05fU1RBVFVTRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBCSUxMSU5HX0lOVEVSVkFMUyA9IFsnbW9udGhseScsICdhbm51YWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJpbGxpbmdJbnRlcnZhbCA9ICh0eXBlb2YgQklMTElOR19JTlRFUlZBTFMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBJZGVudGl0eVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIE9JREMgcHJvdmlkZXJzIGFuIG9yZyBJZFAgY29uZmlnIGNhbiBuYW1lIChHaXRIdWIgaXMgT0F1dGgtb25seSBhbmQgcmVmdXNlZCBieSB0aGUgT0lEQyBlbmdpbmUpLiAqL1xuZXhwb3J0IGNvbnN0IElEUF9QUk9WSURFUlMgPSBbJ2dlbmVyaWMtb2lkYycsICdjb2duaXRvJywgJ2dvb2dsZScsICdnaXRodWInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIElkcFByb3ZpZGVyID0gKHR5cGVvZiBJRFBfUFJPVklERVJTKVtudW1iZXJdO1xuXG4vKiogVGhlIGZlZGVyYXRpb24gcHJvdG9jb2wgYW4gb3JnIHNpZ25zIGluIG92ZXIg4oCUIG9uZSBwZXIgb3JnLiAqL1xuZXhwb3J0IGNvbnN0IElEUF9QUk9UT0NPTFMgPSBbJ29pZGMnLCAnc2FtbCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSWRwUHJvdG9jb2wgPSAodHlwZW9mIElEUF9QUk9UT0NPTFMpW251bWJlcl07XG5cbi8qKlxuICogV2hpY2ggU0FNTCBhc3NlcnRpb24gYXR0cmlidXRlIGNhcnJpZXMgd2hpY2ggaWRlbnRpdHkgZmllbGQuIEFuIGVtcHR5IG5hbWVcbiAqIG1lYW5zIFwidXNlIHRoZSBjb21tb24gc3BlbGxpbmdzXCIgKHNob3J0IG5hbWVzIHBsdXMgdGhlIEVudHJhL1NoaWJib2xldGggVVJJcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FtbEF0dHJpYnV0ZU1hcHBpbmcge1xuICAvKiogQXR0cmlidXRlIGhvbGRpbmcgdGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzLiAqL1xuICBlbWFpbD86IHN0cmluZztcbiAgLyoqIEF0dHJpYnV0ZSBob2xkaW5nIHRoZSBkaXNwbGF5IG5hbWUuICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBBdHRyaWJ1dGUgaG9sZGluZyBncm91cCBtZW1iZXJzaGlwcyAoZHJpdmVzIEpJVCByb2xlIG1hcHBpbmcpLiAqL1xuICBncm91cHM/OiBzdHJpbmc7XG59XG5cbi8qKiBUaGUgY29hcnNlIGdyYW50IGEgcGVybWlzc2lvbiByb2xlIGdpdmVzIGl0cyBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFJPTEVfR1JBTlRTID0gWydzdXBlcmFkbWluJywgJ2FkbWluJywgJ21lbWJlciddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUm9sZUdyYW50ID0gKHR5cGVvZiBST0xFX0dSQU5UUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBsdWdpbiBlY29zeXN0ZW0gKGVhY2ggbWlycm9yZWQgYnkgYSBDSEVDSyBpbiBwb3N0Z3Jlcy1pbml0LnNxbClcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBQdWJsaXNoZXIgdHJ1c3QgdGllci4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIRVJfVElFUlMgPSBbJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoZXJUaWVyID0gKHR5cGVvZiBQVUJMSVNIRVJfVElFUlMpW251bWJlcl07XG5cbi8qKiBBIGRpcmVjdG9yeSBsaXN0aW5nJ3MgbGlmZWN5Y2xlIHN0YXRlLiAqL1xuZXhwb3J0IGNvbnN0IExJU1RJTkdfU1RBVEVTID0gWydsaXN0ZWQnLCAndW5tYWludGFpbmVkJywgJ3N1c3BlbmRlZCcsICd0cmFuc2ZlcnJlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTGlzdGluZ1N0YXRlID0gKHR5cGVvZiBMSVNUSU5HX1NUQVRFUylbbnVtYmVyXTtcblxuLyoqIFdoYXQgYSBwdWJsaXNoIHJlcXVlc3QgYXNrcyB0aGUgc3lzdGVtIG9yZyB0byBkby4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfS0lORFMgPSBbXG4gICduZXdfbGlzdGluZycsICduZXdfdmVyc2lvbicsICdsaXN0aW5nX3VwZGF0ZScsICd5YW5rJywgJ3VucGF1c2UnLFxuICAndHJhbnNmZXInLCAnY2xhaW0nLCAncHJvZmlsZV9jaGFuZ2UnLCAnYWR2aXNvcnknLCAndmVyaWZ5JywgJ21vZGVyYXRpb24nLCAnc3VibWlzc2lvbicsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaFJlcXVlc3RLaW5kID0gKHR5cGVvZiBQVUJMSVNIX1JFUVVFU1RfS0lORFMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMgPSBbJ3BlbmRpbmcnLCAncGVuZGluZ19zZWNvbmRfYXBwcm92YWwnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnd2l0aGRyYXduJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoUmVxdWVzdFN0YXR1cyA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogVGhlIHN0YXR1c2VzIGEgcmVxdWVzdCBpcyBzdGlsbCBcIm9wZW5cIiBpbiAoZHJpdmVzIHRoZSBvbmUtb3Blbi1yZXF1ZXN0IGluZGV4KS4gKi9cbmV4cG9ydCBjb25zdCBPUEVOX1BVQkxJU0hfUkVRVUVTVF9TVEFUVVNFUyA9IFsncGVuZGluZycsICdwZW5kaW5nX3NlY29uZF9hcHByb3ZhbCddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBQdWJsaXNoUmVxdWVzdFN0YXR1c1tdO1xuXG4vKiogYHNlY3VyaXR5YCByZXF1ZXN0cyBqdW1wIHRoZSBtb2RlcmF0aW9uIHF1ZXVlLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUkVRVUVTVF9MQU5FUyA9IFsnc3RhbmRhcmQnLCAnc2VjdXJpdHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hSZXF1ZXN0TGFuZSA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX0xBTkVTKVtudW1iZXJdO1xuXG4vKiogSW5zdGFsbCB2ZXJzaW9uIHBvbGljeTogZXhhY3QsIGB+YCwgYF5gLCBvciBhbnl0aGluZyBub24tYnJlYWtpbmcuICovXG5leHBvcnQgY29uc3QgSU5TVEFMTF9WRVJTSU9OX1BPTElDSUVTID0gWydwaW5uZWQnLCAncGF0Y2gnLCAnbWlub3InLCAnbGF0ZXN0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJbnN0YWxsVmVyc2lvblBvbGljeSA9ICh0eXBlb2YgSU5TVEFMTF9WRVJTSU9OX1BPTElDSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgSU5TVEFMTF9TVEFUVVNFUyA9IFsnYWN0aXZlJywgJ3BlbmRpbmdfYXBwcm92YWwnLCAnZGVuaWVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJbnN0YWxsU3RhdHVzID0gKHR5cGVvZiBJTlNUQUxMX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogVGhlIGFkdmlzb3J5IHNldmVyaXR5IGF0IHdoaWNoIGEgY29uc3VtcHRpb24gcG9saWN5IGJsb2NrcyBpbnN0YWxscy4gKi9cbmV4cG9ydCBjb25zdCBCTE9DS19PTl9BRFZJU09SWV9MRVZFTFMgPSBbJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbmV2ZXInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJsb2NrT25BZHZpc29yeSA9ICh0eXBlb2YgQkxPQ0tfT05fQURWSVNPUllfTEVWRUxTKVtudW1iZXJdO1xuXG4vKiogV2hldGhlciBvZmZpY2lhbCBwbHVnaW5zIG5lZWQgYW4gZXhwbGljaXQgaW5zdGFsbCBiZWZvcmUgYSBwaXBlbGluZSBjYW4gdXNlIHRoZW0uICovXG5leHBvcnQgY29uc3QgT0ZGSUNJQUxfSU5TVEFMTFNfTU9ERVMgPSBbJ2ltcGxpY2l0JywgJ2V4cGxpY2l0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBPZmZpY2lhbEluc3RhbGxzID0gKHR5cGVvZiBPRkZJQ0lBTF9JTlNUQUxMU19NT0RFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBXaGF0IGhhcHBlbnMgd2hlbiBhbiBvcmcgZGVmaW5lcyBhIHBsdWdpbiBOQU1FIHRoYXQgb3ZlcnJpZGVzIHNvbWV0aGluZyBpdFxuICogd291bGQgb3RoZXJ3aXNlIHJlc29sdmUg4oCUIGEgbGlzdGluZywgb3IgKGZvciBhIHRlYW0pIGl0cyBwYXJlbnQgb3JnJ3MgcGx1Z2luLlxuICpcbiAqIGBhbGxvd2Aga2VlcHMgdG9kYXkncyBiZWhhdmlvdXI6IHRoZSBvdmVycmlkZSBpcyBzaWxlbnQgYmV5b25kIHRoZSBkYXNoYm9hcmRcbiAqIGJhbm5lci4gYHdhcm5gIGlzIHRoZSBzYW1lIHJlc29sdXRpb24gd2l0aCB0aGUgZmFjdCByZWNvcmRlZCBwcm9taW5lbnRseS5cbiAqIGBkZW55YCByZWZ1c2VzIHRoZSB1cGxvYWQsIHdoaWNoIGlzIHRoZSBvbmx5IHNldHRpbmcgdGhhdCBhY3R1YWxseSBzdG9wcyBhXG4gKiB0ZWFtIHJlcGxhY2luZyB0aGUgT2ZmaWNpYWwgYHRyaXZ5YCBmb3IgZXZlcnkgcGlwZWxpbmUgdGhhdCBuYW1lcyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNIQURPV0lOR19NT0RFUyA9IFsnYWxsb3cnLCAnd2FybicsICdkZW55J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTaGFkb3dpbmdNb2RlID0gKHR5cGVvZiBTSEFET1dJTkdfTU9ERVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBSRVZJRVdfU1RBVFVTRVMgPSBbJ3B1Ymxpc2hlZCcsICdoZWxkJywgJ3JlbW92ZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJldmlld1N0YXR1cyA9ICh0eXBlb2YgUkVWSUVXX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogV2h5IGEgaGVsZCByZXZpZXcgaXMgaGVsZC4gKi9cbmV4cG9ydCBjb25zdCBSRVZJRVdfSE9MRF9SRUFTT05TID0gWydyZXBvcnRzJywgJ2J1cnN0JywgJ2ZpbHRlcicsICdzZWN1cml0eScsICdtb2RlcmF0b3InXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJldmlld0hvbGRSZWFzb24gPSAodHlwZW9mIFJFVklFV19IT0xEX1JFQVNPTlMpW251bWJlcl07XG5cbi8qKiBBIHJldmlldyByZXBvcnQncyBjYXRlZ29yeTsgYHNlY3VyaXR5YCByb3V0ZXMgcHJpdmF0ZWx5IHRvIHRoZSBhZHZpc29yeSBwYXRoLiAqL1xuZXhwb3J0IGNvbnN0IFJFVklFV19SRVBPUlRfQ0FURUdPUklFUyA9IFsnc3BhbScsICdhYnVzZScsICdvZmZfdG9waWMnLCAnc2VjdXJpdHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJldmlld1JlcG9ydENhdGVnb3J5ID0gKHR5cGVvZiBSRVZJRVdfUkVQT1JUX0NBVEVHT1JJRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBBRFZJU09SWV9TRVZFUklUSUVTID0gWydjcml0aWNhbCcsICdoaWdoJywgJ21lZGl1bScsICdsb3cnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEFkdmlzb3J5U2V2ZXJpdHkgPSAodHlwZW9mIEFEVklTT1JZX1NFVkVSSVRJRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBBRFZJU09SWV9TVEFURVMgPSBbJ2RyYWZ0JywgJ3B1Ymxpc2hlZCcsICd3aXRoZHJhd24nXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEFkdmlzb3J5U3RhdGUgPSAodHlwZW9mIEFEVklTT1JZX1NUQVRFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IEFEVklTT1JZX1NPVVJDRVMgPSBbJ3B1Ymxpc2hlcicsICdtb2RlcmF0b3InLCAnY3ZlX3Jlc2NhbicsICdyZXZpZXcnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEFkdmlzb3J5U291cmNlID0gKHR5cGVvZiBBRFZJU09SWV9TT1VSQ0VTKVtudW1iZXJdO1xuXG4vKipcbiAqIEFuIGFub255bW91cyBzdWJtaXNzaW9uJ3MgbGlmZWN5Y2xlLiBgcHVibGlzaGluZ2AgaXMgdGhlIHNob3J0IGNsYWltIGFuXG4gKiBhcHByb3ZhbCB0YWtlcyBiZWZvcmUgaXQgY29waWVzIHRoZSBxdWFyYW50aW5lZCBpbWFnZSBvdXQsIHNvIGFuIGV4cGlyeSBjYW5cbiAqIG5ldmVyIGRlbGV0ZSB0aGUgYXJ0aWZhY3RzIG9mIGEgc3VibWlzc2lvbiB0aGF0IGlzIGJlaW5nIHB1Ymxpc2hlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNVQk1JU1NJT05fU1RBVFVTRVMgPSBbXG4gICdwZW5kaW5nX3ZlcmlmaWNhdGlvbicsICdwZW5kaW5nX3JldmlldycsICdwdWJsaXNoaW5nJywgJ2dhdGVfZmFpbGVkJywgJ2FwcHJvdmVkJywgJ3JlamVjdGVkJywgJ2V4cGlyZWQnLCAnY2xhaW1lZCcsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU3VibWlzc2lvblN0YXR1cyA9ICh0eXBlb2YgU1VCTUlTU0lPTl9TVEFUVVNFUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBsdWdpbiBzZWN1cml0eSBub3RpZmljYXRpb25zIChwZXIgb3JnKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFdobyByZWNlaXZlcyBhbiBvcmcncyBwbHVnaW4gc2VjdXJpdHkgbm90aWNlczogYHdyaXRlcnNgID0gdGhlIHVwbG9hZGVyIHBsdXNcbiAqICBtZW1iZXJzIGhvbGRpbmcgYHBsdWdpbnM6d3JpdGVgOyBgdXNlcnNgID0gdGhlIG9yZydzIGNob3NlbiBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9TRUNVUklUWV9SRUNJUElFTlRfTU9ERVMgPSBbJ3dyaXRlcnMnLCAndXNlcnMnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpblNlY3VyaXR5UmVjaXBpZW50TW9kZSA9ICh0eXBlb2YgUExVR0lOX1NFQ1VSSVRZX1JFQ0lQSUVOVF9NT0RFUylbbnVtYmVyXTtcblxuLyoqIEhvdyByZXNjYW4gZmluZGluZ3MgKE4zMSkgYXJlIGJhdGNoZWQ7IGJsb2NrZWQgYnVpbGRzIChOMzApIGFyZSBhbHdheXMgaW1tZWRpYXRlLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9TRUNVUklUWV9ESUdFU1RfTU9ERVMgPSBbJ2ltbWVkaWF0ZScsICdkYWlseScsICd3ZWVrbHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpblNlY3VyaXR5RGlnZXN0TW9kZSA9ICh0eXBlb2YgUExVR0lOX1NFQ1VSSVRZX0RJR0VTVF9NT0RFUylbbnVtYmVyXTtcblxuLy8gVGhlIGJ1aWxkIENMQVNTIGFuZCBTSVpFIHZvY2FidWxhcmllcyBsaXZlIGluIGBidWlsZC1jYXRhbG9nLnRzYCwgdG9nZXRoZXJcbi8vIHdpdGggdGhlaXIgbGFiZWxzLCBjcmVkaXQgbXVsdGlwbGllcnMsIHRpZXIgZmxvb3JzIGFuZCBwZXItY2xhc3Mgc2xvdFxuLy8gZGVmYXVsdHMuIFRoZXkgYXJlIG5vdCBoZXJlIGJlY2F1c2UgdGhlIGlkcyBhbG9uZSB3ZXJlIG5ldmVyIHRoZSB3aG9sZSBmYWN0OlxuLy8gdGhlIG11bHRpcGxpZXIgd2FzIGluIHRoaXMgZmlsZSwgdGhlIHRpZXIgZ2F0ZSB3YXMgaW4gYHF1b3RhLXRpZXJzLnRzYCwgYW5kXG4vLyB0aGUgbGFiZWxzIHdlcmUgaW4gYSBmcm9udGVuZCBtaXJyb3Igb2YgYm90aC4gT25lIGtleWVkIGNhdGFsb2cgaXMgaW1wb3J0YWJsZVxuLy8gYnkgdGhlIGJyb3dzZXIsIHNvIHRoZSBtaXJyb3IgYW5kIHRoZSB0ZXN0IHRoYXQgcGFyc2VkIHRoaXMgcGFja2FnZSdzIHNvdXJjZVxuLy8gdG8gZGV0ZWN0IGRyaWZ0IGFyZSBib3RoIGdvbmUuXG4iXX0=
@@ -65,4 +65,4 @@ export function resolveRecipientAlias(recipientOrgId) {
65
65
  originalValue: recipientOrgId,
66
66
  };
67
67
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYWxpYXMtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQseUZBQXlGO0FBQ3pGLElBQUksZUFBd0MsQ0FBQztBQUU3QyxTQUFTLGlCQUFpQjtJQUN4QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO1FBQzlDLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FDdkIsR0FBRzthQUNBLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDeEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDckMsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsZUFBZSxHQUFHLFNBQVMsQ0FBQztBQUM5QixDQUFDO0FBRUQsbUZBQW1GO0FBQ25GLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLDBCQUEwQixDQUFDO0FBRWhFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxLQUFLLE1BQU0sS0FBSyxJQUFJLGlCQUFpQixFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdEQsT0FBTyxxQkFBcUIsQ0FBQztBQUMvQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNyQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBWUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsY0FBc0I7SUFDMUQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZELE1BQU0sT0FBTyxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFcEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDNUIsT0FBTztZQUNMLGFBQWEsRUFBRSxhQUFhO1lBQzVCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsYUFBYSxFQUFFLGNBQWM7U0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsYUFBYSxFQUFFLFVBQVU7UUFDekIsUUFBUSxFQUFFLEtBQUs7UUFDZixhQUFhLEVBQUUsY0FBYztLQUM5QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBTWVNURU1fT1JHX0lEIH0gZnJvbSAnLi4vbWlkZGxld2FyZS9zeXN0ZW0tb3JnLmpzJztcblxuLyoqIExhemlseS1jYWNoZWQgc2V0IG9mIHN1cHBvcnQgYWxpYXNlcywgcGFyc2VkIGZyb20gU1VQUE9SVF9BTElBU0VTIG9uIGZpcnN0IGFjY2Vzcy4gKi9cbmxldCBfc3VwcG9ydEFsaWFzZXM6IFNldDxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBnZXRTdXBwb3J0QWxpYXNlcygpOiBTZXQ8c3RyaW5nPiB7XG4gIGlmICghX3N1cHBvcnRBbGlhc2VzKSB7XG4gICAgY29uc3QgcmF3ID0gcHJvY2Vzcy5lbnYuU1VQUE9SVF9BTElBU0VTIHx8ICcnO1xuICAgIF9zdXBwb3J0QWxpYXNlcyA9IG5ldyBTZXQoXG4gICAgICByYXdcbiAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgLm1hcChhbGlhcyA9PiBhbGlhcy50cmltKCkudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgLmZpbHRlcihhbGlhcyA9PiBhbGlhcy5sZW5ndGggPiAwKSxcbiAgICApO1xuICB9XG4gIHJldHVybiBfc3VwcG9ydEFsaWFzZXM7XG59XG5cbi8qKlxuICogQ2xlYXIgdGhlIG1lbW9pemVkIGFsaWFzIHNldCBzbyB0aGUgbmV4dCBhY2Nlc3MgcmUtcmVhZHMgYFNVUFBPUlRfQUxJQVNFU2AuXG4gKiBUaGUgY2FjaGUgaXMgcHJvY2Vzcy1saWZldGltZSBieSBkZXNpZ24gKGVudiBpcyBmaXhlZCBwZXIgcHJvY2Vzcyk7IHRoaXMgaG9va1xuICogZXhpc3RzIHNvIHRlc3RzIGNhbiB2YXJ5IHRoZSBlbnYgYmV0d2VlbiBjYXNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0U3VwcG9ydEFsaWFzZXNDYWNoZSgpOiB2b2lkIHtcbiAgX3N1cHBvcnRBbGlhc2VzID0gdW5kZWZpbmVkO1xufVxuXG4vKiogV2VsbC1rbm93biBmYWxsYmFjayBzdXBwb3J0IGFsaWFzIHVzZWQgd2hlbiBTVVBQT1JUX0FMSUFTRVMgaXMgdW5jb25maWd1cmVkLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1VQUE9SVF9BTElBUyA9ICdzdXBwb3J0QHBpcGVsaW5lLWJ1aWxkZXInO1xuXG4vKipcbiAqIFRoZSBQUklNQVJZIChmaXJzdC1jb25maWd1cmVkKSBzdXBwb3J0IGFsaWFzIOKAlCBmb3IgZGlzcGxheSAvIHByZWZpbGwgaW4gVUlzXG4gKiAoZS5nLiB0aGUgY29tcG9zZSBcIlRvXCIgZmllbGQpLCBzbyB0aGUgc2hvd24gdmFsdWUgaXMgZHJpdmVuIGJ5IFNVUFBPUlRfQUxJQVNFU1xuICogcmF0aGVyIHRoYW4gaGFyZGNvZGVkLiBGYWxscyBiYWNrIHRvIHtAbGluayBERUZBVUxUX1NVUFBPUlRfQUxJQVN9IHdoZW4gdGhlIGVudlxuICogaXMgdW5zZXQuIChBbGwgY29uZmlndXJlZCBhbGlhc2VzIHN0aWxsIHJlc29sdmUgdmlhIHtAbGluayByZXNvbHZlUmVjaXBpZW50QWxpYXN9LilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByaW1hcnlTdXBwb3J0QWxpYXMoKTogc3RyaW5nIHtcbiAgZm9yIChjb25zdCBhbGlhcyBvZiBnZXRTdXBwb3J0QWxpYXNlcygpKSByZXR1cm4gYWxpYXM7XG4gIHJldHVybiBERUZBVUxUX1NVUFBPUlRfQUxJQVM7XG59XG5cbi8qKlxuICogQUxMIGNvbmZpZ3VyZWQgc3VwcG9ydCBhbGlhc2VzIChvcmRlciBwcmVzZXJ2ZWQpLCBmb3IgVUlzIHRoYXQgc3VyZmFjZSBldmVyeVxuICogc3VwcG9ydCBpbmJveCBhcyBhIGRpc3RpbmN0IHJlY2lwaWVudCBzdWdnZXN0aW9uLiBGYWxscyBiYWNrIHRvIGEgc2luZ2xlXG4gKiB7QGxpbmsgREVGQVVMVF9TVVBQT1JUX0FMSUFTfSB3aGVuIFNVUFBPUlRfQUxJQVNFUyBpcyB1bnNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbFN1cHBvcnRBbGlhc2VzKCk6IHN0cmluZ1tdIHtcbiAgY29uc3QgYWxsID0gWy4uLmdldFN1cHBvcnRBbGlhc2VzKCldO1xuICByZXR1cm4gYWxsLmxlbmd0aCA+IDAgPyBhbGwgOiBbREVGQVVMVF9TVVBQT1JUX0FMSUFTXTtcbn1cblxuLyoqIFJlc3VsdCBvZiBhbGlhcyByZXNvbHV0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc1Jlc29sdXRpb24ge1xuICAvKiogVGhlIHJlc29sdmVkIG9yZ2FuaXphdGlvbiBJRCAoZS5nLiwgJ3N5c3RlbScpLiAqL1xuICByZXNvbHZlZE9yZ0lkOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBpbnB1dCB3YXMgYW4gYWxpYXMgdGhhdCBnb3QgcmVzb2x2ZWQuICovXG4gIHdhc0FsaWFzOiBib29sZWFuO1xuICAvKiogVGhlIG9yaWdpbmFsIGlucHV0IHZhbHVlLCB1c2VmdWwgZm9yIGF1ZGl0IGxvZ2dpbmcuICovXG4gIG9yaWdpbmFsVmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIGVtYWlsLWxpa2UgYWxpYXMgdG8gYW4gYWN0dWFsIG9yZ2FuaXphdGlvbiBJRC5cbiAqXG4gKiBJZiB0aGUgaW5wdXQgbWF0Y2hlcyBhIGNvbmZpZ3VyZWQgc3VwcG9ydCBhbGlhcywgaXQgcmVzb2x2ZXMgdG8gdGhlIHN5c3RlbVxuICogb3JnIElELiBPdGhlcndpc2UgdGhlIGlucHV0IGlzIHJldHVybmVkIGFzLWlzIChsb3dlcmNhc2VkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWNpcGllbnRBbGlhcyhyZWNpcGllbnRPcmdJZDogc3RyaW5nKTogQWxpYXNSZXNvbHV0aW9uIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHJlY2lwaWVudE9yZ0lkLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBhbGlhc2VzID0gZ2V0U3VwcG9ydEFsaWFzZXMoKTtcblxuICBpZiAoYWxpYXNlcy5oYXMobm9ybWFsaXplZCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb2x2ZWRPcmdJZDogU1lTVEVNX09SR19JRCxcbiAgICAgIHdhc0FsaWFzOiB0cnVlLFxuICAgICAgb3JpZ2luYWxWYWx1ZTogcmVjaXBpZW50T3JnSWQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcmVzb2x2ZWRPcmdJZDogbm9ybWFsaXplZCxcbiAgICB3YXNBbGlhczogZmFsc2UsXG4gICAgb3JpZ2luYWxWYWx1ZTogcmVjaXBpZW50T3JnSWQsXG4gIH07XG59XG5cbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMtcmVzb2x2ZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hbGlhcy1yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RCx5RkFBeUY7QUFDekYsSUFBSSxlQUF3QyxDQUFDO0FBRTdDLFNBQVMsaUJBQWlCO0lBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyQixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7UUFDOUMsZUFBZSxHQUFHLElBQUksR0FBRyxDQUN2QixHQUFHO2FBQ0EsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN4QyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QjtJQUN0QyxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQzlCLENBQUM7QUFFRCxtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsMEJBQTBCLENBQUM7QUFFaEU7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLEtBQUssTUFBTSxLQUFLLElBQUksaUJBQWlCLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN0RCxPQUFPLHFCQUFxQixDQUFDO0FBQy9CLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFZRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxjQUFzQjtJQUMxRCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztJQUVwQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPO1lBQ0wsYUFBYSxFQUFFLGFBQWE7WUFDNUIsUUFBUSxFQUFFLElBQUk7WUFDZCxhQUFhLEVBQUUsY0FBYztTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxhQUFhLEVBQUUsVUFBVTtRQUN6QixRQUFRLEVBQUUsS0FBSztRQUNmLGFBQWEsRUFBRSxjQUFjO0tBQzlCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IFNZU1RFTV9PUkdfSUQgfSBmcm9tICcuLi9taWRkbGV3YXJlL3N5c3RlbS1vcmcuanMnO1xuXG4vKiogTGF6aWx5LWNhY2hlZCBzZXQgb2Ygc3VwcG9ydCBhbGlhc2VzLCBwYXJzZWQgZnJvbSBTVVBQT1JUX0FMSUFTRVMgb24gZmlyc3QgYWNjZXNzLiAqL1xubGV0IF9zdXBwb3J0QWxpYXNlczogU2V0PHN0cmluZz4gfCB1bmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGdldFN1cHBvcnRBbGlhc2VzKCk6IFNldDxzdHJpbmc+IHtcbiAgaWYgKCFfc3VwcG9ydEFsaWFzZXMpIHtcbiAgICBjb25zdCByYXcgPSBwcm9jZXNzLmVudi5TVVBQT1JUX0FMSUFTRVMgfHwgJyc7XG4gICAgX3N1cHBvcnRBbGlhc2VzID0gbmV3IFNldChcbiAgICAgIHJhd1xuICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAubWFwKGFsaWFzID0+IGFsaWFzLnRyaW0oKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAuZmlsdGVyKGFsaWFzID0+IGFsaWFzLmxlbmd0aCA+IDApLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIF9zdXBwb3J0QWxpYXNlcztcbn1cblxuLyoqXG4gKiBDbGVhciB0aGUgbWVtb2l6ZWQgYWxpYXMgc2V0IHNvIHRoZSBuZXh0IGFjY2VzcyByZS1yZWFkcyBgU1VQUE9SVF9BTElBU0VTYC5cbiAqIFRoZSBjYWNoZSBpcyBwcm9jZXNzLWxpZmV0aW1lIGJ5IGRlc2lnbiAoZW52IGlzIGZpeGVkIHBlciBwcm9jZXNzKTsgdGhpcyBob29rXG4gKiBleGlzdHMgc28gdGVzdHMgY2FuIHZhcnkgdGhlIGVudiBiZXR3ZWVuIGNhc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRTdXBwb3J0QWxpYXNlc0NhY2hlKCk6IHZvaWQge1xuICBfc3VwcG9ydEFsaWFzZXMgPSB1bmRlZmluZWQ7XG59XG5cbi8qKiBXZWxsLWtub3duIGZhbGxiYWNrIHN1cHBvcnQgYWxpYXMgdXNlZCB3aGVuIFNVUFBPUlRfQUxJQVNFUyBpcyB1bmNvbmZpZ3VyZWQuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9TVVBQT1JUX0FMSUFTID0gJ3N1cHBvcnRAcGlwZWxpbmUtYnVpbGRlcic7XG5cbi8qKlxuICogVGhlIFBSSU1BUlkgKGZpcnN0LWNvbmZpZ3VyZWQpIHN1cHBvcnQgYWxpYXMg4oCUIGZvciBkaXNwbGF5IC8gcHJlZmlsbCBpbiBVSXNcbiAqIChlLmcuIHRoZSBjb21wb3NlIFwiVG9cIiBmaWVsZCksIHNvIHRoZSBzaG93biB2YWx1ZSBpcyBkcml2ZW4gYnkgU1VQUE9SVF9BTElBU0VTXG4gKiByYXRoZXIgdGhhbiBoYXJkY29kZWQuIEZhbGxzIGJhY2sgdG8ge0BsaW5rIERFRkFVTFRfU1VQUE9SVF9BTElBU30gd2hlbiB0aGUgZW52XG4gKiBpcyB1bnNldC4gKEFsbCBjb25maWd1cmVkIGFsaWFzZXMgc3RpbGwgcmVzb2x2ZSB2aWEge0BsaW5rIHJlc29sdmVSZWNpcGllbnRBbGlhc30uKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJpbWFyeVN1cHBvcnRBbGlhcygpOiBzdHJpbmcge1xuICBmb3IgKGNvbnN0IGFsaWFzIG9mIGdldFN1cHBvcnRBbGlhc2VzKCkpIHJldHVybiBhbGlhcztcbiAgcmV0dXJuIERFRkFVTFRfU1VQUE9SVF9BTElBUztcbn1cblxuLyoqXG4gKiBBTEwgY29uZmlndXJlZCBzdXBwb3J0IGFsaWFzZXMgKG9yZGVyIHByZXNlcnZlZCksIGZvciBVSXMgdGhhdCBzdXJmYWNlIGV2ZXJ5XG4gKiBzdXBwb3J0IGluYm94IGFzIGEgZGlzdGluY3QgcmVjaXBpZW50IHN1Z2dlc3Rpb24uIEZhbGxzIGJhY2sgdG8gYSBzaW5nbGVcbiAqIHtAbGluayBERUZBVUxUX1NVUFBPUlRfQUxJQVN9IHdoZW4gU1VQUE9SVF9BTElBU0VTIGlzIHVuc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsU3VwcG9ydEFsaWFzZXMoKTogc3RyaW5nW10ge1xuICBjb25zdCBhbGwgPSBbLi4uZ2V0U3VwcG9ydEFsaWFzZXMoKV07XG4gIHJldHVybiBhbGwubGVuZ3RoID4gMCA/IGFsbCA6IFtERUZBVUxUX1NVUFBPUlRfQUxJQVNdO1xufVxuXG4vKiogUmVzdWx0IG9mIGFsaWFzIHJlc29sdXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEFsaWFzUmVzb2x1dGlvbiB7XG4gIC8qKiBUaGUgcmVzb2x2ZWQgb3JnYW5pemF0aW9uIElEIChlLmcuLCAnc3lzdGVtJykuICovXG4gIHJlc29sdmVkT3JnSWQ6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIGlucHV0IHdhcyBhbiBhbGlhcyB0aGF0IGdvdCByZXNvbHZlZC4gKi9cbiAgd2FzQWxpYXM6IGJvb2xlYW47XG4gIC8qKiBUaGUgb3JpZ2luYWwgaW5wdXQgdmFsdWUsIHVzZWZ1bCBmb3IgYXVkaXQgbG9nZ2luZy4gKi9cbiAgb3JpZ2luYWxWYWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYW4gZW1haWwtbGlrZSBhbGlhcyB0byBhbiBhY3R1YWwgb3JnYW5pemF0aW9uIElELlxuICpcbiAqIElmIHRoZSBpbnB1dCBtYXRjaGVzIGEgY29uZmlndXJlZCBzdXBwb3J0IGFsaWFzLCBpdCByZXNvbHZlcyB0byB0aGUgc3lzdGVtXG4gKiBvcmcgSUQuIE90aGVyd2lzZSB0aGUgaW5wdXQgaXMgcmV0dXJuZWQgYXMtaXMgKGxvd2VyY2FzZWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJlY2lwaWVudEFsaWFzKHJlY2lwaWVudE9yZ0lkOiBzdHJpbmcpOiBBbGlhc1Jlc29sdXRpb24ge1xuICBjb25zdCBub3JtYWxpemVkID0gcmVjaXBpZW50T3JnSWQudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGFsaWFzZXMgPSBnZXRTdXBwb3J0QWxpYXNlcygpO1xuXG4gIGlmIChhbGlhc2VzLmhhcyhub3JtYWxpemVkKSkge1xuICAgIHJldHVybiB7XG4gICAgICByZXNvbHZlZE9yZ0lkOiBTWVNURU1fT1JHX0lELFxuICAgICAgd2FzQWxpYXM6IHRydWUsXG4gICAgICBvcmlnaW5hbFZhbHVlOiByZWNpcGllbnRPcmdJZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZXNvbHZlZE9yZ0lkOiBub3JtYWxpemVkLFxuICAgIHdhc0FsaWFzOiBmYWxzZSxcbiAgICBvcmlnaW5hbFZhbHVlOiByZWNpcGllbnRPcmdJZCxcbiAgfTtcbn1cblxuIl19
@@ -61,4 +61,4 @@ export function hashApiKey(key) {
61
61
  export function generateApiKey(prefix) {
62
62
  return `${prefix}_${randomBytes(API_KEY_SECRET_BYTES).toString('base64url')}`;
63
63
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hcGkta2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpELGtFQUFrRTtBQUNsRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQVUsQ0FBQztBQUs3RCw4RUFBOEU7QUFDOUUsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFFaEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQztBQUU3Qzs7O0dBR0c7QUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUUzRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLFVBQThCO0lBQzNELE9BQU8sT0FBTyxVQUFVLEtBQUssUUFBUSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUVELHlEQUF5RDtBQUN6RCxNQUFNLFVBQVUsY0FBYyxDQUFDLFVBQThCO0lBQzNELElBQUksT0FBTyxVQUFVLEtBQUssUUFBUTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3JELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFFLEtBQUssQ0FBQyxDQUFDLENBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN4RCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBVztJQUNwQyxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsK0VBQStFO0FBQy9FLE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBb0I7SUFDakQsT0FBTyxHQUFHLE1BQU0sSUFBSSxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztBQUNoRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogT3BhcXVlIGFjY2Vzcy1rZXkgZm9ybWF0LCBzaGFyZWQgYnkgZXZlcnl0aGluZyB0aGF0IG1pbnRzLCBwcmVzZW50cyBvclxuICogcmVjb2duaXplcyBvbmUuXG4gKlxuICogQSBrZXkgaXMgYSBoaWdoLWVudHJvcHkgcmFuZG9tIHN0cmluZyB3aXRoIGEgaHVtYW4tcmVhZGFibGUgcHJlZml4OlxuICpcbiAqICAgICBwYl9wYXRfPDQzIGJhc2U2NHVybCBjaGFycz4gICAgIHBlcnNvbmFsIGFjY2VzcyBrZXkgKGEgcGVyc29uJ3MgY3JlZGVudGlhbClcbiAqICAgICBwYl9zYV88NDMgYmFzZTY0dXJsIGNoYXJzPiAgICAgIHNlcnZpY2UtYWNjb3VudCBrZXkgKHJlc2VydmVkOyBub3QgbWludGVkIHlldClcbiAqXG4gKiBUaGUga2V5IGl0c2VsZiBpcyBORVZFUiBzdG9yZWQg4oCUIHBsYXRmb3JtIGtlZXBzIG9ubHkgYHNoYTI1NihrZXkpYCBwbHVzIHRoZVxuICogcHJlZml4IGFuZCBsYXN0IGZvdXIgY2hhcmFjdGVycywgd2hpY2ggaXMgYWxsIHRoZSBVSSBuZWVkcyB0byBuYW1lIG9uZS4gSXQgaXNcbiAqIHRoZXJlZm9yZSBzaG93biBleGFjdGx5IG9uY2UsIGF0IGNyZWF0aW9uLlxuICpcbiAqIEtleXMgYXJlIG9wYXF1ZTogdGhleSBjYXJyeSBubyBjbGFpbXMgYW5kIG5vIHNpZ25hdHVyZSwgc28gYSBzZXJ2aWNlIGNhbm5vdFxuICogdmVyaWZ5IG9uZSBsb2NhbGx5LiBBIGNhbGxlciB0cmFkZXMgdGhlIGtleSBhdCBwbGF0Zm9ybSdzXG4gKiBgUE9TVCAvYXV0aC90b2tlbi9leGNoYW5nZWAgZm9yIGEgc2hvcnQtbGl2ZWQgSldUIChzZWUgYGFwaS1rZXktZXhjaGFuZ2UudHNgKSxcbiAqIHdoaWNoIGV2ZXJ5IHNlcnZpY2UgdmVyaWZpZXMgdGhlIHVzdWFsIHdheS4gVGhhdCBpcyB3aGF0IG1ha2VzIHJldm9jYXRpb25cbiAqIGVmZmVjdGl2ZSBmbGVldC13aWRlIHdpdGhpbiBvbmUgdG9rZW4gbGlmZXRpbWUuXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlSGFzaCwgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuXG4vKiogUHJlZml4ZXMgdGhhdCBuYW1lIHdoYXQga2luZCBvZiBwcmluY2lwYWwgYSBrZXkgc3BlYWtzIGZvci4gKi9cbmV4cG9ydCBjb25zdCBBUElfS0VZX1BSRUZJWEVTID0gWydwYl9wYXQnLCAncGJfc2EnXSBhcyBjb25zdDtcblxuLyoqIE9uZSBvZiB7QGxpbmsgQVBJX0tFWV9QUkVGSVhFU30uIGBwYl9zYWAgaXMgcmVzZXJ2ZWQgZm9yIHNlcnZpY2UgYWNjb3VudHMuICovXG5leHBvcnQgdHlwZSBBcGlLZXlQcmVmaXggPSAodHlwZW9mIEFQSV9LRVlfUFJFRklYRVMpW251bWJlcl07XG5cbi8qKiBSYW5kb20gYnl0ZXMgYmVoaW5kIGVhY2gga2V5IOKAlCAyNTYgYml0cywgYmFzZTY0dXJsLWVuY29kZWQgdG8gNDMgY2hhcnMuICovXG5jb25zdCBBUElfS0VZX1NFQ1JFVF9CWVRFUyA9IDMyO1xuXG4vKipcbiAqIExpZmV0aW1lIG9mIHRoZSBKV1QgYW4gZXhjaGFuZ2UgcmV0dXJucy4gU2hvcnQgYnkgZGVzaWduOiBpdCBpcyB0aGUgd2luZG93IGluXG4gKiB3aGljaCBhIHJldm9rZWQga2V5IHN0aWxsIHdvcmtzLCBhbmQgdGhlIHJlYXNvbiBzZXJ2aWNlcyBuZXZlciBuZWVkIHRvIHJlYWQgYVxuICoga2V5IGhhc2guXG4gKi9cbmV4cG9ydCBjb25zdCBBUElfS0VZX1RPS0VOX1RUTF9TRUNPTkRTID0gMzAwO1xuXG4vKipcbiAqIEEgd2VsbC1mb3JtZWQga2V5LiBBbmNob3JlZCBhbmQgbGVuZ3RoLWJvdW5kZWQgc28gYSBob3N0aWxlIEF1dGhvcml6YXRpb25cbiAqIGhlYWRlciBjYW4ndCBiZSByb3V0ZWQgZG93biB0aGUgZXhjaGFuZ2UgcGF0aCBvbiBhIGxvb3NlIHByZWZpeCBtYXRjaC5cbiAqL1xuY29uc3QgS0VZX1BBVFRFUk4gPSBuZXcgUmVnRXhwKGBeKCR7QVBJX0tFWV9QUkVGSVhFUy5qb2luKCd8Jyl9KV8oW0EtWmEtejAtOV8tXXszMiw2NH0pJGApO1xuXG4vKipcbiAqIFdoZXRoZXIgYGNyZWRlbnRpYWxgIGlzIGFuIG9wYXF1ZSBhY2Nlc3Mga2V5IChyYXRoZXIgdGhhbiBhIEpXVCkuIFVzZWQgYXQgdGhlXG4gKiBvbmUgcGxhY2UgZWFjaCBzZXJ2aWNlIGRlY2lkZXMgaG93IHRvIHJlc29sdmUgYW4gQXV0aG9yaXphdGlvbiBjcmVkZW50aWFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPcGFxdWVBcGlLZXkoY3JlZGVudGlhbDogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgY3JlZGVudGlhbCA9PT0gJ3N0cmluZycgJiYgS0VZX1BBVFRFUk4udGVzdChjcmVkZW50aWFsKTtcbn1cblxuLyoqIFRoZSBwcmVmaXggb2YgYSB3ZWxsLWZvcm1lZCBrZXksIGVsc2UgYHVuZGVmaW5lZGAuICovXG5leHBvcnQgZnVuY3Rpb24gYXBpS2V5UHJlZml4T2YoY3JlZGVudGlhbDogc3RyaW5nIHwgdW5kZWZpbmVkKTogQXBpS2V5UHJlZml4IHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiBjcmVkZW50aWFsICE9PSAnc3RyaW5nJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgbWF0Y2ggPSBLRVlfUEFUVEVSTi5leGVjKGNyZWRlbnRpYWwpO1xuICByZXR1cm4gbWF0Y2ggPyAobWF0Y2hbMV0gYXMgQXBpS2V5UHJlZml4KSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBUaGUgc3RvcmVkIGZvcm0gb2YgYSBrZXk6IFNIQS0yNTYsIGhleC4gQSBwbGFpbiBoYXNoIChub3QgYSBwYXNzd29yZCBLREYpIGlzXG4gKiBjb3JyZWN0IGhlcmUg4oCUIHRoZSBrZXkgaXMgMjU2IGJpdHMgb2YgQ1NQUk5HIG91dHB1dCwgc28gdGhlcmUgaXMgbm90aGluZyB0b1xuICogYnJ1dGUtZm9yY2UgYW5kIHRoZSBsb29rdXAgaGFwcGVucyBvbiBldmVyeSBleGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2hBcGlLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGtleSwgJ3V0ZjgnKS5kaWdlc3QoJ2hleCcpO1xufVxuXG4vKiogTWludCBhIG5ldyBrZXkuIFRoZSBjYWxsZXIgc3RvcmVzIG9ubHkge0BsaW5rIGhhc2hBcGlLZXl9IG9mIHRoZSByZXN1bHQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBcGlLZXkocHJlZml4OiBBcGlLZXlQcmVmaXgpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7cHJlZml4fV8ke3JhbmRvbUJ5dGVzKEFQSV9LRVlfU0VDUkVUX0JZVEVTKS50b1N0cmluZygnYmFzZTY0dXJsJyl9YDtcbn1cblxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2FwaS1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFakQsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBVSxDQUFDO0FBSzdELDhFQUE4RTtBQUM5RSxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUVoQzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFDO0FBRTdDOzs7R0FHRztBQUNILE1BQU0sV0FBVyxHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBRTNGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsVUFBOEI7SUFDM0QsT0FBTyxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxjQUFjLENBQUMsVUFBOEI7SUFDM0QsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDckQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUUsS0FBSyxDQUFDLENBQUMsQ0FBa0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3hELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFXO0lBQ3BDLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCwrRUFBK0U7QUFDL0UsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFvQjtJQUNqRCxPQUFPLEdBQUcsTUFBTSxJQUFJLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO0FBQ2hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBPcGFxdWUgYWNjZXNzLWtleSBmb3JtYXQsIHNoYXJlZCBieSBldmVyeXRoaW5nIHRoYXQgbWludHMsIHByZXNlbnRzIG9yXG4gKiByZWNvZ25pemVzIG9uZS5cbiAqXG4gKiBBIGtleSBpcyBhIGhpZ2gtZW50cm9weSByYW5kb20gc3RyaW5nIHdpdGggYSBodW1hbi1yZWFkYWJsZSBwcmVmaXg6XG4gKlxuICogICAgIHBiX3BhdF88NDMgYmFzZTY0dXJsIGNoYXJzPiAgICAgcGVyc29uYWwgYWNjZXNzIGtleSAoYSBwZXJzb24ncyBjcmVkZW50aWFsKVxuICogICAgIHBiX3NhXzw0MyBiYXNlNjR1cmwgY2hhcnM+ICAgICAgc2VydmljZS1hY2NvdW50IGtleSAocmVzZXJ2ZWQ7IG5vdCBtaW50ZWQgeWV0KVxuICpcbiAqIFRoZSBrZXkgaXRzZWxmIGlzIE5FVkVSIHN0b3JlZCDigJQgcGxhdGZvcm0ga2VlcHMgb25seSBgc2hhMjU2KGtleSlgIHBsdXMgdGhlXG4gKiBwcmVmaXggYW5kIGxhc3QgZm91ciBjaGFyYWN0ZXJzLCB3aGljaCBpcyBhbGwgdGhlIFVJIG5lZWRzIHRvIG5hbWUgb25lLiBJdCBpc1xuICogdGhlcmVmb3JlIHNob3duIGV4YWN0bHkgb25jZSwgYXQgY3JlYXRpb24uXG4gKlxuICogS2V5cyBhcmUgb3BhcXVlOiB0aGV5IGNhcnJ5IG5vIGNsYWltcyBhbmQgbm8gc2lnbmF0dXJlLCBzbyBhIHNlcnZpY2UgY2Fubm90XG4gKiB2ZXJpZnkgb25lIGxvY2FsbHkuIEEgY2FsbGVyIHRyYWRlcyB0aGUga2V5IGF0IHBsYXRmb3JtJ3NcbiAqIGBQT1NUIC9hdXRoL3Rva2VuL2V4Y2hhbmdlYCBmb3IgYSBzaG9ydC1saXZlZCBKV1QgKHNlZSBgYXBpLWtleS1leGNoYW5nZS50c2ApLFxuICogd2hpY2ggZXZlcnkgc2VydmljZSB2ZXJpZmllcyB0aGUgdXN1YWwgd2F5LiBUaGF0IGlzIHdoYXQgbWFrZXMgcmV2b2NhdGlvblxuICogZWZmZWN0aXZlIGZsZWV0LXdpZGUgd2l0aGluIG9uZSB0b2tlbiBsaWZldGltZS5cbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVIYXNoLCByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5cbi8qKiBQcmVmaXhlcyB0aGF0IG5hbWUgd2hhdCBraW5kIG9mIHByaW5jaXBhbCBhIGtleSBzcGVha3MgZm9yLiAqL1xuZXhwb3J0IGNvbnN0IEFQSV9LRVlfUFJFRklYRVMgPSBbJ3BiX3BhdCcsICdwYl9zYSddIGFzIGNvbnN0O1xuXG4vKiogT25lIG9mIHtAbGluayBBUElfS0VZX1BSRUZJWEVTfS4gYHBiX3NhYCBpcyByZXNlcnZlZCBmb3Igc2VydmljZSBhY2NvdW50cy4gKi9cbmV4cG9ydCB0eXBlIEFwaUtleVByZWZpeCA9ICh0eXBlb2YgQVBJX0tFWV9QUkVGSVhFUylbbnVtYmVyXTtcblxuLyoqIFJhbmRvbSBieXRlcyBiZWhpbmQgZWFjaCBrZXkg4oCUIDI1NiBiaXRzLCBiYXNlNjR1cmwtZW5jb2RlZCB0byA0MyBjaGFycy4gKi9cbmNvbnN0IEFQSV9LRVlfU0VDUkVUX0JZVEVTID0gMzI7XG5cbi8qKlxuICogTGlmZXRpbWUgb2YgdGhlIEpXVCBhbiBleGNoYW5nZSByZXR1cm5zLiBTaG9ydCBieSBkZXNpZ246IGl0IGlzIHRoZSB3aW5kb3cgaW5cbiAqIHdoaWNoIGEgcmV2b2tlZCBrZXkgc3RpbGwgd29ya3MsIGFuZCB0aGUgcmVhc29uIHNlcnZpY2VzIG5ldmVyIG5lZWQgdG8gcmVhZCBhXG4gKiBrZXkgaGFzaC5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQSV9LRVlfVE9LRU5fVFRMX1NFQ09ORFMgPSAzMDA7XG5cbi8qKlxuICogQSB3ZWxsLWZvcm1lZCBrZXkuIEFuY2hvcmVkIGFuZCBsZW5ndGgtYm91bmRlZCBzbyBhIGhvc3RpbGUgQXV0aG9yaXphdGlvblxuICogaGVhZGVyIGNhbid0IGJlIHJvdXRlZCBkb3duIHRoZSBleGNoYW5nZSBwYXRoIG9uIGEgbG9vc2UgcHJlZml4IG1hdGNoLlxuICovXG5jb25zdCBLRVlfUEFUVEVSTiA9IG5ldyBSZWdFeHAoYF4oJHtBUElfS0VZX1BSRUZJWEVTLmpvaW4oJ3wnKX0pXyhbQS1aYS16MC05Xy1dezMyLDY0fSkkYCk7XG5cbi8qKlxuICogV2hldGhlciBgY3JlZGVudGlhbGAgaXMgYW4gb3BhcXVlIGFjY2VzcyBrZXkgKHJhdGhlciB0aGFuIGEgSldUKS4gVXNlZCBhdCB0aGVcbiAqIG9uZSBwbGFjZSBlYWNoIHNlcnZpY2UgZGVjaWRlcyBob3cgdG8gcmVzb2x2ZSBhbiBBdXRob3JpemF0aW9uIGNyZWRlbnRpYWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09wYXF1ZUFwaUtleShjcmVkZW50aWFsOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBjcmVkZW50aWFsID09PSAnc3RyaW5nJyAmJiBLRVlfUEFUVEVSTi50ZXN0KGNyZWRlbnRpYWwpO1xufVxuXG4vKiogVGhlIHByZWZpeCBvZiBhIHdlbGwtZm9ybWVkIGtleSwgZWxzZSBgdW5kZWZpbmVkYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcGlLZXlQcmVmaXhPZihjcmVkZW50aWFsOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBBcGlLZXlQcmVmaXggfCB1bmRlZmluZWQge1xuICBpZiAodHlwZW9mIGNyZWRlbnRpYWwgIT09ICdzdHJpbmcnKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBtYXRjaCA9IEtFWV9QQVRURVJOLmV4ZWMoY3JlZGVudGlhbCk7XG4gIHJldHVybiBtYXRjaCA/IChtYXRjaFsxXSBhcyBBcGlLZXlQcmVmaXgpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFRoZSBzdG9yZWQgZm9ybSBvZiBhIGtleTogU0hBLTI1NiwgaGV4LiBBIHBsYWluIGhhc2ggKG5vdCBhIHBhc3N3b3JkIEtERikgaXNcbiAqIGNvcnJlY3QgaGVyZSDigJQgdGhlIGtleSBpcyAyNTYgYml0cyBvZiBDU1BSTkcgb3V0cHV0LCBzbyB0aGVyZSBpcyBub3RoaW5nIHRvXG4gKiBicnV0ZS1mb3JjZSBhbmQgdGhlIGxvb2t1cCBoYXBwZW5zIG9uIGV2ZXJ5IGV4Y2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaEFwaUtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoa2V5LCAndXRmOCcpLmRpZ2VzdCgnaGV4Jyk7XG59XG5cbi8qKiBNaW50IGEgbmV3IGtleS4gVGhlIGNhbGxlciBzdG9yZXMgb25seSB7QGxpbmsgaGFzaEFwaUtleX0gb2YgdGhlIHJlc3VsdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUFwaUtleShwcmVmaXg6IEFwaUtleVByZWZpeCk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtwcmVmaXh9XyR7cmFuZG9tQnl0ZXMoQVBJX0tFWV9TRUNSRVRfQllURVMpLnRvU3RyaW5nKCdiYXNlNjR1cmwnKX1gO1xufVxuXG4iXX0=
@@ -40,4 +40,4 @@ export function logAuditEvent(logger, audit) {
40
40
  }
41
41
  }
42
42
  }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYXVkaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsTUFBc0IsRUFDdEIsS0FBaUI7SUFFakIsSUFBSSxDQUFDO1FBQ0gsK0VBQStFO1FBQy9FLDJFQUEyRTtRQUMzRSw4RUFBOEU7UUFDOUUsa0RBQWtEO1FBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLG1FQUFtRTtRQUNuRSxxRUFBcUU7UUFDckUsK0NBQStDO1FBQy9DLElBQUksQ0FBQztZQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUU7Z0JBQ3hDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUM7YUFDekIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLHFEQUFxRDtRQUN2RCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgd2luc3RvbiBmcm9tICd3aW5zdG9uJztcbmltcG9ydCB7IHNjcnViQXdzSWRlbnRpZmllcnMgfSBmcm9tICcuL2F3cy1zY3J1Yi5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuL3Jlc3BvbnNlLmpzJztcbmltcG9ydCB0eXBlIHsgQXVkaXRFdmVudCB9IGZyb20gJy4uL3R5cGVzL2F1ZGl0LWV2ZW50cy5qcyc7XG5cbi8qKlxuICogTG9nIGEgY3Jvc3Mtc2VydmljZSBhdWRpdCBldmVudCBhcyBhIHN0cnVjdHVyZWQgKHdpbnN0b24g4oaSIExva2kpIGxvZyBsaW5lLlxuICpcbiAqIFRoaXMgaXMgdGhlIHNob3J0LXJldGVudGlvbiBPUEVSQVRPUiBzaW5rLiBUaGUgZHVyYWJsZSwgaGFzaC1jaGFpbmVkIGNlbnRyYWxcbiAqIGF1ZGl0IHRyYWlsIGlzIGEgZGlmZmVyZW50IHNpbms6IGByZWNvcmRBdWRpdChldmVudClgLlxuICpcbiAqIEJlc3QtZWZmb3J0OiBpZiB0aGUgdW5kZXJseWluZyBsb2dnZXIgdHJhbnNwb3J0IGZhaWxzLCB0aGUgY2FsbGVyJ3NcbiAqIG11dGF0aW9uIHN0aWxsIHN1Y2NlZWRzIOKAlCB3ZSBuZXZlciBsZXQgYXVkaXQtd3JpdGUgZmFpbHVyZSByb2xsIGJhY2tcbiAqIHRoZSB1c2VyLXZpc2libGUgb3BlcmF0aW9uLiBUaGUgbGluZSBpcyB0YWdnZWQgYGV2ZW50Q2F0ZWdvcnk6ICdhdWRpdCdgXG4gKiBzbyBkb3duc3RyZWFtIGxvZyBhZ2dyZWdhdG9ycyAoTG9raSwgQ2xvdWRXYXRjaCkgY2FuIHJvdXRlIGF1ZGl0XG4gKiBldmVudHMgaW50byBhIHNlcGFyYXRlIGluZGV4LlxuICpcbiAqIEZvciBwbGF0Zm9ybSdzIG93biBhdWRpdCBldmVudHMgKHVzZXIubG9naW4sIG9yZy5jcmVhdGUsIOKApiksIHVzZVxuICogcGxhdGZvcm0ncyBgaGVscGVycy9hdWRpdC50c2AgaW5zdGVhZCDigJQgdGhvc2UgcGVyc2lzdCB0byBNb25nb0RCLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nQXVkaXRFdmVudChcbiAgbG9nZ2VyOiB3aW5zdG9uLkxvZ2dlcixcbiAgYXVkaXQ6IEF1ZGl0RXZlbnQsXG4pOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICAvLyBTY3J1YiBhbnkgQVdTIGFjY291bnQtaWQtc2hhcGVkIHZhbHVlcyAoZS5nLiBhbiBBUk4gaW4gYGRldGFpbHNgKSBiZWZvcmUgdGhlXG4gICAgLy8gZXZlbnQgbGFuZHMgaW4gdGhlIGR1cmFibGUgbG9nIHN0b3JlIOKAlCB0aGUgbG9nZ2VyJ3Mgc2VjcmV0LWtleSByZWRhY3Rpb25cbiAgICAvLyBkb2Vzbid0IGNvdmVyIGFjY291bnQgaWRzLCBhbmQgdGhpcyBpcyBleGFjdGx5IHRoZSBwZXJzaXN0ZW5jZSBib3VuZGFyeSB0aGVcbiAgICAvLyBcIm5ldmVyIHBlcnNpc3QgYW4gQVdTIGFjY291bnQgaWRcIiBydWxlIHRhcmdldHMuXG4gICAgbG9nZ2VyLmluZm8oJ2F1ZGl0Jywgc2NydWJBd3NJZGVudGlmaWVycyh7IGV2ZW50Q2F0ZWdvcnk6ICdhdWRpdCcsIC4uLmF1ZGl0IH0pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gVGhlIHdpbnN0b24gbG9nZ2VyIG5vcm1hbGx5IG5ldmVyIHRocm93cyBzeW5jaHJvbm91c2x5LCBidXQgaWYgYVxuICAgIC8vIHRyYW5zcG9ydCBleHBsb2RlcyBkdXJpbmcgYSByb3V0ZSBjYWxsLCB3ZSBkb24ndCB3YW50IHRoZSBtdXRhdGlvblxuICAgIC8vIHRvIGZhaWwgYmVjYXVzZSB0aGUgYXVkaXQgd3JpdGUgZGlkbid0IGxhbmQuXG4gICAgdHJ5IHtcbiAgICAgIGxvZ2dlci53YXJuKCdGYWlsZWQgdG8gZW1pdCBhdWRpdCBldmVudCcsIHtcbiAgICAgICAgZXZlbnQ6IGF1ZGl0LmV2ZW50LFxuICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVyciksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIExvZ2dlciBpdHNlbGYgaXMgdW5yZWNvdmVyYWJsZSDigJQgZ2l2ZSB1cCBzaWxlbnRseS5cbiAgICB9XG4gIH1cbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hdWRpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0M7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUMzQixNQUFzQixFQUN0QixLQUFpQjtJQUVqQixJQUFJLENBQUM7UUFDSCwrRUFBK0U7UUFDL0UsMkVBQTJFO1FBQzNFLDhFQUE4RTtRQUM5RSxrREFBa0Q7UUFDbEQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsbUVBQW1FO1FBQ25FLHFFQUFxRTtRQUNyRSwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDO1lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRTtnQkFDeEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQzthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AscURBQXFEO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB3aW5zdG9uIGZyb20gJ3dpbnN0b24nO1xuaW1wb3J0IHsgc2NydWJBd3NJZGVudGlmaWVycyB9IGZyb20gJy4vYXdzLXNjcnViLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4vcmVzcG9uc2UuanMnO1xuaW1wb3J0IHR5cGUgeyBBdWRpdEV2ZW50IH0gZnJvbSAnLi4vdHlwZXMvYXVkaXQtZXZlbnRzLmpzJztcblxuLyoqXG4gKiBMb2cgYSBjcm9zcy1zZXJ2aWNlIGF1ZGl0IGV2ZW50IGFzIGEgc3RydWN0dXJlZCAod2luc3RvbiDihpIgTG9raSkgbG9nIGxpbmUuXG4gKlxuICogVGhpcyBpcyB0aGUgc2hvcnQtcmV0ZW50aW9uIE9QRVJBVE9SIHNpbmsuIFRoZSBkdXJhYmxlLCBoYXNoLWNoYWluZWQgY2VudHJhbFxuICogYXVkaXQgdHJhaWwgaXMgYSBkaWZmZXJlbnQgc2luazogYHJlY29yZEF1ZGl0KGV2ZW50KWAuXG4gKlxuICogQmVzdC1lZmZvcnQ6IGlmIHRoZSB1bmRlcmx5aW5nIGxvZ2dlciB0cmFuc3BvcnQgZmFpbHMsIHRoZSBjYWxsZXInc1xuICogbXV0YXRpb24gc3RpbGwgc3VjY2VlZHMg4oCUIHdlIG5ldmVyIGxldCBhdWRpdC13cml0ZSBmYWlsdXJlIHJvbGwgYmFja1xuICogdGhlIHVzZXItdmlzaWJsZSBvcGVyYXRpb24uIFRoZSBsaW5lIGlzIHRhZ2dlZCBgZXZlbnRDYXRlZ29yeTogJ2F1ZGl0J2BcbiAqIHNvIGRvd25zdHJlYW0gbG9nIGFnZ3JlZ2F0b3JzIChMb2tpLCBDbG91ZFdhdGNoKSBjYW4gcm91dGUgYXVkaXRcbiAqIGV2ZW50cyBpbnRvIGEgc2VwYXJhdGUgaW5kZXguXG4gKlxuICogRm9yIHBsYXRmb3JtJ3Mgb3duIGF1ZGl0IGV2ZW50cyAodXNlci5sb2dpbiwgb3JnLmNyZWF0ZSwg4oCmKSwgdXNlXG4gKiBwbGF0Zm9ybSdzIGBoZWxwZXJzL2F1ZGl0LnRzYCBpbnN0ZWFkIOKAlCB0aG9zZSBwZXJzaXN0IHRvIE1vbmdvREIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2dBdWRpdEV2ZW50KFxuICBsb2dnZXI6IHdpbnN0b24uTG9nZ2VyLFxuICBhdWRpdDogQXVkaXRFdmVudCxcbik6IHZvaWQge1xuICB0cnkge1xuICAgIC8vIFNjcnViIGFueSBBV1MgYWNjb3VudC1pZC1zaGFwZWQgdmFsdWVzIChlLmcuIGFuIEFSTiBpbiBgZGV0YWlsc2ApIGJlZm9yZSB0aGVcbiAgICAvLyBldmVudCBsYW5kcyBpbiB0aGUgZHVyYWJsZSBsb2cgc3RvcmUg4oCUIHRoZSBsb2dnZXIncyBzZWNyZXQta2V5IHJlZGFjdGlvblxuICAgIC8vIGRvZXNuJ3QgY292ZXIgYWNjb3VudCBpZHMsIGFuZCB0aGlzIGlzIGV4YWN0bHkgdGhlIHBlcnNpc3RlbmNlIGJvdW5kYXJ5IHRoZVxuICAgIC8vIFwibmV2ZXIgcGVyc2lzdCBhbiBBV1MgYWNjb3VudCBpZFwiIHJ1bGUgdGFyZ2V0cy5cbiAgICBsb2dnZXIuaW5mbygnYXVkaXQnLCBzY3J1YkF3c0lkZW50aWZpZXJzKHsgZXZlbnRDYXRlZ29yeTogJ2F1ZGl0JywgLi4uYXVkaXQgfSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBUaGUgd2luc3RvbiBsb2dnZXIgbm9ybWFsbHkgbmV2ZXIgdGhyb3dzIHN5bmNocm9ub3VzbHksIGJ1dCBpZiBhXG4gICAgLy8gdHJhbnNwb3J0IGV4cGxvZGVzIGR1cmluZyBhIHJvdXRlIGNhbGwsIHdlIGRvbid0IHdhbnQgdGhlIG11dGF0aW9uXG4gICAgLy8gdG8gZmFpbCBiZWNhdXNlIHRoZSBhdWRpdCB3cml0ZSBkaWRuJ3QgbGFuZC5cbiAgICB0cnkge1xuICAgICAgbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBlbWl0IGF1ZGl0IGV2ZW50Jywge1xuICAgICAgICBldmVudDogYXVkaXQuZXZlbnQsXG4gICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gTG9nZ2VyIGl0c2VsZiBpcyB1bnJlY292ZXJhYmxlIOKAlCBnaXZlIHVwIHNpbGVudGx5LlxuICAgIH1cbiAgfVxufVxuIl19
@@ -64,4 +64,4 @@ export function scrubAwsIdentifiers(value) {
64
64
  }
65
65
  return value;
66
66
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXNjcnViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2F3cy1zY3J1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7OztHQVdHO0FBRUgsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBRTlCOzs7O0dBSUc7QUFDSCxNQUFNLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDO0FBRWpELG9GQUFvRjtBQUNwRixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUM7QUFFbEMsbUdBQW1HO0FBQ25HLE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxLQUFhO0lBQ3pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBSSxLQUFRO0lBQzdDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyw2QkFBNkIsQ0FBQyxLQUFLLENBQWlCLENBQUM7SUFDOUQsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQWlCLENBQUM7SUFDbEUsQ0FBQztJQUNELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLDJFQUEyRTtRQUMzRSwwRUFBMEU7UUFDMUUsNkVBQTZFO1FBQzdFLCtFQUErRTtRQUMvRSw4RUFBOEU7UUFDOUUsMEVBQTBFO1FBQzFFLG9FQUFvRTtRQUNwRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMvRCxNQUFNLEdBQUcsR0FBNEIsRUFBRSxDQUFDO1FBQ3hDLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWdDLENBQUMsRUFBRSxDQUFDO1lBQ3RFLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUMvRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQ3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUmVkYWN0IEFXUyBhY2NvdW50IGlkZW50aWZpZXJzIGZyb20gdmFsdWVzIGhlYWRlZCBmb3IgYSBEVVJBQkxFIHN0b3JlIG9yIGFuXG4gKiBvdXRib3VuZCBwYXlsb2FkIChhdWRpdCBgZGV0YWlsc2AsIGluZ2VzdGVkIGV2ZW50IGBkZXRhaWxgLCBlcnJvciBtZXNzYWdlcykuXG4gKlxuICogSEFSRCBDT05TVFJBSU5UOiBhbiBBV1MgYWNjb3VudCBpZCBtdXN0IE5FVkVSIGJlIHBlcnNpc3RlZCBhbnl3aGVyZSBpbiB0aGlzXG4gKiBzeXN0ZW0g4oCUIGBvcmdJZGAgaXMgdGhlIHBsYXRmb3JtIG9yZyBpZCAoYSBNYXJrZXRwbGFjZSBjdXN0b21lciBpcyBrZXllZCBvbiBpdHNcbiAqIGxpY2Vuc2UgQVJOLCBpbiBzdWJzY3JpcHRpb24gbWV0YWRhdGEpLCBuZXZlciBhbiBBV1MgYWNjb3VudCBpZC4gQVdTIHN1cmZhY2VzIChDb2RlUGlwZWxpbmUvQ29kZUJ1aWxkIGZhaWx1cmUgbWVzc2FnZXMsIEtNUy9yb2xlIEFSTnMpIGxlYWtcbiAqIHRoZSBhY2NvdW50IGlkIGFzIHRoZSA1dGggQVJOIHNlZ21lbnQgb3IgYXMgYSBiYXJlIDEyLWRpZ2l0IHRva2VuLCBzbyBzY3J1YiBhdFxuICogZXZlcnkgYm91bmRhcnkgdGhhdCB3cml0ZXMgdW50cnVzdGVkIEFXUy1kZXJpdmVkIHRleHQuIERlZmVuc2UtaW4tZGVwdGg6IGFwcGx5XG4gKiB0aGlzIGV2ZW4gd2hlbiBhbiB1cHN0cmVhbSAoZS5nLiB0aGUgZXZlbnRzIExhbWJkYSkgaXMgZXhwZWN0ZWQgdG8gaGF2ZVxuICogc3RyaXBwZWQgaXQg4oCUIHRoZSBwZXJzaXN0ZW5jZSBib3VuZGFyeSBtdXN0IG5vdCB0cnVzdCB1cHN0cmVhbS5cbiAqL1xuXG5jb25zdCBSRURBQ1RFRCA9ICdbUkVEQUNURURdJztcblxuLyoqXG4gKiBBIDEyLWRpZ2l0IHJ1biBpcyB0aGUgQVdTIGFjY291bnQtaWQgc2hhcGUgKGFuZCB0aGUgYWNjb3VudCBzZWdtZW50IG9mIGV2ZXJ5XG4gKiBBUk4pLiBCb3VuZGVkIGJ5IG5vbi1kaWdpdHMgc28gd2UgbmV2ZXIgY2xpcCBpbnNpZGUgYSBsb25nZXIgbnVtYmVyIChlLmcuIGFcbiAqIDEzLWRpZ2l0IG1pbGxpc2Vjb25kIHRpbWVzdGFtcCBpcyBsZWZ0IGludGFjdCkuXG4gKi9cbmNvbnN0IEFXU19BQ0NPVU5UX0lEX1JFID0gLyg/PCFcXGQpXFxkezEyfSg/IVxcZCkvZztcblxuLyoqIEtleXMgdGhhdCBuYW1lIGFuIEFXUyBhY2NvdW50IGlkIG91dHJpZ2h0IOKAlCB0aGVpciB2YWx1ZSBpcyBkcm9wcGVkIHdob2xlc2FsZS4gKi9cbmNvbnN0IEFDQ09VTlRfS0VZX1JFID0gL2FjY291bnQvaTtcblxuLyoqIFJlZGFjdCBldmVyeSBBV1MtYWNjb3VudC1pZC1zaGFwZWQgdG9rZW4gKGluY2wuIHRoZSBhY2NvdW50IGZpZWxkIG9mIGFueSBBUk4pIGZyb20gYSBzdHJpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gc2NydWJBd3NJZGVudGlmaWVyc0Zyb21TdHJpbmcoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKEFXU19BQ0NPVU5UX0lEX1JFLCBSRURBQ1RFRCk7XG59XG5cbi8qKlxuICogRGVlcC1zY3J1YiBhIHZhbHVlIChzdHJpbmcgLyBhcnJheSAvIHBsYWluIG9iamVjdCkgb2YgQVdTIGFjY291bnQgaWRlbnRpZmllcnMsXG4gKiByZXR1cm5pbmcgYSBzY3J1YmJlZCBjb3B5IOKAlCB0aGUgaW5wdXQgaXMgbmV2ZXIgbXV0YXRlZC4gU3RyaW5nIHZhbHVlcyBoYXZlXG4gKiBhY2NvdW50LWlkIHRva2VucyByZWRhY3RlZDsgYW55IGtleSBtYXRjaGluZyB7QGxpbmsgQUNDT1VOVF9LRVlfUkV9IHdpdGggYVxuICogc3RyaW5nL251bWJlciB2YWx1ZSBpcyByZWRhY3RlZCB3aG9sZXNhbGUuIE5vbi1zdHJpbmcgcHJpbWl0aXZlcyBwYXNzIHRocm91Z2hcbiAqIHVuY2hhbmdlZCAoYSBiYXJlIG51bWJlciBpcyBvbmx5IHJlZGFjdGVkIHdoZW4gaXQgc2l0cyB1bmRlciBhbiBhY2NvdW50LW5hbWVkXG4gKiBrZXksIHRvIGF2b2lkIGNsb2JiZXJpbmcgbGVnaXRpbWF0ZSBudW1lcmljIGZpZWxkcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY3J1YkF3c0lkZW50aWZpZXJzPFQ+KHZhbHVlOiBUKTogVCB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHNjcnViQXdzSWRlbnRpZmllcnNGcm9tU3RyaW5nKHZhbHVlKSBhcyB1bmtub3duIGFzIFQ7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcCgodikgPT4gc2NydWJBd3NJZGVudGlmaWVycyh2KSkgYXMgdW5rbm93biBhcyBUO1xuICB9XG4gIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gUmVjdXJzZSBwbGFpbiBBTkQgbnVsbC1wcm90b3R5cGUgb2JqZWN0cyAoZGF0YSBiYWdzKS4gQSBEYXRlL0J1ZmZlci9NYXAvXG4gICAgLy8gY2xhc3MgaW5zdGFuY2UgaXMgTk9UIGEgcGxhaW4gb2JqZWN0LCBhbmQgd2Fsa2luZyBpdCB2aWEgT2JqZWN0LmVudHJpZXNcbiAgICAvLyB3b3VsZCBjbG9iYmVyIGl0IHRvIGB7fWAgKG9yIGEgYnl0ZSBtYXApIOKAlCBzaWxlbnRseSBkZXN0cm95aW5nIGUuZy4gYSBEYXRlXG4gICAgLy8gaGVsZCBpbiBhdWRpdCBgZGV0YWlsc2AuIEJ1dCBhIG51bGwtcHJvdG90eXBlIG9iamVjdCAoYE9iamVjdC5jcmVhdGUobnVsbClgLFxuICAgIC8vIHNvbWUgSlNPTi5wYXJzZSByZXZpdmVycywgQlNPTiBkb2NzKSBpcyBhIHBsYWluIGRhdGEgYmFnIHRoYXQgbXVzdCBzdGlsbCBiZVxuICAgIC8vIHNjcnViYmVkIOKAlCBza2lwcGluZyBpdCB3YXMgYSBob2xlIGF0IHRoZSB2ZXJ5IHBlcnNpc3RlbmNlIGJvdW5kYXJ5IHRoaXNcbiAgICAvLyBtb2R1bGUgZ3VhcmRzLiBMZWF2ZSBvbmx5IHByb3RvdHlwZWQgbm9uLXBsYWluIG9iamVjdHMgdW50b3VjaGVkLlxuICAgIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgICBpZiAocHJvdG8gIT09IE9iamVjdC5wcm90b3R5cGUgJiYgcHJvdG8gIT09IG51bGwpIHJldHVybiB2YWx1ZTtcbiAgICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICBpZiAoQUNDT1VOVF9LRVlfUkUudGVzdChrKSAmJiAodHlwZW9mIHYgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2ID09PSAnbnVtYmVyJykpIHtcbiAgICAgICAgb3V0W2tdID0gUkVEQUNURUQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXRba10gPSBzY3J1YkF3c0lkZW50aWZpZXJzKHYpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0IGFzIFQ7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuIl19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXNjcnViLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYXdzLXNjcnViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUM7QUFFOUI7Ozs7R0FJRztBQUNILE1BQU0saUJBQWlCLEdBQUcsc0JBQXNCLENBQUM7QUFFakQsb0ZBQW9GO0FBQ3BGLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUVsQyxtR0FBbUc7QUFDbkcsTUFBTSxVQUFVLDZCQUE2QixDQUFDLEtBQWE7SUFDekQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFJLEtBQVE7SUFDN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixPQUFPLDZCQUE2QixDQUFDLEtBQUssQ0FBaUIsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBaUIsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdkMsMkVBQTJFO1FBQzNFLDBFQUEwRTtRQUMxRSw2RUFBNkU7UUFDN0UsK0VBQStFO1FBQy9FLDhFQUE4RTtRQUM5RSwwRUFBMEU7UUFDMUUsb0VBQW9FO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxLQUFLLEtBQUssTUFBTSxDQUFDLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9ELE1BQU0sR0FBRyxHQUE0QixFQUFFLENBQUM7UUFDeEMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBZ0MsQ0FBQyxFQUFFLENBQUM7WUFDdEUsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQy9FLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sR0FBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBSZWRhY3QgQVdTIGFjY291bnQgaWRlbnRpZmllcnMgZnJvbSB2YWx1ZXMgaGVhZGVkIGZvciBhIERVUkFCTEUgc3RvcmUgb3IgYW5cbiAqIG91dGJvdW5kIHBheWxvYWQgKGF1ZGl0IGBkZXRhaWxzYCwgaW5nZXN0ZWQgZXZlbnQgYGRldGFpbGAsIGVycm9yIG1lc3NhZ2VzKS5cbiAqXG4gKiBIQVJEIENPTlNUUkFJTlQ6IGFuIEFXUyBhY2NvdW50IGlkIG11c3QgTkVWRVIgYmUgcGVyc2lzdGVkIGFueXdoZXJlIGluIHRoaXNcbiAqIHN5c3RlbSDigJQgYG9yZ0lkYCBpcyB0aGUgcGxhdGZvcm0gb3JnIGlkIChhIE1hcmtldHBsYWNlIGN1c3RvbWVyIGlzIGtleWVkIG9uIGl0c1xuICogbGljZW5zZSBBUk4sIGluIHN1YnNjcmlwdGlvbiBtZXRhZGF0YSksIG5ldmVyIGFuIEFXUyBhY2NvdW50IGlkLiBBV1Mgc3VyZmFjZXMgKENvZGVQaXBlbGluZS9Db2RlQnVpbGQgZmFpbHVyZSBtZXNzYWdlcywgS01TL3JvbGUgQVJOcykgbGVha1xuICogdGhlIGFjY291bnQgaWQgYXMgdGhlIDV0aCBBUk4gc2VnbWVudCBvciBhcyBhIGJhcmUgMTItZGlnaXQgdG9rZW4sIHNvIHNjcnViIGF0XG4gKiBldmVyeSBib3VuZGFyeSB0aGF0IHdyaXRlcyB1bnRydXN0ZWQgQVdTLWRlcml2ZWQgdGV4dC4gRGVmZW5zZS1pbi1kZXB0aDogYXBwbHlcbiAqIHRoaXMgZXZlbiB3aGVuIGFuIHVwc3RyZWFtIChlLmcuIHRoZSBldmVudHMgTGFtYmRhKSBpcyBleHBlY3RlZCB0byBoYXZlXG4gKiBzdHJpcHBlZCBpdCDigJQgdGhlIHBlcnNpc3RlbmNlIGJvdW5kYXJ5IG11c3Qgbm90IHRydXN0IHVwc3RyZWFtLlxuICovXG5cbmNvbnN0IFJFREFDVEVEID0gJ1tSRURBQ1RFRF0nO1xuXG4vKipcbiAqIEEgMTItZGlnaXQgcnVuIGlzIHRoZSBBV1MgYWNjb3VudC1pZCBzaGFwZSAoYW5kIHRoZSBhY2NvdW50IHNlZ21lbnQgb2YgZXZlcnlcbiAqIEFSTikuIEJvdW5kZWQgYnkgbm9uLWRpZ2l0cyBzbyB3ZSBuZXZlciBjbGlwIGluc2lkZSBhIGxvbmdlciBudW1iZXIgKGUuZy4gYVxuICogMTMtZGlnaXQgbWlsbGlzZWNvbmQgdGltZXN0YW1wIGlzIGxlZnQgaW50YWN0KS5cbiAqL1xuY29uc3QgQVdTX0FDQ09VTlRfSURfUkUgPSAvKD88IVxcZClcXGR7MTJ9KD8hXFxkKS9nO1xuXG4vKiogS2V5cyB0aGF0IG5hbWUgYW4gQVdTIGFjY291bnQgaWQgb3V0cmlnaHQg4oCUIHRoZWlyIHZhbHVlIGlzIGRyb3BwZWQgd2hvbGVzYWxlLiAqL1xuY29uc3QgQUNDT1VOVF9LRVlfUkUgPSAvYWNjb3VudC9pO1xuXG4vKiogUmVkYWN0IGV2ZXJ5IEFXUy1hY2NvdW50LWlkLXNoYXBlZCB0b2tlbiAoaW5jbC4gdGhlIGFjY291bnQgZmllbGQgb2YgYW55IEFSTikgZnJvbSBhIHN0cmluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY3J1YkF3c0lkZW50aWZpZXJzRnJvbVN0cmluZyhpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlucHV0LnJlcGxhY2UoQVdTX0FDQ09VTlRfSURfUkUsIFJFREFDVEVEKTtcbn1cblxuLyoqXG4gKiBEZWVwLXNjcnViIGEgdmFsdWUgKHN0cmluZyAvIGFycmF5IC8gcGxhaW4gb2JqZWN0KSBvZiBBV1MgYWNjb3VudCBpZGVudGlmaWVycyxcbiAqIHJldHVybmluZyBhIHNjcnViYmVkIGNvcHkg4oCUIHRoZSBpbnB1dCBpcyBuZXZlciBtdXRhdGVkLiBTdHJpbmcgdmFsdWVzIGhhdmVcbiAqIGFjY291bnQtaWQgdG9rZW5zIHJlZGFjdGVkOyBhbnkga2V5IG1hdGNoaW5nIHtAbGluayBBQ0NPVU5UX0tFWV9SRX0gd2l0aCBhXG4gKiBzdHJpbmcvbnVtYmVyIHZhbHVlIGlzIHJlZGFjdGVkIHdob2xlc2FsZS4gTm9uLXN0cmluZyBwcmltaXRpdmVzIHBhc3MgdGhyb3VnaFxuICogdW5jaGFuZ2VkIChhIGJhcmUgbnVtYmVyIGlzIG9ubHkgcmVkYWN0ZWQgd2hlbiBpdCBzaXRzIHVuZGVyIGFuIGFjY291bnQtbmFtZWRcbiAqIGtleSwgdG8gYXZvaWQgY2xvYmJlcmluZyBsZWdpdGltYXRlIG51bWVyaWMgZmllbGRzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcnViQXdzSWRlbnRpZmllcnM8VD4odmFsdWU6IFQpOiBUIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gc2NydWJBd3NJZGVudGlmaWVyc0Zyb21TdHJpbmcodmFsdWUpIGFzIHVua25vd24gYXMgVDtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKCh2KSA9PiBzY3J1YkF3c0lkZW50aWZpZXJzKHYpKSBhcyB1bmtub3duIGFzIFQ7XG4gIH1cbiAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBSZWN1cnNlIHBsYWluIEFORCBudWxsLXByb3RvdHlwZSBvYmplY3RzIChkYXRhIGJhZ3MpLiBBIERhdGUvQnVmZmVyL01hcC9cbiAgICAvLyBjbGFzcyBpbnN0YW5jZSBpcyBOT1QgYSBwbGFpbiBvYmplY3QsIGFuZCB3YWxraW5nIGl0IHZpYSBPYmplY3QuZW50cmllc1xuICAgIC8vIHdvdWxkIGNsb2JiZXIgaXQgdG8gYHt9YCAob3IgYSBieXRlIG1hcCkg4oCUIHNpbGVudGx5IGRlc3Ryb3lpbmcgZS5nLiBhIERhdGVcbiAgICAvLyBoZWxkIGluIGF1ZGl0IGBkZXRhaWxzYC4gQnV0IGEgbnVsbC1wcm90b3R5cGUgb2JqZWN0IChgT2JqZWN0LmNyZWF0ZShudWxsKWAsXG4gICAgLy8gc29tZSBKU09OLnBhcnNlIHJldml2ZXJzLCBCU09OIGRvY3MpIGlzIGEgcGxhaW4gZGF0YSBiYWcgdGhhdCBtdXN0IHN0aWxsIGJlXG4gICAgLy8gc2NydWJiZWQg4oCUIHNraXBwaW5nIGl0IHdhcyBhIGhvbGUgYXQgdGhlIHZlcnkgcGVyc2lzdGVuY2UgYm91bmRhcnkgdGhpc1xuICAgIC8vIG1vZHVsZSBndWFyZHMuIExlYXZlIG9ubHkgcHJvdG90eXBlZCBub24tcGxhaW4gb2JqZWN0cyB1bnRvdWNoZWQuXG4gICAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpO1xuICAgIGlmIChwcm90byAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBwcm90byAhPT0gbnVsbCkgcmV0dXJuIHZhbHVlO1xuICAgIGNvbnN0IG91dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikpIHtcbiAgICAgIGlmIChBQ0NPVU5UX0tFWV9SRS50ZXN0KGspICYmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHYgPT09ICdudW1iZXInKSkge1xuICAgICAgICBvdXRba10gPSBSRURBQ1RFRDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dFtrXSA9IHNjcnViQXdzSWRlbnRpZmllcnModik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXQgYXMgVDtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG4iXX0=