@pipeline-builder/api-core 5.2.3 → 5.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/constants/ai-providers.d.ts +3 -22
- package/lib/constants/ai-providers.js +6 -56
- package/lib/errors/app-errors.d.ts +14 -0
- package/lib/errors/app-errors.js +21 -1
- package/lib/helpers/sse-helpers.d.ts +33 -3
- package/lib/helpers/sse-helpers.js +91 -19
- package/lib/middleware/auth.js +6 -3
- package/lib/middleware/deferred-quota-check.d.ts +5 -0
- package/lib/middleware/deferred-quota-check.js +33 -0
- package/lib/middleware/ecosystem-guard.d.ts +3 -3
- package/lib/middleware/ecosystem-guard.js +5 -5
- package/lib/middleware/index.d.ts +5 -2
- package/lib/middleware/index.js +6 -3
- package/lib/middleware/on-behalf.d.ts +37 -0
- package/lib/middleware/on-behalf.js +143 -0
- package/lib/middleware/permission-gates.d.ts +11 -0
- package/lib/middleware/permission-gates.js +7 -1
- package/lib/middleware/quota-exempt-routes.d.ts +36 -0
- package/lib/middleware/quota-exempt-routes.js +47 -0
- package/lib/middleware/route-table.d.ts +104 -0
- package/lib/middleware/route-table.js +72 -2
- package/lib/middleware/service-tokens.d.ts +8 -0
- package/lib/middleware/service-tokens.js +2 -1
- package/lib/middleware/step-up.js +11 -1
- package/lib/services/ai-call-weight.d.ts +24 -0
- package/lib/services/ai-call-weight.js +77 -0
- package/lib/services/audit-context.d.ts +105 -0
- package/lib/services/audit-context.js +134 -0
- package/lib/services/index.d.ts +7 -2
- package/lib/services/index.js +7 -2
- package/lib/services/org-ai-client.d.ts +61 -0
- package/lib/services/org-ai-client.js +112 -0
- package/lib/services/quota-increment-batcher.d.ts +81 -0
- package/lib/services/quota-increment-batcher.js +166 -0
- package/lib/services/quota.d.ts +158 -14
- package/lib/services/quota.js +252 -22
- package/lib/services/remote-audit-client.d.ts +44 -1
- package/lib/services/remote-audit-client.js +106 -20
- package/lib/services/version-vuln-policy.d.ts +174 -0
- package/lib/services/version-vuln-policy.js +242 -0
- package/lib/types/ai-catalog.d.ts +63 -0
- package/lib/types/ai-catalog.js +82 -0
- package/lib/types/ask-proposals.js +6 -6
- package/lib/types/build-catalog.d.ts +154 -0
- package/lib/types/build-catalog.js +158 -0
- package/lib/types/common.d.ts +37 -3
- package/lib/types/common.js +20 -2
- package/lib/types/ecosystem-notifications.d.ts +5 -5
- package/lib/types/ecosystem-notifications.js +9 -3
- package/lib/types/error-codes.d.ts +13 -6
- package/lib/types/error-codes.js +18 -8
- package/lib/types/feature-flags.d.ts +6 -4
- package/lib/types/feature-flags.js +11 -6
- package/lib/types/index.d.ts +6 -4
- package/lib/types/index.js +12 -5
- package/lib/types/metadata-keys.d.ts +6 -0
- package/lib/types/metadata-keys.js +4 -1
- package/lib/types/permissions.d.ts +344 -3
- package/lib/types/permissions.js +596 -21
- package/lib/types/pipeline.d.ts +39 -0
- package/lib/types/pipeline.js +57 -1
- package/lib/types/plugin-health.d.ts +0 -2
- package/lib/types/plugin-health.js +1 -11
- package/lib/types/plugin-scan.d.ts +192 -42
- package/lib/types/plugin-scan.js +159 -43
- package/lib/types/quota-catalog.d.ts +247 -0
- package/lib/types/quota-catalog.js +122 -0
- package/lib/types/quota-tiers.d.ts +118 -0
- package/lib/types/quota-tiers.js +153 -2
- package/lib/types/remote-audit-actions.d.ts +1 -1
- package/lib/types/remote-audit-actions.js +131 -1
- package/lib/types/wire-vocabulary.js +8 -1
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +2 -2
- package/lib/utils/response.d.ts +35 -2
- package/lib/utils/response.js +42 -3
- package/lib/validation/ai-schemas.d.ts +27 -0
- package/lib/validation/ai-schemas.js +31 -5
- package/lib/validation/plugin-schemas.d.ts +15 -0
- package/lib/validation/plugin-schemas.js +28 -1
- package/package.json +31 -2
|
@@ -34,6 +34,15 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
34
34
|
// and a log line are not a durable record of one. `details` carry
|
|
35
35
|
// name/version/digest, how many findings were waived and which packages.
|
|
36
36
|
'plugin.vuln.waived',
|
|
37
|
+
// The nightly rescan FLAGGED a stored version (its gated Critical findings
|
|
38
|
+
// now exceed PLUGIN_VULN_MAX_FINDINGS — lookup and the pipeline's owners are
|
|
39
|
+
// warned at `error` severity), or CLEARED that flag. Both change what
|
|
40
|
+
// resolution says about a version nobody rebuilt, on nobody's request, so the
|
|
41
|
+
// record of WHEN and WHY lives in the hash-chained log rather than only in a
|
|
42
|
+
// column the next rescan overwrites. `details` carry counts, the gated
|
|
43
|
+
// advisory ids and the image digest.
|
|
44
|
+
'plugin.vuln.flagged',
|
|
45
|
+
'plugin.vuln.cleared',
|
|
37
46
|
// Plugin lifecycle mutations (api/plugin route handlers) — the destructive /
|
|
38
47
|
// publishing surface that builds already audit's counterpart: registry delete,
|
|
39
48
|
// source upload, and deploy-to-cluster. `targetId` is the plugin id.
|
|
@@ -85,12 +94,20 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
85
94
|
'quota.limit.update',
|
|
86
95
|
// A superadmin deleting an org's entire quota document.
|
|
87
96
|
'quota.delete',
|
|
97
|
+
// An account's quota threshold-notice settings (opt-out + the
|
|
98
|
+
// `quota.threshold` webhook URL) — where usage warnings go.
|
|
99
|
+
'quota.notice_settings.update',
|
|
88
100
|
// Compliance administration (api/compliance) — the enforcement-posture surface.
|
|
89
101
|
// Approving/revoking an exemption, toggling/authoring/deleting a rule,
|
|
90
102
|
// authoring/deleting a policy, managing scan schedules, applying a template,
|
|
91
103
|
// or cancelling a running scan. `targetId` is the rule/policy/exemption/scan id.
|
|
92
104
|
'compliance.exemption.approve',
|
|
93
105
|
'compliance.exemption.revoke',
|
|
106
|
+
// A member FILING an exemption request (single or bulk; metadata only, never
|
|
107
|
+
// the reason) and an admin REJECTING one — the other halves of the
|
|
108
|
+
// two-person decision whose approval is recorded above.
|
|
109
|
+
'compliance.exemption.request',
|
|
110
|
+
'compliance.exemption.reject',
|
|
94
111
|
'compliance.rule.toggle',
|
|
95
112
|
'compliance.rule.create',
|
|
96
113
|
'compliance.rule.update',
|
|
@@ -113,6 +130,13 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
113
130
|
// persists a scan and can block entities that passed before.
|
|
114
131
|
'compliance.scan.create',
|
|
115
132
|
'compliance.scan.cancel',
|
|
133
|
+
// A scan's terminal OUTCOME (completed → success with the pass/warn/block
|
|
134
|
+
// counts, failed → failure). Scheduled scans also write `compliance.scan.create`
|
|
135
|
+
// (`details.triggeredBy: 'scheduled'`), attributed to the schedule's author.
|
|
136
|
+
'compliance.scan.complete',
|
|
137
|
+
// Platform onboarding subscribing a new org to every published rule
|
|
138
|
+
// (INACTIVE subscriptions; `details.subscribed` is the count).
|
|
139
|
+
'compliance.subscription.auto-subscribe',
|
|
116
140
|
// Per-org compliance notification settings: recipients + the outbound webhook
|
|
117
141
|
// URL/secret. Bearer-equivalent config that redirects violation notices, so a
|
|
118
142
|
// change carries the durable trail (never the secret itself).
|
|
@@ -129,6 +153,14 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
129
153
|
// (api/image-registry POST /internal/plugin-signatures, called by the plugin
|
|
130
154
|
// build worker). The key is what synth trusts, so every use is on the trail.
|
|
131
155
|
'registry.image.sign',
|
|
156
|
+
// The Docker token endpoint minting a registry token that GRANTS access
|
|
157
|
+
// (`details.granted`: repo + actions; the scope-less `docker login` probe is
|
|
158
|
+
// not recorded) — and, as outcome failure, a refused credential (hashed
|
|
159
|
+
// username, credential kind only).
|
|
160
|
+
'registry.token.issue',
|
|
161
|
+
// A push credential minted for one anonymous submission's
|
|
162
|
+
// `quarantine/<submissionId>` repo (expiry + TTL, never the secret).
|
|
163
|
+
'registry.quarantine.credential.mint',
|
|
132
164
|
// Messaging (api/message) — admin BROADCAST announcements + destructive
|
|
133
165
|
// deletes. 1:1 user messages are intentionally NOT audited (noise + they would
|
|
134
166
|
// pull private content into the trail). `details` carry metadata only
|
|
@@ -140,6 +172,18 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
140
172
|
// message tombstone — the destructive finalizer the retention sweep would
|
|
141
173
|
// otherwise perform at the purge deadline. `details` carry metadata only.
|
|
142
174
|
'message.purge',
|
|
175
|
+
// An author's edit of a sent message (and refused attempts, as failures).
|
|
176
|
+
// `details` carry the new body's LENGTH only — neither side of the edit.
|
|
177
|
+
'message.update',
|
|
178
|
+
// A message attachment stored (general or support mount, `details.surface`).
|
|
179
|
+
// Type + size only — never the bytes, and not the user-chosen filename.
|
|
180
|
+
'message.attachment.upload',
|
|
181
|
+
// A SYSTEM notification dropped into an org's inbox by an internal service
|
|
182
|
+
// (POST /messages/internal/notify); `details.caller` names the service.
|
|
183
|
+
'message.notify.internal',
|
|
184
|
+
// The platform org-delete cascade reclaiming an org's attachment BLOBS —
|
|
185
|
+
// `details.blobsDeleted`, or a failure row when the reclaim did not complete.
|
|
186
|
+
'message.org.purge',
|
|
143
187
|
// Support cases (api/message). Distinct from the `message.*` family above
|
|
144
188
|
// because a case is not an ordinary message: it carries a response-time
|
|
145
189
|
// commitment, so WHO raised it and WHEN we first answered are the facts a
|
|
@@ -180,6 +224,10 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
180
224
|
// The test page. Audited because it RINGS A PHONE: whoever it wakes is
|
|
181
225
|
// entitled to a record of who caused that, at whatever hour it was.
|
|
182
226
|
'support.oncall.test',
|
|
227
|
+
// The per-case sweep paging the rota for a premium case nearing its target.
|
|
228
|
+
// Recorded once, on the tick the case ENTERED the window — the sweep re-sends
|
|
229
|
+
// the page every tick, and twenty-four rows for one page would be noise.
|
|
230
|
+
'support.oncall.paged',
|
|
183
231
|
// The two CONTACT actions (platform). Not case events — entitlement events:
|
|
184
232
|
// each one changes who in an org is able to commit us to a response target at
|
|
185
233
|
// all, and designating spends a slot of a PAID, account-pooled allowance. The
|
|
@@ -244,6 +292,12 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
244
292
|
'billing.discount.apply',
|
|
245
293
|
'billing.discount.remove',
|
|
246
294
|
'billing.discount.revoke',
|
|
295
|
+
// Campaigns (docs/billing-discounts.md) — the identity a set of discount codes
|
|
296
|
+
// belongs to, carrying the budget, window and one-per-account rule. Authoring
|
|
297
|
+
// one decides how much the business may give away, so each change is audited.
|
|
298
|
+
'billing.campaign.create',
|
|
299
|
+
'billing.campaign.update',
|
|
300
|
+
'billing.campaign.end',
|
|
247
301
|
// Promotions (docs/billing-discounts.md#promotions) — rule-driven auto-grant
|
|
248
302
|
// campaigns. `details` carry the promotion id + cents/event only.
|
|
249
303
|
'billing.promotion.create',
|
|
@@ -300,6 +354,32 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
300
354
|
// question a reviewer asks is "was this account's reporting off between these two
|
|
301
355
|
// dates", and answering it from a single action's details means reading every row.
|
|
302
356
|
'reporting.report.resumed',
|
|
357
|
+
// The drafting half of a run: a compose/regenerate freezes the org's numbers
|
|
358
|
+
// into a run, the lead's notes are edited onto it (metadata only — length,
|
|
359
|
+
// never the prose), and an AI summary is drafted from it (the numbers went to
|
|
360
|
+
// a provider; `outcome` carries a refusal). A resend re-mints a recipient's
|
|
361
|
+
// confirmation credential. `verified` / `unsubscribed` are the UNAUTHENTICATED
|
|
362
|
+
// recipient's own acts (actor `anonymous`, a hashed address only): bounded by
|
|
363
|
+
// construction — the verify token is single-use, and only the click that
|
|
364
|
+
// actually stops delivery writes an unsubscribe row.
|
|
365
|
+
'reporting.report.run.compose',
|
|
366
|
+
'reporting.report.run.notes',
|
|
367
|
+
'reporting.report.run.summary',
|
|
368
|
+
'reporting.report.recipient.resend',
|
|
369
|
+
'reporting.report.recipient.verified',
|
|
370
|
+
'reporting.report.recipient.unsubscribed',
|
|
371
|
+
// MACHINE ingest (`reporting:ingest` scope). One `batch` row per POST to the
|
|
372
|
+
// event / incident / ingest-health routes — counts plus capped pipeline,
|
|
373
|
+
// execution, EventBridge-event and incident id lists, attributed to the
|
|
374
|
+
// credential's principal — so a forged or misrouted write names the key behind
|
|
375
|
+
// it. `rejected` is the tenancy refusal inside a batch (events naming another
|
|
376
|
+
// org's pipelines): a FAILURE row with the offending pipeline ids, never the
|
|
377
|
+
// org they belong to. `incident.record` is one incident that is new or actually
|
|
378
|
+
// changed (before/after); like `deployment.outcome` it moves CFR/MTTR. An
|
|
379
|
+
// unchanged repeat-interval re-post writes none.
|
|
380
|
+
'reporting.ingest.batch',
|
|
381
|
+
'reporting.ingest.rejected',
|
|
382
|
+
'reporting.incident.record',
|
|
303
383
|
// Denied authorization attempt — emitted best-effort by the shared
|
|
304
384
|
// `requirePermission` / `requireSystemAdmin` gate when a state-changing
|
|
305
385
|
// (non-GET) request is rejected, so probing/escalation attempts are visible
|
|
@@ -318,6 +398,15 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
318
398
|
// rating and the DOC IDS cited (`authentication.md`), never the question: the
|
|
319
399
|
// doc is what gets fixed, and it is not user-entered text.
|
|
320
400
|
'ask.feedback',
|
|
401
|
+
// One AI generation of a pipeline / plugin draft (`/pipelines/generate*`,
|
|
402
|
+
// `/plugins/generate*`), success or failure (incl. client abort). `details` carry
|
|
403
|
+
// SAFE METADATA ONLY: the route, the prompt LENGTH, the shared AI usage block
|
|
404
|
+
// (`ai`: the provider and model that ANSWERED after any failover, `fallbackFrom`,
|
|
405
|
+
// whose key paid — `keySource` request/org/platform — tokens in/out/cached, the
|
|
406
|
+
// prompt version, how the `aiCalls` slot settled) and the reservation's
|
|
407
|
+
// `quota` view — never the prompt, the generated output, or a key.
|
|
408
|
+
'pipeline.ai.generate',
|
|
409
|
+
'plugin.ai.generate',
|
|
321
410
|
// Plugin ecosystem (docs/runbooks/ecosystem-moderation.md). Governance actions
|
|
322
411
|
// are recorded with `orgId` = the system org; `affectedOrgId` is the
|
|
323
412
|
// publisher's org (listing/version/review/advisory/publisher moderation) or
|
|
@@ -363,6 +452,13 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
363
452
|
'plugin.version.yank',
|
|
364
453
|
'plugin.version.unyank',
|
|
365
454
|
'plugin.version.deprecate',
|
|
455
|
+
// Retiring a version's registry image to reclaim `storageBytes`. Distinct
|
|
456
|
+
// from the four above, which change whether a version RESOLVES and delete
|
|
457
|
+
// nothing, and from `registry.image.delete`/`registry.tag.delete`, which are
|
|
458
|
+
// the registry's own operator-side trail. This is a tenant freeing space, and
|
|
459
|
+
// the only audited action that can reduce an org's storage figure — so its
|
|
460
|
+
// row carries the bytes it freed, which cannot be recovered afterwards.
|
|
461
|
+
'plugin.version.prune',
|
|
366
462
|
// NOTE: no `plugin.collection.update`. `ecosystem_collections` was deleted (see
|
|
367
463
|
// the tombstone in `schema/ecosystem.ts`) because nothing ever wrote or read
|
|
368
464
|
// one; this declaration outlived the table it audited.
|
|
@@ -371,6 +467,12 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
371
467
|
'ecosystem.auto-approval-rule.update',
|
|
372
468
|
'ecosystem.auto-approval-rule.delete',
|
|
373
469
|
'ecosystem.reserved-name.update',
|
|
470
|
+
// The one-time BOOTSTRAP exception (auto-approval of the initial Official
|
|
471
|
+
// catalog) opening on the first Official request, and closing for good
|
|
472
|
+
// (`details.reason`: window_elapsed / listings_exist / a manager decision;
|
|
473
|
+
// `details.approved`: how many requests rode it).
|
|
474
|
+
'ecosystem.bootstrap.open',
|
|
475
|
+
'ecosystem.bootstrap.close',
|
|
374
476
|
// NOTE: no `ecosystem.sla.update`. The lane SLAs are HARDCODED (standard 48h,
|
|
375
477
|
// security-fix 4h in `services/ecosystem/sla.ts`) with no settings surface, so
|
|
376
478
|
// there is no mutation to audit. Making them operator-tunable is the change
|
|
@@ -435,9 +537,37 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
435
537
|
'plugin.security_notifications.update',
|
|
436
538
|
'plugin.security_notifications.external_email.verify',
|
|
437
539
|
'plugin.security_notifications.test',
|
|
540
|
+
// A gate-refused image KEPT from the setup catalog load, promoted to a
|
|
541
|
+
// version without a rebuild (system org, after a fix upstream or an
|
|
542
|
+
// advisory-id waiver) — or refused again because the CURRENT gates still
|
|
543
|
+
// fail it. `details` carry name/version/digest and the findings.
|
|
544
|
+
'plugin.setup_image.promoted',
|
|
545
|
+
'plugin.setup_image.promote_refused',
|
|
546
|
+
// A gate-refused setup-load image KEPT (signed, in the registry) for later
|
|
547
|
+
// promotion (`details`: digest, refusal code, expiresAt) — and its row
|
|
548
|
+
// dropped by the sweep (`details.reason`: expired / superseded).
|
|
549
|
+
'plugin.setup_image.kept',
|
|
550
|
+
'plugin.setup_image.discarded',
|
|
551
|
+
// A PIPELINE's triage of its exposure to a vulnerable plugin version: a
|
|
552
|
+
// time-boxed risk acceptance (reason + expiry, the accepted finding keys and
|
|
553
|
+
// whether KEV findings were accepted), a false-positive dismissal, or a
|
|
554
|
+
// reopen. An active acceptance exempts that pipeline's lookups and runtime
|
|
555
|
+
// checks from the flag / KEV / High-floor refusals for those findings only.
|
|
556
|
+
'pipeline.vuln.accepted',
|
|
557
|
+
'pipeline.vuln.false_positive',
|
|
558
|
+
'pipeline.vuln.reopened',
|
|
559
|
+
// A pipeline's runtime check graded one of its running images `error` or
|
|
560
|
+
// louder (`details`: stepKey, digest, reason codes, executionId when sent).
|
|
561
|
+
'pipeline.runtime_check.flagged',
|
|
562
|
+
// A pipeline's plugin steps moved to newer versions through the upgrade
|
|
563
|
+
// flow (preview → apply; `details` carry the steps, from → to versions), and a
|
|
564
|
+
// pipeline-run security scanner report uploaded for a pipeline (`details`:
|
|
565
|
+
// tool, format, stage, the finding counts — never the findings themselves).
|
|
566
|
+
'pipeline.plugin.upgraded',
|
|
567
|
+
'pipeline.security_report.upload',
|
|
438
568
|
];
|
|
439
569
|
/** Whether `value` is an action a remote service may emit (the ingest allow-list). */
|
|
440
570
|
export function isRemoteAuditAction(value) {
|
|
441
571
|
return REMOTE_AUDIT_ACTIONS.includes(value);
|
|
442
572
|
}
|
|
443
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWF1ZGl0LWFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVtb3RlLWF1ZGl0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7OztHQU9HO0FBR0g7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLHdCQUF3QjtJQUN4QixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDhFQUE4RTtJQUM5RSwyRUFBMkU7SUFDM0UsOEVBQThFO0lBQzlFLHFCQUFxQjtJQUNyQix1RUFBdUU7SUFDdkUsMkVBQTJFO0lBQzNFLCtFQUErRTtJQUMvRSw4RUFBOEU7SUFDOUUsa0VBQWtFO0lBQ2xFLHlFQUF5RTtJQUN6RSxvQkFBb0I7SUFDcEIsNkVBQTZFO0lBQzdFLCtFQUErRTtJQUMvRSxxRUFBcUU7SUFDckUsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQiw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLGNBQWM7SUFDZCxlQUFlO0lBQ2YsZUFBZTtJQUNmLGVBQWU7SUFDZiw4RUFBOEU7SUFDOUUsNEVBQTRFO0lBQzVFLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLHlFQUF5RTtJQUN6RSw0RUFBNEU7SUFDNUUsNEVBQTRFO0lBQzVFLHVFQUF1RTtJQUN2RSxvQkFBb0I7SUFDcEIsbUJBQW1CO0lBQ25CLGdFQUFnRTtJQUNoRSxxRUFBcUU7SUFDckUsb0RBQW9EO0lBQ3BELGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixtRUFBbUU7SUFDbkUsNEVBQTRFO0lBQzVFLDBEQUEwRDtJQUMxRCxnQkFBZ0I7SUFDaEIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMkJBQTJCO0lBQzNCLHlCQUF5QjtJQUN6Qiww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QTBCO0lBQzFCLHdFQUF3RTtJQUN4RSxxREFBcUQ7SUFDckQsd0JBQXdCO0lBQ3hCLHdCQUF3QjtJQUN4Qix5QkFBeUI7SUFDekIsMEJBQTBCO0lBQzFCLDBFQUEwRTtJQUMxRSwyRUFBMkU7SUFDM0UsdUVBQXVFO0lBQ3ZFLDBFQUEwRTtJQUMxRSxzQ0FBc0M7SUFDdEMscURBQXFEO0lBQ3JELG9DQUFvQztDQUM1QixDQUFDO0FBSVgsc0ZBQXNGO0FBQ3RGLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLE9BQVEsb0JBQTBDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgcmVtb3RlIChub24tcGxhdGZvcm0pIGF1ZGl0IEFDVElPTiBWT0NBQlVMQVJZLlxuICpcbiAqIEtlcHQgYXBhcnQgZnJvbSB0aGUgY2xpZW50IHRoYXQgc2hpcHMgdGhlIGV2ZW50cyAoYHNlcnZpY2VzL3JlbW90ZS1hdWRpdC1jbGllbnQudHNgKVxuICogYmVjYXVzZSBpdCBpcyBhbiBhbGxvdy1saXN0LCBub3QgbWFjaGluZXJ5OiBpdCBpcyB0aGUgdGhpbmcgYSByZXZpZXdlciByZWFkc1xuICogZW5kIHRvIGVuZCB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgYSBzZXJ2aWNlIG1heSBlbWl0IGEgZ2l2ZW4gYWN0aW9uLCBhbmQgaXQgaXNcbiAqIHdoYXQgcGxhdGZvcm0ncyBpbmdlc3QgdmFsaWRhdGVzIGFnYWluc3QuXG4gKi9cblxuXG4vKipcbiAqIFRoZSBleGFjdCBzZXQgb2YgYXVkaXQgYWN0aW9ucyBhIE5PTi1QTEFURk9STSAocmVtb3RlKSBzZXJ2aWNlIGlzIHBlcm1pdHRlZCB0b1xuICogZW1pdCB0aHJvdWdoIGBQT1NUIC9hdWRpdC9ldmVudHNgLiBUaGlzIGlzIHRoZSBTSU5HTEUgU09VUkNFIOKAlCBgUmVtb3RlQXVkaXRBY3Rpb25gXG4gKiBpcyBkZXJpdmVkIGZyb20gaXQsIHNvIHRoZSB0eXBlIGFuZCB0aGUgcnVudGltZSBhbGxvdy1saXN0IGNhbiBuZXZlciBkcmlmdC5cbiAqXG4gKiBTRUNVUklUWTogcGxhdGZvcm0ncyBpbmdlc3QgdmFsaWRhdGVzIGBhY3Rpb25gIGFnYWluc3QgdGhpcyBzdWJzZXQgKHZpYVxuICoge0BsaW5rIGlzUmVtb3RlQXVkaXRBY3Rpb259KSwgTk9UIHRoZSBmdWxsIHBsYXRmb3JtIGBBdWRpdEFjdGlvbmAgdW5pb24g4oCUIGFcbiAqIGBzZXJ2aWNlOipgIHRva2VuIG11c3Qgbm90IGJlIGFibGUgdG8gZm9yZ2UgcGxhdGZvcm0tYXV0aG9yaXR5IGV2ZW50c1xuICogKGBhZG1pbi5zdXBlcmFkbWluLmdyYW50YCwgYG9yZy5vd25lcnNoaXAudHJhbnNmZXJgLCBgdXNlci5sb2dpbmAsIOKApikuIEtlZXBcbiAqIHRoaXMgbGlzdCBmcmVlIG9mIGFueSBwbGF0Zm9ybS1vbmx5IGFjdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFTU9URV9BVURJVF9BQ1RJT05TID0gW1xuICAncGx1Z2luLmJ1aWxkLmNvbXBsZXRlZCcsXG4gICdwbHVnaW4uYnVpbGQuZmFpbGVkJyxcbiAgJ3BsdWdpbi5idWlsZC50aW1lb3V0JyxcbiAgLy8gQSB2ZXJzaW9uIHBlcnNpc3RlZCBVTlNDQU5ORUQgYmVjYXVzZSB0aGUgYnVpbGQtdGltZSBzY2FuIGNvdWxkIG5vdCBydW4gYW5kXG4gIC8vIHRoZSBvcGVyYXRvciBlc2NhcGUgaGF0Y2ggYFBMVUdJTl9BTExPV19VTlNDQU5ORURgIGlzIG9uICh3aXRob3V0IGl0IHRoZVxuICAvLyBidWlsZCBmYWlscyBgSU1BR0VfU0NBTl9VTkFWQUlMQUJMRWApLiBgZGV0YWlsc2AgY2FycnkgbmFtZS92ZXJzaW9uL2RpZ2VzdC5cbiAgJ3BsdWdpbi5zY2FuLnNraXBwZWQnLFxuICAvLyBGaXhhYmxlIENyaXRpY2FsIGZpbmRpbmdzIHdlcmUgRVhFTVBURUQgZnJvbSB0aGUgcGxhdGZvcm0gZmxvb3IgYnkgYVxuICAvLyBgUExVR0lOX1ZVTE5fV0FJVkVSU2AgZW50cnksIHNvIGEgYnVpbGQgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBmYWlsZWRcbiAgLy8gUExVR0lOX1ZVTE5fR0FURSB3YXMgYWxsb3dlZCB0aHJvdWdoLiBUaGUgb3RoZXIgaGFsZiBvZiBwbHVnaW4uc2Nhbi5za2lwcGVkOlxuICAvLyBib3RoIGFyZSBvcGVyYXRvciBlc2NhcGUgaGF0Y2hlcyB0aGF0IGNoYW5nZSBhIGdhdGUncyB2ZXJkaWN0LCBhbmQgYSBtZXRyaWNcbiAgLy8gYW5kIGEgbG9nIGxpbmUgYXJlIG5vdCBhIGR1cmFibGUgcmVjb3JkIG9mIG9uZS4gYGRldGFpbHNgIGNhcnJ5XG4gIC8vIG5hbWUvdmVyc2lvbi9kaWdlc3QsIGhvdyBtYW55IGZpbmRpbmdzIHdlcmUgd2FpdmVkIGFuZCB3aGljaCBwYWNrYWdlcy5cbiAgJ3BsdWdpbi52dWxuLndhaXZlZCcsXG4gIC8vIFBsdWdpbiBsaWZlY3ljbGUgbXV0YXRpb25zIChhcGkvcGx1Z2luIHJvdXRlIGhhbmRsZXJzKSDigJQgdGhlIGRlc3RydWN0aXZlIC9cbiAgLy8gcHVibGlzaGluZyBzdXJmYWNlIHRoYXQgYnVpbGRzIGFscmVhZHkgYXVkaXQncyBjb3VudGVycGFydDogcmVnaXN0cnkgZGVsZXRlLFxuICAvLyBzb3VyY2UgdXBsb2FkLCBhbmQgZGVwbG95LXRvLWNsdXN0ZXIuIGB0YXJnZXRJZGAgaXMgdGhlIHBsdWdpbiBpZC5cbiAgJ3BsdWdpbi5kZWxldGUnLFxuICAncGx1Z2luLnJlc3RvcmUnLFxuICAvLyBNYW51YWwgcHVyZ2U6IHBlcm1hbmVudCBoYXJkLWRlbGV0ZSBvZiBhIHNvZnQtZGVsZXRlZCBwbHVnaW4gdG9tYnN0b25lIG9uXG4gIC8vIGRlbWFuZCAoZmluYWxpemVzIHdoYXQgdGhlIHJldGVudGlvbiBzd2VlcCB3b3VsZCBvdGhlcndpc2UgZG8gbGF0ZXIpLlxuICAncGx1Z2luLnB1cmdlJyxcbiAgJ3BsdWdpbi51cGRhdGUnLFxuICAncGx1Z2luLnVwbG9hZCcsXG4gICdwbHVnaW4uZGVwbG95JyxcbiAgLy8gUGx1Z2luIGJ1bGsgbXV0YXRpb25zIChhcGkvcGx1Z2luIGJ1bGstcGx1Z2luIHJvdXRlKSArIERMUSBwdXJnZSAoZHJvcHMgYWxsXG4gIC8vIGRlYWQtbGV0dGVyZWQgYnVpbGQgam9icywgY3Jvc3Mtb3JnLCBzeXNhZG1pbikuIGBkZXRhaWxzYCBjYXJyaWVzIGNvdW50cy5cbiAgJ3BsdWdpbi5idWxrLnVwZGF0ZScsXG4gICdwbHVnaW4uYnVsay5kZWxldGUnLFxuICAncGx1Z2luLmRscS5wdXJnZScsXG4gIC8vIEJ1aWxkIHJlLXJ1bnMgZnJvbSB0aGUgcXVldWUtdHJpYWdlIHN1cmZhY2U6IHJlLWVucXVldWUgYSBGQUlMRUQgYnVpbGRcbiAgLy8gKGBwbHVnaW4uYnVpbGQucmV0cnlgKSBvciBhIGRlYWQtbGV0dGVyZWQgb25lIChgcGx1Z2luLmRscS5yZXBsYXlgKS4gQm90aFxuICAvLyByZS1ydW4gYW4gaW1hZ2UgYnVpbGQgKyBwbHVnaW4gcGVyc2lzdCBvbiB0aGUgY2FsbGVyJ3MgYXV0aG9yaXR5LCBzbyB0aGV5XG4gIC8vIGFyZSBhdWRpdGVkIG11dGF0aW9uczsgYGFmZmVjdGVkT3JnSWRgIGNhcnJpZXMgdGhlIGpvYidzIG93bmluZyBvcmcuXG4gICdwbHVnaW4uYnVpbGQucmV0cnknLFxuICAncGx1Z2luLmRscS5yZXBsYXknLFxuICAvLyBQaXBlbGluZSBtdXRhdGlvbnMg4oCUIGVtaXR0ZWQgYnkgYXBpL3BpcGVsaW5lJ3Mgcm91dGUgaGFuZGxlcnNcbiAgLy8gKGNyZWF0ZS91cGRhdGUvZGVsZXRlICsgQ29kZVBpcGVsaW5lIGV4ZWN1dGlvbiB0cmlnZ2VyL2NhbmNlbCkgYW5kXG4gIC8vIHBvc3RlZCB0byBwbGF0Zm9ybSdzIGBQT1NUIC9hdWRpdC9ldmVudHNgIGluZ2VzdC5cbiAgJ3BpcGVsaW5lLmNyZWF0ZScsXG4gICdwaXBlbGluZS51cGRhdGUnLFxuICAncGlwZWxpbmUuZGVsZXRlJyxcbiAgJ3BpcGVsaW5lLnJlc3RvcmUnLFxuICAvLyBNYW51YWwgcHVyZ2U6IHBlcm1hbmVudCBoYXJkLWRlbGV0ZSBvZiBhIHNvZnQtZGVsZXRlZCBwaXBlbGluZSAvXG4gIC8vIHBpcGVsaW5lX3RlbXBsYXRlIHRvbWJzdG9uZSBvbiBkZW1hbmQgKGZpbmFsaXplcyB3aGF0IHRoZSByZXRlbnRpb24gc3dlZXBcbiAgLy8gd291bGQgb3RoZXJ3aXNlIGRvIGxhdGVyKS4gYHRhcmdldElkYCBpcyB0aGUgcHVyZ2VkIGlkLlxuICAncGlwZWxpbmUucHVyZ2UnLFxuICAncGlwZWxpbmVfdGVtcGxhdGUuY3JlYXRlJyxcbiAgJ3BpcGVsaW5lX3RlbXBsYXRlLnVwZGF0ZScsXG4gICdwaXBlbGluZV90ZW1wbGF0ZS5kZWxldGUnLFxuICAncGlwZWxpbmVfdGVtcGxhdGUucmVzdG9yZScsXG4gICdwaXBlbGluZV90ZW1wbGF0ZS5wdXJnZScsXG4gICdwaXBlbGluZS5leGVjdXRpb24uc3RhcnQnLFxuICAncGlwZWxpbmUuZXhlY3V0aW9uLmNhbmNlbCcsXG4gIC8vIENvZGVQaXBlbGluZSBBUk4tcmVnaXN0cnkgY29uZmlnIChhcGkvcGlwZWxpbmUgcmVnaXN0cnkgcm91dGUpIOKAlCByZWdpc3RlcmluZyAvXG4gIC8vIGRlcmVnaXN0ZXJpbmcgdGhlIGV4dGVybmFsIENvZGVQaXBlbGluZSB0aGF0IGJhY2tzIGEgcGlwZWxpbmUgKGRlcGxveS1hZmZlY3RpbmcpLlxuICAncGlwZWxpbmUucmVnaXN0cnkucmVnaXN0ZXInLFxuICAncGlwZWxpbmUucmVnaXN0cnkuZGVyZWdpc3RlcicsXG4gIC8vIFF1b3RhIGFkbWluaXN0cmF0aW9uIChhcGkvcXVvdGEpIOKAlCBhIHN1cGVyYWRtaW4gcmVzZXR0aW5nIGFuIG9yZydzIHVzYWdlXG4gIC8vIGNvdW50ZXIgb3IgZWRpdGluZyBpdHMgdGllciBsaW1pdHMuIGBhZmZlY3RlZE9yZ0lkYCBpcyB0aGUgb3JnIGNoYW5nZWQ7XG4gIC8vIGBkZXRhaWxzYCBjYXJyaWVzIHRoZSBxdW90YVR5cGUgKyBvbGQvbmV3IHZhbHVlLlxuICAncXVvdGEucmVzZXQnLFxuICAncXVvdGEubGltaXQudXBkYXRlJyxcbiAgLy8gQSBzdXBlcmFkbWluIGRlbGV0aW5nIGFuIG9yZydzIGVudGlyZSBxdW90YSBkb2N1bWVudC5cbiAgJ3F1b3RhLmRlbGV0ZScsXG4gIC8vIENvbXBsaWFuY2UgYWRtaW5pc3RyYXRpb24gKGFwaS9jb21wbGlhbmNlKSDigJQgdGhlIGVuZm9yY2VtZW50LXBvc3R1cmUgc3VyZmFjZS5cbiAgLy8gQXBwcm92aW5nL3Jldm9raW5nIGFuIGV4ZW1wdGlvbiwgdG9nZ2xpbmcvYXV0aG9yaW5nL2RlbGV0aW5nIGEgcnVsZSxcbiAgLy8gYXV0aG9yaW5nL2RlbGV0aW5nIGEgcG9saWN5LCBtYW5hZ2luZyBzY2FuIHNjaGVkdWxlcywgYXBwbHlpbmcgYSB0ZW1wbGF0ZSxcbiAgLy8gb3IgY2FuY2VsbGluZyBhIHJ1bm5pbmcgc2Nhbi4gYHRhcmdldElkYCBpcyB0aGUgcnVsZS9wb2xpY3kvZXhlbXB0aW9uL3NjYW4gaWQuXG4gICdjb21wbGlhbmNlLmV4ZW1wdGlvbi5hcHByb3ZlJyxcbiAgJ2NvbXBsaWFuY2UuZXhlbXB0aW9uLnJldm9rZScsXG4gICdjb21wbGlhbmNlLnJ1bGUudG9nZ2xlJyxcbiAgJ2NvbXBsaWFuY2UucnVsZS5jcmVhdGUnLFxuICAnY29tcGxpYW5jZS5ydWxlLnVwZGF0ZScsXG4gICdjb21wbGlhbmNlLnJ1bGUuZGVsZXRlJyxcbiAgJ2NvbXBsaWFuY2UucnVsZS5yZXN0b3JlJyxcbiAgLy8gTWFudWFsIG9uLWRlbWFuZCBoYXJkLWRlbGV0ZSAoUFVSR0UpIG9mIGEgc29mdC1kZWxldGVkIHJ1bGUvcG9saWN5IHRvbWJzdG9uZSDigJRcbiAgLy8gdGhlIGNhbGxlci1pbml0aWF0ZWQgY291bnRlcnBhcnQgdG8gdGhlIHJldGVudGlvbiBzd2VlcCdzIGF1dG8tcHVyZ2UuIERlc3Ryb3lzXG4gIC8vIHRoZSB0b21ic3RvbmUgcGVybWFuZW50bHksIHNvIGl0IGNhcnJpZXMgdGhlIGR1cmFibGUsIHRhbXBlci1ldmlkZW50IHRyYWlsLlxuICAnY29tcGxpYW5jZS5ydWxlLnB1cmdlJyxcbiAgJ2NvbXBsaWFuY2UucG9saWN5LmNyZWF0ZScsXG4gICdjb21wbGlhbmNlLnBvbGljeS51cGRhdGUnLFxuICAnY29tcGxpYW5jZS5wb2xpY3kuZGVsZXRlJyxcbiAgJ2NvbXBsaWFuY2UucG9saWN5LnJlc3RvcmUnLFxuICAnY29tcGxpYW5jZS5wb2xpY3kucHVyZ2UnLFxuICAnY29tcGxpYW5jZS5zY2FuLXNjaGVkdWxlLmNyZWF0ZScsXG4gICdjb21wbGlhbmNlLnNjYW4tc2NoZWR1bGUudXBkYXRlJyxcbiAgJ2NvbXBsaWFuY2Uuc2Nhbi1zY2hlZHVsZS5kZWxldGUnLFxuICAnY29tcGxpYW5jZS50ZW1wbGF0ZS5hcHBseScsXG4gIC8vIExhdW5jaGluZyBhbiBvcmctd2lkZSByZS1ldmFsdWF0aW9uICh0aGUgY291bnRlcnBhcnQgdG8gYC5jYW5jZWxgKSDigJQgaXRcbiAgLy8gcGVyc2lzdHMgYSBzY2FuIGFuZCBjYW4gYmxvY2sgZW50aXRpZXMgdGhhdCBwYXNzZWQgYmVmb3JlLlxuICAnY29tcGxpYW5jZS5zY2FuLmNyZWF0ZScsXG4gICdjb21wbGlhbmNlLnNjYW4uY2FuY2VsJyxcbiAgLy8gUGVyLW9yZyBjb21wbGlhbmNlIG5vdGlmaWNhdGlvbiBzZXR0aW5nczogcmVjaXBpZW50cyArIHRoZSBvdXRib3VuZCB3ZWJob29rXG4gIC8vIFVSTC9zZWNyZXQuIEJlYXJlci1lcXVpdmFsZW50IGNvbmZpZyB0aGF0IHJlZGlyZWN0cyB2aW9sYXRpb24gbm90aWNlcywgc28gYVxuICAvLyBjaGFuZ2UgY2FycmllcyB0aGUgZHVyYWJsZSB0cmFpbCAobmV2ZXIgdGhlIHNlY3JldCBpdHNlbGYpLlxuICAnY29tcGxpYW5jZS5ub3RpZmljYXRpb24tcHJlZmVyZW5jZS51cGRhdGUnLFxuICAvLyBJbWFnZS1yZWdpc3RyeSBkZXN0cnVjdGl2ZSBvcHMgKGFwaS9pbWFnZS1yZWdpc3RyeSkg4oCUIGdhcmJhZ2UtY29sbGVjdGlvblxuICAvLyBzd2VlcHMgYW5kIGV4cGxpY2l0IGltYWdlL3RhZyBkZWxldGVzLlxuICAncmVnaXN0cnkuZ2MnLFxuICAncmVnaXN0cnkuaW1hZ2UuZGVsZXRlJyxcbiAgLy8gQ3Jvc3MtcmVwbyB0YWcvaW1hZ2UgY29weSAoYXBpL2ltYWdlLXJlZ2lzdHJ5IFBPU1QgL2FwaS9pbWFnZXMvY29weSkuIEFcbiAgLy8gY3Jvc3MtdGVuYW50IGNvcHkgbW92ZXMgZGF0YSBhY3Jvc3MgY3VzdG9tZXIgYm91bmRhcmllcywgc28gaXQgbmVlZHMgdGhlXG4gIC8vIGR1cmFibGUsIHRhbXBlci1ldmlkZW50IHRyYWlsIOKAlCBub3QganVzdCB0aGUgTG9raSBvcGVyYXRvciBsaW5lLlxuICAncmVnaXN0cnkuaW1hZ2UuY29weScsXG4gIC8vIEEgcGx1Z2luIGltYWdlIHNpZ25lZCArIFNCT00tYXR0ZXN0ZWQgYnkgdGhlIHBsYXRmb3JtJ3MgcGx1Z2luLXNpZ25pbmcga2V5XG4gIC8vIChhcGkvaW1hZ2UtcmVnaXN0cnkgUE9TVCAvaW50ZXJuYWwvcGx1Z2luLXNpZ25hdHVyZXMsIGNhbGxlZCBieSB0aGUgcGx1Z2luXG4gIC8vIGJ1aWxkIHdvcmtlcikuIFRoZSBrZXkgaXMgd2hhdCBzeW50aCB0cnVzdHMsIHNvIGV2ZXJ5IHVzZSBpcyBvbiB0aGUgdHJhaWwuXG4gICdyZWdpc3RyeS5pbWFnZS5zaWduJyxcbiAgLy8gTWVzc2FnaW5nIChhcGkvbWVzc2FnZSkg4oCUIGFkbWluIEJST0FEQ0FTVCBhbm5vdW5jZW1lbnRzICsgZGVzdHJ1Y3RpdmVcbiAgLy8gZGVsZXRlcy4gMToxIHVzZXIgbWVzc2FnZXMgYXJlIGludGVudGlvbmFsbHkgTk9UIGF1ZGl0ZWQgKG5vaXNlICsgdGhleSB3b3VsZFxuICAvLyBwdWxsIHByaXZhdGUgY29udGVudCBpbnRvIHRoZSB0cmFpbCkuIGBkZXRhaWxzYCBjYXJyeSBtZXRhZGF0YSBvbmx5XG4gIC8vIChzdWJqZWN0L3R5cGUvc2NvcGUpLCBORVZFUiBtZXNzYWdlIGJvZHkgY29udGVudC5cbiAgJ21lc3NhZ2UuYW5ub3VuY2VtZW50LmNyZWF0ZScsXG4gICdtZXNzYWdlLmRlbGV0ZScsXG4gICdtZXNzYWdlLnJlc3RvcmUnLFxuICAvLyBNYW51YWwgb24tZGVtYW5kIFBVUkdFIChwZXJtYW5lbnQgaGFyZC1kZWxldGUpIG9mIGFuIGFscmVhZHktc29mdC1kZWxldGVkXG4gIC8vIG1lc3NhZ2UgdG9tYnN0b25lIOKAlCB0aGUgZGVzdHJ1Y3RpdmUgZmluYWxpemVyIHRoZSByZXRlbnRpb24gc3dlZXAgd291bGRcbiAgLy8gb3RoZXJ3aXNlIHBlcmZvcm0gYXQgdGhlIHB1cmdlIGRlYWRsaW5lLiBgZGV0YWlsc2AgY2FycnkgbWV0YWRhdGEgb25seS5cbiAgJ21lc3NhZ2UucHVyZ2UnLFxuICAvLyBTdXBwb3J0IGNhc2VzIChhcGkvbWVzc2FnZSkuIERpc3RpbmN0IGZyb20gdGhlIGBtZXNzYWdlLipgIGZhbWlseSBhYm92ZVxuICAvLyBiZWNhdXNlIGEgY2FzZSBpcyBub3QgYW4gb3JkaW5hcnkgbWVzc2FnZTogaXQgY2FycmllcyBhIHJlc3BvbnNlLXRpbWVcbiAgLy8gY29tbWl0bWVudCwgc28gV0hPIHJhaXNlZCBpdCBhbmQgV0hFTiB3ZSBmaXJzdCBhbnN3ZXJlZCBhcmUgdGhlIGZhY3RzIGFcbiAgLy8gZGlzcHV0ZSB0dXJucyBvbi4gYGRldGFpbHNgIGNhcnJ5IHRoZSBjYXNlIG51bWJlciwgbGV2ZWwgYW5kIHNldmVyaXR5IOKAlFxuICAvLyBtZXRhZGF0YSBvbmx5LCBuZXZlciB0aGUgYm9keSBvZiB3aGF0IGEgY3VzdG9tZXIgd3JvdGUuXG4gIC8vXG4gIC8vIFR3byBvZiB0aGUgbmluZSBwbGFubmVkIHN1cHBvcnQgYWN0aW9ucyBhcmUgaGVyZSwgYW5kIG9ubHkgdHdvOiB0aGVzZSBhcmVcbiAgLy8gdGhlIG9uZXMgd2l0aCByZWFsIGVtaXR0ZXJzIHRvZGF5LiBUaGUgcmVzdCAoYHN0YXR1c2AsIGBzZXZlcml0eWAsXG4gIC8vIGBhc3NpZ25gLCBgdHJhbnNmZXJgLCBgbm90ZWAsIGByZWFkYCkgbGFuZCBXSVRIIHRoZSByb3V0ZXMgdGhhdCBlbWl0IHRoZW0g4oCUXG4gIC8vIGEgZGVjbGFyZWQgYWN0aW9uIG5vdGhpbmcgZW1pdHMgaXMgZGVhZCB2b2NhYnVsYXJ5LCBhbmQgdGhlIHBhcml0eSB0ZXN0XG4gIC8vIHdvdWxkIHRoZW4gZm9yY2UgYSBkb2NzIHJvdyBkZXNjcmliaW5nIGFuIGV2ZW50IHRoYXQgbmV2ZXIgZmlyZXMuXG4gIC8vXG4gIC8vIGBzdXBwb3J0LmNhc2UucmVhZGAgd2lsbCBtYXR0ZXIgbW9zdCBvZiBhbGwgd2hlbiBpdCBhcnJpdmVzOiBpdCBpcyB0aGUgb25seVxuICAvLyByZWNvcmQgdGhhdCBzb21lb25lIGF0IHRoZSB2ZW5kb3Igb3BlbmVkIGEgY3VzdG9tZXIncyBjYXNlLlxuICAnc3VwcG9ydC5jYXNlLm9wZW4nLFxuICAnc3VwcG9ydC5jYXNlLnJlcGx5JyxcbiAgLy8gVGhlIHdvcmtmbG93IG11dGF0aW9ucy4gRWFjaCBpcyBhdWRpdGVkIGJlY2F1c2UgZWFjaCBtb3ZlcyBhIGNhc2Unc1xuICAvLyByZWxhdGlvbnNoaXAgdG8gaXRzIHJlc3BvbnNlIGNvbW1pdG1lbnQ6IHN0YXR1cyBzdG9wcyBvciByZXN0YXJ0cyB0aGVcbiAgLy8gY2xvY2ssIHNldmVyaXR5IGNoYW5nZXMgd2hpY2ggdGFyZ2V0IGFwcGxpZXMsIGFuZCB0aGUgdHdvIG93bmVyc2hpcFxuICAvLyBhY3Rpb25zIGRlY2lkZSBXSE8gaXMgYWNjb3VudGFibGUgZm9yIG1lZXRpbmcgaXQuIEEgc2lsZW50IGNoYW5nZSBvZiBvd25lclxuICAvLyBpcyBob3cgYWNjb3VudGFiaWxpdHkgZm9yIGEgbWlzc2VkIHRhcmdldCBkaXNhcHBlYXJzLlxuICAnc3VwcG9ydC5jYXNlLnN0YXR1cycsXG4gICdzdXBwb3J0LmNhc2Uuc2V2ZXJpdHknLFxuICAnc3VwcG9ydC5jYXNlLmFzc2lnbicsXG4gICdzdXBwb3J0LmNhc2UudHJhbnNmZXInLFxuICAvLyBPTi1DQUxMLiBUaGUgcHJvdmlkZXIgb3ducyB0aGUgcm90YSwgdGhlIGVzY2FsYXRpb24gYW5kIHRoZSBjb250YWN0XG4gIC8vIG1ldGhvZHM7IHdoYXQgaXQgY2Fubm90IG93biBpcyBhbiBhdWRpdGFibGUgYW5zd2VyIHRvIFwid2hvIHBpY2tlZCB0aGlzIHVwXG4gIC8vIGF0IDAzOjE0XCIuIEEgY2xpY2sgb24gYSBsaW5rIGluIHRoZWlyIFVJIGlzIG5vdCBhbiBpZGVudGl0eSB0aGlzIHN5c3RlbSBjYW5cbiAgLy8gYXR0ZXN0IHRvLCBzbyB0aGVpciBpbmNpZGVudCBzdGF0ZSBjaGFuZ2UgaXMgcmVsYXllZCBoZXJlIGFuZCByZWNvcmRlZFxuICAvLyBhZ2FpbnN0IHRoZSBhZ2VudCB0aGV5IG5hbWUuIFRoZSBoYXNoIGNoYWluIGlzIHRoZSBwb2ludDogYSBwb3N0LWluY2lkZW50XG4gIC8vIHJldmlldyBuZWVkcyB0aGUgYWNrIHRvIGJlIGV2aWRlbmNlIHJhdGhlciB0aGFuIGEgc2NyZWVuc2hvdC5cbiAgLy9cbiAgLy8gYGVzY2FsYXRlZGAgaXMgYXVkaXRlZCBzZXBhcmF0ZWx5IGJlY2F1c2UgaXQgaXMgdGhlIHJlY29yZCB0aGF0IHRoZSBGSVJTVFxuICAvLyByZXNwb25kZXIgZGlkIG5vdCBhbnN3ZXIg4oCUIHRoZSBmYWN0IGEgcm90YSBpcyBhZGp1c3RlZCBvbiwgYW5kIHRoZSBvbmUgbW9zdFxuICAvLyBsaWtlbHkgdG8gYmUgZGlzcHV0ZWQgbGF0ZXIuXG4gICdzdXBwb3J0Lm9uY2FsbC5hY2tub3dsZWRnZWQnLFxuICAnc3VwcG9ydC5vbmNhbGwuZXNjYWxhdGVkJyxcbiAgLy8gVGhlIHRlc3QgcGFnZS4gQXVkaXRlZCBiZWNhdXNlIGl0IFJJTkdTIEEgUEhPTkU6IHdob2V2ZXIgaXQgd2FrZXMgaXNcbiAgLy8gZW50aXRsZWQgdG8gYSByZWNvcmQgb2Ygd2hvIGNhdXNlZCB0aGF0LCBhdCB3aGF0ZXZlciBob3VyIGl0IHdhcy5cbiAgJ3N1cHBvcnQub25jYWxsLnRlc3QnLFxuICAvLyBUaGUgdHdvIENPTlRBQ1QgYWN0aW9ucyAocGxhdGZvcm0pLiBOb3QgY2FzZSBldmVudHMg4oCUIGVudGl0bGVtZW50IGV2ZW50czpcbiAgLy8gZWFjaCBvbmUgY2hhbmdlcyB3aG8gaW4gYW4gb3JnIGlzIGFibGUgdG8gY29tbWl0IHVzIHRvIGEgcmVzcG9uc2UgdGFyZ2V0IGF0XG4gIC8vIGFsbCwgYW5kIGRlc2lnbmF0aW5nIHNwZW5kcyBhIHNsb3Qgb2YgYSBQQUlELCBhY2NvdW50LXBvb2xlZCBhbGxvd2FuY2UuIFRoZVxuICAvLyByZXZva2UgY2FycmllcyB0aGUgY291bnQgb2Ygb3BlbiBjYXNlcyBpdCBsZWZ0IGJlaGluZCwgc28gYW4gb3JwaGFuZWQgY2FzZVxuICAvLyBpcyBhIHJlY29yZGVkIGZhY3QgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGRpc2NvdmVyZWQgbGF0ZXIuXG4gICdzdXBwb3J0LmNvbnRhY3QuZGVzaWduYXRlJyxcbiAgJ3N1cHBvcnQuY29udGFjdC5yZXZva2UnLFxuICAvLyBUaGUgcHJlbWl1bSBVUEdSQURFLCBib3RoIGRpcmVjdGlvbnMuIFNlcGFyYXRlIGFjdGlvbnMgZnJvbSBkZXNpZ25hdGlvblxuICAvLyBiZWNhdXNlIHRoZXkgYW5zd2VyIHRvIGEgZGlmZmVyZW50IGNhcCBhbmQgY2FycnkgYSBkaWZmZXJlbnQgZmFjdDogd2hvIHdhc1xuICAvLyBlbnRpdGxlZCB0byAyNHg3IGNvdmVyYWdlLCBhbmQgd2hlbi4gQSByZXNwb25zZS10aW1lIGRpc3B1dGUgb3ZlciBhblxuICAvLyBvdXQtb2YtaG91cnMgY2FzZSB0dXJucyBvbiBleGFjdGx5IHRoYXQuXG4gICdzdXBwb3J0LmNvbnRhY3QudXBncmFkZScsXG4gICdzdXBwb3J0LmNvbnRhY3QuZG93bmdyYWRlJyxcbiAgLy8gU3RhZmYgbm90ZXMgb24gYSBjYXNlLiBBdWRpdGVkIGJlY2F1c2UgYSBub3RlIGlzIHRoZSB2ZW5kb3IncyBpbnRlcm5hbFxuICAvLyBhc3Nlc3NtZW50IG9mIGEgY3VzdG9tZXIgYW5kIHRoZSBvbmx5IHN1cmZhY2Ugb24gYSBjYXNlIHRoZSB0ZW5hbnQgbXVzdFxuICAvLyBuZXZlciBzZWU7IHRoZSB0cmFpbCBjYXJyaWVzIE1FVEFEQVRBIE9OTFkgKGNhc2UgbnVtYmVyLCBub3RlIGlkLCBsZW5ndGgpXG4gIC8vIGFuZCBuZXZlciB0aGUgYm9keSwgc2luY2UgdGhlIGNlbnRyYWwgdHJhaWwgaXMgcmVhZCBmYXIgbW9yZSB3aWRlbHkgdGhhblxuICAvLyB0aGUgc3VwcG9ydCBxdWV1ZSBpcy5cbiAgJ3N1cHBvcnQuY2FzZS5ub3RlJyxcbiAgLy8gVGhlIGNhbm5lZC1yZXBseSBsaWJyYXJ5LiBPTkUgYWN0aW9uIGZvciBjcmVhdGUvZWRpdC9yZXRpcmUgcmF0aGVyIHRoYW5cbiAgLy8gdGhyZWUsIGJlY2F1c2UgdGhlIHRyYWlsJ3MgcXVlc3Rpb24gaGVyZSBpcyBcIndobyBjaGFuZ2VkIHRoZSB3b3JkaW5nIHRoZVxuICAvLyBkZXNrIHNlbmRzIGN1c3RvbWVyc1wiLCBub3Qgd2hpY2ggdmVyYiB0aGV5IHVzZWQg4oCUIGBkZXRhaWxzYCBjYXJyaWVzIHRoYXQuXG4gIC8vIFN5c3RlbS13aWRlIHJhdGhlciB0aGFuIHBlci10ZW5hbnQsIHNvIHRoZXNlIHJvd3MgbmFtZSBubyBhZmZlY3RlZCBvcmcuXG4gICdzdXBwb3J0LmNhbm5lZC53cml0ZScsXG4gIC8vIEJpbGxpbmcgKGFwaS9iaWxsaW5nKSDigJQgc3Vic2NyaXB0aW9uICsgZW50aXRsZW1lbnQgbXV0YXRpb25zLCBtaXJyb3JlZCB0byB0aGVcbiAgLy8gY2VudHJhbCBhdWRpdCB0cmFpbCAodGhlc2UgYWxzbyB3cml0ZSB0byB0aGUgc2VydmljZS1sb2NhbCBiaWxsaW5nX2V2ZW50c1xuICAvLyBjb2xsZWN0aW9uKS4gYGRldGFpbHNgIGNhcnJ5IHBsYW4vdGllci9hZGRvbiBpZHMgb25seSDigJQgbmV2ZXIgY2FyZC9wYXltZW50XG4gIC8vIHNlY3JldHMgb3IgYW4gQVdTIGFjY291bnQgaWQuXG4gIC8vIFN1YnNjcmlwdGlvbiBsaWZlY3ljbGUgYSBDVVNUT01FUiBkcml2ZXMgKHRoZSBhZG1pbiBjb3VudGVycGFydCBpc1xuICAvLyBgYmlsbGluZy50aWVyLm92ZXJyaWRlYCk6IHNlbGYtc2VydmUgY3JlYXRlIChkaXJlY3Qgb3IgTWFya2V0cGxhY2UgY2xhaW0pLFxuICAvLyBwbGFuL2ludGVydmFsIGNoYW5nZSwgY2FuY2VsLWF0LXBlcmlvZC1lbmQsIHVuZG8tY2FuY2VsLCBjYXNjYWRlIGRlbGV0ZS5cbiAgJ2JpbGxpbmcuc3Vic2NyaXB0aW9uLmNyZWF0ZScsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi51cGRhdGUnLFxuICAnYmlsbGluZy5zdWJzY3JpcHRpb24ucmVhY3RpdmF0ZScsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi5jYW5jZWwnLFxuICAnYmlsbGluZy5zdWJzY3JpcHRpb24uZGVsZXRlJyxcbiAgJ2JpbGxpbmcudGllci5vdmVycmlkZScsXG4gIC8vIEEgTkVHT1RJQVRFRCBzdXBwb3J0IHNpemUgZmxvb3IgcmVwbGFjaW5nIHRoZSBjb21wdXRlZCByYW1wLiBTeXN0ZW0tb3JnXG4gIC8vIG9ubHksIGFuZCBhdWRpdGVkIHdpdGggdGhlIGFncmVlZCBQUklDRSBhbmQgdGhlIGFncmVlZCBTRUFUIENPVU5UIHRvZ2V0aGVyOlxuICAvLyBhIGRpc3B1dGUgYWJvdXQgd2hhdCB3YXMgc2lnbmVkIGZvciB0dXJucyBvbiB0aGF0IHBhaXIsIGFuZCB0aGUgcHJpY2UgYWxvbmVcbiAgLy8gY2Fubm90IGFuc3dlciBcImF0IHdoYXQgc2NhbGVcIi5cbiAgJ2JpbGxpbmcuc3VwcG9ydC1mbG9vci5vdmVycmlkZScsXG4gIC8vIEEgR1JBTlRFRCBvbmUtdGltZSBzdXBwb3J0IGluY2lkZW50IOKAlCBhIGNvbW1lcmNpYWwgY29uY2Vzc2lvbiwgbm90IGEgc2FsZS5cbiAgLy8gVGhlcmUgaXMgZGVsaWJlcmF0ZWx5IG5vIHB1cmNoYXNlIHBhdGg6IG1vbnRobHkgc3VwcG9ydCBjYW5jZWxzIGZyZWVseSwgc29cbiAgLy8gYW4gaW5jaWRlbnQgcHJpY2VkIGFib3ZlIGEgbW9udGggaXMgZG9taW5hdGVkIGFuZCBvbmUgYmVsb3cgaXQgbG9zZXMgbW9uZXkuXG4gIC8vIFRoZSByb3cgY2FycmllcyB0aGUgY291bnQgYW5kIHRoZSByZXN1bHRpbmcgYmFsYW5jZSwgd2hpY2ggaXMgd2hhdCBhIGxhdGVyXG4gIC8vIHJldmlldyBvZiBcIndobyBnYXZlIHdoYXQgYXdheVwiIG5lZWRzLlxuICAnYmlsbGluZy5zdXBwb3J0LWluY2lkZW50LmdyYW50JyxcbiAgLy8gT3BlcmF0b3Itb25seSByZXNlZWQgb2YgdGhlIGludm9pY2UgbGVkZ2VyIGZyb20gdGhlIHBheW1lbnQgcHJvdmlkZXInc1xuICAvLyBoaXN0b3J5IChQT1NUIC9iaWxsaW5nL2FkbWluL2JhY2tmaWxsKSDigJQgbXV0YXRlcyBmaW5hbmNlIGRhdGEgZmxlZXQtd2lkZS5cbiAgJ2JpbGxpbmcuYWRkb24uYWRkJyxcbiAgJ2JpbGxpbmcuYWRkb24ucmVtb3ZlJyxcbiAgLy8gU3lzdGVtLWluaXRpYXRlZCByZW1vdmFsIG9mIGEgdGllci1pbmNsdWRlZCBhZGQtb24gb24gYSBwbGFuIHVwZ3JhZGUgKHRoZVxuICAvLyBhY2NvdW50J3MgbmV3IHRpZXIgbm93IGJ1bmRsZXMgdGhlIGZlYXR1cmUpIOKAlCBkaXN0aW5jdCBmcm9tIGEgdXNlci1pbml0aWF0ZWRcbiAgLy8gYHJlbW92ZWAgc28gZmluYW5jZSBjYW4gdGVsbCBhbiBhdXRvLXBydW5lIGZyb20gYSBjdXN0b21lciBhY3Rpb24uXG4gICdiaWxsaW5nLmFkZG9uLnBydW5lJyxcbiAgLy8gRGlzY291bnRzIChkb2NzL2JpbGxpbmctZGlzY291bnRzLm1kKSDigJQgbWludC9pc3N1ZS9hcHBseS9yZW1vdmUvcmV2b2tlIG9mIGFcbiAgLy8gcHJpY2UgY291cG9uIG9yIHVzYWdlIGNyZWRpdC4gYGRldGFpbHNgIGNhcnJ5IHRoZSBkaXNjb3VudCBpZCArIGtpbmQvdmFsdWVcbiAgLy8gb25seSwgbmV2ZXIgdGhlIG9wYXF1ZSB0b2tlbiBvciBzaWduaW5nIGtleS5cbiAgJ2JpbGxpbmcuZGlzY291bnQuZ2VuZXJhdGUnLFxuICAnYmlsbGluZy5kaXNjb3VudC5pc3N1ZScsXG4gICdiaWxsaW5nLmRpc2NvdW50LmFwcGx5JyxcbiAgJ2JpbGxpbmcuZGlzY291bnQucmVtb3ZlJyxcbiAgJ2JpbGxpbmcuZGlzY291bnQucmV2b2tlJyxcbiAgLy8gUHJvbW90aW9ucyAoZG9jcy9iaWxsaW5nLWRpc2NvdW50cy5tZCNwcm9tb3Rpb25zKSDigJQgcnVsZS1kcml2ZW4gYXV0by1ncmFudFxuICAvLyBjYW1wYWlnbnMuIGBkZXRhaWxzYCBjYXJyeSB0aGUgcHJvbW90aW9uIGlkICsgY2VudHMvZXZlbnQgb25seS5cbiAgJ2JpbGxpbmcucHJvbW90aW9uLmNyZWF0ZScsXG4gICdiaWxsaW5nLnByb21vdGlvbi51cGRhdGUnLFxuICAnYmlsbGluZy5wcm9tb3Rpb24ucmV2b2tlJyxcbiAgJ2JpbGxpbmcucHJvbW90aW9uLmdyYW50JyxcbiAgJ2JpbGxpbmcucHJvbW90aW9uLmFjdGl2YXRlJyxcbiAgLy8gVXNhZ2UtY3JlZGl0IHJlYWxpemF0aW9uIOKAlCBhIGN1c3RvbWVyL2NvbXBsaWFuY2UtdmlzaWJsZSByZWNvcmQgb2YgY3JlZGl0XG4gIC8vIG1vdmVtZW50OiBgY29uc3VtZWRgIChNYXJrZXRwbGFjZSBtZXRlcmVkIGRyYXdkb3duKSwgYGV4aGF1c3RlZGAgKGJhbGFuY2UgaGl0XG4gIC8vIHplcm8pLCBhbmQgYSBjb21ibyBlbmRpbmcuIGBkZXRhaWxzYCBjYXJyeSBjZW50cy9pZHMgb25seSwgbm8gcGF5bWVudCBzZWNyZXRzLlxuICAnYmlsbGluZy5jcmVkaXQuY29uc3VtZWQnLFxuICAnYmlsbGluZy5jcmVkaXQuZXhoYXVzdGVkJyxcbiAgJ2JpbGxpbmcuY29tYm8uZXhwaXJlZCcsXG4gIC8vIFJlcG9ydGluZyAoYXBpL3JlcG9ydGluZykg4oCUIHRoZSB0aHJlZSByZXBvcnRpbmcgbXV0YXRpb25zIHdob3NlIGVmZmVjdFxuICAvLyBvdXRsaXZlcyBhIHJlcXVlc3QgbG9nOiB0aGUgcGVyLW9yZyBjb3JyZWxhdGlvbi13aW5kb3cgY29uZmlnIHdyaXRlLCBhXG4gIC8vIHBvc3QtZGVwbG95IG91dGNvbWUgbWFya2VyIChpdCBtb3ZlcyB0aGUgb3JnJ3MgRE9SQSBDRlIvTVRUUiksIGFuZCB0aGVcbiAgLy8gaW5ib3VuZCBiaWxsaW5n4oaScmVwb3J0aW5nIHJldGVudGlvbi1lbnRpdGxlbWVudCBzeW5jIChhIHJldGVudGlvbiBjdXQgaXMgYVxuICAvLyBkYXRhLWRlc3Ryb3lpbmcgY2hhbmdlIGFwcGxpZWQgYnkgdGhlIG5leHQgc3dlZXApLiBgZGV0YWlsc2AgY2FycnkgdGhlXG4gIC8vIHNldHRpbmdzL291dGNvbWUgdmFsdWVzIG9ubHkuXG4gICdyZXBvcnRpbmcuc2V0dGluZ3MudXBkYXRlJyxcbiAgJ3JlcG9ydGluZy5kZXBsb3ltZW50Lm91dGNvbWUnLFxuICAncmVwb3J0aW5nLnJldGVudGlvbi5zeW5jJyxcbiAgLy8gU3Rha2Vob2xkZXIgcmVwb3J0cyDigJQgdGhlIGFkZC1vbidzIGF1dGhvcmluZyBhbmQgUFVCTElTSElORyBzdXJmYWNlLiBQdWJsaXNoaW5nXG4gIC8vIGlzIHRoZSBtb21lbnQgaW50ZXJuYWwgZGVsaXZlcnkgbnVtYmVycyBsZWF2ZSB0aGUgcGxhdGZvcm0sIHNvIHRoZSB3aG9sZVxuICAvLyBvdXR3YXJkIHBhdGggaXMgYXVkaXRhYmxlOiB3aGljaCByZXBvcnQsIHdoaWNoIHBlcmlvZCdzIGZyb3plbiBzbmFwc2hvdCxcbiAgLy8gd2hpY2ggdmVyc2lvbiwgYW5kIHdobyBsZXQgaXQgb3V0LiBgbGluay5jcmVhdGVkYCAvIGBsaW5rLnJldm9rZWRgIGNvdmVyIHRoZVxuICAvLyBVUkxzIHRoYXQgbGV0IHNvbWVvbmUgd2l0aG91dCBhbiBhY2NvdW50IHJlYWQgaXQ7IGByZWNpcGllbnQuYWRkZWRgIC9cbiAgLy8gYHJlY2lwaWVudC5yZW1vdmVkYCBjb3ZlciB3aG8gaXMgb24gdGhlIGRpc3RyaWJ1dGlvbiBsaXN0LCB3aGljaCBpcyB0aGUgb3RoZXJcbiAgLy8gd2F5IGRhdGEgcmVhY2hlcyBhIHBlcnNvbi4gYG93bmVyc2hpcC50cmFuc2ZlcmAgaXMgYSBwcml2aWxlZ2UgbW92ZTogYVxuICAvLyBzY2hlZHVsZWQgcnVuIGlzIGF1dGhvcml6ZWQgYXMgaXRzIE9XTkVSLCBzbyBoYW5kaW5nIGEgZGVmaW5pdGlvbiBvdmVyIGhhbmRzXG4gIC8vIG92ZXIgd2hvc2UgYWNjZXNzIHRoZSBudW1iZXJzIGFyZSBjb21wdXRlZCB3aXRoLlxuICAvL1xuICAvLyBEZWxpYmVyYXRlbHkgTk9UIGF1ZGl0ZWQ6IHJlYWRpbmcgYSBzaGFyZWQgcmVwb3J0LiBUaGUgYWNjZXNzIGlzIGxvZ2dlZCBhbmRcbiAgLy8gY291bnRlZCBwZXIgbGluaywgYnV0IGl0IGlzIGFuIFVOQVVUSEVOVElDQVRFRCwgZXh0ZXJuYWxseS10cmlnZ2VyZWQgZXZlbnQg4oCUXG4gIC8vIGFueW9uZSBob2xkaW5nIGEgVVJMIGNvdWxkIG90aGVyd2lzZSB3cml0ZSB1bmJvdW5kZWQgcm93cyBpbnRvIHRoZSBvcmcncyBhdWRpdFxuICAvLyB0cmFpbCwgd2hpY2ggdHVybnMgYSByZWFkIGludG8gYSB3YXkgdG8gYnVyeSB0aGUgZW50cmllcyB0aGF0IG1hdHRlci5cbiAgJ3JlcG9ydGluZy5yZXBvcnQuZGVmaW5pdGlvbi5jcmVhdGUnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5kZWZpbml0aW9uLnVwZGF0ZScsXG4gICdyZXBvcnRpbmcucmVwb3J0LmRlZmluaXRpb24uZGVsZXRlJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQub3duZXJzaGlwLnRyYW5zZmVyJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucHVibGlzaGVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVwdWJsaXNoZWQnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5saW5rLmNyZWF0ZWQnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5saW5rLnJldm9rZWQnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5yZWNpcGllbnQuYWRkZWQnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5yZWNpcGllbnQucmVtb3ZlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnBvbGljeS51cGRhdGUnLFxuICAvLyBBIGRlZmluaXRpb24gU1RPUFBFRCBwcm9kdWNpbmcgcmVwb3J0cyB3aXRob3V0IGFueW9uZSBhc2tpbmcgaXQgdG86IHRoZSBvd25lclxuICAvLyB3YXMgZGVhY3RpdmF0ZWQgb3IgcmVtb3ZlZCwgb3IgbG9zdCB0aGUgcGVybWlzc2lvbiBhIHJ1biBpcyBhdXRob3JpemVkIHdpdGguXG4gIC8vIFJlY29yZGVkIGJlY2F1c2UgdGhlIGVmZmVjdCBpcyBzaWxlbnQg4oCUIGEgbWFuYWdlciBmaW5kcyBvdXQgYnkgbm90IHJlY2VpdmluZ1xuICAvLyB0aGUgcmVwb3J0IOKAlCBzbyB0aGUgdHJhaWwgaGFzIHRvIHNheSB3aGljaCByZXBvcnRzIHN0b3BwZWQgYW5kIHdoeS5cbiAgJ3JlcG9ydGluZy5yZXBvcnQucGF1c2VkJyxcbiAgLy8g4oCmYW5kIHN0YXJ0ZWQgYWdhaW4uIEl0cyBvd24gYWN0aW9uIHJhdGhlciB0aGFuIGEgZGV0YWlsIG9uIHRoZSBwYXVzZSwgYmVjYXVzZSB0aGVcbiAgLy8gcXVlc3Rpb24gYSByZXZpZXdlciBhc2tzIGlzIFwid2FzIHRoaXMgYWNjb3VudCdzIHJlcG9ydGluZyBvZmYgYmV0d2VlbiB0aGVzZSB0d29cbiAgLy8gZGF0ZXNcIiwgYW5kIGFuc3dlcmluZyBpdCBmcm9tIGEgc2luZ2xlIGFjdGlvbidzIGRldGFpbHMgbWVhbnMgcmVhZGluZyBldmVyeSByb3cuXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlc3VtZWQnLFxuICAvLyBEZW5pZWQgYXV0aG9yaXphdGlvbiBhdHRlbXB0IOKAlCBlbWl0dGVkIGJlc3QtZWZmb3J0IGJ5IHRoZSBzaGFyZWRcbiAgLy8gYHJlcXVpcmVQZXJtaXNzaW9uYCAvIGByZXF1aXJlU3lzdGVtQWRtaW5gIGdhdGUgd2hlbiBhIHN0YXRlLWNoYW5naW5nXG4gIC8vIChub24tR0VUKSByZXF1ZXN0IGlzIHJlamVjdGVkLCBzbyBwcm9iaW5nL2VzY2FsYXRpb24gYXR0ZW1wdHMgYXJlIHZpc2libGVcbiAgLy8gcmF0aGVyIHRoYW4gaW52aXNpYmxlLiBgZGV0YWlsc2AgY2FycmllcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbiArIHBhdGg7XG4gIC8vIGBvdXRjb21lYCBpcyAnZmFpbHVyZScuXG4gICdhdXRoei5kZW5pZWQnLFxuICAvLyBcIkFza1wiIGFzc2lzdGFudCBhY3Rpdml0eSDigJQgdmlzaWJpbGl0eSBpbnRvIHdoYXQgdGhlIGFzc2lzdGFudCBkaWQgb24gYSB1c2VyJ3NcbiAgLy8gYmVoYWxmLiBgYXNrLnF1ZXJ5YCBpcyBhIHJlYWQtb25seSBob3ctdG8gdHVybjsgYGFzay5hZ2VudC50dXJuYCBpcyBhIHRvb2wtY2FsbGluZ1xuICAvLyB0dXJuLiBgZGV0YWlsc2AgY2FycnkgU0FGRSBNRVRBREFUQSBPTkxZICh0b29scyB1c2VkLCBwcm9wb3NhbCBraW5kcywgcXVlcnlcbiAgLy8gbGVuZ3RoLCBvdXRjb21lKSwgbmV2ZXIgdGhlIHJhdyBxdWVyeSB0ZXh0LlxuICAnYXNrLnF1ZXJ5JyxcbiAgJ2Fzay5hZ2VudC50dXJuJyxcbiAgLy8gQSByZWFkZXIgcmF0aW5nIGFuIGFuc3dlciwgb3IgYSBoZWxwIHNlYXJjaCB0aGF0IGZvdW5kIG5vdGhpbmcuIFRoZSBPTkxZXG4gIC8vIHNpZ25hbCBmb3Igd2hpY2ggZG9jcyB0aGUgYXNzaXN0YW50IGFuc3dlcnMgYmFkbHkgZnJvbSDigJQgdGhlIHR1cm4gaXRzZWxmXG4gIC8vIGNhbm5vdCB0ZWxsIGEgZ29vZCBhbnN3ZXIgZnJvbSBhIGNvbmZpZGVudCB3cm9uZyBvbmUuIGBkZXRhaWxzYCBjYXJyeSB0aGVcbiAgLy8gcmF0aW5nIGFuZCB0aGUgRE9DIElEUyBjaXRlZCAoYGF1dGhlbnRpY2F0aW9uLm1kYCksIG5ldmVyIHRoZSBxdWVzdGlvbjogdGhlXG4gIC8vIGRvYyBpcyB3aGF0IGdldHMgZml4ZWQsIGFuZCBpdCBpcyBub3QgdXNlci1lbnRlcmVkIHRleHQuXG4gICdhc2suZmVlZGJhY2snLFxuICAvLyBQbHVnaW4gZWNvc3lzdGVtIChkb2NzL3J1bmJvb2tzL2Vjb3N5c3RlbS1tb2RlcmF0aW9uLm1kKS4gR292ZXJuYW5jZSBhY3Rpb25zXG4gIC8vIGFyZSByZWNvcmRlZCB3aXRoIGBvcmdJZGAgPSB0aGUgc3lzdGVtIG9yZzsgYGFmZmVjdGVkT3JnSWRgIGlzIHRoZVxuICAvLyBwdWJsaXNoZXIncyBvcmcgKGxpc3RpbmcvdmVyc2lvbi9yZXZpZXcvYWR2aXNvcnkvcHVibGlzaGVyIG1vZGVyYXRpb24pIG9yXG4gIC8vIHRoZSBpbnN0YWxsaW5nIG9yZyAoaW5zdGFsbHMgKyBwb2xpY3kpLiBBbm9ueW1vdXMgc3VibWlzc2lvbnMgdXNlIHRoZVxuICAvLyBgQU5PTllNT1VTX0FDVE9SX0lEYCBhY3RvciB3aXRoIGBkZXRhaWxzLnN1Ym1pc3Npb25JZGAuIGBkZXRhaWxzYCBjYXJyeSBpZHMsXG4gIC8vIHZlcnNpb25zLCBkaWdlc3RzLCB0aWVyLCBzdGF0ZSBhbmQgcmVhc29uIGNvZGVzIG9ubHkg4oCUIG5ldmVyIHJldmlldyBib2RpZXMsXG4gIC8vIFJFQURNRSBjb250ZW50LCBzZWNyZXRzIG9yIGVtYWlscy5cbiAgLy8gUHVibGlzaGVycy5cbiAgJ3B1Ymxpc2hlci5jcmVhdGUnLFxuICAncHVibGlzaGVyLnVwZGF0ZScsXG4gICdwdWJsaXNoZXIudGVybXMuYWNjZXB0JyxcbiAgJ3B1Ymxpc2hlci52ZXJpZnkucmVxdWVzdCcsXG4gICdwdWJsaXNoZXIudmVyaWZ5LmFwcHJvdmUnLFxuICAncHVibGlzaGVyLnZlcmlmeS5yZWplY3QnLFxuICAncHVibGlzaGVyLnRpZXIuY2hhbmdlJyxcbiAgJ3B1Ymxpc2hlci5zdXNwZW5kJyxcbiAgJ3B1Ymxpc2hlci51bnN1c3BlbmQnLFxuICAncHVibGlzaGVyLnRyYW5zZmVyLnJlcXVlc3QnLFxuICAncHVibGlzaGVyLnRyYW5zZmVyLmFjY2VwdCcsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIuZGVjbGluZScsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIuYXBwcm92ZScsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIucmVqZWN0JyxcbiAgJ3B1Ymxpc2hlci5wcm9maWxlLWNoYW5nZS5hcHByb3ZlJyxcbiAgJ3B1Ymxpc2hlci5wcm9maWxlLWNoYW5nZS5yZWplY3QnLFxuICAvLyBQdWJsaXNoIHJlcXVlc3RzICh0ZW5hbnQg4oaSIHN5c3RlbSBvcmcpLiBgZGV0YWlscy5raW5kYCBuYW1lcyB0aGUgcmVxdWVzdC5cbiAgJ3BsdWdpbi5yZXF1ZXN0LnN1Ym1pdCcsXG4gICdwbHVnaW4ucmVxdWVzdC53aXRoZHJhdycsXG4gICdwbHVnaW4ucmVxdWVzdC5hcHByb3ZlJyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LnNlY29uZC1hcHByb3ZlJyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LnJlamVjdCcsXG4gICdwbHVnaW4ucmVxdWVzdC5hdXRvLWFwcHJvdmUnLFxuICAvLyBMaXN0aW5ncyBhbmQgdmVyc2lvbnMgKHN5c3RlbSBvcmcsIGV4Y2VwdCB0aGUgdGVuYW50IHBhdXNlKS5cbiAgJ3BsdWdpbi5saXN0aW5nLnB1Ymxpc2gnLFxuICAvLyBOT1RFOiB0aGVyZSBpcyBubyBgcGx1Z2luLmxpc3RpbmcudW5saXN0YC4gV2l0aGRyYXdhbCBpcyBhbHJlYWR5IGV4cHJlc3NlZCBieVxuICAvLyBgcGx1Z2luLmxpc3Rpbmcuc3RhdGUuY2hhbmdlYCAoYHVubWFpbnRhaW5lZGAgLyBgc3VzcGVuZGVkYCAvIGBsaXN0ZWRgKSxcbiAgLy8gd2hpY2ggaXMgdGhlIGFjdGlvbiB0aGUgY29kZSBhY3R1YWxseSBlbWl0cywgc28gYHVubGlzdGAgd2FzIGEgc2Vjb25kIG5hbWVcbiAgLy8gZm9yIGEgdGhpbmcgdGhhdCBoYXMgb25lIOKAlCBhbmQgYSBuZXZlci1lbWl0dGVkIG9uZSBhdCB0aGF0LlxuICAncGx1Z2luLmxpc3RpbmcudXBkYXRlJyxcbiAgJ3BsdWdpbi5saXN0aW5nLnN0YXRlLmNoYW5nZScsXG4gICdwbHVnaW4ubGlzdGluZy5wYXVzZScsXG4gICdwbHVnaW4ubGlzdGluZy51bnBhdXNlJyxcbiAgJ3BsdWdpbi52ZXJzaW9uLnBhdXNlJyxcbiAgJ3BsdWdpbi52ZXJzaW9uLnlhbmsnLFxuICAncGx1Z2luLnZlcnNpb24udW55YW5rJyxcbiAgJ3BsdWdpbi52ZXJzaW9uLmRlcHJlY2F0ZScsXG4gIC8vIE5PVEU6IG5vIGBwbHVnaW4uY29sbGVjdGlvbi51cGRhdGVgLiBgZWNvc3lzdGVtX2NvbGxlY3Rpb25zYCB3YXMgZGVsZXRlZCAoc2VlXG4gIC8vIHRoZSB0b21ic3RvbmUgaW4gYHNjaGVtYS9lY29zeXN0ZW0udHNgKSBiZWNhdXNlIG5vdGhpbmcgZXZlciB3cm90ZSBvciByZWFkXG4gIC8vIG9uZTsgdGhpcyBkZWNsYXJhdGlvbiBvdXRsaXZlZCB0aGUgdGFibGUgaXQgYXVkaXRlZC5cbiAgLy8gRWNvc3lzdGVtIGNvbmZpZ3VyYXRpb24gKHN5c3RlbSBvcmcpLlxuICAnZWNvc3lzdGVtLmF1dG8tYXBwcm92YWwtcnVsZS5jcmVhdGUnLFxuICAnZWNvc3lzdGVtLmF1dG8tYXBwcm92YWwtcnVsZS51cGRhdGUnLFxuICAnZWNvc3lzdGVtLmF1dG8tYXBwcm92YWwtcnVsZS5kZWxldGUnLFxuICAnZWNvc3lzdGVtLnJlc2VydmVkLW5hbWUudXBkYXRlJyxcbiAgLy8gTk9URTogbm8gYGVjb3N5c3RlbS5zbGEudXBkYXRlYC4gVGhlIGxhbmUgU0xBcyBhcmUgSEFSRENPREVEIChzdGFuZGFyZCA0OGgsXG4gIC8vIHNlY3VyaXR5LWZpeCA0aCBpbiBgc2VydmljZXMvZWNvc3lzdGVtL3NsYS50c2ApIHdpdGggbm8gc2V0dGluZ3Mgc3VyZmFjZSwgc29cbiAgLy8gdGhlcmUgaXMgbm8gbXV0YXRpb24gdG8gYXVkaXQuIE1ha2luZyB0aGVtIG9wZXJhdG9yLXR1bmFibGUgaXMgdGhlIGNoYW5nZVxuICAvLyB0aGF0IHNob3VsZCByZS1hZGQgdGhpcy5cbiAgLy8gUHVibGljIHJlZ2lzdHJ5IG5hbWVzcGFjZSAoYHB1YmxpYy8qYCk6IGNvcHkgKyBzaWduICsgYXR0ZXN0IG9uIHB1Ymxpc2gsXG4gIC8vIHRoZSB0aWVyLWNoYW5nZS9zdXNwZW5zaW9uIHJlLXNpZ24gam9iLCB0YWcgcmVtb3ZhbCBvbiB5YW5rL3Rha2Vkb3duLCBhbmRcbiAgLy8gdGhlIHJldGVudGlvbiBzd2VlcC5cbiAgJ3JlZ2lzdHJ5LmltYWdlLnB1Ymxpc2gnLFxuICAncmVnaXN0cnkuaW1hZ2UucmVzaWduJyxcbiAgJ3JlZ2lzdHJ5LmltYWdlLnlhbmsnLFxuICAncmVnaXN0cnkuaW1hZ2UuZ2MnLFxuICAvLyBJbnN0YWxscyBhbmQgdGhlIGluc3RhbGxpbmcgb3JnJ3MgY29uc3VtcHRpb24gcG9saWN5IChvcmctbG9jYWwpLlxuICAncGx1Z2luLmluc3RhbGwucmVxdWVzdCcsXG4gICdwbHVnaW4uaW5zdGFsbC5hcHByb3ZlJyxcbiAgJ3BsdWdpbi5pbnN0YWxsLmRlbnknLFxuICAncGx1Z2luLmluc3RhbGwuY3JlYXRlJyxcbiAgJ3BsdWdpbi5pbnN0YWxsLnVwZ3JhZGUnLFxuICAvLyBBIG1lbWJlcidzIHJlcXVlc3QgdG8gY2hhbmdlIGFuIGluc3RhbGwgcGFzdCB3aGF0IHRoZXkgbWF5IGRvIGFsb25lLCBhbmQgaXRzIGRlY2lzaW9uLlxuICAncGx1Z2luLmluc3RhbGwuY2hhbmdlLXJlcXVlc3QnLFxuICAncGx1Z2luLmluc3RhbGwuY2hhbmdlLWFwcHJvdmUnLFxuICAncGx1Z2luLmluc3RhbGwuY2hhbmdlLXJlamVjdCcsXG4gICdwbHVnaW4uaW5zdGFsbC5yZW1vdmUnLFxuICAnb3JnLnBsdWdpbi1pbnN0YWxsLXBvbGljeS51cGRhdGUnLFxuICAvLyBBbiB1cGxvYWQgUkVGVVNFRCBiZWNhdXNlIGl0cyBuYW1lIHdvdWxkIG92ZXJyaWRlIHNvbWV0aGluZyB0aGUgb3JnIGFscmVhZHlcbiAgLy8gcmVzb2x2ZXMg4oCUIGEgbGlzdGluZywgb3IgYSB0ZWFtJ3MgcGFyZW50LW9yZyBwbHVnaW4g4oCUIGFuZCB0aGUgY29uc3VtcHRpb25cbiAgLy8gcG9saWN5IHNheXMgYHNoYWRvd2luZzogZGVueWAuIEF1ZGl0ZWQgYmVjYXVzZSBhIHJlZnVzYWwgb3RoZXJ3aXNlIHJldHVybnNcbiAgLy8gYW4gZXJyb3IgdG8gdGhlIGNhbGxlciBhbmQgbGVhdmVzIG5vdGhpbmcgYmVoaW5kOiBhbiBhdHRlbXB0IHRvIGRlZmluZVxuICAvLyBgdHJpdnlgIG92ZXIgdGhlIE9mZmljaWFsIHNjYW5uZXIgaXMgZXhhY3RseSB0aGUgdGhpbmcgc29tZW9uZSBzaG91bGQgYmVcbiAgLy8gYWJsZSB0byBmaW5kIGFmdGVyd2FyZHMuIGBkZXRhaWxzYCBjYXJyeSB0aGUgbmFtZSBhbmQgd2hhdCBpdCB3b3VsZCBoYXZlXG4gIC8vIG92ZXJyaWRkZW4uXG4gICdwbHVnaW4uc2hhZG93aW5nLmRlbmllZCcsXG4gIC8vIFJldmlld3MgYW5kIHJlcGxpZXMuXG4gICdwbHVnaW4ucmV2aWV3LmNyZWF0ZScsXG4gICdwbHVnaW4ucmV2aWV3LnVwZGF0ZScsXG4gICdwbHVnaW4ucmV2aWV3LmRlbGV0ZScsXG4gICdwbHVnaW4ucmV2aWV3LnJlcG9ydCcsXG4gICdwbHVnaW4ucmV2aWV3LmhvbGQnLFxuICAncGx1Z2luLnJldmlldy5yZWxlYXNlJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVtb3ZlJyxcbiAgJ3BsdWdpbi5yZXZpZXcuYW5vbnltaXplJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVwbHkuY3JlYXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVwbHkudXBkYXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVwbHkuZGVsZXRlJyxcbiAgLy8gQW5vbnltb3VzIHN1Ym1pc3Npb25zLlxuICAncGx1Z2luLnN1Ym1pc3Npb24uY3JlYXRlJyxcbiAgJ3BsdWdpbi5zdWJtaXNzaW9uLnZlcmlmeScsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5nYXRlLWZhaWwnLFxuICAncGx1Z2luLnN1Ym1pc3Npb24uYXBwcm92ZScsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5yZWplY3QnLFxuICAncGx1Z2luLnN1Ym1pc3Npb24uY2xhaW0nLFxuICAncGx1Z2luLnN1Ym1pc3Npb24uZXhwaXJlJyxcbiAgLy8gU2VjdXJpdHkgYWR2aXNvcmllcyAocHVibGlzaC93aXRoZHJhdyBhcmUgc3lzdGVtLW9yZyBvbmx5OyB1cGRhdGUgPSBhXG4gIC8vIG1vZGVyYXRvciBlZGl0aW5nIGEgZHJhZnQgYmVmb3JlIGl0IGlzIHB1Ymxpc2hlZCkuXG4gICdwbHVnaW4uYWR2aXNvcnkuY3JlYXRlJyxcbiAgJ3BsdWdpbi5hZHZpc29yeS51cGRhdGUnLFxuICAncGx1Z2luLmFkdmlzb3J5LnB1Ymxpc2gnLFxuICAncGx1Z2luLmFkdmlzb3J5LndpdGhkcmF3JyxcbiAgLy8gUGVyLW9yZyBwbHVnaW4gc2VjdXJpdHkgbm90aWZpY2F0aW9ucyAocGx1Z2luIHNjYW4gZ2F0ZXMpOiB0aGUgc2V0dGluZ3NcbiAgLy8gKHJlY2lwaWVudHMsIGRpZ2VzdCwgd2ViaG9vaywgZXh0ZXJuYWwgYWRkcmVzcyDigJQgY2hhbmdlZCBmaWVsZCBuYW1lcyBhbmRcbiAgLy8gdGhlIHdlYmhvb2sgaG9zdCBvbmx5LCBuZXZlciB0aGUgc2VjcmV0IG9yIHRoZSBhZGRyZXNzKSwgYW4gZXh0ZXJuYWxcbiAgLy8gYWRkcmVzcyBjb25maXJtZWQgdGhyb3VnaCBpdHMgZW1haWxlZCBzaW5nbGUtdXNlIGxpbmssIGFuZCBhIHRlc3Qgc2VuZC5cbiAgJ3BsdWdpbi5zZWN1cml0eV9ub3RpZmljYXRpb25zLnVwZGF0ZScsXG4gICdwbHVnaW4uc2VjdXJpdHlfbm90aWZpY2F0aW9ucy5leHRlcm5hbF9lbWFpbC52ZXJpZnknLFxuICAncGx1Z2luLnNlY3VyaXR5X25vdGlmaWNhdGlvbnMudGVzdCcsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBSZW1vdGVBdWRpdEFjdGlvbiA9IHR5cGVvZiBSRU1PVEVfQVVESVRfQUNUSU9OU1tudW1iZXJdO1xuXG4vKiogV2hldGhlciBgdmFsdWVgIGlzIGFuIGFjdGlvbiBhIHJlbW90ZSBzZXJ2aWNlIG1heSBlbWl0ICh0aGUgaW5nZXN0IGFsbG93LWxpc3QpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVtb3RlQXVkaXRBY3Rpb24odmFsdWU6IHN0cmluZyk6IHZhbHVlIGlzIFJlbW90ZUF1ZGl0QWN0aW9uIHtcbiAgcmV0dXJuIChSRU1PVEVfQVVESVRfQUNUSU9OUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXModmFsdWUpO1xufVxuIl19
|
|
573
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWF1ZGl0LWFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVtb3RlLWF1ZGl0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7OztHQU9HO0FBR0g7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLHdCQUF3QjtJQUN4QixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDhFQUE4RTtJQUM5RSwyRUFBMkU7SUFDM0UsOEVBQThFO0lBQzlFLHFCQUFxQjtJQUNyQix1RUFBdUU7SUFDdkUsMkVBQTJFO0lBQzNFLCtFQUErRTtJQUMvRSw4RUFBOEU7SUFDOUUsa0VBQWtFO0lBQ2xFLHlFQUF5RTtJQUN6RSxvQkFBb0I7SUFDcEIsMkVBQTJFO0lBQzNFLDZFQUE2RTtJQUM3RSxzRUFBc0U7SUFDdEUsOEVBQThFO0lBQzlFLDZFQUE2RTtJQUM3RSx1RUFBdUU7SUFDdkUscUNBQXFDO0lBQ3JDLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsNkVBQTZFO0lBQzdFLCtFQUErRTtJQUMvRSxxRUFBcUU7SUFDckUsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQiw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLGNBQWM7SUFDZCxlQUFlO0lBQ2YsZUFBZTtJQUNmLGVBQWU7SUFDZiw4RUFBOEU7SUFDOUUsNEVBQTRFO0lBQzVFLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLHlFQUF5RTtJQUN6RSw0RUFBNEU7SUFDNUUsNEVBQTRFO0lBQzVFLHVFQUF1RTtJQUN2RSxvQkFBb0I7SUFDcEIsbUJBQW1CO0lBQ25CLGdFQUFnRTtJQUNoRSxxRUFBcUU7SUFDckUsb0RBQW9EO0lBQ3BELGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixt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Q3hFLCtFQUErRTtJQUMvRSwyRUFBMkU7SUFDM0UsNEVBQTRFO0lBQzVFLDBCQUEwQjtJQUMxQixpQ0FBaUM7Q0FDekIsQ0FBQztBQUlYLHNGQUFzRjtBQUN0RixNQUFNLFVBQVUsbUJBQW1CLENBQUMsS0FBYTtJQUMvQyxPQUFRLG9CQUEwQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHJlbW90ZSAobm9uLXBsYXRmb3JtKSBhdWRpdCBBQ1RJT04gVk9DQUJVTEFSWS5cbiAqXG4gKiBLZXB0IGFwYXJ0IGZyb20gdGhlIGNsaWVudCB0aGF0IHNoaXBzIHRoZSBldmVudHMgKGBzZXJ2aWNlcy9yZW1vdGUtYXVkaXQtY2xpZW50LnRzYClcbiAqIGJlY2F1c2UgaXQgaXMgYW4gYWxsb3ctbGlzdCwgbm90IG1hY2hpbmVyeTogaXQgaXMgdGhlIHRoaW5nIGEgcmV2aWV3ZXIgcmVhZHNcbiAqIGVuZCB0byBlbmQgd2hlbiBkZWNpZGluZyB3aGV0aGVyIGEgc2VydmljZSBtYXkgZW1pdCBhIGdpdmVuIGFjdGlvbiwgYW5kIGl0IGlzXG4gKiB3aGF0IHBsYXRmb3JtJ3MgaW5nZXN0IHZhbGlkYXRlcyBhZ2FpbnN0LlxuICovXG5cblxuLyoqXG4gKiBUaGUgZXhhY3Qgc2V0IG9mIGF1ZGl0IGFjdGlvbnMgYSBOT04tUExBVEZPUk0gKHJlbW90ZSkgc2VydmljZSBpcyBwZXJtaXR0ZWQgdG9cbiAqIGVtaXQgdGhyb3VnaCBgUE9TVCAvYXVkaXQvZXZlbnRzYC4gVGhpcyBpcyB0aGUgU0lOR0xFIFNPVVJDRSDigJQgYFJlbW90ZUF1ZGl0QWN0aW9uYFxuICogaXMgZGVyaXZlZCBmcm9tIGl0LCBzbyB0aGUgdHlwZSBhbmQgdGhlIHJ1bnRpbWUgYWxsb3ctbGlzdCBjYW4gbmV2ZXIgZHJpZnQuXG4gKlxuICogU0VDVVJJVFk6IHBsYXRmb3JtJ3MgaW5nZXN0IHZhbGlkYXRlcyBgYWN0aW9uYCBhZ2FpbnN0IHRoaXMgc3Vic2V0ICh2aWFcbiAqIHtAbGluayBpc1JlbW90ZUF1ZGl0QWN0aW9ufSksIE5PVCB0aGUgZnVsbCBwbGF0Zm9ybSBgQXVkaXRBY3Rpb25gIHVuaW9uIOKAlCBhXG4gKiBgc2VydmljZToqYCB0b2tlbiBtdXN0IG5vdCBiZSBhYmxlIHRvIGZvcmdlIHBsYXRmb3JtLWF1dGhvcml0eSBldmVudHNcbiAqIChgYWRtaW4uc3VwZXJhZG1pbi5ncmFudGAsIGBvcmcub3duZXJzaGlwLnRyYW5zZmVyYCwgYHVzZXIubG9naW5gLCDigKYpLiBLZWVwXG4gKiB0aGlzIGxpc3QgZnJlZSBvZiBhbnkgcGxhdGZvcm0tb25seSBhY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBSRU1PVEVfQVVESVRfQUNUSU9OUyA9IFtcbiAgJ3BsdWdpbi5idWlsZC5jb21wbGV0ZWQnLFxuICAncGx1Z2luLmJ1aWxkLmZhaWxlZCcsXG4gICdwbHVnaW4uYnVpbGQudGltZW91dCcsXG4gIC8vIEEgdmVyc2lvbiBwZXJzaXN0ZWQgVU5TQ0FOTkVEIGJlY2F1c2UgdGhlIGJ1aWxkLXRpbWUgc2NhbiBjb3VsZCBub3QgcnVuIGFuZFxuICAvLyB0aGUgb3BlcmF0b3IgZXNjYXBlIGhhdGNoIGBQTFVHSU5fQUxMT1dfVU5TQ0FOTkVEYCBpcyBvbiAod2l0aG91dCBpdCB0aGVcbiAgLy8gYnVpbGQgZmFpbHMgYElNQUdFX1NDQU5fVU5BVkFJTEFCTEVgKS4gYGRldGFpbHNgIGNhcnJ5IG5hbWUvdmVyc2lvbi9kaWdlc3QuXG4gICdwbHVnaW4uc2Nhbi5za2lwcGVkJyxcbiAgLy8gRml4YWJsZSBDcml0aWNhbCBmaW5kaW5ncyB3ZXJlIEVYRU1QVEVEIGZyb20gdGhlIHBsYXRmb3JtIGZsb29yIGJ5IGFcbiAgLy8gYFBMVUdJTl9WVUxOX1dBSVZFUlNgIGVudHJ5LCBzbyBhIGJ1aWxkIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgZmFpbGVkXG4gIC8vIFBMVUdJTl9WVUxOX0dBVEUgd2FzIGFsbG93ZWQgdGhyb3VnaC4gVGhlIG90aGVyIGhhbGYgb2YgcGx1Z2luLnNjYW4uc2tpcHBlZDpcbiAgLy8gYm90aCBhcmUgb3BlcmF0b3IgZXNjYXBlIGhhdGNoZXMgdGhhdCBjaGFuZ2UgYSBnYXRlJ3MgdmVyZGljdCwgYW5kIGEgbWV0cmljXG4gIC8vIGFuZCBhIGxvZyBsaW5lIGFyZSBub3QgYSBkdXJhYmxlIHJlY29yZCBvZiBvbmUuIGBkZXRhaWxzYCBjYXJyeVxuICAvLyBuYW1lL3ZlcnNpb24vZGlnZXN0LCBob3cgbWFueSBmaW5kaW5ncyB3ZXJlIHdhaXZlZCBhbmQgd2hpY2ggcGFja2FnZXMuXG4gICdwbHVnaW4udnVsbi53YWl2ZWQnLFxuICAvLyBUaGUgbmlnaHRseSByZXNjYW4gRkxBR0dFRCBhIHN0b3JlZCB2ZXJzaW9uIChpdHMgZ2F0ZWQgQ3JpdGljYWwgZmluZGluZ3NcbiAgLy8gbm93IGV4Y2VlZCBQTFVHSU5fVlVMTl9NQVhfRklORElOR1Mg4oCUIGxvb2t1cCBhbmQgdGhlIHBpcGVsaW5lJ3Mgb3duZXJzIGFyZVxuICAvLyB3YXJuZWQgYXQgYGVycm9yYCBzZXZlcml0eSksIG9yIENMRUFSRUQgdGhhdCBmbGFnLiBCb3RoIGNoYW5nZSB3aGF0XG4gIC8vIHJlc29sdXRpb24gc2F5cyBhYm91dCBhIHZlcnNpb24gbm9ib2R5IHJlYnVpbHQsIG9uIG5vYm9keSdzIHJlcXVlc3QsIHNvIHRoZVxuICAvLyByZWNvcmQgb2YgV0hFTiBhbmQgV0hZIGxpdmVzIGluIHRoZSBoYXNoLWNoYWluZWQgbG9nIHJhdGhlciB0aGFuIG9ubHkgaW4gYVxuICAvLyBjb2x1bW4gdGhlIG5leHQgcmVzY2FuIG92ZXJ3cml0ZXMuIGBkZXRhaWxzYCBjYXJyeSBjb3VudHMsIHRoZSBnYXRlZFxuICAvLyBhZHZpc29yeSBpZHMgYW5kIHRoZSBpbWFnZSBkaWdlc3QuXG4gICdwbHVnaW4udnVsbi5mbGFnZ2VkJyxcbiAgJ3BsdWdpbi52dWxuLmNsZWFyZWQnLFxuICAvLyBQbHVnaW4gbGlmZWN5Y2xlIG11dGF0aW9ucyAoYXBpL3BsdWdpbiByb3V0ZSBoYW5kbGVycykg4oCUIHRoZSBkZXN0cnVjdGl2ZSAvXG4gIC8vIHB1Ymxpc2hpbmcgc3VyZmFjZSB0aGF0IGJ1aWxkcyBhbHJlYWR5IGF1ZGl0J3MgY291bnRlcnBhcnQ6IHJlZ2lzdHJ5IGRlbGV0ZSxcbiAgLy8gc291cmNlIHVwbG9hZCwgYW5kIGRlcGxveS10by1jbHVzdGVyLiBgdGFyZ2V0SWRgIGlzIHRoZSBwbHVnaW4gaWQuXG4gICdwbHVnaW4uZGVsZXRlJyxcbiAgJ3BsdWdpbi5yZXN0b3JlJyxcbiAgLy8gTWFudWFsIHB1cmdlOiBwZXJtYW5lbnQgaGFyZC1kZWxldGUgb2YgYSBzb2Z0LWRlbGV0ZWQgcGx1Z2luIHRvbWJzdG9uZSBvblxuICAvLyBkZW1hbmQgKGZpbmFsaXplcyB3aGF0IHRoZSByZXRlbnRpb24gc3dlZXAgd291bGQgb3RoZXJ3aXNlIGRvIGxhdGVyKS5cbiAgJ3BsdWdpbi5wdXJnZScsXG4gICdwbHVnaW4udXBkYXRlJyxcbiAgJ3BsdWdpbi51cGxvYWQnLFxuICAncGx1Z2luLmRlcGxveScsXG4gIC8vIFBsdWdpbiBidWxrIG11dGF0aW9ucyAoYXBpL3BsdWdpbiBidWxrLXBsdWdpbiByb3V0ZSkgKyBETFEgcHVyZ2UgKGRyb3BzIGFsbFxuICAvLyBkZWFkLWxldHRlcmVkIGJ1aWxkIGpvYnMsIGNyb3NzLW9yZywgc3lzYWRtaW4pLiBgZGV0YWlsc2AgY2FycmllcyBjb3VudHMuXG4gICdwbHVnaW4uYnVsay51cGRhdGUnLFxuICAncGx1Z2luLmJ1bGsuZGVsZXRlJyxcbiAgJ3BsdWdpbi5kbHEucHVyZ2UnLFxuICAvLyBCdWlsZCByZS1ydW5zIGZyb20gdGhlIHF1ZXVlLXRyaWFnZSBzdXJmYWNlOiByZS1lbnF1ZXVlIGEgRkFJTEVEIGJ1aWxkXG4gIC8vIChgcGx1Z2luLmJ1aWxkLnJldHJ5YCkgb3IgYSBkZWFkLWxldHRlcmVkIG9uZSAoYHBsdWdpbi5kbHEucmVwbGF5YCkuIEJvdGhcbiAgLy8gcmUtcnVuIGFuIGltYWdlIGJ1aWxkICsgcGx1Z2luIHBlcnNpc3Qgb24gdGhlIGNhbGxlcidzIGF1dGhvcml0eSwgc28gdGhleVxuICAvLyBhcmUgYXVkaXRlZCBtdXRhdGlvbnM7IGBhZmZlY3RlZE9yZ0lkYCBjYXJyaWVzIHRoZSBqb2IncyBvd25pbmcgb3JnLlxuICAncGx1Z2luLmJ1aWxkLnJldHJ5JyxcbiAgJ3BsdWdpbi5kbHEucmVwbGF5JyxcbiAgLy8gUGlwZWxpbmUgbXV0YXRpb25zIOKAlCBlbWl0dGVkIGJ5IGFwaS9waXBlbGluZSdzIHJvdXRlIGhhbmRsZXJzXG4gIC8vIChjcmVhdGUvdXBkYXRlL2RlbGV0ZSArIENvZGVQaXBlbGluZSBleGVjdXRpb24gdHJpZ2dlci9jYW5jZWwpIGFuZFxuICAvLyBwb3N0ZWQgdG8gcGxhdGZvcm0ncyBgUE9TVCAvYXVkaXQvZXZlbnRzYCBpbmdlc3QuXG4gICdwaXBlbGluZS5jcmVhdGUnLFxuICAncGlwZWxpbmUudXBkYXRlJyxcbiAgJ3BpcGVsaW5lLmRlbGV0ZScsXG4gICdwaXBlbGluZS5yZXN0b3JlJyxcbiAgLy8gTWFudWFsIHB1cmdlOiBwZXJtYW5lbnQgaGFyZC1kZWxldGUgb2YgYSBzb2Z0LWRlbGV0ZWQgcGlwZWxpbmUgL1xuICAvLyBwaXBlbGluZV90ZW1wbGF0ZSB0b21ic3RvbmUgb24gZGVtYW5kIChmaW5hbGl6ZXMgd2hhdCB0aGUgcmV0ZW50aW9uIHN3ZWVwXG4gIC8vIHdvdWxkIG90aGVyd2lzZSBkbyBsYXRlcikuIGB0YXJnZXRJZGAgaXMgdGhlIHB1cmdlZCBpZC5cbiAgJ3BpcGVsaW5lLnB1cmdlJyxcbiAgJ3BpcGVsaW5lX3RlbXBsYXRlLmNyZWF0ZScsXG4gICdwaXBlbGluZV90ZW1wbGF0ZS51cGRhdGUnLFxuICAncGlwZWxpbmVfdGVtcGxhdGUuZGVsZXRlJyxcbiAgJ3BpcGVsaW5lX3RlbXBsYXRlLnJlc3RvcmUnLFxuICAncGlwZWxpbmVfdGVtcGxhdGUucHVyZ2UnLFxuICAncGlwZWxpbmUuZXhlY3V0aW9uLnN0YXJ0JyxcbiAgJ3BpcGVsaW5lLmV4ZWN1dGlvbi5jYW5jZWwnLFxuICAvLyBDb2RlUGlwZWxpbmUgQVJOLXJlZ2lzdHJ5IGNvbmZpZyAoYXBpL3BpcGVsaW5lIHJlZ2lzdHJ5IHJvdXRlKSDigJQgcmVnaXN0ZXJpbmcgL1xuICAvLyBkZXJlZ2lzdGVyaW5nIHRoZSBleHRlcm5hbCBDb2RlUGlwZWxpbmUgdGhhdCBiYWNrcyBhIHBpcGVsaW5lIChkZXBsb3ktYWZmZWN0aW5nKS5cbiAgJ3BpcGVsaW5lLnJlZ2lzdHJ5LnJlZ2lzdGVyJyxcbiAgJ3BpcGVsaW5lLnJlZ2lzdHJ5LmRlcmVnaXN0ZXInLFxuICAvLyBRdW90YSBhZG1pbmlzdHJhdGlvbiAoYXBpL3F1b3RhKSDigJQgYSBzdXBlcmFkbWluIHJlc2V0dGluZyBhbiBvcmcncyB1c2FnZVxuICAvLyBjb3VudGVyIG9yIGVkaXRpbmcgaXRzIHRpZXIgbGltaXRzLiBgYWZmZWN0ZWRPcmdJZGAgaXMgdGhlIG9yZyBjaGFuZ2VkO1xuICAvLyBgZGV0YWlsc2AgY2FycmllcyB0aGUgcXVvdGFUeXBlICsgb2xkL25ldyB2YWx1ZS5cbiAgJ3F1b3RhLnJlc2V0JyxcbiAgJ3F1b3RhLmxpbWl0LnVwZGF0ZScsXG4gIC8vIEEgc3VwZXJhZG1pbiBkZWxldGluZyBhbiBvcmcncyBlbnRpcmUgcXVvdGEgZG9jdW1lbnQuXG4gICdxdW90YS5kZWxldGUnLFxuICAvLyBBbiBhY2NvdW50J3MgcXVvdGEgdGhyZXNob2xkLW5vdGljZSBzZXR0aW5ncyAob3B0LW91dCArIHRoZVxuICAvLyBgcXVvdGEudGhyZXNob2xkYCB3ZWJob29rIFVSTCkg4oCUIHdoZXJlIHVzYWdlIHdhcm5pbmdzIGdvLlxuICAncXVvdGEubm90aWNlX3NldHRpbmdzLnVwZGF0ZScsXG4gIC8vIENvbXBsaWFuY2UgYWRtaW5pc3RyYXRpb24gKGFwaS9jb21wbGlhbmNlKSDigJQgdGhlIGVuZm9yY2VtZW50LXBvc3R1cmUgc3VyZmFjZS5cbiAgLy8gQXBwcm92aW5nL3Jldm9raW5nIGFuIGV4ZW1wdGlvbiwgdG9nZ2xpbmcvYXV0aG9yaW5nL2RlbGV0aW5nIGEgcnVsZSxcbiAgLy8gYXV0aG9yaW5nL2RlbGV0aW5nIGEgcG9saWN5LCBtYW5hZ2luZyBzY2FuIHNjaGVkdWxlcywgYXBwbHlpbmcgYSB0ZW1wbGF0ZSxcbiAgLy8gb3IgY2FuY2VsbGluZyBhIHJ1bm5pbmcgc2Nhbi4gYHRhcmdldElkYCBpcyB0aGUgcnVsZS9wb2xpY3kvZXhlbXB0aW9uL3NjYW4gaWQuXG4gICdjb21wbGlhbmNlLmV4ZW1wdGlvbi5hcHByb3ZlJyxcbiAgJ2NvbXBsaWFuY2UuZXhlbXB0aW9uLnJldm9rZScsXG4gIC8vIEEgbWVtYmVyIEZJTElORyBhbiBleGVtcHRpb24gcmVxdWVzdCAoc2luZ2xlIG9yIGJ1bGs7IG1ldGFkYXRhIG9ubHksIG5ldmVyXG4gIC8vIHRoZSByZWFzb24pIGFuZCBhbiBhZG1pbiBSRUpFQ1RJTkcgb25lIOKAlCB0aGUgb3RoZXIgaGFsdmVzIG9mIHRoZVxuICAvLyB0d28tcGVyc29uIGRlY2lzaW9uIHdob3NlIGFwcHJvdmFsIGlzIHJlY29yZGVkIGFib3ZlLlxuICAnY29tcGxpYW5jZS5leGVtcHRpb24ucmVxdWVzdCcsXG4gICdjb21wbGlhbmNlLmV4ZW1wdGlvbi5yZWplY3QnLFxuICAnY29tcGxpYW5jZS5ydWxlLnRvZ2dsZScsXG4gICdjb21wbGlhbmNlLnJ1bGUuY3JlYXRlJyxcbiAgJ2NvbXBsaWFuY2UucnVsZS51cGRhdGUnLFxuICAnY29tcGxpYW5jZS5ydWxlLmRlbGV0ZScsXG4gICdjb21wbGlhbmNlLnJ1bGUucmVzdG9yZScsXG4gIC8vIE1hbnVhbCBvbi1kZW1hbmQgaGFyZC1kZWxldGUgKFBVUkdFKSBvZiBhIHNvZnQtZGVsZXRlZCBydWxlL3BvbGljeSB0b21ic3RvbmUg4oCUXG4gIC8vIHRoZSBjYWxsZXItaW5pdGlhdGVkIGNvdW50ZXJwYXJ0IHRvIHRoZSByZXRlbnRpb24gc3dlZXAncyBhdXRvLXB1cmdlLiBEZXN0cm95c1xuICAvLyB0aGUgdG9tYnN0b25lIHBlcm1hbmVudGx5LCBzbyBpdCBjYXJyaWVzIHRoZSBkdXJhYmxlLCB0YW1wZXItZXZpZGVudCB0cmFpbC5cbiAgJ2NvbXBsaWFuY2UucnVsZS5wdXJnZScsXG4gICdjb21wbGlhbmNlLnBvbGljeS5jcmVhdGUnLFxuICAnY29tcGxpYW5jZS5wb2xpY3kudXBkYXRlJyxcbiAgJ2NvbXBsaWFuY2UucG9saWN5LmRlbGV0ZScsXG4gICdjb21wbGlhbmNlLnBvbGljeS5yZXN0b3JlJyxcbiAgJ2NvbXBsaWFuY2UucG9saWN5LnB1cmdlJyxcbiAgJ2NvbXBsaWFuY2Uuc2Nhbi1zY2hlZHVsZS5jcmVhdGUnLFxuICAnY29tcGxpYW5jZS5zY2FuLXNjaGVkdWxlLnVwZGF0ZScsXG4gICdjb21wbGlhbmNlLnNjYW4tc2NoZWR1bGUuZGVsZXRlJyxcbiAgJ2NvbXBsaWFuY2UudGVtcGxhdGUuYXBwbHknLFxuICAvLyBMYXVuY2hpbmcgYW4gb3JnLXdpZGUgcmUtZXZhbHVhdGlvbiAodGhlIGNvdW50ZXJwYXJ0IHRvIGAuY2FuY2VsYCkg4oCUIGl0XG4gIC8vIHBlcnNpc3RzIGEgc2NhbiBhbmQgY2FuIGJsb2NrIGVudGl0aWVzIHRoYXQgcGFzc2VkIGJlZm9yZS5cbiAgJ2NvbXBsaWFuY2Uuc2Nhbi5jcmVhdGUnLFxuICAnY29tcGxpYW5jZS5zY2FuLmNhbmNlbCcsXG4gIC8vIEEgc2NhbidzIHRlcm1pbmFsIE9VVENPTUUgKGNvbXBsZXRlZCDihpIgc3VjY2VzcyB3aXRoIHRoZSBwYXNzL3dhcm4vYmxvY2tcbiAgLy8gY291bnRzLCBmYWlsZWQg4oaSIGZhaWx1cmUpLiBTY2hlZHVsZWQgc2NhbnMgYWxzbyB3cml0ZSBgY29tcGxpYW5jZS5zY2FuLmNyZWF0ZWBcbiAgLy8gKGBkZXRhaWxzLnRyaWdnZXJlZEJ5OiAnc2NoZWR1bGVkJ2ApLCBhdHRyaWJ1dGVkIHRvIHRoZSBzY2hlZHVsZSdzIGF1dGhvci5cbiAgJ2NvbXBsaWFuY2Uuc2Nhbi5jb21wbGV0ZScsXG4gIC8vIFBsYXRmb3JtIG9uYm9hcmRpbmcgc3Vic2NyaWJpbmcgYSBuZXcgb3JnIHRvIGV2ZXJ5IHB1Ymxpc2hlZCBydWxlXG4gIC8vIChJTkFDVElWRSBzdWJzY3JpcHRpb25zOyBgZGV0YWlscy5zdWJzY3JpYmVkYCBpcyB0aGUgY291bnQpLlxuICAnY29tcGxpYW5jZS5zdWJzY3JpcHRpb24uYXV0by1zdWJzY3JpYmUnLFxuICAvLyBQZXItb3JnIGNvbXBsaWFuY2Ugbm90aWZpY2F0aW9uIHNldHRpbmdzOiByZWNpcGllbnRzICsgdGhlIG91dGJvdW5kIHdlYmhvb2tcbiAgLy8gVVJML3NlY3JldC4gQmVhcmVyLWVxdWl2YWxlbnQgY29uZmlnIHRoYXQgcmVkaXJlY3RzIHZpb2xhdGlvbiBub3RpY2VzLCBzbyBhXG4gIC8vIGNoYW5nZSBjYXJyaWVzIHRoZSBkdXJhYmxlIHRyYWlsIChuZXZlciB0aGUgc2VjcmV0IGl0c2VsZikuXG4gICdjb21wbGlhbmNlLm5vdGlmaWNhdGlvbi1wcmVmZXJlbmNlLnVwZGF0ZScsXG4gIC8vIEltYWdlLXJlZ2lzdHJ5IGRlc3RydWN0aXZlIG9wcyAoYXBpL2ltYWdlLXJlZ2lzdHJ5KSDigJQgZ2FyYmFnZS1jb2xsZWN0aW9uXG4gIC8vIHN3ZWVwcyBhbmQgZXhwbGljaXQgaW1hZ2UvdGFnIGRlbGV0ZXMuXG4gICdyZWdpc3RyeS5nYycsXG4gICdyZWdpc3RyeS5pbWFnZS5kZWxldGUnLFxuICAvLyBDcm9zcy1yZXBvIHRhZy9pbWFnZSBjb3B5IChhcGkvaW1hZ2UtcmVnaXN0cnkgUE9TVCAvYXBpL2ltYWdlcy9jb3B5KS4gQVxuICAvLyBjcm9zcy10ZW5hbnQgY29weSBtb3ZlcyBkYXRhIGFjcm9zcyBjdXN0b21lciBib3VuZGFyaWVzLCBzbyBpdCBuZWVkcyB0aGVcbiAgLy8gZHVyYWJsZSwgdGFtcGVyLWV2aWRlbnQgdHJhaWwg4oCUIG5vdCBqdXN0IHRoZSBMb2tpIG9wZXJhdG9yIGxpbmUuXG4gICdyZWdpc3RyeS5pbWFnZS5jb3B5JyxcbiAgLy8gQSBwbHVnaW4gaW1hZ2Ugc2lnbmVkICsgU0JPTS1hdHRlc3RlZCBieSB0aGUgcGxhdGZvcm0ncyBwbHVnaW4tc2lnbmluZyBrZXlcbiAgLy8gKGFwaS9pbWFnZS1yZWdpc3RyeSBQT1NUIC9pbnRlcm5hbC9wbHVnaW4tc2lnbmF0dXJlcywgY2FsbGVkIGJ5IHRoZSBwbHVnaW5cbiAgLy8gYnVpbGQgd29ya2VyKS4gVGhlIGtleSBpcyB3aGF0IHN5bnRoIHRydXN0cywgc28gZXZlcnkgdXNlIGlzIG9uIHRoZSB0cmFpbC5cbiAgJ3JlZ2lzdHJ5LmltYWdlLnNpZ24nLFxuICAvLyBUaGUgRG9ja2VyIHRva2VuIGVuZHBvaW50IG1pbnRpbmcgYSByZWdpc3RyeSB0b2tlbiB0aGF0IEdSQU5UUyBhY2Nlc3NcbiAgLy8gKGBkZXRhaWxzLmdyYW50ZWRgOiByZXBvICsgYWN0aW9uczsgdGhlIHNjb3BlLWxlc3MgYGRvY2tlciBsb2dpbmAgcHJvYmUgaXNcbiAgLy8gbm90IHJlY29yZGVkKSDigJQgYW5kLCBhcyBvdXRjb21lIGZhaWx1cmUsIGEgcmVmdXNlZCBjcmVkZW50aWFsIChoYXNoZWRcbiAgLy8gdXNlcm5hbWUsIGNyZWRlbnRpYWwga2luZCBvbmx5KS5cbiAgJ3JlZ2lzdHJ5LnRva2VuLmlzc3VlJyxcbiAgLy8gQSBwdXNoIGNyZWRlbnRpYWwgbWludGVkIGZvciBvbmUgYW5vbnltb3VzIHN1Ym1pc3Npb24nc1xuICAvLyBgcXVhcmFudGluZS88c3VibWlzc2lvbklkPmAgcmVwbyAoZXhwaXJ5ICsgVFRMLCBuZXZlciB0aGUgc2VjcmV0KS5cbiAgJ3JlZ2lzdHJ5LnF1YXJhbnRpbmUuY3JlZGVudGlhbC5taW50JyxcbiAgLy8gTWVzc2FnaW5nIChhcGkvbWVzc2FnZSkg4oCUIGFkbWluIEJST0FEQ0FTVCBhbm5vdW5jZW1lbnRzICsgZGVzdHJ1Y3RpdmVcbiAgLy8gZGVsZXRlcy4gMToxIHVzZXIgbWVzc2FnZXMgYXJlIGludGVudGlvbmFsbHkgTk9UIGF1ZGl0ZWQgKG5vaXNlICsgdGhleSB3b3VsZFxuICAvLyBwdWxsIHByaXZhdGUgY29udGVudCBpbnRvIHRoZSB0cmFpbCkuIGBkZXRhaWxzYCBjYXJyeSBtZXRhZGF0YSBvbmx5XG4gIC8vIChzdWJqZWN0L3R5cGUvc2NvcGUpLCBORVZFUiBtZXNzYWdlIGJvZHkgY29udGVudC5cbiAgJ21lc3NhZ2UuYW5ub3VuY2VtZW50LmNyZWF0ZScsXG4gICdtZXNzYWdlLmRlbGV0ZScsXG4gICdtZXNzYWdlLnJlc3RvcmUnLFxuICAvLyBNYW51YWwgb24tZGVtYW5kIFBVUkdFIChwZXJtYW5lbnQgaGFyZC1kZWxldGUpIG9mIGFuIGFscmVhZHktc29mdC1kZWxldGVkXG4gIC8vIG1lc3NhZ2UgdG9tYnN0b25lIOKAlCB0aGUgZGVzdHJ1Y3RpdmUgZmluYWxpemVyIHRoZSByZXRlbnRpb24gc3dlZXAgd291bGRcbiAgLy8gb3RoZXJ3aXNlIHBlcmZvcm0gYXQgdGhlIHB1cmdlIGRlYWRsaW5lLiBgZGV0YWlsc2AgY2FycnkgbWV0YWRhdGEgb25seS5cbiAgJ21lc3NhZ2UucHVyZ2UnLFxuICAvLyBBbiBhdXRob3IncyBlZGl0IG9mIGEgc2VudCBtZXNzYWdlIChhbmQgcmVmdXNlZCBhdHRlbXB0cywgYXMgZmFpbHVyZXMpLlxuICAvLyBgZGV0YWlsc2AgY2FycnkgdGhlIG5ldyBib2R5J3MgTEVOR1RIIG9ubHkg4oCUIG5laXRoZXIgc2lkZSBvZiB0aGUgZWRpdC5cbiAgJ21lc3NhZ2UudXBkYXRlJyxcbiAgLy8gQSBtZXNzYWdlIGF0dGFjaG1lbnQgc3RvcmVkIChnZW5lcmFsIG9yIHN1cHBvcnQgbW91bnQsIGBkZXRhaWxzLnN1cmZhY2VgKS5cbiAgLy8gVHlwZSArIHNpemUgb25seSDigJQgbmV2ZXIgdGhlIGJ5dGVzLCBhbmQgbm90IHRoZSB1c2VyLWNob3NlbiBmaWxlbmFtZS5cbiAgJ21lc3NhZ2UuYXR0YWNobWVudC51cGxvYWQnLFxuICAvLyBBIFNZU1RFTSBub3RpZmljYXRpb24gZHJvcHBlZCBpbnRvIGFuIG9yZydzIGluYm94IGJ5IGFuIGludGVybmFsIHNlcnZpY2VcbiAgLy8gKFBPU1QgL21lc3NhZ2VzL2ludGVybmFsL25vdGlmeSk7IGBkZXRhaWxzLmNhbGxlcmAgbmFtZXMgdGhlIHNlcnZpY2UuXG4gICdtZXNzYWdlLm5vdGlmeS5pbnRlcm5hbCcsXG4gIC8vIFRoZSBwbGF0Zm9ybSBvcmctZGVsZXRlIGNhc2NhZGUgcmVjbGFpbWluZyBhbiBvcmcncyBhdHRhY2htZW50IEJMT0JTIOKAlFxuICAvLyBgZGV0YWlscy5ibG9ic0RlbGV0ZWRgLCBvciBhIGZhaWx1cmUgcm93IHdoZW4gdGhlIHJlY2xhaW0gZGlkIG5vdCBjb21wbGV0ZS5cbiAgJ21lc3NhZ2Uub3JnLnB1cmdlJyxcbiAgLy8gU3VwcG9ydCBjYXNlcyAoYXBpL21lc3NhZ2UpLiBEaXN0aW5jdCBmcm9tIHRoZSBgbWVzc2FnZS4qYCBmYW1pbHkgYWJvdmVcbiAgLy8gYmVjYXVzZSBhIGNhc2UgaXMgbm90IGFuIG9yZGluYXJ5IG1lc3NhZ2U6IGl0IGNhcnJpZXMgYSByZXNwb25zZS10aW1lXG4gIC8vIGNvbW1pdG1lbnQsIHNvIFdITyByYWlzZWQgaXQgYW5kIFdIRU4gd2UgZmlyc3QgYW5zd2VyZWQgYXJlIHRoZSBmYWN0cyBhXG4gIC8vIGRpc3B1dGUgdHVybnMgb24uIGBkZXRhaWxzYCBjYXJyeSB0aGUgY2FzZSBudW1iZXIsIGxldmVsIGFuZCBzZXZlcml0eSDigJRcbiAgLy8gbWV0YWRhdGEgb25seSwgbmV2ZXIgdGhlIGJvZHkgb2Ygd2hhdCBhIGN1c3RvbWVyIHdyb3RlLlxuICAvL1xuICAvLyBUd28gb2YgdGhlIG5pbmUgcGxhbm5lZCBzdXBwb3J0IGFjdGlvbnMgYXJlIGhlcmUsIGFuZCBvbmx5IHR3bzogdGhlc2UgYXJlXG4gIC8vIHRoZSBvbmVzIHdpdGggcmVhbCBlbWl0dGVycyB0b2RheS4gVGhlIHJlc3QgKGBzdGF0dXNgLCBgc2V2ZXJpdHlgLFxuICAvLyBgYXNzaWduYCwgYHRyYW5zZmVyYCwgYG5vdGVgLCBgcmVhZGApIGxhbmQgV0lUSCB0aGUgcm91dGVzIHRoYXQgZW1pdCB0aGVtIOKAlFxuICAvLyBhIGRlY2xhcmVkIGFjdGlvbiBub3RoaW5nIGVtaXRzIGlzIGRlYWQgdm9jYWJ1bGFyeSwgYW5kIHRoZSBwYXJpdHkgdGVzdFxuICAvLyB3b3VsZCB0aGVuIGZvcmNlIGEgZG9jcyByb3cgZGVzY3JpYmluZyBhbiBldmVudCB0aGF0IG5ldmVyIGZpcmVzLlxuICAvL1xuICAvLyBgc3VwcG9ydC5jYXNlLnJlYWRgIHdpbGwgbWF0dGVyIG1vc3Qgb2YgYWxsIHdoZW4gaXQgYXJyaXZlczogaXQgaXMgdGhlIG9ubHlcbiAgLy8gcmVjb3JkIHRoYXQgc29tZW9uZSBhdCB0aGUgdmVuZG9yIG9wZW5lZCBhIGN1c3RvbWVyJ3MgY2FzZS5cbiAgJ3N1cHBvcnQuY2FzZS5vcGVuJyxcbiAgJ3N1cHBvcnQuY2FzZS5yZXBseScsXG4gIC8vIFRoZSB3b3JrZmxvdyBtdXRhdGlvbnMuIEVhY2ggaXMgYXVkaXRlZCBiZWNhdXNlIGVhY2ggbW92ZXMgYSBjYXNlJ3NcbiAgLy8gcmVsYXRpb25zaGlwIHRvIGl0cyByZXNwb25zZSBjb21taXRtZW50OiBzdGF0dXMgc3RvcHMgb3IgcmVzdGFydHMgdGhlXG4gIC8vIGNsb2NrLCBzZXZlcml0eSBjaGFuZ2VzIHdoaWNoIHRhcmdldCBhcHBsaWVzLCBhbmQgdGhlIHR3byBvd25lcnNoaXBcbiAgLy8gYWN0aW9ucyBkZWNpZGUgV0hPIGlzIGFjY291bnRhYmxlIGZvciBtZWV0aW5nIGl0LiBBIHNpbGVudCBjaGFuZ2Ugb2Ygb3duZXJcbiAgLy8gaXMgaG93IGFjY291bnRhYmlsaXR5IGZvciBhIG1pc3NlZCB0YXJnZXQgZGlzYXBwZWFycy5cbiAgJ3N1cHBvcnQuY2FzZS5zdGF0dXMnLFxuICAnc3VwcG9ydC5jYXNlLnNldmVyaXR5JyxcbiAgJ3N1cHBvcnQuY2FzZS5hc3NpZ24nLFxuICAnc3VwcG9ydC5jYXNlLnRyYW5zZmVyJyxcbiAgLy8gT04tQ0FMTC4gVGhlIHByb3ZpZGVyIG93bnMgdGhlIHJvdGEsIHRoZSBlc2NhbGF0aW9uIGFuZCB0aGUgY29udGFjdFxuICAvLyBtZXRob2RzOyB3aGF0IGl0IGNhbm5vdCBvd24gaXMgYW4gYXVkaXRhYmxlIGFuc3dlciB0byBcIndobyBwaWNrZWQgdGhpcyB1cFxuICAvLyBhdCAwMzoxNFwiLiBBIGNsaWNrIG9uIGEgbGluayBpbiB0aGVpciBVSSBpcyBub3QgYW4gaWRlbnRpdHkgdGhpcyBzeXN0ZW0gY2FuXG4gIC8vIGF0dGVzdCB0bywgc28gdGhlaXIgaW5jaWRlbnQgc3RhdGUgY2hhbmdlIGlzIHJlbGF5ZWQgaGVyZSBhbmQgcmVjb3JkZWRcbiAgLy8gYWdhaW5zdCB0aGUgYWdlbnQgdGhleSBuYW1lLiBUaGUgaGFzaCBjaGFpbiBpcyB0aGUgcG9pbnQ6IGEgcG9zdC1pbmNpZGVudFxuICAvLyByZXZpZXcgbmVlZHMgdGhlIGFjayB0byBiZSBldmlkZW5jZSByYXRoZXIgdGhhbiBhIHNjcmVlbnNob3QuXG4gIC8vXG4gIC8vIGBlc2NhbGF0ZWRgIGlzIGF1ZGl0ZWQgc2VwYXJhdGVseSBiZWNhdXNlIGl0IGlzIHRoZSByZWNvcmQgdGhhdCB0aGUgRklSU1RcbiAgLy8gcmVzcG9uZGVyIGRpZCBub3QgYW5zd2VyIOKAlCB0aGUgZmFjdCBhIHJvdGEgaXMgYWRqdXN0ZWQgb24sIGFuZCB0aGUgb25lIG1vc3RcbiAgLy8gbGlrZWx5IHRvIGJlIGRpc3B1dGVkIGxhdGVyLlxuICAnc3VwcG9ydC5vbmNhbGwuYWNrbm93bGVkZ2VkJyxcbiAgJ3N1cHBvcnQub25jYWxsLmVzY2FsYXRlZCcsXG4gIC8vIFRoZSB0ZXN0IHBhZ2UuIEF1ZGl0ZWQgYmVjYXVzZSBpdCBSSU5HUyBBIFBIT05FOiB3aG9ldmVyIGl0IHdha2VzIGlzXG4gIC8vIGVudGl0bGVkIHRvIGEgcmVjb3JkIG9mIHdobyBjYXVzZWQgdGhhdCwgYXQgd2hhdGV2ZXIgaG91ciBpdCB3YXMuXG4gICdzdXBwb3J0Lm9uY2FsbC50ZXN0JyxcbiAgLy8gVGhlIHBlci1jYXNlIHN3ZWVwIHBhZ2luZyB0aGUgcm90YSBmb3IgYSBwcmVtaXVtIGNhc2UgbmVhcmluZyBpdHMgdGFyZ2V0LlxuICAvLyBSZWNvcmRlZCBvbmNlLCBvbiB0aGUgdGljayB0aGUgY2FzZSBFTlRFUkVEIHRoZSB3aW5kb3cg4oCUIHRoZSBzd2VlcCByZS1zZW5kc1xuICAvLyB0aGUgcGFnZSBldmVyeSB0aWNrLCBhbmQgdHdlbnR5LWZvdXIgcm93cyBmb3Igb25lIHBhZ2Ugd291bGQgYmUgbm9pc2UuXG4gICdzdXBwb3J0Lm9uY2FsbC5wYWdlZCcsXG4gIC8vIFRoZSB0d28gQ09OVEFDVCBhY3Rpb25zIChwbGF0Zm9ybSkuIE5vdCBjYXNlIGV2ZW50cyDigJQgZW50aXRsZW1lbnQgZXZlbnRzOlxuICAvLyBlYWNoIG9uZSBjaGFuZ2VzIHdobyBpbiBhbiBvcmcgaXMgYWJsZSB0byBjb21taXQgdXMgdG8gYSByZXNwb25zZSB0YXJnZXQgYXRcbiAgLy8gYWxsLCBhbmQgZGVzaWduYXRpbmcgc3BlbmRzIGEgc2xvdCBvZiBhIFBBSUQsIGFjY291bnQtcG9vbGVkIGFsbG93YW5jZS4gVGhlXG4gIC8vIHJldm9rZSBjYXJyaWVzIHRoZSBjb3VudCBvZiBvcGVuIGNhc2VzIGl0IGxlZnQgYmVoaW5kLCBzbyBhbiBvcnBoYW5lZCBjYXNlXG4gIC8vIGlzIGEgcmVjb3JkZWQgZmFjdCByYXRoZXIgdGhhbiBzb21ldGhpbmcgZGlzY292ZXJlZCBsYXRlci5cbiAgJ3N1cHBvcnQuY29udGFjdC5kZXNpZ25hdGUnLFxuICAnc3VwcG9ydC5jb250YWN0LnJldm9rZScsXG4gIC8vIFRoZSBwcmVtaXVtIFVQR1JBREUsIGJvdGggZGlyZWN0aW9ucy4gU2VwYXJhdGUgYWN0aW9ucyBmcm9tIGRlc2lnbmF0aW9uXG4gIC8vIGJlY2F1c2UgdGhleSBhbnN3ZXIgdG8gYSBkaWZmZXJlbnQgY2FwIGFuZCBjYXJyeSBhIGRpZmZlcmVudCBmYWN0OiB3aG8gd2FzXG4gIC8vIGVudGl0bGVkIHRvIDI0eDcgY292ZXJhZ2UsIGFuZCB3aGVuLiBBIHJlc3BvbnNlLXRpbWUgZGlzcHV0ZSBvdmVyIGFuXG4gIC8vIG91dC1vZi1ob3VycyBjYXNlIHR1cm5zIG9uIGV4YWN0bHkgdGhhdC5cbiAgJ3N1cHBvcnQuY29udGFjdC51cGdyYWRlJyxcbiAgJ3N1cHBvcnQuY29udGFjdC5kb3duZ3JhZGUnLFxuICAvLyBTdGFmZiBub3RlcyBvbiBhIGNhc2UuIEF1ZGl0ZWQgYmVjYXVzZSBhIG5vdGUgaXMgdGhlIHZlbmRvcidzIGludGVybmFsXG4gIC8vIGFzc2Vzc21lbnQgb2YgYSBjdXN0b21lciBhbmQgdGhlIG9ubHkgc3VyZmFjZSBvbiBhIGNhc2UgdGhlIHRlbmFudCBtdXN0XG4gIC8vIG5ldmVyIHNlZTsgdGhlIHRyYWlsIGNhcnJpZXMgTUVUQURBVEEgT05MWSAoY2FzZSBudW1iZXIsIG5vdGUgaWQsIGxlbmd0aClcbiAgLy8gYW5kIG5ldmVyIHRoZSBib2R5LCBzaW5jZSB0aGUgY2VudHJhbCB0cmFpbCBpcyByZWFkIGZhciBtb3JlIHdpZGVseSB0aGFuXG4gIC8vIHRoZSBzdXBwb3J0IHF1ZXVlIGlzLlxuICAnc3VwcG9ydC5jYXNlLm5vdGUnLFxuICAvLyBUaGUgY2FubmVkLXJlcGx5IGxpYnJhcnkuIE9ORSBhY3Rpb24gZm9yIGNyZWF0ZS9lZGl0L3JldGlyZSByYXRoZXIgdGhhblxuICAvLyB0aHJlZSwgYmVjYXVzZSB0aGUgdHJhaWwncyBxdWVzdGlvbiBoZXJlIGlzIFwid2hvIGNoYW5nZWQgdGhlIHdvcmRpbmcgdGhlXG4gIC8vIGRlc2sgc2VuZHMgY3VzdG9tZXJzXCIsIG5vdCB3aGljaCB2ZXJiIHRoZXkgdXNlZCDigJQgYGRldGFpbHNgIGNhcnJpZXMgdGhhdC5cbiAgLy8gU3lzdGVtLXdpZGUgcmF0aGVyIHRoYW4gcGVyLXRlbmFudCwgc28gdGhlc2Ugcm93cyBuYW1lIG5vIGFmZmVjdGVkIG9yZy5cbiAgJ3N1cHBvcnQuY2FubmVkLndyaXRlJyxcbiAgLy8gQmlsbGluZyAoYXBpL2JpbGxpbmcpIOKAlCBzdWJzY3JpcHRpb24gKyBlbnRpdGxlbWVudCBtdXRhdGlvbnMsIG1pcnJvcmVkIHRvIHRoZVxuICAvLyBjZW50cmFsIGF1ZGl0IHRyYWlsICh0aGVzZSBhbHNvIHdyaXRlIHRvIHRoZSBzZXJ2aWNlLWxvY2FsIGJpbGxpbmdfZXZlbnRzXG4gIC8vIGNvbGxlY3Rpb24pLiBgZGV0YWlsc2AgY2FycnkgcGxhbi90aWVyL2FkZG9uIGlkcyBvbmx5IOKAlCBuZXZlciBjYXJkL3BheW1lbnRcbiAgLy8gc2VjcmV0cyBvciBhbiBBV1MgYWNjb3VudCBpZC5cbiAgLy8gU3Vic2NyaXB0aW9uIGxpZmVjeWNsZSBhIENVU1RPTUVSIGRyaXZlcyAodGhlIGFkbWluIGNvdW50ZXJwYXJ0IGlzXG4gIC8vIGBiaWxsaW5nLnRpZXIub3ZlcnJpZGVgKTogc2VsZi1zZXJ2ZSBjcmVhdGUgKGRpcmVjdCBvciBNYXJrZXRwbGFjZSBjbGFpbSksXG4gIC8vIHBsYW4vaW50ZXJ2YWwgY2hhbmdlLCBjYW5jZWwtYXQtcGVyaW9kLWVuZCwgdW5kby1jYW5jZWwsIGNhc2NhZGUgZGVsZXRlLlxuICAnYmlsbGluZy5zdWJzY3JpcHRpb24uY3JlYXRlJyxcbiAgJ2JpbGxpbmcuc3Vic2NyaXB0aW9uLnVwZGF0ZScsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi5yZWFjdGl2YXRlJyxcbiAgJ2JpbGxpbmcuc3Vic2NyaXB0aW9uLmNhbmNlbCcsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi5kZWxldGUnLFxuICAnYmlsbGluZy50aWVyLm92ZXJyaWRlJyxcbiAgLy8gQSBORUdPVElBVEVEIHN1cHBvcnQgc2l6ZSBmbG9vciByZXBsYWNpbmcgdGhlIGNvbXB1dGVkIHJhbXAuIFN5c3RlbS1vcmdcbiAgLy8gb25seSwgYW5kIGF1ZGl0ZWQgd2l0aCB0aGUgYWdyZWVkIFBSSUNFIGFuZCB0aGUgYWdyZWVkIFNFQVQgQ09VTlQgdG9nZXRoZXI6XG4gIC8vIGEgZGlzcHV0ZSBhYm91dCB3aGF0IHdhcyBzaWduZWQgZm9yIHR1cm5zIG9uIHRoYXQgcGFpciwgYW5kIHRoZSBwcmljZSBhbG9uZVxuICAvLyBjYW5ub3QgYW5zd2VyIFwiYXQgd2hhdCBzY2FsZVwiLlxuICAnYmlsbGluZy5zdXBwb3J0LWZsb29yLm92ZXJyaWRlJyxcbiAgLy8gQSBHUkFOVEVEIG9uZS10aW1lIHN1cHBvcnQgaW5jaWRlbnQg4oCUIGEgY29tbWVyY2lhbCBjb25jZXNzaW9uLCBub3QgYSBzYWxlLlxuICAvLyBUaGVyZSBpcyBkZWxpYmVyYXRlbHkgbm8gcHVyY2hhc2UgcGF0aDogbW9udGhseSBzdXBwb3J0IGNhbmNlbHMgZnJlZWx5LCBzb1xuICAvLyBhbiBpbmNpZGVudCBwcmljZWQgYWJvdmUgYSBtb250aCBpcyBkb21pbmF0ZWQgYW5kIG9uZSBiZWxvdyBpdCBsb3NlcyBtb25leS5cbiAgLy8gVGhlIHJvdyBjYXJyaWVzIHRoZSBjb3VudCBhbmQgdGhlIHJlc3VsdGluZyBiYWxhbmNlLCB3aGljaCBpcyB3aGF0IGEgbGF0ZXJcbiAgLy8gcmV2aWV3IG9mIFwid2hvIGdhdmUgd2hhdCBhd2F5XCIgbmVlZHMuXG4gICdiaWxsaW5nLnN1cHBvcnQtaW5jaWRlbnQuZ3JhbnQnLFxuICAvLyBPcGVyYXRvci1vbmx5IHJlc2VlZCBvZiB0aGUgaW52b2ljZSBsZWRnZXIgZnJvbSB0aGUgcGF5bWVudCBwcm92aWRlcidzXG4gIC8vIGhpc3RvcnkgKFBPU1QgL2JpbGxpbmcvYWRtaW4vYmFja2ZpbGwpIOKAlCBtdXRhdGVzIGZpbmFuY2UgZGF0YSBmbGVldC13aWRlLlxuICAnYmlsbGluZy5hZGRvbi5hZGQnLFxuICAnYmlsbGluZy5hZGRvbi5yZW1vdmUnLFxuICAvLyBTeXN0ZW0taW5pdGlhdGVkIHJlbW92YWwgb2YgYSB0aWVyLWluY2x1ZGVkIGFkZC1vbiBvbiBhIHBsYW4gdXBncmFkZSAodGhlXG4gIC8vIGFjY291bnQncyBuZXcgdGllciBub3cgYnVuZGxlcyB0aGUgZmVhdHVyZSkg4oCUIGRpc3RpbmN0IGZyb20gYSB1c2VyLWluaXRpYXRlZFxuICAvLyBgcmVtb3ZlYCBzbyBmaW5hbmNlIGNhbiB0ZWxsIGFuIGF1dG8tcHJ1bmUgZnJvbSBhIGN1c3RvbWVyIGFjdGlvbi5cbiAgJ2JpbGxpbmcuYWRkb24ucHJ1bmUnLFxuICAvLyBEaXNjb3VudHMgKGRvY3MvYmlsbGluZy1kaXNjb3VudHMubWQpIOKAlCBtaW50L2lzc3VlL2FwcGx5L3JlbW92ZS9yZXZva2Ugb2YgYVxuICAvLyBwcmljZSBjb3Vwb24gb3IgdXNhZ2UgY3JlZGl0LiBgZGV0YWlsc2AgY2FycnkgdGhlIGRpc2NvdW50IGlkICsga2luZC92YWx1ZVxuICAvLyBvbmx5LCBuZXZlciB0aGUgb3BhcXVlIHRva2VuIG9yIHNpZ25pbmcga2V5LlxuICAnYmlsbGluZy5kaXNjb3VudC5nZW5lcmF0ZScsXG4gICdiaWxsaW5nLmRpc2NvdW50Lmlzc3VlJyxcbiAgJ2JpbGxpbmcuZGlzY291bnQuYXBwbHknLFxuICAnYmlsbGluZy5kaXNjb3VudC5yZW1vdmUnLFxuICAnYmlsbGluZy5kaXNjb3VudC5yZXZva2UnLFxuICAvLyBDYW1wYWlnbnMgKGRvY3MvYmlsbGluZy1kaXNjb3VudHMubWQpIOKAlCB0aGUgaWRlbnRpdHkgYSBzZXQgb2YgZGlzY291bnQgY29kZXNcbiAgLy8gYmVsb25ncyB0bywgY2FycnlpbmcgdGhlIGJ1ZGdldCwgd2luZG93IGFuZCBvbmUtcGVyLWFjY291bnQgcnVsZS4gQXV0aG9yaW5nXG4gIC8vIG9uZSBkZWNpZGVzIGhvdyBtdWNoIHRoZSBidXNpbmVzcyBtYXkgZ2l2ZSBhd2F5LCBzbyBlYWNoIGNoYW5nZSBpcyBhdWRpdGVkLlxuICAnYmlsbGluZy5jYW1wYWlnbi5jcmVhdGUnLFxuICAnYmlsbGluZy5jYW1wYWlnbi51cGRhdGUnLFxuICAnYmlsbGluZy5jYW1wYWlnbi5lbmQnLFxuICAvLyBQcm9tb3Rpb25zIChkb2NzL2JpbGxpbmctZGlzY291bnRzLm1kI3Byb21vdGlvbnMpIOKAlCBydWxlLWRyaXZlbiBhdXRvLWdyYW50XG4gIC8vIGNhbXBhaWducy4gYGRldGFpbHNgIGNhcnJ5IHRoZSBwcm9tb3Rpb24gaWQgKyBjZW50cy9ldmVudCBvbmx5LlxuICAnYmlsbGluZy5wcm9tb3Rpb24uY3JlYXRlJyxcbiAgJ2JpbGxpbmcucHJvbW90aW9uLnVwZGF0ZScsXG4gICdiaWxsaW5nLnByb21vdGlvbi5yZXZva2UnLFxuICAnYmlsbGluZy5wcm9tb3Rpb24uZ3JhbnQnLFxuICAnYmlsbGluZy5wcm9tb3Rpb24uYWN0aXZhdGUnLFxuICAvLyBVc2FnZS1jcmVkaXQgcmVhbGl6YXRpb24g4oCUIGEgY3VzdG9tZXIvY29tcGxpYW5jZS12aXNpYmxlIHJlY29yZCBvZiBjcmVkaXRcbiAgLy8gbW92ZW1lbnQ6IGBjb25zdW1lZGAgKE1hcmtldHBsYWNlIG1ldGVyZWQgZHJhd2Rvd24pLCBgZXhoYXVzdGVkYCAoYmFsYW5jZSBoaXRcbiAgLy8gemVybyksIGFuZCBhIGNvbWJvIGVuZGluZy4gYGRldGFpbHNgIGNhcnJ5IGNlbnRzL2lkcyBvbmx5LCBubyBwYXltZW50IHNlY3JldHMuXG4gICdiaWxsaW5nLmNyZWRpdC5jb25zdW1lZCcsXG4gICdiaWxsaW5nLmNyZWRpdC5leGhhdXN0ZWQnLFxuICAnYmlsbGluZy5jb21iby5leHBpcmVkJyxcbiAgLy8gUmVwb3J0aW5nIChhcGkvcmVwb3J0aW5nKSDigJQgdGhlIHRocmVlIHJlcG9ydGluZyBtdXRhdGlvbnMgd2hvc2UgZWZmZWN0XG4gIC8vIG91dGxpdmVzIGEgcmVxdWVzdCBsb2c6IHRoZSBwZXItb3JnIGNvcnJlbGF0aW9uLXdpbmRvdyBjb25maWcgd3JpdGUsIGFcbiAgLy8gcG9zdC1kZXBsb3kgb3V0Y29tZSBtYXJrZXIgKGl0IG1vdmVzIHRoZSBvcmcncyBET1JBIENGUi9NVFRSKSwgYW5kIHRoZVxuICAvLyBpbmJvdW5kIGJpbGxpbmfihpJyZXBvcnRpbmcgcmV0ZW50aW9uLWVudGl0bGVtZW50IHN5bmMgKGEgcmV0ZW50aW9uIGN1dCBpcyBhXG4gIC8vIGRhdGEtZGVzdHJveWluZyBjaGFuZ2UgYXBwbGllZCBieSB0aGUgbmV4dCBzd2VlcCkuIGBkZXRhaWxzYCBjYXJyeSB0aGVcbiAgLy8gc2V0dGluZ3Mvb3V0Y29tZSB2YWx1ZXMgb25seS5cbiAgJ3JlcG9ydGluZy5zZXR0aW5ncy51cGRhdGUnLFxuICAncmVwb3J0aW5nLmRlcGxveW1lbnQub3V0Y29tZScsXG4gICdyZXBvcnRpbmcucmV0ZW50aW9uLnN5bmMnLFxuICAvLyBTdGFrZWhvbGRlciByZXBvcnRzIOKAlCB0aGUgYWRkLW9uJ3MgYXV0aG9yaW5nIGFuZCBQVUJMSVNISU5HIHN1cmZhY2UuIFB1Ymxpc2hpbmdcbiAgLy8gaXMgdGhlIG1vbWVudCBpbnRlcm5hbCBkZWxpdmVyeSBudW1iZXJzIGxlYXZlIHRoZSBwbGF0Zm9ybSwgc28gdGhlIHdob2xlXG4gIC8vIG91dHdhcmQgcGF0aCBpcyBhdWRpdGFibGU6IHdoaWNoIHJlcG9ydCwgd2hpY2ggcGVyaW9kJ3MgZnJvemVuIHNuYXBzaG90LFxuICAvLyB3aGljaCB2ZXJzaW9uLCBhbmQgd2hvIGxldCBpdCBvdXQuIGBsaW5rLmNyZWF0ZWRgIC8gYGxpbmsucmV2b2tlZGAgY292ZXIgdGhlXG4gIC8vIFVSTHMgdGhhdCBsZXQgc29tZW9uZSB3aXRob3V0IGFuIGFjY291bnQgcmVhZCBpdDsgYHJlY2lwaWVudC5hZGRlZGAgL1xuICAvLyBgcmVjaXBpZW50LnJlbW92ZWRgIGNvdmVyIHdobyBpcyBvbiB0aGUgZGlzdHJpYnV0aW9uIGxpc3QsIHdoaWNoIGlzIHRoZSBvdGhlclxuICAvLyB3YXkgZGF0YSByZWFjaGVzIGEgcGVyc29uLiBgb3duZXJzaGlwLnRyYW5zZmVyYCBpcyBhIHByaXZpbGVnZSBtb3ZlOiBhXG4gIC8vIHNjaGVkdWxlZCBydW4gaXMgYXV0aG9yaXplZCBhcyBpdHMgT1dORVIsIHNvIGhhbmRpbmcgYSBkZWZpbml0aW9uIG92ZXIgaGFuZHNcbiAgLy8gb3ZlciB3aG9zZSBhY2Nlc3MgdGhlIG51bWJlcnMgYXJlIGNvbXB1dGVkIHdpdGguXG4gIC8vXG4gIC8vIERlbGliZXJhdGVseSBOT1QgYXVkaXRlZDogcmVhZGluZyBhIHNoYXJlZCByZXBvcnQuIFRoZSBhY2Nlc3MgaXMgbG9nZ2VkIGFuZFxuICAvLyBjb3VudGVkIHBlciBsaW5rLCBidXQgaXQgaXMgYW4gVU5BVVRIRU5USUNBVEVELCBleHRlcm5hbGx5LXRyaWdnZXJlZCBldmVudCDigJRcbiAgLy8gYW55b25lIGhvbGRpbmcgYSBVUkwgY291bGQgb3RoZXJ3aXNlIHdyaXRlIHVuYm91bmRlZCByb3dzIGludG8gdGhlIG9yZydzIGF1ZGl0XG4gIC8vIHRyYWlsLCB3aGljaCB0dXJucyBhIHJlYWQgaW50byBhIHdheSB0byBidXJ5IHRoZSBlbnRyaWVzIHRoYXQgbWF0dGVyLlxuICAncmVwb3J0aW5nLnJlcG9ydC5kZWZpbml0aW9uLmNyZWF0ZScsXG4gICdyZXBvcnRpbmcucmVwb3J0LmRlZmluaXRpb24udXBkYXRlJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQuZGVmaW5pdGlvbi5kZWxldGUnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5vd25lcnNoaXAudHJhbnNmZXInLFxuICAncmVwb3J0aW5nLnJlcG9ydC5wdWJsaXNoZWQnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5yZXB1Ymxpc2hlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LmxpbmsuY3JlYXRlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LmxpbmsucmV2b2tlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlY2lwaWVudC5hZGRlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlY2lwaWVudC5yZW1vdmVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucG9saWN5LnVwZGF0ZScsXG4gIC8vIEEgZGVmaW5pdGlvbiBTVE9QUEVEIHByb2R1Y2luZyByZXBvcnRzIHdpdGhvdXQgYW55b25lIGFza2luZyBpdCB0bzogdGhlIG93bmVyXG4gIC8vIHdhcyBkZWFjdGl2YXRlZCBvciByZW1vdmVkLCBvciBsb3N0IHRoZSBwZXJtaXNzaW9uIGEgcnVuIGlzIGF1dGhvcml6ZWQgd2l0aC5cbiAgLy8gUmVjb3JkZWQgYmVjYXVzZSB0aGUgZWZmZWN0IGlzIHNpbGVudCDigJQgYSBtYW5hZ2VyIGZpbmRzIG91dCBieSBub3QgcmVjZWl2aW5nXG4gIC8vIHRoZSByZXBvcnQg4oCUIHNvIHRoZSB0cmFpbCBoYXMgdG8gc2F5IHdoaWNoIHJlcG9ydHMgc3RvcHBlZCBhbmQgd2h5LlxuICAncmVwb3J0aW5nLnJlcG9ydC5wYXVzZWQnLFxuICAvLyDigKZhbmQgc3RhcnRlZCBhZ2Fpbi4gSXRzIG93biBhY3Rpb24gcmF0aGVyIHRoYW4gYSBkZXRhaWwgb24gdGhlIHBhdXNlLCBiZWNhdXNlIHRoZVxuICAvLyBxdWVzdGlvbiBhIHJldmlld2VyIGFza3MgaXMgXCJ3YXMgdGhpcyBhY2NvdW50J3MgcmVwb3J0aW5nIG9mZiBiZXR3ZWVuIHRoZXNlIHR3b1xuICAvLyBkYXRlc1wiLCBhbmQgYW5zd2VyaW5nIGl0IGZyb20gYSBzaW5nbGUgYWN0aW9uJ3MgZGV0YWlscyBtZWFucyByZWFkaW5nIGV2ZXJ5IHJvdy5cbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVzdW1lZCcsXG4gIC8vIFRoZSBkcmFmdGluZyBoYWxmIG9mIGEgcnVuOiBhIGNvbXBvc2UvcmVnZW5lcmF0ZSBmcmVlemVzIHRoZSBvcmcncyBudW1iZXJzXG4gIC8vIGludG8gYSBydW4sIHRoZSBsZWFkJ3Mgbm90ZXMgYXJlIGVkaXRlZCBvbnRvIGl0IChtZXRhZGF0YSBvbmx5IOKAlCBsZW5ndGgsXG4gIC8vIG5ldmVyIHRoZSBwcm9zZSksIGFuZCBhbiBBSSBzdW1tYXJ5IGlzIGRyYWZ0ZWQgZnJvbSBpdCAodGhlIG51bWJlcnMgd2VudCB0b1xuICAvLyBhIHByb3ZpZGVyOyBgb3V0Y29tZWAgY2FycmllcyBhIHJlZnVzYWwpLiBBIHJlc2VuZCByZS1taW50cyBhIHJlY2lwaWVudCdzXG4gIC8vIGNvbmZpcm1hdGlvbiBjcmVkZW50aWFsLiBgdmVyaWZpZWRgIC8gYHVuc3Vic2NyaWJlZGAgYXJlIHRoZSBVTkFVVEhFTlRJQ0FURURcbiAgLy8gcmVjaXBpZW50J3Mgb3duIGFjdHMgKGFjdG9yIGBhbm9ueW1vdXNgLCBhIGhhc2hlZCBhZGRyZXNzIG9ubHkpOiBib3VuZGVkIGJ5XG4gIC8vIGNvbnN0cnVjdGlvbiDigJQgdGhlIHZlcmlmeSB0b2tlbiBpcyBzaW5nbGUtdXNlLCBhbmQgb25seSB0aGUgY2xpY2sgdGhhdFxuICAvLyBhY3R1YWxseSBzdG9wcyBkZWxpdmVyeSB3cml0ZXMgYW4gdW5zdWJzY3JpYmUgcm93LlxuICAncmVwb3J0aW5nLnJlcG9ydC5ydW4uY29tcG9zZScsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJ1bi5ub3RlcycsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJ1bi5zdW1tYXJ5JyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LnJlc2VuZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlY2lwaWVudC52ZXJpZmllZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlY2lwaWVudC51bnN1YnNjcmliZWQnLFxuICAvLyBNQUNISU5FIGluZ2VzdCAoYHJlcG9ydGluZzppbmdlc3RgIHNjb3BlKS4gT25lIGBiYXRjaGAgcm93IHBlciBQT1NUIHRvIHRoZVxuICAvLyBldmVudCAvIGluY2lkZW50IC8gaW5nZXN0LWhlYWx0aCByb3V0ZXMg4oCUIGNvdW50cyBwbHVzIGNhcHBlZCBwaXBlbGluZSxcbiAgLy8gZXhlY3V0aW9uLCBFdmVudEJyaWRnZS1ldmVudCBhbmQgaW5jaWRlbnQgaWQgbGlzdHMsIGF0dHJpYnV0ZWQgdG8gdGhlXG4gIC8vIGNyZWRlbnRpYWwncyBwcmluY2lwYWwg4oCUIHNvIGEgZm9yZ2VkIG9yIG1pc3JvdXRlZCB3cml0ZSBuYW1lcyB0aGUga2V5IGJlaGluZFxuICAvLyBpdC4gYHJlamVjdGVkYCBpcyB0aGUgdGVuYW5jeSByZWZ1c2FsIGluc2lkZSBhIGJhdGNoIChldmVudHMgbmFtaW5nIGFub3RoZXJcbiAgLy8gb3JnJ3MgcGlwZWxpbmVzKTogYSBGQUlMVVJFIHJvdyB3aXRoIHRoZSBvZmZlbmRpbmcgcGlwZWxpbmUgaWRzLCBuZXZlciB0aGVcbiAgLy8gb3JnIHRoZXkgYmVsb25nIHRvLiBgaW5jaWRlbnQucmVjb3JkYCBpcyBvbmUgaW5jaWRlbnQgdGhhdCBpcyBuZXcgb3IgYWN0dWFsbHlcbiAgLy8gY2hhbmdlZCAoYmVmb3JlL2FmdGVyKTsgbGlrZSBgZGVwbG95bWVudC5vdXRjb21lYCBpdCBtb3ZlcyBDRlIvTVRUUi4gQW5cbiAgLy8gdW5jaGFuZ2VkIHJlcGVhdC1pbnRlcnZhbCByZS1wb3N0IHdyaXRlcyBub25lLlxuICAncmVwb3J0aW5nLmluZ2VzdC5iYXRjaCcsXG4gICdyZXBvcnRpbmcuaW5nZXN0LnJlamVjdGVkJyxcbiAgJ3JlcG9ydGluZy5pbmNpZGVudC5yZWNvcmQnLFxuICAvLyBEZW5pZWQgYXV0aG9yaXphdGlvbiBhdHRlbXB0IOKAlCBlbWl0dGVkIGJlc3QtZWZmb3J0IGJ5IHRoZSBzaGFyZWRcbiAgLy8gYHJlcXVpcmVQZXJtaXNzaW9uYCAvIGByZXF1aXJlU3lzdGVtQWRtaW5gIGdhdGUgd2hlbiBhIHN0YXRlLWNoYW5naW5nXG4gIC8vIChub24tR0VUKSByZXF1ZXN0IGlzIHJlamVjdGVkLCBzbyBwcm9iaW5nL2VzY2FsYXRpb24gYXR0ZW1wdHMgYXJlIHZpc2libGVcbiAgLy8gcmF0aGVyIHRoYW4gaW52aXNpYmxlLiBgZGV0YWlsc2AgY2FycmllcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbiArIHBhdGg7XG4gIC8vIGBvdXRjb21lYCBpcyAnZmFpbHVyZScuXG4gICdhdXRoei5kZW5pZWQnLFxuICAvLyBcIkFza1wiIGFzc2lzdGFudCBhY3Rpdml0eSDigJQgdmlzaWJpbGl0eSBpbnRvIHdoYXQgdGhlIGFzc2lzdGFudCBkaWQgb24gYSB1c2VyJ3NcbiAgLy8gYmVoYWxmLiBgYXNrLnF1ZXJ5YCBpcyBhIHJlYWQtb25seSBob3ctdG8gdHVybjsgYGFzay5hZ2VudC50dXJuYCBpcyBhIHRvb2wtY2FsbGluZ1xuICAvLyB0dXJuLiBgZGV0YWlsc2AgY2FycnkgU0FGRSBNRVRBREFUQSBPTkxZICh0b29scyB1c2VkLCBwcm9wb3NhbCBraW5kcywgcXVlcnlcbiAgLy8gbGVuZ3RoLCBvdXRjb21lKSwgbmV2ZXIgdGhlIHJhdyBxdWVyeSB0ZXh0LlxuICAnYXNrLnF1ZXJ5JyxcbiAgJ2Fzay5hZ2VudC50dXJuJyxcbiAgLy8gQSByZWFkZXIgcmF0aW5nIGFuIGFuc3dlciwgb3IgYSBoZWxwIHNlYXJjaCB0aGF0IGZvdW5kIG5vdGhpbmcuIFRoZSBPTkxZXG4gIC8vIHNpZ25hbCBmb3Igd2hpY2ggZG9jcyB0aGUgYXNzaXN0YW50IGFuc3dlcnMgYmFkbHkgZnJvbSDigJQgdGhlIHR1cm4gaXRzZWxmXG4gIC8vIGNhbm5vdCB0ZWxsIGEgZ29vZCBhbnN3ZXIgZnJvbSBhIGNvbmZpZGVudCB3cm9uZyBvbmUuIGBkZXRhaWxzYCBjYXJyeSB0aGVcbiAgLy8gcmF0aW5nIGFuZCB0aGUgRE9DIElEUyBjaXRlZCAoYGF1dGhlbnRpY2F0aW9uLm1kYCksIG5ldmVyIHRoZSBxdWVzdGlvbjogdGhlXG4gIC8vIGRvYyBpcyB3aGF0IGdldHMgZml4ZWQsIGFuZCBpdCBpcyBub3QgdXNlci1lbnRlcmVkIHRleHQuXG4gICdhc2suZmVlZGJhY2snLFxuICAvLyBPbmUgQUkgZ2VuZXJhdGlvbiBvZiBhIHBpcGVsaW5lIC8gcGx1Z2luIGRyYWZ0IChgL3BpcGVsaW5lcy9nZW5lcmF0ZSpgLFxuICAvLyBgL3BsdWdpbnMvZ2VuZXJhdGUqYCksIHN1Y2Nlc3Mgb3IgZmFpbHVyZSAoaW5jbC4gY2xpZW50IGFib3J0KS4gYGRldGFpbHNgIGNhcnJ5XG4gIC8vIFNBRkUgTUVUQURBVEEgT05MWTogdGhlIHJvdXRlLCB0aGUgcHJvbXB0IExFTkdUSCwgdGhlIHNoYXJlZCBBSSB1c2FnZSBibG9ja1xuICAvLyAoYGFpYDogdGhlIHByb3ZpZGVyIGFuZCBtb2RlbCB0aGF0IEFOU1dFUkVEIGFmdGVyIGFueSBmYWlsb3ZlciwgYGZhbGxiYWNrRnJvbWAsXG4gIC8vIHdob3NlIGtleSBwYWlkIOKAlCBga2V5U291cmNlYCByZXF1ZXN0L29yZy9wbGF0Zm9ybSDigJQgdG9rZW5zIGluL291dC9jYWNoZWQsIHRoZVxuICAvLyBwcm9tcHQgdmVyc2lvbiwgaG93IHRoZSBgYWlDYWxsc2Agc2xvdCBzZXR0bGVkKSBhbmQgdGhlIHJlc2VydmF0aW9uJ3NcbiAgLy8gYHF1b3RhYCB2aWV3IOKAlCBuZXZlciB0aGUgcHJvbXB0LCB0aGUgZ2VuZXJhdGVkIG91dHB1dCwgb3IgYSBrZXkuXG4gICdwaXBlbGluZS5haS5nZW5lcmF0ZScsXG4gICdwbHVnaW4uYWkuZ2VuZXJhdGUnLFxuICAvLyBQbHVnaW4gZWNvc3lzdGVtIChkb2NzL3J1bmJvb2tzL2Vjb3N5c3RlbS1tb2RlcmF0aW9uLm1kKS4gR292ZXJuYW5jZSBhY3Rpb25zXG4gIC8vIGFyZSByZWNvcmRlZCB3aXRoIGBvcmdJZGAgPSB0aGUgc3lzdGVtIG9yZzsgYGFmZmVjdGVkT3JnSWRgIGlzIHRoZVxuICAvLyBwdWJsaXNoZXIncyBvcmcgKGxpc3RpbmcvdmVyc2lvbi9yZXZpZXcvYWR2aXNvcnkvcHVibGlzaGVyIG1vZGVyYXRpb24pIG9yXG4gIC8vIHRoZSBpbnN0YWxsaW5nIG9yZyAoaW5zdGFsbHMgKyBwb2xpY3kpLiBBbm9ueW1vdXMgc3VibWlzc2lvbnMgdXNlIHRoZVxuICAvLyBgQU5PTllNT1VTX0FDVE9SX0lEYCBhY3RvciB3aXRoIGBkZXRhaWxzLnN1Ym1pc3Npb25JZGAuIGBkZXRhaWxzYCBjYXJyeSBpZHMsXG4gIC8vIHZlcnNpb25zLCBkaWdlc3RzLCB0aWVyLCBzdGF0ZSBhbmQgcmVhc29uIGNvZGVzIG9ubHkg4oCUIG5ldmVyIHJldmlldyBib2RpZXMsXG4gIC8vIFJFQURNRSBjb250ZW50LCBzZWNyZXRzIG9yIGVtYWlscy5cbiAgLy8gUHVibGlzaGVycy5cbiAgJ3B1Ymxpc2hlci5jcmVhdGUnLFxuICAncHVibGlzaGVyLnVwZGF0ZScsXG4gICdwdWJsaXNoZXIudGVybXMuYWNjZXB0JyxcbiAgJ3B1Ymxpc2hlci52ZXJpZnkucmVxdWVzdCcsXG4gICdwdWJsaXNoZXIudmVyaWZ5LmFwcHJvdmUnLFxuICAncHVibGlzaGVyLnZlcmlmeS5yZWplY3QnLFxuICAncHVibGlzaGVyLnRpZXIuY2hhbmdlJyxcbiAgJ3B1Ymxpc2hlci5zdXNwZW5kJyxcbiAgJ3B1Ymxpc2hlci51bnN1c3BlbmQnLFxuICAncHVibGlzaGVyLnRyYW5zZmVyLnJlcXVlc3QnLFxuICAncHVibGlzaGVyLnRyYW5zZmVyLmFjY2VwdCcsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIuZGVjbGluZScsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIuYXBwcm92ZScsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIucmVqZWN0JyxcbiAgJ3B1Ymxpc2hlci5wcm9maWxlLWNoYW5nZS5hcHByb3ZlJyxcbiAgJ3B1Ymxpc2hlci5wcm9maWxlLWNoYW5nZS5yZWplY3QnLFxuICAvLyBQdWJsaXNoIHJlcXVlc3RzICh0ZW5hbnQg4oaSIHN5c3RlbSBvcmcpLiBgZGV0YWlscy5raW5kYCBuYW1lcyB0aGUgcmVxdWVzdC5cbiAgJ3BsdWdpbi5yZXF1ZXN0LnN1Ym1pdCcsXG4gICdwbHVnaW4ucmVxdWVzdC53aXRoZHJhdycsXG4gICdwbHVnaW4ucmVxdWVzdC5hcHByb3ZlJyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LnNlY29uZC1hcHByb3ZlJyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LnJlamVjdCcsXG4gICdwbHVnaW4ucmVxdWVzdC5hdXRvLWFwcHJvdmUnLFxuICAvLyBMaXN0aW5ncyBhbmQgdmVyc2lvbnMgKHN5c3RlbSBvcmcsIGV4Y2VwdCB0aGUgdGVuYW50IHBhdXNlKS5cbiAgJ3BsdWdpbi5saXN0aW5nLnB1Ymxpc2gnLFxuICAvLyBOT1RFOiB0aGVyZSBpcyBubyBgcGx1Z2luLmxpc3RpbmcudW5saXN0YC4gV2l0aGRyYXdhbCBpcyBhbHJlYWR5IGV4cHJlc3NlZCBieVxuICAvLyBgcGx1Z2luLmxpc3Rpbmcuc3RhdGUuY2hhbmdlYCAoYHVubWFpbnRhaW5lZGAgLyBgc3VzcGVuZGVkYCAvIGBsaXN0ZWRgKSxcbiAgLy8gd2hpY2ggaXMgdGhlIGFjdGlvbiB0aGUgY29kZSBhY3R1YWxseSBlbWl0cywgc28gYHVubGlzdGAgd2FzIGEgc2Vjb25kIG5hbWVcbiAgLy8gZm9yIGEgdGhpbmcgdGhhdCBoYXMgb25lIOKAlCBhbmQgYSBuZXZlci1lbWl0dGVkIG9uZSBhdCB0aGF0LlxuICAncGx1Z2luLmxpc3RpbmcudXBkYXRlJyxcbiAgJ3BsdWdpbi5saXN0aW5nLnN0YXRlLmNoYW5nZScsXG4gICdwbHVnaW4ubGlzdGluZy5wYXVzZScsXG4gICdwbHVnaW4ubGlzdGluZy51bnBhdXNlJyxcbiAgJ3BsdWdpbi52ZXJzaW9uLnBhdXNlJyxcbiAgJ3BsdWdpbi52ZXJzaW9uLnlhbmsnLFxuICAncGx1Z2luLnZlcnNpb24udW55YW5rJyxcbiAgJ3BsdWdpbi52ZXJzaW9uLmRlcHJlY2F0ZScsXG4gIC8vIFJldGlyaW5nIGEgdmVyc2lvbidzIHJlZ2lzdHJ5IGltYWdlIHRvIHJlY2xhaW0gYHN0b3JhZ2VCeXRlc2AuIERpc3RpbmN0XG4gIC8vIGZyb20gdGhlIGZvdXIgYWJvdmUsIHdoaWNoIGNoYW5nZSB3aGV0aGVyIGEgdmVyc2lvbiBSRVNPTFZFUyBhbmQgZGVsZXRlXG4gIC8vIG5vdGhpbmcsIGFuZCBmcm9tIGByZWdpc3RyeS5pbWFnZS5kZWxldGVgL2ByZWdpc3RyeS50YWcuZGVsZXRlYCwgd2hpY2ggYXJlXG4gIC8vIHRoZSByZWdpc3RyeSdzIG93biBvcGVyYXRvci1zaWRlIHRyYWlsLiBUaGlzIGlzIGEgdGVuYW50IGZyZWVpbmcgc3BhY2UsIGFuZFxuICAvLyB0aGUgb25seSBhdWRpdGVkIGFjdGlvbiB0aGF0IGNhbiByZWR1Y2UgYW4gb3JnJ3Mgc3RvcmFnZSBmaWd1cmUg4oCUIHNvIGl0c1xuICAvLyByb3cgY2FycmllcyB0aGUgYnl0ZXMgaXQgZnJlZWQsIHdoaWNoIGNhbm5vdCBiZSByZWNvdmVyZWQgYWZ0ZXJ3YXJkcy5cbiAgJ3BsdWdpbi52ZXJzaW9uLnBydW5lJyxcbiAgLy8gTk9URTogbm8gYHBsdWdpbi5jb2xsZWN0aW9uLnVwZGF0ZWAuIGBlY29zeXN0ZW1fY29sbGVjdGlvbnNgIHdhcyBkZWxldGVkIChzZWVcbiAgLy8gdGhlIHRvbWJzdG9uZSBpbiBgc2NoZW1hL2Vjb3N5c3RlbS50c2ApIGJlY2F1c2Ugbm90aGluZyBldmVyIHdyb3RlIG9yIHJlYWRcbiAgLy8gb25lOyB0aGlzIGRlY2xhcmF0aW9uIG91dGxpdmVkIHRoZSB0YWJsZSBpdCBhdWRpdGVkLlxuICAvLyBFY29zeXN0ZW0gY29uZmlndXJhdGlvbiAoc3lzdGVtIG9yZykuXG4gICdlY29zeXN0ZW0uYXV0by1hcHByb3ZhbC1ydWxlLmNyZWF0ZScsXG4gICdlY29zeXN0ZW0uYXV0by1hcHByb3ZhbC1ydWxlLnVwZGF0ZScsXG4gICdlY29zeXN0ZW0uYXV0by1hcHByb3ZhbC1ydWxlLmRlbGV0ZScsXG4gICdlY29zeXN0ZW0ucmVzZXJ2ZWQtbmFtZS51cGRhdGUnLFxuICAvLyBUaGUgb25lLXRpbWUgQk9PVFNUUkFQIGV4Y2VwdGlvbiAoYXV0by1hcHByb3ZhbCBvZiB0aGUgaW5pdGlhbCBPZmZpY2lhbFxuICAvLyBjYXRhbG9nKSBvcGVuaW5nIG9uIHRoZSBmaXJzdCBPZmZpY2lhbCByZXF1ZXN0LCBhbmQgY2xvc2luZyBmb3IgZ29vZFxuICAvLyAoYGRldGFpbHMucmVhc29uYDogd2luZG93X2VsYXBzZWQgLyBsaXN0aW5nc19leGlzdCAvIGEgbWFuYWdlciBkZWNpc2lvbjtcbiAgLy8gYGRldGFpbHMuYXBwcm92ZWRgOiBob3cgbWFueSByZXF1ZXN0cyByb2RlIGl0KS5cbiAgJ2Vjb3N5c3RlbS5ib290c3RyYXAub3BlbicsXG4gICdlY29zeXN0ZW0uYm9vdHN0cmFwLmNsb3NlJyxcbiAgLy8gTk9URTogbm8gYGVjb3N5c3RlbS5zbGEudXBkYXRlYC4gVGhlIGxhbmUgU0xBcyBhcmUgSEFSRENPREVEIChzdGFuZGFyZCA0OGgsXG4gIC8vIHNlY3VyaXR5LWZpeCA0aCBpbiBgc2VydmljZXMvZWNvc3lzdGVtL3NsYS50c2ApIHdpdGggbm8gc2V0dGluZ3Mgc3VyZmFjZSwgc29cbiAgLy8gdGhlcmUgaXMgbm8gbXV0YXRpb24gdG8gYXVkaXQuIE1ha2luZyB0aGVtIG9wZXJhdG9yLXR1bmFibGUgaXMgdGhlIGNoYW5nZVxuICAvLyB0aGF0IHNob3VsZCByZS1hZGQgdGhpcy5cbiAgLy8gUHVibGljIHJlZ2lzdHJ5IG5hbWVzcGFjZSAoYHB1YmxpYy8qYCk6IGNvcHkgKyBzaWduICsgYXR0ZXN0IG9uIHB1Ymxpc2gsXG4gIC8vIHRoZSB0aWVyLWNoYW5nZS9zdXNwZW5zaW9uIHJlLXNpZ24gam9iLCB0YWcgcmVtb3ZhbCBvbiB5YW5rL3Rha2Vkb3duLCBhbmRcbiAgLy8gdGhlIHJldGVudGlvbiBzd2VlcC5cbiAgJ3JlZ2lzdHJ5LmltYWdlLnB1Ymxpc2gnLFxuICAncmVnaXN0cnkuaW1hZ2UucmVzaWduJyxcbiAgJ3JlZ2lzdHJ5LmltYWdlLnlhbmsnLFxuICAncmVnaXN0cnkuaW1hZ2UuZ2MnLFxuICAvLyBJbnN0YWxscyBhbmQgdGhlIGluc3RhbGxpbmcgb3JnJ3MgY29uc3VtcHRpb24gcG9saWN5IChvcmctbG9jYWwpLlxuICAncGx1Z2luLmluc3RhbGwucmVxdWVzdCcsXG4gICdwbHVnaW4uaW5zdGFsbC5hcHByb3ZlJyxcbiAgJ3BsdWdpbi5pbnN0YWxsLmRlbnknLFxuICAncGx1Z2luLmluc3RhbGwuY3JlYXRlJyxcbiAgJ3BsdWdpbi5pbnN0YWxsLnVwZ3JhZGUnLFxuICAvLyBBIG1lbWJlcidzIHJlcXVlc3QgdG8gY2hhbmdlIGFuIGluc3RhbGwgcGFzdCB3aGF0IHRoZXkgbWF5IGRvIGFsb25lLCBhbmQgaXRzIGRlY2lzaW9uLlxuICAncGx1Z2luLmluc3RhbGwuY2hhbmdlLXJlcXVlc3QnLFxuICAncGx1Z2luLmluc3RhbGwuY2hhbmdlLWFwcHJvdmUnLFxuICAncGx1Z2luLmluc3RhbGwuY2hhbmdlLXJlamVjdCcsXG4gICdwbHVnaW4uaW5zdGFsbC5yZW1vdmUnLFxuICAnb3JnLnBsdWdpbi1pbnN0YWxsLXBvbGljeS51cGRhdGUnLFxuICAvLyBBbiB1cGxvYWQgUkVGVVNFRCBiZWNhdXNlIGl0cyBuYW1lIHdvdWxkIG92ZXJyaWRlIHNvbWV0aGluZyB0aGUgb3JnIGFscmVhZHlcbiAgLy8gcmVzb2x2ZXMg4oCUIGEgbGlzdGluZywgb3IgYSB0ZWFtJ3MgcGFyZW50LW9yZyBwbHVnaW4g4oCUIGFuZCB0aGUgY29uc3VtcHRpb25cbiAgLy8gcG9saWN5IHNheXMgYHNoYWRvd2luZzogZGVueWAuIEF1ZGl0ZWQgYmVjYXVzZSBhIHJlZnVzYWwgb3RoZXJ3aXNlIHJldHVybnNcbiAgLy8gYW4gZXJyb3IgdG8gdGhlIGNhbGxlciBhbmQgbGVhdmVzIG5vdGhpbmcgYmVoaW5kOiBhbiBhdHRlbXB0IHRvIGRlZmluZVxuICAvLyBgdHJpdnlgIG92ZXIgdGhlIE9mZmljaWFsIHNjYW5uZXIgaXMgZXhhY3RseSB0aGUgdGhpbmcgc29tZW9uZSBzaG91bGQgYmVcbiAgLy8gYWJsZSB0byBmaW5kIGFmdGVyd2FyZHMuIGBkZXRhaWxzYCBjYXJyeSB0aGUgbmFtZSBhbmQgd2hhdCBpdCB3b3VsZCBoYXZlXG4gIC8vIG92ZXJyaWRkZW4uXG4gICdwbHVnaW4uc2hhZG93aW5nLmRlbmllZCcsXG4gIC8vIFJldmlld3MgYW5kIHJlcGxpZXMuXG4gICdwbHVnaW4ucmV2aWV3LmNyZWF0ZScsXG4gICdwbHVnaW4ucmV2aWV3LnVwZGF0ZScsXG4gICdwbHVnaW4ucmV2aWV3LmRlbGV0ZScsXG4gICdwbHVnaW4ucmV2aWV3LnJlcG9ydCcsXG4gICdwbHVnaW4ucmV2aWV3LmhvbGQnLFxuICAncGx1Z2luLnJldmlldy5yZWxlYXNlJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVtb3ZlJyxcbiAgJ3BsdWdpbi5yZXZpZXcuYW5vbnltaXplJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVwbHkuY3JlYXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVwbHkudXBkYXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVwbHkuZGVsZXRlJyxcbiAgLy8gQW5vbnltb3VzIHN1Ym1pc3Npb25zLlxuICAncGx1Z2luLnN1Ym1pc3Npb24uY3JlYXRlJyxcbiAgJ3BsdWdpbi5zdWJtaXNzaW9uLnZlcmlmeScsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5nYXRlLWZhaWwnLFxuICAncGx1Z2luLnN1Ym1pc3Npb24uYXBwcm92ZScsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5yZWplY3QnLFxuICAncGx1Z2luLnN1Ym1pc3Npb24uY2xhaW0nLFxuICAncGx1Z2luLnN1Ym1pc3Npb24uZXhwaXJlJyxcbiAgLy8gU2VjdXJpdHkgYWR2aXNvcmllcyAocHVibGlzaC93aXRoZHJhdyBhcmUgc3lzdGVtLW9yZyBvbmx5OyB1cGRhdGUgPSBhXG4gIC8vIG1vZGVyYXRvciBlZGl0aW5nIGEgZHJhZnQgYmVmb3JlIGl0IGlzIHB1Ymxpc2hlZCkuXG4gICdwbHVnaW4uYWR2aXNvcnkuY3JlYXRlJyxcbiAgJ3BsdWdpbi5hZHZpc29yeS51cGRhdGUnLFxuICAncGx1Z2luLmFkdmlzb3J5LnB1Ymxpc2gnLFxuICAncGx1Z2luLmFkdmlzb3J5LndpdGhkcmF3JyxcbiAgLy8gUGVyLW9yZyBwbHVnaW4gc2VjdXJpdHkgbm90aWZpY2F0aW9ucyAocGx1Z2luIHNjYW4gZ2F0ZXMpOiB0aGUgc2V0dGluZ3NcbiAgLy8gKHJlY2lwaWVudHMsIGRpZ2VzdCwgd2ViaG9vaywgZXh0ZXJuYWwgYWRkcmVzcyDigJQgY2hhbmdlZCBmaWVsZCBuYW1lcyBhbmRcbiAgLy8gdGhlIHdlYmhvb2sgaG9zdCBvbmx5LCBuZXZlciB0aGUgc2VjcmV0IG9yIHRoZSBhZGRyZXNzKSwgYW4gZXh0ZXJuYWxcbiAgLy8gYWRkcmVzcyBjb25maXJtZWQgdGhyb3VnaCBpdHMgZW1haWxlZCBzaW5nbGUtdXNlIGxpbmssIGFuZCBhIHRlc3Qgc2VuZC5cbiAgJ3BsdWdpbi5zZWN1cml0eV9ub3RpZmljYXRpb25zLnVwZGF0ZScsXG4gICdwbHVnaW4uc2VjdXJpdHlfbm90aWZpY2F0aW9ucy5leHRlcm5hbF9lbWFpbC52ZXJpZnknLFxuICAncGx1Z2luLnNlY3VyaXR5X25vdGlmaWNhdGlvbnMudGVzdCcsXG4gIC8vIEEgZ2F0ZS1yZWZ1c2VkIGltYWdlIEtFUFQgZnJvbSB0aGUgc2V0dXAgY2F0YWxvZyBsb2FkLCBwcm9tb3RlZCB0byBhXG4gIC8vIHZlcnNpb24gd2l0aG91dCBhIHJlYnVpbGQgKHN5c3RlbSBvcmcsIGFmdGVyIGEgZml4IHVwc3RyZWFtIG9yIGFuXG4gIC8vIGFkdmlzb3J5LWlkIHdhaXZlcikg4oCUIG9yIHJlZnVzZWQgYWdhaW4gYmVjYXVzZSB0aGUgQ1VSUkVOVCBnYXRlcyBzdGlsbFxuICAvLyBmYWlsIGl0LiBgZGV0YWlsc2AgY2FycnkgbmFtZS92ZXJzaW9uL2RpZ2VzdCBhbmQgdGhlIGZpbmRpbmdzLlxuICAncGx1Z2luLnNldHVwX2ltYWdlLnByb21vdGVkJyxcbiAgJ3BsdWdpbi5zZXR1cF9pbWFnZS5wcm9tb3RlX3JlZnVzZWQnLFxuICAvLyBBIGdhdGUtcmVmdXNlZCBzZXR1cC1sb2FkIGltYWdlIEtFUFQgKHNpZ25lZCwgaW4gdGhlIHJlZ2lzdHJ5KSBmb3IgbGF0ZXJcbiAgLy8gcHJvbW90aW9uIChgZGV0YWlsc2A6IGRpZ2VzdCwgcmVmdXNhbCBjb2RlLCBleHBpcmVzQXQpIOKAlCBhbmQgaXRzIHJvd1xuICAvLyBkcm9wcGVkIGJ5IHRoZSBzd2VlcCAoYGRldGFpbHMucmVhc29uYDogZXhwaXJlZCAvIHN1cGVyc2VkZWQpLlxuICAncGx1Z2luLnNldHVwX2ltYWdlLmtlcHQnLFxuICAncGx1Z2luLnNldHVwX2ltYWdlLmRpc2NhcmRlZCcsXG4gIC8vIEEgUElQRUxJTkUncyB0cmlhZ2Ugb2YgaXRzIGV4cG9zdXJlIHRvIGEgdnVsbmVyYWJsZSBwbHVnaW4gdmVyc2lvbjogYVxuICAvLyB0aW1lLWJveGVkIHJpc2sgYWNjZXB0YW5jZSAocmVhc29uICsgZXhwaXJ5LCB0aGUgYWNjZXB0ZWQgZmluZGluZyBrZXlzIGFuZFxuICAvLyB3aGV0aGVyIEtFViBmaW5kaW5ncyB3ZXJlIGFjY2VwdGVkKSwgYSBmYWxzZS1wb3NpdGl2ZSBkaXNtaXNzYWwsIG9yIGFcbiAgLy8gcmVvcGVuLiBBbiBhY3RpdmUgYWNjZXB0YW5jZSBleGVtcHRzIHRoYXQgcGlwZWxpbmUncyBsb29rdXBzIGFuZCBydW50aW1lXG4gIC8vIGNoZWNrcyBmcm9tIHRoZSBmbGFnIC8gS0VWIC8gSGlnaC1mbG9vciByZWZ1c2FscyBmb3IgdGhvc2UgZmluZGluZ3Mgb25seS5cbiAgJ3BpcGVsaW5lLnZ1bG4uYWNjZXB0ZWQnLFxuICAncGlwZWxpbmUudnVsbi5mYWxzZV9wb3NpdGl2ZScsXG4gICdwaXBlbGluZS52dWxuLnJlb3BlbmVkJyxcbiAgLy8gQSBwaXBlbGluZSdzIHJ1bnRpbWUgY2hlY2sgZ3JhZGVkIG9uZSBvZiBpdHMgcnVubmluZyBpbWFnZXMgYGVycm9yYCBvclxuICAvLyBsb3VkZXIgKGBkZXRhaWxzYDogc3RlcEtleSwgZGlnZXN0LCByZWFzb24gY29kZXMsIGV4ZWN1dGlvbklkIHdoZW4gc2VudCkuXG4gICdwaXBlbGluZS5ydW50aW1lX2NoZWNrLmZsYWdnZWQnLFxuICAvLyBBIHBpcGVsaW5lJ3MgcGx1Z2luIHN0ZXBzIG1vdmVkIHRvIG5ld2VyIHZlcnNpb25zIHRocm91Z2ggdGhlIHVwZ3JhZGVcbiAgLy8gZmxvdyAocHJldmlldyDihpIgYXBwbHk7IGBkZXRhaWxzYCBjYXJyeSB0aGUgc3RlcHMsIGZyb20g4oaSIHRvIHZlcnNpb25zKSwgYW5kIGFcbiAgLy8gcGlwZWxpbmUtcnVuIHNlY3VyaXR5IHNjYW5uZXIgcmVwb3J0IHVwbG9hZGVkIGZvciBhIHBpcGVsaW5lIChgZGV0YWlsc2A6XG4gIC8vIHRvb2wsIGZvcm1hdCwgc3RhZ2UsIHRoZSBmaW5kaW5nIGNvdW50cyDigJQgbmV2ZXIgdGhlIGZpbmRpbmdzIHRoZW1zZWx2ZXMpLlxuICAncGlwZWxpbmUucGx1Z2luLnVwZ3JhZGVkJyxcbiAgJ3BpcGVsaW5lLnNlY3VyaXR5X3JlcG9ydC51cGxvYWQnLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVtb3RlQXVkaXRBY3Rpb24gPSB0eXBlb2YgUkVNT1RFX0FVRElUX0FDVElPTlNbbnVtYmVyXTtcblxuLyoqIFdoZXRoZXIgYHZhbHVlYCBpcyBhbiBhY3Rpb24gYSByZW1vdGUgc2VydmljZSBtYXkgZW1pdCAodGhlIGluZ2VzdCBhbGxvdy1saXN0KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlbW90ZUF1ZGl0QWN0aW9uKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBSZW1vdGVBdWRpdEFjdGlvbiB7XG4gIHJldHVybiAoUkVNT1RFX0FVRElUX0FDVElPTlMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHZhbHVlKTtcbn1cbiJdfQ==
|
|
@@ -109,4 +109,11 @@ export const SUBMISSION_STATUSES = [
|
|
|
109
109
|
export const PLUGIN_SECURITY_RECIPIENT_MODES = ['writers', 'users'];
|
|
110
110
|
/** How rescan findings (N31) are batched; blocked builds (N30) are always immediate. */
|
|
111
111
|
export const PLUGIN_SECURITY_DIGEST_MODES = ['immediate', 'daily', 'weekly'];
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS12b2NhYnVsYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3dpcmUtdm9jYWJ1bGFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7R0FTRztBQUVILGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFHekUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRzVELHVGQUF1RjtBQUN2RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsSUFBSSxFQUFFLEtBQUs7SUFDWCxVQUFVLEVBQUUsYUFBYTtJQUN6QixPQUFPO0lBQ1AsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztJQUN4QixJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVTtJQUNqQyxTQUFTLEVBQUUsU0FBUztJQUNwQixVQUFVLEVBQUUsVUFBVTtDQUNkLENBQUM7QUFHWCxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBNEMsQ0FBQztBQUV2SCwwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFVLENBQUM7QUFHNUQsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQVUsQ0FBQztBQUd6RCxnRkFBZ0Y7QUFDaEYsV0FBVztBQUNYLGdGQUFnRjtBQUVoRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxjQUFjLEVBQUUs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LFVBQVUsRUFBRSxXQUFXLENBQVUsQ0FBQztBQUdwRyxvRkFBb0Y7QUFDcEYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQVUsQ0FBQztBQUc1RixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBR2xGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFHNUUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQVUsQ0FBQztBQUc1Rjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTO0NBQzNHLENBQUM7QUFHWCxnRkFBZ0Y7QUFDaEYsMENBQTBDO0FBQzFDLGdGQUFnRjtBQUVoRjsyRUFDMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFVLENBQUM7QUFHN0Usd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIENsb3NlZCBzdHJpbmcgdm9jYWJ1bGFyaWVzIHRoYXQgY3Jvc3MgdGhlIHdpcmUgYmV0d2VlbiB0aGUgc2VydmljZXMgYW5kIHRoZVxuICogYnJvd3Nlci4gRWFjaCBpcyBhbiBgYXMgY29uc3RgIGFycmF5ICh0aGUgcnVudGltZSBsaXN0IGEgWm9kIGVudW0sIGEgTW9uZ29vc2VcbiAqIGVudW0gb3IgYSBkcml6emxlIGAkdHlwZWAgYnVpbGRzIGZyb20pIHBsdXMgdGhlIHVuaW9uIHR5cGUgZGVyaXZlZCBmcm9tIGl0LlxuICpcbiAqIERlcGVuZGVuY3ktZnJlZSBvbiBwdXJwb3NlOiB0aGUgZnJvbnRlbmQgaW1wb3J0cyB0aGVzZSB0eXBlcywgc28gYSB2YWx1ZSBhZGRlZFxuICogaGVyZSByZWFjaGVzIHRoZSBVSSdzIGV4aGF1c3RpdmUgbGFiZWwgbWFwcyBhcyBhIGNvbXBpbGUgZXJyb3IgaW5zdGVhZCBvZiBhXG4gKiBzaWxlbnRseSB1bmhhbmRsZWQgc3RyaW5nLiBUaGUgUG9zdGdyZXMgQ0hFQ0sgY29uc3RyYWludHMgaW4gZWFjaCBkZXBsb3lcbiAqIHRhcmdldCdzIGBwb3N0Z3Jlcy1pbml0LnNxbGAgbWlycm9yIHRoZSBvbmVzIHN0b3JlZCBpbiBTUUwuXG4gKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbXBsaWFuY2UgcnVsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBSVUxFX1NFVkVSSVRJRVMgPSBbJ3dhcm5pbmcnLCAnZXJyb3InLCAnY3JpdGljYWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVTZXZlcml0eSA9ICh0eXBlb2YgUlVMRV9TRVZFUklUSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgUlVMRV9UQVJHRVRTID0gWydwbHVnaW4nLCAncGlwZWxpbmUnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVUYXJnZXQgPSAodHlwZW9mIFJVTEVfVEFSR0VUUylbbnVtYmVyXTtcblxuLyoqIEZpZWxkLWV2YWx1YXRpb24gb3BlcmF0b3JzOyB0aGUgZW5naW5lJ3MgaW1wbGVtZW50YXRpb25zIGxpdmUgaW4gYXBpL2NvbXBsaWFuY2UuICovXG5leHBvcnQgY29uc3QgUlVMRV9PUEVSQVRPUlMgPSBbXG4gICdlcScsICduZXEnLFxuICAnY29udGFpbnMnLCAnbm90Q29udGFpbnMnLFxuICAncmVnZXgnLFxuICAnZ3QnLCAnZ3RlJywgJ2x0JywgJ2x0ZScsXG4gICdpbicsICdub3RJbicsXG4gICdleGlzdHMnLCAnbm90RXhpc3RzJywgJ25vdEVtcHR5JyxcbiAgJ2NvdW50R3QnLCAnY291bnRMdCcsXG4gICdsZW5ndGhHdCcsICdsZW5ndGhMdCcsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZU9wZXJhdG9yID0gKHR5cGVvZiBSVUxFX09QRVJBVE9SUylbbnVtYmVyXTtcblxuLyoqIE9wZXJhdG9ycyB0aGF0IHRlc3QgcHJlc2VuY2Ugb25seSBhbmQgdGFrZSBubyBjb21wYXJpc29uIHZhbHVlLiAqL1xuZXhwb3J0IGNvbnN0IFZBTFVFTEVTU19SVUxFX09QRVJBVE9SUyA9IFsnZXhpc3RzJywgJ25vdEV4aXN0cycsICdub3RFbXB0eSddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBSdWxlT3BlcmF0b3JbXTtcblxuLyoqIEhvdyBhIG11bHRpLWNvbmRpdGlvbiBydWxlIGNvbWJpbmVzIGl0cyBjb25kaXRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IFJVTEVfQ09ORElUSU9OX01PREVTID0gWydhbGwnLCAnYW55J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlQ29uZGl0aW9uTW9kZSA9ICh0eXBlb2YgUlVMRV9DT05ESVRJT05fTU9ERVMpW251bWJlcl07XG5cbi8qKiBgcHVibGlzaGVkYCBydWxlcyBiZWxvbmcgdG8gdGhlIHN5c3RlbSBvcmcgYW5kIGFwcGx5IGJ5IHN1YnNjcmlwdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBSVUxFX1NDT1BFUyA9IFsnb3JnJywgJ3B1Ymxpc2hlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZVNjb3BlID0gKHR5cGVvZiBSVUxFX1NDT1BFUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1lc3NhZ2VzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9UWVBFUyA9IFsnYW5ub3VuY2VtZW50JywgJ2NvbnZlcnNhdGlvbiddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVR5cGUgPSAodHlwZW9mIE1FU1NBR0VfVFlQRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFX1BSSU9SSVRJRVMgPSBbJ25vcm1hbCcsICdoaWdoJywgJ3VyZ2VudCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVByaW9yaXR5ID0gKHR5cGVvZiBNRVNTQUdFX1BSSU9SSVRJRVMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCaWxsaW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgU1VCU0NSSVBUSU9OX1NUQVRVU0VTID0gWydhY3RpdmUnLCAnY2FuY2VsZWQnLCAncGFzdF9kdWUnLCAndHJpYWxpbmcnLCAnaW5jb21wbGV0ZSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uU3RhdHVzID0gKHR5cGVvZiBTVUJTQ1JJUFRJT05fU1RBVFVTRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBCSUxMSU5HX0lOVEVSVkFMUyA9IFsnbW9udGhseScsICdhbm51YWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJpbGxpbmdJbnRlcnZhbCA9ICh0eXBlb2YgQklMTElOR19JTlRFUlZBTFMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBJZGVudGl0eVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIE9JREMgcHJvdmlkZXJzIGFuIG9yZyBJZFAgY29uZmlnIGNhbiBuYW1lIChHaXRIdWIgaXMgT0F1dGgtb25seSBhbmQgcmVmdXNlZCBieSB0aGUgT0lEQyBlbmdpbmUpLiAqL1xuZXhwb3J0IGNvbnN0IElEUF9QUk9WSURFUlMgPSBbJ2dlbmVyaWMtb2lkYycsICdjb2duaXRvJywgJ2dvb2dsZScsICdnaXRodWInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIElkcFByb3ZpZGVyID0gKHR5cGVvZiBJRFBfUFJPVklERVJTKVtudW1iZXJdO1xuXG4vKiogVGhlIGZlZGVyYXRpb24gcHJvdG9jb2wgYW4gb3JnIHNpZ25zIGluIG92ZXIg4oCUIG9uZSBwZXIgb3JnLiAqL1xuZXhwb3J0IGNvbnN0IElEUF9QUk9UT0NPTFMgPSBbJ29pZGMnLCAnc2FtbCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSWRwUHJvdG9jb2wgPSAodHlwZW9mIElEUF9QUk9UT0NPTFMpW251bWJlcl07XG5cbi8qKlxuICogV2hpY2ggU0FNTCBhc3NlcnRpb24gYXR0cmlidXRlIGNhcnJpZXMgd2hpY2ggaWRlbnRpdHkgZmllbGQuIEFuIGVtcHR5IG5hbWVcbiAqIG1lYW5zIFwidXNlIHRoZSBjb21tb24gc3BlbGxpbmdzXCIgKHNob3J0IG5hbWVzIHBsdXMgdGhlIEVudHJhL1NoaWJib2xldGggVVJJcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FtbEF0dHJpYnV0ZU1hcHBpbmcge1xuICAvKiogQXR0cmlidXRlIGhvbGRpbmcgdGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzLiAqL1xuICBlbWFpbD86IHN0cmluZztcbiAgLyoqIEF0dHJpYnV0ZSBob2xkaW5nIHRoZSBkaXNwbGF5IG5hbWUuICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBBdHRyaWJ1dGUgaG9sZGluZyBncm91cCBtZW1iZXJzaGlwcyAoZHJpdmVzIEpJVCByb2xlIG1hcHBpbmcpLiAqL1xuICBncm91cHM/OiBzdHJpbmc7XG59XG5cbi8qKiBUaGUgY29hcnNlIGdyYW50IGEgcGVybWlzc2lvbiByb2xlIGdpdmVzIGl0cyBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFJPTEVfR1JBTlRTID0gWydzdXBlcmFkbWluJywgJ2FkbWluJywgJ21lbWJlciddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUm9sZUdyYW50ID0gKHR5cGVvZiBST0xFX0dSQU5UUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBsdWdpbiBlY29zeXN0ZW0gKGVhY2ggbWlycm9yZWQgYnkgYSBDSEVDSyBpbiBwb3N0Z3Jlcy1pbml0LnNxbClcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBQdWJsaXNoZXIgdHJ1c3QgdGllci4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIRVJfVElFUlMgPSBbJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoZXJUaWVyID0gKHR5cGVvZiBQVUJMSVNIRVJfVElFUlMpW251bWJlcl07XG5cbi8qKiBBIGRpcmVjdG9yeSBsaXN0aW5nJ3MgbGlmZWN5Y2xlIHN0YXRlLiAqL1xuZXhwb3J0IGNvbnN0IExJU1RJTkdfU1RBVEVTID0gWydsaXN0ZWQnLCAndW5tYWludGFpbmVkJywgJ3N1c3BlbmRlZCcsICd0cmFuc2ZlcnJlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTGlzdGluZ1N0YXRlID0gKHR5cGVvZiBMSVNUSU5HX1NUQVRFUylbbnVtYmVyXTtcblxuLyoqIFdoYXQgYSBwdWJsaXNoIHJlcXVlc3QgYXNrcyB0aGUgc3lzdGVtIG9yZyB0byBkby4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfS0lORFMgPSBbXG4gICduZXdfbGlzdGluZycsICduZXdfdmVyc2lvbicsICdsaXN0aW5nX3VwZGF0ZScsICd5YW5rJywgJ3VucGF1c2UnLFxuICAndHJhbnNmZXInLCAnY2xhaW0nLCAncHJvZmlsZV9jaGFuZ2UnLCAnYWR2aXNvcnknLCAndmVyaWZ5JywgJ21vZGVyYXRpb24nLCAnc3VibWlzc2lvbicsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaFJlcXVlc3RLaW5kID0gKHR5cGVvZiBQVUJMSVNIX1JFUVVFU1RfS0lORFMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMgPSBbJ3BlbmRpbmcnLCAncGVuZGluZ19zZWNvbmRfYXBwcm92YWwnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnd2l0aGRyYXduJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoUmVxdWVzdFN0YXR1cyA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogVGhlIHN0YXR1c2VzIGEgcmVxdWVzdCBpcyBzdGlsbCBcIm9wZW5cIiBpbiAoZHJpdmVzIHRoZSBvbmUtb3Blbi1yZXF1ZXN0IGluZGV4KS4gKi9cbmV4cG9ydCBjb25zdCBPUEVOX1BVQkxJU0hfUkVRVUVTVF9TVEFUVVNFUyA9IFsncGVuZGluZycsICdwZW5kaW5nX3NlY29uZF9hcHByb3ZhbCddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBQdWJsaXNoUmVxdWVzdFN0YXR1c1tdO1xuXG4vKiogYHNlY3VyaXR5YCByZXF1ZXN0cyBqdW1wIHRoZSBtb2RlcmF0aW9uIHF1ZXVlLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUkVRVUVTVF9MQU5FUyA9IFsnc3RhbmRhcmQnLCAnc2VjdXJpdHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hSZXF1ZXN0TGFuZSA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX0xBTkVTKVtudW1iZXJdO1xuXG4vKiogSW5zdGFsbCB2ZXJzaW9uIHBvbGljeTogZXhhY3QsIGB+YCwgYF5gLCBvciBhbnl0aGluZyBub24tYnJlYWtpbmcuICovXG5leHBvcnQgY29uc3QgSU5TVEFMTF9WRVJTSU9OX1BPTElDSUVTID0gWydwaW5uZWQnLCAncGF0Y2gnLCAnbWlub3InLCAnbGF0ZXN0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJbnN0YWxsVmVyc2lvblBvbGljeSA9ICh0eXBlb2YgSU5TVEFMTF9WRVJTSU9OX1BPTElDSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgSU5TVEFMTF9TVEFUVVNFUyA9IFsnYWN0aXZlJywgJ3BlbmRpbmdfYXBwcm92YWwnLCAnZGVuaWVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJbnN0YWxsU3RhdHVzID0gKHR5cGVvZiBJTlNUQUxMX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogVGhlIGFkdmlzb3J5IHNldmVyaXR5IGF0IHdoaWNoIGEgY29uc3VtcHRpb24gcG9saWN5IGJsb2NrcyBpbnN0YWxscy4gKi9cbmV4cG9ydCBjb25zdCBCTE9DS19PTl9BRFZJU09SWV9MRVZFTFMgPSBbJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbmV2ZXInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJsb2NrT25BZHZpc29yeSA9ICh0eXBlb2YgQkxPQ0tfT05fQURWSVNPUllfTEVWRUxTKVtudW1iZXJdO1xuXG4vKiogV2hldGhlciBvZmZpY2lhbCBwbHVnaW5zIG5lZWQgYW4gZXhwbGljaXQgaW5zdGFsbCBiZWZvcmUgYSBwaXBlbGluZSBjYW4gdXNlIHRoZW0uICovXG5leHBvcnQgY29uc3QgT0ZGSUNJQUxfSU5TVEFMTFNfTU9ERVMgPSBbJ2ltcGxpY2l0JywgJ2V4cGxpY2l0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBPZmZpY2lhbEluc3RhbGxzID0gKHR5cGVvZiBPRkZJQ0lBTF9JTlNUQUxMU19NT0RFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBXaGF0IGhhcHBlbnMgd2hlbiBhbiBvcmcgZGVmaW5lcyBhIHBsdWdpbiBOQU1FIHRoYXQgb3ZlcnJpZGVzIHNvbWV0aGluZyBpdFxuICogd291bGQgb3RoZXJ3aXNlIHJlc29sdmUg4oCUIGEgbGlzdGluZywgb3IgKGZvciBhIHRlYW0pIGl0cyBwYXJlbnQgb3JnJ3MgcGx1Z2luLlxuICpcbiAqIGBhbGxvd2Aga2VlcHMgdG9kYXkncyBiZWhhdmlvdXI6IHRoZSBvdmVycmlkZSBpcyBzaWxlbnQgYmV5b25kIHRoZSBkYXNoYm9hcmRcbiAqIGJhbm5lci4gYHdhcm5gIGlzIHRoZSBzYW1lIHJlc29sdXRpb24gd2l0aCB0aGUgZmFjdCByZWNvcmRlZCBwcm9taW5lbnRseS5cbiAqIGBkZW55YCByZWZ1c2VzIHRoZSB1cGxvYWQsIHdoaWNoIGlzIHRoZSBvbmx5IHNldHRpbmcgdGhhdCBhY3R1YWxseSBzdG9wcyBhXG4gKiB0ZWFtIHJlcGxhY2luZyB0aGUgT2ZmaWNpYWwgYHRyaXZ5YCBmb3IgZXZlcnkgcGlwZWxpbmUgdGhhdCBuYW1lcyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNIQURPV0lOR19NT0RFUyA9IFsnYWxsb3cnLCAnd2FybicsICdkZW55J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTaGFkb3dpbmdNb2RlID0gKHR5cGVvZiBTSEFET1dJTkdfTU9ERVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBSRVZJRVdfU1RBVFVTRVMgPSBbJ3B1Ymxpc2hlZCcsICdoZWxkJywgJ3JlbW92ZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJldmlld1N0YXR1cyA9ICh0eXBlb2YgUkVWSUVXX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogV2h5IGEgaGVsZCByZXZpZXcgaXMgaGVsZC4gKi9cbmV4cG9ydCBjb25zdCBSRVZJRVdfSE9MRF9SRUFTT05TID0gWydyZXBvcnRzJywgJ2J1cnN0JywgJ2ZpbHRlcicsICdzZWN1cml0eScsICdtb2RlcmF0b3InXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJldmlld0hvbGRSZWFzb24gPSAodHlwZW9mIFJFVklFV19IT0xEX1JFQVNPTlMpW251bWJlcl07XG5cbi8qKiBBIHJldmlldyByZXBvcnQncyBjYXRlZ29yeTsgYHNlY3VyaXR5YCByb3V0ZXMgcHJpdmF0ZWx5IHRvIHRoZSBhZHZpc29yeSBwYXRoLiAqL1xuZXhwb3J0IGNvbnN0IFJFVklFV19SRVBPUlRfQ0FURUdPUklFUyA9IFsnc3BhbScsICdhYnVzZScsICdvZmZfdG9waWMnLCAnc2VjdXJpdHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJldmlld1JlcG9ydENhdGVnb3J5ID0gKHR5cGVvZiBSRVZJRVdfUkVQT1JUX0NBVEVHT1JJRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBBRFZJU09SWV9TRVZFUklUSUVTID0gWydjcml0aWNhbCcsICdoaWdoJywgJ21lZGl1bScsICdsb3cnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEFkdmlzb3J5U2V2ZXJpdHkgPSAodHlwZW9mIEFEVklTT1JZX1NFVkVSSVRJRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBBRFZJU09SWV9TVEFURVMgPSBbJ2RyYWZ0JywgJ3B1Ymxpc2hlZCcsICd3aXRoZHJhd24nXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEFkdmlzb3J5U3RhdGUgPSAodHlwZW9mIEFEVklTT1JZX1NUQVRFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IEFEVklTT1JZX1NPVVJDRVMgPSBbJ3B1Ymxpc2hlcicsICdtb2RlcmF0b3InLCAnY3ZlX3Jlc2NhbicsICdyZXZpZXcnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEFkdmlzb3J5U291cmNlID0gKHR5cGVvZiBBRFZJU09SWV9TT1VSQ0VTKVtudW1iZXJdO1xuXG4vKipcbiAqIEFuIGFub255bW91cyBzdWJtaXNzaW9uJ3MgbGlmZWN5Y2xlLiBgcHVibGlzaGluZ2AgaXMgdGhlIHNob3J0IGNsYWltIGFuXG4gKiBhcHByb3ZhbCB0YWtlcyBiZWZvcmUgaXQgY29waWVzIHRoZSBxdWFyYW50aW5lZCBpbWFnZSBvdXQsIHNvIGFuIGV4cGlyeSBjYW5cbiAqIG5ldmVyIGRlbGV0ZSB0aGUgYXJ0aWZhY3RzIG9mIGEgc3VibWlzc2lvbiB0aGF0IGlzIGJlaW5nIHB1Ymxpc2hlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNVQk1JU1NJT05fU1RBVFVTRVMgPSBbXG4gICdwZW5kaW5nX3ZlcmlmaWNhdGlvbicsICdwZW5kaW5nX3JldmlldycsICdwdWJsaXNoaW5nJywgJ2dhdGVfZmFpbGVkJywgJ2FwcHJvdmVkJywgJ3JlamVjdGVkJywgJ2V4cGlyZWQnLCAnY2xhaW1lZCcsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU3VibWlzc2lvblN0YXR1cyA9ICh0eXBlb2YgU1VCTUlTU0lPTl9TVEFUVVNFUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBsdWdpbiBzZWN1cml0eSBub3RpZmljYXRpb25zIChwZXIgb3JnKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFdobyByZWNlaXZlcyBhbiBvcmcncyBwbHVnaW4gc2VjdXJpdHkgbm90aWNlczogYHdyaXRlcnNgID0gdGhlIHVwbG9hZGVyIHBsdXNcbiAqICBtZW1iZXJzIGhvbGRpbmcgYHBsdWdpbnM6d3JpdGVgOyBgdXNlcnNgID0gdGhlIG9yZydzIGNob3NlbiBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9TRUNVUklUWV9SRUNJUElFTlRfTU9ERVMgPSBbJ3dyaXRlcnMnLCAndXNlcnMnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpblNlY3VyaXR5UmVjaXBpZW50TW9kZSA9ICh0eXBlb2YgUExVR0lOX1NFQ1VSSVRZX1JFQ0lQSUVOVF9NT0RFUylbbnVtYmVyXTtcblxuLyoqIEhvdyByZXNjYW4gZmluZGluZ3MgKE4zMSkgYXJlIGJhdGNoZWQ7IGJsb2NrZWQgYnVpbGRzIChOMzApIGFyZSBhbHdheXMgaW1tZWRpYXRlLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9TRUNVUklUWV9ESUdFU1RfTU9ERVMgPSBbJ2ltbWVkaWF0ZScsICdkYWlseScsICd3ZWVrbHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpblNlY3VyaXR5RGlnZXN0TW9kZSA9ICh0eXBlb2YgUExVR0lOX1NFQ1VSSVRZX0RJR0VTVF9NT0RFUylbbnVtYmVyXTtcbiJdfQ==
|
|
112
|
+
// The build CLASS and SIZE vocabularies live in `build-catalog.ts`, together
|
|
113
|
+
// with their labels, credit multipliers, tier floors and per-class slot
|
|
114
|
+
// defaults. They are not here because the ids alone were never the whole fact:
|
|
115
|
+
// the multiplier was in this file, the tier gate was in `quota-tiers.ts`, and
|
|
116
|
+
// the labels were in a frontend mirror of both. One keyed catalog is importable
|
|
117
|
+
// by the browser, so the mirror and the test that parsed this package's source
|
|
118
|
+
// to detect drift are both gone.
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS12b2NhYnVsYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3dpcmUtdm9jYWJ1bGFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7R0FTRztBQUVILGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFHekUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRzVELHVGQUF1RjtBQUN2RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsSUFBSSxFQUFFLEtBQUs7SUFDWCxVQUFVLEVBQUUsYUFBYTtJQUN6QixPQUFPO0lBQ1AsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztJQUN4QixJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVTtJQUNqQyxTQUFTLEVBQUUsU0FBUztJQUNwQixVQUFVLEVBQUUsVUFBVTtDQUNkLENBQUM7QUFHWCxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBNEMsQ0FBQztBQUV2SCwwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFVLENBQUM7QUFHNUQsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQVUsQ0FBQztBQUd6RCxnRkFBZ0Y7QUFDaEYsV0FBVztBQUNYLGdGQUFnRjtBQUVoRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxjQUFjLEVBQUUs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LFVBQVUsRUFBRSxXQUFXLENBQVUsQ0FBQztBQUdwRyxvRkFBb0Y7QUFDcEYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQVUsQ0FBQztBQUc1RixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBR2xGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFHNUUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQVUsQ0FBQztBQUc1Rjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTO0NBQzNHLENBQUM7QUFHWCxnRkFBZ0Y7QUFDaEYsMENBQTBDO0FBQzFDLGdGQUFnRjtBQUVoRjsyRUFDMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFVLENBQUM7QUFHN0Usd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQVUsQ0FBQztBQUd0Riw2RUFBNkU7QUFDN0Usd0VBQXdFO0FBQ3hFLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsZ0ZBQWdGO0FBQ2hGLCtFQUErRTtBQUMvRSxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBDbG9zZWQgc3RyaW5nIHZvY2FidWxhcmllcyB0aGF0IGNyb3NzIHRoZSB3aXJlIGJldHdlZW4gdGhlIHNlcnZpY2VzIGFuZCB0aGVcbiAqIGJyb3dzZXIuIEVhY2ggaXMgYW4gYGFzIGNvbnN0YCBhcnJheSAodGhlIHJ1bnRpbWUgbGlzdCBhIFpvZCBlbnVtLCBhIE1vbmdvb3NlXG4gKiBlbnVtIG9yIGEgZHJpenpsZSBgJHR5cGVgIGJ1aWxkcyBmcm9tKSBwbHVzIHRoZSB1bmlvbiB0eXBlIGRlcml2ZWQgZnJvbSBpdC5cbiAqXG4gKiBEZXBlbmRlbmN5LWZyZWUgb24gcHVycG9zZTogdGhlIGZyb250ZW5kIGltcG9ydHMgdGhlc2UgdHlwZXMsIHNvIGEgdmFsdWUgYWRkZWRcbiAqIGhlcmUgcmVhY2hlcyB0aGUgVUkncyBleGhhdXN0aXZlIGxhYmVsIG1hcHMgYXMgYSBjb21waWxlIGVycm9yIGluc3RlYWQgb2YgYVxuICogc2lsZW50bHkgdW5oYW5kbGVkIHN0cmluZy4gVGhlIFBvc3RncmVzIENIRUNLIGNvbnN0cmFpbnRzIGluIGVhY2ggZGVwbG95XG4gKiB0YXJnZXQncyBgcG9zdGdyZXMtaW5pdC5zcWxgIG1pcnJvciB0aGUgb25lcyBzdG9yZWQgaW4gU1FMLlxuICovXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb21wbGlhbmNlIHJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgUlVMRV9TRVZFUklUSUVTID0gWyd3YXJuaW5nJywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlU2V2ZXJpdHkgPSAodHlwZW9mIFJVTEVfU0VWRVJJVElFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IFJVTEVfVEFSR0VUUyA9IFsncGx1Z2luJywgJ3BpcGVsaW5lJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlVGFyZ2V0ID0gKHR5cGVvZiBSVUxFX1RBUkdFVFMpW251bWJlcl07XG5cbi8qKiBGaWVsZC1ldmFsdWF0aW9uIG9wZXJhdG9yczsgdGhlIGVuZ2luZSdzIGltcGxlbWVudGF0aW9ucyBsaXZlIGluIGFwaS9jb21wbGlhbmNlLiAqL1xuZXhwb3J0IGNvbnN0IFJVTEVfT1BFUkFUT1JTID0gW1xuICAnZXEnLCAnbmVxJyxcbiAgJ2NvbnRhaW5zJywgJ25vdENvbnRhaW5zJyxcbiAgJ3JlZ2V4JyxcbiAgJ2d0JywgJ2d0ZScsICdsdCcsICdsdGUnLFxuICAnaW4nLCAnbm90SW4nLFxuICAnZXhpc3RzJywgJ25vdEV4aXN0cycsICdub3RFbXB0eScsXG4gICdjb3VudEd0JywgJ2NvdW50THQnLFxuICAnbGVuZ3RoR3QnLCAnbGVuZ3RoTHQnLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVPcGVyYXRvciA9ICh0eXBlb2YgUlVMRV9PUEVSQVRPUlMpW251bWJlcl07XG5cbi8qKiBPcGVyYXRvcnMgdGhhdCB0ZXN0IHByZXNlbmNlIG9ubHkgYW5kIHRha2Ugbm8gY29tcGFyaXNvbiB2YWx1ZS4gKi9cbmV4cG9ydCBjb25zdCBWQUxVRUxFU1NfUlVMRV9PUEVSQVRPUlMgPSBbJ2V4aXN0cycsICdub3RFeGlzdHMnLCAnbm90RW1wdHknXSBhcyBjb25zdCBzYXRpc2ZpZXMgcmVhZG9ubHkgUnVsZU9wZXJhdG9yW107XG5cbi8qKiBIb3cgYSBtdWx0aS1jb25kaXRpb24gcnVsZSBjb21iaW5lcyBpdHMgY29uZGl0aW9ucy4gKi9cbmV4cG9ydCBjb25zdCBSVUxFX0NPTkRJVElPTl9NT0RFUyA9IFsnYWxsJywgJ2FueSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZUNvbmRpdGlvbk1vZGUgPSAodHlwZW9mIFJVTEVfQ09ORElUSU9OX01PREVTKVtudW1iZXJdO1xuXG4vKiogYHB1Ymxpc2hlZGAgcnVsZXMgYmVsb25nIHRvIHRoZSBzeXN0ZW0gb3JnIGFuZCBhcHBseSBieSBzdWJzY3JpcHRpb24uICovXG5leHBvcnQgY29uc3QgUlVMRV9TQ09QRVMgPSBbJ29yZycsICdwdWJsaXNoZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVTY29wZSA9ICh0eXBlb2YgUlVMRV9TQ09QRVMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNZXNzYWdlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IE1FU1NBR0VfVFlQRVMgPSBbJ2Fubm91bmNlbWVudCcsICdjb252ZXJzYXRpb24nXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIE1lc3NhZ2VUeXBlID0gKHR5cGVvZiBNRVNTQUdFX1RZUEVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9QUklPUklUSUVTID0gWydub3JtYWwnLCAnaGlnaCcsICd1cmdlbnQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIE1lc3NhZ2VQcmlvcml0eSA9ICh0eXBlb2YgTUVTU0FHRV9QUklPUklUSUVTKVtudW1iZXJdO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmlsbGluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFNVQlNDUklQVElPTl9TVEFUVVNFUyA9IFsnYWN0aXZlJywgJ2NhbmNlbGVkJywgJ3Bhc3RfZHVlJywgJ3RyaWFsaW5nJywgJ2luY29tcGxldGUnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFN1YnNjcmlwdGlvblN0YXR1cyA9ICh0eXBlb2YgU1VCU0NSSVBUSU9OX1NUQVRVU0VTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQklMTElOR19JTlRFUlZBTFMgPSBbJ21vbnRobHknLCAnYW5udWFsJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBCaWxsaW5nSW50ZXJ2YWwgPSAodHlwZW9mIEJJTExJTkdfSU5URVJWQUxTKVtudW1iZXJdO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSWRlbnRpdHlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBPSURDIHByb3ZpZGVycyBhbiBvcmcgSWRQIGNvbmZpZyBjYW4gbmFtZSAoR2l0SHViIGlzIE9BdXRoLW9ubHkgYW5kIHJlZnVzZWQgYnkgdGhlIE9JREMgZW5naW5lKS4gKi9cbmV4cG9ydCBjb25zdCBJRFBfUFJPVklERVJTID0gWydnZW5lcmljLW9pZGMnLCAnY29nbml0bycsICdnb29nbGUnLCAnZ2l0aHViJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJZHBQcm92aWRlciA9ICh0eXBlb2YgSURQX1BST1ZJREVSUylbbnVtYmVyXTtcblxuLyoqIFRoZSBmZWRlcmF0aW9uIHByb3RvY29sIGFuIG9yZyBzaWducyBpbiBvdmVyIOKAlCBvbmUgcGVyIG9yZy4gKi9cbmV4cG9ydCBjb25zdCBJRFBfUFJPVE9DT0xTID0gWydvaWRjJywgJ3NhbWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIElkcFByb3RvY29sID0gKHR5cGVvZiBJRFBfUFJPVE9DT0xTKVtudW1iZXJdO1xuXG4vKipcbiAqIFdoaWNoIFNBTUwgYXNzZXJ0aW9uIGF0dHJpYnV0ZSBjYXJyaWVzIHdoaWNoIGlkZW50aXR5IGZpZWxkLiBBbiBlbXB0eSBuYW1lXG4gKiBtZWFucyBcInVzZSB0aGUgY29tbW9uIHNwZWxsaW5nc1wiIChzaG9ydCBuYW1lcyBwbHVzIHRoZSBFbnRyYS9TaGliYm9sZXRoIFVSSXMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhbWxBdHRyaWJ1dGVNYXBwaW5nIHtcbiAgLyoqIEF0dHJpYnV0ZSBob2xkaW5nIHRoZSB1c2VyJ3MgZW1haWwgYWRkcmVzcy4gKi9cbiAgZW1haWw/OiBzdHJpbmc7XG4gIC8qKiBBdHRyaWJ1dGUgaG9sZGluZyB0aGUgZGlzcGxheSBuYW1lLiAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogQXR0cmlidXRlIGhvbGRpbmcgZ3JvdXAgbWVtYmVyc2hpcHMgKGRyaXZlcyBKSVQgcm9sZSBtYXBwaW5nKS4gKi9cbiAgZ3JvdXBzPzogc3RyaW5nO1xufVxuXG4vKiogVGhlIGNvYXJzZSBncmFudCBhIHBlcm1pc3Npb24gcm9sZSBnaXZlcyBpdHMgbWVtYmVycy4gKi9cbmV4cG9ydCBjb25zdCBST0xFX0dSQU5UUyA9IFsnc3VwZXJhZG1pbicsICdhZG1pbicsICdtZW1iZXInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJvbGVHcmFudCA9ICh0eXBlb2YgUk9MRV9HUkFOVFMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQbHVnaW4gZWNvc3lzdGVtIChlYWNoIG1pcnJvcmVkIGJ5IGEgQ0hFQ0sgaW4gcG9zdGdyZXMtaW5pdC5zcWwpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogUHVibGlzaGVyIHRydXN0IHRpZXIuICovXG5leHBvcnQgY29uc3QgUFVCTElTSEVSX1RJRVJTID0gWydvZmZpY2lhbCcsICd2ZXJpZmllZCcsICdjb21tdW5pdHknLCAndW52ZXJpZmllZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaGVyVGllciA9ICh0eXBlb2YgUFVCTElTSEVSX1RJRVJTKVtudW1iZXJdO1xuXG4vKiogQSBkaXJlY3RvcnkgbGlzdGluZydzIGxpZmVjeWNsZSBzdGF0ZS4gKi9cbmV4cG9ydCBjb25zdCBMSVNUSU5HX1NUQVRFUyA9IFsnbGlzdGVkJywgJ3VubWFpbnRhaW5lZCcsICdzdXNwZW5kZWQnLCAndHJhbnNmZXJyZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIExpc3RpbmdTdGF0ZSA9ICh0eXBlb2YgTElTVElOR19TVEFURVMpW251bWJlcl07XG5cbi8qKiBXaGF0IGEgcHVibGlzaCByZXF1ZXN0IGFza3MgdGhlIHN5c3RlbSBvcmcgdG8gZG8uICovXG5leHBvcnQgY29uc3QgUFVCTElTSF9SRVFVRVNUX0tJTkRTID0gW1xuICAnbmV3X2xpc3RpbmcnLCAnbmV3X3ZlcnNpb24nLCAnbGlzdGluZ191cGRhdGUnLCAneWFuaycsICd1bnBhdXNlJyxcbiAgJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ2Fkdmlzb3J5JywgJ3ZlcmlmeScsICdtb2RlcmF0aW9uJywgJ3N1Ym1pc3Npb24nLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hSZXF1ZXN0S2luZCA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX0tJTkRTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTID0gWydwZW5kaW5nJywgJ3BlbmRpbmdfc2Vjb25kX2FwcHJvdmFsJywgJ2FwcHJvdmVkJywgJ3JlamVjdGVkJywgJ3dpdGhkcmF3biddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaFJlcXVlc3RTdGF0dXMgPSAodHlwZW9mIFBVQkxJU0hfUkVRVUVTVF9TVEFUVVNFUylbbnVtYmVyXTtcblxuLyoqIFRoZSBzdGF0dXNlcyBhIHJlcXVlc3QgaXMgc3RpbGwgXCJvcGVuXCIgaW4gKGRyaXZlcyB0aGUgb25lLW9wZW4tcmVxdWVzdCBpbmRleCkuICovXG5leHBvcnQgY29uc3QgT1BFTl9QVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMgPSBbJ3BlbmRpbmcnLCAncGVuZGluZ19zZWNvbmRfYXBwcm92YWwnXSBhcyBjb25zdCBzYXRpc2ZpZXMgcmVhZG9ubHkgUHVibGlzaFJlcXVlc3RTdGF0dXNbXTtcblxuLyoqIGBzZWN1cml0eWAgcmVxdWVzdHMganVtcCB0aGUgbW9kZXJhdGlvbiBxdWV1ZS4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfTEFORVMgPSBbJ3N0YW5kYXJkJywgJ3NlY3VyaXR5J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoUmVxdWVzdExhbmUgPSAodHlwZW9mIFBVQkxJU0hfUkVRVUVTVF9MQU5FUylbbnVtYmVyXTtcblxuLyoqIEluc3RhbGwgdmVyc2lvbiBwb2xpY3k6IGV4YWN0LCBgfmAsIGBeYCwgb3IgYW55dGhpbmcgbm9uLWJyZWFraW5nLiAqL1xuZXhwb3J0IGNvbnN0IElOU1RBTExfVkVSU0lPTl9QT0xJQ0lFUyA9IFsncGlubmVkJywgJ3BhdGNoJywgJ21pbm9yJywgJ2xhdGVzdCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSW5zdGFsbFZlcnNpb25Qb2xpY3kgPSAodHlwZW9mIElOU1RBTExfVkVSU0lPTl9QT0xJQ0lFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IElOU1RBTExfU1RBVFVTRVMgPSBbJ2FjdGl2ZScsICdwZW5kaW5nX2FwcHJvdmFsJywgJ2RlbmllZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSW5zdGFsbFN0YXR1cyA9ICh0eXBlb2YgSU5TVEFMTF9TVEFUVVNFUylbbnVtYmVyXTtcblxuLyoqIFRoZSBhZHZpc29yeSBzZXZlcml0eSBhdCB3aGljaCBhIGNvbnN1bXB0aW9uIHBvbGljeSBibG9ja3MgaW5zdGFsbHMuICovXG5leHBvcnQgY29uc3QgQkxPQ0tfT05fQURWSVNPUllfTEVWRUxTID0gWydjcml0aWNhbCcsICdoaWdoJywgJ25ldmVyJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBCbG9ja09uQWR2aXNvcnkgPSAodHlwZW9mIEJMT0NLX09OX0FEVklTT1JZX0xFVkVMUylbbnVtYmVyXTtcblxuLyoqIFdoZXRoZXIgb2ZmaWNpYWwgcGx1Z2lucyBuZWVkIGFuIGV4cGxpY2l0IGluc3RhbGwgYmVmb3JlIGEgcGlwZWxpbmUgY2FuIHVzZSB0aGVtLiAqL1xuZXhwb3J0IGNvbnN0IE9GRklDSUFMX0lOU1RBTExTX01PREVTID0gWydpbXBsaWNpdCcsICdleHBsaWNpdCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgT2ZmaWNpYWxJbnN0YWxscyA9ICh0eXBlb2YgT0ZGSUNJQUxfSU5TVEFMTFNfTU9ERVMpW251bWJlcl07XG5cbi8qKlxuICogV2hhdCBoYXBwZW5zIHdoZW4gYW4gb3JnIGRlZmluZXMgYSBwbHVnaW4gTkFNRSB0aGF0IG92ZXJyaWRlcyBzb21ldGhpbmcgaXRcbiAqIHdvdWxkIG90aGVyd2lzZSByZXNvbHZlIOKAlCBhIGxpc3RpbmcsIG9yIChmb3IgYSB0ZWFtKSBpdHMgcGFyZW50IG9yZydzIHBsdWdpbi5cbiAqXG4gKiBgYWxsb3dgIGtlZXBzIHRvZGF5J3MgYmVoYXZpb3VyOiB0aGUgb3ZlcnJpZGUgaXMgc2lsZW50IGJleW9uZCB0aGUgZGFzaGJvYXJkXG4gKiBiYW5uZXIuIGB3YXJuYCBpcyB0aGUgc2FtZSByZXNvbHV0aW9uIHdpdGggdGhlIGZhY3QgcmVjb3JkZWQgcHJvbWluZW50bHkuXG4gKiBgZGVueWAgcmVmdXNlcyB0aGUgdXBsb2FkLCB3aGljaCBpcyB0aGUgb25seSBzZXR0aW5nIHRoYXQgYWN0dWFsbHkgc3RvcHMgYVxuICogdGVhbSByZXBsYWNpbmcgdGhlIE9mZmljaWFsIGB0cml2eWAgZm9yIGV2ZXJ5IHBpcGVsaW5lIHRoYXQgbmFtZXMgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBTSEFET1dJTkdfTU9ERVMgPSBbJ2FsbG93JywgJ3dhcm4nLCAnZGVueSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU2hhZG93aW5nTW9kZSA9ICh0eXBlb2YgU0hBRE9XSU5HX01PREVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgUkVWSUVXX1NUQVRVU0VTID0gWydwdWJsaXNoZWQnLCAnaGVsZCcsICdyZW1vdmVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXZpZXdTdGF0dXMgPSAodHlwZW9mIFJFVklFV19TVEFUVVNFUylbbnVtYmVyXTtcblxuLyoqIFdoeSBhIGhlbGQgcmV2aWV3IGlzIGhlbGQuICovXG5leHBvcnQgY29uc3QgUkVWSUVXX0hPTERfUkVBU09OUyA9IFsncmVwb3J0cycsICdidXJzdCcsICdmaWx0ZXInLCAnc2VjdXJpdHknLCAnbW9kZXJhdG9yJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXZpZXdIb2xkUmVhc29uID0gKHR5cGVvZiBSRVZJRVdfSE9MRF9SRUFTT05TKVtudW1iZXJdO1xuXG4vKiogQSByZXZpZXcgcmVwb3J0J3MgY2F0ZWdvcnk7IGBzZWN1cml0eWAgcm91dGVzIHByaXZhdGVseSB0byB0aGUgYWR2aXNvcnkgcGF0aC4gKi9cbmV4cG9ydCBjb25zdCBSRVZJRVdfUkVQT1JUX0NBVEVHT1JJRVMgPSBbJ3NwYW0nLCAnYWJ1c2UnLCAnb2ZmX3RvcGljJywgJ3NlY3VyaXR5J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXZpZXdSZXBvcnRDYXRlZ29yeSA9ICh0eXBlb2YgUkVWSUVXX1JFUE9SVF9DQVRFR09SSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQURWSVNPUllfU0VWRVJJVElFUyA9IFsnY3JpdGljYWwnLCAnaGlnaCcsICdtZWRpdW0nLCAnbG93J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBBZHZpc29yeVNldmVyaXR5ID0gKHR5cGVvZiBBRFZJU09SWV9TRVZFUklUSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQURWSVNPUllfU1RBVEVTID0gWydkcmFmdCcsICdwdWJsaXNoZWQnLCAnd2l0aGRyYXduJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBBZHZpc29yeVN0YXRlID0gKHR5cGVvZiBBRFZJU09SWV9TVEFURVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBBRFZJU09SWV9TT1VSQ0VTID0gWydwdWJsaXNoZXInLCAnbW9kZXJhdG9yJywgJ2N2ZV9yZXNjYW4nLCAncmV2aWV3J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBBZHZpc29yeVNvdXJjZSA9ICh0eXBlb2YgQURWSVNPUllfU09VUkNFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBBbiBhbm9ueW1vdXMgc3VibWlzc2lvbidzIGxpZmVjeWNsZS4gYHB1Ymxpc2hpbmdgIGlzIHRoZSBzaG9ydCBjbGFpbSBhblxuICogYXBwcm92YWwgdGFrZXMgYmVmb3JlIGl0IGNvcGllcyB0aGUgcXVhcmFudGluZWQgaW1hZ2Ugb3V0LCBzbyBhbiBleHBpcnkgY2FuXG4gKiBuZXZlciBkZWxldGUgdGhlIGFydGlmYWN0cyBvZiBhIHN1Ym1pc3Npb24gdGhhdCBpcyBiZWluZyBwdWJsaXNoZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBTVUJNSVNTSU9OX1NUQVRVU0VTID0gW1xuICAncGVuZGluZ192ZXJpZmljYXRpb24nLCAncGVuZGluZ19yZXZpZXcnLCAncHVibGlzaGluZycsICdnYXRlX2ZhaWxlZCcsICdhcHByb3ZlZCcsICdyZWplY3RlZCcsICdleHBpcmVkJywgJ2NsYWltZWQnLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFN1Ym1pc3Npb25TdGF0dXMgPSAodHlwZW9mIFNVQk1JU1NJT05fU1RBVFVTRVMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQbHVnaW4gc2VjdXJpdHkgbm90aWZpY2F0aW9ucyAocGVyIG9yZylcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBXaG8gcmVjZWl2ZXMgYW4gb3JnJ3MgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXM6IGB3cml0ZXJzYCA9IHRoZSB1cGxvYWRlciBwbHVzXG4gKiAgbWVtYmVycyBob2xkaW5nIGBwbHVnaW5zOndyaXRlYDsgYHVzZXJzYCA9IHRoZSBvcmcncyBjaG9zZW4gbWVtYmVycy4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fU0VDVVJJVFlfUkVDSVBJRU5UX01PREVTID0gWyd3cml0ZXJzJywgJ3VzZXJzJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5TZWN1cml0eVJlY2lwaWVudE1vZGUgPSAodHlwZW9mIFBMVUdJTl9TRUNVUklUWV9SRUNJUElFTlRfTU9ERVMpW251bWJlcl07XG5cbi8qKiBIb3cgcmVzY2FuIGZpbmRpbmdzIChOMzEpIGFyZSBiYXRjaGVkOyBibG9ja2VkIGJ1aWxkcyAoTjMwKSBhcmUgYWx3YXlzIGltbWVkaWF0ZS4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fU0VDVVJJVFlfRElHRVNUX01PREVTID0gWydpbW1lZGlhdGUnLCAnZGFpbHknLCAnd2Vla2x5J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5TZWN1cml0eURpZ2VzdE1vZGUgPSAodHlwZW9mIFBMVUdJTl9TRUNVUklUWV9ESUdFU1RfTU9ERVMpW251bWJlcl07XG5cbi8vIFRoZSBidWlsZCBDTEFTUyBhbmQgU0laRSB2b2NhYnVsYXJpZXMgbGl2ZSBpbiBgYnVpbGQtY2F0YWxvZy50c2AsIHRvZ2V0aGVyXG4vLyB3aXRoIHRoZWlyIGxhYmVscywgY3JlZGl0IG11bHRpcGxpZXJzLCB0aWVyIGZsb29ycyBhbmQgcGVyLWNsYXNzIHNsb3Rcbi8vIGRlZmF1bHRzLiBUaGV5IGFyZSBub3QgaGVyZSBiZWNhdXNlIHRoZSBpZHMgYWxvbmUgd2VyZSBuZXZlciB0aGUgd2hvbGUgZmFjdDpcbi8vIHRoZSBtdWx0aXBsaWVyIHdhcyBpbiB0aGlzIGZpbGUsIHRoZSB0aWVyIGdhdGUgd2FzIGluIGBxdW90YS10aWVycy50c2AsIGFuZFxuLy8gdGhlIGxhYmVscyB3ZXJlIGluIGEgZnJvbnRlbmQgbWlycm9yIG9mIGJvdGguIE9uZSBrZXllZCBjYXRhbG9nIGlzIGltcG9ydGFibGVcbi8vIGJ5IHRoZSBicm93c2VyLCBzbyB0aGUgbWlycm9yIGFuZCB0aGUgdGVzdCB0aGF0IHBhcnNlZCB0aGlzIHBhY2thZ2UncyBzb3VyY2Vcbi8vIHRvIGRldGVjdCBkcmlmdCBhcmUgYm90aCBnb25lLlxuIl19
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export * from './api-key.js';
|
|
|
3
3
|
export * from './safe-require.js';
|
|
4
4
|
export * from './secure-compare.js';
|
|
5
5
|
export * from './crash-handlers.js';
|
|
6
|
-
export { sendSuccess, sendError, sendQuotaExceeded, sendPaginatedNested, paginationMeta, type PaginationMeta, extractDbError, errorMessage, sendBadRequest, sendInternalError, parsePaginationParams, type PaginationParams, type SortParams, } from './response.js';
|
|
6
|
+
export { sendSuccess, sendError, sendQuotaExceeded, quotaExceededMessage, type QuotaExceededDetails, sendPaginatedNested, paginationMeta, type PaginationMeta, extractDbError, errorMessage, sendBadRequest, sendInternalError, parsePaginationParams, type PaginationParams, type SortParams, } from './response.js';
|
|
7
7
|
export { getParam, parseQueryInt, parseQueryString, parseOptionalDate, parsePositiveInt, parseQueryIntClamped, parsePage, validateBulkArray, parseReportInterval, parseReportTimezone, parseWeekStart, isValidTimezone, parseDateRange, type Page, type ReportInterval, type WeekStart, REPORT_INTERVALS, WEEK_STARTS, } from './params.js';
|
|
8
8
|
export * from './headers.js';
|
|
9
9
|
export * from './identity.js';
|
package/lib/utils/index.js
CHANGED
|
@@ -5,7 +5,7 @@ export * from './api-key.js';
|
|
|
5
5
|
export * from './safe-require.js';
|
|
6
6
|
export * from './secure-compare.js';
|
|
7
7
|
export * from './crash-handlers.js';
|
|
8
|
-
export { sendSuccess, sendError, sendQuotaExceeded, sendPaginatedNested, paginationMeta, extractDbError, errorMessage, sendBadRequest, sendInternalError, parsePaginationParams, } from './response.js';
|
|
8
|
+
export { sendSuccess, sendError, sendQuotaExceeded, quotaExceededMessage, sendPaginatedNested, paginationMeta, extractDbError, errorMessage, sendBadRequest, sendInternalError, parsePaginationParams, } from './response.js';
|
|
9
9
|
export { getParam, parseQueryInt, parseQueryString, parseOptionalDate, parsePositiveInt, parseQueryIntClamped, parsePage, validateBulkArray, parseReportInterval, parseReportTimezone, parseWeekStart, isValidTimezone, parseDateRange, REPORT_INTERVALS, WEEK_STARTS, } from './params.js';
|
|
10
10
|
export * from './headers.js';
|
|
11
11
|
export * from './identity.js';
|
|
@@ -32,4 +32,4 @@ export * from './service-registry.js';
|
|
|
32
32
|
export * from './retention.js';
|
|
33
33
|
export * from './compliance-attributes.js';
|
|
34
34
|
export { leadingZeroBits, proofOfWorkHash, challengeKey, clampDifficulty, createProofOfWorkChallenge, parseProofOfWorkChallenge, verifyProofOfWork, solveProofOfWork, POW_DEFAULT_DIFFICULTY, POW_MAX_DIFFICULTY, POW_CHALLENGE_TTL_MS, } from './proof-of-work.js';
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixZQUFZLEVBRVosTUFBTSxFQUNOLE9BQU8sR0FDUixNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsb0JBQW9CLEVBRXBCLG1CQUFtQixFQUNuQixjQUFjLEVBRWQsY0FBYyxFQUNkLFlBQVksRUFDWixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLHFCQUFxQixHQUd0QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsUUFBUSxFQUNSLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxlQUFlLEVBQ2YsY0FBYyxFQUlkLGdCQUFnQixFQUNoQixXQUFXLEdBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIseUVBQXlFO0FBQ3pFLG1FQUFtRTtBQUNuRSx5RUFBeUU7QUFDekUsOEVBQThFO0FBQzlFLGlDQUFpQztBQUNqQyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsZUFBZSxFQUNmLGNBQWMsRUFDZCxhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixVQUFVLEdBQ1gsTUFBTSxVQUFVLENBQUM7QUFLbEIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixxQkFBcUIsR0FDdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFHZixjQUFjLEVBQ2QsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixvQkFBb0IsRUFHcEIsb0JBQW9CLEdBQ3JCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEdBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsbUJBQW1CLEdBQ3BCLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCxRQUFRLEVBQ1IsY0FBYyxFQUNkLFFBQVEsRUFDUix3QkFBd0IsR0FDekIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixTQUFTLEdBRVYsTUFBTSxXQUFXLENBQUM7QUFDbkIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFDZixlQUFlLEVBQ2YsWUFBWSxFQUNaLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixvQkFBb0IsR0FHckIsTUFBTSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQge1xuICBzZXRMb2dDb250ZXh0UHJvdmlkZXIsXG4gIHJlZGFjdFNlbnNpdGl2ZSxcbiAgY3JlYXRlTG9nZ2VyLFxuICB0eXBlIExvZ2dlcixcbiAgbG9nZ2VyLFxuICBkZWZhdWx0LFxufSBmcm9tICcuL2xvZ2dlci5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS1rZXkuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zYWZlLXJlcXVpcmUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWN1cmUtY29tcGFyZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NyYXNoLWhhbmRsZXJzLmpzJztcbmV4cG9ydCB7XG4gIHNlbmRTdWNjZXNzLFxuICBzZW5kRXJyb3IsXG4gIHNlbmRRdW90YUV4Y2VlZGVkLFxuICBxdW90YUV4Y2VlZGVkTWVzc2FnZSxcbiAgdHlwZSBRdW90YUV4Y2VlZGVkRGV0YWlscyxcbiAgc2VuZFBhZ2luYXRlZE5lc3RlZCxcbiAgcGFnaW5hdGlvbk1ldGEsXG4gIHR5cGUgUGFnaW5hdGlvbk1ldGEsXG4gIGV4dHJhY3REYkVycm9yLFxuICBlcnJvck1lc3NhZ2UsXG4gIHNlbmRCYWRSZXF1ZXN0LFxuICBzZW5kSW50ZXJuYWxFcnJvcixcbiAgcGFyc2VQYWdpbmF0aW9uUGFyYW1zLFxuICB0eXBlIFBhZ2luYXRpb25QYXJhbXMsXG4gIHR5cGUgU29ydFBhcmFtcyxcbn0gZnJvbSAnLi9yZXNwb25zZS5qcyc7XG5leHBvcnQge1xuICBnZXRQYXJhbSxcbiAgcGFyc2VRdWVyeUludCxcbiAgcGFyc2VRdWVyeVN0cmluZyxcbiAgcGFyc2VPcHRpb25hbERhdGUsXG4gIHBhcnNlUG9zaXRpdmVJbnQsXG4gIHBhcnNlUXVlcnlJbnRDbGFtcGVkLFxuICBwYXJzZVBhZ2UsXG4gIHZhbGlkYXRlQnVsa0FycmF5LFxuICBwYXJzZVJlcG9ydEludGVydmFsLFxuICBwYXJzZVJlcG9ydFRpbWV6b25lLFxuICBwYXJzZVdlZWtTdGFydCxcbiAgaXNWYWxpZFRpbWV6b25lLFxuICBwYXJzZURhdGVSYW5nZSxcbiAgdHlwZSBQYWdlLFxuICB0eXBlIFJlcG9ydEludGVydmFsLFxuICB0eXBlIFdlZWtTdGFydCxcbiAgUkVQT1JUX0lOVEVSVkFMUyxcbiAgV0VFS19TVEFSVFMsXG59IGZyb20gJy4vcGFyYW1zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vaGVhZGVycy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2lkZW50aXR5LmpzJztcbi8vIEpXSyBwcmltaXRpdmVzLiBQbGF0Zm9ybSBJUyB0aGUgdG9rZW4gc2lnbmVyLCBzbyBpdCBsZWdpdGltYXRlbHkgbmVlZHNcbi8vIGBwdWJsaWNKd2tGcm9tYCArIGBkZXJUb0pvc2VTaWduYXR1cmVgIGZyb20gdGhlIHBhY2thZ2Ugc3VyZmFjZS5cbi8vIGBqd2tUaHVtYnByaW50YCBhbmQgYHB1YmxpY0tleUZyb21Kd2tgIGFyZSBraWQtZGVyaXZhdGlvbi92ZXJpZmljYXRpb25cbi8vIHBsdW1iaW5nIHVzZWQgb25seSBpbnNpZGUgYXBpLWNvcmUg4oCUIGRlZXAtaW1wb3J0IHRoZW0gZnJvbSB0aGVyZSBpbnN0ZWFkIG9mXG4vLyBsZWFraW5nIHRoZW0gdG8gZXZlcnkgc2VydmljZS5cbmV4cG9ydCB7XG4gIFVTRVJfVE9LRU5fQUxHT1JJVEhNLFxuICBVU0VSX1RPS0VOX0NVUlZFLFxuICBKV0tTX1BBVEgsXG4gIGRlY29kZUp3dEhlYWRlcixcbiAgaXNKd2tzRG9jdW1lbnQsXG4gIHB1YmxpY0p3a0Zyb20sXG4gIGRlclRvSm9zZVNpZ25hdHVyZSxcbiAgZW5jb2RlSndzU2lnbmluZ0lucHV0LFxuICBjb21wYWN0SndzLFxufSBmcm9tICcuL2p3ay5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFB1YmxpY0p3ayxcbiAgSndrc0RvY3VtZW50LFxufSBmcm9tICcuL2p3ay5qcyc7XG5leHBvcnQgKiBmcm9tICcuL29iamVjdC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGUuanMnO1xuZXhwb3J0IHtcbiAgcmVzZXRTdXBwb3J0QWxpYXNlc0NhY2hlLFxuICBnZXRQcmltYXJ5U3VwcG9ydEFsaWFzLFxuICBnZXRBbGxTdXBwb3J0QWxpYXNlcyxcbiAgcmVzb2x2ZVJlY2lwaWVudEFsaWFzLFxuICBERUZBVUxUX1NVUFBPUlRfQUxJQVMsXG59IGZyb20gJy4vYWxpYXMtcmVzb2x2ZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25jdXJyZW5jeS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGl0LmpzJztcbmV4cG9ydCB7XG4gIGdldERlZmF1bHRLZXlQcm92aWRlcixcbiAgcmVzZXREZWZhdWx0S2V5UHJvdmlkZXIsXG4gIHNldEtleVByb3ZpZGVyLFxuICBlbmNyeXB0U2VjcmV0LFxuICBkZWNyeXB0U2VjcmV0LFxuICBpc0VuY3J5cHRlZEJsb2IsXG4gIHR5cGUgRW5jcnlwdGVkQmxvYixcbiAgdHlwZSBLZXlQcm92aWRlcixcbiAgRW52S2V5UHJvdmlkZXIsXG4gIEttc0tleVByb3ZpZGVyLFxuICBjcmVhdGVCYXNlS2V5UHJvdmlkZXIsXG4gIGluaXRTZWNyZXRFbmNyeXB0aW9uLFxuICB0eXBlIFBlck9yZ0ttc0NvbmZpZyxcbiAgdHlwZSBQZXJPcmdLbXNSZXNvbHZlcixcbiAgUGVyT3JnS21zS2V5UHJvdmlkZXIsXG59IGZyb20gJy4vc2VjcmV0LWVuY3J5cHRpb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWNyZXQtcm90YXRpb24uanMnO1xuZXhwb3J0IHtcbiAgc2V0Q291bnRlckVtaXR0ZXIsXG4gIHJlc2V0Q291bnRlckVtaXR0ZXIsXG4gIHNldEdhdWdlRW1pdHRlcixcbiAgcmVzZXRHYXVnZUVtaXR0ZXIsXG4gIGVtaXRHYXVnZSxcbiAgZW1pdENvdW50ZXIsXG59IGZyb20gJy4vbWV0cmljLWVtaXR0ZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hd3Mtc2NydWIuanMnO1xuZXhwb3J0IHtcbiAgZXh0cmFjdFByZWRpY2F0ZSxcbiAgU1BEWF9QUkVESUNBVEVfVFlQRSxcbn0gZnJvbSAnLi9kc3NlLmpzJztcbmV4cG9ydCB7XG4gIG1hc2tMaW5lLFxuICBsb29rc1NlbnNpdGl2ZSxcbiAgUkVEQUNURUQsXG4gIFNFTlNJVElWRV9WQUxVRV9QQVRURVJOUyxcbn0gZnJvbSAnLi9zZW5zaXRpdmUtcGF0dGVybnMuanMnO1xuZXhwb3J0IHtcbiAgaXNQcml2YXRlQWRkcmVzcyxcbiAgYXNzZXJ0U2FmZVVybCxcbiAgc2FmZUZldGNoLFxuICB0eXBlIFNhZmVGZXRjaFJlc3BvbnNlLFxufSBmcm9tICcuL3NzcmYuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnYuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlLXJlZ2lzdHJ5LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcmV0ZW50aW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcGxpYW5jZS1hdHRyaWJ1dGVzLmpzJztcbmV4cG9ydCB7XG4gIGxlYWRpbmdaZXJvQml0cyxcbiAgcHJvb2ZPZldvcmtIYXNoLFxuICBjaGFsbGVuZ2VLZXksXG4gIGNsYW1wRGlmZmljdWx0eSxcbiAgY3JlYXRlUHJvb2ZPZldvcmtDaGFsbGVuZ2UsXG4gIHBhcnNlUHJvb2ZPZldvcmtDaGFsbGVuZ2UsXG4gIHZlcmlmeVByb29mT2ZXb3JrLFxuICBzb2x2ZVByb29mT2ZXb3JrLFxuICBQT1dfREVGQVVMVF9ESUZGSUNVTFRZLFxuICBQT1dfTUFYX0RJRkZJQ1VMVFksXG4gIFBPV19DSEFMTEVOR0VfVFRMX01TLFxuICB0eXBlIFByb29mT2ZXb3JrQ2hhbGxlbmdlLFxuICB0eXBlIFByb29mT2ZXb3JrU29sdXRpb24sXG59IGZyb20gJy4vcHJvb2Ytb2Ytd29yay5qcyc7XG4iXX0=
|